SDAM3 ;MJK/ALB - Appt Mgt (Clinic) ; 4/21/05 12:23pm
;;5.3;Scheduling;**63,189,380,478,492**;Aug 13, 1993;Build 1
;
INIT ; -- get init clinic appt data
; input: SDCLN := ifn of pat
; output: ^TMP("SDAM" := appt array
S X=$P($G(^DG(43,1,"SCLR")),U,12),SDPRD=$S(X:X,1:2)
S X1=DT,X2=-SDPRD D C^%DTC S VALMB=X D RANGE^VALM11
I '$D(VALMBEG) S VALMQUIT="" G INITQ
S SDBEG=VALMBEG,SDEND=VALMEND
D CHGCAP^VALM("NAME","Patient")
S X="NO ACTION TAKEN" D LIST^SDAM
INITQ K VALMB,VALMBEG,VALMEND Q
;
BLD ; -- scan apts
N VA,SDAMDD,SDNAME,SDMAX,SDLARGE,DFN,SDCL,BL,XC,XW,AC,AW,TC,TW,NC,NW,SC,SW,SDT,SDDA ; done for speed see INIT^SDAM10
D INIT^SDAM10
F SDT=SDBEG:0 S SDT=$O(^SC(SDCLN,"S",SDT)) Q:'SDT!($P(SDT,".",1)>SDEND) D
.F SDDA=0:0 S SDDA=$O(^SC(SDCLN,"S",SDT,1,SDDA)) Q:'SDDA S CNSTLNK=$P($G(^SC(SDCLN,"S",SDT,1,SDDA,"CONS")),U),CSTAT="" S:CNSTLNK'="" CSTAT=$P($G(^GMR(123,CNSTLNK,0)),U,12) D ;SD/478
..I $D(^SC(SDCLN,"S",SDT,1,SDDA,0)) S DFN=+^(0) D ;SD/492
...N NDX,DA,FND ;SD/492
...S (FND,NDX)="" ;SD/492
...F S NDX=$O(^TMP("SDAMIDX",$J,NDX)) Q:NDX="" D Q:FND ;SD/492
....S DA=^TMP("SDAMIDX",$J,NDX) ;SD/492
....I $P(DA,U,2)=DFN,$P(DA,U,3)=SDT,$P(DA,U,4)=SDCLN S FND=1 ;SD/492
...Q:FND ;SD/492
...D PID^VADPT I $D(^DPT(DFN,"S",SDT,0)),$$VALID^SDAM2(DFN,SDCLN,SDT,SDDA) S SDATA=^DPT(DFN,"S",SDT,0),SDCL=SDCLN,SDNAME=VA("BID")_" "_$P($G(^DPT(DFN,0)),U) D:SDCLN=+SDATA BLD1^SDAM1 ;SD/478,492
D NUL^SDAM10,LARGE^SDAM10:$D(SDLARGE)
S $P(^TMP("SDAM",$J,0),U,4)=VALMCNT
Q
;
HDR ; -- list screen header
; input: SDCLN := ifn of pat
; output: VALMHDR() := hdr array
;
S VALMHDR(1)=$E($P("Clinic: "_$G(^SC(SDCLN,0)),"^",1),1,45) ;for proper display of clinic name for SD*5.3*189
Q
;
CLN ; -- change clinic
I $G(SDAMLIST)["CANCELLED" S VALMBCK="" W !!,*7,"You must be viewing a patient to list cancelled appointments." D PAUSE^VALM1 G CLNQ
D FULL^VALM1 S VALMBCK="R"
S X="" I $D(XQORNOD(0)) S X=$P($P(XQORNOD(0),U,4),"=",2)
W ! S DIC="^SC(",DIC(0)=$S(X]"":"",1:"A")_"EMQ",DIC("A")="Select Clinic: ",DIC("S")="I $P(^(0),U,3)=""C"",'$G(^(""OOS""))"
D ^DIC K DIC
I Y<0 D G CLNQ
.I SDAMTYP="C" S VALMSG=$C(7)_"Clinic has not been changed."
.I SDAMTYP="P" S VALMSG=$C(7)_"View of patient remains in affect."
I SDAMTYP'="C" D CHGCAP^VALM("NAME","Patient") S SDAMTYP="C"
N SDRES I SDAMTYP="C" S SDRES=$$CLNCK^SDUTL2(+Y,1) I 'SDRES D G CLNQ
.W !,?5,"Clinic MUST be corrected before continuing." D PAUSE^VALM1
S SDCLN=+Y K SDFN D BLD
CLNQ Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDAM3 2737 printed Oct 16, 2024@18:47:43 Page 2
SDAM3 ;MJK/ALB - Appt Mgt (Clinic) ; 4/21/05 12:23pm
+1 ;;5.3;Scheduling;**63,189,380,478,492**;Aug 13, 1993;Build 1
+2 ;
INIT ; -- get init clinic appt data
+1 ; input: SDCLN := ifn of pat
+2 ; output: ^TMP("SDAM" := appt array
+3 SET X=$PIECE($GET(^DG(43,1,"SCLR")),U,12)
SET SDPRD=$SELECT(X:X,1:2)
+4 SET X1=DT
SET X2=-SDPRD
DO C^%DTC
SET VALMB=X
DO RANGE^VALM11
+5 IF '$DATA(VALMBEG)
SET VALMQUIT=""
GOTO INITQ
+6 SET SDBEG=VALMBEG
SET SDEND=VALMEND
+7 DO CHGCAP^VALM("NAME","Patient")
+8 SET X="NO ACTION TAKEN"
DO LIST^SDAM
INITQ KILL VALMB,VALMBEG,VALMEND
QUIT
+1 ;
BLD ; -- scan apts
+1 ; done for speed see INIT^SDAM10
NEW VA,SDAMDD,SDNAME,SDMAX,SDLARGE,DFN,SDCL,BL,XC,XW,AC,AW,TC,TW,NC,NW,SC,SW,SDT,SDDA
+2 DO INIT^SDAM10
+3 FOR SDT=SDBEG:0
SET SDT=$ORDER(^SC(SDCLN,"S",SDT))
if 'SDT!($PIECE(SDT,".",1)>SDEND)
QUIT
Begin DoDot:1
+4 ;SD/478
FOR SDDA=0:0
SET SDDA=$ORDER(^SC(SDCLN,"S",SDT,1,SDDA))
if 'SDDA
QUIT
SET CNSTLNK=$PIECE($GET(^SC(SDCLN,"S",SDT,1,SDDA,"CONS")),U)
SET CSTAT=""
if CNSTLNK'=""
SET CSTAT=$PIECE($GET(^GMR(123,CNSTLNK,0)),U,12)
Begin DoDot:2
+5 ;SD/492
IF $DATA(^SC(SDCLN,"S",SDT,1,SDDA,0))
SET DFN=+^(0)
Begin DoDot:3
+6 ;SD/492
NEW NDX,DA,FND
+7 ;SD/492
SET (FND,NDX)=""
+8 ;SD/492
FOR
SET NDX=$ORDER(^TMP("SDAMIDX",$JOB,NDX))
if NDX=""
QUIT
Begin DoDot:4
+9 ;SD/492
SET DA=^TMP("SDAMIDX",$JOB,NDX)
+10 ;SD/492
IF $PIECE(DA,U,2)=DFN
IF $PIECE(DA,U,3)=SDT
IF $PIECE(DA,U,4)=SDCLN
SET FND=1
End DoDot:4
if FND
QUIT
+11 ;SD/492
if FND
QUIT
+12 ;SD/478,492
DO PID^VADPT
IF $DATA(^DPT(DFN,"S",SDT,0))
IF $$VALID^SDAM2(DFN,SDCLN,SDT,SDDA)
SET SDATA=^DPT(DFN,"S",SDT,0)
SET SDCL=SDCLN
SET SDNAME=VA("BID")_" "_$PIECE($GET(^DPT(DFN,0)),U)
if SDCLN=+SDATA
DO BLD1^SDAM1
End DoDot:3
End DoDot:2
End DoDot:1
+13 DO NUL^SDAM10
if $DATA(SDLARGE)
DO LARGE^SDAM10
+14 SET $PIECE(^TMP("SDAM",$JOB,0),U,4)=VALMCNT
+15 QUIT
+16 ;
HDR ; -- list screen header
+1 ; input: SDCLN := ifn of pat
+2 ; output: VALMHDR() := hdr array
+3 ;
+4 ;for proper display of clinic name for SD*5.3*189
SET VALMHDR(1)=$EXTRACT($PIECE("Clinic: "_$GET(^SC(SDCLN,0)),"^",1),1,45)
+5 QUIT
+6 ;
CLN ; -- change clinic
+1 IF $GET(SDAMLIST)["CANCELLED"
SET VALMBCK=""
WRITE !!,*7,"You must be viewing a patient to list cancelled appointments."
DO PAUSE^VALM1
GOTO CLNQ
+2 DO FULL^VALM1
SET VALMBCK="R"
+3 SET X=""
IF $DATA(XQORNOD(0))
SET X=$PIECE($PIECE(XQORNOD(0),U,4),"=",2)
+4 WRITE !
SET DIC="^SC("
SET DIC(0)=$SELECT(X]"":"",1:"A")_"EMQ"
SET DIC("A")="Select Clinic: "
SET DIC("S")="I $P(^(0),U,3)=""C"",'$G(^(""OOS""))"
+5 DO ^DIC
KILL DIC
+6 IF Y<0
Begin DoDot:1
+7 IF SDAMTYP="C"
SET VALMSG=$CHAR(7)_"Clinic has not been changed."
+8 IF SDAMTYP="P"
SET VALMSG=$CHAR(7)_"View of patient remains in affect."
End DoDot:1
GOTO CLNQ
+9 IF SDAMTYP'="C"
DO CHGCAP^VALM("NAME","Patient")
SET SDAMTYP="C"
+10 NEW SDRES
IF SDAMTYP="C"
SET SDRES=$$CLNCK^SDUTL2(+Y,1)
IF 'SDRES
Begin DoDot:1
+11 WRITE !,?5,"Clinic MUST be corrected before continuing."
DO PAUSE^VALM1
End DoDot:1
GOTO CLNQ
+12 SET SDCLN=+Y
KILL SDFN
DO BLD
CLNQ QUIT
+1 ;