1 | PRCVPOSD ;WOIFO/DAP-DYNAMED COMBINED PO EVENTS SEND ; 12/13/04
|
---|
2 | V ;;5.1;IFCAP;**81**;Oct 20, 2000
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;This routine is used to send an ORM^O01 HL7 message to the DynaMed inventory system to report one of four Purchase Order operations.
|
---|
6 | ;1-Purchase Order Obligations
|
---|
7 | ;2-Amendments to Obligated Purchase Orders
|
---|
8 | ;3-Purchase Order Receiving Reports
|
---|
9 | ;4-Adjustments to Purchase Order Receiving Reports
|
---|
10 | ;
|
---|
11 | Q
|
---|
12 | ;
|
---|
13 | EN(PRCVX) ;Entry point for API Call
|
---|
14 | I $$GET^XPAR("SYS","PRCV COTS INVENTORY",1,"Q")'=1 Q
|
---|
15 | I $D(PRCVX)=0 Q
|
---|
16 | N HLA
|
---|
17 | S PRCVCNT=0,PRCVERG=0
|
---|
18 | D HDRBLD
|
---|
19 | I PRCVERG=1 K PRCVERG Q
|
---|
20 | S N=0 F S N=$O(^TMP("PRCV442A",$J,PRCVX,N)) Q:+N=0 D
|
---|
21 | . D MSGBLD
|
---|
22 | . Q
|
---|
23 | ;
|
---|
24 | S PRCVDP="" D GENERATE^HLMA(PRCVPRO,"LM",1,.PRCVDP)
|
---|
25 | I +$P(PRCVDP,"^",2) S PRCVERR(1)="Error generating message through VistA HL7 package for PO # "_PRCVPO,PRCVERD=PRCVPO D CLIFP
|
---|
26 | ;
|
---|
27 | K ^TMP("PRCV442A",$J,PRCVX)
|
---|
28 | D FIN
|
---|
29 | K PRCVERG
|
---|
30 | ;
|
---|
31 | Q
|
---|
32 | ;
|
---|
33 | HDRBLD ;Build message elements from provided header level data
|
---|
34 | ;
|
---|
35 | ;PRCVPO Purchase Order #
|
---|
36 | S PRCVPO=$P(^TMP("PRCV442A",$J,PRCVX),"^",1)
|
---|
37 | ;PRCVTT Transaction Type
|
---|
38 | S PRCVTT=$P(^TMP("PRCV442A",$J,PRCVX),"^",2)
|
---|
39 | I PRCVTT=1 S PRCVT1="NW",PRCVT2="CG",PRCVPRO="PRCV_IFCAP_02_EV_OBL/AMEND"
|
---|
40 | I PRCVTT=2 S PRCVT1="XO",PRCVT2="AJ",PRCVPRO="PRCV_IFCAP_02_EV_OBL/AMEND"
|
---|
41 | I PRCVTT=3 S PRCVT1="SC",PRCVT2="CG",PRCVPRO="PRCV_IFCAP_03_EV_REC/ADJ"
|
---|
42 | I PRCVTT=4 S PRCVT1="XX",PRCVT2="AJ",PRCVPRO="PRCV_IFCAP_03_EV_REC/ADJ"
|
---|
43 | I PRCVTT=5 S PRCVT1="CA",PRCVT2="AJ",PRCVPRO="PRCV_IFCAP_02_EV_OBL/AMEND"
|
---|
44 | ;PRCVDZ IFCAP User DUZ
|
---|
45 | S PRCVDZ=$P(^TMP("PRCV442A",$J,PRCVX),"^",3)
|
---|
46 | ;Retrieve user name based on DUZ from file 200 using $$HLNAME^XLFNAME call as detailed in DBIA #3065
|
---|
47 | S PRCVDNM("FILE")=200,PRCVDNM("FIELD")=.01,PRCVDNM("IENS")=PRCVDZ_","
|
---|
48 | S PRCVDNM=$P($$HLNAME^XLFNAME(.PRCVDNM," ","^"),"^",1,2)
|
---|
49 | S PRCVNML=$P(PRCVDNM,"^",1)
|
---|
50 | S PRCVNMF=$P(PRCVDNM,"^",2)
|
---|
51 | ;PRCVVNI Vendor Number IEN
|
---|
52 | S PRCVVNI=$P(^TMP("PRCV442A",$J,PRCVX),"^",4)
|
---|
53 | ;PRCVVNF Vendor Number FMS
|
---|
54 | S PRCVVNF=$P(^TMP("PRCV442A",$J,PRCVX),"^",5)
|
---|
55 | ;
|
---|
56 | ;##### FMS ALTERNATE ADDRESS INDICATOR #####
|
---|
57 | ;PIECE 6
|
---|
58 | ;
|
---|
59 | ;PRCVDT Transaction Date / Time
|
---|
60 | S PRCVDT=$P(^TMP("PRCV442A",$J,PRCVX),"^",7)
|
---|
61 | S PRCVDT=$$FMTHL7^XLFDT(PRCVDT)
|
---|
62 | ;PRCVSTA Station #
|
---|
63 | S PRCVSTA=$P(^TMP("PRCV442A",$J,PRCVX),"^",8)
|
---|
64 | ;PRCVPSTA Purchasing Station #
|
---|
65 | S PRCVPSTA=+(PRCVPO)
|
---|
66 | ;
|
---|
67 | K HL D INIT^HLFNC2(PRCVPRO,.HL)
|
---|
68 | I $G(HL) S PRCVERR(1)="Error generating message through VistA HL7 package for PO # "_PRCVPO,PRCVERD=PRCVPO D CLIFP D FIN Q
|
---|
69 | ;
|
---|
70 | S PRCVCS=$E(HL("ECH")),PRCVFS=HL("FS")
|
---|
71 | ;
|
---|
72 | Q
|
---|
73 | ;
|
---|
74 | MSGBLD ;Generate repeating message body for all line level data
|
---|
75 | ;
|
---|
76 | ;PRCVDDN DynaMed Document Number
|
---|
77 | S PRCVDDN=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",1)
|
---|
78 | ;S PRCVDDN=$E(PRCVDDN,1,4)_"-"_$E(PRCVDDN,5,8)_"-"_$E(PRCVDDN,9,11)
|
---|
79 | ;PRCVIN Item Number
|
---|
80 | S PRCVIN=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",2)
|
---|
81 | ;PRCVLN PO Line Number
|
---|
82 | S PRCVLN=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",3)
|
---|
83 | ;PRCVTN 2237 Transaction Number
|
---|
84 | S PRCVTN=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",4)
|
---|
85 | ;PRCVUOP Unit Of Purchase
|
---|
86 | S PRCVUOP=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",5)
|
---|
87 | ;PRCVQO Quantity Ordered
|
---|
88 | S PRCVQO=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",6)
|
---|
89 | ;PRCVUP Unit Price
|
---|
90 | S PRCVUP=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",7)
|
---|
91 | ;PRCVNIF NIF Number
|
---|
92 | S PRCVNIF=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",8)
|
---|
93 | ;I PRCVNIF="" S PRCVNIF="1234"
|
---|
94 | ;PRCVPM Packaging Multiple
|
---|
95 | S PRCVPM=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",9)
|
---|
96 | ;PRCVQR Quantity Received
|
---|
97 | S PRCVQR=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",10)
|
---|
98 | ;PRCVTIC Total Item Cost
|
---|
99 | S PRCVTIC=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",11)
|
---|
100 | ;PRCVDIC Discounted Item Cost
|
---|
101 | S PRCVDIC=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",12)
|
---|
102 | ;PRCVERD Expected Delivery Date
|
---|
103 | S PRCVERD=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",13)
|
---|
104 | S PRCVERD=$$FMTHL7^XLFDT(PRCVERD)
|
---|
105 | ;PRCVAT Amendment/Adjustment Type
|
---|
106 | S PRCVAT=$P(^TMP("PRCV442A",$J,PRCVX,N),"^",14)
|
---|
107 | I PRCVAT=1 S PRCVAT="1^Line Item Edit"
|
---|
108 | I PRCVAT=2 S PRCVAT="2^Line Item Delete"
|
---|
109 | I PRCVAT=3 S PRCVAT="3^Change Vendor"
|
---|
110 | I PRCVAT=4 S PRCVAT="4^Replace PO Number"
|
---|
111 | I PRCVAT=5 S PRCVAT="5^Authority Edit"
|
---|
112 | ;
|
---|
113 | ;Build ORC Segment
|
---|
114 | S PRCVCNT=PRCVCNT+1
|
---|
115 | S HLA("HLS",PRCVCNT)="ORC"_PRCVFS_PRCVT1_PRCVFS_PRCVPO_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVDT_PRCVFS
|
---|
116 | S HLA("HLS",PRCVCNT)=HLA("HLS",PRCVCNT)_PRCVDZ_PRCVCS_PRCVNML_PRCVCS_PRCVNMF_PRCVCS_PRCVCS_PRCVCS_PRCVCS_PRCVCS_PRCVCS_PRCVSTA_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVAT_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVPSTA
|
---|
117 | ;
|
---|
118 | ;Build RQD Segment
|
---|
119 | S PRCVCNT=PRCVCNT+1
|
---|
120 | S HLA("HLS",PRCVCNT)="RQD"_PRCVFS_PRCVLN_PRCVFS_PRCVDDN_PRCVFS_PRCVIN_PRCVFS_PRCVPM_PRCVFS_PRCVQO_PRCVFS_PRCVUOP
|
---|
121 | S HLA("HLS",PRCVCNT)=HLA("HLS",PRCVCNT)_PRCVFS_PRCVFS_PRCVFS_PRCVTN_PRCVFS_PRCVERD
|
---|
122 | ;
|
---|
123 | ;Build RQ1 Segment
|
---|
124 | S PRCVCNT=PRCVCNT+1
|
---|
125 | S HLA("HLS",PRCVCNT)="RQ1"_PRCVFS_PRCVUP_PRCVFS_PRCVFS_PRCVFS_PRCVVNI_PRCVCS_PRCVCS_PRCVCS_PRCVVNF_PRCVFS_PRCVNIF
|
---|
126 | ;
|
---|
127 | ;Build FT1 Segment
|
---|
128 | S PRCVCNT=PRCVCNT+1
|
---|
129 | S HLA("HLS",PRCVCNT)="FT1"_PRCVFS_PRCVFS_PRCVFS_PRCVFS_PRCVDT_PRCVFS_PRCVFS_PRCVT2_PRCVFS_PRCVPO_PRCVFS
|
---|
130 | S HLA("HLS",PRCVCNT)=HLA("HLS",PRCVCNT)_PRCVFS_PRCVFS_PRCVQR_PRCVFS_PRCVTIC_PRCVFS_PRCVDIC
|
---|
131 | ;
|
---|
132 | Q
|
---|
133 | ;
|
---|
134 | ORRPROC ;Process ORR^O02 response message
|
---|
135 | ;
|
---|
136 | ;Uses HLNEXT twice to bypass the MSH segment and go directly to the MSA segment
|
---|
137 | X HLNEXT
|
---|
138 | ;
|
---|
139 | X HLNEXT
|
---|
140 | S VAL=$$FLD^HLCSUTL(HLNODE,2)
|
---|
141 | I VAL'="AA" D ERROR
|
---|
142 | ;
|
---|
143 | D FIN
|
---|
144 | ;
|
---|
145 | Q
|
---|
146 | ;
|
---|
147 | ERROR ;Process ERR Segments
|
---|
148 | S PRCVERC=1 F N=1:1 X HLNEXT Q:HLQUIT'>0 D
|
---|
149 | . S VAL=$$FLD^HLCSUTL(HLNODE,1)
|
---|
150 | . I VAL="ERR" S PRCVERC=PRCVERC+1,PRCVERM=$$FLD^HLCSUTL(HLNODE,6),PRCVERD=$$FLD^HLCSUTL(HLNODE,7)
|
---|
151 | . S PRCVPO2=$P(PRCVERD,"~",1)
|
---|
152 | . S PRCVERR(PRCVERC)="At Line Number "_$P(PRCVERD,"~",2)_" involving Document ID "_$P(PRCVERD,"~",3)_" the following errors occurred:"
|
---|
153 | . S PRCVERC=PRCVERC+1
|
---|
154 | . S PRCVERR(PRCVERC)=$P(PRCVERM,"^",2)
|
---|
155 | . Q
|
---|
156 | S PRCVERR(1)="PO # "_PRCVPO2_" failed to update in the DynaMed system"
|
---|
157 | ;
|
---|
158 | D CLIFP
|
---|
159 | ;
|
---|
160 | Q
|
---|
161 | ;
|
---|
162 | CLIFP ;Call partner app w/ mail message for users on error
|
---|
163 | N XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
|
---|
164 | I $D(PRCVPO) S PRCVPO2=PRCVPO
|
---|
165 | S XMSUB="Inventory System PO # "_PRCVPO2_" Errors "_$$HTE^XLFDT($H)
|
---|
166 | S XMDUZ="IFCAP/COTS Inventory Interface"
|
---|
167 | S XMTEXT="PRCVERR("
|
---|
168 | ;
|
---|
169 | S PRCVSIT=+PRCVPO2,PRCVFCP=$$FCP^PRCV442B(PRCVPO2)
|
---|
170 | D GETFCPU^PRCVLIC(.XMY,PRCVSIT,PRCVFCP)
|
---|
171 | ;
|
---|
172 | D ^XMD
|
---|
173 | S PRCVERG=1
|
---|
174 | K PRCVPO2,PRCVFCP,PRCVSIT
|
---|
175 | ;
|
---|
176 | Q
|
---|
177 | ;
|
---|
178 | FIN ;Clean up variables
|
---|
179 | K PRCVINP,PRCVCNT,PRCVPO,PRCVTT,PRCVT1,PRCVT2,PRCVDZ,PRCVDNM,PRCVNML,PRCVNMF,PRCVVNI,PRCVVNF,PRCVDT,PRCVERD,PRCVSTA,N,PRCVX
|
---|
180 | K PRCVPRO,PRCVCS,PRCVFS,PRCVLN,PRCVDDN,PRCVIN,PRCVTN,PRCVUOP,PRCVQO,PRCVUP,PRCVNIF,PRCVPM,PRCVQR,PRCVTIC,PRCVDIC,PRCVAT,PRCVPSTA
|
---|
181 | K HLA,VAL,PRCVDP,PRCVERC,PRCVERM,PRCVERD,PRCVERR
|
---|
182 | ;
|
---|
183 | Q
|
---|