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

SDES2BLDSUMMOBJ.m

Go to the documentation of this file.
SDES2BLDSUMMOBJ ;ALB/JAS - VISTA SCHEDULING BUILD APPT SUMMARY OBJECT ;MAY 29, 2026
 ;;5.3;Scheduling;**947**;Aug 13, 1993;Build 3
 ;;Per VHA Directive 6402, this routine should not be modified
 ;
 Q
 ;
BUILDAPPTOBJ(APPTOBJ,APPTIEN,RECCNT,ERRORS,SEARCHBY,PATINFO,CLININFO) ;Called from GET APPT RPCs to build appointment object.
 N SDDFN,CLINIEN,CANCELID,SDIEN
 D GET40984INFO(.APPTOBJ,APPTIEN,.SDDFN,.CLINIEN,.CANCELID,RECCNT)
 D:($G(SEARCHBY)'="DFN") GET2INFO(.APPTOBJ,APPTIEN,SDDFN,RECCNT)
 I $G(SEARCHBY)="DFN" D
 . D:'$D(PATINFO) GET2INFO(.PATINFO,APPTIEN,SDDFN,1)
 . M APPTOBJ("ApptSummary",RECCNT,"Patient")=PATINFO("ApptSummary",1,"Patient")
 D:($G(SEARCHBY)'="CLINIC") GET44INFO(.APPTOBJ,.CLINIEN,RECCNT)
 I $G(SEARCHBY)="CLINIC" D
 . D:'$D(CLININFO) GET44INFO(.CLININFO,.CLINIEN,1)
 . M APPTOBJ("ApptSummary",RECCNT,"Clinic")=CLININFO("ApptSummary",1,"Clinic")
 D GET298INFO(.APPTOBJ,APPTIEN,SDDFN,RECCNT,CLINIEN)
 I CLINIEN="" D ERRLOG^SDESJSON(.ERRORS,555,"Appointment IEN "_APPTIEN_". Unable to retrieve Clinic appointment data") Q
 S SDIEN=$$GET44RECORDIENS(CLINIEN,APPTOBJ("ApptSummary",RECCNT,"StartTimeFM"),SDDFN,.APPTOBJ)
 I 'SDIEN S APPTOBJ("ApptSummary",RECCNT,"OverbookFlag")="" Q
 S APPTOBJ("ApptSummary",RECCNT,"OverbookFlag")=$$GET1^DIQ(44.003,SDIEN,9,"I")
 S APPTOBJ("ApptSummary",RECCNT,"CheckOutEntered")=$$FMTISO^SDAMUTDT($$GET1^DIQ(44.003,SDIEN,306,"I"))
 D REMOVETMP(.APPTOBJ)
 Q
 ;
GET40984INFO(APPTOBJ,APPTIEN,SDDFN,CLINIEN,CANCELID,RECCNT) ;
 N IENS,RESOURCEIEN,APPTDATA,APPTSTATDT,ARRAY40984,SDMSG
 S IENS=APPTIEN_","
 D GETS^DIQ(409.84,IENS,".01;.02;.05;.07;.09;.12;.13;.17;.18;3;4","IE","ARRAY40984","SDMSG")
 S RESOURCEIEN=$G(ARRAY40984(409.84,IENS,.07,"I"))
 S CLINIEN=$$GET1^DIQ(409.831,RESOURCEIEN,.04,"I")
 S SDDFN=$G(ARRAY40984(409.84,IENS,.05,"I"))
 S APPTOBJ("ApptSummary",RECCNT,"AppointmentDateTime")=$$FMTISO^SDAMUTDT($G(ARRAY40984(409.84,IENS,.01,"I")),CLINIEN)
 S APPTOBJ("ApptSummary",RECCNT,"AppointmentIEN")=APPTIEN
 S APPTOBJ("ApptSummary",RECCNT,"DateAppointmentMade")=$$FMTISO^SDAMUTDT($G(ARRAY40984(409.84,IENS,.09,"I")))
 S APPTOBJ("ApptSummary",RECCNT,"CancelDateTime")=$$FMTISO^SDAMUTDT($G(ARRAY40984(409.84,IENS,.12,"I")),CLINIEN)
 S APPTOBJ("ApptSummary",RECCNT,"Clinic","ClinicIEN")=CLINIEN
 S APPTSTATDT=$$APPTSTATUS^SDES2GETSTATUS(APPTIEN,CLINIEN)
 S APPTOBJ("ApptSummary",RECCNT,"CurrentStatus")=$P(APPTSTATDT,U)
 S APPTOBJ("ApptSummary",RECCNT,"Status")=$P(APPTSTATDT,U)
 S APPTOBJ("ApptSummary",RECCNT,"EndTime")=$$FMTISO^SDAMUTDT($G(ARRAY40984(409.84,IENS,.02,"I")),CLINIEN)
 S APPTOBJ("ApptSummary",RECCNT,"LengthOfAppt")=$G(ARRAY40984(409.84,IENS,.18,"E"))
 S APPTOBJ("ApptSummary",RECCNT,"Walkin")=$G(ARRAY40984(409.84,IENS,.13,"E"))
 S APPTOBJ("ApptSummary",RECCNT,"StartTimeFM")=$G(ARRAY40984(409.84,IENS,.01,"I"))
 D CHECKINSTEPS(.APPTOBJ,APPTIEN,RECCNT)
 Q
 ;
CHECKINSTEPS(APPTOBJ,APPTIEN,RECCNT) ;
 N SDIEN,NUM,DATETIME
 S (SDIEN,NUM)=0
 F  S SDIEN=$O(^SDEC(409.84,APPTIEN,3,SDIEN)) Q:'SDIEN  D
 .S NUM=NUM+1
 .S DATETIME=$$GET1^DIQ(409.843,SDIEN_","_APPTIEN_",",1,"I")
 .S APPTOBJ("ApptSummary",RECCNT,"CheckInSteps",NUM,"IEN")=SDIEN
 .S APPTOBJ("ApptSummary",RECCNT,"CheckInSteps",NUM,"Status")=$$GET1^DIQ(409.843,SDIEN_","_APPTIEN_",",.01,"E")
 .S APPTOBJ("ApptSummary",RECCNT,"CheckInSteps",NUM,"DateTime")=$$FMTISO^SDAMUTDT(DATETIME)
 I '$D(APPTOBJ("ApptSummary",RECCNT,"CheckInSteps")) S APPTOBJ("ApptSummary",RECCNT,"CheckInSteps",1)=""
 Q
 ;
GET2INFO(APPTOBJ,APPTIEN,SDDFN,RECCNT) ;
 S APPTOBJ("ApptSummary",RECCNT,"Patient","DFN")=SDDFN
 S APPTOBJ("ApptSummary",RECCNT,"Patient","ICN")=$$GETPATICN^SDESINPUTVALUTL(SDDFN)
 S APPTOBJ("ApptSummary",RECCNT,"Patient","DateOfDeath")=$$FMTISO^SDAMUTDT($$GET1^DIQ(2,SDDFN_",",.351,"I"))
 S APPTOBJ("ApptSummary",RECCNT,"Patient","Name")=$$GET1^DIQ(2,SDDFN_",",.01,"E")
 Q
 ;
GET44INFO(APPTOBJ,CLINIEN,RECCNT) ;
 N CLINIENS,ARRAY44
 S CLINIENS=CLINIEN_","
 D GETS^DIQ(44,CLINIENS,".01;3.5;2500","IE","ARRAY44","SDMSG")
 S APPTOBJ("ApptSummary",RECCNT,"Clinic","Name")=$G(ARRAY44(44,CLINIENS,.01,"E"))
 S APPTOBJ("ApptSummary",RECCNT,"Clinic","ProhibitedClinic")=$S($G(ARRAY44(44,CLINIENS,2500,"E"))="YES":1,1:0)
 ;
 N DIVISION,INSTITUTION,TIMEZONEIEN
 S DIVISION=$G(ARRAY44(44,CLINIENS,3.5,"I"))
 S INSTITUTION=$$GET1^DIQ(40.8,DIVISION,.07,"I")
 S TIMEZONEIEN=$$GET1^DIQ(4,INSTITUTION,800,"I")
 I TIMEZONEIEN="" D BLANKTIMEZONE(.APPTOBJ,RECCNT) Q
 S APPTOBJ("ApptSummary",RECCNT,"Clinic","TimeZone")=$$GET1^DIQ(4,INSTITUTION,800,"E")
 S APPTOBJ("ApptSummary",RECCNT,"Clinic","TimeZoneException")=$$GET1^DIQ(4,INSTITUTION,802,"E")
 Q
 ;
BLANKTIMEZONE(APPTOBJ,RECCNT) ;
 S APPTOBJ("ApptSummary",RECCNT,"Clinic","TimeZone")=""
 S APPTOBJ("ApptSummary",RECCNT,"Clinic","TimeZoneException")=""
 Q
 ;
GET298INFO(APPTOBJ,APPTIEN,SDDFN,RECCNT,CLINIEN) ;
 N PATIENS
 S PATIENS=APPTOBJ("ApptSummary",RECCNT,"StartTimeFM")_","_SDDFN_","
 S APPTOBJ("ApptSummary",RECCNT,"InpatientFlag")=$S($$GET1^DIQ(2.98,PATIENS,3,"I")="I":1,1:0)
 Q
 ;
GET44RECORDIENS(CLINICIEN,APPTSTARTTIME,SDDFN,APPTOBJ) ;
 ;want to process through until we get to the correct appointment for time and clinic
 N FOUND,IENS44003,SUBIEN,APPTCNT,MATCH,CHECKIEN
 S FOUND=0,APPTCNT=0
 S SUBIEN=0 F  S SUBIEN=$O(^SC(CLINICIEN,"S",APPTSTARTTIME,1,SUBIEN)) Q:'SUBIEN!($G(FOUND)=1)  D
 .I $$GET1^DIQ(44.003,SUBIEN_","_APPTSTARTTIME_","_CLINICIEN_",",.01,"I")=SDDFN D
 .. S CHECKIEN=SUBIEN_","_APPTSTARTTIME_","_CLINICIEN_","
 .. S MATCH=$$MATCHAPPOINTMENT(.APPTOBJ,CHECKIEN)
 .. Q:'MATCH
 ..S APPTCNT=APPTCNT+1
 ..S IENS44003=SUBIEN_","_APPTSTARTTIME_","_CLINICIEN_",",FOUND=1 Q
 Q $G(IENS44003)
 ;
MATCHAPPOINTMENT(APPTOBJ,CHECKIEN) ;
 Q:(APPTOBJ("ApptSummary",RECCNT,"CancelDateTime")="")&($$GET1^DIQ(44.003,CHECKIEN,310,"I")="C") 0
 Q 1
 ;
REMOVETMP(APPTOBJ) ;
 K APPTOBJ("ApptSummary",RECCNT,"CancelDateTime")
 K APPTOBJ("ApptSummary",RECCNT,"StartTimeFM")
 Q
 ;