SDES2GETCLNSLOT ;ALB/TJB - SDES2 GET CLINIC CANCEL SLOTS for HOSPITAL LOCATION FILE 44 ;April 21, 2025
;;5.3;Scheduling;**906**;Aug 13, 1993;Build 5
;;Per VHA Directive 6402, this routine should not be modified
;
; Documented API's and Integration Agreements
; -------------------------------------------
;Reference to $$GETS^DIQ is supported by IA #2056
;Reference to $$GETS1^DIQ is supported by IA #2056
;
Q
; SDINPUT("CLINIC IEN")=IEN from file 44
; SDINPUT("START DATE")=START DATE
;
CANAVAIL(JSON,SDCONTEXT,SDINPUT) ;
N ERRORS,STARTDT,DIERR
D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
I $D(ERRORS) S ERRORS("restoreArray",1)="" D BUILDJSON^SDES2JSON(.JSON,.ERRORS) Q
D VALCLINIEN^SDES2VAL44(.ERRORS,$G(SDINPUT("CLINIC IEN")),1)
S STARTDT=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$G(SDINPUT("START DATE")),$G(SDINPUT("CLINIC IEN")),1)
I $D(ERRORS) S ERRORS("restoreArray",1)="" D BUILDJSON^SDES2JSON(.JSON,.ERRORS) Q
D BUILDSLOTS(.JSON,SDINPUT("CLINIC IEN"),STARTDT)
Q
BUILDSLOTS(JSON,CLINIC,STARTDT,ENDDT) ;
N SDARR
D RETCANPERIODS(.SDARR,CLINIC,STARTDT)
I '$D(SDARR) S SDARR("restoreArray",1)=""
D BUILDJSON^SDES2JSON(.JSON,.SDARR)
Q
RETCANPERIODS(RETURN,CLINIC,DATETIME) ; if sent in time is not cancelled return time periods that are cancelled
N NEWDATE,STARTDATE,CNT,ECNT
S STARTDATE=$P(DATETIME,"."),NEWDATE=STARTDATE
S CNT=1
S ECNT=2
F S NEWDATE=$O(^SC(CLINIC,"SDCAN",NEWDATE)) Q:$P(NEWDATE,".")'=STARTDATE D
. N STARTTIME,ENDTIME
. S STARTTIME=$$GET1^DIQ(44.05,NEWDATE_","_CLINIC_",",.01,"I")
. S ENDTIME=$$GET1^DIQ(44.05,NEWDATE_","_CLINIC_",",1,"I")
. S ENDTIME=$E(ENDTIME,1,2)_":"_$E(ENDTIME,3,4)
. S RETURN("restoreArray",CNT,"restorePeriod")=$$FMTISO^SDAMUTDT($$GET1^DIQ(44.05,NEWDATE_","_CLINIC_",",.01,"I"),CLINIC)
. S RETURN("restoreArray",CNT,"restoreDescription")="restore: "_$$FMTISO^SDAMUTDT(STARTTIME,CLINIC)_" to "_$$FMTISO^SDAMUTDT($P(STARTTIME,".")_"."_$TR(ENDTIME,":"),CLINIC)_")"
. S CNT=CNT+1
I $G(^SC(CLINIC,"FULL DAY CANCEL",STARTDATE,0))'="" D
. S RETURN("restoreArray",CNT,"restorePeriod")=$$FMTISO^SDAMUTDT($$GET1^DIQ(44.1902,STARTDATE_","_CLINIC_",",.01,"I"),CLINIC)
. S RETURN("restoreArray",CNT,"restoreDescription")="restore: "_$$FMTISO^SDAMUTDT(STARTDATE,CLINIC)_" from Full day cancel"
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDES2GETCLNSLOT 2324 printed Jan 29, 2026@15:53:04 Page 2
SDES2GETCLNSLOT ;ALB/TJB - SDES2 GET CLINIC CANCEL SLOTS for HOSPITAL LOCATION FILE 44 ;April 21, 2025
+1 ;;5.3;Scheduling;**906**;Aug 13, 1993;Build 5
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;
+4 ; Documented API's and Integration Agreements
+5 ; -------------------------------------------
+6 ;Reference to $$GETS^DIQ is supported by IA #2056
+7 ;Reference to $$GETS1^DIQ is supported by IA #2056
+8 ;
+9 QUIT
+10 ; SDINPUT("CLINIC IEN")=IEN from file 44
+11 ; SDINPUT("START DATE")=START DATE
+12 ;
CANAVAIL(JSON,SDCONTEXT,SDINPUT) ;
+1 NEW ERRORS,STARTDT,DIERR
+2 DO VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
+3 IF $DATA(ERRORS)
SET ERRORS("restoreArray",1)=""
DO BUILDJSON^SDES2JSON(.JSON,.ERRORS)
QUIT
+4 DO VALCLINIEN^SDES2VAL44(.ERRORS,$GET(SDINPUT("CLINIC IEN")),1)
+5 SET STARTDT=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$GET(SDINPUT("START DATE")),$GET(SDINPUT("CLINIC IEN")),1)
+6 IF $DATA(ERRORS)
SET ERRORS("restoreArray",1)=""
DO BUILDJSON^SDES2JSON(.JSON,.ERRORS)
QUIT
+7 DO BUILDSLOTS(.JSON,SDINPUT("CLINIC IEN"),STARTDT)
+8 QUIT
BUILDSLOTS(JSON,CLINIC,STARTDT,ENDDT) ;
+1 NEW SDARR
+2 DO RETCANPERIODS(.SDARR,CLINIC,STARTDT)
+3 IF '$DATA(SDARR)
SET SDARR("restoreArray",1)=""
+4 DO BUILDJSON^SDES2JSON(.JSON,.SDARR)
+5 QUIT
RETCANPERIODS(RETURN,CLINIC,DATETIME) ; if sent in time is not cancelled return time periods that are cancelled
+1 NEW NEWDATE,STARTDATE,CNT,ECNT
+2 SET STARTDATE=$PIECE(DATETIME,".")
SET NEWDATE=STARTDATE
+3 SET CNT=1
+4 SET ECNT=2
+5 FOR
SET NEWDATE=$ORDER(^SC(CLINIC,"SDCAN",NEWDATE))
if $PIECE(NEWDATE,".")'=STARTDATE
QUIT
Begin DoDot:1
+6 NEW STARTTIME,ENDTIME
+7 SET STARTTIME=$$GET1^DIQ(44.05,NEWDATE_","_CLINIC_",",.01,"I")
+8 SET ENDTIME=$$GET1^DIQ(44.05,NEWDATE_","_CLINIC_",",1,"I")
+9 SET ENDTIME=$EXTRACT(ENDTIME,1,2)_":"_$EXTRACT(ENDTIME,3,4)
+10 SET RETURN("restoreArray",CNT,"restorePeriod")=$$FMTISO^SDAMUTDT($$GET1^DIQ(44.05,NEWDATE_","_CLINIC_",",.01,"I"),CLINIC)
+11 SET RETURN("restoreArray",CNT,"restoreDescription")="restore: "_$$FMTISO^SDAMUTDT(STARTTIME,CLINIC)_" to "_$$FMTISO^SDAMUTDT($PIECE(STARTTIME,".")_"."_$TRANSLATE(ENDTIME,":"),CLINIC)_")"
+12 SET CNT=CNT+1
End DoDot:1
+13 IF $GET(^SC(CLINIC,"FULL DAY CANCEL",STARTDATE,0))'=""
Begin DoDot:1
+14 SET RETURN("restoreArray",CNT,"restorePeriod")=$$FMTISO^SDAMUTDT($$GET1^DIQ(44.1902,STARTDATE_","_CLINIC_",",.01,"I"),CLINIC)
+15 SET RETURN("restoreArray",CNT,"restoreDescription")="restore: "_$$FMTISO^SDAMUTDT(STARTDATE,CLINIC)_" from Full day cancel"
End DoDot:1
+16 QUIT
+17 ;