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  Sep 23, 2025@20:30:29                                                                                                                                                                                             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      ;