1 | PRCVEE1 ;WOIFO/VAC-EDIT/CANCELLATION FOR RIL/2237 FROM IFCAP TO DYNAMED ; 5/4/05 10:41am
|
---|
2 | ;;5.1;IFCAP;**81**;Oct 20, 2000
|
---|
3 | ;PER VHA Directive 10-93-142, this routine should not be modified
|
---|
4 | ;
|
---|
5 | ;This routine will pass changes, cancellations and approvals from
|
---|
6 | ;IFCAP to DynaMed because of changes in RIL's or 2237's
|
---|
7 | BEGIN(REF,PRCVDT) ;
|
---|
8 | ; REF is passed in as node for ^XTMP(REF)
|
---|
9 | ; PRCVDT is passed in as node for ^XTMP(REF,PRCVDT)
|
---|
10 | ; Note: PRCVDT is really two data elements $H and comma delimited
|
---|
11 | ; There are two XTMP structures for this process. The first is
|
---|
12 | ; for the original message sent from IFCAP. The first node is
|
---|
13 | ; "PRCVUP*"+the RIL or 2237 number. The second node is $H. The third
|
---|
14 | ; node is either 0,1 or 2. Zero is the standard ^XTMP structure
|
---|
15 | ; plus $H. The 1 node contains header information common to all
|
---|
16 | ; items. The 2 node contains detail information to be sent.
|
---|
17 | ; Subordinate to the 2 node is a counter node unique for each item.
|
---|
18 | ; Under the 1 and 2 nodes, will reside an "ERR" node with
|
---|
19 | ; subordinate counters for multiple errors per item. The second
|
---|
20 | ; ^XTMP is a pointer to the PRCVUP*xxx node. The first node is
|
---|
21 | ; "PRCVMID*"+the Message Control ID for the original message.
|
---|
22 | ; The 1 node contains the PRCVUP*+xxx and $H to point back to the
|
---|
23 | ; original XTMP("PRCVUP*"+RIL/2237)
|
---|
24 | ; PRCPRO - Procedure call ID
|
---|
25 | ; PRCERR - Error array for processing message errors
|
---|
26 | ; PRCFS - Field separator
|
---|
27 | ; PRCCS - Component separator
|
---|
28 | ; PRCRS - Repetition separator
|
---|
29 | ; PRCEE - Escape separator
|
---|
30 | ; PRCSC - Sub-component separator
|
---|
31 | ; PRCMID - Message Control ID for sent message
|
---|
32 | ; ORCDAT - a single field that holds an ORC Segment
|
---|
33 | ; RQD - an array of fields for the RQD segment
|
---|
34 | ; RQ1 - an array of fields for the RQ1 segment
|
---|
35 | ; ORC - an array of fields for the ORC segment
|
---|
36 | ; PRCCNT - a record counter
|
---|
37 | ; PRCVY - Loop counter
|
---|
38 | N PRCPRO,PRCERR,PRCFS,PRCCS,PRCRS,PRCEE,PRCSC,PRCDP
|
---|
39 | N ORCDAT,I,J,K,Y,X,X1,X2,XX,RQD,ORC,PRCCNT,RQ1
|
---|
40 | N ODATE,PRCDTS,PRCDT,PRCMID,PRCVMID,DETAIL,HLA,HL,ERRCNT
|
---|
41 | N PRCVERR,PRCVY,PRCDATA,PRCSITE,PRCFCP
|
---|
42 | S PRCDATA=$P(REF,"*",2)
|
---|
43 | S PRCSITE=$P(PRCDATA,"-",1),PRCFCP=$P(PRCDATA,"-",4)
|
---|
44 | S PRCERR="OK"
|
---|
45 | I REF="" Q
|
---|
46 | S PRCDTS=$$NOW^XLFDT
|
---|
47 | S PRCDT=$$FMTHL7^XLFDT(PRCDTS),ERRCNT=1
|
---|
48 | D BUILD
|
---|
49 | D SEND
|
---|
50 | D CLEAN
|
---|
51 | Q
|
---|
52 | BUILD ;Create the ORC record for the message
|
---|
53 | S PRCCNT=1
|
---|
54 | S PRCPRO="PRCV_IFCAP_01_EV_DYNAMED_UPDATE"
|
---|
55 | K HL D INIT^HLFNC2(PRCPRO,.HL)
|
---|
56 | I $G(HL) S PRCVERR(ERRCNT)="Error Generating Message to DynaMed" D MSGRTN Q
|
---|
57 | S PRCFS=HL("FS"),PRCCS=$E(HL("ECH"),1),PRCRS=$E(HL("ECH"),2),PRCEE=$E(HL("ECH"),3),PRCSC=$E(HL("ECH"),4)
|
---|
58 | ;
|
---|
59 | ORC ;Build ORC Segment
|
---|
60 | S ORCDAT=$G(^XTMP(REF,PRCVDT,1))
|
---|
61 | Q:ORCDAT=""
|
---|
62 | F I=1:1:21 S ORC(I)=""
|
---|
63 | ;Convert a $H node value to a HL7 date format
|
---|
64 | S ODATE=$$HTFM^XLFDT(PRCVDT) S ORC(9)=$$FMTHL7^XLFDT(ODATE)
|
---|
65 | S ORC(21)=$P(ORCDAT,U,2)
|
---|
66 | S ORC(10)=$P(ORCDAT,U,3)_PRCCS_$P(ORCDAT,U,4)_PRCCS_$P(ORCDAT,U,5)
|
---|
67 | S $P(ORC(10),PRCCS,9)=ORC(21)
|
---|
68 | ;S HLA("HLS",PRCCNT)="ORC"_PRCFS
|
---|
69 | ;
|
---|
70 | RQD ;Build RQD segment
|
---|
71 | S PRCVY=0 F K=1:1 S PRCVY=$O(^XTMP(REF,PRCVDT,2,PRCVY)) Q:PRCVY="" D
|
---|
72 | .S DETAIL=$G(^XTMP(REF,PRCVDT,2,PRCVY))
|
---|
73 | .Q:DETAIL=""
|
---|
74 | .S ORC(1)=$P(DETAIL,PRCCS,1)
|
---|
75 | .S HLA("HLS",PRCCNT)="ORC"_PRCFS
|
---|
76 | .F I=1:1:10 S RQD(I)=""
|
---|
77 | .F I=1:1:20 S HLA("HLS",PRCCNT)=HLA("HLS",PRCCNT)_ORC(I)_PRCFS
|
---|
78 | .S HLA("HLS",PRCCNT)=HLA("HLS",PRCCNT)_ORC(21)
|
---|
79 | .S PRCCNT=PRCCNT+1
|
---|
80 | .S HLA("HLS",PRCCNT)="RQD"_PRCFS
|
---|
81 | .S RQD(1)=PRCVY
|
---|
82 | .S RQD(2)=$P(DETAIL,U,7)
|
---|
83 | .S RQD(3)=$P(DETAIL,U,2)
|
---|
84 | .S RQD(4)=$P(DETAIL,U,11)
|
---|
85 | .S RQD(5)=$P(DETAIL,U,3)
|
---|
86 | .S RQD(6)=$P(DETAIL,U,9)
|
---|
87 | .S RQD(9)=$P(REF,"*",2)
|
---|
88 | .S RQD(10)=$P(DETAIL,U,8)
|
---|
89 | .S RQD(10)=$$FMTHL7^XLFDT(RQD(10))
|
---|
90 | .F J=1:1:9 S HLA("HLS",PRCCNT)=HLA("HLS",PRCCNT)_RQD(J)_PRCFS
|
---|
91 | .S HLA("HLS",PRCCNT)=HLA("HLS",PRCCNT)_RQD(10)
|
---|
92 | .S PRCCNT=PRCCNT+1
|
---|
93 | .;Build RQ1 segment
|
---|
94 | .F I=1:1:5 S RQ1(I)=""
|
---|
95 | .S HLA("HLS",PRCCNT)="RQ1"_PRCFS
|
---|
96 | .S RQ1(1)=$P(DETAIL,U,6)
|
---|
97 | .S RQ1(2)=$P(DETAIL,U,10)
|
---|
98 | .S RQ1(3)=$P(DETAIL,U,12)
|
---|
99 | .S RQ1(4)=$P(DETAIL,U,4)_PRCCS_PRCCS_PRCCS_$P(DETAIL,U,5)
|
---|
100 | .S RQ1(5)=$P(DETAIL,U,15)
|
---|
101 | .F J=1:1:4 S HLA("HLS",PRCCNT)=HLA("HLS",PRCCNT)_RQ1(J)_PRCFS
|
---|
102 | .S HLA("HLS",PRCCNT)=HLA("HLS",PRCCNT)_RQ1(5)
|
---|
103 | .S PRCCNT=PRCCNT+1
|
---|
104 | Q
|
---|
105 | SEND ;Send record to HL7 interface to DynaMed
|
---|
106 | S PRCDP="" D GENERATE^HLMA(PRCPRO,"LM",1,.PRCDP)
|
---|
107 | I $P(PRCDP,PRCCS,2)'="" S PRCVERR(ERRCNT)="Generated "_$P(PRCDP,U,3) D MSGRTN
|
---|
108 | ;
|
---|
109 | ;Get the Message Control ID
|
---|
110 | S PRCMID=$P(PRCDP,U,1)
|
---|
111 | S XX=$$HTFM^XLFDT($H,1)
|
---|
112 | S X1=$$FMADD^XLFDT(XX,5)
|
---|
113 | S PRCVMID="PRCVMID*"_PRCMID
|
---|
114 | S ^XTMP(PRCVMID,0)=X1_U_XX_"^ACK 2237/RIL message from DynaMed"
|
---|
115 | S ^XTMP(PRCVMID,1)=REF_U_PRCVDT
|
---|
116 | Q
|
---|
117 | MSGRTN ;Send message to Fund Control Point users for update
|
---|
118 | N XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
|
---|
119 | S XMSUB="TRANSMISSION ERRORS FOR "_$P(REF,"*",2)
|
---|
120 | S XMDUZ="IFCAP OUTBOUND ERROR MESSAGE FOR RIL/2237"
|
---|
121 | S XMTEXT="PRCVERR("
|
---|
122 | D GETFCPU^PRCVLIC(.XMY,PRCSITE,PRCFCP)
|
---|
123 | D ^XMD
|
---|
124 | K XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ
|
---|
125 | Q
|
---|
126 | CLEAN ;Clean up variables
|
---|
127 | K ODATE,PRCPRO,PRCERR,PRCFS,PRCCS,PRCRS,PRCEE,PRCSC
|
---|
128 | K DETAIL,HLA("HLS"),PRCDP,PRCERR,PRCMID,PRCVMID,PRCDT,PRCDTS
|
---|
129 | K ORCDAT,I,J,K,Y,X,X1,X2,XX,HLA,RQD,RQ1,ORC,PRCCNT,PRCVY
|
---|
130 | K XMDUZ,XMMG,XMSUB,XMTEXT,XMY,XMZ,ERRCNT,PRCVERR
|
---|
131 | K PRCDATA,PRCSITE,PRCFCP
|
---|
132 | Q
|
---|
133 | ;
|
---|