Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SDES2CRTCLNAVL2B

SDES2CRTCLNAVL2B.m

Go to the documentation of this file.
SDES2CRTCLNAVL2B ;ALB/AGW - SDES2 SET CLINIC AVAILABILITY ; JUN 4, 2026
 ;;5.3;Scheduling;**947**;Aug 13, 1993;Build 3
 ;;Per VHA Directive 6402, this routine should not be modified
 ; Reference to DUZ^XUP is supported by IA #7487
 ;
 ; *** Continuation of routine SDES2CRTCLNAVAL2  ***
 ;
 Q
 ;
 ;
PATTERNLENGTH(ERRORS,AVAILABILITY,CLINICIEN,STARTTIME,INCREMENT) ;
 ;
 N ENDTIME,ENDTIME1,CNT,CNT1,PATTERNLENGTH,I,XX,INCFLAG
 S CNT=0,ENDTIME1=0,STARTTIME=STARTTIME*100,INCFLAG=0
 F  S CNT=$O(AVAILABILITY("TIMESLOT",CNT)) Q:((CNT="")!(CNT]99999)!($D(ERRORS)))  D
 .S CNT1=0,ENDTIME=0
 .F  S CNT1=$O(AVAILABILITY("TIMESLOT",CNT,"END DATE TIME",CNT1)) Q:((CNT1="")!(CNT1]99999)!($D(ERRORS)))  D
 ..S ENDTIME1=(($P($G(AVAILABILITY("TIMESLOT",CNT,"END DATE TIME",CNT1)),".",2)))
 ..Q:(ENDTIME1'?1.4N)
 ..S XX=$L(ENDTIME1),ENDTIME1=$S(XX=1:ENDTIME1_"000",XX=2:ENDTIME1_"00",XX=3:ENDTIME1_"0",1:ENDTIME1)
 ..S ENDTIME1=+ENDTIME1
 ..S:(ENDTIME1>ENDTIME) ENDTIME=ENDTIME1
 ..Q
 .S:INCREMENT'>2 INCREMENT=4,INCFLAG=1
 .S PATTERNLENGTH=(INCREMENT*2)*((ENDTIME\100*60)+(ENDTIME#100)-(STARTTIME\100*60)+(STARTTIME#100))/60+(INCREMENT*2)+($S((INCREMENT>2)&('($G(INCFLAG))):2,1:0))
 .D:(PATTERNLENGTH>80) ERRLOG^SDES2JSON(.ERRORS,657)
 .Q
 Q
 ;
VALIDATEDATETIME(ERRORS,CLINICIEN,AVAILABILITY,NUMBEROFENTRIES) ;
 ;
 N CNT,TIMEZONEOFFSET,TIME,TIMESLOTCNT,INDEFINITE,OPTMSG
 I '$D(AVAILABILITY("TIMESLOT",1,"START DATE TIME",1)) D ERRLOG^SDES2JSON(.ERRORS,25) Q
 I '$D(AVAILABILITY("TIMESLOT",1,"END DATE TIME",1)) D ERRLOG^SDES2JSON(.ERRORS,26) Q
 S TIMESLOTCNT=0
 F  S TIMESLOTCNT=$O(AVAILABILITY("TIMESLOT",TIMESLOTCNT)) Q:'TIMESLOTCNT!($D(ERRORS))  D
 .S CNT=0
 .F  S CNT=$O(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)) Q:'CNT!($D(ERRORS))  D
 ..I $G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"NUMBER OF SLOTS",CNT))="@" D  Q
 ...I ($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT))["T")!($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT))[".") D
 ....S OPTMSG="when removing availability."
 ....D ERRLOG^SDES2JSON(.ERRORS,431,"when removing availability.")
 ..I $L($P($P($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)),"T",2),"-",2))!($L($P($P($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"END DATE TIME",CNT)),"T",2),"-",2))) D ERRLOG^SDES2JSON(.ERRORS,590) Q
 ..S TIMEZONEOFFSET=$$GETTZOFFSET^SDESUTIL($$ISOTFM^SDAMUTDT($P($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)),"T")),CLINICIEN)
 ..S AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)=$G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT))_TIMEZONEOFFSET
 ..S AVAILABILITY("TIMESLOT",TIMESLOTCNT,"END DATE TIME",CNT)=$G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"END DATE TIME",CNT))_TIMEZONEOFFSET
 ..D VALISODATERANGE^SDES2VALISODTTM(.ERRORS,$G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)),$G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"END DATE TIME",CNT)),1,CLINICIEN)
 ..S AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)=$$ISOTFM^SDAMUTDT($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)),CLINICIEN)
 ..S AVAILABILITY("TIMESLOT",TIMESLOTCNT,"END DATE TIME",CNT)=$$ISOTFM^SDAMUTDT($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"END DATE TIME",CNT)),CLINICIEN)
 ..I AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)=-1 Q
 ..I AVAILABILITY("TIMESLOT",TIMESLOTCNT,"END DATE TIME",CNT)=-1 Q
 ..I $P(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT),".",2)=$P(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"END DATE TIME",CNT),".",2) D ERRLOG^SDES2JSON(.ERRORS,52,"End time cannot be equal to start time") Q
 ..S INDEFINITE=$G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"INDEFINITE",CNT))
 ..I '$G(INDEFINITE),$$FMDIFF^XLFDT(DT,$G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)))>14 D ERRLOG^SDES2JSON(.ERRORS,655) Q
 ..I $G(INDEFINITE),$G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT))<DT D ERRLOG^SDES2JSON(.ERRORS,71) Q
 ..I $$GET1^DIQ(44,CLINICIEN,1914,"I")*100>+$E($P($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)),".",2)_"0000",1,4) D ERRLOG^SDES2JSON(.ERRORS,581) Q
 ..I '$$CHECKDURATION^SDES2UTIL1($E($P($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)),".",2)_"000",1,4),$E($P($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"END DATE TIME",CNT)),".",2)_"000",1,4),$$GET1^DIQ(44,CLINICIEN,1912,"I")) D  Q
 ... D ERRLOG^SDES2JSON(.ERRORS,582)
 ..I $$INACTIVE^SDESUTIL(CLINICIEN,$P($G(AVAILABILITY("TIMESLOT",TIMESLOTCNT,"START DATE TIME",CNT)),".")) D ERRLOG^SDES2JSON(.ERRORS,583) Q
 Q