SDUTL ;MAN/GRR - SCHEDULING UTILITY PROGRAM ; 18 JUN 84  11:31 AM
 ;;5.3;Scheduling;**140,356**;Aug 13, 1993
DATE S:$D(%DT(0)) SDT0=%DT(0) S:$D(SDT00) %DT=SDT00 S POP=0 K BEGDATE,ENDDATE W !!,"**** Date Range Selection ****"
 W ! S %DT=$S($D(SDT00):SDT00,1:"AE"),%DT("A")="   Beginning DATE : "
 D ^%DT S:Y<0 POP=1 G:Y<0 EX S (BEGDATE,SDBD)=Y
 W ! S %DT=$S($D(SDT00):SDT00,1:"AE"),%DT("A")="   Ending    DATE : "
 D ^%DT K %DT S:Y<0 POP=1 G:Y<0 EX G:Y<SDBD HELP W ! S (ENDDATE,SDED)=Y
EX K SDT0,SDT00 Q
 ;
Q G QUE^DGUTQ
 ;
DQ G DQ^DGUTQ
 ;
ZIS G ZIS^DGUTQ
 K PGM,VAL,VAR Q
 ;
CLOSE G CLOSE^DGUTQ Q
 Q
TIME D DT S SDZ01=$H,SDTIME=$P(SDZ01,",",2),SDTIME=DT_(SDTIME\60#60/100+(SDTIME\3600)/100)
 Q
ETIME S Y=(X-SD00)*86400,X1=$P(X,",",2),X2=$P(SD00,",",2),X3=Y-X2+X1,X=X3\3600,X1=X3#3600\60
 Q
OUT W *7 I ($Y+4)<IOSL F SDXX=$Y:1:IOSL-4 W !
 R !!,"Press return to continue or ""^"" to escape ",X:DTIME I X["^"!('$T) S SDEND=1
 Q
DTS S Y=$TR($$FMTE^XLFDT(Y,"5DF")," ","0") Q
DT K %DT S X="T" D ^%DT S DT=Y,U="^" Q
DIV I $D(^DG(43,1,"GL")),$P(^("GL"),"^",2)
 Q
AT S Y1=$S(+$P(Y,".",2):"."_$P(Y,".",2),1:""),Y=$S(+$P(Y,".",1):$P(Y,".",1),1:"")
 I Y]"" D D^DIQ
 I Y1]"" S Y1=$E($P(Y1,".",2)_"0000",1,4),Y2=Y1>1159 S:Y1>1259 Y1=Y1-1200 S Y1=Y1\100_":"_$E(Y1#100+100,2,3)_" "_$E("AP",Y2+1)_"M"
 I Y]"",Y1]"" S Y=Y_" @"_Y1
 I Y']"",Y1]"" S Y=Y1
 K Y1,Y2 Q
LAPPT W *7,!,"Appointment length is inconsistent with inc/hr (",SDZ0,") for this clinic" K X
 Q
RT Q:$S(SDTTM<DT:1,'$D(^DIC(195.4,1,"UP")):1,'^("UP"):1,1:0)
 I SDRT="A" D QUE^RTQ2 Q
 I SDRT="D",$D(^SC(SDSC,"S",SDTTM,1,SDPL,"RTR")),^("RTR") S RTPAR=+^("RTR") D CANCEL^RTQ2 K RTPAR Q
 Q
 ;
RTSET I $D(^SC(SDSC,"S",SDTTM,1,SDPL,0)),DFN=+^(0),$P(^(0),"^",9)'["C",'$D(^("RTR")) S ^("RTR")=RTPAR
 Q
