| 1 | PXRMXX ; SLC/PJH - Extract Patient sample;07/29/2004
 | 
|---|
| 2 |  ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Update ^TMP - all patients with encounters
 | 
|---|
| 5 |  ;------------------------------------------
 | 
|---|
| 6 | TMP S ^TMP(NODE,$J,"TEMP",DFN)="" Q
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ;Save individual encounter into FIND1
 | 
|---|
| 9 |  ;------------------------------------
 | 
|---|
| 10 | SAV S FCNT=FCNT+1,FOUND=1 M FIND1(FCNT)=FIND(ENC) Q
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  ;Check if finding is in date range
 | 
|---|
| 13 |  ;---------------------------------
 | 
|---|
| 14 | DCHK(DNODE) ;
 | 
|---|
| 15 |  N DATE,LTERM,LTRAN,TNAM,SNUM,TERMNAM,TERMNAT
 | 
|---|
| 16 |  S DATE=$G(FIND(ENC,DNODE)) Q:DATE=""
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  I (DATE<BD)!(DATE>ED) Q
 | 
|---|
| 19 |  ;Lab transforms
 | 
|---|
| 20 |  I REM(PXRMITEM)="VA-NATIONAL EPI LAB EXTRACT" D  Q:LTRAN
 | 
|---|
| 21 |  .S LTRAN=0 D:$P(FIND(ENC,"FINDING"),";",2)="LAB(60," LTRAN
 | 
|---|
| 22 |  ;National DB term mapping
 | 
|---|
| 23 |  S TERMNAM=$P($G(FIND(ENC,"TERM")),U)
 | 
|---|
| 24 |  ;If term exists check if it needs re-mapping for this reminder
 | 
|---|
| 25 |  I TERMNAM]"" D
 | 
|---|
| 26 |  .;Get the alternate name from the REM array
 | 
|---|
| 27 |  .S TERMNAT=$G(REM(PXRMITEM,TERMNAM)) Q:TERMNAT=""
 | 
|---|
| 28 |  .;National database code
 | 
|---|
| 29 |  .S FIND(ENC,"ALTTRM")=TERMNAT
 | 
|---|
| 30 |  ;Set source number code
 | 
|---|
| 31 |  S SNUM=""
 | 
|---|
| 32 |  I $G(FIND(ENC,"FILE NUMBER"))=9000011 S SNUM=1
 | 
|---|
| 33 |  I $G(FIND(ENC,"FILE NUMBER"))=9000010.07 S SNUM=2
 | 
|---|
| 34 |  I $G(FIND(ENC,"FILE NUMBER"))=45 S SNUM=3
 | 
|---|
| 35 |  S FIND(ENC,"S/N")=SNUM
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  ;Save encounter
 | 
|---|
| 38 |  D SAV
 | 
|---|
| 39 |  Q
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ;Check for findings
 | 
|---|
| 42 |  ;------------------
 | 
|---|
| 43 | FCHEK(PXRMITEM) ;
 | 
|---|
| 44 |  N ECNT,EDATE,ENC,LDONE,FOUND
 | 
|---|
| 45 |  ;Get reminder name
 | 
|---|
| 46 |  S PXRMNAM=$P($G(^PXD(811.9,PXRMITEM,0)),U)
 | 
|---|
| 47 |  ;Check each encounter
 | 
|---|
| 48 |  S ENC=0,ECNT=0,FOUND=0,LDONE=0
 | 
|---|
| 49 |  F  S ENC=$O(FIND(ENC)) Q:'ENC  D
 | 
|---|
| 50 |  .;Ignore medications - these are loaded from pharmacy
 | 
|---|
| 51 |  .I $D(FIND(ENC,"DRUG")) Q
 | 
|---|
| 52 |  .;Check if finding is in date range
 | 
|---|
| 53 |  .I $D(FIND(ENC,"FINDING")) D DCHK("DATE")
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  ;Update ^TMP - all patients with findings
 | 
|---|
| 58 |  ;----------------------------------------
 | 
|---|
| 59 | FSAVE N CNT,FIEN,FCNT,FUNIQ,FREC
 | 
|---|
| 60 |  N VDATA,VDATE,VFOUND,VLAST,VIEN,VLTYP,VOK,VSERV,VTYP
 | 
