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

SDESAPPT3.m

Go to the documentation of this file.
  1. SDESAPPT3 ;ALB/RRM- GET APPT REQUESTS ;July 5, 2022
  1. ;;5.3;Scheduling;**823,824**;Aug 13, 1993;Build 3
  1. ;
  1. ; Reference to PATIENT in ICR #10035
  1. ; Copy of SDESAPPT
  1. Q
  1. ;
  1. APPGETJSON(SDECY,DFN,BDATE,EDATE,SDEAS) ; Return a list of appointments and associated data by PATIENT
  1. ;INPUT - DFN (Date File Number) Pointer to PATIENT (#2) File.
  1. ; - BDATE = start date for appointment search and gather (time included)
  1. ; - EDATE = end date for the appointment search and gather (time included)
  1. ; SDEAS - [OPT] Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment.
  1. ;RETURN PARMETERS:
  1. ;
  1. N IEN,NUM,ERR,IENS,SDAPPT,POP,APPTDATA
  1. S POP=0
  1. S DFN=$G(DFN)
  1. S ERR=0,IEN=0,NUM=0,BDATE=$G(BDATE),EDATE=$G(EDATE)
  1. S POP=$$VALIDATEDT(.BDATE,.EDATE)
  1. I DFN="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,1)
  1. I DFN'="",'$D(^DPT(DFN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPPT,2)
  1. S SDEAS=$$VALIDATEEAS(.SDAPPT,$G(SDEAS,""))
  1. I SDEAS=-1 S POP=1
  1. ;
  1. I 'POP D
  1. .F S IEN=$O(^SDEC(409.84,"CPAT",DFN,IEN)) Q:'IEN D
  1. ..I '$$APPTINDTRANGE(IEN,BDATE,EDATE) Q
  1. ..S NUM=NUM+1
  1. ..D SUMMARY^SDESAPPTDATA(.APPTDATA,IEN)
  1. ..S APPTDATA("AppointmentType")=$$GET1^DIQ(409.84,IEN_",",.06) ;vse-2263 SD*5.3*807 external representation of appointment type
  1. ..M SDAPPT("Appt",NUM)=APPTDATA
  1. .I '$D(SDAPPT("Appt")) S SDAPPT("Appt")=""
  1. D BUILDER
  1. Q
  1. ;
  1. APPGETONEJSON(SDECY,IEN,SDEAS) ; Return a single appointment and associated data by IEN
  1. ;INPUT - IEN (Internal Entry Number) Pointer to SDEC APPOINTMENT (#409.84) File.
  1. ; SDEAS - [OPT] Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment.
  1. ;RETURN PARMETERS: SDECY - array with JSON formatted data for the Appointment.
  1. ;
  1. N NUM,ERR,IENS,SDAPPT,POP,APPTDATA
  1. S ERR=0,NUM=0,POP=0,IEN=$G(IEN)
  1. I IEN="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,14)
  1. I IEN'="",'$D(^SDEC(409.84,IEN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPPT,15)
  1. S SDEAS=$$VALIDATEEAS(.SDAPPT,$G(SDEAS,""))
  1. I SDEAS=-1 S POP=1
  1. ;
  1. I 'POP D
  1. .S NUM=NUM+1
  1. .D SUMMARY^SDESAPPTDATA(.APPTDATA,IEN)
  1. .M SDAPPT("Appt",NUM)=APPTDATA
  1. .I '$D(SDAPPT("Appt")) S SDAPPT("Appt")=""
  1. D BUILDER
  1. Q
  1. APPTBYRESOURCE(SDECY,SDRESIEN,SDBEG,SDEND,SDEAS) ;
  1. N POP,APPTIEN,APPTDT,SDAPPT,APPTDATA,COUNTER,JSONERR,DFN,PATIENT
  1. S (POP,APPTIEN,COUNTER,JSONERR)=""
  1. K SDECY
  1. ;Validate input parameters
  1. S SDBEG=$G(SDBEG)
  1. S SDEND=$G(SDEND)
  1. S POP=$$VALIDATEDT(.SDBEG,.SDEND)
  1. I $G(SDRESIEN)="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,18)
  1. I $G(SDRESIEN)'="",'$D(^SDEC(409.831,SDRESIEN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPPT,19)
  1. S SDEAS=$$VALIDATEEAS(.SDAPPT,$G(SDEAS,""))
  1. I SDEAS=-1 S POP=1
  1. ;
  1. I 'POP D
  1. .S APPTDT=SDBEG-.0001
  1. .S SDEND=SDEND+.0001
  1. .F S APPTDT=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT)) Q:APPTDT="" D Q:POP
  1. ..I SDEND,APPTDT>SDEND S POP=1 Q ;End loop since past the end date
  1. ..S APPTIEN=""
  1. ..F S APPTIEN=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT,APPTIEN)) Q:APPTIEN="" D
  1. ...D SUMMARY^SDESAPPTDATA(.APPTDATA,APPTIEN)
  1. ...S COUNTER=$G(COUNTER)+1
  1. ...M SDAPPT("Appt",COUNTER)=APPTDATA
  1. ...S DFN=$G(SDAPPT("Appt",COUNTER,"DFN"))
  1. ...S PATIENT=""
  1. ...D PATIENTIDADDDON^SDESPATIENTDATA(.PATIENT,DFN)
  1. ...M SDAPPT("Appt",COUNTER,"Patient")=PATIENT
  1. .I '$D(SDAPPT("Appt")) S SDAPPT("Appt")=""
  1. D BUILDER
  1. Q
  1. APPTBYCLINICLIST(APPTLISTJSON,CLINICIENS) ;
  1. N APPTLIST,IENCOUNT,YESTERDAYEXTERNL,TODAYEXTERNAL,CLINICIEN
  1. S IENCOUNT=0
  1. I '$G(CLINICIENS(1)) D ERRLOG^SDESJSON(.APPTLIST,18)
  1. S YESTERDAYEXTERNL=$$FMADD^XLFDT(DT,"","","",-1)
  1. S YESTERDAYEXTERNL=$$FMTONET^SDECDATE(YESTERDAYEXTERNL)
  1. S TODAYEXTERNAL=$$FMADD^XLFDT(DT,"",23,59,59)
  1. S TODAYEXTERNAL=$$FMTONET^SDECDATE(TODAYEXTERNAL)
  1. F S IENCOUNT=$O(CLINICIENS(IENCOUNT)) Q:'IENCOUNT D
  1. .N TEMPLIST
  1. .D APPTBYCLINIC(.TEMPLIST,CLINICIENS(IENCOUNT),YESTERDAYEXTERNL,TODAYEXTERNAL,"")
  1. .S CLINICIEN=CLINICIENS(IENCOUNT)
  1. .M APPTLIST("CLINIC IEN: "_CLINICIEN)=TEMPLIST
  1. D BUILDJSON(.APPTLISTJSON,.APPTLIST)
  1. Q
  1. GETAPPTSBYCLINIC(APPTLISTJSON,SDCLINICIEN,SDBEG,SDEND,SDEAS) ;
  1. N APPTLIST
  1. D APPTBYCLINIC(.APPTLIST,SDCLINICIEN,SDBEG,SDEND,$G(SDEAS))
  1. D BUILDJSON(.APPTLISTJSON,.APPTLIST)
  1. Q
  1. APPTBYCLINIC(SDAPPT,SDCLINICIEN,SDBEG,SDEND,SDEAS) ;
  1. N POP,APPTIEN,APPTDT,APPTDATA,COUNTER,JSONERR,DFN,PATIENT,RESTYPE,SDRESIEN
  1. S (POP,APPTIEN,COUNTER,JSONERR)=""
  1. K SDECY
  1. ;Validate input parameters
  1. S SDBEG=$G(SDBEG)
  1. S SDEND=$G(SDEND)
  1. S POP=$$VALIDATEDT(.SDBEG,.SDEND)
  1. I $G(SDCLINICIEN)="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,18)
  1. I $G(SDCLINICIEN)'="",'$D(^SC(SDCLINICIEN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPPT,19)
  1. S SDEAS=$$VALIDATEEAS(.SDAPPT,$G(SDEAS,""))
  1. I SDEAS=-1 S POP=1
  1. I POP S SDAPPT("Appt",1)=""
  1. ;
  1. I 'POP D
  1. .S SDRESIEN=""
  1. .F S SDRESIEN=$O(^SDEC(409.831,"ALOC",SDCLINICIEN,SDRESIEN)) Q:SDRESIEN="" D
  1. ..S RESTYPE=$P($G(^SDEC(409.831,SDRESIEN,0)),"^",11)
  1. ..I $P(RESTYPE,";",2)'="SC(" Q ;Must be a Hospital Loc
  1. ..S APPTDT=SDBEG-.0001
  1. ..S SDEND=SDEND+.0001
  1. ..F S APPTDT=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT)) Q:APPTDT="" D Q:POP
  1. ...I SDEND,APPTDT>SDEND S POP=1 Q ;End loop since past the end date
  1. ...S APPTIEN=""
  1. ...F S APPTIEN=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT,APPTIEN)) Q:APPTIEN="" D
  1. ....D SUMMARY^SDESAPPTDATA(.APPTDATA,APPTIEN)
  1. ....S COUNTER=$G(COUNTER)+1
  1. ....M SDAPPT("Appt",COUNTER)=APPTDATA
  1. ....S DFN=$G(SDAPPT("Appt",COUNTER,"DFN"))
  1. ....S PATIENT=""
  1. ....D PATIENTIDADDDON^SDESPATIENTDATA(.PATIENT,DFN)
  1. ....M SDAPPT("Appt",COUNTER,"Patient")=PATIENT
  1. .I '$D(SDAPPT("Appt")) S SDAPPT("Appt")=""
  1. Q
  1. ; Get appointment by request ien and appointment type
  1. ; REQIEN - Appointment request IEN from one of the following (#123, #403.5, or #409.85)
  1. ; REQTYPE - Appointment request type: C (CONSULT), R (RECALL), A (APPT)
  1. APPTBYRIENAPTYP(SDECY,REQIEN,REQTYPE,SDEAS) ;
  1. N SDAPPT,SDERR,TRGTFILE,CHKTYPE,NOAPPTS
  1. S REQIEN=$G(REQIEN)
  1. S REQTYPE=$G(REQTYPE)
  1. S SDEAS=$G(SDEAS)
  1. S CHKTYPE=$E(REQTYPE)
  1. D VALAPPTTYPE(.SDERR,CHKTYPE)
  1. D VALREQIEN(.SDERR,REQIEN,CHKTYPE)
  1. S SDEAS=$$VALIDATEEAS(.SDERR,$G(SDEAS,""))
  1. I SDEAS=-1 S POP=1
  1. I $D(SDERR) S SDERR("Appointment",1)="" D BUILDJSON(.SDECY,.SDERR) Q
  1. D BLDAPTBYRIEN(.SDECY,REQIEN,CHKTYPE,SDEAS)
  1. I '$D(SDECY) D
  1. .S NOAPPTS("Appointment",1)="" D BUILDJSON(.SDECY,.NOAPPTS)
  1. Q
  1. BLDAPTBYRIEN(SDECY,REQIEN,CHKTYPE,SDEAS) ;
  1. N TRGTFILE,FILEROOT,FULLREF,APPTIEN,APPTCNT,SDREQPATIEN
  1. S TRGTFILE=$S(CHKTYPE="C":123,CHKTYPE="A":409.85,1:"")
  1. I TRGTFILE=409.85 S SDREQPATIEN=$$GET1^DIQ(409.85,REQIEN,.01,"I")
  1. I TRGTFILE=123 S SDREQPATIEN=$$GET1^DIQ(123,REQIEN,.02,"I")
  1. S FILEROOT=$$ROOT^DILFD(TRGTFILE)
  1. S FULLREF=REQIEN_";"_$P(FILEROOT,U,2)
  1. S (APPTIEN,APPTCNT)=0 F S APPTIEN=$O(^SDEC(409.84,"CPAT",SDREQPATIEN,APPTIEN)) Q:'APPTIEN D
  1. .I $$GET1^DIQ(409.84,APPTIEN,.22,"I")'=FULLREF Q
  1. .D GETAPPTBYIEN^SDESGETAPPTWRAP4(.SDECY,APPTIEN,SDEAS)
  1. Q
  1. VALREQIEN(ERRORS,IEN,TYPE) ; validate request IEN
  1. ; PLACE HOLDER
  1. N EFLAG
  1. I IEN="" S EFLAG=1 D ERRLOG^SDESJSON(.ERRORS,3)
  1. I IEN'="",TYPE="A",'$D(^SDEC(409.85,IEN)) S EFLAG=1 D ERRLOG^SDESJSON(.ERRORS,4)
  1. I IEN'="",TYPE="C",'$D(^GMR(123,IEN)) S EFLAG=1 D ERRLOG^SDESJSON(.ERRORS,4)
  1. Q $D(EFLAG)
  1. ;
  1. VALAPPTTYPE(ERRORS,APTYPE) ; validate appointment type
  1. ; PLACE HOLDER
  1. N EFLAG
  1. I APTYPE="" S EFLAG=1 D ERRLOG^SDESJSON(.ERRORS,181)
  1. I APTYPE'="","CA"'[APTYPE S EFLAG=1 D ERRLOG^SDESJSON(.ERRORS,180)
  1. Q $D(EFLAG)
  1. ;
  1. VALIDATEEAS(ERRORS,SDEAS) ;
  1. I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL($G(SDEAS))
  1. I $P($G(SDEAS),U)=-1 D ERRLOG^SDESJSON(.ERRORS,142) Q -1
  1. Q 0
  1. ;
  1. BUILDER ;Convert data to JSON
  1. N JSONERR
  1. S JSONERR=""
  1. I POP S SDAPPT("Appt",1)=""
  1. D ENCODE^SDESJSON(.SDAPPT,.SDECY,.JSONERR)
  1. Q
  1. ;
  1. BUILDJSON(APPTLISTJSON,APPTLISTARRAY) ;Convert data to JSON
  1. N JSONERR
  1. S JSONERR=""
  1. D ENCODE^SDESJSON(.APPTLISTARRAY,.APPTLISTJSON,.JSONERR)
  1. Q
  1. VALIDATEDT(FROM,THRU) ;
  1. N POP
  1. S POP=0 ;Assume all is good
  1. I FROM="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,25)
  1. I THRU="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,26)
  1. I FROM'="" D
  1. .S FROM=$$NETTOFM^SDECDATE(FROM,"Y")
  1. .I FROM=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,27)
  1. I THRU'="" D
  1. .S THRU=$$NETTOFM^SDECDATE(THRU,"Y")
  1. .I THRU=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,28)
  1. I 'POP,THRU,FROM D
  1. .I FROM>THRU S POP=1 D ERRLOG^SDESJSON(.SDAPPT,29)
  1. Q POP
  1. ;
  1. APPTINDTRANGE(IEN,BEG,END) ;
  1. ;Function to check if the Appt Sart Date / Time is within the desired date range
  1. ;
  1. ; Input
  1. ; IEN - Internal # from Appointment File (409.84)
  1. ; BEG - (Optional) Date in FM format
  1. ; END - (Optional) Date in FM format
  1. ; Return
  1. ; 1 = Appointment Start Time is within BEG and END
  1. ; 0 = Not within the date range
  1. N INRANGE,APPTDT,FN,IENS,APPTARY,SDMSG,IENS
  1. S INRANGE=1 ;Assume success
  1. S FN=409.84,IENS=IEN_","
  1. D GETS^DIQ(FN,IEN,".01","I","APPTARY","SDMSG")
  1. S APPTDT=$G(APPTARY(FN,IENS,.01,"I"))
  1. I APPTDT=""!($G(SDMSG)) S INRANGE=0
  1. I $G(BEG),$G(APPTDT) S:APPTDT<BEG INRANGE=0
  1. I $G(END),$G(APPTDT) S:APPTDT>END INRANGE=0
  1. Q INRANGE