1 | ACKQUTL4 ;HCIOFO/BH-NEW/EDIT Visit Template Utilities for QUASAR ; 04/01/99
|
---|
2 | ;;3.0;QUASAR;**1,8,14**;Feb 11, 2000;Build 14
|
---|
3 | ;Per VHA Directive 10-93-142, this routine SHOULD NOT be modified.
|
---|
4 | ;
|
---|
5 | CHK(Y,ACKVD) ;
|
---|
6 | N ACKQQD
|
---|
7 | S ACKQQD=$P(^EC(725,Y,0),"^",3) I ACKQQD="" Q 1
|
---|
8 | I ACKVD<ACKQQD Q 1
|
---|
9 | Q 0
|
---|
10 | ; Clears passed in field # of visit rec.
|
---|
11 | CLEAR(ACKVIEN,ACKZNUM) ;
|
---|
12 | N ACKARR
|
---|
13 | S ACKARR(509850.6,ACKVIEN_",",ACKZNUM)=""
|
---|
14 | D FILE^DIE("","ACKARR","")
|
---|
15 | Q
|
---|
16 | ; Decides if patient is/was suffering from MST at the time of the visit
|
---|
17 | MST(ACKPCE,ACKVD,ACKPAT) ;
|
---|
18 | I '$$PATCH^XPDUTL("DG*5.3*308") Q 0
|
---|
19 | I ACKPCE'=1 Q 0
|
---|
20 | N ACKRET,ACKXKEEP
|
---|
21 | S ACKXKEEP=X
|
---|
22 | S ACKRET=$$GETSTAT^DGMSTAPI(ACKPAT,ACKVD)
|
---|
23 | S X=ACKXKEEP
|
---|
24 | I $P(ACKRET,"^",2)="Y" Q 1
|
---|
25 | Q 0
|
---|
26 | ;
|
---|
27 | PROB(ACKPCE,ACKDIV) ; Decides if Update PCE Problem List prompt appaers
|
---|
28 | I 'ACKPCE Q 0
|
---|
29 | I '$$GET1^DIQ(509850.83,ACKDIV_",1",".09","I") Q 0
|
---|
30 | Q 1
|
---|
31 | ;
|
---|
32 | SETUP ; Called from within the New/Edit visit template to set up parameters
|
---|
33 | ;
|
---|
34 | D ENS^%ZISS
|
---|
35 | ;
|
---|
36 | I ACKVISIT="EDIT" D
|
---|
37 | . K ACKAR
|
---|
38 | . S ACKAR(509850.6,ACKVIEN_",",.27)=""
|
---|
39 | . D FILE^DIE("K","ACKAR") K ACKAR
|
---|
40 | ;
|
---|
41 | N ACKX,ACKD0
|
---|
42 | ;
|
---|
43 | S (ICPTVDT,ICDVDT)=ACKVD
|
---|
44 | ;
|
---|
45 | S ACKPCE=$$PCE(ACKDIV,ACKVD) ; Sets PCE indicator
|
---|
46 | ;
|
---|
47 | S ACKEVENT=1
|
---|
48 | S ACKEVENT=$$EVENT^ACKQUTL5(ACKDIV,ACKVD) ; Use EC Codes or CPT
|
---|
49 | ; Indicates whether local clinic #'s are in use
|
---|
50 | S ACKCLNO=$$GET1^DIQ(509850.83,ACKDIV_",1",".04","I")
|
---|
51 | ;
|
---|
52 | ; Indicates whether the bypass flag for Audiometrics is set
|
---|
53 | S ACKBA=$$GET1^DIQ(509850.83,ACKDIV_",1",".07","I")
|
---|
54 | ;
|
---|
55 | ; Indicates whether the visit is service connected
|
---|
56 | S DFN=ACKPAT D ELIG^VADPT S ACKSC=$P(VAEL(3),U,1)
|
---|
57 | ;
|
---|
58 | ; Indicates whether the patient has any previous visits
|
---|
59 | ; with audiometric test scores
|
---|
60 | ;
|
---|
61 | S ACKATS=1
|
---|
62 | S ACKX=$O(^ACK(509850.6,"AMD",ACKPAT,0)),ACKD0=$O(^ACK(509850.6,"AMD",ACKPAT,+ACKX,0))
|
---|
63 | I 'ACKX!('$D(^ACK(509850.6,+ACKD0,0))) S ACKATS=0
|
---|
64 | ;
|
---|
65 | ;
|
---|
66 | S ACKAO=0,ACKRAD=0,ACKENV=0,ACKLOSS="",ACKLAMD=""
|
---|
67 | I ACKPCE D STATUS
|
---|
68 | S:ACKSC ACKQSER=1 S:ACKAO ACKQORG=1
|
---|
69 | S:ACKRAD ACKQIR=1 S:ACKENV ACKQECON=1
|
---|
70 | ;
|
---|
71 | D ELIG
|
---|
72 | ;
|
---|
73 | K VASV,VAEL
|
---|
74 | ;
|
---|
75 | Q
|
---|
76 | ;
|
---|
77 | PCE(ACKDIV,ACKVD) ; Sets ACKPCE to 1 if - The send to PCE flag is set
|
---|
78 | ; (for the division) and the PCE INTERFACE START DATE is before or on
|
---|
79 | ; the same day as the Visit Date and the INTERFACE WITH PCE flag for
|
---|
80 | ; the site is set to true.
|
---|
81 | N ACKOUT S ACKOUT=0
|
---|
82 | I $$GET1^DIQ(509850.8,"1,","2","I") D
|
---|
83 | . I $$GET1^DIQ(509850.83,ACKDIV_",1",".03","I"),ACKVD'<$$GET1^DIQ(509850.83,ACKDIV_",1",".08","I") S ACKOUT=1
|
---|
84 | Q ACKOUT
|
---|
85 | ;
|
---|
86 | ;-----
|
---|
87 | STATUS ; Sets Agent orange, Radiation and Environmental Contaiment indicators
|
---|
88 | ; if present.
|
---|
89 | ;
|
---|
90 | ; Agent Orange and Radiation
|
---|
91 | D SVC^VADPT S ACKAO=VASV(2),ACKRAD=VASV(3)
|
---|
92 | ;
|
---|
93 | ; Environmental Contaminents
|
---|
94 | S ACKENV=$$GET1^DIQ(2,ACKPAT,.322013,"I")
|
---|
95 | I ACKENV="Y" S ACKENV=1
|
---|
96 | S:ACKENV'="1" ACKENV=0
|
---|
97 | Q
|
---|
98 | ;-----
|
---|
99 | ;
|
---|
100 | AUDIO() ; Pass back 1 if user is valid to enter audimetric scores else 0
|
---|
101 | ;
|
---|
102 | I ACKCP=1 Q 1
|
---|
103 | I ACKLOSS,'ACKBA Q 1
|
---|
104 | Q 0
|
---|
105 | ;
|
---|
106 | ;-----
|
---|
107 | ;
|
---|
108 | ELIG ; Set up eligibiliy variables and if more than one eligibility create
|
---|
109 | ; display array used in block ELIGDISP
|
---|
110 | ;
|
---|
111 | ; If not service connected set default to primary & file in visit rec.
|
---|
112 | I $P(VAEL(3),U,1)=0 D Q
|
---|
113 | . S ACKELGCT=1,ACKELIG=$P(VAEL(1),U,2),ACKELIG1=$P(VAEL(1),U,1)
|
---|
114 | . K ACKAR S ACKAR(509850.6,ACKVIEN_",",80)=ACKELIG1
|
---|
115 | . D FILE^DIE("K","ACKAR") K ACKAR Q
|
---|
116 | ;
|
---|
117 | S ACKVELG=$$GET1^DIQ(509850.6,ACKVIEN,80,"I") I $G(ACKVELG)'="" D
|
---|
118 | . S ACKVELG=ACKVELG_"^"_$$GET1^DIQ(8,ACKVELG,.01,"I")
|
---|
119 | ;
|
---|
120 | ; Set default eligibility
|
---|
121 | S ACKELIG=$S($G(ACKVELG)'="":$P(ACKVELG,U,2),1:$P(VAEL(1),U,2))
|
---|
122 | ;
|
---|
123 | ; Set up display array
|
---|
124 | ;
|
---|
125 | K ACKELDIS S ACKELGCT=0
|
---|
126 | ;
|
---|
127 | I $G(ACKVELG)'="" S ACKELDIS($P(ACKVELG,U,1))=ACKVELG,ACKELGCT=ACKELGCT+1
|
---|
128 | S ACKELDIS($P(VAEL(1),U,1))=VAEL(1),ACKELGCT=ACKELGCT+1
|
---|
129 | ;
|
---|
130 | S ACKK2=""
|
---|
131 | F S ACKK2=$O(VAEL(1,ACKK2)) Q:ACKK2="" D
|
---|
132 | .S ACKELGCT=ACKELGCT+1
|
---|
133 | .S ACKELDIS($P(VAEL(1,ACKK2),U,1))=VAEL(1,ACKK2)
|
---|
134 | ;
|
---|
135 | ; If not already set up add NSC internal number 5
|
---|
136 | I '$D(ACKELDIS(5)) S ACKELGCT=ACKELGCT+1,ACKELDIS(5)="5^NSC"
|
---|
137 | ;
|
---|
138 | Q
|
---|
139 | ;
|
---|
140 | ELIGDIS ; Display patients eligibilities
|
---|
141 | ;
|
---|
142 | N ACKK2,RC
|
---|
143 | D ENS^%ZISS
|
---|
144 | S RC=$$PAGE^ACKQNQ(6) Q:RC<0 W:'RC !!
|
---|
145 | W IOUON,"This Patient has other Entitled Eligibilities",IOUOFF,!!
|
---|
146 | S ACKK2=""
|
---|
147 | F S ACKK2=$O(ACKELDIS(ACKK2)) Q:ACKK2="" D Q:RC<0
|
---|
148 | .Q:$P(ACKELDIS(ACKK2),U,2)=ACKELIG
|
---|
149 | .S RC=$$PAGE^ACKQNQ(2) Q:RC<0
|
---|
150 | .W:RC IOUON,"Other Entitled Eligibilities (cont'd)",IOUOFF,!!
|
---|
151 | .W ?1,$P(ACKELDIS(ACKK2),U,2)_" "
|
---|
152 | .W $$GET1^DIQ(8,ACKK2,5),!
|
---|
153 | Q
|
---|
154 | ;-----
|
---|
155 | ; Display Patient data concerning Rated Disabilities and service clas.
|
---|
156 | PATDIS ;
|
---|
157 | S DFN=ACKPAT D RATDIS^ACKQNQ
|
---|
158 | D CLASDIS^ACKQNQ
|
---|
159 | Q
|
---|
160 | ;
|
---|
161 | ACKCP() ; This initialises the C&P Paramter.
|
---|
162 | ; First check site parameteres file for C&P flag
|
---|
163 | ;
|
---|
164 | I '$$GET1^DIQ(509850.83,ACKDIV_",1",".06","I") Q 0
|
---|
165 | ;
|
---|
166 | ; Check if C&P has an open request pass back 1 or 0
|
---|
167 | S ACKQCPS=$$EN1^DVBCTRN(ACKPAT,"AUDIO")
|
---|
168 | S:ACKQCPS>0 ACKQCPS=$P(ACKQCPS,U)
|
---|
169 | I $S(ACKCSC'="A":1,$$EN1^DVBCTRN(ACKPAT,"AUDIO",ACKQCPS)<1:1,$O(^ACK(509850.6,"ALCP",ACKQCPS,0))=ACKVIEN:0,$D(^ACK(509850.6,"ALCP",ACKQCPS)):1,1:0) Q 0
|
---|
170 | Q "1^"_ACKQCPS
|
---|
171 | ;
|
---|
172 | ;-----
|
---|
173 | PROVDIS ; Get providers already filed and display
|
---|
174 | ;
|
---|
175 | N RC
|
---|
176 | D ENS^%ZISS
|
---|
177 | N ACKK1,ACKPROV,ACKK2,D0,ACKARR,ACKTGT,ACKMSG
|
---|
178 | D LIST^DIC(509850.66,","_ACKVIEN_",",".01","","*","","","","","","ACKTGT","ACKMSG")
|
---|
179 | S ACKK1=""
|
---|
180 | F S ACKK1=$O(ACKTGT("DILIST",1,ACKK1)) Q:ACKK1="" D
|
---|
181 | . S ACKARR(ACKK1)=ACKTGT("DILIST",1,ACKK1)
|
---|
182 | K ACKPROV S ACKK2=ACKVIEN_","
|
---|
183 | D GETS^DIQ(509850.6,ACKK2,"6;7","E","ACKPROV")
|
---|
184 | I '$D(ACKARR),$G(ACKPROV(509850.6,ACKK2,"6","E"))="",$G(ACKPROV(509850.6,ACKK2,"7","E"))="" Q
|
---|
185 | S RC=$$PAGE^ACKQNQ(5) Q:RC<0 W:'RC !!
|
---|
186 | W " ",IOUON,"Providers currently recorded for this visit",IOUOFF,!
|
---|
187 | I $G(ACKPROV(509850.6,ACKK2,"6","E"))'="" W !," Primary Provider - "_ACKPROV(509850.6,ACKK2,"6","E")
|
---|
188 | I $D(ACKARR)>1 S RC=0 D Q:RC<0
|
---|
189 | . S ACKK1=""
|
---|
190 | . F S ACKK1=$O(ACKARR(ACKK1)) Q:ACKK1="" D Q:RC<0
|
---|
191 | . . S RC=$$PAGE^ACKQNQ(2) Q:RC<0
|
---|
192 | . . W !," Secondary Provider - "_ACKARR(ACKK1)
|
---|
193 | D:$G(ACKPROV(509850.6,ACKK2,"7","E"))'=""
|
---|
194 | . S RC=$$PAGE^ACKQNQ(2) Q:RC<0
|
---|
195 | . W !," Student - "_ACKPROV(509850.6,ACKK2,"7","E")
|
---|
196 | W !
|
---|
197 | Q
|
---|
198 | ;
|
---|
199 | CPTDIS ; Get procedures already filed and display
|
---|
200 | ;
|
---|
201 | D ENS^%ZISS
|
---|
202 | N D0,ACKKEY,ACKCPTDS,ACKK3,ACKPIEN,ACKTMOD,ACKCODE,ACKPROC,ACKPRV
|
---|
203 | D LIST^DIC(509850.61,","_ACKVIEN_",",".01;.03;.05","I","*","","","","","","ACKCPTDS")
|
---|
204 | I '$D(ACKCPTDS("DILIST",1)) Q
|
---|
205 | W !!," ",IOUON,"Procedures currently entered for this visit",IOUOFF,!
|
---|
206 | S ACKK3=""
|
---|
207 | F S ACKK3=$O(ACKCPTDS("DILIST",1,ACKK3)) Q:ACKK3="" D
|
---|
208 | . S ACKPROC=ACKCPTDS("DILIST",1,ACKK3)
|
---|
209 | . S ACKPRV=ACKCPTDS("DILIST","ID",ACKK3,.05)
|
---|
210 | . I ACKPRV'="" S ACKPRV=$$CONVERT(ACKPRV)
|
---|
211 | . W !," Code: ",$$GET1^DIQ(509850.4,ACKPROC_",",.01),?19,"Volume: ",ACKCPTDS("DILIST","ID",ACKK3,.03) I ACKPRV'="" W " Provider : ",ACKPRV
|
---|
212 | . D LONG^ACKQUTL6(ACKPROC,"1")
|
---|
213 | . W !
|
---|
214 | . ; Check if any Modifiers present for this Procedure
|
---|
215 | . S ACKPIEN="" I $D(ACKCODE(ACKPROC)) S ACKPIEN=$O(ACKCODE(ACKPROC,""),-1)
|
---|
216 | . S ACKPIEN=$O(^ACK(509850.6,ACKVIEN,3,"B",ACKPROC,ACKPIEN))
|
---|
217 | . I ACKPIEN="" W ! Q
|
---|
218 | . S ACKCODE(ACKPROC,ACKPIEN)=""
|
---|
219 | . ; Modifier level present do a LIST to get them
|
---|
220 | . S ACKPIEN=ACKPIEN_","_ACKVIEN
|
---|
221 | . D LIST^DIC(509850.64,","_ACKPIEN_",",".01","I","*","","","","","","ACKTMOD")
|
---|
222 | . I $D(ACKTMOD("DILIST",1)) D
|
---|
223 | . . W " Modifiers:"
|
---|
224 | . . ; Loop through Modifier Array
|
---|
225 | . . S ACKKEY=""
|
---|
226 | . . F S ACKKEY=$O(ACKTMOD("DILIST",1,ACKKEY)) Q:ACKKEY="" D
|
---|
227 | . . . W ?19,$$MODTXT^ACKQUTL8(ACKTMOD("DILIST",1,ACKKEY),ACKVD),!
|
---|
228 | . . K ACKTMOD
|
---|
229 | W !
|
---|
230 | Q
|
---|
231 | ;
|
---|
232 | DIAGDIS ; Get diagnoses already filed and display
|
---|
233 | D ENS^%ZISS
|
---|
234 | N ACK1,D0,ACKDIAGD,ACKK3,ACKK4,ACKI,ACKD,RC
|
---|
235 | D LIST^DIC(509850.63,","_ACKVIEN_",",".01;.12","I","*","","","","","","ACKDIAGD")
|
---|
236 | I '$D(ACKDIAGD("DILIST",1)) Q
|
---|
237 | S RC=$$PAGE^ACKQNQ(5) Q:RC<0 W:'RC !!
|
---|
238 | W " ",IOUON,"Diagnoses currently entered for this visit:",IOUOFF,!
|
---|
239 | S ACKK3="",ACKSP=" "
|
---|
240 | F S ACKK3=$O(ACKDIAGD("DILIST",1,ACKK3)) Q:ACKK3="" D
|
---|
241 | . S ACKK4=ACKDIAGD("DILIST",1,ACKK3)
|
---|
242 | . S ACKI=$$GET1^DIQ(80,ACKK4,.01)
|
---|
243 | . S ACKD($S(ACKI?.NP:+ACKI,1:ACKI))=ACKI_$E(" ",1,7-$L(ACKI))_"- "_$E($$DIAGTXT^ACKQUTL8(ACKK4,ACKVD)_ACKSP,1,35)_$S($G(ACKDIAGD("DILIST","ID",ACKK3,".12"))=1:" * Primary Diagnosis *",1:" * Secondary Diagnosis *")
|
---|
244 | ;
|
---|
245 | S ACK1=""
|
---|
246 | F S ACK1=$O(ACKD(ACK1)) Q:ACK1="" D
|
---|
247 | . S RC=$$PAGE^ACKQNQ(3) Q:RC<0
|
---|
248 | . W:RC IOUON,"Diagnoses currently entered for this visit (cont'd)",IOUOFF,!
|
---|
249 | . W !," ",ACKD(ACK1)
|
---|
250 | W !
|
---|
251 | Q
|
---|
252 | ;
|
---|
253 | ;
|
---|
254 | HLOSS ; Sets hearing loss variable if one or more diagnosis are for hearing
|
---|
255 | ; loss
|
---|
256 | ;
|
---|
257 | N ACKK4,ACKDIAG
|
---|
258 | S (ACKLOSS,ACKK4)=0
|
---|
259 | F S ACKK4=$O(^ACK(509850.6,ACKVIEN,1,ACKK4)) Q:ACKK4'?1.N!(ACKLOSS) D
|
---|
260 | .S ACKDIAG=$P(^ACK(509850.6,ACKVIEN,1,ACKK4,0),U,1)
|
---|
261 | .I $P(^ACK(509850.1,ACKDIAG,0),U,5)=1 S ACKLOSS=1 Q
|
---|
262 | Q
|
---|
263 | ;
|
---|
264 | MODDIS ; Display Modifiers - Called within Executable Help of Modiifer
|
---|
265 | ; Enter Edit.
|
---|
266 | S ACK1="0"
|
---|
267 | F S ACK1=$O(^ACK(509850.5,ACK1)) Q:'+ACK1 D
|
---|
268 | . W !," "_$$GET1^DIQ(81.3,ACK1,.01),?5,$$MODTXT^ACKQUTL8(ACK1,""),?53,$$GET1^DIQ(81.3,ACK1,.04)
|
---|
269 | W ! Q
|
---|
270 | ;
|
---|
271 | CONVERT(ACKPRV) ; Converts the QSR Prov Code into a name string from file 200.
|
---|
272 | ;
|
---|
273 | N ACKPRV1,ACKPRV2
|
---|
274 | S ACKPRV1=$P(^ACK(509850.3,ACKPRV,0),U,1)
|
---|
275 | S ACKPRV2=$P(^USR(8930.3,ACKPRV1,0),U,1)
|
---|
276 | Q $$GET1^DIQ(200,ACKPRV2_",",.01)
|
---|
277 | ;
|
---|
278 | CONVERT1(ACKPRV) ; Converts the Provider IEN number used within Quasar
|
---|
279 | ; to its equivalent code used on the 200 file.
|
---|
280 | N ACKPRV1
|
---|
281 | S ACKPRV1=$P(^ACK(509850.3,ACKPRV,0),U,1)
|
---|
282 | Q $P(^USR(8930.3,ACKPRV1,0),U,1)
|
---|
283 | ;
|
---|
284 | CONVERT2(ACKPRV) ; Converts the Provider IEN number used within Quasar
|
---|
285 | ; to its equivalent code used on the 200 file.
|
---|
286 | N ACKPRV1
|
---|
287 | S ACKPRV1=$P(^ACK(509850.3,ACKPRV,0),U,1)
|
---|
288 | Q $P($G(^USR(8930.3,ACKPRV1,0)),U,1)
|
---|