- SDESGETPATAPPT ;ALB/BLB,ANU - VISTA SCHEDULING RPCS ;JUNE 27, 2023@14:48
- ;;5.3;Scheduling;**809,847**;Aug 13, 1993;Build 4
- ;;Per VHA Directive 6402, this routine should not be modified
- ;
- Q
- ;
- GETSINGLEAPPT(SDECY,DFN,DATETIME,CLINIC) ; get single appt from patient 2 multiple based on dfn and date/time
- N DFNERRORS,HASDFNERRORS,RETURN,HASDTTMERRORS,DTTMERRORS,SINGLEAPPT,APPT,SDPATAPPT,NUM,ERRORS,HASCLINICERRORS
- ;;
- S HASDFNERRORS=$$VALIDATEPTDFN(.ERRORS,$G(DFN))
- I HASDFNERRORS M RETURN=ERRORS
- ;;
- S HASDTTMERRORS=$$VALIDATEDTTM(.ERRORS,$G(DATETIME))
- I HASDTTMERRORS M RETURN=ERRORS
- ;;
- S HASCLINICERRORS=$$VALIDATECLINIC(.ERRORS,$G(CLINIC))
- I HASCLINICERRORS M RETURN=ERRORS
- ;
- I '$D(ERRORS) D
- .S NUM=1
- .S SINGLEAPPT=$$GETAPPT(.SDPATAPPT,$G(DFN),$$ISOTFM^SDAMUTDT(DATETIME,CLINIC))
- .I SINGLEAPPT M RETURN=SDPATAPPT
- ;;
- D BUILDJSON(.SDECY,.RETURN) ;
- D CLEANUP
- Q
- ;
- GETALLAPPTS(SDECY,DFN) ;
- N HASDFNERRORS,RETURN,APPT,NUM,ERRORS,SUBIEN,SDPATAPPT
- ;
- S HASDFNERRORS=$$VALIDATEPTDFN(.ERRORS,$G(DFN))
- I HASDFNERRORS M RETURN=ERRORS
- ;
- I '$D(ERRORS) D
- .S SUBIEN=0,NUM=0
- .F S SUBIEN=$O(^DPT(DFN,"S",SUBIEN)) Q:'SUBIEN D
- ..S NUM=NUM+1
- ..S APPT=$$GETAPPT(.SDPATAPPT,$G(DFN),SUBIEN)
- ..I $G(APPT) M RETURN=SDPATAPPT
- D BUILDJSON(.SDECY,.RETURN)
- D CLEANUP
- Q
- VALIDATECLINIC(ERRORS,CLINIC) ;
- N ERRORFLAG
- I CLINIC="" S ERRORFLAG=1 D ERRLOG^SDESJSON(.ERRORS,18)
- I CLINIC'="",'$D(^SC(CLINIC,0)) S ERRORFLAG=1 D ERRLOG^SDESJSON(.ERRORS,19)
- Q $D(ERRORFLAG)
- ;
- VALIDATEPTDFN(ERRORS,DFN) ; VALIDATE PATIENT DFN
- N ERRORFLAG
- I DFN="" S ERRORFLAG=1 D ERRLOG^SDESJSON(.ERRORS,1)
- I DFN'="",'$D(^DPT(DFN,0)) S ERRORFLAG=1 D ERRLOG^SDESJSON(.ERRORS,2)
- Q $D(ERRORFLAG)
- ;
- VALIDATEDTTM(ERRORS,DATETIME) ;
- N ERRORFLAG,VALIDATED
- I DATETIME="" S ERRORFLAG=1 D ERRLOG^SDESJSON(.ERRORS,25)
- I DATETIME'="" D
- .S VALIDATED=$$ISOTFM^SDAMUTDT(DATETIME,CLINIC)
- .I VALIDATED=-1!(VALIDATED="") S ERRORFLAG=1 D ERRLOG^SDESJSON(.ERRORS,27)
- Q $D(ERRORFLAG)
- ;
- GETAPPT(SDPATAPPT,DFN,DATETIME) ; get patient appointment from file
- N IENS,F,APPTARY,FMDATE,CLINICIEN,OUTPDATE
- S F=2.98
- S IENS=DATETIME_","_DFN_"," ;
- D GETS^DIQ(F,IENS,"**","IE","APPTARY","ERR")
- S CLINICIEN=$G(APPTARY(F,IENS,.01,"I"))
- S SDPATAPPT("PatientAppt",NUM,"AppointmentDateTime")=$$FMTISO^SDAMUTDT($G(APPTARY(F,IENS,.001,"I")),CLINICIEN)
- S SDPATAPPT("PatientAppt",NUM,"Clinic")=$G(APPTARY(F,IENS,.01,"E"))
- S SDPATAPPT("PatientAppt",NUM,"TelephoneOfClinic")=$G(APPTARY(F,IENS,.02,"E"))
- S SDPATAPPT("PatientAppt",NUM,"Status")=$G(APPTARY(F,IENS,3,"E"))
- S SDPATAPPT("PatientAppt",NUM,"RealAppointment")=$G(APPTARY(F,IENS,4,"E"))
- S SDPATAPPT("PatientAppt",NUM,"LabDateTime")=$$FMTISO^SDAMUTDT($G(APPTARY(F,IENS,5,"I")),CLINICIEN)
- S SDPATAPPT("PatientAppt",NUM,"XrayDateTime")=$$FMTISO^SDAMUTDT($G(APPTARY(F,IENS,6,"I")),CLINICIEN)
- S SDPATAPPT("PatientAppt",NUM,"EkgDateTime")=$$FMTISO^SDAMUTDT($G(APPTARY(F,IENS,7,"I")),CLINICIEN)
- S SDPATAPPT("PatientAppt",NUM,"RoutingSlipPrinted")=$G(APPTARY(F,IENS,8,"E"))
- S SDPATAPPT("PatientAppt",NUM,"RoutingSlipPrintDate")=$$FMTISO^SDAMUTDT($G(APPTARY(F,IENS,8.5,"I")))
- S SDPATAPPT("PatientAppt",NUM,"PurposeOfVisit")=$G(APPTARY(F,IENS,9,"E"))
- S SDPATAPPT("PatientAppt",NUM,"AppointmentType")=$G(APPTARY(F,IENS,9.5,"E"))
- S SDPATAPPT("PatientAppt",NUM,"SpecialSurveyDisposition")=$G(APPTARY(F,IENS,10,"E"))
- S SDPATAPPT("PatientAppt",NUM,"NumberOfCollateralSeen")=$G(APPTARY(F,IENS,11,"E"))
- S SDPATAPPT("PatientAppt",NUM,"AutoRebookedApptDateTime")=$$FMTISO^SDAMUTDT($G(APPTARY(F,IENS,12,"I")))
- S SDPATAPPT("PatientAppt",NUM,"CollateralVisit")=$G(APPTARY(F,IENS,13,"E"))
- S SDPATAPPT("PatientAppt",NUM,"NoShowCancelledBy")=$G(APPTARY(F,IENS,14,"E"))
- S SDPATAPPT("PatientAppt",NUM,"NoShowCancelDateTime")=$$FMTISO^SDAMUTDT($G(APPTARY(F,IENS,15,"I")))
- S SDPATAPPT("PatientAppt",NUM,"CancellationReason")=$G(APPTARY(F,IENS,16,"E"))
- S SDPATAPPT("PatientAppt",NUM,"CancellationRemarks")=$G(APPTARY(F,IENS,17,"E"))
- S SDPATAPPT("PatientAppt",NUM,"ApptCancelled")=$G(APPTARY(F,IENS,18,"E"))
- S SDPATAPPT("PatientAppt",NUM,"DataEntryClerk")=$G(APPTARY(F,IENS,19,"E"))
- S SDPATAPPT("PatientAppt",NUM,"DateApptMade")=$$FMTISO^SDAMUTDT($G(APPTARY(F,IENS,20,"I")))
- S OUTPDATE=$$GET1^DIQ(409.68,$G(APPTARY(F,IENS,21,"I")),.01,"I")
- S SDPATAPPT("PatientAppt",NUM,"OutpatientEncounter")=$$FMTISO^SDAMUTDT($G(OUTPDATE))
- S SDPATAPPT("PatientAppt",NUM,"EncounterFormsPrinted")=$G(APPTARY(F,IENS,22,"E"))
- S SDPATAPPT("PatientAppt",NUM,"EncounterFormsAsAddOns")=$G(APPTARY(F,IENS,23,"E"))
- S SDPATAPPT("PatientAppt",NUM,"EncounterConversionStatus")=$G(APPTARY(F,IENS,23.1,"E"))
- S SDPATAPPT("PatientAppt",NUM,"AppointmentTypeSubCategory")=$G(APPTARY(F,IENS,24,"E"))
- S SDPATAPPT("PatientAppt",NUM,"SchedulingRequestType")=$G(APPTARY(F,IENS,25,"E"))
- S SDPATAPPT("PatientAppt",NUM,"NextAvaApptIndicator")=$G(APPTARY(F,IENS,26,"E"))
- S SDPATAPPT("PatientAppt",NUM,"DesiredDateOfAppointment")=$$FMTISO^SDAMUTDT($G(APPTARY(F,IENS,27,"I")))
- S SDPATAPPT("PatientAppt",NUM,"FollowUpVisit")=$G(APPTARY(F,IENS,28,"E"))
- S SDPATAPPT("PatientAppt",NUM,"SchedulingApplication")=$G(APPTARY(F,IENS,29,"I"))
- S SDPATAPPT("PatientAppt",NUM,"SchedulerName")=$G(APPTARY(F,IENS,30,"E"))
- ;S SDPATAPPT("PatientAppt",NUM,"CurrentStatus")=$G(APPTARY(F,IENS,100,"E"))
- I $D(SDPATAPPT) Q 1
- Q 0
- ;
- BUILDJSON(SDECY,RETURN) ; build json
- N ERR
- S ERR=""
- D ENCODE^XLFJSON("RETURN","SDECY","ERR")
- Q
- ;
- CLEANUP ; kill vars
- K RETURN,ERRORS,DTTMERRORS,APPTARY,SDPATAPPT,APPTARY
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDESGETPATAPPT 5580 printed Feb 19, 2025@00:23:29 Page 2
- SDESGETPATAPPT ;ALB/BLB,ANU - VISTA SCHEDULING RPCS ;JUNE 27, 2023@14:48
- +1 ;;5.3;Scheduling;**809,847**;Aug 13, 1993;Build 4
- +2 ;;Per VHA Directive 6402, this routine should not be modified
- +3 ;
- +4 QUIT
- +5 ;
- GETSINGLEAPPT(SDECY,DFN,DATETIME,CLINIC) ; get single appt from patient 2 multiple based on dfn and date/time
- +1 NEW DFNERRORS,HASDFNERRORS,RETURN,HASDTTMERRORS,DTTMERRORS,SINGLEAPPT,APPT,SDPATAPPT,NUM,ERRORS,HASCLINICERRORS
- +2 ;;
- +3 SET HASDFNERRORS=$$VALIDATEPTDFN(.ERRORS,$GET(DFN))
- +4 IF HASDFNERRORS
- MERGE RETURN=ERRORS
- +5 ;;
- +6 SET HASDTTMERRORS=$$VALIDATEDTTM(.ERRORS,$GET(DATETIME))
- +7 IF HASDTTMERRORS
- MERGE RETURN=ERRORS
- +8 ;;
- +9 SET HASCLINICERRORS=$$VALIDATECLINIC(.ERRORS,$GET(CLINIC))
- +10 IF HASCLINICERRORS
- MERGE RETURN=ERRORS
- +11 ;
- +12 IF '$DATA(ERRORS)
- Begin DoDot:1
- +13 SET NUM=1
- +14 SET SINGLEAPPT=$$GETAPPT(.SDPATAPPT,$GET(DFN),$$ISOTFM^SDAMUTDT(DATETIME,CLINIC))
- +15 IF SINGLEAPPT
- MERGE RETURN=SDPATAPPT
- End DoDot:1
- +16 ;;
- +17 ;
- DO BUILDJSON(.SDECY,.RETURN)
- +18 DO CLEANUP
- +19 QUIT
- +20 ;
- GETALLAPPTS(SDECY,DFN) ;
- +1 NEW HASDFNERRORS,RETURN,APPT,NUM,ERRORS,SUBIEN,SDPATAPPT
- +2 ;
- +3 SET HASDFNERRORS=$$VALIDATEPTDFN(.ERRORS,$GET(DFN))
- +4 IF HASDFNERRORS
- MERGE RETURN=ERRORS
- +5 ;
- +6 IF '$DATA(ERRORS)
- Begin DoDot:1
- +7 SET SUBIEN=0
- SET NUM=0
- +8 FOR
- SET SUBIEN=$ORDER(^DPT(DFN,"S",SUBIEN))
- if 'SUBIEN
- QUIT
- Begin DoDot:2
- +9 SET NUM=NUM+1
- +10 SET APPT=$$GETAPPT(.SDPATAPPT,$GET(DFN),SUBIEN)
- +11 IF $GET(APPT)
- MERGE RETURN=SDPATAPPT
- End DoDot:2
- End DoDot:1
- +12 DO BUILDJSON(.SDECY,.RETURN)
- +13 DO CLEANUP
- +14 QUIT
- VALIDATECLINIC(ERRORS,CLINIC) ;
- +1 NEW ERRORFLAG
- +2 IF CLINIC=""
- SET ERRORFLAG=1
- DO ERRLOG^SDESJSON(.ERRORS,18)
- +3 IF CLINIC'=""
- IF '$DATA(^SC(CLINIC,0))
- SET ERRORFLAG=1
- DO ERRLOG^SDESJSON(.ERRORS,19)
- +4 QUIT $DATA(ERRORFLAG)
- +5 ;
- VALIDATEPTDFN(ERRORS,DFN) ; VALIDATE PATIENT DFN
- +1 NEW ERRORFLAG
- +2 IF DFN=""
- SET ERRORFLAG=1
- DO ERRLOG^SDESJSON(.ERRORS,1)
- +3 IF DFN'=""
- IF '$DATA(^DPT(DFN,0))
- SET ERRORFLAG=1
- DO ERRLOG^SDESJSON(.ERRORS,2)
- +4 QUIT $DATA(ERRORFLAG)
- +5 ;
- VALIDATEDTTM(ERRORS,DATETIME) ;
- +1 NEW ERRORFLAG,VALIDATED
- +2 IF DATETIME=""
- SET ERRORFLAG=1
- DO ERRLOG^SDESJSON(.ERRORS,25)
- +3 IF DATETIME'=""
- Begin DoDot:1
- +4 SET VALIDATED=$$ISOTFM^SDAMUTDT(DATETIME,CLINIC)
- +5 IF VALIDATED=-1!(VALIDATED="")
- SET ERRORFLAG=1
- DO ERRLOG^SDESJSON(.ERRORS,27)
- End DoDot:1
- +6 QUIT $DATA(ERRORFLAG)
- +7 ;
- GETAPPT(SDPATAPPT,DFN,DATETIME) ; get patient appointment from file
- +1 NEW IENS,F,APPTARY,FMDATE,CLINICIEN,OUTPDATE
- +2 SET F=2.98
- +3 ;
- SET IENS=DATETIME_","_DFN_","
- +4 DO GETS^DIQ(F,IENS,"**","IE","APPTARY","ERR")
- +5 SET CLINICIEN=$GET(APPTARY(F,IENS,.01,"I"))
- +6 SET SDPATAPPT("PatientAppt",NUM,"AppointmentDateTime")=$$FMTISO^SDAMUTDT($GET(APPTARY(F,IENS,.001,"I")),CLINICIEN)
- +7 SET SDPATAPPT("PatientAppt",NUM,"Clinic")=$GET(APPTARY(F,IENS,.01,"E"))
- +8 SET SDPATAPPT("PatientAppt",NUM,"TelephoneOfClinic")=$GET(APPTARY(F,IENS,.02,"E"))
- +9 SET SDPATAPPT("PatientAppt",NUM,"Status")=$GET(APPTARY(F,IENS,3,"E"))
- +10 SET SDPATAPPT("PatientAppt",NUM,"RealAppointment")=$GET(APPTARY(F,IENS,4,"E"))
- +11 SET SDPATAPPT("PatientAppt",NUM,"LabDateTime")=$$FMTISO^SDAMUTDT($GET(APPTARY(F,IENS,5,"I")),CLINICIEN)
- +12 SET SDPATAPPT("PatientAppt",NUM,"XrayDateTime")=$$FMTISO^SDAMUTDT($GET(APPTARY(F,IENS,6,"I")),CLINICIEN)
- +13 SET SDPATAPPT("PatientAppt",NUM,"EkgDateTime")=$$FMTISO^SDAMUTDT($GET(APPTARY(F,IENS,7,"I")),CLINICIEN)
- +14 SET SDPATAPPT("PatientAppt",NUM,"RoutingSlipPrinted")=$GET(APPTARY(F,IENS,8,"E"))
- +15 SET SDPATAPPT("PatientAppt",NUM,"RoutingSlipPrintDate")=$$FMTISO^SDAMUTDT($GET(APPTARY(F,IENS,8.5,"I")))
- +16 SET SDPATAPPT("PatientAppt",NUM,"PurposeOfVisit")=$GET(APPTARY(F,IENS,9,"E"))
- +17 SET SDPATAPPT("PatientAppt",NUM,"AppointmentType")=$GET(APPTARY(F,IENS,9.5,"E"))
- +18 SET SDPATAPPT("PatientAppt",NUM,"SpecialSurveyDisposition")=$GET(APPTARY(F,IENS,10,"E"))
- +19 SET SDPATAPPT("PatientAppt",NUM,"NumberOfCollateralSeen")=$GET(APPTARY(F,IENS,11,"E"))
- +20 SET SDPATAPPT("PatientAppt",NUM,"AutoRebookedApptDateTime")=$$FMTISO^SDAMUTDT($GET(APPTARY(F,IENS,12,"I")))
- +21 SET SDPATAPPT("PatientAppt",NUM,"CollateralVisit")=$GET(APPTARY(F,IENS,13,"E"))
- +22 SET SDPATAPPT("PatientAppt",NUM,"NoShowCancelledBy")=$GET(APPTARY(F,IENS,14,"E"))
- +23 SET SDPATAPPT("PatientAppt",NUM,"NoShowCancelDateTime")=$$FMTISO^SDAMUTDT($GET(APPTARY(F,IENS,15,"I")))
- +24 SET SDPATAPPT("PatientAppt",NUM,"CancellationReason")=$GET(APPTARY(F,IENS,16,"E"))
- +25 SET SDPATAPPT("PatientAppt",NUM,"CancellationRemarks")=$GET(APPTARY(F,IENS,17,"E"))
- +26 SET SDPATAPPT("PatientAppt",NUM,"ApptCancelled")=$GET(APPTARY(F,IENS,18,"E"))
- +27 SET SDPATAPPT("PatientAppt",NUM,"DataEntryClerk")=$GET(APPTARY(F,IENS,19,"E"))
- +28 SET SDPATAPPT("PatientAppt",NUM,"DateApptMade")=$$FMTISO^SDAMUTDT($GET(APPTARY(F,IENS,20,"I")))
- +29 SET OUTPDATE=$$GET1^DIQ(409.68,$GET(APPTARY(F,IENS,21,"I")),.01,"I")
- +30 SET SDPATAPPT("PatientAppt",NUM,"OutpatientEncounter")=$$FMTISO^SDAMUTDT($GET(OUTPDATE))
- +31 SET SDPATAPPT("PatientAppt",NUM,"EncounterFormsPrinted")=$GET(APPTARY(F,IENS,22,"E"))
- +32 SET SDPATAPPT("PatientAppt",NUM,"EncounterFormsAsAddOns")=$GET(APPTARY(F,IENS,23,"E"))
- +33 SET SDPATAPPT("PatientAppt",NUM,"EncounterConversionStatus")=$GET(APPTARY(F,IENS,23.1,"E"))
- +34 SET SDPATAPPT("PatientAppt",NUM,"AppointmentTypeSubCategory")=$GET(APPTARY(F,IENS,24,"E"))
- +35 SET SDPATAPPT("PatientAppt",NUM,"SchedulingRequestType")=$GET(APPTARY(F,IENS,25,"E"))
- +36 SET SDPATAPPT("PatientAppt",NUM,"NextAvaApptIndicator")=$GET(APPTARY(F,IENS,26,"E"))
- +37 SET SDPATAPPT("PatientAppt",NUM,"DesiredDateOfAppointment")=$$FMTISO^SDAMUTDT($GET(APPTARY(F,IENS,27,"I")))
- +38 SET SDPATAPPT("PatientAppt",NUM,"FollowUpVisit")=$GET(APPTARY(F,IENS,28,"E"))
- +39 SET SDPATAPPT("PatientAppt",NUM,"SchedulingApplication")=$GET(APPTARY(F,IENS,29,"I"))
- +40 SET SDPATAPPT("PatientAppt",NUM,"SchedulerName")=$GET(APPTARY(F,IENS,30,"E"))
- +41 ;S SDPATAPPT("PatientAppt",NUM,"CurrentStatus")=$G(APPTARY(F,IENS,100,"E"))
- +42 IF $DATA(SDPATAPPT)
- QUIT 1
- +43 QUIT 0
- +44 ;
- BUILDJSON(SDECY,RETURN) ; build json
- +1 NEW ERR
- +2 SET ERR=""
- +3 DO ENCODE^XLFJSON("RETURN","SDECY","ERR")
- +4 QUIT
- +5 ;
- CLEANUP ; kill vars
- +1 KILL RETURN,ERRORS,DTTMERRORS,APPTARY,SDPATAPPT,APPTARY
- +2 QUIT