SDWLROS ;IOFO BAY PINES/TEH - WAIT LIST OVERDUE REPORT-SUMMARY ;1/5/16 9:25am
 ;;5.3;scheduling;**263,414,645**;AUG 13 1993;Build 7
 ;
 ;
 ;******************************************************************
 ;                             CHANGE LOG
 ;                                               
 ;   DATE                        PATCH                   DESCRIPTION
 ;   ----                        -----                   -----------
 ;   
 ;   
 ;   
 ;
EN ;
 D INIT
 I $$S^%ZTLOAD G END
 D HD
 D SORT
 I $$S^%ZTLOAD G END
 D PRT
 I $$S^%ZTLOAD G END
 D PRT1
 K ^TMP("SDWLROS",$J)
 Q
INIT ;Initialize variables
 ;
 I $D(CT1) S SDWLCT1=CT1
 I $D(CT2) S SDWLCT2=CT2
 I $D(FORM) S SDWLFORM=FORM
 I $D(INS) S SDWLINS=INS
 S SDWLPG=0
 I $D(ZTSAVE) D
 .F SDWLI="CT1","CT2","FORM","INS" S SDWL="SDWL"_SDWLI,@SDWL=$G(ZTSAVE(SDWLI))
 I SDWLINS="ALL" S SDWLIN("ALL")=""
 S SDWLTXP=$P(SDWLCT1,U,3),SDWLF=$P(SDWLCT1,U,2)
 I SDWLINS'="ALL" F SDWLI=1:1 S SDWLIN=$P($P(SDWLINS,";",SDWLI),U,1) Q:SDWLIN=""  S SDWLIN(SDWLIN)=""
 I SDWLCT2'="ALL" F SDWLI=1:1 S SDWLCL=$P($P(SDWLCT2,";",SDWLI),U,1) Q:SDWLCL=""  S SDWLCT2(SDWLCL)=""
 D NOW^%DTC S Y=% D DD^%DT S SDWLDTP=Y
 Q