|---|
| 61 |  ;Extract the visit date and type from visit record
 | 
|---|
| 62 |  S CNT=0,FUNIQ=0,VLAST=0,VFOUND=0,VLTYP=""
 | 
|---|
| 63 |  F  S CNT=$O(FIND1(CNT)) Q:'CNT  D
 | 
|---|
| 64 |  .S VOK=0
 | 
|---|
| 65 |  .I $D(FIND1(CNT,"VIEN")) D
 | 
|---|
| 66 |  ..S VIEN=$G(FIND1(CNT,"VIEN")) Q:'VIEN
 | 
|---|
| 67 |  ..S VDATA=$G(^AUPNVSIT(VIEN,0)) Q:VDATA=""
 | 
|---|
| 68 |  ..;Get visit date and service from visit record
 | 
|---|
| 69 |  ..S VDATE=$P(VDATA,U),VSERV=$P(VDATA,U,7),VFOUND=1,VOK=1,VTYP="O"
 | 
|---|
| 70 |  ..;Calculate visit type from sevice
 | 
|---|
| 71 |  ..I (VSERV="D")!(VSERV="H")!(VSERV="I") S VTYP="I"
 | 
|---|
| 72 |  .;If no visit info default to finding date
 | 
|---|
| 73 |  .I 'VOK S VDATE=$G(FIND1(CNT,"DATE")),VTYP="O" D
 | 
|---|
| 74 |  ..N VAIN,VAINDT S VAINDT=VDATE D INP^VADPT
 | 
|---|
| 75 |  ..I $G(VAIN(7))'="" S VTYP="I"
 | 
|---|
| 76 |  .;Save encounter/finding date and type
 | 
|---|
| 77 |  .S FIND1(CNT)=VDATE_U_VTYP
 | 
|---|
| 78 |  .;Save count by finding for report
 | 
|---|
| 79 |  .S FIEN=$G(FIND1(CNT,"FINDING")) I FIEN="" S FIEN="NO FINDING"
 | 
|---|
| 80 |  .S FREC=$G(PXRMFIEN(FIEN)),FCNT=$P(FREC,U),FUNIQ=$P(FREC,U,2)
 | 
|---|
| 81 |  .S FCNT=FCNT+1 I '$G(FUNIQ(FIEN)) S FUNIQ=FUNIQ+1
 | 
|---|
| 82 |  .S PXRMFIEN(FIEN)=FCNT_U_FUNIQ,FUNIQ(FIEN)=1
 | 
|---|
| 83 |  .;Save most recent
 | 
|---|
| 84 |  .I VDATE>VLAST S VLAST=VDATE,VLTYP=VTYP
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  ;Save patient
 | 
|---|
| 87 |  S ^TMP(NODE,$J,DFN)=VLAST_U_VLTYP
 | 
|---|
| 88 |  ;Save findings
 | 
|---|
| 89 |  M ^TMP(NODE,$J,DFN,"FIND")=FIND1
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  ;Check each patient for findings
 | 
|---|
| 94 |  ;-------------------------------
 | 
|---|
| 95 | FIND N BD,DFN,ED,LAB,LABN,PXRMITEM,PXRMNAM,OR,REM,SAVE,SEARCH
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  ;Build array of reminders and terms to be re-mapped
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  ;This requires that LAB(69.51) is created to include a list of IEN's
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  S PXRMITEM=0
 | 
|---|
| 102 |  F  S PXRMITEM=$O(^LAB(69.51,"B",PXRMITEM)) Q:'PXRMITEM  D
 | 
|---|
| 103 |  .S PXRMNAM=$P($G(^PXD(811.9,PXRMITEM,0)),U)
 | 
|---|
| 104 |  .I PXRMNAM'="VA-NATIONAL EPI RX EXTRACT" S REM(PXRMITEM)=PXRMNAM
 | 
|---|
| 105 |  .;Get finding list for these reminders and medication list
 | 
|---|
| 106 |  .D REM^PXRMXX1(PXRMITEM,.SEARCH,.LAB)
 | 
|---|
| 107 |  .;Hep A,B,C lab tests
 | 
|---|
| 108 |  .S LABN("HEP C VIRUS ANTIBODY POSITIVE")=""
 | 
|---|
| 109 |  .S LABN("HEP C VIRUS ANTIBODY NEGATIVE")=""
 | 
