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