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.
  1. SDESCLINDAILYSCH ;ALB/BLB - SDES GET CLINIC DAILY SCHEDULE ;Jan 9, 2023@18:47
  1. ;;5.3;Scheduling;**836,860**;Aug 13, 1993;Build 12
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. Q
  1. ;
  1. GETSCHEDULE(JSONRETURN,CLINICIEN,DATE) ;
  1. N ERRORS,RETURN,SCHEDULE,DOW,SUB
  1. ;
  1. ; validate
  1. D VALIDATEDATE(.ERRORS,.DATE,$G(CLINICIEN))
  1. D VALIDATECLINIC(.ERRORS,$G(CLINICIEN))
  1. I $D(ERRORS) M RETURN=ERRORS D BUILDJSON(.JSONRETURN,.RETURN) Q
  1. ;
  1. S DOW=$$UP^XLFSTR($$DOW^XLFDT(DATE))
  1. S SUB=$$SUB(.SUB,DOW)
  1. S DAYSCHEDULE=$$GETDAYSCHEDULE(CLINICIEN,SUB,DATE)
  1. I $D(ERRORS) M RETURN=ERRORS D BUILDJSON(.JSONRETURN,.RETURN) Q
  1. ;
  1. ; build slots
  1. D BUILD(.SCHEDULE,DAYSCHEDULE,CLINICIEN,SUB,DATE)
  1. I '$D(SCHEDULE) S SCHEDULE("ClinicSlot",1)=""
  1. M RETURN=SCHEDULE
  1. D BUILDJSON(.JSONRETURN,.RETURN)
  1. Q
  1. ;
  1. BUILD(SCHEDULE,DAYSCHEDULE,CLINICIEN,SUB,DATE) ;
  1. N SLOTIEN,CLINICSTART,APPTLENGTH,INCREMENT,SLOTS,STARTTIME,COUNT,NEWSLOTS,TIME,STRING
  1. ;
  1. S STRING="123456789jklmnopqrstuvwxyz"
  1. S CLINICSTART=$$GET1^DIQ(44,CLINICIEN,1914,"I")
  1. S APPTLENGTH=$$GET1^DIQ(44,CLINICIEN,1912,"I")
  1. S INCREMENT=$$GET1^DIQ(44,CLINICIEN,1917,"I")
  1. ;
  1. I '$D(^SC(CLINICIEN,"ST",DATE,1)) D
  1. .D ASSEMBLE(.ERRORS,CLINICIEN,DATE,INCREMENT,CLINICSTART)
  1. ;
  1. D ARRAY^SDECUTL2(.SLOTS,DAYSCHEDULE,DATE,APPTLENGTH,CLINICSTART,INCREMENT)
  1. D NEWSLOTS(.NEWSLOTS,DATE,.SLOTS)
  1. ;
  1. S STARTTIME="",COUNT=0
  1. F S STARTTIME=$O(NEWSLOTS(DATE,STARTTIME)) Q:STARTTIME="" D
  1. .S COUNT=COUNT+1
  1. .S TIME=STARTTIME
  1. .;
  1. .I $$GET1^DIQ(44,CLINICIEN,1912,"I")#60'=0 D
  1. ..I $L($G(TIME))=3 S TIME="0"_TIME
  1. ..I $L($G(TIME))=2 S TIME="00"_TIME
  1. ..I $L($G(TIME))=1 S TIME="000"_TIME
  1. .;
  1. .I $$GET1^DIQ(44,CLINICIEN,1912,"I")#60=0 D
  1. ..I $L(TIME)=1 D
  1. ...S TIME="0"_TIME_"00"
  1. ..;
  1. ..I $L(TIME)=2 D
  1. ...S TIME=TIME_"00"
  1. .;
  1. .S SCHEDULE("ClinicSlot",COUNT,"Date")=$$FMTISO^SDAMUTDT(DATE)
  1. .S SCHEDULE("ClinicSlot",COUNT,"StartTime")=TIME
  1. .I $G(NEWSLOTS(DATE,STARTTIME))'?.A,+$G(NEWSLOTS(DATE,STARTTIME))=0 S SCHEDULE("ClinicSlot",COUNT,"OpenSlots")=0 Q
  1. .S SCHEDULE("ClinicSlot",COUNT,"OpenSlots")=$S($G(NEWSLOTS(DATE,STARTTIME))'?.N:$F(STRING,$G(NEWSLOTS(DATE,STARTTIME)))-1,1:+$G(NEWSLOTS(DATE,STARTTIME)))
  1. Q
  1. ;
  1. NEWSLOTS(NEWSLOT,CDATE,SLOTS) ;
  1. N SLOT,VALUE,NEWTIMESLOT
  1. S SLOT="" F S SLOT=$O(SLOTS(CDATE,SLOT)) Q:SLOT="" D
  1. .S NEWTIMESLOT=+SLOT Q:SLOT=""
  1. .S VALUE=$G(SLOTS(CDATE,SLOT))
  1. .S NEWSLOT(CDATE,NEWTIMESLOT)=VALUE
  1. Q
  1. ;
  1. ASSEMBLE(ERRORS,CLINICIEN,DATE,INCREMENT,CLINSTART) ;
  1. N DOW,MASTERPATTERN,MPATTERNSLOTS,X,Y,FILENOFDA,FDAIEN,FERR,FILENO
  1. S X=DATE
  1. D DOW^SDM0 S DOW=Y
  1. S MASTERPATTERN=+$O(^SC(CLINICIEN,"T"_DOW,DATE))
  1. S FILENO=$SELECT(DOW=0:44.06,DOW=1:44.07,DOW=2:44.08,DOW=3:44.09,DOW=4:44.008,DOW=5:44.009,DOW=6:44.0001,1:"")
  1. S MPATTERNSLOTS=$$GET1^DIQ(FILENO,MASTERPATTERN_","_CLINICIEN_",",1)
  1. S FDA(44.005,"+1,"_CLINICIEN_",",.01)=DATE
  1. S FDA(44.005,"+1,"_CLINICIEN_",",1)=$P("SU^MO^TU^WE^TH^FR^SA",U,DOW+1)_" "_$E(DATE,6,7)_$J("",INCREMENT+INCREMENT-6)_MPATTERNSLOTS
  1. S FDAIEN(1)=DATE
  1. D UPDATE^DIE(,"FDA","FDAIEN","FERR") K FDA,FDAIEN
  1. Q
  1. ;
  1. GETDAYSCHEDULE(CLINICIEN,SUB,DATE) ;
  1. S DAYSCHEDULE=$G(^SC(CLINICIEN,SUB,9999999,1))
  1. I DAYSCHEDULE["CANCELLED" D ERRLOG^SDESJSON(.ERRORS,248) Q ""
  1. ;
  1. I $D(^SC(CLINICIEN,"OST",DATE,1)) D
  1. .S DAYSCHEDULE=$E($G(^SC(CLINICIEN,"OST",DATE,1)),8,$L($G(^SC(CLINICIEN,"OST",DATE,1))))
  1. ;
  1. I DAYSCHEDULE'["[" D ERRLOG^SDESJSON(.ERRORS,249) Q "" ; doesnt meet today
  1. Q DAYSCHEDULE
  1. ;
  1. VALIDATEDATE(ERRORS,DATE,CLINICIEN) ;
  1. I $G(DATE)="" D ERRLOG^SDESJSON(.ERRORS,45) Q
  1. S DATE=$$ISOTFM^SDAMUTDT(DATE,CLINICIEN)
  1. I $G(DATE)=-1 D ERRLOG^SDESJSON(.ERRORS,46) Q
  1. I $G(DATE)&(DATE<DT) D ERRLOG^SDESJSON(.ERRORS,71)
  1. Q DATE
  1. ;
  1. VALIDATECLINIC(ERRORS,CLINICIEN) ;
  1. I CLINICIEN="" D ERRLOG^SDESJSON(.ERRORS,18) Q
  1. I CLINICIEN'="",'$D(^SC(CLINICIEN,0)) D ERRLOG^SDESJSON(.ERRORS,19)
  1. Q
  1. ;
  1. SUB(SUB,DOW) ;
  1. 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:"")
  1. Q SUB
  1. ;
  1. BUILDJSON(JSONRETURN,RETURN) ;
  1. N JSONERROR
  1. D ENCODE^XLFJSON("RETURN","JSONRETURN","JSONERROR")
  1. Q
  1. ;