| [613] | 1 | PRCPHLFM ;WISC/CC/DWA-build HL7 messages for item maintenance ;11/5/03  22:34
 | 
|---|
 | 2 | V ;;5.1;IFCAP;**1,24,52,63**;Oct 20, 2000
 | 
|---|
 | 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 |  Q
 | 
|---|
 | 6 |  ;
 | 
|---|
 | 7 | BLDSEG(ACTION,ITEM,SIP) ;
 | 
|---|
 | 8 |  ;
 | 
|---|
 | 9 |  ; ACTION (1st '^' piece) 1 if add, 2 if delete, 3 if update
 | 
|---|
 | 10 |  ;        (2nd '^' piece) flag indicating txn MUST be built 
 | 
|---|
 | 11 |  ; ITEM   the number of the item affected
 | 
|---|
 | 12 |  ; SIP    the number of the secondary inventory point affected
 | 
|---|
 | 13 |  ;        0 (zero) for non-station specific edits (from PRCHE)
 | 
|---|
 | 14 |  ; MSG    0 to suppress messages, 1 to display them
 | 
|---|
 | 15 |  ;
 | 
|---|
 | 16 |  ; if this is a non-station specific edit (i.e. from PRCHE)
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 |  N MSG,PUSH S MSG=1
 | 
|---|
 | 19 |  S PUSH=0
 | 
|---|
 | 20 |  I $P(ACTION,"^",2)=1 S PUSH=1
 | 
|---|
 | 21 |  I ACTION=3,SIP=0 D  QUIT
 | 
|---|
 | 22 |  . N SS,IME
 | 
|---|
 | 23 |  . S SS=0,IME=0 ; entry from PRCHE
 | 
|---|
 | 24 |  . F  S SS=$O(^PRCP(445.5,SS)) Q:'+SS  D
 | 
|---|
 | 25 |  . . ; send transaction to non-station specific SS housing the item
 | 
|---|
 | 26 |  . . I $P(^PRCP(445.5,SS,0),"^",2)="O",$O(^PRCP(445,"AH",ITEM,SS,""))>0 D GO
 | 
|---|
 | 27 |  ;
 | 
|---|
 | 28 |  N IME,SS
 | 
|---|
 | 29 |  I $P(^PRCP(445,SIP,0),"^",3)'="S" QUIT
 | 
|---|
 | 30 |  I '$D(^PRCP(445,SIP,1,ITEM)),ACTION'=2 QUIT
 | 
|---|
 | 31 |  S SS=$P($G(^PRCP(445,SIP,5)),"^",1) I SS']"" QUIT
 | 
|---|
 | 32 |  S IME=0
 | 
|---|
 | 33 |  ;
 | 
|---|
 | 34 | GO N %,%H,%I,CNT,DATETIME,HLA,HLCS,HLEVN,HLFS,ITEMDATA,MC,NM,OUT,PRIM,SEG,X
 | 
|---|
 | 35 |  N MYRESULT,MYOPTNS
 | 
|---|
 | 36 |  I SIP>0,'+$P($G(^PRCP(445,SIP,1,ITEM,0)),"^",9),ACTION'=2 QUIT  ; only deletes are valid for items with no normal
 | 
|---|
 | 37 |  S CNT=0,OUT=0
 | 
|---|
 | 38 |  ; if the supply station doesn't handle station specific data
 | 
|---|
 | 39 |  I SS>0,$P(^PRCP(445.5,SS,0),"^",2)="O",'PUSH D  I OUT QUIT
 | 
|---|
 | 40 |  . ; I ACTION=3 S OUT=1 QUIT  ; quit if editing station specific data
 | 
|---|
 | 41 |  . ; for add, quit if item is already on an IP in the SS 
 | 
|---|
 | 42 |  . I ACTION=1 D
 | 
|---|
 | 43 |  . . N A,B
 | 
|---|
 | 44 |  . . S A=0
 | 
|---|
 | 45 |  . . S A=$O(^PRCP(445,"AH",ITEM,SS,"")) I +A'>0 S OUT=1 QUIT  ; should have one
 | 
|---|
 | 46 |  . . I A'=SIP S OUT=1 QUIT  ; item on a different IP in the SS
 | 
|---|
 | 47 |  . . I A=SIP S B=$O(^PRCP(445,"AH",ITEM,SS,A)) I +B>0 S OUT=1 QUIT
 | 
|---|
 | 48 |  . I ACTION=2 D  I OUT=1 QUIT
 | 
|---|
 | 49 |  . . N A,B
 | 
|---|
 | 50 |  . . S A=0
 | 
|---|
 | 51 |  . . S A=$O(^PRCP(445,"AH",ITEM,SS,"")) I +A'>0 QUIT  ; should find one
 | 
