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

SDESAPPTDATA.m

Go to the documentation of this file.
  1. SDESAPPTDATA ;ALB/TAW,MGD,RRM,LAB,DJS,BWF,ANU - VISTA Appointment data getter ;OCT 12, 2023@11:38
  1. ;;5.3;Scheduling;**788,814,815,820,823,827,837,838,839,846,847,860,864**;Aug 13, 1993;Build 15
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. ; Reference to ^VA(200 in ICR #10060
  1. Q
  1. ; The intention of this rtn is to return a unique set of data from the Appointment
  1. ;File (409.84) for a specific IEN.
  1. ;
  1. ; It is assumed by getting here all business logic and validation has been performed.
  1. ;
  1. ; This routine should only be used for retrieving data from the Appointment file.
  1. ;
  1. SUMMARY(APPTDATA,IEN) ;
  1. ;Returns a basic set of data for a specific appointment
  1. ;
  1. ; Input
  1. ; IEN - Specific appointment IEN
  1. ; Return
  1. ; APPTDATA - Array of field names and the data for the field based on the IEN
  1. ;
  1. N APPTARY,FN,IENS,SDMSG,SDDFN,RESOURCEIEN,CLINICIEN,SIEN,OVERBOOK,STIME,ETIME,X
  1. N DATETIME,NUM,STATPOINTER,CLINICARY,STAT,CLINICDATA,PROV,CLINICAPPT
  1. K APPTDATA
  1. S FN=409.84,IENS=IEN_",",OVERBOOK=0
  1. D GETS^DIQ(FN,IENS,".01;.02;.03;.04;.05;.06;.07;.12;.13;.121;.122;.14;.16;.17;.18;.22;1;3;4;100","IE","APPTARY","SDMSG") ;SD,814-Added 100 for the EAS Tracking Number
  1. S RESOURCEIEN=$G(APPTARY(FN,IENS,.07,"I"))
  1. S CLINICIEN=$$GET1^DIQ(409.831,RESOURCEIEN,.04,"I")
  1. S APPTDATA("StartTime")=$G(APPTARY(FN,IENS,.01,"E"))
  1. S APPTDATA("StartTimeFM")=$G(APPTARY(FN,IENS,.01,"I"))
  1. S STIME=$G(APPTARY(FN,IENS,.01,"I"))
  1. S APPTDATA("EndTime")=$G(APPTARY(FN,IENS,.02,"E"))
  1. S ETIME=$G(APPTARY(FN,IENS,.02,"I"))
  1. S APPTDATA("AppointmentTypeIEN")=$G(APPTARY(FN,IENS,.06,"I"))
  1. S APPTDATA("LengthOfAppt")=$G(APPTARY(FN,IENS,.18,"E"))
  1. S APPTDATA("RequestType")=$G(APPTARY(FN,IENS,.22,"E"))
  1. S APPTDATA("RequestIEN")=$P($G(APPTARY(FN,IENS,.22,"I")),";")
  1. K APPTARY(FN,IENS,1,"I"),APPTARY(FN,IENS,1,"E")
  1. I $D(APPTARY(FN,IENS,1)) M APPTDATA("Note")=APPTARY(FN,IENS,1)
  1. E S APPTDATA("Note")=""
  1. S APPTDATA("AppointmentIEN")=IEN
  1. S DATETIME=$G(APPTARY(FN,IENS,.03,"I"))
  1. S APPTDATA("CheckIn")=$$FMTE^XLFDT(DATETIME)
  1. S DATETIME=$G(APPTARY(FN,IENS,.04,"I"))
  1. S APPTDATA("CheckInEntered")=$$FMTE^XLFDT(DATETIME)
  1. S DATETIME=$G(APPTARY(FN,IENS,.14,"I"))
  1. S APPTDATA("CheckOut")=$$FMTE^XLFDT(DATETIME)
  1. S APPTDATA("EASTrackingNumber")=$G(APPTARY(FN,IENS,100,"I")) ;SD,814-Retrieve EAS Tracking Number
  1. S CTIME=$G(APPTARY(FN,IENS,.12,"I"))
  1. ;S APPTDATA("CancelDateTime")=$$FMTISO^SDAMUTDT(CTIME,CLINICIEN)
  1. S APPTDATA("CancelDateTime")=$$FMTE^XLFDT($G(APPTARY(FN,IENS,.12,"I")))
  1. S APPTDATA("CancellationReason")=$G(APPTARY(FN,IENS,.122,"E"))
  1. ;CancelledByUser Data Elements
  1. S CUSER=$G(APPTARY(FN,IENS,.121,"I"))
  1. I CUSER D
  1. .S APPTDATA("CancelledByUser","ID")=CUSER
  1. .S APPTDATA("CancelledByUser","Name")=$G(APPTARY(FN,IENS,.121,"E"))
  1. .S APPTDATA("CancelledByUser","SecId")=$$GET1^DIQ(200,CUSER,205.1,"I")
  1. I '$D(APPTDATA("CancelledByUser")) S APPTDATA("CancelledByUser",1)=""
  1. ;
  1. S APPTDATA("Walkin")=$G(APPTARY(FN,IENS,.13,"E"))
  1. ;
  1. ;Always send these Resource / Clinic data elements
  1. S APPTDATA("Clinic","IsOverbook")=0
  1. ;S RESOURCEIEN=$G(APPTARY(FN,IENS,.07,"I"))
  1. S APPTDATA("ResourceIEN")=RESOURCEIEN
  1. S APPTDATA("Resource","Name")=$G(APPTARY(FN,IENS,.07,"E"))
  1. ;S CLINICIEN=$$GET1^DIQ(409.831,RESOURCEIEN,.04,"I")
  1. S APPTDATA("Resource","ClinicIEN")=CLINICIEN
  1. ;847
  1. D SETSTATUS^SDESGETAPPTWRAP5(.APPTDATA,IEN,CLINICIEN)
  1. S APPTDATA("CurrentStatus")=APPTDATA("Status")
  1. ;
  1. D APPTCLINIC^SDESCLINICDATA(.CLINICDATA,CLINICIEN)
  1. M APPTDATA("Clinic")=CLINICDATA
  1. S SDDFN=$G(APPTARY(FN,IENS,.05,"I"))
  1. I CLINICIEN D
  1. .S SIEN=0
  1. .F S SIEN=$O(^SC(CLINICIEN,"S",STIME,SIEN)) Q:'SIEN D
  1. ..S X=$O(^SC(CLINICIEN,"S",STIME,SIEN,""),-1)
  1. ..Q:SDDFN'=$$GET1^DIQ(44.003,SIEN_","_STIME_","_CLINICIEN_",",.01,"I")
  1. ..S:X OVERBOOK=$G(^SC(CLINICIEN,"S",STIME,SIEN,X,"OB"))
  1. ..D GETS^DIQ(44.003,SIEN_","_STIME_","_CLINICIEN_",","10.5;30","IE","CLINICAPPT","SDMSG")
  1. ..S APPTDATA("Clinic","CurrentEligibilityCode")=$G(CLINICAPPT(44.003,SIEN_","_STIME_","_CLINICIEN_",",10.5,"E"))
  1. ..S APPTDATA("Clinic","EligibilityOfVisit")=$G(CLINICAPPT(44.003,SIEN_","_STIME_","_CLINICIEN_",",30,"E"))
  1. S (SIEN,NUM)=0
  1. F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN D
  1. .S NUM=NUM+1
  1. .S STATPOINTER=$$GET1^DIQ(409.843,SIEN_","_IEN_",",.01,"I")
  1. .S STAT=$$GET1^DIQ(409.842,STATPOINTER,.01,"E")
  1. .S DATETIME=$$GET1^DIQ(409.843,SIEN_","_IEN_",",1,"E")
  1. .S APPTDATA("CheckInSteps",NUM,"IEN")=SIEN
  1. .S APPTDATA("CheckInSteps",NUM,"Status")=$G(STAT)
  1. .S APPTDATA("CheckInSteps",NUM,"DateTime")=$$FMTE^XLFDT(DATETIME)
  1. I '$D(APPTDATA("CheckInSteps")) S APPTDATA("CheckInSteps")=""
  1. ;
  1. ;Always send these Patient data elements
  1. S APPTDATA("DFN")=SDDFN
  1. S APPTDATA("Patient","EligibilityIEN")=$$GET1^DIQ(2,SDDFN_",",.361,"I")
  1. S APPTDATA("Patient","Name")=$$GET1^DIQ(2,SDDFN_",",.01,"E")
  1. ; 864
  1. S APPTDATA("Patient","DateOfBirth")=$$FMTISO^SDAMUTDT($$GET1^DIQ(2,SDDFN_",",.03,"I"))
  1. S APPTDATA("Patient","DateOfDeath")=$$FMTISO^SDAMUTDT($$GET1^DIQ(2,SDDFN_",",.351,"I"))
  1. ;
  1. ; patient comments
  1. D GETPATCOMMENTS(.APPTDATA,IEN)
  1. ; provider data elements
  1. S PROV=$G(APPTARY(FN,IENS,.16,"I"))
  1. S APPTDATA("Provider","ID")=PROV
  1. S APPTDATA("Provider","Name")=$G(APPTARY(FN,IENS,.16,"E"))
  1. S APPTDATA("Provider","SecId")=$$GET1^DIQ(200,PROV,205.1,"I")
  1. Q
  1. ;Returns a basic set of data for a specific appointment with ISO dates
  1. ;
  1. ; Input
  1. ; IEN - Specific appointment IEN
  1. ; Return
  1. ; APPTDATA - Array of field names and the data for the field based on the IEN
  1. ;
  1. SUMMARY2(APPTDATA,IEN) ;
  1. N APPTARY,FN,IENS,SDMSG,SDDFN,RESOURCEIEN,CLINICIEN,SIEN,OVERBOOK,STIME,ETIME,X,PROV,CUSER
  1. N DATETIME,NUM,STATPOINTER,CLINICARY,STAT,CLINICDATA,CIDATETIME,CODATETIME,CIENDATETIME,CTIME
  1. N APPREQPTR,APPREQIEN,ORIGAPPTREQTYP
  1. K APPTDATA
  1. S FN=409.84,IENS=IEN_",",OVERBOOK=0
  1. D GETS^DIQ(FN,IENS,".01;.02;.03;.04;.05;.06;.07;.12;.13;.14;.16;.17;.18;.22;.121;.122;1;2;3;4;100","IE","APPTARY","SDMSG") ;SD,814-Added 100 for the EAS Tracking Number
  1. S RESOURCEIEN=$G(APPTARY(FN,IENS,.07,"I"))
  1. S CLINICIEN=$$GET1^DIQ(409.831,RESOURCEIEN,.04,"I")
  1. S STIME=$G(APPTARY(FN,IENS,.01,"I"))
  1. S APPTDATA("AppointmentDateTime")=$$FMTISO^SDAMUTDT(STIME,CLINICIEN)
  1. S APPTDATA("StartTimeFM")=$G(APPTARY(FN,IENS,.01,"I"))
  1. S ETIME=$G(APPTARY(FN,IENS,.02,"I"))
  1. S APPTDATA("EndTime")=$$FMTISO^SDAMUTDT(ETIME,CLINICIEN)
  1. S APPTDATA("AppointmentTypeIEN")=$G(APPTARY(FN,IENS,.06,"I"))
  1. S APPTDATA("LengthOfAppt")=$G(APPTARY(FN,IENS,.18,"E"))
  1. S APPREQIEN=$P($G(APPTARY(FN,IENS,.22,"I")),";")
  1. S APPTDATA("RequestType")=$G(APPTARY(FN,IENS,.22,"E"))
  1. S APPTDATA("RequestIEN")=APPREQIEN
  1. S APPREQPTR=$P($G(APPTARY(FN,IENS,.22,"I")),";",2)
  1. I APPREQPTR[403.5 S ORIGAPPTREQTYP="R"
  1. I APPREQPTR[123 S ORIGAPPTREQTYP=$$GET1^DIQ(123,APPREQIEN,13,"I")
  1. I APPREQPTR[409.85 S ORIGAPPTREQTYP=$$GET1^DIQ(409.85,APPREQIEN,4,"I")
  1. S APPTDATA("OriginatingRequestType")=$G(ORIGAPPTREQTYP)
  1. K APPTARY(FN,IENS,1,"I"),APPTARY(FN,IENS,1,"E")
  1. I $D(APPTARY(FN,IENS,1)) M APPTDATA("Note")=APPTARY(FN,IENS,1)
  1. I '$D(APPTDATA("Note")) S APPTDATA("Note")=""
  1. S APPTDATA("AppointmentIEN")=IEN
  1. S CIDATETIME=$G(APPTARY(FN,IENS,.03,"I"))
  1. S APPTDATA("CheckIn")=$$FMTISO^SDAMUTDT(CIDATETIME,CLINICIEN)
  1. S CIENDATETIME=$G(APPTARY(FN,IENS,.04,"I"))
  1. S APPTDATA("CheckInEntered")=$$FMTISO^SDAMUTDT(CIENDATETIME)
  1. S CODATETIME=$G(APPTARY(FN,IENS,.14,"I"))
  1. S APPTDATA("CheckOut")=$$FMTISO^SDAMUTDT(CODATETIME,CLINICIEN)
  1. ;847
  1. D SETSTATUS^SDESGETAPPTWRAP5(.APPTDATA,IEN,CLINICIEN)
  1. S APPTDATA("CurrentStatus")=APPTDATA("Status")
  1. ;
  1. S APPTDATA("EASTrackingNumber")=$G(APPTARY(FN,IENS,100,"I")) ;SD,814-Retrieve EAS Tracking Number
  1. S APPTDATA("Walkin")=$G(APPTARY(FN,IENS,.13,"E"))
  1. S CTIME=$G(APPTARY(FN,IENS,.12,"I"))
  1. S APPTDATA("CancelDateTime")=$$FMTISO^SDAMUTDT(CTIME,CLINICIEN)
  1. S APPTDATA("CancellationReason")=$G(APPTARY(FN,IENS,.122,"E"))
  1. ;CancelledByUser Data Elements
  1. S CUSER=$G(APPTARY(FN,IENS,.121,"I"))
  1. I CUSER D
  1. .S APPTDATA("CancelledByUser","ID")=CUSER
  1. .S APPTDATA("CancelledByUser","Name")=$G(APPTARY(FN,IENS,.121,"E"))
  1. .S APPTDATA("CancelledByUser","SecId")=$$GET1^DIQ(200,CUSER,205.1,"I")
  1. I '$D(APPTDATA("CancelledByUser")) S APPTDATA("CancelledByUser",1)=""
  1. ;
  1. ; patient comments
  1. D GETPATCOMMENTS(.APPTDATA,IEN)
  1. ;
  1. ; Resource / Clinic data elements
  1. S APPTDATA("ResourceIEN")=RESOURCEIEN
  1. I RESOURCEIEN D
  1. .S APPTDATA("Resource","Name")=$G(APPTARY(FN,IENS,.07,"E"))
  1. .S APPTDATA("Resource","ClinicIEN")=CLINICIEN
  1. I '$D(APPTDATA("Resource")) S APPTDATA("Resource",1)=""
  1. S SDDFN=$G(APPTARY(FN,IENS,.05,"I"))
  1. I CLINICIEN D
  1. .D APPTCLINIC^SDESCLINICDATA(.CLINICDATA,CLINICIEN)
  1. .M APPTDATA("Clinic")=CLINICDATA
  1. .S APPTDATA("Clinic","IsOverbook")=0
  1. .S SIEN=0
  1. .F S SIEN=$O(^SC(CLINICIEN,"S",STIME,SIEN)) Q:'SIEN D
  1. ..S X=$O(^SC(CLINICIEN,"S",STIME,SIEN,""),-1)
  1. ..Q:SDDFN'=$$GET1^DIQ(44.003,SIEN_","_STIME_","_CLINICIEN_",",.01,"I")
  1. ..S:X OVERBOOK=$G(^SC(CLINICIEN,"S",STIME,SIEN,X,"OB"))
  1. I OVERBOOK="O",$D(APPTDATA("Clinic")) S APPTDATA("Clinic","IsOverbook")=1
  1. I '$D(APPTDATA("Clinic")) S APPTDATA("Clinic",1)=""
  1. ;
  1. S (SIEN,NUM)=0
  1. F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN D
  1. .S NUM=NUM+1
  1. .S STAT=$$GET1^DIQ(409.843,SIEN_","_IEN_",",.01,"E")
  1. .S DATETIME=$$GET1^DIQ(409.843,SIEN_","_IEN_",",1,"I")
  1. .S APPTDATA("CheckInSteps",NUM,"IEN")=SIEN
  1. .S APPTDATA("CheckInSteps",NUM,"Status")=STAT
  1. .S APPTDATA("CheckInSteps",NUM,"DateTime")=$$FMTISO^SDAMUTDT(DATETIME)
  1. I '$D(APPTDATA("CheckInSteps")) S APPTDATA("CheckInSteps",1)=""
  1. ;
  1. ;Always send these Patient data elements
  1. S APPTDATA("DFN")=SDDFN
  1. S APPTDATA("Patient","EligibilityIEN")=$$GET1^DIQ(2,SDDFN_",",.361,"I")
  1. S APPTDATA("Patient","Name")=$$GET1^DIQ(2,SDDFN_",",.01,"E")
  1. ; 864
  1. S APPTDATA("Patient","DateOfBirth")=$$FMTISO^SDAMUTDT($$GET1^DIQ(2,SDDFN_",",.03,"I"))
  1. S APPTDATA("Patient","DateOfDeath")=$$FMTISO^SDAMUTDT($$GET1^DIQ(2,SDDFN_",",.351,"I"))
  1. ; provider data elements
  1. S PROV=$G(APPTARY(FN,IENS,.16,"I"))
  1. I PROV D
  1. .S APPTDATA("Provider","ID")=PROV
  1. .S APPTDATA("Provider","Name")=$G(APPTARY(FN,IENS,.16,"E"))
  1. .S APPTDATA("Provider","SecId")=$$GET1^DIQ(200,PROV,205.1,"I")
  1. I '$D(APPTDATA("Provider")) S APPTDATA("Provider",1)=""
  1. S APPTDATA("VVSApptID")=$G(APPTARY(FN,IENS,2,"I")) ;This field added as part of VSE2857
  1. Q
  1. GETPATCOMMENTS(APPTDATA,IEN) ;
  1. N SUBIEN,COUNT
  1. S SUBIEN=0,COUNT=0
  1. F S SUBIEN=$O(^SDEC(409.84,IEN,6,SUBIEN)) Q:'SUBIEN D
  1. .S COUNT=COUNT+1
  1. .S APPTDATA("PatientComments",COUNT)=$$GET1^DIQ(409.846,SUBIEN_","_IEN_",",.01,"E")
  1. I '$D(APPTDATA("PatientComments")) S APPTDATA("PatientComments",1)=""
  1. Q
  1. ;