Changeset 623 for WorldVistAEHR/trunk/r/SCHEDULING-SD-SC/SCRPW63.m
- Timestamp:
- Dec 4, 2009, 12:11:15 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WorldVistAEHR/trunk/r/SCHEDULING-SD-SC/SCRPW63.m
r613 r623 1 SCRPW63 ;BP-CIOFO/KEITH - SC veterans awaiting appointments (cont.) ; 23 August 2002@20:23 2 ;;5.3;Scheduling;**267,269,357,491**;AUG 13, 1993;Build 53 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 S SDZ(1)=SDZ D DELIM^SCRPW62(.SDZ) Q ;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 ...S SDZ(1)=SDZ_SDZA 235 ...D DELIM^SCRPW62(.SDZ) ;W !,SDZ,SDZA 236 ...Q 237 ..Q 238 .Q 239 W:'SDELIM ! Q 240 ; 241 CSCEL(SDEL) ;Convert SC elig. to external 242 Q $S(SDEL=1:"SC 50-100%",SDEL=3:"SC < 50%",1:"") 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:"")
Note:
See TracChangeset
for help on using the changeset viewer.