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 Dec 13, 2024@02:44 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:"")