| [613] | 1 | PRCPHLPO ;WISC/CC-REFILL AND POST ORDER FROM 447.1 ENTRY ;4/00
 | 
|---|
 | 2 | V ;;5.1;IFCAP;**1,24**;Oct 20, 2000
 | 
|---|
 | 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 | PROCESS(PRCPDA,PRCPDONE) ;
 | 
|---|
 | 6 |  N CONV,DIE,DR,ERR,I,ITEM,LOCKORD,LOCKPRIM,ORDERDA,X,PRCPITDA,PRIM
 | 
|---|
 | 7 |  N PRCPAMT,PRCPDATA,PRCPHL7,PRCPITEM,PRCPITNM,PRCPLEFT,PRCPNOIT
 | 
|---|
 | 8 |  N PRCPORD,PRCPPOST,PRCPPRIM,PRCPSECO,PRCPSS,PRCPSSFL,PRCPTIME,PRCPUSER
 | 
|---|
 | 9 |  ;
 | 
|---|
 | 10 |  S PRCPDONE=0,LOCKORD=0,LOCKPRIM=0,ERR=0
 | 
|---|
 | 11 |  S PRCPDATA=^PRCP(447.1,PRCPDA,0)
 | 
|---|
 | 12 |  S PRCPHL7=$P(PRCPDATA,"^",6)_".447.1"
 | 
|---|
 | 13 |  S ORDERDA=$P(PRCPDATA,"^",7)
 | 
|---|
 | 14 |  S PRCPSECO=$P(PRCPDATA,"^",3)
 | 
|---|
 | 15 |  S PRCPTIME=$P(PRCPDATA,"^",8)
 | 
|---|
 | 16 |  S PRCPUSER=$P(PRCPDATA,"^",10)
 | 
|---|
 | 17 |  S PRCPPOST=$P(PRCPDATA,"^",11)
 | 
|---|
 | 18 |  ;
 | 
|---|
 | 19 |  L +^PRCP(445.3,ORDERDA):3 I $T=0 S PRCPDONE=0 Q
 | 
|---|
 | 20 |  D ADD^PRCPULOC(445.3,ORDERDA_"-1",0,"HL7 Distribution Order Processing")
 | 
|---|
 | 21 |  S LOCKORD=1
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 |  I PRCPPOST'="FU" D  I $D(ERR),+ERR>0 G ERR
 | 
|---|
 | 24 |  . S PRCPITDA=0
 | 
|---|
 | 25 |  . S PRCPITDA=$O(^PRCP(447.1,PRCPDA,1,PRCPITDA))
 | 
|---|
 | 26 |  . I '+PRCPITDA S ERR="6F" Q  ; no item in transaction
 | 
|---|
 | 27 |  . S PRCPDATA=^PRCP(447.1,PRCPDA,1,PRCPITDA,0)
 | 
|---|
 | 28 |  . S PRCPITEM=$P(PRCPDATA,"^",1)
 | 
|---|
 | 29 |  . S PRCPAMT=$P(PRCPDATA,"^",3) ; REFILL QTY - restock issue units
 | 
|---|
 | 30 |  . S PRCPLEFT=$P(PRCPDATA,"^",2)
 | 
|---|
 | 31 |  . S PRCPITNM=$P(PRCPDATA,"^",4)
 | 
|---|
 | 32 |  ;
 | 
|---|
 | 33 |  I '$D(^PRCP(445.3,ORDERDA)) S ERR="2A" G ERR ; order not in GIP
 | 
|---|
 | 34 |  S PRCPPRIM=$P(^PRCP(445.3,ORDERDA,0),"^",2)
 | 
|---|
 | 35 |  I $P(^PRCP(445.3,ORDERDA,0),"^",6)="P" S ERR="2B" G ERR ; order is posted
 | 
|---|
 | 36 |  I $P(^PRCP(445.3,ORDERDA,0),"^",10)']"" S ERR="2C" G ERR ; order not to be completed by supply station
 | 
|---|
 | 37 |  I '$D(^PRCP(445,PRCPSECO)) S ERR="3A" G ERR ; secondary not in GIP
 | 
|---|
 | 38 |  I $P(^PRCP(445,PRCPSECO,0),"^",3)'="S" S ERR="3B" G ERR ; not a secondary
 | 
|---|
 | 39 |  I PRCPPOST="FU" D  G:ERR>0 ERR G UPDATE
 | 
|---|
 | 40 |  . I $P($G(^PRCP(445,PRCPSECO,5)),"^",1)']"" S ERR="3F" ; not a supply station secondary
 | 
|---|
 | 41 |  ;
 | 
|---|
 | 42 |  I PRCPITDA']"" S ERR="6F" G ERR ; no item information
 | 
|---|
 | 43 |  I '$D(^PRCP(445.3,ORDERDA,1,PRCPITEM)) S ERR="6A" G ERR ; not on the GIP order"
 | 
|---|
 | 44 |  I '$D(^PRCP(445,PRCPSECO,1,PRCPITEM)) S ERR="6C" G ERR ; "Not in this inventory point"
 | 