|---|
| 110 |  .S LABN("HAV Ab positive")=""
 | 
|---|
| 111 |  .S LABN("HAV IgM Ab positive")=""
 | 
|---|
| 112 |  .S LABN("HAV IgG positive")=""
 | 
|---|
| 113 |  .S LABN("HBs Ab positive")=""
 | 
|---|
| 114 |  .S LABN("HBs Ag positive")=""
 | 
|---|
| 115 |  .S LABN("HBc Ab IgM positive")=""
 | 
|---|
| 116 |  .S LABN("HBe Ag positive")=""
 | 
|---|
| 117 |  .;NDB Transformations
 | 
|---|
| 118 |  .I PXRMNAM="VA-HEP C RISK ASSESSMENT" D
 | 
|---|
| 119 |  ..S REM(PXRMITEM,"VA-DECLINED HEP C RISK ASSESSMENT")=1
 | 
|---|
| 120 |  ..S REM(PXRMITEM,"VA-NO RISK FACTORS FOR HEP C")=2
 | 
|---|
| 121 |  ..S REM(PXRMITEM,"VA-PREVIOUSLY ASSESSED HEP C RISK")=3
 | 
|---|
| 122 |  ..S REM(PXRMITEM,"VA-RISK FACTOR FOR HEPATITIS C")=4
 | 
|---|
| 123 |  ..S REM(PXRMITEM,"VA-HEP C VIRUS ANTIBODY POSITIVE")=5
 | 
|---|
| 124 |  ..S REM(PXRMITEM,"VA-HEP C VIRUS ANTIBODY NEGATIVE")=6
 | 
|---|
| 125 |  ..S REM(PXRMITEM,"VA-HEPATITIS C INFECTION")=7
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 |  ;Build pharmacy codes list
 | 
|---|
| 128 |  F FTYPE="PSNDF(50.6,","PSDRUG(","PS(50.605," D
 | 
|---|
| 129 |  .S FIEN=""
 | 
|---|
| 130 |  .F  S FIEN=$O(SEARCH(FTYPE,FIEN)) Q:'FIEN  D
 | 
|---|
| 131 |  ..S OR(FIEN_";"_FTYPE)=""
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 |  ;Search for pharmacy outpatients
 | 
|---|
| 134 |  I $O(OR(""))]"" D EN^PSOORAPI(PXRMBDT,PXRMEDT,.OR,"F","PXRMPSO"_NODE)
 | 
|---|
| 135 |  ;
 | 
|---|
| 136 |  ;Search for pharmacy inpatients
 | 
|---|
| 137 |  I $O(OR(""))]"" D EN^PSJORAPI(PXRMBDT,PXRMEDT,.OR,"","PXRMPSI"_NODE)
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  ;Build Lab codes list
 | 
|---|
| 140 |  S FTYPE="LAB(60,",FIEN="" K OR
 | 
|---|
| 141 |  F  S FIEN=$O(SEARCH(FTYPE,FIEN)) Q:'FIEN  D
 | 
|---|
| 142 |  .S OR(FIEN)=""
 | 
|---|
| 143 |  ;
 | 
|---|
| 144 |  ;Search for lab patients
 | 
|---|
| 145 |  I $O(OR(""))]"" D LAB^PXRMXX2(PXRMBDT,PXRMEDT,.OR,NODE)
 | 
|---|
| 146 |  ;
 | 
|---|
| 147 |  ;Build Health Factors list
 | 
|---|
| 148 |  S FTYPE="AUTTHF(",FIEN="" K OR
 | 
|---|
| 149 |  F  S FIEN=$O(SEARCH(FTYPE,FIEN)) Q:'FIEN  D
 | 
|---|
| 150 |  .S OR(FIEN)=""
 | 
|---|
| 151 |  ;
 | 
|---|
| 152 |  ;Search for HF patients
 | 
|---|
| 153 |  I $O(OR(""))]"" D HF^PXRMXX2(PXRMBDT,PXRMEDT,.OR,NODE)
 | 
|---|
| 154 |  ;
 | 
|---|
| 155 |  ;Build Patient Education list
 | 
|---|
| 156 |  S FTYPE="AUTTEDT(",FIEN="" K OR
 | 
