| 1 | PXRMXPR ; SLC/PJH - Print Reminder Due report. ;11/27/2006
 | 
|---|
| 2 |  ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Called/Jobbed after PXRMXSE1
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | START N BMARG,CRITERIA,C1S,C2S,C3S,C1HS,C2HS,C3HS,DONE,FIRST,HEAD
 | 
|---|
| 7 |  N INDENT,PAGE,MOD,DES,ADES,CDES,RDES,SDES,MISSED,SEP
 | 
|---|
| 8 |  N PLSTCRIT,PXRMOPT,PXRMFLD,PXRMHDR,PXRMHDRS,PXRMT,PXRMH
 | 
|---|
| 9 |  N BD,ED,EMPCHK,SD,RD
 | 
|---|
| 10 |  N PXRMTX
 | 
|---|
| 11 |  S PXRMTX="due"
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  I PXRMREP="D" D
 | 
|---|
| 14 |  .S EMPCHK=$P($G(^PXRM(800,1,"TRUNCATE EMPLOYEE SSN")),U)
 | 
|---|
| 15 |  .I EMPCHK="" S EMPCHK="Y"
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ; Format Date Range
 | 
|---|
| 18 |  I PXRMSEL="L" D
 | 
|---|
| 19 |  .S BD=$$FMTE^XLFDT(PXRMBDT,"5D")
 | 
|---|
| 20 |  .S ED=$$FMTE^XLFDT(PXRMEDT,"5D")
 | 
|---|
| 21 |  ; Format due effective date
 | 
|---|
| 22 |  S SD=$$FMTE^XLFDT(PXRMSDT,"5P")
 | 
|---|
| 23 |  ; Format run date
 | 
|---|
| 24 |  S RD=$$FMTE^XLFDT(PXRMXST,"5P")
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  U IO
 | 
|---|
| 27 |  S DONE=0
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  ;Delimited report.
 | 
|---|
| 30 |  S SEP=$S(PXRMTABS="Y":PXRMTABC,1:"")
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  ;Setup initial formatting parameters.
 | 
|---|
| 33 |  S INDENT=3
 | 
|---|
| 34 |  S BMARG=2,PAGE=0,HEAD=1
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  I +$G(XQY)>0 N XQOPT D OP^XQCHK
 | 
|---|
| 37 |  S PXRMOPT=$P($G(XQOPT),U,2)
 | 
|---|
| 38 |  I ($L(PXRMOPT)>0)&(PXRMOPT'["Clinical") S PXRMOPT="Clinical "_PXRMOPT
 | 
|---|
| 39 |  I PXRMREP="D" D
 | 
|---|
| 40 |  .S RDES=$P(REMINDER(1),U,2)
 | 
|---|
| 41 |  .S PXRMOPT=PXRMOPT_" - Detailed Report"
 | 
|---|
| 42 |  .N IC F IC=0,3,4 S PXRMH(IC)="",PXRMT(IC)=0
 | 
|---|
| 43 |  .S PXRMH(1)="Date Due    Last Done   Next Appt"
 | 
|---|
| 44 |  .S PXRMH(2)="--------    ---------   ---------"
 | 
|---|
| 45 |  .I $G(PXRMINP) D
 | 
|---|
| 46 |  ..S PXRMH(1)="Date Due    Last Done   Ward/Bed"
 | 
|---|
| 47 |  ..S PXRMH(2)="--------    ---------   --------"
 | 
|---|
| 48 |  .F IC=1,2 S PXRMT(IC)=40
 | 
|---|
| 49 |  .S ADES="Next Appointment only"
 | 
|---|
| 50 |  .I PXRMFUT="Y" S ADES="All Future Appointments"
 | 
|---|
| 51 |  .S SDES="Sorted by Patient Name"
 | 
|---|
| 52 |  .I PXRMSRT="Y" S SDES="Sorted by Appointment Date"
 | 
|---|
| 53 |  I PXRMREP="S" D
 | 
|---|
| 54 |  .S PXRMOPT=PXRMOPT_" - Summary Report"
 | 
|---|
| 55 |  .S PXRMH(0)="# Patients with Reminders",PXRMT(0)=50
 | 
|---|
| 56 |  .S PXRMH(1)="Applicable           Due"
 | 
|---|
| 57 |  .S PXRMH(2)="----------           ---"
 | 
|---|
| 58 |  .N IC F IC=1,2 S PXRMT(IC)=50
 | 
|---|
| 59 |  .S PXRMH(3)="Denominator"
 | 
|---|
| 60 |  .S PXRMH(4)="-----------"
 | 
|---|
| 61 |  .F IC=3,4 S PXRMT(IC)=0
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ;Print Criteria Page if normal report
 | 
|---|
| 64 |  S CRITERIA=0 I PXRMTABS="N" S CRITERIA=1
 | 
|---|
| 65 |  ;or delimited report with notemplate
 | 
|---|
| 66 |  I PXRMTABS="Y",PXRMTMP="" S CRITERIA=1
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ;Build array of locations/providers with no patients selected in
 | 
|---|
| 69 |  ;MISSED.
 | 
|---|
| 70 |  D NOPATS^PXRMXPR1(.MISSED)
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  ;Print either criteria page or summary header
 | 
|---|
| 73 |  I CRITERIA D  G:DONE EXIT
 | 
|---|
| 74 |  .D PAGE^PXRMXGPR Q:DONE
 | 
|---|
| 75 |  .D CRIT^PXRMXGPR(10,.PLSTCRIT) Q:DONE
 | 
|---|
| 76 |  ;Header if delimited output from a template
 | 
|---|
| 77 |  I 'CRITERIA D
 | 
|---|
| 78 |  .N HDR1,HDR2,HDR3
 | 
|---|
| 79 |  .S HDR1="",HDR2="",HDR3=""
 | 
|---|
| 80 |  .I PXRMTMP]"" S HDR1="TITLE:"_$P(PXRMTMP,U,2)_U_"TEMPLATE:"_$P(PXRMTMP,U,3)
 | 
