[623] | 1 | SCRPW63 ;BP-CIOFO/KEITH - SC veterans awaiting appointments (cont.) ; 23 August 2002@20:23
|
---|
| 2 | ;;5.3;Scheduling;**267,269,357**;AUG 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | E ;Gather data for patients entered report
|
---|
| 5 | N DFN,SDX,SDATE,SD0,SDSCEL,SDEL,SDYR,SDREL,SDTOT,SDSDT,SDLVDT,SDEDT
|
---|
| 6 | N SDNAME
|
---|
| 7 | D SCEL^SCRPW62(.SDSCEL,SDSCVT) ;Get eligibility code pointers
|
---|
| 8 | S (SDSDT,SDATE)=DT-(10000*SDATES),SDSTOP=0
|
---|
| 9 | ;Find the patients entered after date specified
|
---|
| 10 | S DFN=0 F Q:SDSTOP S DFN=$O(^DPT(DFN)) Q:'DFN D
|
---|
| 11 | .Q:$D(^DPT(DFN,-9)) ;Skip merged records
|
---|
| 12 | .I DFN#1000=0 D STOP Q:SDSTOP ;Check for stop task request
|
---|
| 13 | .S SDLVDT=""
|
---|
| 14 | .S SD0=$G(^DPT(DFN,0)) Q:'$L(SD0)
|
---|
| 15 | .S SDEDT=$P(SD0,U,16) S:SDEDT SDLVDT=SDEDT
|
---|
| 16 | .I SDEDT,SDEDT<SDATE Q ;Date entered < start date
|
---|
| 17 | .I 'SDEDT,SDLVDT<SDATE Q ;No date entered, last valid date < start
|
---|
| 18 | .S SDEL=+$G(^DPT(DFN,.36)) Q:'$D(SDSCEL(SDEL)) ;Only SC vets
|
---|
| 19 | .Q:+$G(^DPT(DFN,.35)) ;No deceased patients
|
---|
| 20 | .Q:$$SCHAPP(DFN) ;Appointments not cancelled by clinic?
|
---|
| 21 | .S SDYR=$$FMDIFF^XLFDT(DT,$S(SDEDT:SDEDT,1:SDLVDT))\365.25 ;Year entered
|
---|
| 22 | .S SDEL=SDSCEL(SDEL) D Q:SDFMT="S"
|
---|
| 23 | ..;Record statistics
|
---|
| 24 | ..S ^TMP("SCRPW",$J,"STATS",SDYR,SDEL)=$G(^TMP("SCRPW",$J,"STATS",SDYR,SDEL))+1
|
---|
| 25 | ..Q
|
---|
| 26 | .S SDNAME=$P(SD0,U) Q:'$L(SDNAME)
|
---|
| 27 | .S ^TMP("SCRPW",$J,SDEL,SDNAME,DFN)=SD0
|
---|
| 28 | .Q
|
---|
| 29 | Q:SDSTOP
|
---|
| 30 | D:$E(IOST,1,2)="C-" DISP0^SCRPW23
|
---|
| 31 | I '$D(^TMP("SCRPW",$J)) D Q ;Negative report
|
---|
| 32 | .D HDR^SCRPW62 S SDX="No patients found within report parameters!"
|
---|
| 33 | .W !!?(132-$L(SDX)\2),SDX
|
---|
| 34 | .I $E(IOST)="C",'SDOUT N DIR S DIR(0)="E" D ^DIR
|
---|
| 35 | .Q
|
---|
| 36 | ;Detailed report
|
---|
| 37 | I SDFMT="D" D HDR^SCRPW62 S SDEL=0 F S SDEL=$O(^TMP("SCRPW",$J,SDEL)) Q:'SDEL!SDOUT D
|
---|
| 38 | .S SDNAME="" F S SDNAME=$O(^TMP("SCRPW",$J,SDEL,SDNAME)) Q:SDNAME=""!SDOUT S DFN=0 D
|
---|
| 39 | ..F S DFN=$O(^TMP("SCRPW",$J,SDEL,SDNAME,DFN)) Q:'DFN!SDOUT D
|
---|
| 40 | ...S SDREL=$S(SDEL=1:0,1:+$P($G(^DPT(DFN,.372,0)),U,4))
|
---|
| 41 | ...D:$Y>(IOSL-(4+SDREL)) HDR^SCRPW62 Q:SDOUT
|
---|
| 42 | ...S SDX=^TMP("SCRPW",$J,SDEL,SDNAME,DFN) D PLINE(DFN,SDX,SDEL)
|
---|
| 43 | ...Q
|
---|
| 44 | .Q
|
---|
| 45 | Q:SDOUT
|
---|
| 46 | ESUM ;Print summary
|
---|
| 47 | G:SDELIM EQ
|
---|
| 48 | S SDT(3)="STATISTICAL SUMMARY" D HDR^SCRPW62 Q:SDOUT
|
---|
| 49 | W !! S SDYR="",SDTOT=0
|
---|
| 50 | F S SDYR=$O(^TMP("SCRPW",$J,"STATS",SDYR)) Q:SDYR="" D
|
---|
| 51 | .S SDEL=0 F S SDEL=$O(^TMP("SCRPW",$J,"STATS",SDYR,SDEL)) Q:'SDEL D
|
---|
| 52 | ..S SDX=$$CSCEL(SDEL)_" veterans entered "_$S(SDYR=0:"in the past year",SDYR=1:"two years ago",SDYR=2:"three years ago",1:"")_":"
|
---|
| 53 | ..W !?36,$J(SDX,45),?83,$J(^TMP("SCRPW",$J,"STATS",SDYR,SDEL),6,0)
|
---|
| 54 | ..S SDTOT=SDTOT+^TMP("SCRPW",$J,"STATS",SDYR,SDEL)
|
---|
| 55 | ..Q
|
---|
| 56 | .Q
|
---|
| 57 | W !?36,$E(SDLINE,1,53),!?75,"TOTAL:",?83,$J(SDTOT,6,0)
|
---|
| 58 | EQ I $E(IOST,1,2)="C-" N DIR S DIR(0)="E" W !! D ^DIR
|
---|
| 59 | Q
|
---|
| 60 | ;
|
---|
| 61 | SCHAPP(DFN) ;Look for scheduled appointments not cancelled by clinic
|
---|
| 62 | ; Input: DFN=patient ifn
|
---|
| 63 | ;Output: '1' if appointments exist, '0' otherwise
|
---|
| 64 | N SDI,SDX,SDY
|
---|
| 65 | S (SDI,SDY)=0
|
---|
| 66 | F S SDI=$O(^DPT(DFN,"S",SDI)) Q:'SDI!SDY D
|
---|
| 67 | .S SDX=$G(^DPT(DFN,"S",SDI,0)) Q:'$L(SDX)
|
---|
| 68 | .S SDX=$P(SDX,U,2) I $L(SDX),"CA"[SDX Q
|
---|
| 69 | .S SDY=1
|
---|
| 70 | .Q
|
---|
| 71 | Q SDY
|
---|
| 72 | ;
|
---|
| 73 | A ;Gather data for future appointments report
|
---|
| 74 | N DFN,SDA0,SDX,SDI,SDSCEL,SDEL,SDDATE,SDIFF,SDAPT,SDIVL,SDIVN
|
---|
| 75 | N SDREL,SDTOT,SDIV,SD0,SDNAME
|
---|
| 76 | D SCEL^SCRPW62(.SDSCEL,SDSCVT) ;Get eligibility code pointers
|
---|
| 77 | S DFN=0 F S DFN=$O(^DPT(DFN)) Q:'DFN!SDSTOP D
|
---|
| 78 | .I DFN#1000=0 D STOP Q:SDSTOP ;Check for stop task request
|
---|
| 79 | .S SDEL=+$G(^DPT(DFN,.36)) Q:'$D(SDSCEL(SDEL)) ;Only SC vets
|
---|
| 80 | .S SDEL=SDSCEL(SDEL)
|
---|
| 81 | .Q:+$G(^DPT(DFN,.35)) ;No deceased patients
|
---|
| 82 | .S SDI=DT F S SDI=$O(^DPT(DFN,"S",SDI)) Q:'SDI D
|
---|
| 83 | ..S SDDATE=+$G(^DPT(DFN,"S",SDI,1)) Q:'SDDATE Q:SDDATE>SDI
|
---|
| 84 | ..S SDA0=$G(^DPT(DFN,"S",SDI,0)) Q:'$L(SDA0)
|
---|
| 85 | ..S SDIV=$P($G(^SC(+SDA0,0)),U,15) Q:'$$DIV(.SDIV) ;Division check
|
---|
| 86 | ..;Exclude cancelled appointments
|
---|
| 87 | ..S SDX=$P(SDA0,U,2) I $L(SDX),"PCA"[SDX Q
|
---|
| 88 | ..S SDIFF=$$FMDIFF^XLFDT(SDI,SDDATE) Q:SDIFF'>SDATES
|
---|
| 89 | ..S SDNAME=$P($G(^DPT(DFN,0)),U) Q:'$L(SDNAME)
|
---|
| 90 | ..;Record detailed information
|
---|
| 91 | ..S ^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN,SDI)=SDDATE_U_SDA0
|
---|
| 92 | ..S ^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN)=$G(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN))+1
|
---|
| 93 | ..Q
|
---|
| 94 | .Q
|
---|
| 95 | Q:SDSTOP
|
---|
| 96 | ;Tally up statistics
|
---|
| 97 | S SDIV=0 F S SDIV=$O(^TMP("SCRPW",$J,SDIV)) Q:'SDIV D
|
---|
| 98 | .S SDEL=0 F S SDEL=$O(^TMP("SCRPW",$J,SDIV,SDEL)) Q:'SDEL D
|
---|
| 99 | ..S SDNAME="" F S SDNAME=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME)) Q:SDNAME=""!SDOUT D
|
---|
| 100 | ...S DFN=0 F S DFN=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN)) Q:'DFN D
|
---|
| 101 | ....S ^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"PTS")=$G(^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"PTS"))+1
|
---|
| 102 | ....S SDI=0 F S SDI=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN,SDI)) Q:'SDI D
|
---|
| 103 | .....S ^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"APPTS")=$G(^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"APPTS"))+1
|
---|
| 104 | .....Q
|
---|
| 105 | ....Q
|
---|
| 106 | ...Q
|
---|
| 107 | ..Q
|
---|
| 108 | .Q
|
---|
| 109 | Q:SDSTOP
|
---|
| 110 | ;Print report
|
---|
| 111 | S SDIV="" F S SDIV=$O(SDDIV(SDIV)) Q:'SDIV S SDIV(SDDIV(SDIV))=SDIV
|
---|
| 112 | I 'SDDIV,$P(SDDIV,U,2)'="ALL DIVISIONS" D
|
---|
| 113 | .S SDIV($P(SDDIV,U,2))=$$PRIM^VASITE()
|
---|
| 114 | .Q
|
---|
| 115 | I $P(SDDIV,U,2)="ALL DIVISIONS" S SDI=0 D
|
---|
| 116 | .F S SDI=$O(^TMP("SCRPW",$J,SDI)) Q:'SDI D
|
---|
| 117 | ..S SDX=$P($G(^DG(40.8,SDI,0)),U) S:$L(SDX) SDIV(SDX)=SDI
|
---|
| 118 | ..Q
|
---|
| 119 | .Q
|
---|
| 120 | D:$E(IOST)="C" DISP0^SCRPW23
|
---|
| 121 | I '$D(^TMP("SCRPW",$J)) D Q ;Negative report
|
---|
| 122 | .S SDIV=0 D DHDR^SCRPW40(3,.SDT),HDR^SCRPW62
|
---|
| 123 | .S SDX="No appointments found that meet report criteria."
|
---|
| 124 | .I SDELIM W !,SDX Q
|
---|
| 125 | .W !!?(IOM-$L(SDX)\2),SDX
|
---|
| 126 | .I $E(IOST)="C",'SDOUT N DIR S DIR(0)="E" D ^DIR
|
---|
| 127 | .Q
|
---|
| 128 | G:SDFMT="S" ASUM
|
---|
| 129 | ;Print detailed report by division
|
---|
| 130 | S SDIVN="" F S SDIVN=$O(SDIV(SDIVN)) Q:SDIVN=""!SDOUT D
|
---|
| 131 | .S SDIV=SDIV(SDIVN) D ADPRT(.SDIV)
|
---|
| 132 | .Q
|
---|
| 133 | Q:SDOUT
|
---|
| 134 | ;Print summary
|
---|
| 135 | ASUM G:SDELIM AQ
|
---|
| 136 | S SDT(3)="STATISTICAL SUMMARY" D HDR^SCRPW62 Q:SDOUT
|
---|
| 137 | W !! S (SDTOT,SDIV,SDIVL)=0,SDIVN=""
|
---|
| 138 | F S SDIVN=$O(SDIV(SDIVN)) Q:SDIVN="" D
|
---|
| 139 | .S SDIVN(SDIV(SDIVN))=SDIVN S:$L(SDIVN)>SDIVL SDIVL=$L(SDIVN)
|
---|
| 140 | F S SDIV=$O(^TMP("SCRPW",$J,"STATS",SDIV)) Q:'SDIV D
|
---|
| 141 | .S SDEL=0 F S SDEL=$O(^TMP("SCRPW",$J,"STATS",SDIV,SDEL)) Q:'SDEL D
|
---|
| 142 | ..S SDAPT=^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"APPTS"),SDTOT=SDTOT+SDAPT
|
---|
| 143 | ..S SDX=$$CSCEL(SDEL)_" appointments at "_SDIVN(SDIV)_":"
|
---|
| 144 | ..W !?(50-SDIVL),$J(SDX,(28+SDIVL)),?80,$J(SDAPT,6,0)
|
---|
| 145 | ..Q
|
---|
| 146 | .Q
|
---|
| 147 | W !?(50-SDIVL),$E(SDLINE,1,(36+SDIVL)),!?72,"TOTAL:",?80,$J(SDTOT,6,0)
|
---|
| 148 | AQ I $E(IOST)="C",'SDOUT N DIR S DIR(0)="E" D ^DIR
|
---|
| 149 | Q
|
---|
| 150 | ;
|
---|
| 151 | DIV(SDIV) ;Check division
|
---|
| 152 | S:'$L(SDIV) SDIV=$$PRIM^VASITE()
|
---|
| 153 | Q:'SDDIV 1 Q $D(SDDIV(+SDIV))
|
---|
| 154 | ;
|
---|
| 155 | ;
|
---|
| 156 | STOP ;Check for stop task request
|
---|
| 157 | S:$G(ZTQUEUED) (SDOUT,ZTSTOP)=$S($$S^%ZTLOAD:1,1:0) Q
|
---|
| 158 | ;
|
---|
| 159 | ADPRT(SDIV) ;Print report for a division
|
---|
| 160 | D DHDR^SCRPW40(3,.SDT) S:SDELIM SDPAGE=1
|
---|
| 161 | I '$D(^TMP("SCRPW",$J,SDIV)) D HDR^SCRPW62 Q:SDOUT D Q
|
---|
| 162 | .S SDX="No appointments found for this division within report parameters!"
|
---|
| 163 | .I SDELIM W !,SDX Q
|
---|
| 164 | .W !!?(132-$L(SDX)\2),SDX Q
|
---|
| 165 | D HDR^SCRPW62 Q:SDOUT
|
---|
| 166 | S SDEL="" F S SDEL=$O(^TMP("SCRPW",$J,SDIV,SDEL)) Q:'SDEL!SDOUT D
|
---|
| 167 | .S SDNAME="" F S SDNAME=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME)) Q:SDNAME=""!SDOUT D
|
---|
| 168 | ..S DFN=0 F S DFN=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN)) Q:'DFN!SDOUT D
|
---|
| 169 | ...S SD0=$G(^DPT(DFN,0)) Q:'$L(SD0)
|
---|
| 170 | ...S SDREL=$S(SDEL=1:0,1:+$P($G(^DPT(DFN,.372,0)),U,4))
|
---|
| 171 | ...S SDREL=SDREL+^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN)
|
---|
| 172 | ...D:$Y>(IOSL-(4+SDREL)) HDR^SCRPW62 Q:SDOUT
|
---|
| 173 | ...D PLINE(DFN,SD0,SDEL)
|
---|
| 174 | ...Q
|
---|
| 175 | ..Q
|
---|
| 176 | .Q
|
---|
| 177 | Q
|
---|
| 178 | ;
|
---|
| 179 | PLINE(DFN,SD0,SDEL) ;Print patient detail line
|
---|
| 180 | ;Input: DFN=patient ifn
|
---|
| 181 | ; SD0=zeroeth node of patient record
|
---|
| 182 | ; SDEL=1 or 3 to denote SC > or < 50%
|
---|
| 183 | ;
|
---|
| 184 | N SDSSN,SDNAME,SDDTE,SDADD,SDST,SDX,SDI,SDY,SDELN,SDZIP,SDZ,SDZA,SDII
|
---|
| 185 | S SDNAME=$P(SD0,U),SDSSN=$P(SD0,U,9),SDDTE=$$FMTE^XLFDT($P(SD0,U,16))
|
---|
| 186 | S SDSSN=$E(SDSSN,1,3)_"-"_$E(SDSSN,4,5)_"-"_$E(SDSSN,6,10)
|
---|
| 187 | S SDEL=$G(SDEL),SDELN=$$CSCEL(SDEL),SDADD=$G(^DPT(DFN,.11))
|
---|
| 188 | S SDST=$P($G(^DIC(5,+$P(SDADD,U,5),0)),U,2),SDZIP=$P(SDADD,U,12)
|
---|
| 189 | S:$L(SDZIP)=9 SDZIP=$E(SDZIP,1,5)_"-"_$E(SDZIP,6,9)
|
---|
| 190 | I SDELIM D ;Set up delimited output
|
---|
| 191 | .S SDZ=SDNAME_U_SDSSN_U_SDELN_U_SDDTE_U_$P(SDADD,U)_U_$P(SDADD,U,4)
|
---|
| 192 | .S SDZ=SDZ_U_SDST_U_SDZIP_U_$P($G(^DPT(DFN,.13)),U)
|
---|
| 193 | .Q
|
---|
| 194 | I 'SDELIM D
|
---|
| 195 | .;Print name, SSN, eligibility, date entered, address and phone number
|
---|
| 196 | .W !,"Name: ",SDNAME,?39,"SSN: ",SDSSN,?58,"Prim. Elig.: ",SDELN
|
---|
| 197 | .W ?84,"Date entered: ",SDDTE,!?10,"Address: ",$P(SDADD,U)
|
---|
| 198 | .W ?55,$P(SDADD,U,4),$S($L($P(SDADD,U,4)):", ",1:""),SDST," ",SDZIP
|
---|
| 199 | .W ?88,"Phone number: ",$P($G(^DPT(DFN,.13)),U)
|
---|
| 200 | .;Print SC disabilities for 0-50% SC veterans
|
---|
| 201 | .I SDEL=3 S SDI=0 F S SDI=$O(^DPT(DFN,.372,SDI)) Q:'SDI D
|
---|
| 202 | ..S SDX=$G(^DPT(DFN,.372,SDI,0)) Q:'$P(SDX,U,3)
|
---|
| 203 | ..S SDY=$G(^DIC(31,+SDX,0)) Q:'$L(SDY)
|
---|
| 204 | ..W !?20,"SC disability: ",$P(SDY,U,3)," ",$P(SDY,U)
|
---|
| 205 | ..W ?89,"%SC: ",$P(SDX,U,2)
|
---|
| 206 | ..Q
|
---|
| 207 | .Q
|
---|
| 208 | I SDRPT="E" D Q
|
---|
| 209 | .I SDELIM W !,SDZ Q
|
---|
| 210 | .W !
|
---|
| 211 | .Q
|
---|
| 212 | ;Print appointment details for future appointment report
|
---|
| 213 | S SDI=0 D
|
---|
| 214 | .F S SDI=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN,SDI)) Q:'SDI D
|
---|
| 215 | ..S SDA0=^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN,SDI)
|
---|
| 216 | ..I 'SDELIM D
|
---|
| 217 | ...W !?30,"Appointment: ",$$FMTE^XLFDT(SDI)
|
---|
| 218 | ...W ?63,$P($G(^SC(+$P(SDA0,U,2),0)),U),?96,"Desired date: "
|
---|
| 219 | ...W $$FMTE^XLFDT(+SDA0),?124,"(",$$FMDIFF^XLFDT(SDI,+SDA0),")"
|
---|
| 220 | ...Q
|
---|
| 221 | ..I SDELIM D ;Delimited output
|
---|
| 222 | ...N SDC0,SDCP,SDCZ,SDADM,SDADME
|
---|
| 223 | ...S SDC0=$G(^SC(+$P(SDA0,U,2),0)),SDCZ=$$CPAIR^SCRPW71(SDC0,.SDCP)
|
---|
| 224 | ...S SDII=0,(SDZA,SDADM,SDADME)=""
|
---|
| 225 | ...F S SDII=$O(^SC(+$P(SDA0,U,2),"S",SDI,1,SDII)) D Q:'SDII
|
---|
| 226 | ....Q:+$G(^SC(+$P(SDA0,U,2),"S",SDI,1,+SDII,0))'=DFN
|
---|
| 227 | ....S SDADM=$P(^SC(+$P(SDA0,U,2),"S",SDI,1,+SDII,0),U,7)
|
---|
| 228 | ....S SDADME=$$FMTE^XLFDT(SDADM),SDII=0
|
---|
| 229 | ....Q
|
---|
| 230 | ...S SDCZ=SDCP_U_$P($$SITE^VASITE(,$P(SDC0,U,15)),U,2)_U_SDADME
|
---|
| 231 | ...S SDZA=SDZA_U_$$FMTE^XLFDT(SDI)_U_$P(SDC0,U)_U_SDCZ
|
---|
| 232 | ...S SDZA=SDZA_U_$$FMTE^XLFDT(+SDA0)_U_$$FMDIFF^XLFDT(SDI,+SDA0)
|
---|
| 233 | ...S SDZA=SDZA_U_$S(SDADM:$$FMDIFF^XLFDT(+SDA0,SDADM),1:"")
|
---|
| 234 | ...W !,SDZ,SDZA
|
---|
| 235 | ...Q
|
---|
| 236 | ..Q
|
---|
| 237 | .Q
|
---|
| 238 | W:'SDELIM ! Q
|
---|
| 239 | ;
|
---|
| 240 | CSCEL(SDEL) ;Convert SC elig. to external
|
---|
| 241 | Q $S(SDEL=1:"SC 50-100%",SDEL=3:"SC < 50%",1:"")
|
---|