|---|
 | 52 |  . . I A'=SIP S OUT=1 QUIT  ; item is on a different IP in the SS, don't delete from system
 | 
|---|
 | 53 |  . . I A=SIP S B=$O(^PRCP(445,"AH",ITEM,SS,A)) I +B>0 S OUT=1 QUIT  ; item exists on another IP in the SS, don't delete from system
 | 
|---|
 | 54 |  . ; S SIP=0 ; flag to indicate revisions are not station specific
 | 
|---|
 | 55 |  ;
 | 
|---|
 | 56 |  ; set up environment for message
 | 
|---|
 | 57 | 1 D INIT^HLFNC2("PRCP EV ITEM UPDATE",.HL)
 | 
|---|
 | 58 |  I $G(HL) D:'IME&MSG  Q  ; error occurred
 | 
|---|
 | 59 |  . D EN^DDIOL("The HL7 transaction cannot be built now.")
 | 
|---|
 | 60 |  . I ACTION=1,MSG D EN^DDIOL("You will need to add this item directly to the supply station.")
 | 
|---|
 | 61 |  . I ACTION=2,MSG D EN^DDIOL("You will need to delete this item from your supply station.")
 | 
|---|
 | 62 |  . I ACTION=3,MSG D EN^DDIOL("You must edit the item again later to update the supply station.")
 | 
|---|
 | 63 |  . D EN^DDIOL("Error: "_$P(HL,"^",2))
 | 
|---|
 | 64 |  S HLFS=$G(HL("FS")) I HLFS="" S HLFS="|"
 | 
|---|
 | 65 |  S HLCS=$E(HL("ECH"),1)
 | 
|---|
 | 66 |  ;
 | 
|---|
 | 67 |  I MSG D EN^DDIOL("Building HL7 "_($P("ADD,DELETE,EDIT",",",ACTION))_" Transaction on item#"_ITEM_" for "_$P(^PRCP(445.5,SS,0),"^",1))
 | 
|---|
 | 68 |  I MSG,SIP>0 D EN^DDIOL(" station "_$P(^PRCP(445,SIP,0),"^",1))
 | 
|---|
 | 69 |  ;
 | 
|---|
 | 70 |  ; create MFI segment
 | 
|---|
 | 71 | 2 D NOW^%DTC S DATETIME=$P(%+17000000,".",1)_$P(%,".",2)
 | 
|---|
 | 72 |  S SEG="MFI"_HL("FS")
 | 
|---|
 | 73 |  S SEG=SEG_($S(SIP>0:445,1:441))_HL("FS")_HL("FS")
 | 
|---|
 | 74 |  S HLA("HLS",1)=SEG_"UPD"_HL("FS")_DATETIME_HL("FS")_HL("FS")_"NE"
 | 
|---|
 | 75 |  ;
 | 
|---|
 | 76 |  ; create MFE segment
 | 
|---|
 | 77 |  S SEG="MFE"_HL("FS")
 | 
|---|
 | 78 |  I ACTION=1 S SEG=SEG_"MAD"
 | 
|---|
 | 79 |  I ACTION=2 S SEG=SEG_"MDL"
 | 
|---|
 | 80 |  I ACTION=3 S SEG=SEG_"MUP"
 | 
|---|
 | 81 |  S SEG=SEG_HL("FS")_HL("FS")_HL("FS")
 | 
|---|
 | 82 |  S HLA("HLS",2)=SEG_ITEM_"~"_$P(^PRC(441,ITEM,0),"^",2)
 | 
|---|
 | 83 |  ;
 | 
|---|
 | 84 |  I SIP'>0 G 3 ; Z segment for station specific items only
 | 
|---|
 | 85 |  ;
 | 
|---|
 | 86 |  S ITEMDATA=""
 | 
|---|
 | 87 |  S ITEMDATA=^PRCP(445,SIP,1,ITEM,0)
 | 
|---|
 | 88 |  S PRIM=$P(ITEMDATA,"^",12) I PRIM']"" D
 | 
|---|
 | 89 |  . S PRIM=$O(^PRCP(445,"AB",SIP,""))
 | 
|---|
 | 90 |  . I PRIM]"" S PRIM=PRIM_";PRCP(445,"
 | 
|---|
 | 91 |  S NM=$P($G(^PRCP(445,SIP,1,ITEM,6)),"^",1)
 | 
|---|
 | 92 |  I NM']"",+PRIM>0 S NM=$P($G(^PRCP(445,+PRIM,1,ITEM,6)),"^",1)
 | 
|---|
 | 93 |  I NM']"" S NM=$P(^PRC(441,ITEM,0),"^",2)
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 |  ; create Z segment
 | 
