SDES2CLINPRECAN ;ALB/JHC - VISTA SCHEDULING RPCS CANCEL CLINIC AVAILABILITY - PRE-CANCELLATION LIST ; MAR 10 2026
;;5.3;Scheduling;**940**;Aug 13, 1993;Build 5
;;Per VHA Directive 6402, this routine should not be modified
;
; RPC: SDES2 CANCEL CLIN PRECAN LIST
;
; Reference to DUZ^XUP is supported by IA #7487
;
Q ;No Direct Call
; get pre-cancellation list for cancelling clinic availability
CLINPRECAN(RESULT,SDCONTEXT,APPTPARAMS) ;
;
; SDCONTEXT("ACHERON AUDIT ID")
; SDCONTEXT("USER DUZ")
;
; APPTPARAMS("ClinicIEN")
; APPTPARAMS("BeginDateTime")
; APPTPARAMS("EndDateTime")
;
N ERRORS,SDBEGDATE,SDENDDATE,RESOURCEIEN,APPTIEN,APPTOBJ,RECCNT,APPTDATE
;
D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
I $D(ERRORS) S ERRORS("Appointment",1)="" D BUILDJSON^SDES2JSON(.RESULT,.ERRORS) Q
I $G(SDCONTEXT("USER DUZ"))'="" N DUZ D DUZ^XUP(SDCONTEXT("USER DUZ"))
;
D VALIDATE(.ERRORS,.APPTPARAMS,.SDBEGDATE,.SDENDDATE)
I $D(ERRORS) S ERRORS("Appointment",1)="" D BUILDJSON^SDES2JSON(.RESULT,.ERRORS) Q
;
S RESOURCEIEN=$$GETRES^SDES2UTIL1(APPTPARAMS("ClinicIEN"),1)
I RESOURCEIEN="" D ERRLOG^SDES2JSON(.ERRORS,52,"Clinic is missing a resourceIEN")
I $D(ERRORS) S ERRORS("Appointment",1)="" D BUILDJSON^SDES2JSON(.RESULT,.ERRORS) Q
;add error if resource not found
;
S APPTDATE=-.0001
S RECCNT=0
F S APPTDATE=$O(^SDEC(409.84,"ARSRC",RESOURCEIEN,APPTDATE)) Q:(APPTDATE="") D
. ;Date range check, beginning date is inclusive, end date is not inclusive
. I (APPTDATE<SDBEGDATE)!(APPTDATE>=SDENDDATE) Q
. S APPTIEN=""
. F S APPTIEN=$O(^SDEC(409.84,"ARSRC",RESOURCEIEN,APPTDATE,APPTIEN)) Q:APPTIEN="" D
. . S RECCNT=RECCNT+1
. . D BUILDAPPTOBJ^SDES2BLDAPPTOBJ(.APPTOBJ,APPTIEN,RECCNT,.ERRORS,DUZ)
I $D(ERRORS) M ERRORS=APPTOBJ D BUILDJSON^SDES2JSON(.RESULT,.ERRORS) Q
S:'$D(APPTOBJ) APPTOBJ("Appointment",1)=""
D BUILDJSON^SDES2JSON(.RESULT,.APPTOBJ)
Q
VALIDATE(ERRORS,APPTPARAMS,SDBEGDATE,SDENDDATE) ;
; Validate Clinic IEN
D VALFILEIEN^SDES2VALUTIL(,.ERRORS,44,$G(APPTPARAMS("ClinicIEN")),1,0,18,19)
; Validate Begin and End Date/Times
S SDBEGDATE=$G(APPTPARAMS("BeginDateTime")),SDENDDATE=$G(APPTPARAMS("EndDateTime"))
I SDBEGDATE="" D ERRLOG^SDES2JSON(.ERRORS,161)
I SDBEGDATE'="" S SDBEGDATE=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$G(APPTPARAMS("BeginDateTime")),,1,161,161)
I SDENDDATE="" D ERRLOG^SDES2JSON(.ERRORS,162)
I SDENDDATE'="" S SDENDDATE=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$G(APPTPARAMS("EndDateTime")),,1,162,162)
I SDBEGDATE>SDENDDATE D ERRLOG^SDES2JSON(.ERRORS,13)
;
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDES2CLINPRECAN 2597 printed May 25, 2026@12:57:54 Page 2
SDES2CLINPRECAN ;ALB/JHC - VISTA SCHEDULING RPCS CANCEL CLINIC AVAILABILITY - PRE-CANCELLATION LIST ; MAR 10 2026
+1 ;;5.3;Scheduling;**940**;Aug 13, 1993;Build 5
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;
+4 ; RPC: SDES2 CANCEL CLIN PRECAN LIST
+5 ;
+6 ; Reference to DUZ^XUP is supported by IA #7487
+7 ;
+8 ;No Direct Call
QUIT
+9 ; get pre-cancellation list for cancelling clinic availability
CLINPRECAN(RESULT,SDCONTEXT,APPTPARAMS) ;
+1 ;
+2 ; SDCONTEXT("ACHERON AUDIT ID")
+3 ; SDCONTEXT("USER DUZ")
+4 ;
+5 ; APPTPARAMS("ClinicIEN")
+6 ; APPTPARAMS("BeginDateTime")
+7 ; APPTPARAMS("EndDateTime")
+8 ;
+9 NEW ERRORS,SDBEGDATE,SDENDDATE,RESOURCEIEN,APPTIEN,APPTOBJ,RECCNT,APPTDATE
+10 ;
+11 DO VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
+12 IF $DATA(ERRORS)
SET ERRORS("Appointment",1)=""
DO BUILDJSON^SDES2JSON(.RESULT,.ERRORS)
QUIT
+13 IF $GET(SDCONTEXT("USER DUZ"))'=""
NEW DUZ
DO DUZ^XUP(SDCONTEXT("USER DUZ"))
+14 ;
+15 DO VALIDATE(.ERRORS,.APPTPARAMS,.SDBEGDATE,.SDENDDATE)
+16 IF $DATA(ERRORS)
SET ERRORS("Appointment",1)=""
DO BUILDJSON^SDES2JSON(.RESULT,.ERRORS)
QUIT
+17 ;
+18 SET RESOURCEIEN=$$GETRES^SDES2UTIL1(APPTPARAMS("ClinicIEN"),1)
+19 IF RESOURCEIEN=""
DO ERRLOG^SDES2JSON(.ERRORS,52,"Clinic is missing a resourceIEN")
+20 IF $DATA(ERRORS)
SET ERRORS("Appointment",1)=""
DO BUILDJSON^SDES2JSON(.RESULT,.ERRORS)
QUIT
+21 ;add error if resource not found
+22 ;
+23 SET APPTDATE=-.0001
+24 SET RECCNT=0
+25 FOR
SET APPTDATE=$ORDER(^SDEC(409.84,"ARSRC",RESOURCEIEN,APPTDATE))
if (APPTDATE="")
QUIT
Begin DoDot:1
+26 ;Date range check, beginning date is inclusive, end date is not inclusive
+27 IF (APPTDATE<SDBEGDATE)!(APPTDATE>=SDENDDATE)
QUIT
+28 SET APPTIEN=""
+29 FOR
SET APPTIEN=$ORDER(^SDEC(409.84,"ARSRC",RESOURCEIEN,APPTDATE,APPTIEN))
if APPTIEN=""
QUIT
Begin DoDot:2
+30 SET RECCNT=RECCNT+1
+31 DO BUILDAPPTOBJ^SDES2BLDAPPTOBJ(.APPTOBJ,APPTIEN,RECCNT,.ERRORS,DUZ)
End DoDot:2
End DoDot:1
+32 IF $DATA(ERRORS)
MERGE ERRORS=APPTOBJ
DO BUILDJSON^SDES2JSON(.RESULT,.ERRORS)
QUIT
+33 if '$DATA(APPTOBJ)
SET APPTOBJ("Appointment",1)=""
+34 DO BUILDJSON^SDES2JSON(.RESULT,.APPTOBJ)
+35 QUIT
VALIDATE(ERRORS,APPTPARAMS,SDBEGDATE,SDENDDATE) ;
+1 ; Validate Clinic IEN
+2 DO VALFILEIEN^SDES2VALUTIL(,.ERRORS,44,$GET(APPTPARAMS("ClinicIEN")),1,0,18,19)
+3 ; Validate Begin and End Date/Times
+4 SET SDBEGDATE=$GET(APPTPARAMS("BeginDateTime"))
SET SDENDDATE=$GET(APPTPARAMS("EndDateTime"))
+5 IF SDBEGDATE=""
DO ERRLOG^SDES2JSON(.ERRORS,161)
+6 IF SDBEGDATE'=""
SET SDBEGDATE=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$GET(APPTPARAMS("BeginDateTime")),,1,161,161)
+7 IF SDENDDATE=""
DO ERRLOG^SDES2JSON(.ERRORS,162)
+8 IF SDENDDATE'=""
SET SDENDDATE=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$GET(APPTPARAMS("EndDateTime")),,1,162,162)
+9 IF SDBEGDATE>SDENDDATE
DO ERRLOG^SDES2JSON(.ERRORS,13)
+10 ;
+11 QUIT