SDROUT0 ;BSN/GRR,PC - ROUTING SLIPS BY CLINIC ;Feb 12, 2020@15:22
;;5.3;Scheduling;**343,377,509,694**;Aug 13, 1993;Build 61
GO S SDCNT=0 D GO1 G:ORDER=2!(ORDER=3) CLIN
F G=0:0 S I=$O(^UTILITY($J,I)) Q:I="" F J=0:0 S J=$O(^UTILITY($J,I,J)) Q:J="" S P=0 D HED^SDROUT2,HD^SDROUT2,CNT F K=0:0 S K=$O(^UTILITY($J,I,J,K)) D:K="" FUT Q:K="" S L=0 F LL=0:0 S L=$O(^UTILITY($J,I,J,K,L)) Q:L="" D LIN,X
W:IOF]"" !,@IOF G END^SDROUT1
CNT S SDCNT=SDCNT+1 Q
X I $P(^UTILITY($J,I,J,K,L),"^")]"" W !,?4,$P(^(L),"^") Q
I $D(^DPT(+J,.36)),$D(^DIC(8,+^DPT(+J,.36),0)),$P(^(0),"^",9)=13 W !,?4,"** COLLATERAL **"
Q
GO1 S I=0 Q:'SDREP!(SDX'["ALL")!(SDSTART="0000") I SDSTART?4N S SDZ=(SDSTART-1)/10000,SDZ=$P(SDZ,".",2),SDZ=SDZ_$E("0000",1,4-$L(SDZ)),I=" "_SDZ K SDZ Q
I '$D(^UTILITY($J,SDSTART)) S I=SDSTART Q
S SDZ=$A($E(SDSTART,$L(SDSTART))),I=$E(SDSTART,1,$L(SDSTART)-1)_$C(SDZ-1) K SDZ Q
GOT S DFN=$P(^SC(SC,"S",GDATE,1,L,0),"^") S POP=1 D CKP Q:POP
S NAME=$P(^DPT(DFN,0),"^"),TDO=$P(^(0),"^",9),TDO=$E(TDO,8,9)_$E(TDO,6,7)
D ^SDROUT1 G TDO:ORDER=1,CLO:ORDER=2,PLOC:ORDER=3 D COL S ^UTILITY($J,NAME,DFN,GDATE,SC)=$S(V:"** COLLATERAL **",1:"") K V
Q
TDO D COL S ^UTILITY($J," "_TDO,DFN,GDATE,SC)=$S(V:"** COLLATERAL **",1:"") Q
CLO D COL S SCN=$S($D(^SC(SC,0)):$P(^(0),"^"),1:SC),^UTILITY($J,"A",SCN," "_TDO,DFN)=SC_$S(V:"^** COLLATERAL **",1:""),^UTILITY($J,"B",DFN,GDATE)=SC K V Q
PLOC I VAUTC=0,'$D(VAUTC(SC)) Q
D COL
S SDLOC=$P($G(^SC(SC,0)),"^",11) I SDLOC="" S SDLOC="NOT DEFINED"
I SDLOC'=SDPLSRT,SDPLSRT'="ALL" Q
S ^UTILITY($J,"A",SDLOC," "_TDO,DFN)=SC_$S(V:"** COLLATERAL **",1:"")
S ^UTILITY($J,"B",DFN,GDATE)=SC
K V
Q
COL S V=0 I $P(^SC(SC,"S",GDATE,1,L,0),"^",10)]"" S V=$P(^(0),"^",10),V=$S($D(^DIC(8,+V,0)):$P(^(0),"^",9)=13,1:0)
Q
CKP I SDREP D CKP1 Q
I 'DFN S DA(2)=SC,DA(1)=GDATE,DA=L,DIK="^SC("_DA(2)_",""S"","_DA(1)_",1," D ^DIK S POP=1 K DA,DIK Q ;SD*509 kill bad node when DFN is null
I $D(^DPT(DFN,"S",GDATE,0)),$P(^(0),"^",2)'["C",$S($D(SDI1):1,SDX["ALL":1,SDIQ=1:1,$P(^(0),"^",6)'["Y":1,1:0) S POP=0
Q
CKP1 I 'DFN S DA(2)=SC,DA(1)=GDATE,DA=L,DIK="^SC("_DA(2)_",""S"","_DA(1)_",1," D ^DIK S POP=1 K DA,DIK Q ;SD*509 kill bad node when DFN is null
I $S('$D(^DPT(DFN,"S",GDATE,0)):1,$P(^(0),"^",2)["C":1,1:0) S POP=1 Q
I SDX["ALL" S POP=0 Q
I $P(^DPT(DFN,"S",GDATE,0),"^",13)']""!($P(^(0),"^",13)=SDSTART) S POP=0,$P(^(0),"^",13)=SDSTART Q
S POP=1 Q
LIN S X=K D TM W !,$J(X,8) I $D(^SC(L,0)) W ?11,$P(^(0),"^",1) D LOC W ?42,SDLOC K SDLOC D:$D(^DPT(J,"S",K,0)) SETP W:'$D(^DPT(J,"S",K,0)) ?70,"*DELETED*" D SCCOND^SDROUT2
W:'$D(^SC(L,0)) ?11,L
D:$Y>(IOSL-5) HED^SDROUT2 Q
LOC S SDLOC=$P(^SC(L,0),"^",11) I SDLOC']"",$D(^DIC(4,+$$SITE^VASITE,"DIV")),^("DIV")="Y" S SDLOC=$S($P(^SC(L,0),"^",15)=DIV:"",$D(^DG(40.8,+$P(^SC(L,0),"^",15),0)):$P(^(0),"^",1),1:"")
Q
FUT I $O(^DPT(J,"S",SDATE_".9"))>0 D HED2 F M=SDATE_".9":0 S M=$O(^DPT(J,"S",M)) Q:M="" D:$Y>(IOSL-5) HED^SDROUT2 I $S($P(^DPT(J,"S",M,0),"^",2)']"":1,$P(^(0),"^",2)="I":1,1:0) D LIN2
I SDREP,SDX'["ALL" W !!,"DATE PRINTED : " S Y=SDSTART D DTS^SDUTL W Y,!,"DATE REPRINTED: ",PRDATE Q
W !!,"DATE PRINTED: ",PRDATE Q
LIN2 D LIN2^SDROUT1
S L=+^DPT(J,"S",M,0),X=M D TM S Y=M D DTS^SDUTL W !,Y,?11,$J(X,8),?20,$P(^SC(L,0),"^",1) D LOC W ?52,SDLOC K SDLOC
Q
HED2 W !!,?9,"**FUTURE APPOINTMENTS**"
W !!," DATE",?11,"TIME",?21,"CLINIC",?55,"LOCATION",! Q
TM I $P(X,".",2)']"" S X1=""
; pwc checked for midnight time of 2400 so it will display as AM instead of PM SD*5.3*694 (VSE)
S X=$E($P(X,".",2)_"0000",1,4),%=X>1159 S:X=2400 %=0 S:X>1259 X=X-1200 S X=X\100_":"_$E(X#100+100,2,3)_" "_$E("AP",%+1)_"M" Q
SETP S $P(^DPT(J,"S",K,0),"^",6)="Y" I $P(^(0),"^",13)']"" S $P(^(0),"^",13)=DT
Q
CLIN F G=0:0 S I=$O(^UTILITY($J,"A",I)) Q:I="" S SDTD=0 F H=0:0 S SDTD=$O(^UTILITY($J,"A",I,SDTD)) Q:SDTD="" F J=0:0 S J=$O(^UTILITY($J,"A",I,SDTD,J)) Q:J="" I ^(J) S SC=+^(J),POP=1 D FIRST I 'POP S P=0 D HED^SDROUT2,HD^SDROUT2,CNT,TIME
W:IOF]"" !,@IOF G END^SDROUT1
FIRST I ORDER=3 S POP=0 Q
F A=SDATE:0 S A=$O(^DPT(J,"S",A)) Q:(A'>0)!($P(A,".")'=SDATE) I $P(^(A,0),"^",2)'["C" S SD=+^(0) I $D(^SC(SD,0)),$S(DIV="":1,$P(^SC(SD,0),"^",15)=DIV:1,1:0) S:SD=+SC POP=0 Q
Q
TIME F K=0:0 S K=$O(^UTILITY($J,"B",J,K)) D:K="" FUT Q:K="" S L=^(K) D LIN,X1
Q
X1 I $P(^UTILITY($J,"A",I,SDTD,J),"^",2)]"" W !,?4,$P(^(J),"^",2) Q
I $D(^DPT(+J,.36)),$D(^DIC(8,+^DPT(+J,.36),0)),$P(^(0),"^",9)=13 W !,?4,"** COLLATERAL **"
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDROUT0 4485 printed Oct 16, 2024@19:00:33 Page 2
SDROUT0 ;BSN/GRR,PC - ROUTING SLIPS BY CLINIC ;Feb 12, 2020@15:22
+1 ;;5.3;Scheduling;**343,377,509,694**;Aug 13, 1993;Build 61
GO SET SDCNT=0
DO GO1
if ORDER=2!(ORDER=3)
GOTO CLIN
+1 FOR G=0:0
SET I=$ORDER(^UTILITY($JOB,I))
if I=""
QUIT
FOR J=0:0
SET J=$ORDER(^UTILITY($JOB,I,J))
if J=""
QUIT
SET P=0
DO HED^SDROUT2
DO HD^SDROUT2
DO CNT
FOR K=0:0
SET K=$ORDER(^UTILITY($JOB,I,J,K))
if K=""
DO FUT
if K=""
QUIT
SET L=0
FOR LL=0:0
SET L=$ORDER(^UTILITY($JOB,I,J,K,L))
if L=""
QUIT
DO LIN
DO X
+2 if IOF]""
WRITE !,@IOF
GOTO END^SDROUT1
CNT SET SDCNT=SDCNT+1
QUIT
X IF $PIECE(^UTILITY($JOB,I,J,K,L),"^")]""
WRITE !,?4,$PIECE(^(L),"^")
QUIT
+1 IF $DATA(^DPT(+J,.36))
IF $DATA(^DIC(8,+^DPT(+J,.36),0))
IF $PIECE(^(0),"^",9)=13
WRITE !,?4,"** COLLATERAL **"
+2 QUIT
GO1 SET I=0
if 'SDREP!(SDX'["ALL")!(SDSTART="0000")
QUIT
IF SDSTART?4N
SET SDZ=(SDSTART-1)/10000
SET SDZ=$PIECE(SDZ,".",2)
SET SDZ=SDZ_$EXTRACT("0000",1,4-$LENGTH(SDZ))
SET I=" "_SDZ
KILL SDZ
QUIT
+1 IF '$DATA(^UTILITY($JOB,SDSTART))
SET I=SDSTART
QUIT
+2 SET SDZ=$ASCII($EXTRACT(SDSTART,$LENGTH(SDSTART)))
SET I=$EXTRACT(SDSTART,1,$LENGTH(SDSTART)-1)_$CHAR(SDZ-1)
KILL SDZ
QUIT
GOT SET DFN=$PIECE(^SC(SC,"S",GDATE,1,L,0),"^")
SET POP=1
DO CKP
if POP
QUIT
+1 SET NAME=$PIECE(^DPT(DFN,0),"^")
SET TDO=$PIECE(^(0),"^",9)
SET TDO=$EXTRACT(TDO,8,9)_$EXTRACT(TDO,6,7)
+2 DO ^SDROUT1
if ORDER=1
GOTO TDO
if ORDER=2
GOTO CLO
if ORDER=3
GOTO PLOC
DO COL
SET ^UTILITY($JOB,NAME,DFN,GDATE,SC)=$SELECT(V:"** COLLATERAL **",1:"")
KILL V
+3 QUIT
TDO DO COL
SET ^UTILITY($JOB," "_TDO,DFN,GDATE,SC)=$SELECT(V:"** COLLATERAL **",1:"")
QUIT
CLO DO COL
SET SCN=$SELECT($DATA(^SC(SC,0)):$PIECE(^(0),"^"),1:SC)
SET ^UTILITY($JOB,"A",SCN," "_TDO,DFN)=SC_$SELECT(V:"^** COLLATERAL **",1:"")
SET ^UTILITY($JOB,"B",DFN,GDATE)=SC
KILL V
QUIT
PLOC IF VAUTC=0
IF '$DATA(VAUTC(SC))
QUIT
+1 DO COL
+2 SET SDLOC=$PIECE($GET(^SC(SC,0)),"^",11)
IF SDLOC=""
SET SDLOC="NOT DEFINED"
+3 IF SDLOC'=SDPLSRT
IF SDPLSRT'="ALL"
QUIT
+4 SET ^UTILITY($JOB,"A",SDLOC," "_TDO,DFN)=SC_$SELECT(V:"** COLLATERAL **",1:"")
+5 SET ^UTILITY($JOB,"B",DFN,GDATE)=SC
+6 KILL V
+7 QUIT
COL SET V=0
IF $PIECE(^SC(SC,"S",GDATE,1,L,0),"^",10)]""
SET V=$PIECE(^(0),"^",10)
SET V=$SELECT($DATA(^DIC(8,+V,0)):$PIECE(^(0),"^",9)=13,1:0)
+1 QUIT
CKP IF SDREP
DO CKP1
QUIT
+1 ;SD*509 kill bad node when DFN is null
IF 'DFN
SET DA(2)=SC
SET DA(1)=GDATE
SET DA=L
SET DIK="^SC("_DA(2)_",""S"","_DA(1)_",1,"
DO ^DIK
SET POP=1
KILL DA,DIK
QUIT
+2 IF $DATA(^DPT(DFN,"S",GDATE,0))
IF $PIECE(^(0),"^",2)'["C"
IF $SELECT($DATA(SDI1):1,SDX["ALL":1,SDIQ=1:1,$PIECE(^(0),"^",6)'["Y":1,1:0)
SET POP=0
+3 QUIT
CKP1 ;SD*509 kill bad node when DFN is null
IF 'DFN
SET DA(2)=SC
SET DA(1)=GDATE
SET DA=L
SET DIK="^SC("_DA(2)_",""S"","_DA(1)_",1,"
DO ^DIK
SET POP=1
KILL DA,DIK
QUIT
+1 IF $SELECT('$DATA(^DPT(DFN,"S",GDATE,0)):1,$PIECE(^(0),"^",2)["C":1,1:0)
SET POP=1
QUIT
+2 IF SDX["ALL"
SET POP=0
QUIT
+3 IF $PIECE(^DPT(DFN,"S",GDATE,0),"^",13)']""!($PIECE(^(0),"^",13)=SDSTART)
SET POP=0
SET $PIECE(^(0),"^",13)=SDSTART
QUIT
+4 SET POP=1
QUIT
LIN SET X=K
DO TM
WRITE !,$JUSTIFY(X,8)
IF $DATA(^SC(L,0))
WRITE ?11,$PIECE(^(0),"^",1)
DO LOC
WRITE ?42,SDLOC
KILL SDLOC
if $DATA(^DPT(J,"S",K,0))
DO SETP
if '$DATA(^DPT(J,"S",K,0))
WRITE ?70,"*DELETED*"
DO SCCOND^SDROUT2
+1 if '$DATA(^SC(L,0))
WRITE ?11,L
+2 if $Y>(IOSL-5)
DO HED^SDROUT2
QUIT
LOC SET SDLOC=$PIECE(^SC(L,0),"^",11)
IF SDLOC']""
IF $DATA(^DIC(4,+$$SITE^VASITE,"DIV"))
IF ^("DIV")="Y"
SET SDLOC=$SELECT($PIECE(^SC(L,0),"^",15)=DIV:"",$DATA(^DG(40.8,+$PIECE(^SC(L,0),"^",15),0)):$PIECE(^(0),"^",1),1:"")
+1 QUIT
FUT IF $ORDER(^DPT(J,"S",SDATE_".9"))>0
DO HED2
FOR M=SDATE_".9":0
SET M=$ORDER(^DPT(J,"S",M))
if M=""
QUIT
if $Y>(IOSL-5)
DO HED^SDROUT2
IF $SELECT($PIECE(^DPT(J,"S",M,0),"^",2)']"":1,$PIECE(^(0),"^",2)="I":1,1:0)
DO LIN2
+1 IF SDREP
IF SDX'["ALL"
WRITE !!,"DATE PRINTED : "
SET Y=SDSTART
DO DTS^SDUTL
WRITE Y,!,"DATE REPRINTED: ",PRDATE
QUIT
+2 WRITE !!,"DATE PRINTED: ",PRDATE
QUIT
LIN2 DO LIN2^SDROUT1
+1 SET L=+^DPT(J,"S",M,0)
SET X=M
DO TM
SET Y=M
DO DTS^SDUTL
WRITE !,Y,?11,$JUSTIFY(X,8),?20,$PIECE(^SC(L,0),"^",1)
DO LOC
WRITE ?52,SDLOC
KILL SDLOC
+2 QUIT
HED2 WRITE !!,?9,"**FUTURE APPOINTMENTS**"
+1 WRITE !!," DATE",?11,"TIME",?21,"CLINIC",?55,"LOCATION",!
QUIT
TM IF $PIECE(X,".",2)']""
SET X1=""
+1 ; pwc checked for midnight time of 2400 so it will display as AM instead of PM SD*5.3*694 (VSE)
+2 SET X=$EXTRACT($PIECE(X,".",2)_"0000",1,4)
SET %=X>1159
if X=2400
SET %=0
if X>1259
SET X=X-1200
SET X=X\100_":"_$EXTRACT(X#100+100,2,3)_" "_$EXTRACT("AP",%+1)_"M"
QUIT
SETP SET $PIECE(^DPT(J,"S",K,0),"^",6)="Y"
IF $PIECE(^(0),"^",13)']""
SET $PIECE(^(0),"^",13)=DT
+1 QUIT
CLIN FOR G=0:0
SET I=$ORDER(^UTILITY($JOB,"A",I))
if I=""
QUIT
SET SDTD=0
FOR H=0:0
SET SDTD=$ORDER(^UTILITY($JOB,"A",I,SDTD))
if SDTD=""
QUIT
FOR J=0:0
SET J=$ORDER(^UTILITY($JOB,"A",I,SDTD,J))
if J=""
QUIT
IF ^(J)
SET SC=+^(J)
SET POP=1
DO FIRST
IF 'POP
SET P=0
DO HED^SDROUT2
DO HD^SDROUT2
DO CNT
DO TIME
+1 if IOF]""
WRITE !,@IOF
GOTO END^SDROUT1
FIRST IF ORDER=3
SET POP=0
QUIT
+1 FOR A=SDATE:0
SET A=$ORDER(^DPT(J,"S",A))
if (A'>0)!($PIECE(A,".")'=SDATE)
QUIT
IF $PIECE(^(A,0),"^",2)'["C"
SET SD=+^(0)
IF $DATA(^SC(SD,0))
IF $SELECT(DIV="":1,$PIECE(^SC(SD,0),"^",15)=DIV:1,1:0)
if SD=+SC
SET POP=0
QUIT
+2 QUIT
TIME FOR K=0:0
SET K=$ORDER(^UTILITY($JOB,"B",J,K))
if K=""
DO FUT
if K=""
QUIT
SET L=^(K)
DO LIN
DO X1
+1 QUIT
X1 IF $PIECE(^UTILITY($JOB,"A",I,SDTD,J),"^",2)]""
WRITE !,?4,$PIECE(^(J),"^",2)
QUIT
+1 IF $DATA(^DPT(+J,.36))
IF $DATA(^DIC(8,+^DPT(+J,.36),0))
IF $PIECE(^(0),"^",9)=13
WRITE !,?4,"** COLLATERAL **"
+2 QUIT
+3 ;