| 1 | PRCPHLM0 ;WISC/CC - NOTIFY USERS OF HL7 TRANSACTION PROBLEMS; 4/00
 | 
|---|
| 2 | V ;;5.1;IFCAP;**1**;Oct 20, 2000
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | ERR(NUMBER,BULLETIN,SECID,PARAM,HLTXN,PRCPHL) ;
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ; NUMBER = error code
 | 
|---|
| 8 |  ; BULLETIN = Specifies the bulletin to send to users
 | 
|---|
| 9 |  ; SECID = ien of secondary inventory point
 | 
|---|
| 10 |  ; PRARAM = array of values extracted from the HL7 transaction
 | 
|---|
| 11 |  ; HLTXN = ien of ^HLMA and of ^HL(772)
 | 
|---|
| 12 |  ; PRCPHL = array of HL7 segments in message (not always present)
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  N ERR,LNCNT,ITEM,MES,PRCPXMY
 | 
|---|
| 15 |  S ERR=NUMBER,LNCNT=0
 | 
|---|
| 16 |  K ^TMP($J,"PRCPHL7")
 | 
|---|
| 17 |  S MES="HL7 transaction #"_HLTXN_" has "
 | 
|---|
| 18 |  F LNCNT=2,3 S ^TMP($J,"PRCPHL7",1,LNCNT,0)=" "
 | 
|---|
| 19 |  I +ERR=1 D  ; bad message
 | 
|---|
| 20 |  . I ERR="1A" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"missing or unexpected segments."
 | 
|---|
| 21 |  . I ERR="1B" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"the wrong message type."
 | 
|---|
| 22 |  . I ERR="1C" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"a bad order control code in ORC."
 | 
|---|
| 23 |  . I ERR="1D" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"a bad order control code/activity."
 | 
|---|
| 24 |  . I ERR="1E" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"bad values in the QRD fields."
 | 
|---|
| 25 |  . I ERR="1F" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an indication that the supply station could not respond."
 | 
|---|
| 26 |  I +ERR=2 D  ; bad order number
 | 
|---|
| 27 |  . I ERR="2A" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an order not in GIP or primary is unknown."
 | 
|---|
| 28 |  . I ERR="2A" S ^TMP($J,"PRCPHL7",1,2,0)="Please remove this order from the supply station."
 | 
|---|
| 29 |  . I ERR="2B" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"activity on a posted order."
 | 
|---|
| 30 |  . I ERR="2C" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"order activity rejected by GIP."
 | 
|---|
| 31 |  . I ERR="2C" S ^TMP($J,"PRCPHL7",1,2,0)="All Posting activity for this order must be done on GIP."
 | 
|---|
| 32 |  . I ERR="2D" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"no order number."
 | 
|---|
| 33 |  I +ERR=3 D  ; bad secondary inventory point
 | 
|---|
| 34 |  . I ERR="3A" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an inventory point not in GIP."
 | 
|---|
| 35 |  . I ERR="3B" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an IP that is not a secondary."
 | 
|---|
| 36 |  . I ERR="3C" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"a secondary IP not in the order."
 | 
|---|
| 37 |  . I ERR="3D" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an invalid site specified."
 | 
|---|
| 38 |  . I ERR="3E" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"no station specified."
 | 
|---|
| 39 |  . I ERR="3F" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"a non-supply station IP."
 | 
|---|
| 40 |  I +ERR=4 D  ; bad quantity received
 | 
|---|
| 41 |  . S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an excessive quantity transacted."
 | 
|---|
| 42 |  I +ERR=5 D  ; bad quantity remaining
 | 
|---|
| 43 |  . S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an excessive quantity remaining."
 | 
|---|
| 44 |  I +ERR=6 D  ; bad item
 | 
|---|
| 45 |  . I ERR="6A" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an item not in the order."
 | 
|---|
| 46 |  . I ERR="6B" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an item not in the primary."
 | 
|---|
| 47 |  . I ERR="6C" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an item not in the secondary."
 | 
|---|
| 48 |  . I ERR="6D" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"a non-supply station item."
 | 
|---|
| 49 |  . I ERR="6E" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"an invalid item."
 | 
|---|
| 50 |  . I ERR="6F" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"no item information."
 | 
