[613] | 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)
|
---|