SDC1 ;ALB/GRR - PRINT CLINIC PRE-CANCELLATION LIST ; 6/30/05 10:15am
;;5.3;PIMS;**379,398,439,478,1015,1016**;JUN 30, 2012;Build 20
;IHS/ANMC/LJF 11/30/2000 changed $N to $O
; 12/13/2000 added date to report heading
K ^TMP("SDC1",$J) S DGVAR="SD^SC^SDTIME",DGPGM="START^SDC1" D ZIS^DGUTQ Q:POP
START U IO S SDCNT=0 K DUOUT,DTOUT N SDBADD,SNODE S SDBADD=0,SNODE=""
; sd*5.3*439 FOR loop changed to exclude if different clinic
F J=SD:0 S J=$O(^SC(SC,"S",J)) Q:J=""!(J\1-SD)!$D(DTOUT)!$D(DUOUT) D
. S J2=0 F S J2=$O(^SC(SC,"S",J,1,J2)) Q:J2=""!$D(DTOUT)!$D(DUOUT) D
.. I '$D(^SC(SC,"S",J,1,J2,0)) I $D(^("C")) D DELETE Q ;SD*545 if corrupt node delete
.. I '+$G(^SC(SC,"S",J,1,J2,0)) D DELETE Q ;SD*545 if DFN missing delete record
.. S DFN=+^SC(SC,"S",J,1,J2,0),SDLE=$P(^(0),U,2)
.. Q:'$D(^DPT(DFN,"S",J,0)) S SNODE=^(0)
.. Q:$P(SNODE,U,1)'=SC&($P(SNODE,U,14)'=SDTIME)
.. I $P(SNODE,U,2)'["C"!($P(SNODE,U,14)=SDTIME) D PLST Q:$D(DTOUT)!$D(DUOUT)
G:$D(DUOUT)!$D(DTOUT) EXIT I SDCNT=0 S NOAP=1 W !,"NO APPOINTMENTS SCHEDULED"
I SDBADD D
. W !!,"* THIS PATIENT HAS BEEN FLAGGED WITH A BAD ADDRESS INDICATOR, NO LETTER"
. W !,"WILL BE PRINTED."
I $E(IOST,1,2)'="C-" W @IOF
EXIT K DUOUT,DTOUT,I,J,J2,X,DFN,SNODE,SDLE,SDCNT,^TMP("SDC1",$J) W !! D CLOSE^DGUTQ Q ; sd*5.3*439 added local vars to kill
PLST I SDCNT=0!($Y+2>IOSL) S DIR(0)="E" D:$E(IOST,1,2)="C-" ^DIR K DIR Q:$D(DTOUT)!$D(DUOUT) D HED
;
;CHECK FOR DUPLICATE ENTRY IN FILE 44 - SD*5.3*379
;
I $D(^TMP("SDC1",$J,J,DFN)) Q
S ^TMP("SDC1",$J,J,DFN)=""
;
N VA D PID^VADPT6
N CSLNK S CSLNK=$P($G(^SC(SC,"S",J,1,J2,"CONS")),U) ;SD/478
W ! I $$BADADR^DGUTL3(+DFN) W "*" S SDBADD=1
W $P(^DPT(DFN,0),"^",1),?30,VA("PID") S X=J D TM^SDROUT0 W ?43,$J(X,8),?52,$S(CSLNK'="":"CONS",1:""),?58,SDLE W:$D(^DPT(DFN,.13)) ?64,$P(^(.13),"^",1) ;SD/478
S SDCNT=SDCNT+1 Q
HED ;W @IOF,!,$P(^SC(SC,0),"^",1)," Clinic Pre-cancellation list",!,"PATIENT NAME",?34,"ID",?43,"APPT TIME",?56,"LENGTH",?64,"TELEPHONE" ;IHS/ANMC/.LJF 12/13/2000
W @IOF,!,$P(^SC(SC,0),"^",1)," Clinic Pre-cancellation list for ",$$FMTE^XLFDT(SD,"D"),!,"PATIENT NAME",?34,"ID",?43,"APPT TIME",?56,"LENGTH",?64,"TELEPHONE" ;IHS/ANMC/LJF 12/13/2000
W ! F I=1:1:79 W "-"
Q
;
DELETE ;SD*5.3*545 when applicable, delete corrupt appt sub-record
S DA(2)=SC,DA(1)=J,DA=J2
S DIK="^SC("_DA(2)_",""S"","_DA(1)_",1," D ^DIK
K DA,DIK
Q
SDC1 ;ALB/GRR - PRINT CLINIC PRE-CANCELLATION LIST ; 6/30/05 10:15am
+1 ;;5.3;PIMS;**379,398,439,478,1015,1016**;JUN 30, 2012;Build 20
+2 ;IHS/ANMC/LJF 11/30/2000 changed $N to $O
+3 ; 12/13/2000 added date to report heading
+4 KILL ^TMP("SDC1",$JOB)
SET DGVAR="SD^SC^SDTIME"
SET DGPGM="START^SDC1"
DO ZIS^DGUTQ
IF POP
QUIT
START USE IO
SET SDCNT=0
KILL DUOUT,DTOUT
NEW SDBADD,SNODE
SET SDBADD=0
SET SNODE=""
+1 ; sd*5.3*439 FOR loop changed to exclude if different clinic
+2 FOR J=SD:0
SET J=$ORDER(^SC(SC,"S",J))
IF J=""!(J\1-SD)!$DATA(DTOUT)!$DATA(DUOUT)
QUIT
Begin DoDot:1
+3 SET J2=0
FOR
SET J2=$ORDER(^SC(SC,"S",J,1,J2))
IF J2=""!$DATA(DTOUT)!$DATA(DUOUT)
QUIT
Begin DoDot:2
+4 ;SD*545 if corrupt node delete
IF '$DATA(^SC(SC,"S",J,1,J2,0))
IF $DATA(^("C"))
DO DELETE
QUIT
+5 ;SD*545 if DFN missing delete record
IF '+$GET(^SC(SC,"S",J,1,J2,0))
DO DELETE
QUIT
+6 SET DFN=+^SC(SC,"S",J,1,J2,0)
SET SDLE=$PIECE(^(0),U,2)
+7 IF '$DATA(^DPT(DFN,"S",J,0))
QUIT
SET SNODE=^(0)
+8 IF $PIECE(SNODE,U,1)'=SC&($PIECE(SNODE,U,14)'=SDTIME)
QUIT
+9 IF $PIECE(SNODE,U,2)'["C"!($PIECE(SNODE,U,14)=SDTIME)
DO PLST
IF $DATA(DTOUT)!$DATA(DUOUT)
QUIT
End DoDot:2
End DoDot:1
+10 IF $DATA(DUOUT)!$DATA(DTOUT)
GOTO EXIT
IF SDCNT=0
SET NOAP=1
WRITE !,"NO APPOINTMENTS SCHEDULED"
+11 IF SDBADD
Begin DoDot:1
+12 WRITE !!,"* THIS PATIENT HAS BEEN FLAGGED WITH A BAD ADDRESS INDICATOR, NO LETTER"
+13 WRITE !,"WILL BE PRINTED."
End DoDot:1
+14 IF $EXTRACT(IOST,1,2)'="C-"
WRITE @IOF
EXIT ; sd*5.3*439 added local vars to kill
KILL DUOUT,DTOUT,I,J,J2,X,DFN,SNODE,SDLE,SDCNT,^TMP("SDC1",$JOB)
WRITE !!
DO CLOSE^DGUTQ
QUIT
PLST IF SDCNT=0!($Y+2>IOSL)
SET DIR(0)="E"
IF $EXTRACT(IOST,1,2)="C-"
DO ^DIR
KILL DIR
IF $DATA(DTOUT)!$DATA(DUOUT)
QUIT
DO HED
+1 ;
+2 ;CHECK FOR DUPLICATE ENTRY IN FILE 44 - SD*5.3*379
+3 ;
+4 IF $DATA(^TMP("SDC1",$JOB,J,DFN))
QUIT
+5 SET ^TMP("SDC1",$JOB,J,DFN)=""
+6 ;
+7 NEW VA
DO PID^VADPT6
+8 ;SD/478
NEW CSLNK
SET CSLNK=$PIECE($GET(^SC(SC,"S",J,1,J2,"CONS")),U)
+9 WRITE !
IF $$BADADR^DGUTL3(+DFN)
WRITE "*"
SET SDBADD=1
+10 ;SD/478
WRITE $PIECE(^DPT(DFN,0),"^",1),?30,VA("PID")
SET X=J
DO TM^SDROUT0
WRITE ?43,$JUSTIFY(X,8),?52,$SELECT(CSLNK'="":"CONS",1:""),?58,SDLE
IF $DATA(^DPT(DFN,.13))
WRITE ?64,$PIECE(^(.13),"^",1)
+11 SET SDCNT=SDCNT+1
QUIT
HED ;W @IOF,!,$P(^SC(SC,0),"^",1)," Clinic Pre-cancellation list",!,"PATIENT NAME",?34,"ID",?43,"APPT TIME",?56,"LENGTH",?64,"TELEPHONE" ;IHS/ANMC/.LJF 12/13/2000
+1 ;IHS/ANMC/LJF 12/13/2000
WRITE @IOF,!,$PIECE(^SC(SC,0),"^",1)," Clinic Pre-cancellation list for ",$$FMTE^XLFDT(SD,"D"),!,"PATIENT NAME",?34,"ID",?43,"APPT TIME",?56,"LENGTH",?64,"TELEPHONE"
+2 WRITE !
FOR I=1:1:79
WRITE "-"
+3 QUIT
+4 ;
DELETE ;SD*5.3*545 when applicable, delete corrupt appt sub-record
+1 SET DA(2)=SC
SET DA(1)=J
SET DA=J2
+2 SET DIK="^SC("_DA(2)_",""S"","_DA(1)_",1,"
DO ^DIK
+3 KILL DA,DIK
+4 QUIT