|---|
 | 45 |  I $P(^PRCP(445,PRCPSECO,1,PRCPITEM,0),"^",9)'>0 S ERR="6D" G ERR ; not flagged as a supply station item"
 | 
|---|
 | 46 |  I '$D(^PRCP(445,PRCPPRIM,1,PRCPITEM)) S ERR="6B" G ERR ; not in the primary"
 | 
|---|
 | 47 |  I $P($G(^PRCP(445,PRCPSECO,5)),"^",1)']"" S ERR="3F" G ERR ; not a supply station secondary
 | 
|---|
 | 48 |  I $P($G(^PRC(441,PRCPITEM,0)),"^",6)="S" S ERR="6G" G ERR ; case cart/ik
 | 
|---|
 | 49 |  ; compare name in 445 with name sent, notify user if mismatch, CONTINUE
 | 
|---|
 | 50 |  S PRCPSSFL=$P(^PRCP(445.5,$P(^PRCP(445,PRCPSECO,5),"^",1),0),"^",2)
 | 
|---|
 | 51 |  ; if item name on supply station comes from item master
 | 
|---|
 | 52 |  I PRCPSSFL="O",$P(^PRC(441,PRCPITEM,0),"^",2)'=PRCPITNM D NAME^PRCPHL70(PRCPSECO,PRCPITEM,PRCPITNM,PRCPSSFL,PRCPHL7)
 | 
|---|
 | 53 |  ; if item name on supply station is from the secondary
 | 
|---|
 | 54 |  I PRCPSSFL="S",$G(^PRCP(445,PRCPSECO,1,PRCPITEM,6))'=PRCPITNM D NAME^PRCPHL70(PRCPSECO,PRCPITEM,PRCPITNM,PRCPSSFL,PRCPHL7)
 | 
|---|
 | 55 |  ;
 | 
|---|
 | 56 | UPDATE I $P(^PRCP(445.3,ORDERDA,0),"^",6)="P" S ERR="2B" G ERR ; order is posted
 | 
|---|
 | 57 |  I PRCPPOST'="FU",'$D(^PRCP(445.3,ORDERDA,1,PRCPITEM)) S ERR="6D" G ERR ; item not on order
 | 
|---|
 | 58 |  I PRCPPOST'="FU" D  G Q ; add amount received to order
 | 
|---|
 | 59 |  . S DIE="^PRCP(445.3,"_ORDERDA_",1,"
 | 
|---|
 | 60 |  . S DA=PRCPITEM
 | 
|---|
 | 61 |  . ; the following lines handle the case on an item in multiple bins
 | 
|---|
 | 62 |  . ; The user receiving an item in multiple bins will generate one
 | 
|---|
 | 63 |  . ; transaction per bin.
 | 
|---|
 | 64 |  . S X=$P($G(^PRCP(445.3,ORDERDA,1,DA,0)),"^",7)+0 ; amt refilled so far
 | 
|---|
 | 65 |  . S PRCPAMT=PRCPAMT+X
 | 
|---|
 | 66 |  . S DR="6///^S X=PRCPAMT"
 | 
|---|
 | 67 |  . D ^DIE K DIE
 | 
|---|
 | 68 |  . S PRCPDONE=1
 | 
|---|
 | 69 |  . ;
 | 
|---|
 | 70 |  . S ^PRCP(445,PRCPSECO,1,PRCPITEM,9)=PRCPLEFT_"^"_PRCPTIME
 | 
|---|
 | 71 |  ;
 | 
|---|
 | 72 |  I PRCPPOST="FU" D  G Q
 | 
|---|
 | 73 |  . S PRCPSS=1
 | 
|---|
 | 74 |  . L +^PRCP(445,PRCPPRIM,1):3 I $T=0 S PRCPDONE=0 Q
 | 
|---|
 | 75 |  . S LOCKPRIM=1
 | 
|---|
 | 76 |  . D ADD^PRCPULOC(445,PRCPPRIM_"-1",0,"HL7 Distribution Order Processing")
 | 
|---|
 | 77 |  . D PRCPSS^PRCPOPP(ORDERDA,PRCPSECO,PRCPPRIM,PRCPSS)
 | 
|---|
 | 78 |  . S PRCPDONE=1
 | 
|---|
 | 79 |  . ; verify each item has refill amount
 | 
|---|
 | 80 |  . S ITEM=0
 | 
|---|
 | 81 |  . F  S ITEM=$O(^PRCP(445.3,ORDERDA,1,ITEM)) Q:'ITEM  D
 | 
|---|
 | 82 |  . . S X=$P($G(^PRCP(445.3,ORDERDA,1,ITEM,0)),"^",7)
 | 
|---|
 | 83 |  . . I X']"" S PRCPNOIT(ITEM)=1
 | 
|---|
 | 84 |  . I $D(PRCPNOIT) D  ; send message for items not refilled
 | 
|---|
 | 85 |  . . N ITEMNM,LN,PRCPXMY,TYPE,XMB,XMDUZ,XMTEXT,XMY
 | 