NOTES K IOP S L=0,DIC="^DIC(9.4,",FLDS="[SDREL]",BY="[SDREL]",FR="""SCHEDULING"",3.8",TO=FR,DHD="SCHEDULING V3.8 RELEASE NOTES" G EN1^DIP
I S:'$D(DTIME) DTIME=300 D:'$D(DT) DT S:'$D(U) U="^" Q
HELP W "??",!?5,"Ending date must not be before beginning date" S:$D(SDT0) %DT(0)=SDT0 G DATE
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDUTL   2072     printed  Sep 23, 2025@20:38:41                                                                                                                                                                                                       Page 2
SDUTL     ;MAN/GRR - SCHEDULING UTILITY PROGRAM ; 18 JUN 84  11:31 AM
 +1       ;;5.3;Scheduling;**140,356**;Aug 13, 1993
DATE       if $DATA(%DT(0))
               SET SDT0=%DT(0)
           if $DATA(SDT00)
               SET %DT=SDT00
           SET POP=0
           KILL BEGDATE,ENDDATE
           WRITE !!,"**** Date Range Selection ****"
 +1        WRITE !
           SET %DT=$SELECT($DATA(SDT00):SDT00,1:"AE")
           SET %DT("A")="   Beginning DATE : "
 +2        DO ^%DT
           if Y<0
               SET POP=1
           if Y<0
               GOTO EX
           SET (BEGDATE,SDBD)=Y
 +3        WRITE !
           SET %DT=$SELECT($DATA(SDT00):SDT00,1:"AE")
           SET %DT("A")="   Ending    DATE : "
 +4        DO ^%DT
           KILL %DT
           if Y<0
               SET POP=1
           if Y<0
               GOTO EX
           if Y<SDBD
               GOTO HELP
           WRITE !
           SET (ENDDATE,SDED)=Y
EX         KILL SDT0,SDT00
           QUIT 
 +1       ;
Q          GOTO QUE^DGUTQ
 +1       ;
DQ         GOTO DQ^DGUTQ
 +1       ;
ZIS        GOTO ZIS^DGUTQ
 +1        KILL PGM,VAL,VAR
           QUIT 
 +2       ;
CLOSE      GOTO CLOSE^DGUTQ
           QUIT 
 +1        QUIT 
TIME       DO DT
           SET SDZ01=$HOROLOG
           SET SDTIME=$PIECE(SDZ01,",",2)
           SET SDTIME=DT_(SDTIME\60#60/100+(SDTIME\3600)/100)
 +1        QUIT 
ETIME      SET Y=(X-SD00)*86400
           SET X1=$PIECE(X,",",2)
           SET X2=$PIECE(SD00,",",2)
           SET X3=Y-X2+X1
           SET X=X3\3600
           SET X1=X3#3600\60
 +1        QUIT 
OUT        WRITE *7
           IF ($Y+4)<IOSL
               FOR SDXX=$Y:1:IOSL-4
                   WRITE !
 +1        READ !!,"Press return to continue or ""^"" to escape ",X:DTIME
           IF X["^"!('$TEST)
               SET SDEND=1
 +2        QUIT 
DTS        SET Y=$TRANSLATE($$FMTE^XLFDT(Y,"5DF")," ","0")
           QUIT 
DT         KILL %DT
           SET X="T"
           DO ^%DT
           SET DT=Y
           SET U="^"
           QUIT 
DIV        IF $DATA(^DG(43,1,"GL"))
               IF $PIECE(^("GL"),"^",2)
 +1        QUIT 
AT         SET Y1=$SELECT(+$PIECE(Y,".",2):"."_$PIECE(Y,".",2),1:"")
           SET Y=$SELECT(+$PIECE(Y,".",1):$PIECE(Y,".",1),1:"")
 +1        IF Y]""
               DO D^DIQ
 +2        IF Y1]""
               SET Y1=$EXTRACT($PIECE(Y1,".",2)_"0000",1,4)
               SET Y2=Y1>1159
               if Y1>1259
                   SET Y1=Y1-1200
               SET Y1=Y1\100_":"_$EXTRACT(Y1#100+100,2,3)_" "_$EXTRACT("AP",Y2+1)_"M"
 +3        IF Y]""
               IF Y1]""
                   SET Y=Y_" @"_Y1
 +4        IF Y']""
               IF Y1]""
                   SET Y=Y1
 +5        KILL Y1,Y2
           QUIT 
LAPPT      WRITE *7,!,"Appointment length is inconsistent with inc/hr (",SDZ0,") for this clinic"
           KILL X
 +1        QUIT 
RT         if $SELECT(SDTTM<DT
               QUIT 
 +1        IF SDRT="A"
               DO QUE^RTQ2
               QUIT 
 +2        IF SDRT="D"
               IF $DATA(^SC(SDSC,"S",SDTTM,1,SDPL,"RTR"))
                   IF ^("RTR")
                       SET RTPAR=+^("RTR")
                       DO CANCEL^RTQ2
                       KILL RTPAR
                       QUIT 
 +3        QUIT 
 +4       ;
RTSET      IF $DATA(^SC(SDSC,"S",SDTTM,1,SDPL,0))
               IF DFN=+^(0)
                   IF $PIECE(^(0),"^",9)'["C"
                       IF '$DATA(^("RTR"))
                           SET ^("RTR")=RTPAR
 +1        QUIT 
NOTES      KILL IOP
           SET L=0
           SET DIC="^DIC(9.4,"
           SET FLDS="[SDREL]"
           SET BY="[SDREL]"
           SET FR="""SCHEDULING"",3.8"
           SET TO=FR
           SET DHD="SCHEDULING V3.8 RELEASE NOTES"
           GOTO EN1^DIP
I          if '$DATA(DTIME)
               SET DTIME=300
           if '$DATA(DT)
               DO DT
           if '$DATA(U)
               SET U="^"
           QUIT 
HELP       WRITE "??",!?5,"Ending date must not be before beginning date"
           if $DATA(SDT0)
               SET %DT(0)=SDT0
           GOTO DATE