|---|
| 157 |  F  S FIEN=$O(SEARCH(FTYPE,FIEN)) Q:'FIEN  D
 | 
|---|
| 158 |  .S OR(FIEN)=""
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 |  ;Search for PED patients
 | 
|---|
| 161 |  I $O(OR(""))]"" D PED^PXRMXX2(PXRMBDT,PXRMEDT,.OR,NODE)
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 |  ;Build Examination list
 | 
|---|
| 164 |  S FTYPE="AUTTEXAM(",FIEN="" K OR
 | 
|---|
| 165 |  F  S FIEN=$O(SEARCH(FTYPE,FIEN)) Q:'FIEN  D
 | 
|---|
| 166 |  .S OR(FIEN)=""
 | 
|---|
| 167 |  ;
 | 
|---|
| 168 |  ;Search for Exam patients
 | 
|---|
| 169 |  I $O(OR(""))]"" D EXAM^PXRMXX2(PXRMBDT,PXRMEDT,.OR,NODE)
 | 
|---|
| 170 |  ;
 | 
|---|
| 171 |  ;Build POV codes list
 | 
|---|
| 172 |  S FTYPE="ICD9(",FIEN="" K OR
 | 
|---|
| 173 |  F  S FIEN=$O(SEARCH(FTYPE,FIEN)) Q:'FIEN  D
 | 
|---|
| 174 |  .S OR(FIEN)="",^TMP("PXRMPOV"_NODE,$J,FIEN)=""
 | 
|---|
| 175 |  ;
 | 
|---|
| 176 |  ;Search for POV patients
 | 
|---|
| 177 |  I $O(OR(""))]"" D POV^PXRMXX2(PXRMBDT,PXRMEDT,"PXRMPOV"_NODE,NODE)
 | 
|---|
| 178 |  ;
 | 
|---|
| 179 |  S BD=PXRMBDT-.0001,ED=PXRMEDT+.2359,DFN=""
 | 
|---|
| 180 |  F  S DFN=$O(^TMP(NODE,$J,"TEMP",DFN)) Q:'DFN  Q:TSTOP=1  D
 | 
|---|
| 181 |  .;Check if stop task requested
 | 
|---|
| 182 |  .I $$S^%ZTLOAD S TSTOP=1 Q
 | 
|---|
| 183 |  .;Update total patient count for report
 | 
|---|
| 184 |  .S PXRMCNT=PXRMCNT+1
 | 
|---|
| 185 |  .N FIND1,FCNT
 | 
|---|
| 186 |  .;Process reminders
 | 
|---|
| 187 |  .S PXRMITEM=0,FCNT=0
 | 
|---|
| 188 |  .F  S PXRMITEM=$O(REM(PXRMITEM)) Q:'PXRMITEM  D
 | 
|---|
| 189 |  ..;Check reminder exists
 | 
|---|
| 190 |  ..Q:'$D(^PXD(811.9,PXRMITEM,0))
 | 
|---|
| 191 |  ..;Evaluate reminder to obtain list of findings
 | 
|---|
| 192 |  ..N FIND
 | 
|---|
| 193 |  ..D FIDATA^PXRM(DFN,PXRMITEM,.FIND)
 | 
|---|
| 194 |  ..;Check if findings exist for the date range
 | 
|---|
| 195 |  ..D FCHEK(PXRMITEM)
 | 
|---|
| 196 |  .;Save in ^TMP
 | 
|---|
| 197 |  .I FCNT D FSAVE K FIND1 S PXRMFCNT=PXRMFCNT+1
 | 
|---|
| 198 |  ;
 | 
|---|
| 199 |  ;Merge in patients from Outpatient Pharmacy
 | 
|---|
| 200 |  D PSMERG^PXRMXX1("PXRMPSO",NODE,.SEARCH)
 | 
|---|
| 201 |  ;Merge in patients from Inpatient Pharmacy
 | 
|---|
| 202 |  D PSMERG^PXRMXX1("PXRMPSI",NODE,.SEARCH)
 | 
|---|
| 203 |  ;
 | 
|---|
| 204 |  Q
 | 
|---|
| 205 |  ;
 | 
|---|
| 206 |  ;Complex logic to handle lab/reminder mismatches
 | 
|---|
| 207 |  ;-----------------------------------------------
 | 
