1 | DGQEUT1 ;ALB/RPM - VIC REPLACEMENT UTILITIES #1 ; 10/03/05
|
---|
2 | ;;5.3;Registration;**571,679,732**;Aug 13, 1993;Build 2
|
---|
3 | ;
|
---|
4 | ; This routine contains the following VIC Redesign API's:
|
---|
5 | ; INITARR - initialize data array
|
---|
6 | ; $$GETPAT - build Patient data array
|
---|
7 | ; $$GETELIG - build Patient Eligibility data array
|
---|
8 | ; $$GETPH - determine Purple Heart status
|
---|
9 | ; $$GETPOW - determine Prisoner of War status
|
---|
10 | ; $$FNDPOW - search for Prisoner of War eligibility code
|
---|
11 | ; $$ISENRPND - is enrollment status pending
|
---|
12 | ;
|
---|
13 | Q ;no direct entry
|
---|
14 | ;
|
---|
15 | INITARR(DGVIC) ;Procedure used to initialize VIC data array nodes.
|
---|
16 | ;
|
---|
17 | ; Input:
|
---|
18 | ; none
|
---|
19 | ;
|
---|
20 | ; Output:
|
---|
21 | ; DGVIC - array of VIC data (pass by reference)
|
---|
22 | ;
|
---|
23 | N DGSUB ;array subscript
|
---|
24 | ;
|
---|
25 | ;init patient identifier nodes
|
---|
26 | S DGVIC("DFN")=""
|
---|
27 | F DGSUB="NAME","SSN","DOB","LAST","FIRST","MIDDLE","SUFFIX","PREFIX" D
|
---|
28 | . S DGVIC(DGSUB)=""
|
---|
29 | ;
|
---|
30 | ;init address nodes
|
---|
31 | F DGSUB="STREET1","STREET2","STREET3","CITY","STATE","ZIP","ADRTYPE" D
|
---|
32 | . S DGVIC(DGSUB)=""
|
---|
33 | ;
|
---|
34 | ;init vic eligibility nodes
|
---|
35 | F DGSUB="SC","ENRSTAT","ELIGSTAT","MST","COMBVET","POW","PH" D
|
---|
36 | . S DGVIC(DGSUB)=""
|
---|
37 | ;
|
---|
38 | ;init facility nodes
|
---|
39 | F DGSUB="FACNUM","FACNAME","VISN" D
|
---|
40 | . S DGVIC(DGSUB)=""
|
---|
41 | ;
|
---|
42 | ;init card print release status node
|
---|
43 | S DGVIC("STAT")=""
|
---|
44 | ;
|
---|
45 | ;init document type node
|
---|
46 | S DGVIC("DOCTYPE")="VIC"
|
---|
47 | ;
|
---|
48 | Q
|
---|
49 | ;
|
---|
50 | ;
|
---|
51 | GETPAT(DGDFN,DGPAT) ;build Patient object
|
---|
52 | ; This function retrieves patient demographic data needed to produce
|
---|
53 | ; a Veteran ID Card and returns the data in an array format.
|
---|
54 | ;
|
---|
55 | ; Supported Reference:
|
---|
56 | ; DBIA #10103: $$FMTE^XLFDT
|
---|
57 | ;
|
---|
58 | ; Input:
|
---|
59 | ; DGDFN - (required) pointer to patient in PATIENT (#2) file
|
---|
60 | ;
|
---|
61 | ; Output:
|
---|
62 | ; Function value - returns 1 on success, 0 on failure
|
---|
63 | ; DGPAT - array of patient demographics, pass by reference
|
---|
64 | ; Array subscripts are:
|
---|
65 | ; "DFN" - Pointer to patient in PATIENT (#2) file
|
---|
66 | ; "NAME" - Patient Full Name
|
---|
67 | ; "SSN" - Social Security Number
|
---|
68 | ; "DOB" - Date of Birth (mmddyyyy)
|
---|
69 | ; "LAST" - Family Name from name components
|
---|
70 | ; "FIRST" - Given Name from name components
|
---|
71 | ; "MIDDLE" - Middle Name from name components
|
---|
72 | ; "SUFFIX" - Suffix from name components
|
---|
73 | ; "PREFIX" - Prefix from name components
|
---|
74 | ; "STREET1" - Line 1 of mailing address
|
---|
75 | ; "STREET2" - Line 2 of mailing address
|
---|
76 | ; "STREET3" - Line 3 of mailing address
|
---|
77 | ; "CITY" - Mailing address city
|
---|
78 | ; "STATE" - Mailing address state
|
---|
79 | ; "ZIP" - Mailing address ZIP code
|
---|
80 | ; "ADRTYPE" - Mailing address type
|
---|
81 | ; [0:unable to determine,1:permanent,
|
---|
82 | ; 2:temporary,3:confidential,4:facility]
|
---|
83 | ; "ICN" - Integration Control Number
|
---|
84 | ; "FACNUM" - Local Station number
|
---|
85 | ; "FACNAME" - Local Facility name
|
---|
86 | ; "VISN" - Local Facility's VISN
|
---|
87 | ;
|
---|
88 | N DGRSLT
|
---|
89 | ;
|
---|
90 | S DGRSLT=0
|
---|
91 | ;
|
---|
92 | I $G(DGDFN)>0,$D(^DPT(DGDFN,0)) D ;drop out of block on first failure
|
---|
93 | . ;
|
---|
94 | . ;get name, ssn, dob, dfn
|
---|
95 | . Q:'$$GETIDS^DGQEDEMO(DGDFN,.DGPAT)
|
---|
96 | . ;
|
---|
97 | . ;format Date of Birth to mmddyyyy
|
---|
98 | . S DGPAT("DOB")=$TR($$FMTE^XLFDT(DGPAT("DOB"),"5Z"),"/","")
|
---|
99 | . ;
|
---|
100 | . ;get name components
|
---|
101 | . Q:'$$GETNAMC^DGQEDEMO(DGDFN,.DGPAT)
|
---|
102 | . ;
|
---|
103 | . ;get mailing address
|
---|
104 | . Q:'$$GETADDR^DGQEDEMO(DGDFN,.DGPAT)
|
---|
105 | . ;
|
---|
106 | . ;get national ICN
|
---|
107 | . S DGPAT("ICN")=$$GETICN^DGQEDEMO(DGDFN)
|
---|
108 | . ;
|
---|
109 | . ;get facility info
|
---|
110 | . D GETSITE^DGQEDEMO(.DGPAT)
|
---|
111 | . ;
|
---|
112 | . ;success
|
---|
113 | . S DGRSLT=1
|
---|
114 | ;
|
---|
115 | Q DGRSLT
|
---|
116 | ;
|
---|
117 | GETELIG(DGDFN,DGELG) ;build Patient Eligibility object
|
---|
118 | ; This function retrieves patient data needed to determine the
|
---|
119 | ; patient's VIC eligibility and returns the data in an array format.
|
---|
120 | ;
|
---|
121 | ; Supported References:
|
---|
122 | ; DBIA #10061: ELIG^VADPT
|
---|
123 | ; DBIA #2716: $$GETSTAT^DGMSTAPI
|
---|
124 | ; DBIA #4156: $$CVEDT^DGCV
|
---|
125 | ;
|
---|
126 | ; Input:
|
---|
127 | ; DGDFN - (required) pointer to patient in PATIENT (#2) file
|
---|
128 | ;
|
---|
129 | ; Output:
|
---|
130 | ; Function value - returns 1 on success, 0 on failure
|
---|
131 | ; DGELG - array of eligibility indicators, pass by reference
|
---|
132 | ; Array subscripts are:
|
---|
133 | ; "SC" - Service Connected indicator
|
---|
134 | ; "ENRSTAT" - Enrollment Status
|
---|
135 | ; "ELIGSTAT" - Eligibility Status
|
---|
136 | ; "MST" - Military Sexual Trauma Status
|
---|
137 | ; "COMBVET" - Combat Veteran Status
|
---|
138 | ; "POW" - Prisoner of War Indicator
|
---|
139 | ; "PH" - Purple Heart Indicator
|
---|
140 | ;
|
---|
141 | N DFN ;input parameter to ELIG^VADPT
|
---|
142 | N DGRSLT ;function value
|
---|
143 | N VAEL ;VADPT return array
|
---|
144 | N VAERR ;VADPT error value
|
---|
145 | ;
|
---|
146 | S DGRSLT=0
|
---|
147 | ;
|
---|
148 | I $G(DGDFN)>0,$D(^DPT(DGDFN,0)) D
|
---|
149 | . ;
|
---|
150 | . ;get Eligibility Status and Service Connection
|
---|
151 | . S DFN=DGDFN
|
---|
152 | . D ELIG^VADPT
|
---|
153 | . S DGELG("ELIGSTAT")=$P($G(VAEL(8)),U)
|
---|
154 | . S DGELG("SC")=+$G(VAEL(3))
|
---|
155 | . ;
|
---|
156 | . ;get current Enrollment Status
|
---|
157 | . S DGELG("ENRSTAT")=$$STATUS^DGENA(DGDFN)
|
---|
158 | . ;
|
---|
159 | . ;get MST Status
|
---|
160 | . S DGELG("MST")=$P($$GETSTAT^DGMSTAPI(DGDFN),U,2)
|
---|
161 | . ;
|
---|
162 | . ;get Combat Veteran Status
|
---|
163 | . S DGELG("COMBVET")=+$$CVEDT^DGCV(DGDFN)
|
---|
164 | . ;
|
---|
165 | . ;get Purple Heart Indicator
|
---|
166 | . S DGELG("PH")=$$GETPH(DGDFN)
|
---|
167 | . ;
|
---|
168 | . ;get POW indicator
|
---|
169 | . S DGELG("POW")=$S($$ISENRPND(DGELG("ENRSTAT")):"P",1:$$FNDPOW(.VAEL))
|
---|
170 | . ;
|
---|
171 | . ;success
|
---|
172 | . S DGRSLT=1
|
---|
173 | ;
|
---|
174 | Q DGRSLT
|
---|
175 | ;
|
---|
176 | GETPH(DGDFN) ;get purple heart indicator
|
---|
177 | ;This function retrieves the Current PH Indicator and Current PH
|
---|
178 | ;Status and returns a single interpretation value.
|
---|
179 | ;
|
---|
180 | ; Supported References:
|
---|
181 | ; DBIA #10061: SVC^VADPT
|
---|
182 | ;
|
---|
183 | ; Input:
|
---|
184 | ; DGDFN - pointer to patient in PATIENT (#2) file
|
---|
185 | ;
|
---|
186 | ; Output:
|
---|
187 | ; Function value - returns "Y" to print indicator on VIC; "N" to
|
---|
188 | ; not print indicator on VIC; "P" to hold request
|
---|
189 | ; until confirmation; "" when Registration interview
|
---|
190 | ; question is unanswered.
|
---|
191 | ;
|
---|
192 | N DFN ;input parameter to SVC^VADPT
|
---|
193 | N DGPHIND ;current purple heart indicator
|
---|
194 | N DGPHSTAT ;current purple heart status
|
---|
195 | N DGRSLT ;function value
|
---|
196 | N VAERR ;VADPT error value
|
---|
197 | N VASV ;VADPT return array
|
---|
198 | ;
|
---|
199 | S DGRSLT=""
|
---|
200 | ;
|
---|
201 | I $G(DGDFN)>0,$D(^DPT(DGDFN)) D
|
---|
202 | . ;
|
---|
203 | . ;get purple heart indicator and status
|
---|
204 | . S DFN=DGDFN
|
---|
205 | . D SVC^VADPT
|
---|
206 | . S DGPHIND=$G(VASV(9))
|
---|
207 | . S DGPHSTAT=$P($G(VASV(9,1)),U,2)
|
---|
208 | . ;
|
---|
209 | . ;interpret status
|
---|
210 | . I DGPHIND=1 S DGRSLT=$S(DGPHSTAT="CONFIRMED":"Y",1:"P")
|
---|
211 | . I DGPHIND=0 S DGRSLT="N"
|
---|
212 | ;
|
---|
213 | Q DGRSLT
|
---|
214 | ;
|
---|
215 | GETPOW(DGDFN) ;get POW indicator
|
---|
216 | ;This function retrieves the eligibility codes for a given patient and
|
---|
217 | ;returns the POW indicator.
|
---|
218 | ;
|
---|
219 | ; Supported References:
|
---|
220 | ; DBIA #10061: ELIG^VADPT
|
---|
221 | ;
|
---|
222 | ; Input:
|
---|
223 | ; DGDFN - pointer to patient in PATIENT (#2) file
|
---|
224 | ;
|
---|
225 | ; Output:
|
---|
226 | ; Function value - returns results from call to $$FNDPOW
|
---|
227 | ;
|
---|
228 | N DFN
|
---|
229 | N VAEL ;VADPT result array
|
---|
230 | N VAERR ;VADPT error message
|
---|
231 | ;
|
---|
232 | S DFN=$G(DGDFN)
|
---|
233 | D ELIG^VADPT
|
---|
234 | ;
|
---|
235 | Q $$FNDPOW(.VAEL)
|
---|
236 | ;
|
---|
237 | FNDPOW(DGEL) ;find POW eligibility code
|
---|
238 | ;This function searches a list of eligibility codes for PRISONER OF
|
---|
239 | ;WAR and returns the boolean result.
|
---|
240 | ;
|
---|
241 | ; Input:
|
---|
242 | ; DGEL - result array from call to ELIG^VADPT
|
---|
243 | ;
|
---|
244 | ; Output:
|
---|
245 | ; Function value - returns "Y" when PRISONER OF WAR found;
|
---|
246 | ; otherwise "N"
|
---|
247 | ;
|
---|
248 | N DGEC ;eligibility code number
|
---|
249 | N DGRSLT ;function value
|
---|
250 | ;
|
---|
251 | S DGRSLT="N"
|
---|
252 | ;
|
---|
253 | ;Check primary eligibility code
|
---|
254 | I $P($G(DGEL(1)),U,2)="PRISONER OF WAR" Q "Y"
|
---|
255 | ;
|
---|
256 | S DGEC=0
|
---|
257 | F S DGEC=$O(DGEL(1,DGEC)) Q:'DGEC D Q:DGRSLT="Y"
|
---|
258 | . I $P(DGEL(1,DGEC),U,2)="PRISONER OF WAR" S DGRSLT="Y"
|
---|
259 | ;
|
---|
260 | Q DGRSLT
|
---|
261 | ;
|
---|
262 | ISENRPND(DGST) ;is veteran's enrollment status pending?
|
---|
263 | ;
|
---|
264 | ; Input:
|
---|
265 | ; DGST - pointer to enrollment status in ENROLLMENT STATUS (#27.15)
|
---|
266 | ; file.
|
---|
267 | ;
|
---|
268 | ; Output:
|
---|
269 | ; Function value - returns 1 when status is pending; otherwise 0
|
---|
270 | ;
|
---|
271 | S DGST=+$G(DGST)
|
---|
272 | Q $S('DGST:1,DGST=1:1,DGST=15:1,DGST=16:1,DGST=17:1,DGST=18:1,1:0)
|
---|