1 | IVMBULK1 ;ALB/KCL - IVM/ENROLLMENT Extract Con't ; 18-AUG-1997
|
---|
2 | ;;2.0;INCOME VERIFICATION MATCH;**9,11,15**; 21-OCT-94
|
---|
3 | ;
|
---|
4 | ;
|
---|
5 | GOGO ; --
|
---|
6 | ; Description: This entry point will be the main driver for enrollment data extract.
|
---|
7 | ;
|
---|
8 | ; Input:
|
---|
9 | ; IVMCONST - as local array containing extract input parameters
|
---|
10 | ; (constants), pass by reference
|
---|
11 | ; IVMARRY1 - as local array containing extract input parameters
|
---|
12 | ; (variable), pass by reference
|
---|
13 | ;
|
---|
14 | ; Output: None
|
---|
15 | ;
|
---|
16 | ; Perform enrollment data extract
|
---|
17 | D BULK(.IVMCONST,.IVMARRY1)
|
---|
18 | ;
|
---|
19 | ; Send extract notification message
|
---|
20 | D DOMAIL
|
---|
21 | ;
|
---|
22 | ; If enrollment events not on, turn on enrollment events
|
---|
23 | I '$$ON^IVMUPAR1() D SETON^IVMUPAR1
|
---|
24 | ;
|
---|
25 | Q
|
---|
26 | ;
|
---|
27 | ;
|
---|
28 | BULK(IVMCONST,IVMARRY1) ; --
|
---|
29 | ; Description: This entry point will perform the enrollment data extract.
|
---|
30 | ;
|
---|
31 | ; Input:
|
---|
32 | ; IVMCONST - as local array containing extract input parameters
|
---|
33 | ; (constants), pass by reference
|
---|
34 | ; IVMARRY1 - as local array containing extract input parameters
|
---|
35 | ; (variable), pass by reference
|
---|
36 | ;
|
---|
37 | ; Output: None
|
---|
38 | ;
|
---|
39 | ; initilize varibles
|
---|
40 | N DFN,POP,Z
|
---|
41 | K IVMQUERY("LTD"),IVMQUERY("OVIS")
|
---|
42 | D INIT^IVMUFNC ; HL7 vars
|
---|
43 | S (IVMARRY1("ERROR"),IVMARRY1("TERM"))=""
|
---|
44 | S IVMARRY1("HOST")=$S(IVMARRY1("HOST")'="":IVMARRY1("HOST"),1:IVMCONST("HOST"))
|
---|
45 | S IVMARRY1("PROC")=$G(IVMARRY1("PROC")),IVMARRY1("EXTRACT")=$G(IVMARRY1("EXTRACT")) ; extract statistic counters
|
---|
46 | S IVMARRY1("START")=$$NOW^XLFDT ; current date/time job started
|
---|
47 | S IVMARRY1("TASK")=$G(ZTSK)
|
---|
48 | ;
|
---|
49 | ; store processing info
|
---|
50 | I $$STORE^IVMBULK2(.IVMARRY1)
|
---|
51 | ;
|
---|
52 | ; open host file, if error quit
|
---|
53 | D OPEN^%ZISH("FILE1",IVMARRY1("DIR"),IVMARRY1("HOST")_"_"_(1+(IVMARRY1("EXTRACT")\IVMCONST("MSGMAX"))),"A")
|
---|
54 | I POP S IVMARRY1("ERROR")="Could not create host file in specified directory." G BULKQ
|
---|
55 | ;
|
---|
56 | ; loop through patients in Patient (#2) file
|
---|
57 | S DFN=+IVMARRY1("LASTPAT")
|
---|
58 | F S DFN=$O(^DPT(DFN)) Q:'DFN D Q:IVMARRY1("ERROR")'=""
|
---|
59 | .;
|
---|
60 | .; - # of patients processed/checked
|
---|
61 | .S IVMARRY1("PROC")=IVMARRY1("PROC")+1
|
---|
62 | .;
|
---|
63 | .; - quit if patient does not pass selection criteria
|
---|
64 | .Q:'$$CRITERIA(DFN,IVMCONST("BEGDT"),DT)
|
---|
65 | .;
|
---|
66 | .; - kill ^TMP global containing previous HL7 msg
|
---|
67 | .K ^TMP("HLS",$J,HLSDT)
|
---|
68 | .;
|
---|
69 | .; - build HL7 full data transmission msg for patient
|
---|
70 | .D BUILD^IVMPTRN8(DFN,$$LD^IVMUFNC4(DFN),0,.IVMQUERY)
|
---|
71 | .;
|
---|
72 | .; - write HL7 full data transmission message to host file
|
---|
73 | .D HOST(HLSDT)
|
---|
74 | .;
|
---|
75 | .; - # of patients extracted
|
---|
76 | .S IVMARRY1("EXTRACT")=IVMARRY1("EXTRACT")+1
|
---|
77 | .;
|
---|
78 | .; - check if host file has reached max size limit
|
---|
79 | .I IVMARRY1("EXTRACT")#IVMCONST("MSGMAX")=0 D Q:IVMARRY1("ERROR")'=""
|
---|
80 | ..;
|
---|
81 | ..; -- close host file, max limit reached
|
---|
82 | ..D CLOSE^%ZISH("FILE1")
|
---|
83 | ..;
|
---|
84 | ..; -- open next host file
|
---|
85 | ..D OPEN^%ZISH("FILE1",IVMARRY1("DIR"),IVMARRY1("HOST")_"_"_(1+(IVMARRY1("EXTRACT")\IVMCONST("MSGMAX"))),"A")
|
---|
86 | ..I POP S IVMARRY1("ERROR")="Could not open host file." Q
|
---|
87 | .;
|
---|
88 | .; - for every 100 patients processed, check if task stopped
|
---|
89 | .I IVMARRY1("PROC")#100=0 D
|
---|
90 | ..; -- check if task has been stopped
|
---|
91 | ..I $$S^%ZTLOAD S IVMARRY1("ERROR")="Queued job stopped prior to completion.",IVMARRY1("TERM")=1,IVMARRY1("LASTPAT")=DFN
|
---|
92 | ..; -- update IVM EXTRACT MANAGEMENT file
|
---|
93 | ..I $$STORE^IVMBULK2(.IVMARRY1)
|
---|
94 | ;
|
---|
95 | ;Close the last treatment date search and the outpt visit queries
|
---|
96 | F Z="LTD","OVIS" I $G(IVMQUERY(Z)) D CLOSE^SDQ(IVMQUERY(Z)) K IVMQUERY(Z)
|
---|
97 | ; close host file
|
---|
98 | D CLOSE^%ZISH("FILE1")
|
---|
99 | ;
|
---|
100 | ;
|
---|
101 | BULKQ ; set up final extract statistics
|
---|
102 | I $G(DFN)'>0 S IVMARRY1("LASTPAT")=""
|
---|
103 | S IVMARRY1("STOP")=$$NOW^XLFDT ; current date/time job stopped
|
---|
104 | S IVMARRY1("FILES")=(1+(IVMARRY1("EXTRACT")\IVMCONST("MSGMAX"))) ; # of host files
|
---|
105 | ;
|
---|
106 | ; store processing info for extract in IVM Extract Management file
|
---|
107 | I $$STORE^IVMBULK2(.IVMARRY1)
|
---|
108 | ;
|
---|
109 | ; unlock IVM EXTRACT MANAGEMENT file
|
---|
110 | D UNLOCK^IVMBULK2(1)
|
---|
111 | ;
|
---|
112 | ; kill hl7 temp array
|
---|
113 | K ^TMP("HLS",$J,HLSDT)
|
---|
114 | ;
|
---|
115 | ; Cleanup HL7/IVM vars (as defined by call to INIT^IVMUFNC)
|
---|
116 | D CLEAN^IVMUFNC
|
---|
117 | ;
|
---|
118 | Q
|
---|
119 | ;
|
---|
120 | ;
|
---|
121 | CRITERIA(DFN,IVMDT1,IVMDT2) ; --
|
---|
122 | ; Description: This function will determine if the patient meets the enrollment initial data extract selection criteria for a specific date range.
|
---|
123 | ;
|
---|
124 | ; Input:
|
---|
125 | ; DFN - pointer to patient in Patient (#2) file
|
---|
126 | ; IVMDT1 - as start date to use when looking for episodes of care
|
---|
127 | ; IVMDT2 - as end date to use when looking for episodes of care
|
---|
128 | ;
|
---|
129 | ; Output:
|
---|
130 | ; Function Value - Does patient meet the selection criteria?
|
---|
131 | ; Return 1 if successful, otherwise 0
|
---|
132 | ;
|
---|
133 | N IVMCRIT,IVMCUREN
|
---|
134 | S IVMCRIT=0
|
---|
135 | ;
|
---|
136 | ; get enrollment status from patient's current enrollment
|
---|
137 | S IVMCUREN=$$STATUS^DGENA(DFN),IVMCUREN=$G(IVMCUREN)
|
---|
138 | ; is status unverified, verified, or pending
|
---|
139 | I IVMCUREN,(IVMCUREN=1!(IVMCUREN=2)!(IVMCUREN=9)) S IVMCRIT=1 G CRITQ
|
---|
140 | ;
|
---|
141 | ; if patient is not a veteran, exit
|
---|
142 | I '$$VET^DGENPTA(DFN) G CRITQ
|
---|
143 | ;
|
---|
144 | ; is veteran a current inpatient?
|
---|
145 | I $$CURINPAT^DGENPTA(DFN) S IVMCRIT=1 G CRITQ
|
---|
146 | ;
|
---|
147 | ; was veteran an inpatient?
|
---|
148 | I $$INPAT^DGENPTA(DFN,IVMDT1,IVMDT2) S IVMCRIT=1 G CRITQ
|
---|
149 | ;
|
---|
150 | ; does veteran have a checked-out encounter (outpatient)?
|
---|
151 | I $$OUTPAT^DGENPTA(DFN,IVMDT1,IVMDT2) S IVMCRIT=1 G CRITQ
|
---|
152 | ;
|
---|
153 | CRITQ Q IVMCRIT
|
---|
154 | ;
|
---|
155 | ;
|
---|
156 | HOST(HLSDT) ; --
|
---|
157 | ; Description: Take HL7 message contained in temporary array and write to host file.
|
---|
158 | ;
|
---|
159 | ; Input:
|
---|
160 | ; IO - name of opened host file in the format to
|
---|
161 | ; to use for the 'M' USE command
|
---|
162 | ; ^TMP("HLS",$J,HLSDT) - global array containing all segments of the
|
---|
163 | ; HL7 message for a patient. The HLSDT
|
---|
164 | ; variable is a flag that indicates that data
|
---|
165 | ; is to be stored in the ^TMP("HLS") global
|
---|
166 | ; array. The IVMCT variable is a sequential
|
---|
167 | ; number starting at 0 and incremented by 1.
|
---|
168 | ;
|
---|
169 | ; Output: None
|
---|
170 | ;
|
---|
171 | N IVMSUB
|
---|
172 | ;
|
---|
173 | ; use host file
|
---|
174 | U IO
|
---|
175 | ;
|
---|
176 | ; used to delineate begining of new HL7 message
|
---|
177 | W "{",!
|
---|
178 | ;
|
---|
179 | ; write message segments to host file
|
---|
180 | S IVMSUB="" F S IVMSUB=$O(^TMP("HLS",$J,HLSDT,IVMSUB)) Q:IVMSUB'>0 D
|
---|
181 | .W $G(^TMP("HLS",$J,HLSDT,IVMSUB)),!
|
---|
182 | ;
|
---|
183 | ; used to delineate end of HL7 message
|
---|
184 | W "}",!
|
---|
185 | ;
|
---|
186 | Q
|
---|
187 | ;
|
---|
188 | ;
|
---|
189 | DOMAIL ; --
|
---|
190 | ; Description: This function will generate a MailMan message contianing the results of the enrollment data extract.
|
---|
191 | ;
|
---|
192 | ; Input: None
|
---|
193 | ;
|
---|
194 | ; Output: None
|
---|
195 | ;
|
---|
196 | K XMZ
|
---|
197 | N DIFROM,IVMCON1,IVMMSG,IVMPRCNT,IVMSITE,XMTEXT,XMSUB,XMDUZ,XMY
|
---|
198 | ;
|
---|
199 | ; init mail variables
|
---|
200 | S IVMSITE=$$SITE^VASITE
|
---|
201 | S XMSUB="Enrollment Extract Results "_"("_$P(IVMSITE,"^",3)_")"
|
---|
202 | S XMDUZ=.5,XMY(DUZ)="",XMY(.5)=""
|
---|
203 | S XMTEXT="IVMMSG("
|
---|
204 | ;
|
---|
205 | ; if error creating message text, exit
|
---|
206 | I '$$FINAL(.IVMMSG) G DOMAILQ
|
---|
207 | ;
|
---|
208 | ; get extract constants
|
---|
209 | I $$GETCONST^IVMBULK2(.IVMCON1)
|
---|
210 | ;
|
---|
211 | ; HEC mail group
|
---|
212 | I IVMARRY1("ERROR")']"" S XMY(IVMCON1("MAILGRP"))=""
|
---|
213 | ;
|
---|
214 | ; send msg
|
---|
215 | D ^XMD
|
---|
216 | ;
|
---|
217 | DOMAILQ Q
|
---|
218 | ;
|
---|
219 | ;
|
---|
220 | FINAL(IVMTXT) ; --
|
---|
221 | ; Description: Places message text into local IVMTXT array.
|
---|
222 | ;
|
---|
223 | ; Input: None
|
---|
224 | ;
|
---|
225 | ; Output:
|
---|
226 | ; Function Value - returns 1 if success, 0 if failure
|
---|
227 | ; IVMTXT - as local array containing mail message text,
|
---|
228 | ; pass by reference
|
---|
229 | ;
|
---|
230 | N SUCCESS,IVMSITE,IVMARRY2
|
---|
231 | S SUCCESS=0
|
---|
232 | ;
|
---|
233 | ; if obtaining IVM Extract Management record unsuccessful, exit
|
---|
234 | I '$$GET^IVMBULK2(.IVMARRY2) G FINALQ
|
---|
235 | ;
|
---|
236 | S IVMSITE=$$SITE^VASITE
|
---|
237 | ;
|
---|
238 | S IVMTXT(1)=" > > > > > > > > > > ENROLLMENT DATA EXTRACT RESULTS < < < < < < < < < <"
|
---|
239 | S IVMTXT(2)=""
|
---|
240 | S IVMTXT(3)=" Facility Name: "_$P(IVMSITE,"^",2)
|
---|
241 | S IVMTXT(4)=" Station Number: "_$P(IVMSITE,"^",3)
|
---|
242 | S IVMTXT(5)=""
|
---|
243 | S IVMTXT(6)=" Date/Time job started: "_$$FMTE^XLFDT(IVMARRY2("START"),"1P")
|
---|
244 | S IVMTXT(7)=" Date/Time job stopped: "_$$FMTE^XLFDT(IVMARRY2("STOP"),"1P")
|
---|
245 | S IVMTXT(8)=""
|
---|
246 | S IVMTXT(9)=" Total patients processed: "_IVMARRY2("PROC")
|
---|
247 | S IVMTXT(10)=" Total patients extracted: "_IVMARRY2("EXTRACT")
|
---|
248 | S IVMTXT(11)=" Percentage extracted: "_$S($G(IVMARRY2("PROC")):$P(IVMARRY2("EXTRACT")/IVMARRY2("PROC")*100,".")_"%",1:"")
|
---|
249 | S IVMTXT(12)=""
|
---|
250 | S IVMTXT(13)=" Host file directory: "_IVMARRY2("DIR")
|
---|
251 | S IVMTXT(14)=" Host file name: "_IVMARRY2("HOST")
|
---|
252 | S IVMTXT(15)=" Number of host files: "_IVMARRY2("FILES")
|
---|
253 | ;
|
---|
254 | ; if ERROR, set error into msg text
|
---|
255 | I IVMARRY2("ERROR")]"" D
|
---|
256 | .S IVMTXT(16)=""
|
---|
257 | .S IVMTXT(17)=" * * * * E R R O R E N C O U N T E R E D * * * *"
|
---|
258 | .S IVMTXT(18)=""
|
---|
259 | .S IVMTXT(19)=" Error Message: "_IVMARRY2("ERROR")
|
---|
260 | .S IVMTXT(20)=" Task Number: "_IVMARRY2("TASK")
|
---|
261 | ;
|
---|
262 | S SUCCESS=1
|
---|
263 | ;
|
---|
264 | FINALQ Q SUCCESS
|
---|