|---|
| 208 | LTRAN S LTERM=$P($G(FIND(ENC,"TERM")),U) Q:LTERM=""
 | 
|---|
| 209 |  ;Skip terms not used in cohort logic
 | 
|---|
| 210 |  I $D(LAB(LTERM)) S LTRAN=1 Q
 | 
|---|
| 211 |  ;If one of selected list send the latest out of cohort entries instead
 | 
|---|
| 212 |  I $D(LABN(LTERM)) S LTRAN=1 Q:LDONE=1  D
 | 
|---|
| 213 |  .N ENC,TERM,DATE
 | 
|---|
| 214 |  .S ENC=0,LDONE=1
 | 
|---|
| 215 |  .F  S ENC=$O(FIND(ENC)) Q:'ENC  D
 | 
|---|
| 216 |  ..S TERM=$P($G(FIND(ENC,"TERM")),U) Q:TERM=""
 | 
|---|
| 217 |  ..;Check if the term is in the out of cohort list
 | 
|---|
| 218 |  ..I $D(LAB(TERM)) D
 | 
|---|
| 219 |  ...;Check if lab test is within date range or prior
 | 
|---|
| 220 |  ...S DATE=$G(FIND(ENC,"DATE")) Q:DATE=""  Q:DATE>ED
 | 
|---|
| 221 |  ...D SAV
 | 
|---|
| 222 |  ;
 | 
|---|
| 223 |  Q
 | 
|---|
| 224 |  ;
 | 
|---|
| 225 |  ;
 | 
|---|
| 226 |  ;Entry point for API
 | 
|---|
| 227 |  ;-------------------
 | 
|---|
| 228 | PATS(PXRMBDT,PXRMEDT,NODE) ;
 | 
|---|
| 229 |  ;
 | 
|---|
| 230 |  ; PXRMBDT - Start date in fileman format
 | 
|---|
| 231 |  ; PXRMEDT - End date in fileman format
 | 
|---|
| 232 |  ; NODE  - Target name for ^TMP(NODE,$J)
 | 
|---|
| 233 |  ;
 | 
|---|
| 234 |  ;Task stopped
 | 
|---|
| 235 |  N TSTOP S TSTOP=0
 | 
|---|
| 236 |  ;
 | 
|---|
| 237 |  ;
 | 
|---|
| 238 |  ;Build temporary array of all wards
 | 
|---|
| 239 |  ;N PXRMLCHL,PXRMLOCN D LCHL^PXRMXAP(1,.PXRMLCHL)
 | 
|---|
| 240 |  ;
 | 
|---|
| 241 |  ;Patients, patients with findings, finding and term counts
 | 
|---|
| 242 |  N PXRMCNT,PXRMFCNT,PXRMFIEN,PXRMTIEN S PXRMCNT=0,PXRMFCNT=0
 | 
|---|
| 243 |  ;
 | 
|---|
| 244 |  ;Clear ^TMP
 | 
|---|
| 245 |  K ^TMP(NODE,$J)
 | 
|---|
| 246 |  ;Current inpatients
 | 
|---|
| 247 |  ;D INP
 | 
|---|
| 248 |  ;Inpatient admissions
 | 
|---|
| 249 |  ;D ADM
 | 
|---|
| 250 |  ;Outpatient visits
 | 
|---|
| 251 |  ;D VISITS Q:TSTOP=1
 | 
|---|
| 252 |  ;
 | 
|---|
| 253 |  ;Check for findings in the selected patients
 | 
|---|
| 254 |  D FIND Q:TSTOP=1
 | 
|---|
| 255 |  ;
 | 
|---|
| 256 |  ;Save report
 | 
|---|
| 257 |  D REPORT^PXRMXX1(NODE)
 | 
|---|
| 258 |  ;
 | 
|---|
| 259 |  ;Remove list of all patients with encounters
 | 
|---|
| 260 |  K ^TMP(NODE,$J,"TEMP")
 | 
|---|
| 261 |  ;Remove pharmacy outpatient list
 | 
|---|
| 262 |  K ^TMP("PXRMPSO"_NODE,$J)
 | 
|---|
| 263 |  ;Remove pharmacy inpatient list
 | 
|---|
| 264 |  K ^TMP("PXRMPSI"_NODE,$J)
 | 