|---|
| 81 |  .I PXRMTMP="" D
 | 
|---|
| 82 |  ..N PXRMFLD,DES,CDES D LITS^PXRMXPR1 S HDR1=PXRMFLD_U_$G(DES)_U_$G(CDES)
 | 
|---|
| 83 |  .I PXRMSEL="L" S HDR2="START:"_BD_U_"END:"_ED
 | 
|---|
| 84 |  .S HDR2=HDR2_U_"RUN:"_RD_"Effective Date:"_SD
 | 
|---|
| 85 |  .I PXRMFCMB="Y" S HDR3="COMBINED FACILITY"
 | 
|---|
| 86 |  .I PXRMLCMB="Y" S $P(HDR3,SEP,2)="COMBINED LOCATION"
 | 
|---|
| 87 |  .I PXRMTCMB="Y" S $P(HDR3,SEP,2)="COMBINED OE/RR TEAMS"
 | 
|---|
| 88 |  .I PXRMREP="S" D
 | 
|---|
| 89 |  ..N LIT1,LIT2,LIT3
 | 
|---|
| 90 |  ..D LIT^PXRMXD
 | 
|---|
| 91 |  ..I PXRMTOT="I" S $P(HDR3,SEP,3)=$$UP^XLFSTR(LIT1)
 | 
|---|
| 92 |  ..I PXRMTOT="R" S $P(HDR3,SEP,3)=$$UP^XLFSTR(LIT2)
 | 
|---|
| 93 |  ..I PXRMTOT="T" S $P(HDR3,SEP,3)=$$UP^XLFSTR(LIT3)
 | 
|---|
| 94 |  .S PLSTCRIT(1)=HDR1,PLSTCRIT(2)=HDR2,PLSTCRIT(3)=HDR3
 | 
|---|
| 95 |  .W !,HDR1,!,HDR2,!,HDR3,!
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  ;Kill items marked as found
 | 
|---|
| 98 |  K ^XTMP(PXRMXTMP,"MARKED AS FOUND")
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ;Setup the final formatting parameters.
 | 
|---|
| 101 |  S C1HS=INDENT+3
 | 
|---|
| 102 |  S C1S=0
 | 
|---|
| 103 |  S C2HS=C1S+2
 | 
|---|
| 104 |  S C2S=C2HS
 | 
|---|
| 105 |  S C3HS=C2HS+5
 | 
|---|
| 106 |  S C3S=C3HS
 | 
|---|
| 107 |  S HEAD=1
 | 