|---|
| 51 |  . I ERR="6G" S ^TMP($J,"PRCPHL7",1,1,0)=MES_"a case cart or instrument kit item."
 | 
|---|
| 52 |  . S ^TMP($J,"PRCPHL7",1,2,0)="item# "_PARAM("ITEM")_" "_PARAM("NAME")
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  I $P(HLTXN,".",3)=447 D  ; error encountered processing ^PRCP(447.1)
 | 
|---|
| 55 |  . I BULLETIN="PRCP_BAD_ORDER" D
 | 
|---|
| 56 |  . . I PARAM("TYPE")="FU" S ^TMP($J,"PRCPHL7",1,2,0)="Message indicating receipt of all ordered items was not processed."
 | 
|---|
| 57 |  . . I PARAM("TYPE")'="FU",ERR'="6F" S ^TMP($J,"PRCPHL7",1,2,0)="Received "_PARAM("QTY")_" unit(s) of item# "_PARAM("ITEM")_" "_PARAM("NAME")
 | 
|---|
| 58 |  . I BULLETIN="PRCP_BAD_ACTIVITY" D
 | 
|---|
| 59 |  . . S ^TMP($J,"PRCPHL7",1,2,0)=PARAM("QTY")_" unit(s) of item# "_PARAM("ITEM")_" "_PARAM("NAME")
 | 
|---|
| 60 |  . . I PARAM("ACTIVITY")="USGE" S I="taken for "_PARAM("RECIPIENT")
 | 
|---|
| 61 |  . . I PARAM("ACTIVITY")="RTRN" S I="returned from "_PARAM("RECIPIENT")
 | 
|---|
| 62 |  . . I PARAM("ACTIVITY")="DISP" S I="disposed of"
 | 
|---|
| 63 |  . . I PARAM("ACTIVITY")="ADJD"!(PARAM("ACTIVITY")="DISP") S I="adjusted out of the inventory"
 | 
|---|
| 64 |  . . I PARAM("ACTIVITY")="ADJI" S I="adjusted into the inventory"
 | 
|---|
| 65 |  . . S ^TMP($J,"PRCPHL7",1,3,0)="was/were "_I_" by "_PARAM("USER")
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  I +ERR>99 D  ; error encountered while building ^PRCP(447.1)
 | 
|---|
| 68 |  . S ^TMP($J,"PRCPHL7",1,1,0)="GIP can't create a new record for HL7 transaction# "_HLTXN
 | 
|---|
| 69 |  . S ^TMP($J,"PRCPHL7",1,2,0)="Contact your IRM if GIP continues to have trouble creating records."
 | 
|---|
| 70 |  . I BULLETIN="PRCP_BAD_ORDER" D
 | 
|---|
| 71 |  . . I PARAM("TYPE")="FU" S ^TMP($J,"PRCPHL7",1,3,0)="Message indicating receipt of all ordered items was not processed."
 | 
|---|
| 72 |  . . I PARAM("TYPE")'="FU" S ^TMP($J,"PRCPHL7",1,3,0)="Received "_PARAM("QTY")_" unit(s) of item# "_PARAM("ITEM")_" "_PARAM("NAME")
 | 
|---|
| 73 |  . . S ^TMP($J,"PRCPHL7",1,4,0)="Please adjust the GIP to show this information."
 | 
|---|
| 74 |  . . S ^TMP($J,"PRCPHL7",1,5,0)=" "
 | 
|---|
| 75 |  . I BULLETIN="PRCP_BAD_ACTIVITY" D
 | 
|---|
| 76 |  . . S ^TMP($J,"PRCPHL7",1,3,0)=PARAM("QTY")_" unit(s) of item# "_PARAM("ITEM")_" "_PARAM("NAME")
 | 
|---|
| 77 |  . . I PARAM("ACTIVITY")="USGE" S I="taken for "_PARAM("RECIPIENT")
 | 
|---|
| 78 |  . . I PARAM("ACTIVITY")="RTRN" S I="returned from "_PARAM("RECIPIENT")
 | 
|---|
| 79 |  . . I PARAM("ACTIVITY")="DISP" S I="disposed of"
 | 
|---|
| 80 |  . . I PARAM("ACTIVITY")="ADJD"!(PARAM("ACTIVITY")="DISP") S I="adjusted out of the inventory"
 | 