SORT ;Sort Records
 K ^TMP("SDWLROS",$J)
 S SDWLDA=0 F  S SDWLDA=$O(^SDWL(409.3,SDWLDA)) Q:SDWLDA<1  D
 .S SDWLX=$G(^SDWL(409.3,SDWLDA,0)),SDWLERR=0,SDWLDFN=+SDWLX I 'SDWLDFN Q
 .;-Check for Institution Sort
 .I SDWLINS'="ALL" D
 ..I '$D(SDWLIN(+$P(SDWLX,U,3))) S SDWLERR=1 Q
 .I $P(SDWLX,U,16)'<DT,$P(SDWLX,U,16)'=DT S SDWLERR=2
 .S SDWLAPDT=$P(SDWLX,U,16),SDWLOPDT=$P(SDWLX,U,2) S X1=DT,X2=SDWLAPDT D ^%DTC S SDWLDWT=+X
 .S SDWLTYP=$P(SDWLCT1,U,1),SDWLTYPE=$S(SDWLTYP="C":+$P(SDWLX,U,9),1:+$P(SDWLX,U,8)) I SDWLTYPE=""!('SDWLTYPE) S SDWLERR=7 Q
 .S SDWLF=$P(SDWLCT1,U,2)
 .I SDWLCT2'="ALL" D
 ..I '$D(SDWLCT2(SDWLTYPE)) S SDWLERR=3
 .I SDWLTYP="" S SDWLERR=4 Q
 .I $P(SDWLX,U,17)["C" S SDWLERR=6 Q
 .Q:SDWLERR  D
 ..S SDWLSCC=2,DFN=SDWLDFN D ELIG^VADPT I $D(VAEL(3)) S SDWLSCN=$P(VAEL(3),U,2) I SDWLSCN>49 S SDWLSCC=1
 ..S:'$D(^TMP("SDWLROS",$J,"A",+$P(SDWLX,U,3),SDWLTYPE)) ^(SDWLTYPE)=0
 ..S ^TMP("SDWLROS",$J,"A",+$P(SDWLX,U,3),SDWLTYPE)=^(SDWLTYPE)+1
 ..S:'$D(^TMP("SDWLROS",$J,"B",+$P(SDWLX,U,3),SDWLTYPE,SDWLDFN)) ^(SDWLDFN)=0 S ^TMP("SDWLROS",$J,"B",+$P(SDWLX,U,3),SDWLTYPE,SDWLDFN)=^(SDWLDFN)+1
 ..S:'$D(^TMP("SDWLROS",$J,"C",SDWLSCC,+$P(SDWLX,U,3),SDWLTYPE)) ^TMP("SDWLROS",$J,"C",SDWLSCC,+$P(SDWLX,U,3),SDWLTYPE)=0
 ..S ^TMP("SDWLROS",$J,"C",SDWLSCC,+$P(SDWLX,U,3),SDWLTYPE)=^(SDWLTYPE)+1
 ..S ^TMP("SDWLROS",$J,"D",SDWLSCC,+$P(SDWLX,U,3),SDWLTYPE,SDWLDWT,SDWLDA)=""
 Q
PRT ;
 S SDWLIN=0 F  S SDWLIN=$O(^TMP("SDWLROS",$J,"A",SDWLIN)) Q:SDWLIN=""  W !,"Institution: ",$P($G(^DIC(4,SDWLIN,0)),U,1),! D
 .D PRA
 Q
PRA ;
 S SDWLSC=0,(SDWLX,SDWLXT,SDWLXTT)=0 F  S SDWLSC=$O(^TMP("SDWLROS",$J,"A",SDWLIN,SDWLSC)) Q:SDWLSC=""  D
 .S SDWLX=$G(^TMP("SDWLROS",$J,"A",SDWLIN,SDWLSC)),SDWLXT=SDWLXT+SDWLX W !,$$EXTERNAL^DILFD(SDWLF,.01,,$P(^SDWL(SDWLF,SDWLSC,0),U,1)),?30,SDWLX
 .S SDWLDFNX=0 F  S SDWLDFNX=$O(^TMP("SDWLROS",$J,"B",SDWLIN,SDWLSC,SDWLDFNX)) Q:SDWLDFNX=""  S SDWLXTT=SDWLXTT+1
 W !,?20,"Total #: ",SDWLXT
 ;W !,?4,"Total # Unique Patients: ",SDWLXTT,!!
 I $D(SDWLSPT),$Y>IOSL S DIR(0)="E" D ^DIR I X="^" Q
 Q
PRT1 ;
 D HD,HD1
 S SDWLSCC=0 F  S SDWLSCC=$O(^TMP("SDWLROS",$J,"D",SDWLSCC)) Q:SDWLSCC=""  Q:$$S^%ZTLOAD  D  I $D(DUOUT) Q
 .W !,"******* ",SDWLSCC," *******",!
 .S SDWLINS=0 F  S SDWLINS=$O(^TMP("SDWLROS",$J,"D",SDWLSCC,SDWLINS)) Q:SDWLINS=""  D  W ! I $D(DUOUT) Q
 ..W !,$P($G(^DIC(4,SDWLINS,0)),U,1),!
 ..S SDWLSC=0 F  S SDWLSC=$O(^TMP("SDWLROS",$J,"D",SDWLSCC,SDWLINS,SDWLSC)) Q:SDWLSC=""  D  I $D(DUOUT) Q
 ...W !,$$EXTERNAL^DILFD(SDWLF,.01,,$P(^SDWL(SDWLF,SDWLSC,0),U,1))
 ...S SDWLWT="" F  S SDWLWT=$O(^TMP("SDWLROS",$J,"D",SDWLSCC,SDWLINS,SDWLSC,SDWLWT)) Q:SDWLWT=""  D  I $D(DUOUT) Q
 ....S SDWLDA=0 F  S SDWLDA=$O(^TMP("SDWLROS",$J,"D",SDWLSCC,SDWLINS,SDWLSC,SDWLWT,SDWLDA)) Q:SDWLDA=""  D  I $D(DUOUT) Q
 .....S X=$G(^SDWL(409.3,SDWLDA,0)),SDWLODT=$P(X,U,2),SDWLDDT=$P(X,U,16) D
 ......S DFN=+X D 1^VADPT,DEM^VADPT
 ......W !,VA("BID"),?6,$E(VADM(1),1,25),?32,$E(SDWLODT,4,5),"/",$E(SDWLODT,6,7),"/",($E(SDWLODT,1,3)+1700)
 ......W ?47,$E(SDWLDDT,4,5),"/",$E(SDWLDDT,6,7),"/",($E(SDWLDDT,1,3)+1700),?60,$J(SDWLWT,5) K VA,VADM
 ......I $D(SDWLSPT),$Y>(IOSL+3) S DIR(0)="E" D ^DIR I X="^" S DUOUT=1 Q
 ......I $Y>(IOSL+3) D HD,HD1
 .W !
 Q
LINE ;Draw Line
 W !,"_______________________________________________________________________________"
 Q
HD ;Header
 W:$D(IOF) @IOF W !,SDWLDTP,?80-$L("Appointment Wait List Overdue Report")\2,"Appointment Wait List Overdue Report"
 S Y=DT D DD^%DT S SDWLPD=Y W ?59,SDWLPD S SDWLPG=SDWLPG+1 W ?72,"Page: ",SDWLPG
 W !!,?30,"Institution: " I SDWLINS="ALL" D
 .W ?45,SDWLINS
 F I=1:1 S X=$P($P(SDWLINS,";",I),"^",2) Q:X=""  W:I>1 ! W ?45,X
 S X=$P(SDWLCT1,U,1)
 W !?27,"Report Category: ",$S($P(SDWLCT1,U,1)="C":"CLINIC",1:"SPECIALTY") I X="ALL" W " ALL"
 I X'="ALL" D
 .F I=1:1 S X=$P($P(SDWLCT2,";",I),"^",2) Q:X=""  W !,?45,$$EXTERNAL^DILFD(SDWLF,.01,,X)
 S X=$G(SDWLFORM) W !,?28,"Output Format: ",$S(SDWLFORM="S":"Summary",1:"Detailed")
 Q
HD1 ;
 ; SD*5.3*645 - changed 'Date Desired' to 'CID/PD' due to space limit
 ;W !!,"Name",?30,"Date Entered",?45,"Date Desired",?60,"# of Days Waiting",!!
 W !!,"Name",?30,"Date Entered",?47,"CID/PD",?60,"# of Days Waiting",!!
 Q
END K X1,X2,SDWLAPDT,CT,CT1,CT2,I,OPEN,INS,FORM,VADM Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDWLROS   5477     printed  Sep 23, 2025@20:40:02                                                                                                                                                                                                     Page 2
SDWLROS   ;IOFO BAY PINES/TEH - WAIT LIST OVERDUE REPORT-SUMMARY ;1/5/16 9:25am
 +1       ;;5.3;scheduling;**263,414,645**;AUG 13 1993;Build 7
 +2       ;
 +3       ;
 +4       ;******************************************************************
 +5       ;                             CHANGE LOG
 +6       ;                                               
 +7       ;   DATE                        PATCH                   DESCRIPTION
 +8       ;   ----                        -----                   -----------
 +9       ;   
 +10      ;   
 +11      ;   
 +12      ;
EN        ;
 +1        DO INIT
 +2        IF $$S^%ZTLOAD
               GOTO END
 +3        DO HD
 +4        DO SORT
 +5        IF $$S^%ZTLOAD
               GOTO END
 +6        DO PRT
 +7        IF $$S^%ZTLOAD
               GOTO END
 +8        DO PRT1
 +9        KILL ^TMP("SDWLROS",$JOB)
 +10       QUIT 
INIT      ;Initialize variables
 +1       ;
 +2        IF $DATA(CT1)
               SET SDWLCT1=CT1
 +3        IF $DATA(CT2)
               SET SDWLCT2=CT2
 +4        IF $DATA(FORM)
               SET SDWLFORM=FORM
 +5        IF $DATA(INS)
               SET SDWLINS=INS
 +6        SET SDWLPG=0
 +7        IF $DATA(ZTSAVE)
               Begin DoDot:1
 +8                FOR SDWLI="CT1","CT2","FORM","INS"
                       SET SDWL="SDWL"_SDWLI
                       SET @SDWL=$GET(ZTSAVE(SDWLI))
               End DoDot:1
 +9        IF SDWLINS="ALL"
               SET SDWLIN("ALL")=""
 +10       SET SDWLTXP=$PIECE(SDWLCT1,U,3)
           SET SDWLF=$PIECE(SDWLCT1,U,2)
 +11       IF SDWLINS'="ALL"
               FOR SDWLI=1:1
                   SET SDWLIN=$PIECE($PIECE(SDWLINS,";",SDWLI),U,1)
                   if SDWLIN=""
                       QUIT 
                   SET SDWLIN(SDWLIN)=""
 +12       IF SDWLCT2'="ALL"
               FOR SDWLI=1:1
                   SET SDWLCL=$PIECE($PIECE(SDWLCT2,";",SDWLI),U,1)
                   if SDWLCL=""
                       QUIT 
                   SET SDWLCT2(SDWLCL)=""
 +13       DO NOW^%DTC
           SET Y=%
           DO DD^%DT
           SET SDWLDTP=Y
 +14       QUIT 
SORT      ;Sort Records
 +1        KILL ^TMP("SDWLROS",$JOB)
 +2        SET SDWLDA=0
           FOR 
               SET SDWLDA=$ORDER(^SDWL(409.3,SDWLDA))
               if SDWLDA<1
                   QUIT 
               Begin DoDot:1
 +3                SET SDWLX=$GET(^SDWL(409.3,SDWLDA,0))
                   SET SDWLERR=0
                   SET SDWLDFN=+SDWLX
                   IF 'SDWLDFN
                       QUIT 
 +4       ;-Check for Institution Sort
 +5                IF SDWLINS'="ALL"
                       Begin DoDot:2
 +6                        IF '$DATA(SDWLIN(+$PIECE(SDWLX,U,3)))
                               SET SDWLERR=1
                               QUIT 
                       End DoDot:2
 +7                IF $PIECE(SDWLX,U,16)'<DT
                       IF $PIECE(SDWLX,U,16)'=DT
                           SET SDWLERR=2
 +8                SET SDWLAPDT=$PIECE(SDWLX,U,16)
                   SET SDWLOPDT=$PIECE(SDWLX,U,2)
                   SET X1=DT
                   SET X2=SDWLAPDT
                   DO ^%DTC
                   SET SDWLDWT=+X
 +9                SET SDWLTYP=$PIECE(SDWLCT1,U,1)
                   SET SDWLTYPE=$SELECT(SDWLTYP="C":+$PIECE(SDWLX,U,9),1:+$PIECE(SDWLX,U,8))
                   IF SDWLTYPE=""!('SDWLTYPE)
                       SET SDWLERR=7
                       QUIT 
 +10               SET SDWLF=$PIECE(SDWLCT1,U,2)
 +11               IF SDWLCT2'="ALL"
                       Begin DoDot:2
 +12                       IF '$DATA(SDWLCT2(SDWLTYPE))
                               SET SDWLERR=3
                       End DoDot:2
 +13               IF SDWLTYP=""
                       SET SDWLERR=4
                       QUIT 
 +14               IF $PIECE(SDWLX,U,17)["C"
                       SET SDWLERR=6
                       QUIT 
 +15               if SDWLERR
                       QUIT 
                   Begin DoDot:2
 +16                   SET SDWLSCC=2
                       SET DFN=SDWLDFN
                       DO ELIG^VADPT
                       IF $DATA(VAEL(3))
                           SET SDWLSCN=$PIECE(VAEL(3),U,2)
                           IF SDWLSCN>49
                               SET SDWLSCC=1
 +17                   if '$DATA(^TMP("SDWLROS",$JOB,"A",+$PIECE(SDWLX,U,3),SDWLTYPE))
                           SET ^(SDWLTYPE)=0
 +18                   SET ^TMP("SDWLROS",$JOB,"A",+$PIECE(SDWLX,U,3),SDWLTYPE)=^(SDWLTYPE)+1
 +19                   if '$DATA(^TMP("SDWLROS",$JOB,"B",+$PIECE(SDWLX,U,3),SDWLTYPE,SDWLDFN))
                           SET ^(SDWLDFN)=0
                       SET ^TMP("SDWLROS",$JOB,"B",+$PIECE(SDWLX,U,3),SDWLTYPE,SDWLDFN)=^(SDWLDFN)+1
 +20                   if '$DATA(^TMP("SDWLROS",$JOB,"C",SDWLSCC,+$PIECE(SDWLX,U,3),SDWLTYPE))
                           SET ^TMP("SDWLROS",$JOB,"C",SDWLSCC,+$PIECE(SDWLX,U,3),SDWLTYPE)=0
 +21                   SET ^TMP("SDWLROS",$JOB,"C",SDWLSCC,+$PIECE(SDWLX,U,3),SDWLTYPE)=^(SDWLTYPE)+1
 +22                   SET ^TMP("SDWLROS",$JOB,"D",SDWLSCC,+$PIECE(SDWLX,U,3),SDWLTYPE,SDWLDWT,SDWLDA)=""
                   End DoDot:2
               End DoDot:1
 +23       QUIT 
PRT       ;
 +1        SET SDWLIN=0
           FOR 
               SET SDWLIN=$ORDER(^TMP("SDWLROS",$JOB,"A",SDWLIN))
               if SDWLIN=""
                   QUIT 
               WRITE !,"Institution: ",$PIECE($GET(^DIC(4,SDWLIN,0)),U,1),!
               Begin DoDot:1
 +2                DO PRA
               End DoDot:1
 +3        QUIT 
PRA       ;
 +1        SET SDWLSC=0
           SET (SDWLX,SDWLXT,SDWLXTT)=0
           FOR 
               SET SDWLSC=$ORDER(^TMP("SDWLROS",$JOB,"A",SDWLIN,SDWLSC))
               if SDWLSC=""
                   QUIT 
               Begin DoDot:1
 +2                SET SDWLX=$GET(^TMP("SDWLROS",$JOB,"A",SDWLIN,SDWLSC))
                   SET SDWLXT=SDWLXT+SDWLX
                   WRITE !,$$EXTERNAL^DILFD(SDWLF,.01,,$PIECE(^SDWL(SDWLF,SDWLSC,0),U,1)),?30,SDWLX
 +3                SET SDWLDFNX=0
                   FOR 
                       SET SDWLDFNX=$ORDER(^TMP("SDWLROS",$JOB,"B",SDWLIN,SDWLSC,SDWLDFNX))
                       if SDWLDFNX=""
                           QUIT 
                       SET SDWLXTT=SDWLXTT+1
               End DoDot:1
 +4        WRITE !,?20,"Total #: ",SDWLXT
 +5       ;W !,?4,"Total # Unique Patients: ",SDWLXTT,!!
 +6        IF $DATA(SDWLSPT)
               IF $Y>IOSL
                   SET DIR(0)="E"
                   DO ^DIR
                   IF X="^"
                       QUIT 
 +7        QUIT 
PRT1      ;
 +1        DO HD
           DO HD1
 +2        SET SDWLSCC=0
           FOR 
               SET SDWLSCC=$ORDER(^TMP("SDWLROS",$JOB,"D",SDWLSCC))
               if SDWLSCC=""
                   QUIT 
               if $$S^%ZTLOAD
                   QUIT 
               Begin DoDot:1
 +3                WRITE !,"******* ",SDWLSCC," *******",!
 +4                SET SDWLINS=0
                   FOR 
                       SET SDWLINS=$ORDER(^TMP("SDWLROS",$JOB,"D",SDWLSCC,SDWLINS))
                       if SDWLINS=""
                           QUIT 
                       Begin DoDot:2
 +5                        WRITE !,$PIECE($GET(^DIC(4,SDWLINS,0)),U,1),!
 +6                        SET SDWLSC=0
                           FOR 
                               SET SDWLSC=$ORDER(^TMP("SDWLROS",$JOB,"D",SDWLSCC,SDWLINS,SDWLSC))
                               if SDWLSC=""
                                   QUIT 
                               Begin DoDot:3
 +7                                WRITE !,$$EXTERNAL^DILFD(SDWLF,.01,,$PIECE(^SDWL(SDWLF,SDWLSC,0),U,1))
 +8                                SET SDWLWT=""
                                   FOR 
                                       SET SDWLWT=$ORDER(^TMP("SDWLROS",$JOB,"D",SDWLSCC,SDWLINS,SDWLSC,SDWLWT))
                                       if SDWLWT=""
                                           QUIT 
                                       Begin DoDot:4
 +9                                        SET SDWLDA=0
                                           FOR 
                                               SET SDWLDA=$ORDER(^TMP("SDWLROS",$JOB,"D",SDWLSCC,SDWLINS,SDWLSC,SDWLWT,SDWLDA))
                                               if SDWLDA=""
                                                   QUIT 
                                               Begin DoDot:5
 +10                                               SET X=$GET(^SDWL(409.3,SDWLDA,0))
                                                   SET SDWLODT=$PIECE(X,U,2)
                                                   SET SDWLDDT=$PIECE(X,U,16)
                                                   Begin DoDot:6
 +11                                                   SET DFN=+X
                                                       DO 1^VADPT
                                                       DO DEM^VADPT
 +12                                                   WRITE !,VA("BID"),?6,$EXTRACT(VADM(1),1,25),?32,$EXTRACT(SDWLODT,4,5),"/",$EXTRACT(SDWLODT,6,7),"/",($EXTRACT(SDWLODT,1,3)+1700)
 +13                                                   WRITE ?47,$EXTRACT(SDWLDDT,4,5),"/",$EXTRACT(SDWLDDT,6,7),"/",($EXTRACT(SDWLDDT,1,3)+1700),?60,$JUSTIFY(SDWLWT,5)
                                                       KILL VA,VADM
 +14                                                   IF $DATA(SDWLSPT)
                                                           IF $Y>(IOSL+3)
                                                               SET DIR(0)="E"
                                                               DO ^DIR
                                                               IF X="^"
                                                                   SET DUOUT=1
                                                                   QUIT 
 +15                                                   IF $Y>(IOSL+3)
                                                           DO HD
                                                           DO HD1
                                                   End DoDot:6
                                               End DoDot:5
                                               IF $DATA(DUOUT)
                                                   QUIT 
                                       End DoDot:4
                                       IF $DATA(DUOUT)
                                           QUIT 
                               End DoDot:3
                               IF $DATA(DUOUT)
                                   QUIT 
                       End DoDot:2
                       WRITE !
                       IF $DATA(DUOUT)
                           QUIT 
 +16               WRITE !
               End DoDot:1
               IF $DATA(DUOUT)
                   QUIT 
 +17       QUIT 
LINE      ;Draw Line
 +1        WRITE !,"_______________________________________________________________________________"
 +2        QUIT 
HD        ;Header
 +1        if $DATA(IOF)
               WRITE @IOF
           WRITE !,SDWLDTP,?80-$LENGTH("Appointment Wait List Overdue Report")\2,"Appointment Wait List Overdue Report"
 +2        SET Y=DT
           DO DD^%DT
           SET SDWLPD=Y
           WRITE ?59,SDWLPD
           SET SDWLPG=SDWLPG+1
           WRITE ?72,"Page: ",SDWLPG
 +3        WRITE !!,?30,"Institution: "
           IF SDWLINS="ALL"
               Begin DoDot:1
 +4                WRITE ?45,SDWLINS
               End DoDot:1
 +5        FOR I=1:1
               SET X=$PIECE($PIECE(SDWLINS,";",I),"^",2)
               if X=""
                   QUIT 
               if I>1
                   WRITE !
               WRITE ?45,X
 +6        SET X=$PIECE(SDWLCT1,U,1)
 +7        WRITE !?27,"Report Category: ",$SELECT($PIECE(SDWLCT1,U,1)="C":"CLINIC",1:"SPECIALTY")
           IF X="ALL"
               WRITE " ALL"
 +8        IF X'="ALL"
               Begin DoDot:1
 +9                FOR I=1:1
                       SET X=$PIECE($PIECE(SDWLCT2,";",I),"^",2)
                       if X=""
                           QUIT 
                       WRITE !,?45,$$EXTERNAL^DILFD(SDWLF,.01,,X)
               End DoDot:1
 +10       SET X=$GET(SDWLFORM)
           WRITE !,?28,"Output Format: ",$SELECT(SDWLFORM="S":"Summary",1:"Detailed")
 +11       QUIT 
HD1       ;
 +1       ; SD*5.3*645 - changed 'Date Desired' to 'CID/PD' due to space limit
 +2       ;W !!,"Name",?30,"Date Entered",?45,"Date Desired",?60,"# of Days Waiting",!!
 +3        WRITE !!,"Name",?30,"Date Entered",?47,"CID/PD",?60,"# of Days Waiting",!!
 +4        QUIT 
END        KILL X1,X2,SDWLAPDT,CT,CT1,CT2,I,OPEN,INS,FORM,VADM
           QUIT