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

SDESCLINDAILYSCH.m

Go to the documentation of this file.
SDESCLINDAILYSCH ;ALB/BLB - SDES GET CLINIC DAILY SCHEDULE ;Jan 9, 2023@18:47
 ;;5.3;Scheduling;**836,860,906**;Aug 13, 1993;Build 5
 ;;Per VHA Directive 6402, this routine should not be modified
 ;
 Q
 ;
GETSCHEDULE(JSON,CLINICIEN,DATE) ;
 N ERRORS,SLOTS,DOW,TNODE,SCHEDULEDATE
 ;
 D VALIDATEDATE(.ERRORS,.DATE,$G(CLINICIEN))
 D VALIDATECLINIC(.ERRORS,$G(CLINICIEN))
 I $D(ERRORS) D BUILDJSON(.JSON,.ERRORS) Q
 ;
 S SCHEDULEDATE=DATE
 I '$D(^SC(CLINICIEN,"T",DATE)) D
 .S SCHEDULEDATE=$$GETINDEFSLOTDATE(CLINICIEN,DATE,$$SUB(.TNODE,$$UP^XLFSTR($$DOW^XLFDT(DATE))))
 ;
 D BUILDSLOTS(.SLOTS,CLINICIEN,SCHEDULEDATE,DATE)
 ;
 I '$D(SLOTS) S SLOTS("ClinicSlot",1)=""
 D BUILDJSON(.JSON,.SLOTS)
 Q
 ;
BUILDSLOTS(SLOTS,CLINICIEN,SCHEDULEDATE,SEARCHDATE) ;
 N SUBIEN,COUNT
 ;
 S SUBIEN=0,COUNT=0
 F  S SUBIEN=$O(^SC(CLINICIEN,"T",SCHEDULEDATE,2,SUBIEN)) Q:'SUBIEN  D
 .S COUNT=COUNT+1
 .S SLOTS("ClinicSlot",COUNT,"Date")=$$FMTISO^SDAMUTDT(SEARCHDATE)
 .S SLOTS("ClinicSlot",COUNT,"OpenSlots")=$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",1,"I")
 .S SLOTS("ClinicSlot",COUNT,"StartTime")=$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",.01,"I")
 Q
 ;
GETINDEFSLOTDATE(CLINICIEN,DATE,TNODE) ;
 N TDATE,INDEFDATE
 ;
 S TDATE=9999999,INDEFDATE=0
 F  S TDATE=$O(^SC(CLINICIEN,"T",TDATE),-1) Q:'TDATE!($G(INDEFDATE))  D
 .I $$DOW^XLFDT(TDATE,1)=$E(TNODE,2) D
 ..I $D(^SC(CLINICIEN,"OST",TDATE)) Q
 ..S INDEFDATE=TDATE
 Q INDEFDATE
 ;
VALIDATEDATE(ERRORS,DATE,CLINICIEN) ;
 N SCHEDULE
 ;
 I $G(DATE)="" D ERRLOG^SDESJSON(.ERRORS,45) Q
 S DATE=$$ISOTFM^SDAMUTDT(DATE,CLINICIEN)
 I $G(DATE)=-1 D ERRLOG^SDESJSON(.ERRORS,46) Q
 I $G(DATE)&(DATE<DT) D ERRLOG^SDESJSON(.ERRORS,71)
 Q DATE
 ;
VALIDATECLINIC(ERRORS,CLINICIEN) ;
 I CLINICIEN="" D ERRLOG^SDESJSON(.ERRORS,18) Q
 I CLINICIEN'="",'$D(^SC(CLINICIEN,0)) D ERRLOG^SDESJSON(.ERRORS,19)
 Q
 ;
SUB(SUB,DOW) ;
 S SUB="T"_$S(DOW="SUNDAY":0,DOW="MONDAY":1,DOW="TUESDAY":2,DOW="WEDNESDAY":3,DOW="THURSDAY":4,DOW="FRIDAY":5,DOW="SATURDAY":6,1:"")
 Q SUB
 ;
BUILDJSON(JSONRETURN,RETURN) ;
 N JSONERROR
 D ENCODE^XLFJSON("RETURN","JSONRETURN","JSONERROR")
 Q
 ;