|---|
| 265 |  ;Remove icd9 list
 | 
|---|
| 266 |  K ^TMP("PXRMPOV"_NODE,$J)
 | 
|---|
| 267 |  Q
 | 
|---|
| 268 |  ;
 | 
|---|
| 269 |  ;Build list of inpatients admissions
 | 
|---|
| 270 |  ;-----------------------------------
 | 
|---|
| 271 | ADM N HLOCIEN,IC,DFN,BD,ED
 | 
|---|
| 272 |  ;Get admissions for each selected location
 | 
|---|
| 273 |  F IC=1:1 Q:'$D(PXRMLCHL(IC))  D
 | 
|---|
| 274 |  .S HLOCIEN=$P(PXRMLCHL(IC),U,2) Q:HLOCIEN=""
 | 
|---|
| 275 |  .; Get admissions from patient movements and return DFN's in PATS
 | 
|---|
| 276 |  .S BD=PXRMBDT-.0001
 | 
|---|
| 277 |  .S ED=PXRMEDT+.2359
 | 
|---|
| 278 |  .N PATS D ADM^PXRMXAP(HLOCIEN,.PATS,BD,ED)
 | 
|---|
| 279 |  .;Build ^TMP for selected patients 
 | 
|---|
| 280 |  .S DFN=""
 | 
|---|
| 281 |  .F  S DFN=$O(PATS(DFN)) Q:DFN=""  D TMP
 | 
|---|
| 282 |  Q
 | 
|---|
| 283 |  ;
 | 
|---|
| 284 |  ;Build list of Current inpatients
 | 
|---|
| 285 |  ;--------------------------------
 | 
|---|
| 286 | INP N HLOCIEN,IC,DFN
 | 
|---|
| 287 |  ;Get Current inpatients for each location
 | 
|---|
| 288 |  F IC=1:1 Q:'$D(PXRMLCHL(IC))  D
 | 
|---|
| 289 |  .S HLOCIEN=$P(PXRMLCHL(IC),U,2) Q:HLOCIEN=""
 | 
|---|
| 290 |  .;Get WARDIEN,WARDNAM and return DFN's in PATS
 | 
|---|
| 291 |  .N PATS D WARD^PXRMXAP(HLOCIEN,.PATS)
 | 
|---|
| 292 |  .;Build ^TMP for selected patients 
 | 
|---|
| 293 |  .S DFN=""
 | 
|---|
| 294 |  .F  S DFN=$O(PATS(DFN)) Q:DFN=""  D TMP
 | 
|---|
| 295 |  Q
 | 
|---|
| 296 |  ;
 | 
|---|
| 297 |  ;Scan visit file to build list of patients
 | 
|---|
| 298 |  ;-----------------------------------------
 | 
|---|
| 299 | VISITS N BD,DFN,ED,HLOCIEN,IC,VIEN,VISIT
 | 
|---|
| 300 |  ;
 | 
|---|
| 301 |  S BD=PXRMBDT-.0001
 | 
|---|
| 302 |  S ED=PXRMEDT+.2359
 | 
|---|
| 303 |  ;Get Date ; DBIA #2028
 | 
|---|
| 304 |  F  S BD=$O(^AUPNVSIT("B",BD)) Q:BD>ED  Q:BD=""  Q:TSTOP=1  D
 | 
|---|
| 305 |  .S VIEN=0
 | 
|---|
| 306 |  .;Get individual visit
 | 
|---|
| 307 |  .F  S VIEN=$O(^AUPNVSIT("B",BD,VIEN)) Q:VIEN=""  Q:TSTOP=1  D
 | 
|---|
| 308 |  ..;Check if stop task requested
 | 
|---|
| 309 |  ..I $$S^%ZTLOAD S TSTOP=1 Q
 | 
|---|
| 310 |  ..;Screen Individual Visit
 | 
|---|
| 311 |  ..S VISIT=$G(^AUPNVSIT(VIEN,0)) Q:VISIT=""
 | 
|---|
| 312 |  ..;Patient IEN
 | 
|---|
| 313 |  ..S DFN=$P(VISIT,U,5) Q:'DFN
 | 
|---|
| 314 |  ..;Build patient list in ^TMP
 | 
|---|
| 315 |  ..D TMP
 | 
|---|
| 316 |  Q
 | 
|---|