|---|
 | 86 |  . . K ^TMP($J,"PRCPHL7")
 | 
|---|
 | 87 |  . . S ITEM=0,LN=0
 | 
|---|
 | 88 |  . . F  S ITEM=$O(PRCPNOIT(ITEM)) Q:'ITEM  D
 | 
|---|
 | 89 |  . . . S LN=LN+1
 | 
|---|
 | 90 |  . . . S ITEMNM=$P($G(^PRCP(445,PRCPSECO,1,ITEM,6)),"^",1)
 | 
|---|
 | 91 |  . . . I ITEMNM']"" S TYPE=$P(^PRCP(445.5,$P(^PRCP(445,PRCPSECO,5),"^",1),0),"^",2) D
 | 
|---|
 | 92 |  . . . . I TYPE="S" S ITEMNM=$P($G(^PRCP(445,PRCPPRIM,1,ITEM,6)),"^",1)
 | 
|---|
 | 93 |  . . . . I TYPE="O" S ITEMNM=$P($G(^PRC(441,ITEM,0)),"^",2)
 | 
|---|
 | 94 |  . . . S ^TMP($J,"PRCPHL7",1,LN,0)=$E("       ",$L(ITEM),7)_ITEM_"  "_ITEMNM
 | 
|---|
 | 95 |  . . S ^TMP($J,"PRCPHL7",1,0)=LN
 | 
|---|
 | 96 |  . . D GETUSER^PRCPXTRM(PRCPPRIM) Q:'$O(PRCPXMY(""))  ; find primary inventory point users
 | 
|---|
 | 97 |  . . S ITEM=0
 | 
|---|
 | 98 |  . . ; restrict message to inventory point managers
 | 
|---|
 | 99 |  . . F  S ITEM=$O(PRCPXMY(ITEM)) Q:ITEM'>0  I PRCPXMY(ITEM)=1 S XMY(ITEM)=""
 | 
|---|
 | 100 |  . . S XMTEXT="^TMP($J,""PRCPHL7"",1,"
 | 
|---|
 | 101 |  . . S XMB(1)=$P(^PRCP(445.3,ORDERDA,0),"^",1)
 | 
|---|
 | 102 |  . . S XMB(3)=$$INVNAME^PRCPUX1(PRCPSECO)
 | 
|---|
 | 103 |  . . S XMB(2)=$P(^PRCP(445,$P(^PRCP(445.3,ORDERDA,0),"^",2),0),"^",1)
 | 
|---|
 | 104 |  . . S XMB="PRCP_NO_REFILL"
 | 
|---|
 | 105 |  . . S XMDUZ="SUPPLY STATION INTERFACE"
 | 
|---|
 | 106 |  . . D EN^XMB
 | 
|---|
 | 107 |  . . K ^TMP($J,"PRCPHL7")
 | 
|---|
 | 108 |  ;
 | 
|---|
 | 109 | ERR ;
 | 
|---|
 | 110 |  N NUMBER,PRCPHLPO
 | 
|---|
 | 111 |  S NUMBER=ERR
 | 
|---|
 | 112 |  S PRCPHLPO("ORDER")=$P($G(^PRCP(445.3,ORDERDA,0)),"^",1)
 | 
|---|
 | 113 |  S PRCPHLPO("SIPNAME")="" I $D(^PRCP(445,PRCPSECO)) S PRCPHLPO("SIPNAME")=$$INVNAME^PRCPUX1(PRCPSECO)
 | 
|---|
 | 114 |  S PRCPHLPO("ITEM")="" I $D(PRCPITEM) S PRCPHLPO("ITEM")=PRCPITEM
 | 
|---|
 | 115 |  S PRCPHLPO("NAME")="" I $D(PRCPITNM) S PRCPHLPO("NAME")=PRCPITNM
 | 
|---|
 | 116 |  S PRCPHLPO("QTY")="" I $D(PRCPAMT) S PRCPHLPO("QTY")=PRCPAMT
 | 
|---|
 | 117 |  S PRCPHLPO("LEFT")="" I $D(PRCPLEFT) S PRCPHLPO("LEFT")=PRCPLEFT
 | 
|---|
 | 118 |  S PRCPHLPO("TYPE")="" I $D(PRCPPOST) S PRCPHLPO("TYPE")=PRCPPOST
 | 
|---|
 | 119 |  D ERR^PRCPHLM0(ERR,"PRCP_BAD_ORDER",PRCPSECO,.PRCPHLPO,PRCPHL7)
 | 
|---|
 | 120 |  S PRCPDONE=1
 | 
|---|
 | 121 |  ;
 | 
|---|
 | 122 | Q I LOCKORD L -^PRCP(445.3,ORDERDA) D CLEAR^PRCPULOC(445.3,ORDERDA_"-1",0)
 | 
|---|
 | 123 |  I LOCKPRIM L -^PRCP(445,PRCPPRIM,1) D CLEAR^PRCPULOC(445,PRCPPRIM_"-1",0)
 | 
|---|
 | 124 |  Q
 | 
|---|