- SCRPW63 ;BP-CIOFO/KEITH - SC veterans awaiting appointments (cont.) ; 23 August 2002@20:23
- ;;5.3;Scheduling;**267,269,357,491**;AUG 13, 1993;Build 53
- ;
- E ;Gather data for patients entered report
- N DFN,SDX,SDATE,SD0,SDSCEL,SDEL,SDYR,SDREL,SDTOT,SDSDT,SDLVDT,SDEDT
- N SDNAME
- D SCEL^SCRPW62(.SDSCEL,SDSCVT) ;Get eligibility code pointers
- S (SDSDT,SDATE)=DT-(10000*SDATES),SDSTOP=0
- ;Find the patients entered after date specified
- S DFN=0 F Q:SDSTOP S DFN=$O(^DPT(DFN)) Q:'DFN D
- .Q:$D(^DPT(DFN,-9)) ;Skip merged records
- .I DFN#1000=0 D STOP Q:SDSTOP ;Check for stop task request
- .S SDLVDT=""
- .S SD0=$G(^DPT(DFN,0)) Q:'$L(SD0)
- .S SDEDT=$P(SD0,U,16) S:SDEDT SDLVDT=SDEDT
- .I SDEDT,SDEDT<SDATE Q ;Date entered < start date
- .I 'SDEDT,SDLVDT<SDATE Q ;No date entered, last valid date < start
- .S SDEL=+$G(^DPT(DFN,.36)) Q:'$D(SDSCEL(SDEL)) ;Only SC vets
- .Q:+$G(^DPT(DFN,.35)) ;No deceased patients
- .Q:$$SCHAPP(DFN) ;Appointments not cancelled by clinic?
- .S SDYR=$$FMDIFF^XLFDT(DT,$S(SDEDT:SDEDT,1:SDLVDT))\365.25 ;Year entered
- .S SDEL=SDSCEL(SDEL) D Q:SDFMT="S"
- ..;Record statistics
- ..S ^TMP("SCRPW",$J,"STATS",SDYR,SDEL)=$G(^TMP("SCRPW",$J,"STATS",SDYR,SDEL))+1
- ..Q
- .S SDNAME=$P(SD0,U) Q:'$L(SDNAME)
- .S ^TMP("SCRPW",$J,SDEL,SDNAME,DFN)=SD0
- .Q
- Q:SDSTOP
- D:$E(IOST,1,2)="C-" DISP0^SCRPW23
- I '$D(^TMP("SCRPW",$J)) D Q ;Negative report
- .D HDR^SCRPW62 S SDX="No patients found within report parameters!"
- .W !!?(132-$L(SDX)\2),SDX
- .I $E(IOST)="C",'SDOUT N DIR S DIR(0)="E" D ^DIR
- .Q
- ;Detailed report
- I SDFMT="D" D HDR^SCRPW62 S SDEL=0 F S SDEL=$O(^TMP("SCRPW",$J,SDEL)) Q:'SDEL!SDOUT D
- .S SDNAME="" F S SDNAME=$O(^TMP("SCRPW",$J,SDEL,SDNAME)) Q:SDNAME=""!SDOUT S DFN=0 D
- ..F S DFN=$O(^TMP("SCRPW",$J,SDEL,SDNAME,DFN)) Q:'DFN!SDOUT D
- ...S SDREL=$S(SDEL=1:0,1:+$P($G(^DPT(DFN,.372,0)),U,4))
- ...D:$Y>(IOSL-(4+SDREL)) HDR^SCRPW62 Q:SDOUT
- ...S SDX=^TMP("SCRPW",$J,SDEL,SDNAME,DFN) D PLINE(DFN,SDX,SDEL)
- ...Q
- .Q
- Q:SDOUT
- ESUM ;Print summary
- G:SDELIM EQ
- S SDT(3)="STATISTICAL SUMMARY" D HDR^SCRPW62 Q:SDOUT
- W !! S SDYR="",SDTOT=0
- F S SDYR=$O(^TMP("SCRPW",$J,"STATS",SDYR)) Q:SDYR="" D
- .S SDEL=0 F S SDEL=$O(^TMP("SCRPW",$J,"STATS",SDYR,SDEL)) Q:'SDEL D
- ..S SDX=$$CSCEL(SDEL)_" veterans entered "_$S(SDYR=0:"in the past year",SDYR=1:"two years ago",SDYR=2:"three years ago",1:"")_":"
- ..W !?36,$J(SDX,45),?83,$J(^TMP("SCRPW",$J,"STATS",SDYR,SDEL),6,0)
- ..S SDTOT=SDTOT+^TMP("SCRPW",$J,"STATS",SDYR,SDEL)
- ..Q
- .Q
- W !?36,$E(SDLINE,1,53),!?75,"TOTAL:",?83,$J(SDTOT,6,0)
- EQ I $E(IOST,1,2)="C-" N DIR S DIR(0)="E" W !! D ^DIR
- Q
- ;
- SCHAPP(DFN) ;Look for scheduled appointments not cancelled by clinic
- ; Input: DFN=patient ifn
- ;Output: '1' if appointments exist, '0' otherwise
- N SDI,SDX,SDY
- S (SDI,SDY)=0
- F S SDI=$O(^DPT(DFN,"S",SDI)) Q:'SDI!SDY D
- .S SDX=$G(^DPT(DFN,"S",SDI,0)) Q:'$L(SDX)
- .S SDX=$P(SDX,U,2) I $L(SDX),"CA"[SDX Q
- .S SDY=1
- .Q
- Q SDY
- ;
- A ;Gather data for future appointments report
- N DFN,SDA0,SDX,SDI,SDSCEL,SDEL,SDDATE,SDIFF,SDAPT,SDIVL,SDIVN
- N SDREL,SDTOT,SDIV,SD0,SDNAME
- D SCEL^SCRPW62(.SDSCEL,SDSCVT) ;Get eligibility code pointers
- S DFN=0 F S DFN=$O(^DPT(DFN)) Q:'DFN!SDSTOP D
- .I DFN#1000=0 D STOP Q:SDSTOP ;Check for stop task request
- .S SDEL=+$G(^DPT(DFN,.36)) Q:'$D(SDSCEL(SDEL)) ;Only SC vets
- .S SDEL=SDSCEL(SDEL)
- .Q:+$G(^DPT(DFN,.35)) ;No deceased patients
- .S SDI=DT F S SDI=$O(^DPT(DFN,"S",SDI)) Q:'SDI D
- ..S SDDATE=+$G(^DPT(DFN,"S",SDI,1)) Q:'SDDATE Q:SDDATE>SDI
- ..S SDA0=$G(^DPT(DFN,"S",SDI,0)) Q:'$L(SDA0)
- ..S SDIV=$P($G(^SC(+SDA0,0)),U,15) Q:'$$DIV(.SDIV) ;Division check
- ..;Exclude cancelled appointments
- ..S SDX=$P(SDA0,U,2) I $L(SDX),"PCA"[SDX Q
- ..S SDIFF=$$FMDIFF^XLFDT(SDI,SDDATE) Q:SDIFF'>SDATES
- ..S SDNAME=$P($G(^DPT(DFN,0)),U) Q:'$L(SDNAME)
- ..;Record detailed information
- ..S ^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN,SDI)=SDDATE_U_SDA0
- ..S ^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN)=$G(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN))+1
- ..Q
- .Q
- Q:SDSTOP
- ;Tally up statistics
- S SDIV=0 F S SDIV=$O(^TMP("SCRPW",$J,SDIV)) Q:'SDIV D
- .S SDEL=0 F S SDEL=$O(^TMP("SCRPW",$J,SDIV,SDEL)) Q:'SDEL D
- ..S SDNAME="" F S SDNAME=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME)) Q:SDNAME=""!SDOUT D
- ...S DFN=0 F S DFN=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN)) Q:'DFN D
- ....S ^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"PTS")=$G(^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"PTS"))+1
- ....S SDI=0 F S SDI=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN,SDI)) Q:'SDI D
- .....S ^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"APPTS")=$G(^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"APPTS"))+1
- .....Q
- ....Q
- ...Q
- ..Q
- .Q
- Q:SDSTOP
- ;Print report
- S SDIV="" F S SDIV=$O(SDDIV(SDIV)) Q:'SDIV S SDIV(SDDIV(SDIV))=SDIV
- I 'SDDIV,$P(SDDIV,U,2)'="ALL DIVISIONS" D
- .S SDIV($P(SDDIV,U,2))=$$PRIM^VASITE()
- .Q
- I $P(SDDIV,U,2)="ALL DIVISIONS" S SDI=0 D
- .F S SDI=$O(^TMP("SCRPW",$J,SDI)) Q:'SDI D
- ..S SDX=$P($G(^DG(40.8,SDI,0)),U) S:$L(SDX) SDIV(SDX)=SDI
- ..Q
- .Q
- D:$E(IOST)="C" DISP0^SCRPW23
- I '$D(^TMP("SCRPW",$J)) D Q ;Negative report
- .S SDIV=0 D DHDR^SCRPW40(3,.SDT),HDR^SCRPW62
- .S SDX="No appointments found that meet report criteria."
- .I SDELIM W !,SDX Q
- .W !!?(IOM-$L(SDX)\2),SDX
- .I $E(IOST)="C",'SDOUT N DIR S DIR(0)="E" D ^DIR
- .Q
- G:SDFMT="S" ASUM
- ;Print detailed report by division
- S SDIVN="" F S SDIVN=$O(SDIV(SDIVN)) Q:SDIVN=""!SDOUT D
- .S SDIV=SDIV(SDIVN) D ADPRT(.SDIV)
- .Q
- Q:SDOUT
- ;Print summary
- ASUM G:SDELIM AQ
- S SDT(3)="STATISTICAL SUMMARY" D HDR^SCRPW62 Q:SDOUT
- W !! S (SDTOT,SDIV,SDIVL)=0,SDIVN=""
- F S SDIVN=$O(SDIV(SDIVN)) Q:SDIVN="" D
- .S SDIVN(SDIV(SDIVN))=SDIVN S:$L(SDIVN)>SDIVL SDIVL=$L(SDIVN)
- F S SDIV=$O(^TMP("SCRPW",$J,"STATS",SDIV)) Q:'SDIV D
- .S SDEL=0 F S SDEL=$O(^TMP("SCRPW",$J,"STATS",SDIV,SDEL)) Q:'SDEL D
- ..S SDAPT=^TMP("SCRPW",$J,"STATS",SDIV,SDEL,"APPTS"),SDTOT=SDTOT+SDAPT
- ..S SDX=$$CSCEL(SDEL)_" appointments at "_SDIVN(SDIV)_":"
- ..W !?(50-SDIVL),$J(SDX,(28+SDIVL)),?80,$J(SDAPT,6,0)
- ..Q
- .Q
- W !?(50-SDIVL),$E(SDLINE,1,(36+SDIVL)),!?72,"TOTAL:",?80,$J(SDTOT,6,0)
- AQ I $E(IOST)="C",'SDOUT N DIR S DIR(0)="E" D ^DIR
- Q
- ;
- DIV(SDIV) ;Check division
- S:'$L(SDIV) SDIV=$$PRIM^VASITE()
- Q:'SDDIV 1 Q $D(SDDIV(+SDIV))
- ;
- ;
- STOP ;Check for stop task request
- S:$G(ZTQUEUED) (SDOUT,ZTSTOP)=$S($$S^%ZTLOAD:1,1:0) Q
- ;
- ADPRT(SDIV) ;Print report for a division
- D DHDR^SCRPW40(3,.SDT) S:SDELIM SDPAGE=1
- I '$D(^TMP("SCRPW",$J,SDIV)) D HDR^SCRPW62 Q:SDOUT D Q
- .S SDX="No appointments found for this division within report parameters!"
- .I SDELIM W !,SDX Q
- .W !!?(132-$L(SDX)\2),SDX Q
- D HDR^SCRPW62 Q:SDOUT
- S SDEL="" F S SDEL=$O(^TMP("SCRPW",$J,SDIV,SDEL)) Q:'SDEL!SDOUT D
- .S SDNAME="" F S SDNAME=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME)) Q:SDNAME=""!SDOUT D
- ..S DFN=0 F S DFN=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN)) Q:'DFN!SDOUT D
- ...S SD0=$G(^DPT(DFN,0)) Q:'$L(SD0)
- ...S SDREL=$S(SDEL=1:0,1:+$P($G(^DPT(DFN,.372,0)),U,4))
- ...S SDREL=SDREL+^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN)
- ...D:$Y>(IOSL-(4+SDREL)) HDR^SCRPW62 Q:SDOUT
- ...D PLINE(DFN,SD0,SDEL)
- ...Q
- ..Q
- .Q
- Q
- ;
- PLINE(DFN,SD0,SDEL) ;Print patient detail line
- ;Input: DFN=patient ifn
- ; SD0=zeroeth node of patient record
- ; SDEL=1 or 3 to denote SC > or < 50%
- ;
- N SDSSN,SDNAME,SDDTE,SDADD,SDST,SDX,SDI,SDY,SDELN,SDZIP,SDZ,SDZA,SDII
- S SDNAME=$P(SD0,U),SDSSN=$P(SD0,U,9),SDDTE=$$FMTE^XLFDT($P(SD0,U,16))
- S SDSSN=$E(SDSSN,1,3)_"-"_$E(SDSSN,4,5)_"-"_$E(SDSSN,6,10)
- S SDEL=$G(SDEL),SDELN=$$CSCEL(SDEL),SDADD=$G(^DPT(DFN,.11))
- S SDST=$P($G(^DIC(5,+$P(SDADD,U,5),0)),U,2),SDZIP=$P(SDADD,U,12)
- S:$L(SDZIP)=9 SDZIP=$E(SDZIP,1,5)_"-"_$E(SDZIP,6,9)
- I SDELIM D ;Set up delimited output
- .S SDZ=SDNAME_U_SDSSN_U_SDELN_U_SDDTE_U_$P(SDADD,U)_U_$P(SDADD,U,4)
- .S SDZ=SDZ_U_SDST_U_SDZIP_U_$P($G(^DPT(DFN,.13)),U)
- .Q
- I 'SDELIM D
- .;Print name, SSN, eligibility, date entered, address and phone number
- .W !,"Name: ",SDNAME,?39,"SSN: ",SDSSN,?58,"Prim. Elig.: ",SDELN
- .W ?84,"Date entered: ",SDDTE,!?10,"Address: ",$P(SDADD,U)
- .W ?55,$P(SDADD,U,4),$S($L($P(SDADD,U,4)):", ",1:""),SDST," ",SDZIP
- .W ?88,"Phone number: ",$P($G(^DPT(DFN,.13)),U)
- .;Print SC disabilities for 0-50% SC veterans
- .I SDEL=3 S SDI=0 F S SDI=$O(^DPT(DFN,.372,SDI)) Q:'SDI D
- ..S SDX=$G(^DPT(DFN,.372,SDI,0)) Q:'$P(SDX,U,3)
- ..S SDY=$G(^DIC(31,+SDX,0)) Q:'$L(SDY)
- ..W !?20,"SC disability: ",$P(SDY,U,3)," ",$P(SDY,U)
- ..W ?89,"%SC: ",$P(SDX,U,2)
- ..Q
- .Q
- I SDRPT="E" D Q
- .I SDELIM S SDZ(1)=SDZ D DELIM^SCRPW62(.SDZ) Q ;W !,SDZ Q
- .W !
- .Q
- ;Print appointment details for future appointment report
- S SDI=0 D
- .F S SDI=$O(^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN,SDI)) Q:'SDI D
- ..S SDA0=^TMP("SCRPW",$J,SDIV,SDEL,SDNAME,DFN,SDI)
- ..I 'SDELIM D
- ...W !?30,"Appointment: ",$$FMTE^XLFDT(SDI)
- ...W ?63,$P($G(^SC(+$P(SDA0,U,2),0)),U),?96,"Desired date: "
- ...W $$FMTE^XLFDT(+SDA0),?124,"(",$$FMDIFF^XLFDT(SDI,+SDA0),")"
- ...Q
- ..I SDELIM D ;Delimited output
- ...N SDC0,SDCP,SDCZ,SDADM,SDADME
- ...S SDC0=$G(^SC(+$P(SDA0,U,2),0)),SDCZ=$$CPAIR^SCRPW71(SDC0,.SDCP)
- ...S SDII=0,(SDZA,SDADM,SDADME)=""
- ...F S SDII=$O(^SC(+$P(SDA0,U,2),"S",SDI,1,SDII)) D Q:'SDII
- ....Q:+$G(^SC(+$P(SDA0,U,2),"S",SDI,1,+SDII,0))'=DFN
- ....S SDADM=$P(^SC(+$P(SDA0,U,2),"S",SDI,1,+SDII,0),U,7)
- ....S SDADME=$$FMTE^XLFDT(SDADM),SDII=0
- ....Q
- ...S SDCZ=SDCP_U_$P($$SITE^VASITE(,$P(SDC0,U,15)),U,2)_U_SDADME
- ...S SDZA=SDZA_U_$$FMTE^XLFDT(SDI)_U_$P(SDC0,U)_U_SDCZ
- ...S SDZA=SDZA_U_$$FMTE^XLFDT(+SDA0)_U_$$FMDIFF^XLFDT(SDI,+SDA0)
- ...S SDZA=SDZA_U_$S(SDADM:$$FMDIFF^XLFDT(+SDA0,SDADM),1:"")
- ...S SDZ(1)=SDZ_SDZA
- ...D DELIM^SCRPW62(.SDZ) ;W !,SDZ,SDZA
- ...Q
- ..Q
- .Q
- W:'SDELIM ! Q
- ;
- CSCEL(SDEL) ;Convert SC elig. to external
- Q $S(SDEL=1:"SC 50-100%",SDEL=3:"SC < 50%",1:"")
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCRPW63 9865 printed Apr 23, 2025@18:58:30 Page 2
- SCRPW63 ;BP-CIOFO/KEITH - SC veterans awaiting appointments (cont.) ; 23 August 2002@20:23
- +1 ;;5.3;Scheduling;**267,269,357,491**;AUG 13, 1993;Build 53
- +2 ;
- E ;Gather data for patients entered report
- +1 NEW DFN,SDX,SDATE,SD0,SDSCEL,SDEL,SDYR,SDREL,SDTOT,SDSDT,SDLVDT,SDEDT
- +2 NEW SDNAME
- +3 ;Get eligibility code pointers
- DO SCEL^SCRPW62(.SDSCEL,SDSCVT)
- +4 SET (SDSDT,SDATE)=DT-(10000*SDATES)
- SET SDSTOP=0
- +5 ;Find the patients entered after date specified
- +6 SET DFN=0
- FOR
- if SDSTOP
- QUIT
- SET DFN=$ORDER(^DPT(DFN))
- if 'DFN
- QUIT
- Begin DoDot:1
- +7 ;Skip merged records
- if $DATA(^DPT(DFN,-9))
- QUIT
- +8 ;Check for stop task request
- IF DFN#1000=0
- DO STOP
- if SDSTOP
- QUIT
- +9 SET SDLVDT=""
- +10 SET SD0=$GET(^DPT(DFN,0))
- if '$LENGTH(SD0)
- QUIT
- +11 SET SDEDT=$PIECE(SD0,U,16)
- if SDEDT
- SET SDLVDT=SDEDT
- +12 ;Date entered < start date
- IF SDEDT
- IF SDEDT<SDATE
- QUIT
- +13 ;No date entered, last valid date < start
- IF 'SDEDT
- IF SDLVDT<SDATE
- QUIT
- +14 ;Only SC vets
- SET SDEL=+$GET(^DPT(DFN,.36))
- if '$DATA(SDSCEL(SDEL))
- QUIT
- +15 ;No deceased patients
- if +$GET(^DPT(DFN,.35))
- QUIT
- +16 ;Appointments not cancelled by clinic?
- if $$SCHAPP(DFN)
- QUIT
- +17 ;Year entered
- SET SDYR=$$FMDIFF^XLFDT(DT,$SELECT(SDEDT:SDEDT,1:SDLVDT))\365.25
- +18 SET SDEL=SDSCEL(SDEL)
- Begin DoDot:2
- +19 ;Record statistics
- +20 SET ^TMP("SCRPW",$JOB,"STATS",SDYR,SDEL)=$GET(^TMP("SCRPW",$JOB,"STATS",SDYR,SDEL))+1
- +21 QUIT
- End DoDot:2
- if SDFMT="S"
- QUIT
- +22 SET SDNAME=$PIECE(SD0,U)
- if '$LENGTH(SDNAME)
- QUIT
- +23 SET ^TMP("SCRPW",$JOB,SDEL,SDNAME,DFN)=SD0
- +24 QUIT
- End DoDot:1
- +25 if SDSTOP
- QUIT
- +26 if $EXTRACT(IOST,1,2)="C-"
- DO DISP0^SCRPW23
- +27 ;Negative report
- IF '$DATA(^TMP("SCRPW",$JOB))
- Begin DoDot:1
- +28 DO HDR^SCRPW62
- SET SDX="No patients found within report parameters!"
- +29 WRITE !!?(132-$LENGTH(SDX)\2),SDX
- +30 IF $EXTRACT(IOST)="C"
- IF 'SDOUT
- NEW DIR
- SET DIR(0)="E"
- DO ^DIR
- +31 QUIT
- End DoDot:1
- QUIT
- +32 ;Detailed report
- +33 IF SDFMT="D"
- DO HDR^SCRPW62
- SET SDEL=0
- FOR
- SET SDEL=$ORDER(^TMP("SCRPW",$JOB,SDEL))
- if 'SDEL!SDOUT
- QUIT
- Begin DoDot:1
- +34 SET SDNAME=""
- FOR
- SET SDNAME=$ORDER(^TMP("SCRPW",$JOB,SDEL,SDNAME))
- if SDNAME=""!SDOUT
- QUIT
- SET DFN=0
- Begin DoDot:2
- +35 FOR
- SET DFN=$ORDER(^TMP("SCRPW",$JOB,SDEL,SDNAME,DFN))
- if 'DFN!SDOUT
- QUIT
- Begin DoDot:3
- +36 SET SDREL=$SELECT(SDEL=1:0,1:+$PIECE($GET(^DPT(DFN,.372,0)),U,4))
- +37 if $Y>(IOSL-(4+SDREL))
- DO HDR^SCRPW62
- if SDOUT
- QUIT
- +38 SET SDX=^TMP("SCRPW",$JOB,SDEL,SDNAME,DFN)
- DO PLINE(DFN,SDX,SDEL)
- +39 QUIT
- End DoDot:3
- End DoDot:2
- +40 QUIT
- End DoDot:1
- +41 if SDOUT
- QUIT
- ESUM ;Print summary
- +1 if SDELIM
- GOTO EQ
- +2 SET SDT(3)="STATISTICAL SUMMARY"
- DO HDR^SCRPW62
- if SDOUT
- QUIT
- +3 WRITE !!
- SET SDYR=""
- SET SDTOT=0
- +4 FOR
- SET SDYR=$ORDER(^TMP("SCRPW",$JOB,"STATS",SDYR))
- if SDYR=""
- QUIT
- Begin DoDot:1
- +5 SET SDEL=0
- FOR
- SET SDEL=$ORDER(^TMP("SCRPW",$JOB,"STATS",SDYR,SDEL))
- if 'SDEL
- QUIT
- Begin DoDot:2
- +6 SET SDX=$$CSCEL(SDEL)_" veterans entered "_$SELECT(SDYR=0:"in the past year",SDYR=1:"two years ago",SDYR=2:"three years ago",1:"")_":"
- +7 WRITE !?36,$JUSTIFY(SDX,45),?83,$JUSTIFY(^TMP("SCRPW",$JOB,"STATS",SDYR,SDEL),6,0)
- +8 SET SDTOT=SDTOT+^TMP("SCRPW",$JOB,"STATS",SDYR,SDEL)
- +9 QUIT
- End DoDot:2
- +10 QUIT
- End DoDot:1
- +11 WRITE !?36,$EXTRACT(SDLINE,1,53),!?75,"TOTAL:",?83,$JUSTIFY(SDTOT,6,0)
- EQ IF $EXTRACT(IOST,1,2)="C-"
- NEW DIR
- SET DIR(0)="E"
- WRITE !!
- DO ^DIR
- +1 QUIT
- +2 ;
- SCHAPP(DFN) ;Look for scheduled appointments not cancelled by clinic
- +1 ; Input: DFN=patient ifn
- +2 ;Output: '1' if appointments exist, '0' otherwise
- +3 NEW SDI,SDX,SDY
- +4 SET (SDI,SDY)=0
- +5 FOR
- SET SDI=$ORDER(^DPT(DFN,"S",SDI))
- if 'SDI!SDY
- QUIT
- Begin DoDot:1
- +6 SET SDX=$GET(^DPT(DFN,"S",SDI,0))
- if '$LENGTH(SDX)
- QUIT
- +7 SET SDX=$PIECE(SDX,U,2)
- IF $LENGTH(SDX)
- IF "CA"[SDX
- QUIT
- +8 SET SDY=1
- +9 QUIT
- End DoDot:1
- +10 QUIT SDY
- +11 ;
- A ;Gather data for future appointments report
- +1 NEW DFN,SDA0,SDX,SDI,SDSCEL,SDEL,SDDATE,SDIFF,SDAPT,SDIVL,SDIVN
- +2 NEW SDREL,SDTOT,SDIV,SD0,SDNAME
- +3 ;Get eligibility code pointers
- DO SCEL^SCRPW62(.SDSCEL,SDSCVT)
- +4 SET DFN=0
- FOR
- SET DFN=$ORDER(^DPT(DFN))
- if 'DFN!SDSTOP
- QUIT
- Begin DoDot:1
- +5 ;Check for stop task request
- IF DFN#1000=0
- DO STOP
- if SDSTOP
- QUIT
- +6 ;Only SC vets
- SET SDEL=+$GET(^DPT(DFN,.36))
- if '$DATA(SDSCEL(SDEL))
- QUIT
- +7 SET SDEL=SDSCEL(SDEL)
- +8 ;No deceased patients
- if +$GET(^DPT(DFN,.35))
- QUIT
- +9 SET SDI=DT
- FOR
- SET SDI=$ORDER(^DPT(DFN,"S",SDI))
- if 'SDI
- QUIT
- Begin DoDot:2
- +10 SET SDDATE=+$GET(^DPT(DFN,"S",SDI,1))
- if 'SDDATE
- QUIT
- if SDDATE>SDI
- QUIT
- +11 SET SDA0=$GET(^DPT(DFN,"S",SDI,0))
- if '$LENGTH(SDA0)
- QUIT
- +12 ;Division check
- SET SDIV=$PIECE($GET(^SC(+SDA0,0)),U,15)
- if '$$DIV(.SDIV)
- QUIT
- +13 ;Exclude cancelled appointments
- +14 SET SDX=$PIECE(SDA0,U,2)
- IF $LENGTH(SDX)
- IF "PCA"[SDX
- QUIT
- +15 SET SDIFF=$$FMDIFF^XLFDT(SDI,SDDATE)
- if SDIFF'>SDATES
- QUIT
- +16 SET SDNAME=$PIECE($GET(^DPT(DFN,0)),U)
- if '$LENGTH(SDNAME)
- QUIT
- +17 ;Record detailed information
- +18 SET ^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME,DFN,SDI)=SDDATE_U_SDA0
- +19 SET ^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME,DFN)=$GET(^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME,DFN))+1
- +20 QUIT
- End DoDot:2
- +21 QUIT
- End DoDot:1
- +22 if SDSTOP
- QUIT
- +23 ;Tally up statistics
- +24 SET SDIV=0
- FOR
- SET SDIV=$ORDER(^TMP("SCRPW",$JOB,SDIV))
- if 'SDIV
- QUIT
- Begin DoDot:1
- +25 SET SDEL=0
- FOR
- SET SDEL=$ORDER(^TMP("SCRPW",$JOB,SDIV,SDEL))
- if 'SDEL
- QUIT
- Begin DoDot:2
- +26 SET SDNAME=""
- FOR
- SET SDNAME=$ORDER(^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME))
- if SDNAME=""!SDOUT
- QUIT
- Begin DoDot:3
- +27 SET DFN=0
- FOR
- SET DFN=$ORDER(^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME,DFN))
- if 'DFN
- QUIT
- Begin DoDot:4
- +28 SET ^TMP("SCRPW",$JOB,"STATS",SDIV,SDEL,"PTS")=$GET(^TMP("SCRPW",$JOB,"STATS",SDIV,SDEL,"PTS"))+1
- +29 SET SDI=0
- FOR
- SET SDI=$ORDER(^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME,DFN,SDI))
- if 'SDI
- QUIT
- Begin DoDot:5
- +30 SET ^TMP("SCRPW",$JOB,"STATS",SDIV,SDEL,"APPTS")=$GET(^TMP("SCRPW",$JOB,"STATS",SDIV,SDEL,"APPTS"))+1
- +31 QUIT
- End DoDot:5
- +32 QUIT
- End DoDot:4
- +33 QUIT
- End DoDot:3
- +34 QUIT
- End DoDot:2
- +35 QUIT
- End DoDot:1
- +36 if SDSTOP
- QUIT
- +37 ;Print report
- +38 SET SDIV=""
- FOR
- SET SDIV=$ORDER(SDDIV(SDIV))
- if 'SDIV
- QUIT
- SET SDIV(SDDIV(SDIV))=SDIV
- +39 IF 'SDDIV
- IF $PIECE(SDDIV,U,2)'="ALL DIVISIONS"
- Begin DoDot:1
- +40 SET SDIV($PIECE(SDDIV,U,2))=$$PRIM^VASITE()
- +41 QUIT
- End DoDot:1
- +42 IF $PIECE(SDDIV,U,2)="ALL DIVISIONS"
- SET SDI=0
- Begin DoDot:1
- +43 FOR
- SET SDI=$ORDER(^TMP("SCRPW",$JOB,SDI))
- if 'SDI
- QUIT
- Begin DoDot:2
- +44 SET SDX=$PIECE($GET(^DG(40.8,SDI,0)),U)
- if $LENGTH(SDX)
- SET SDIV(SDX)=SDI
- +45 QUIT
- End DoDot:2
- +46 QUIT
- End DoDot:1
- +47 if $EXTRACT(IOST)="C"
- DO DISP0^SCRPW23
- +48 ;Negative report
- IF '$DATA(^TMP("SCRPW",$JOB))
- Begin DoDot:1
- +49 SET SDIV=0
- DO DHDR^SCRPW40(3,.SDT)
- DO HDR^SCRPW62
- +50 SET SDX="No appointments found that meet report criteria."
- +51 IF SDELIM
- WRITE !,SDX
- QUIT
- +52 WRITE !!?(IOM-$LENGTH(SDX)\2),SDX
- +53 IF $EXTRACT(IOST)="C"
- IF 'SDOUT
- NEW DIR
- SET DIR(0)="E"
- DO ^DIR
- +54 QUIT
- End DoDot:1
- QUIT
- +55 if SDFMT="S"
- GOTO ASUM
- +56 ;Print detailed report by division
- +57 SET SDIVN=""
- FOR
- SET SDIVN=$ORDER(SDIV(SDIVN))
- if SDIVN=""!SDOUT
- QUIT
- Begin DoDot:1
- +58 SET SDIV=SDIV(SDIVN)
- DO ADPRT(.SDIV)
- +59 QUIT
- End DoDot:1
- +60 if SDOUT
- QUIT
- +61 ;Print summary
- ASUM if SDELIM
- GOTO AQ
- +1 SET SDT(3)="STATISTICAL SUMMARY"
- DO HDR^SCRPW62
- if SDOUT
- QUIT
- +2 WRITE !!
- SET (SDTOT,SDIV,SDIVL)=0
- SET SDIVN=""
- +3 FOR
- SET SDIVN=$ORDER(SDIV(SDIVN))
- if SDIVN=""
- QUIT
- Begin DoDot:1
- +4 SET SDIVN(SDIV(SDIVN))=SDIVN
- if $LENGTH(SDIVN)>SDIVL
- SET SDIVL=$LENGTH(SDIVN)
- End DoDot:1
- +5 FOR
- SET SDIV=$ORDER(^TMP("SCRPW",$JOB,"STATS",SDIV))
- if 'SDIV
- QUIT
- Begin DoDot:1
- +6 SET SDEL=0
- FOR
- SET SDEL=$ORDER(^TMP("SCRPW",$JOB,"STATS",SDIV,SDEL))
- if 'SDEL
- QUIT
- Begin DoDot:2
- +7 SET SDAPT=^TMP("SCRPW",$JOB,"STATS",SDIV,SDEL,"APPTS")
- SET SDTOT=SDTOT+SDAPT
- +8 SET SDX=$$CSCEL(SDEL)_" appointments at "_SDIVN(SDIV)_":"
- +9 WRITE !?(50-SDIVL),$JUSTIFY(SDX,(28+SDIVL)),?80,$JUSTIFY(SDAPT,6,0)
- +10 QUIT
- End DoDot:2
- +11 QUIT
- End DoDot:1
- +12 WRITE !?(50-SDIVL),$EXTRACT(SDLINE,1,(36+SDIVL)),!?72,"TOTAL:",?80,$JUSTIFY(SDTOT,6,0)
- AQ IF $EXTRACT(IOST)="C"
- IF 'SDOUT
- NEW DIR
- SET DIR(0)="E"
- DO ^DIR
- +1 QUIT
- +2 ;
- DIV(SDIV) ;Check division
- +1 if '$LENGTH(SDIV)
- SET SDIV=$$PRIM^VASITE()
- +2 if 'SDDIV
- QUIT 1
- QUIT $DATA(SDDIV(+SDIV))
- +3 ;
- +4 ;
- STOP ;Check for stop task request
- +1 if $GET(ZTQUEUED)
- SET (SDOUT,ZTSTOP)=$SELECT($$S^%ZTLOAD:1,1:0)
- QUIT
- +2 ;
- ADPRT(SDIV) ;Print report for a division
- +1 DO DHDR^SCRPW40(3,.SDT)
- if SDELIM
- SET SDPAGE=1
- +2 IF '$DATA(^TMP("SCRPW",$JOB,SDIV))
- DO HDR^SCRPW62
- if SDOUT
- QUIT
- Begin DoDot:1
- +3 SET SDX="No appointments found for this division within report parameters!"
- +4 IF SDELIM
- WRITE !,SDX
- QUIT
- +5 WRITE !!?(132-$LENGTH(SDX)\2),SDX
- QUIT
- End DoDot:1
- QUIT
- +6 DO HDR^SCRPW62
- if SDOUT
- QUIT
- +7 SET SDEL=""
- FOR
- SET SDEL=$ORDER(^TMP("SCRPW",$JOB,SDIV,SDEL))
- if 'SDEL!SDOUT
- QUIT
- Begin DoDot:1
- +8 SET SDNAME=""
- FOR
- SET SDNAME=$ORDER(^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME))
- if SDNAME=""!SDOUT
- QUIT
- Begin DoDot:2
- +9 SET DFN=0
- FOR
- SET DFN=$ORDER(^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME,DFN))
- if 'DFN!SDOUT
- QUIT
- Begin DoDot:3
- +10 SET SD0=$GET(^DPT(DFN,0))
- if '$LENGTH(SD0)
- QUIT
- +11 SET SDREL=$SELECT(SDEL=1:0,1:+$PIECE($GET(^DPT(DFN,.372,0)),U,4))
- +12 SET SDREL=SDREL+^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME,DFN)
- +13 if $Y>(IOSL-(4+SDREL))
- DO HDR^SCRPW62
- if SDOUT
- QUIT
- +14 DO PLINE(DFN,SD0,SDEL)
- +15 QUIT
- End DoDot:3
- +16 QUIT
- End DoDot:2
- +17 QUIT
- End DoDot:1
- +18 QUIT
- +19 ;
- PLINE(DFN,SD0,SDEL) ;Print patient detail line
- +1 ;Input: DFN=patient ifn
- +2 ; SD0=zeroeth node of patient record
- +3 ; SDEL=1 or 3 to denote SC > or < 50%
- +4 ;
- +5 NEW SDSSN,SDNAME,SDDTE,SDADD,SDST,SDX,SDI,SDY,SDELN,SDZIP,SDZ,SDZA,SDII
- +6 SET SDNAME=$PIECE(SD0,U)
- SET SDSSN=$PIECE(SD0,U,9)
- SET SDDTE=$$FMTE^XLFDT($PIECE(SD0,U,16))
- +7 SET SDSSN=$EXTRACT(SDSSN,1,3)_"-"_$EXTRACT(SDSSN,4,5)_"-"_$EXTRACT(SDSSN,6,10)
- +8 SET SDEL=$GET(SDEL)
- SET SDELN=$$CSCEL(SDEL)
- SET SDADD=$GET(^DPT(DFN,.11))
- +9 SET SDST=$PIECE($GET(^DIC(5,+$PIECE(SDADD,U,5),0)),U,2)
- SET SDZIP=$PIECE(SDADD,U,12)
- +10 if $LENGTH(SDZIP)=9
- SET SDZIP=$EXTRACT(SDZIP,1,5)_"-"_$EXTRACT(SDZIP,6,9)
- +11 ;Set up delimited output
- IF SDELIM
- Begin DoDot:1
- +12 SET SDZ=SDNAME_U_SDSSN_U_SDELN_U_SDDTE_U_$PIECE(SDADD,U)_U_$PIECE(SDADD,U,4)
- +13 SET SDZ=SDZ_U_SDST_U_SDZIP_U_$PIECE($GET(^DPT(DFN,.13)),U)
- +14 QUIT
- End DoDot:1
- +15 IF 'SDELIM
- Begin DoDot:1
- +16 ;Print name, SSN, eligibility, date entered, address and phone number
- +17 WRITE !,"Name: ",SDNAME,?39,"SSN: ",SDSSN,?58,"Prim. Elig.: ",SDELN
- +18 WRITE ?84,"Date entered: ",SDDTE,!?10,"Address: ",$PIECE(SDADD,U)
- +19 WRITE ?55,$PIECE(SDADD,U,4),$SELECT($LENGTH($PIECE(SDADD,U,4)):", ",1:""),SDST," ",SDZIP
- +20 WRITE ?88,"Phone number: ",$PIECE($GET(^DPT(DFN,.13)),U)
- +21 ;Print SC disabilities for 0-50% SC veterans
- +22 IF SDEL=3
- SET SDI=0
- FOR
- SET SDI=$ORDER(^DPT(DFN,.372,SDI))
- if 'SDI
- QUIT
- Begin DoDot:2
- +23 SET SDX=$GET(^DPT(DFN,.372,SDI,0))
- if '$PIECE(SDX,U,3)
- QUIT
- +24 SET SDY=$GET(^DIC(31,+SDX,0))
- if '$LENGTH(SDY)
- QUIT
- +25 WRITE !?20,"SC disability: ",$PIECE(SDY,U,3)," ",$PIECE(SDY,U)
- +26 WRITE ?89,"%SC: ",$PIECE(SDX,U,2)
- +27 QUIT
- End DoDot:2
- +28 QUIT
- End DoDot:1
- +29 IF SDRPT="E"
- Begin DoDot:1
- +30 ;W !,SDZ Q
- IF SDELIM
- SET SDZ(1)=SDZ
- DO DELIM^SCRPW62(.SDZ)
- QUIT
- +31 WRITE !
- +32 QUIT
- End DoDot:1
- QUIT
- +33 ;Print appointment details for future appointment report
- +34 SET SDI=0
- Begin DoDot:1
- +35 FOR
- SET SDI=$ORDER(^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME,DFN,SDI))
- if 'SDI
- QUIT
- Begin DoDot:2
- +36 SET SDA0=^TMP("SCRPW",$JOB,SDIV,SDEL,SDNAME,DFN,SDI)
- +37 IF 'SDELIM
- Begin DoDot:3
- +38 WRITE !?30,"Appointment: ",$$FMTE^XLFDT(SDI)
- +39 WRITE ?63,$PIECE($GET(^SC(+$PIECE(SDA0,U,2),0)),U),?96,"Desired date: "
- +40 WRITE $$FMTE^XLFDT(+SDA0),?124,"(",$$FMDIFF^XLFDT(SDI,+SDA0),")"
- +41 QUIT
- End DoDot:3
- +42 ;Delimited output
- IF SDELIM
- Begin DoDot:3
- +43 NEW SDC0,SDCP,SDCZ,SDADM,SDADME
- +44 SET SDC0=$GET(^SC(+$PIECE(SDA0,U,2),0))
- SET SDCZ=$$CPAIR^SCRPW71(SDC0,.SDCP)
- +45 SET SDII=0
- SET (SDZA,SDADM,SDADME)=""
- +46 FOR
- SET SDII=$ORDER(^SC(+$PIECE(SDA0,U,2),"S",SDI,1,SDII))
- Begin DoDot:4
- +47 if +$GET(^SC(+$PIECE(SDA0,U,2),"S",SDI,1,+SDII,0))'=DFN
- QUIT
- +48 SET SDADM=$PIECE(^SC(+$PIECE(SDA0,U,2),"S",SDI,1,+SDII,0),U,7)
- +49 SET SDADME=$$FMTE^XLFDT(SDADM)
- SET SDII=0
- +50 QUIT
- End DoDot:4
- if 'SDII
- QUIT
- +51 SET SDCZ=SDCP_U_$PIECE($$SITE^VASITE(,$PIECE(SDC0,U,15)),U,2)_U_SDADME
- +52 SET SDZA=SDZA_U_$$FMTE^XLFDT(SDI)_U_$PIECE(SDC0,U)_U_SDCZ
- +53 SET SDZA=SDZA_U_$$FMTE^XLFDT(+SDA0)_U_$$FMDIFF^XLFDT(SDI,+SDA0)
- +54 SET SDZA=SDZA_U_$SELECT(SDADM:$$FMDIFF^XLFDT(+SDA0,SDADM),1:"")
- +55 SET SDZ(1)=SDZ_SDZA
- +56 ;W !,SDZ,SDZA
- DO DELIM^SCRPW62(.SDZ)
- +57 QUIT
- End DoDot:3
- +58 QUIT
- End DoDot:2
- +59 QUIT
- End DoDot:1
- +60 if 'SDELIM
- WRITE !
- QUIT
- +61 ;
- CSCEL(SDEL) ;Convert SC elig. to external
- +1 QUIT $SELECT(SDEL=1:"SC 50-100%",SDEL=3:"SC < 50%",1:"")