|---|
| 81 |  . . I PARAM("ACTIVITY")="ADJI" S I="adjusted into the inventory"
 | 
|---|
| 82 |  . . S ^TMP($J,"PRCPHL7",1,4,0)="was/were "_I_" by "_PARAM("USER")
 | 
|---|
| 83 |  . . S ^TMP($J,"PRCPHL7",1,5,0)="Please adjust the GIP to show this information."
 | 
|---|
| 84 |  . . S ^TMP($J,"PRCPHL7",1,6,0)=" "
 | 
|---|
| 85 |  . . S LNCNT=6
 | 
|---|
| 86 |  S LNCNT=3,I=0
 | 
|---|
| 87 |  I ERR>99 D
 | 
|---|
| 88 |  .  I BULLETIN="PRCP_BAD_ACTIVITY" S LNCNT=6
 | 
|---|
| 89 |  .  I BULLETIN="PRCP_BAD_ORDER" S LNCNT=5
 | 
|---|
| 90 |  I $D(PRCPHL) F  S I=$O(PRCPHL(I)) Q:I']""  D
 | 
|---|
| 91 |  . S LNCNT=LNCNT+1,^TMP($J,"PRCPHL7",1,LNCNT,0)=PRCPHL(I)
 | 
|---|
| 92 |  I $D(PRCPHL),HLQUIT>0 F  X HLNEXT Q:HLQUIT'>0  D
 | 
|---|
| 93 |  . S LNCNT=LNCNT+1,^TMP($J,"PRCPHL7",1,LNCNT,0)=HLNODE
 | 
|---|
| 94 |  S ^TMP($J,"PRCPHL7",1,0)=LNCNT
 | 
|---|
| 95 |  I SECID D BLDLIST I $O(XMY(0))]"" D SEND
 | 
|---|
| 96 |  I 'SECID D
 | 
|---|
| 97 |  . N SS
 | 
|---|
| 98 |  . S SECID=0,SS=0
 | 
|---|
| 99 |  . F  S SS=$O(^PRCP(445,"AI",SS)) Q:'+SS  D
 | 
|---|
| 100 |  . . S SECID=$O(^PRCP(445,"AI",SS,SECID)) Q:'+SECID  D BLDLIST
 | 
|---|
| 101 |  . I $O(XMY(0))]"" D SEND
 | 
|---|
| 102 |  K ^TMP($J,"PRCPHL7")
 | 
|---|
| 103 |  Q
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 |  ; build array of message recipients
 | 
|---|
| 106 | BLDLIST D GETUSER^PRCPXTRM(SECID) Q:'$O(PRCPXMY(""))  ; inventory point users
 | 
|---|
| 107 |  S ITEM=0
 | 
|---|
| 108 |  ; restrict to managers
 | 
|---|
| 109 |  F  S ITEM=$O(PRCPXMY(ITEM)) Q:ITEM'>0  I PRCPXMY(ITEM)=1 S XMY(ITEM)=""
 | 
|---|
| 110 |  Q
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 | SEND S XMTEXT="^TMP($J,""PRCPHL7"",1,"
 | 
|---|
| 113 |  S XMB=BULLETIN
 | 
|---|
| 114 |  I XMB="PRCP_BAD_ORDER" D
 | 
|---|
| 115 |  . S XMB(1)=PARAM("ORDER")
 | 
|---|
| 116 |  . S XMB(2)=PARAM("SIPNAME")
 | 
|---|
| 117 |  I XMB="PRCP_BAD_ACTIVITY" D
 | 
|---|
| 118 |  . S XMB(1)=PARAM("SIPNAME")
 | 
|---|
| 119 |  . S XMB(2)=PARAM("ITEM")
 | 
|---|
| 120 |  . S XMB(3)=PARAM("ACTIVITY")
 | 
|---|
| 121 |  I XMB="PRCP_BAD_QUERY" D
 | 
|---|
| 122 |  . S XMB(1)=PARAM("SIPNAME")
 | 
|---|
| 123 |  S XMDUZ="SUPPLY STATION INTERFACE"
 | 
|---|
| 124 |  D EN^XMB
 | 
|---|
| 125 |  Q
 | 
|---|