|---|
 | 96 |  S SEG="ZIM"_HL("FS")_ITEM_"~"_NM ; item# and description
 | 
|---|
 | 97 |  S SEG=SEG_HL("FS")_"~"_$P(^PRCP(445,SIP,0),"^",1) ; full station name
 | 
|---|
 | 98 |  S SEG=SEG_HL("FS")_$P(ITEMDATA,"^",9) ; normal level
 | 
|---|
 | 99 |  S SEG=SEG_HL("FS")_$P(ITEMDATA,"^",10) ; std reord pt
 | 
|---|
 | 100 |  S SEG=SEG_HL("FS")_$P(ITEMDATA,"^",11)_HL("FS") ; emergency
 | 
|---|
 | 101 |  I $P(ITEMDATA,"^",5)]"" S SEG=SEG_$P($G(^PRCD(420.5,$P(ITEMDATA,"^",5),0)),"^",1) ; unit of issue
 | 
|---|
 | 102 |  I PRIM]"" S X=$$GETVEN^PRCPUVEN(SIP,ITEM,PRIM,1)
 | 
|---|
 | 103 |  S X=$P(X,"^",4) I X']"" S X=1
 | 
|---|
 | 104 |  S SEG=SEG_HL("FS")_X ; pkg multiple (conversion factor)
 | 
|---|
 | 105 |  S HLA("HLS",3)=SEG_HL("FS")_$P(ITEMDATA,"^",15) ; last cost
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 |  ;call HL7 to transmit message
 | 
|---|
 | 108 | 3 S HLL("LINKS",1)="PRCP SU ITEM UPDATE"_"^"_$P(^PRCP(445.5,SS,0),"^",3)
 | 
|---|
 | 109 |  D GENERATE^HLMA("PRCP EV ITEM UPDATE","LM",1,.MYRESULT,"",.MYOPTNS)
 | 
|---|
 | 110 |  I MSG,$P(MYRESULT,"^",2,3)]"" D
 | 
|---|
 | 111 |  . ; error handler for message send failures
 | 
|---|
 | 112 |  . D EN^DDIOL("ERROR: "_MYRESULT)
 | 
|---|
 | 113 |  Q
 | 
|---|
 | 114 |  ;
 | 
|---|
 | 115 |  ; send all items in IP to supply station
 | 
|---|
 | 116 | INIT D ^PRCPUSEL Q:'$G(PRCP("I"))
 | 
|---|
 | 117 |  I PRCP("DPTYPE")'="P" W !," This option may only be invoked from the Primary"
 | 
|---|
 | 118 |  N ACTION,DIR,DTOUT,DUOUT,INVPT,ITEM,PRCPINPT,Y
 | 
|---|
 | 119 | INIT0 S INVPT=$$INVPT^PRCPUINV(PRC("SITE"),"S","","","") Q:'INVPT
 | 
|---|
 | 120 |  I $P($G(^PRCP(445,INVPT,5)),"^",1)']"" W !,"This option may only be run for supply station secondary inventory points." G INIT0
 | 
|---|
 | 121 |  ;
 | 
|---|
 | 122 |  ; ask initialize or update supply station items?
 | 
|---|
 | 123 |  S DIR("A",1)="This option sends information about ALL items with a normal stock"
 | 
|---|
 | 124 |  S DIR("A",2)="level greater than zero to the linked supply station. "
 | 
|---|
 | 125 |  S DIR("A",3)="You must flag the transactions as 'ADD' or 'EDIT'."
 | 
|---|
 | 126 |  S DIR("A",4)=""
 | 
|---|
 | 127 |  S DIR("A")="Select 'Add' OR 'Edit' transactions"
 | 
|---|
 | 128 |  S DIR(0)="SB^A:ADD;E:EDIT"
 | 
|---|
 | 129 |  D ^DIR
 | 
|---|
 | 130 |  I $D(DUOUT)!($D(DTOUT))!(Y']"") QUIT
 | 
|---|
 | 131 |  S ACTION=3 ; default to edit
 | 
|---|
 | 132 |  I Y="A" S ACTION=1
 | 
|---|
 | 133 |  ;
 | 
|---|
 | 134 |  S ITEM=0 F  S ITEM=$O(^PRCP(445,INVPT,1,ITEM)) Q:'+ITEM  D
 | 
|---|
 | 135 |  . I '$D(^PRCP(445,INVPT,1,ITEM,0)) QUIT
 | 
|---|
 | 136 |  . I +$P($G(^PRCP(445,INVPT,1,ITEM,0)),"^",9)=0 QUIT
 | 
|---|
 | 137 |  . D BLDSEG^PRCPHLFM(ACTION,ITEM,INVPT)
 | 
|---|
 | 138 |  . Q
 | 
|---|
 | 139 |  Q
 | 
|---|