1 | IVMPTRN7 ;ALB/KCL/CJM/PHH/BAJ - HL7 FULL DATA TRANSMISSION (Z07) BUILDER ;10/20/2005
|
---|
2 | ;;2.0;INCOME VERIFICATION MATCH;**9,11,24,34,74,88,105**;JUL 8,1996;Build 2
|
---|
3 | ;
|
---|
4 | ;
|
---|
5 | FULL(DFN,IVMMTDT,EVENTS,IVMCT,IVMGTOT,IVMFLL,IVMNOMSH,IVMREC,IVMQUERY) ;
|
---|
6 | ;Description: This entry point will be used to create an HL7 "Full Data Transmission" message for a patient. Transmission of these messages will be in a batch of 1-100 individual HL7 messages.
|
---|
7 | ;
|
---|
8 | ;Input:
|
---|
9 | ; DFN - Patient IEN
|
---|
10 | ; IVMMTDT - date of the patient's Means Test or Copay Test
|
---|
11 | ; EVENTS () - an array of reasons for transmission, pass by reference.
|
---|
12 | ; EVENTS("IVM") = 1 if transmission due to IVM criteria, 0 otherwise
|
---|
13 | ; EVENTS(" "DCD")=1 if transmission due to DCD criteria, 0 otherwise
|
---|
14 | ; EVENTS("ENROLL")=1 if transmission due to enrollment criteria, 0 otherwise
|
---|
15 | ; IVMCT - count of segments transmitted, pass by reference
|
---|
16 | ; IVMGTOT - count of batchs transmitted, pass by reference
|
---|
17 | ; IVMFLL - (optional), flag for creating MSA, QRD segments for FULL query transmission, $G(IVMFLL) means yes
|
---|
18 | ; IVMNOMSH - (optional), if IVMNOMSH=1, means the MSH segment should not be built
|
---|
19 | ; IVMREC - (optional), if $G(IVMFLL), then this variable will contain the internal entry number of Query Income Year #301.9001 mult.
|
---|
20 | ; IVMQUERY - array passed in by reference where
|
---|
21 | ; IVMQUERY("LTD") -- # of the QUERY that is currently open or
|
---|
22 | ; undefined, zero, or null if no QUERY opened for
|
---|
23 | ; last treatment date
|
---|
24 | ; IVMQUERY("OVIS") -- # of the QUERY that is currently open or
|
---|
25 | ; undefined, zero, or null if no QUERY opened for
|
---|
26 | ; finding outpatient visits
|
---|
27 | ;
|
---|
28 | ;HL7 variables as defined by call to INIT^IVMUFNC:
|
---|
29 | ; HLEVN - HL7 message event counter
|
---|
30 | ; HLSDT - a flag that indicates that the data to be sent is stored in the ^TMP("HLS") global array.
|
---|
31 | ;
|
---|
32 | ;The following variables returned by the INIT^HLTRANS entry point:
|
---|
33 | ; HLNDAP - Non-DHCP Application Pointer from file 770
|
---|
34 | ; HLNDAP0 - Zero node from file 770 corresponding to HLNDAP
|
---|
35 | ; HLDAP - DHCP Application Pointer from file 771
|
---|
36 | ; HLDAN - The DHCP Application Name (.01 field, file 771) for HLDAP
|
---|
37 | ; HLPID - HL7 processing ID from file 770
|
---|
38 | ; HLVER - HL7 version number from file 770
|
---|
39 | ; HLFS - HL7 Field Separater from the 'FS' node of file 771
|
---|
40 | ; HLECH - HL7 Encoding Characters from the 'EC' node of file 771
|
---|
41 | ; HLQ - Double quotes ("") for use in building HL7 segments
|
---|
42 | ; HLERR - if an error is encountered, an error message is returned in the HLERR variable.
|
---|
43 | ; HLDA - the internal entry number for the entry created in file 772
|
---|
44 | ;
|
---|
45 | ; HLDT - the transmission date/time (associated with the entry in in file 772 identified by HLDA) in internal VA FileMan format.
|
---|
46 | ; HLDT1 - the same transmission date/time as the HLDT variable, only in HL7 format.
|
---|
47 | ;
|
---|
48 | ;Output:
|
---|
49 | ; ^TMP("HLS",$J,IVMCT) - global array containing all segments of the HL7 message that the VistA application wishes to send. The HLSDT variable is defined above and the IVMCT variable is a sequential number starting at 1.
|
---|
50 | ;
|
---|
51 | N DGREL,DGINC,DR,I,IVMI,IVMDFN,IVMHLMID,IVMNTE,IVMPAT,IVMQRD,X,IVMCNTID
|
---|
52 | ;
|
---|
53 | ; IVM*2.0*105 BAJ 10/20/2005
|
---|
54 | ; Do Z07 Consistency checks and, if fail, prevent Z07 Build
|
---|
55 | I '$$EN^IVMZ07C(DFN) Q
|
---|
56 | ;
|
---|
57 | ; INITIALIZE HL7 1.6 VARIABLES
|
---|
58 | D INIT^HLFNC2(HLEID,.HL)
|
---|
59 | ;
|
---|
60 | ; quit if Pseudo SSN and not verified
|
---|
61 | ; Q:'$$SNDPSSN(DFN) ;Removed by IVM*2*105
|
---|
62 | ;
|
---|
63 | ; if count=0 and not first batch
|
---|
64 | ;RMC;I IVMCT=0,$G(IVMGTOT) D FILE^HLTF
|
---|
65 | ;
|
---|
66 | ; HL7 event/message counter
|
---|
67 | S HLEVN=$G(HLEVN)+1
|
---|
68 | ;
|
---|
69 | ; CREATE SLOT FOR EACH NEW BATCH
|
---|
70 | I HLEVN=1 D
|
---|
71 | . K HLMID,MTIEN,HLDT,HLDT1
|
---|
72 | . D CREATE^HLTF(.HLMID,.MTIEN,.HLDT,.HLDT1)
|
---|
73 | ;
|
---|
74 | ; handle message header processing for HL7 full data trans (Z07) msg
|
---|
75 | D MSH^IVMUFNC4($G(IVMNOMSH),$G(IVMFLL),$G(IVMREC),.IVMCT,.IVMCNTID)
|
---|
76 | ;
|
---|
77 | I IVMMTDT="" D
|
---|
78 | .S IVMMTDT=$P($$LST^DGMTU(DFN,DT),"^",2)
|
---|
79 | .I IVMMTDT="" S IVMMTDT=DT
|
---|
80 | ;
|
---|
81 | ; build HL7 Full Data Transmission (Z07) message
|
---|
82 | D BUILD^IVMPTRN8(DFN,IVMMTDT,.IVMCT,.IVMQUERY)
|
---|
83 | ;
|
---|
84 | ; log patient transmission
|
---|
85 | D
|
---|
86 | .N IVMSTAT
|
---|
87 | .S X=$$LST^DGMTCOU1(DFN,IVMMTDT,3)
|
---|
88 | .S IVMSTAT=$S($E($P(X,"^",2),1,3)=$E(IVMMTDT,1,3):$P($G(^DGMT(408.31,+X,0)),"^",3),1:"")
|
---|
89 | .;
|
---|
90 | .D FILEPT^IVMPTRN3(DFN,$$LYR^DGMTSCU1(IVMMTDT),HLDT,IVMCNTID,.EVENTS,IVMSTAT,IVMINS)
|
---|
91 | ;
|
---|
92 | ;if number of HL7 events/msgs is 100 then call HL7 pkg to transmit batch
|
---|
93 | I HLEVN=100 D
|
---|
94 | .N IVMEVENT
|
---|
95 | .; event code for Full Data Transmission
|
---|
96 | .S IVMEVENT="Z07"
|
---|
97 | .I $G(IVMFLL) D FILE1^IVMPTRN3 Q
|
---|
98 | .D FILE^IVMPTRN3
|
---|
99 | Q
|
---|
100 | ;
|
---|
101 | SNDPSSN(DFN) ; check SSN and patient eligibility
|
---|
102 | ;
|
---|
103 | ; Input:
|
---|
104 | ; DFN Patient file (#2) IEN
|
---|
105 | ; Output:
|
---|
106 | ; <expression> 1: Pseudo SSN and Eligibility verified or
|
---|
107 | ; not a Pseudo SSN
|
---|
108 | ; 0: Psuedo SSN and Eligibility Pending verification
|
---|
109 | ; Pending re-verification
|
---|
110 | ;
|
---|
111 | N SSN,PFLG
|
---|
112 | ;
|
---|
113 | ; Don't process records with corrupted nodes
|
---|
114 | I '$D(^DPT(DFN,0)) D REM Q 0
|
---|
115 | ;
|
---|
116 | S SSN=$P(^DPT(DFN,0),U,9)
|
---|
117 | S PFLG=($E(SSN,$L(SSN))="P") I 'PFLG Q 1
|
---|
118 | I ($P($G(^DPT(DFN,.361)),U)="V") Q 1
|
---|
119 | ;
|
---|
120 | D REM
|
---|
121 | Q 0
|
---|
122 | ;
|
---|
123 | REM ; Remove Psuedo SSN from Queue
|
---|
124 | ; Set TRANSMISSION STATUS to transmission not required
|
---|
125 | S PDATA(.03)=1 I $$UPD^DGENDBS(301.5,IVMDA,.PDATA,.ERR)
|
---|
126 | K PDATA,ERR
|
---|
127 | Q
|
---|