|---|
| 108 |  S INDENT=10
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ; Update last run date 
 | 
|---|
| 111 |  I $G(PXRMTMP)'="" D UPD^PXRMXTU
 | 
|---|
| 112 |  ;
 | 
|---|
| 113 |  ; Get report detail from ^XTMP
 | 
|---|
| 114 |  N PNAM,SUB,DFN,BID,NAM,FAC,MOD,SRT,TOTAL,APPL,FACPNAME,PX,TTOTAL
 | 
|---|
| 115 |  S TTOTAL=0
 | 
|---|
| 116 |  ; Set subroutine label from report format
 | 
|---|
| 117 |  S MOD="SUMARY" I PXRMREP="D" S MOD="DETAIL"
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  S FAC=0,PX="PXRM"
 | 
|---|
| 120 |  F  S FAC=$O(^XTMP(PXRMXTMP,PX,FAC)) Q:FAC=""  Q:DONE  D
 | 
|---|
| 121 |  .;Get facility name for Location and PCMM team report
 | 
|---|
| 122 |  .I "TL"[PXRMSEL,PXRMFCMB="N" D
 | 
|---|
| 123 |  ..S FACPNAME=$P(PXRMFACN(FAC),U,1)_"  "_$P(PXRMFACN(FAC),U,2)
 | 
|---|
| 124 |  .;Report from ^XTMP - label MOD is DETAIL/SUMARY
 | 
|---|
| 125 |  .S (PNAM,SUB,NAM,SRT)=""
 | 
|---|
| 126 |  .I PXRMSEL="I" S SUB="INDIVIDUAL PATIENTS" D @MOD Q:DONE
 | 
|---|
| 127 |  .I PXRMSEL'="I" D
 | 
|---|
| 128 |  ..;Sort internal IENs into alpha order
 | 
|---|
| 129 |  ..D XSORT
 | 
|---|
| 130 |  ..F  S SRT=$O(^TMP($J,"SORT",SRT)) Q:SRT=""  Q:DONE  D
 | 
|---|
| 131 |  ...S SUB=$G(^TMP($J,"SORT",SRT)) D @MOD
 | 
|---|
| 132 |  ..I MOD="SUMARY","RT"[PXRMTOT S SUB="TOTAL" D @MOD
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 |  ; Null report if no patients selected
 | 
|---|
| 135 |  I ('DONE),$O(^XTMP(PXRMXTMP,PX,""))="" D NULL^PXRMXGPR G EXIT
 | 
|---|
| 136 |  ; Report selected patient sample with no patients
 | 
|---|
| 137 |  I $D(MISSED),PXRMPML=1 D MISSED^PXRMXPR1(0,.MISSED)
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  ;Print Patient List
 | 
|---|
| 140 |  I $G(PATLST)="Y" D FOOTER^PXRMXPR1(.PLSTCRIT)
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  ;Print Error message
 | 
|---|
| 143 |  I $D(^XTMP(PXRMXTMP,"ERROR"))>0!($D(^XTMP(PXRMXTMP,"CNBD"))>0) D ERROR^PXRMXBSY
 | 
|---|
| 144 | EXIT ;
 | 
|---|
| 145 |  D TIMING^PXRMXGUT
 | 
|---|
| 146 |  D EXIT^PXRMXGUT
 | 
|---|
| 147 |  ;
 | 
|---|
| 148 |  ;Allow the task to be cleaned up upon successful completion.
 | 
|---|
| 149 |  I $D(ZTQUEUED) S ZTREQ="@"
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 |  D EOR^PXRMXGUT
 | 
|---|
| 152 |  Q
 | 
|---|
| 153 |  ;
 | 
|---|
| 154 |  ;Report by Patient
 | 
|---|
| 155 | DETAIL N JJ,VA,DATE,COUNT,DDAT,EMP
 | 
|---|
| 156 |  N BED,DDUE,DDONE,DNEXT,FDAT1,FDAT2,FDAT3,FNAM,FTXT
 | 
|---|
| 157 |  S NAM=$G(^XTMP(PXRMXTMP,PX,FAC,SUB)),HEAD=1
 | 
|---|
| 158 |  S COUNT=$P(NAM,U,2),TOTAL=$P(NAM,U,3),APPL=$P(NAM,U,4),NAM=$P(NAM,U,1)
 | 
|---|
| 159 |  S DDAT="",JJ=0
 | 
|---|
| 160 |  ; Get list of patients for each appointment date
 | 
|---|
| 161 |  F  S DDAT=$O(^XTMP(PXRMXTMP,PX,FAC,SUB,DDAT)) Q:DDAT=""  Q:DONE  D PAT
 | 
|---|
| 162 |  ; No patients due
 | 
|---|
| 163 |  I JJ=0 D:'DONE NONE^PXRMXGPR
 | 
|---|
| 164 |  ; Total patients
 | 
|---|
| 165 |  D:'DONE TOTAL^PXRMXGPR
 | 
|---|
| 166 |  S TTOTAL=TTOTAL+TOTAL
 | 
|---|
| 167 |  Q
 | 
|---|
| 168 |  ;
 | 
|---|
| 169 | PAT ;Extract and print patient detail
 | 
|---|
| 170 |  N DNEXT1,NODE,PNUM
 | 
|---|
| 171 |  F  S PNAM=$O(^XTMP(PXRMXTMP,PX,FAC,SUB,DDAT,PNAM)) Q:PNAM=""  Q:DONE  D
 | 
|---|
| 172 |  .S JJ=JJ+1
 | 
|---|
| 173 |  .;Format print line
 | 
|---|
| 174 |  .S (BID,DNEXT1,FDAT1,FDAT2,FDAT3,DNEXT1)="" I PNAM'["No patients found" D 
 | 
|---|
| 175 |  ..S FDAT2="N/A",FDAT3="None"
 | 
|---|
| 176 |  ..S NODE=$G(^XTMP(PXRMXTMP,PX,FAC,SUB,DDAT,PNAM))
 | 
|---|
| 177 |  ..S DDUE=$P(NODE,U,2),DDONE=$P(NODE,U,3),DNEXT=$P(NODE,U,4)
 | 
|---|
| 178 |  ..S BED=$P(NODE,U,5)
 | 
|---|
| 179 |  ..S DFN=$P(NODE,U) S BID=$P($G(PNAM),U,2)
 | 
|---|
| 180 |  ..I PXRMSSN="N" S BID=$E(BID,6,9)
 | 
|---|
| 181 |  ..I PXRMSSN="Y",EMPCHK="Y" D EMP S:EMP BID=$E(BID,6,9)
 | 
|---|
| 182 |  ..S BID="("_BID_")"
 | 
|---|
| 183 |  ..S FDAT1=$$FMTE^XLFDT(DDUE,"5D")
 | 
|---|
| 184 |  ..I DDONE S FDAT2=$$FMTE^XLFDT(DDONE,"5D")
 | 
|---|
| 185 |  ..I BED'="NONE" S FDAT3=$P(NODE,U,5),DNEXT1=$$FMTE^XLFDT(DNEXT,"5D")
 | 
|---|
| 186 |  ..I DNEXT,FDAT3="None" S FDAT3=$$FMTE^XLFDT(DNEXT,"5D")
 | 
|---|
| 187 |  .;Print
 | 
|---|
| 188 |  .D CHECK Q:DONE
 | 
|---|
| 189 |  .;Normal output
 | 
|---|
| 190 |  .I PXRMTABS="N" D
 | 
|---|
| 191 |  ..S PNUM=JJ#10000
 | 
|---|
| 192 |  ..S PNUM=$$RJ^XLFSTR(PNUM,4)
 | 
|---|
| 193 |  ..W !,PNUM,?5,$E($P($G(PNAM),U),1,33-$L(BID))," ",BID,?40,FDAT1,?52,FDAT2
 | 
|---|
| 194 |  ..I ('$G(PXRMINP)),PXRMFUT'="Y" W ?64,$S(BED'="NONE":BED_" (Inp.)",1:FDAT3)
 | 
|---|
| 195 |  ..I $G(PXRMINP) W ?64,BED
 | 
|---|
| 196 |  ..I DNEXT1'="",PXRMFUT'="Y" W !,?64,DNEXT1
 | 
|---|
| 197 |  .;Delimited report
 | 
|---|
| 198 |  .I PXRMTABS="Y" D
 | 
|---|
| 199 |  ..N FNAM
 | 
|---|
| 200 |  ..S FNAM=$P($G(PNAM),U)
 | 
|---|
| 201 |  ..I FNAM'["No patients found" S FNAM=$E(FNAM,1,33-$L(BID))_" "_BID
 | 
|---|
| 202 |  ..I "CES"[PXRMTABC S FNAM=$TR(FNAM,SEP,"_"),FDAT1=$TR(FDAT1,SEP,"_")
 | 
|---|
| 203 |  ..I BED="NONE" S BED=" "
 | 
|---|
| 204 |  ..W !,JJ_SEP_FNAM_SEP_FDAT1_SEP_FDAT2 I $G(PXRMINP) W SEP_BED
 | 
|---|
| 205 |  ..I ('$G(PXRMINP)),PXRMFUT'="Y" W SEP_FDAT3_SEP_BED
 | 
|---|
| 206 |  .;---
 | 
|---|
| 207 |  .; Future Appointments
 | 
|---|
| 208 |  .I PXRMFUT="Y" D
 | 
|---|
| 209 |  ..N CNT,ADAT,ALOC,ATYP,FIRST,NONE
 | 
|---|
| 210 |  ..S CNT=0,NONE=1,FIRST=1
 | 
|---|
| 211 |  ..I '$D(^XTMP(PXRMXTMP,PX,FAC,SUB,DDAT,PNAM)) Q
 | 
|---|
| 212 |  ..F  S CNT=$O(^XTMP(PXRMXTMP,PX,FAC,SUB,DDAT,PNAM,CNT)) Q:CNT'>0  D
 | 
|---|
| 213 |  ...S ADAT=$P(^XTMP(PXRMXTMP,PX,FAC,SUB,DDAT,PNAM,CNT,0),U)
 | 
|---|
| 214 |  ...I PXRMDLOC="Y" D
 | 
|---|
| 215 |  ....S ALOC=$P(^XTMP(PXRMXTMP,PX,FAC,SUB,DDAT,PNAM,CNT,0),U,2)
 | 
|---|
| 216 |  ....S ATYP=$P(^XTMP(PXRMXTMP,PX,FAC,SUB,DDAT,PNAM,CNT,0),U,3)
 | 
|---|
| 217 |  ...S ADAT=$$FMTE^XLFDT(ADAT,"2P")
 | 
|---|
| 218 |  ...I FIRST D  S FIRST=0,NONE=0
 | 
|---|
| 219 |  ....I PXRMTABS="N" W ?64,$S(BED'="NONE":BED_" (Inp.)",1:"")
 | 
|---|
| 220 |  ...D CHECK
 | 
|---|
| 221 |  ...I PXRMDLOC="Y" D
 | 
|---|
| 222 |  ....I PXRMTABS="N" W !,?8,ADAT,?30,$E(ALOC,1,25),?60,$E(ATYP,1,20)
 | 
|---|
| 223 |  ....I PXRMTABS="Y" W SEP_ADAT_SEP_$E(ALOC,1,25)_SEP_$E(ATYP,1,20)
 | 
|---|
| 224 |  ...I PXRMDLOC="N" D
 | 
|---|
| 225 |  ....I PXRMTABS="N" W !,?10,ADAT
 | 
|---|
| 226 |  ....I PXRMTABS="Y" W SEP_ADAT
 | 
|---|
| 227 |  ..I NONE,PXRMTABS="N" W ?64,FDAT3
 | 
|---|
| 228 |  ..I NONE,PXRMTABS="Y" W SEP_FDAT3
 | 
|---|
| 229 |  ..I PXRMTABS="Y" W $S(BED'="NONE":SEP_BED_" (Inp.)",1:"")
 | 
|---|
| 230 |  ..K ^UTILITY("VASD",$J)
 | 
|---|
| 231 |  Q
 | 
|---|
| 232 |  ;
 | 
|---|
| 233 |  ;Summary by Reminder
 | 
|---|
| 234 | SUMARY N JJ,EVAL,DUE,RNAM,RNUM,ITEM,COUNT,FTXT
 | 
|---|
| 235 |  S NAM=$G(^XTMP(PXRMXTMP,PX,FAC,SUB)),HEAD=1
 | 
|---|
| 236 |  S TOTAL=$P(NAM,U,3),COUNT=$P(NAM,U,2),NAM=$P(NAM,U,1)
 | 
|---|
| 237 |  S RNUM=$O(REMINDER(""),-1)
 | 
|---|
| 238 |  ;Get reminders in alpha order
 | 
|---|
| 239 |  F JJ=1:1:RNUM D  Q:DONE
 | 
|---|
| 240 |  .S ITEM=$P(REMINDER(JJ),U,1),RNAM=$P(REMINDER(JJ),U,4)
 | 
|---|
| 241 |  .S:RNAM="" RNAM=$P(REMINDER(JJ),U,2)
 | 
|---|
| 242 |  .; zero lines will be printed 
 | 
|---|
| 243 |  .S DUE=$G(^XTMP(PXRMXTMP,PX,FAC,SUB,ITEM))
 | 
|---|
| 244 |  .S EVAL=+$P(DUE,U,1),DUE=+$P(DUE,U,2)
 | 
|---|
| 245 |  .;Print
 | 
|---|
| 246 |  .D CHECK Q:DONE
 | 
|---|
| 247 |  .;Normal Report
 | 
|---|
| 248 |  .I PXRMTABS="N" W !,JJ,?5,RNAM,?48,$J(EVAL,10),?63,$J(DUE,10)
 | 
|---|
| 249 |  .;Condensed Report
 | 
|---|
| 250 |  .I PXRMTABS="Y" D
 | 
|---|
| 251 |  ..I "CES"[PXRMTABC S RNAM=$TR(RNAM,SEP,"_")
 | 
|---|
| 252 |  ..W !,JJ_SEP_RNAM_SEP_EVAL_SEP_DUE_SEP_$TR(NAM,SEP,"_")
 | 
|---|
| 253 |  D:'DONE TOTAL^PXRMXGPR
 | 
|---|
| 254 |  I $G(SUB)'="TOTAL",PXRMTOT'="T" S TTOTAL=TTOTAL+TOTAL
 | 
|---|
| 255 |  I $G(SUB)="TOTAL",PXRMTOT="T" S TTOTAL=TTOTAL+TOTAL
 | 
|---|
| 256 |  Q
 | 
|---|
| 257 |  ;
 | 
|---|
| 258 |  ;Check line count before writing line
 | 
|---|
| 259 | CHECK I ((PXRMTABS="N")&($Y>(IOSL-BMARG-3)))!(HEAD=1) D COL^PXRMXGPR(1)
 | 
|---|
| 260 |  Q
 | 
|---|
| 261 |  ;
 | 
|---|
| 262 |  ;Check if employee
 | 
|---|
| 263 | EMP N VAEL
 | 
|---|
| 264 |  D ELIG^VADPT
 | 
|---|
| 265 |  ;Check TYPE (#391) field
 | 
|---|
| 266 |  I $P($G(VAEL(6)),U,2)="EMPLOYEE" S EMP=1 Q
 | 
|---|
| 267 |  ;Check PATIENT ELIGABILITY (#361) field
 | 
|---|
| 268 |  N ELIG
 | 
|---|
| 269 |  S ELIG=0,EMP=0
 | 
|---|
| 270 |  F  S ELIG=$O(VAEL(1,ELIG)) Q:'ELIG  D  Q:EMP
 | 
|---|
| 271 |  .I $P($G(VAEL(1,ELIG)),U,2)="EMPLOYEE" S EMP=1
 | 
|---|
| 272 |  Q
 | 
|---|
| 273 |  ;
 | 
|---|
| 274 |  ;Sort internal numbers into Alpha order
 | 
|---|
| 275 | XSORT N SUB,NAM
 | 
|---|
| 276 |  K ^TMP($J,"SORT")
 | 
|---|
| 277 |  S SUB=""
 | 
|---|
| 278 |  F  S SUB=$O(^XTMP(PXRMXTMP,PX,FAC,SUB)) Q:SUB=""  D
 | 
|---|
| 279 |  .Q:SUB="TOTAL"
 | 
|---|
| 280 |  .S NAM=$P(^XTMP(PXRMXTMP,PX,FAC,SUB),U)
 | 
|---|
| 281 |  .I NAM="" S NAM=SUB
 | 
|---|
| 282 |  .S ^TMP($J,"SORT",NAM)=SUB
 | 
|---|
| 283 |  Q
 | 
|---|
| 284 |  ;
 | 
|---|