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

SDES2CONTACTS.m

Go to the documentation of this file.
  1. SDES2CONTACTS ;ALB/LAB,MCB/TJB,JAS - VISTA SCHEDULING CONTACT SDES2 CONTACT ATTEMPTS ;Aug 28,2024
  1. ;;5.3;Scheduling;**860,873,878,887**;Aug 13, 1993;Build 7
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. Q
  1. ;
  1. ADDCONTACT(RESULT,SDCONTEXT,CONTACT) ; RPC: SDEC2 ADD CONTACT ATTEMPT
  1. N ERRORS,DFN,CLINIC,PREFDATE,REQTYPE,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DTTMENTERED,REQUESTIEN,NEWCONTACT
  1. N NEWIEN,APPTREQTYPE,FDA,NEWCONTIEN,SUBIENS,CONTACTIEN,SEQUENCE,LEFTMSG,NEWCONTATTMTIEN,VALID
  1. ;
  1. D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
  1. I $D(ERRORS) S ERRORS("Contact",1)="",ERRORS("ContactAttempts")="" D BUILDJSON^SDES2JSON(.RESULT,.ERRORS) Q
  1. ;
  1. D REQUESTINFO(.ERRORS,.CONTACT,.APPTREQTYPE,.REQUESTIEN,.REQTYP,.DFN,.CLINIC,.PREFDATE)
  1. I $D(ERRORS) S ERRORS("Contact",1)="",ERRORS("ContactAttempts")="" D BUILDJSON^SDES2JSON(.RESULT,.ERRORS) Q
  1. ;
  1. D ASSIGNVARS(.CONTACT,.REQTYPE,.DTTMOFCONTACT,.COMMENTS,.DTMENTERED,.LEFTMSG,.SDDUZ)
  1. D VALIDATE(.ERRORS,REQTYPE,.DTTMOFCONTACT,COMMENTS,.DTTMENTERED,LEFTMSG,CONTACTTYPE,CLINIC)
  1. I $D(ERRORS) S ERRORS("Contact",1)="",ERRORS("ContactAttempts")="" D BUILDJSON^SDES2JSON(.RESULT,.ERRORS) Q
  1. ;
  1. D GETCONTACTIEN(.CONTACTIEN,APPTREQTYPE)
  1. ;
  1. D:(CONTACTIEN'="") UPDATECONTACT(.RESULT,.FDA,CONTACTIEN,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,SDDUZ,DTTMENTERED,LEFTMSG)
  1. D:(CONTACTIEN="") CREATECONTACT(.RESULT,.FDA,DFN,CONTACTIEN,CLINIC,PREFDATE,REQTYPE,APPTREQTYPE,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,SDDUZ,DTTMENTERED,LEFTMSG)
  1. D SAVECONTACT(.ERRORS,.RESULT,.FDA,.NEWIEN)
  1. D ASSIGNNEWIEN(.NEWCONTACTIEN,.CONTACTIEN,.NEWIEN)
  1. D BLDRETNINFO(.NEWCONTACT,CONTACTIEN,CLINIC)
  1. I '$D(NEWCONTACT) S NEWCONTACT("Contact",1)="",ERRORS("ContactAttempts")="" D BUILDJSON^SDES2JSON(.RESULT,.CONTACTS) Q
  1. D DISPCONTACT(.NEWCONTACT,CONTACTIEN,CLINIC)
  1. D BUILDJSON^SDES2JSON(.RESULT,.NEWCONTACT)
  1. Q
  1. ;
  1. ASSIGNNEWIEN(NEWCONTACTIEN,CONTACTIEN,NEWIEN) ;get the iens that were created during create/update
  1. S:CONTACTIEN'="" NEWCONTATTMTIEN=$G(NEWIEN(1))
  1. I CONTACTIEN="" D
  1. .S CONTACTIEN=$G(NEWIEN(1))
  1. .S NEWCONTATTMTIEN=$G(NEWIEN(2))
  1. Q
  1. ;
  1. GETCONTACTIEN(CONTACTIEN,APPTREQTYPE) ;if a contact attempt already exists, get it's ien
  1. S CONTACTIEN=""
  1. S:$D(^SDEC(409.86,"REQPTR",APPTREQTYPE)) CONTACTIEN=$O(^SDEC(409.86,"REQPTR",APPTREQTYPE,"A"),-1)
  1. Q
  1. ;
  1. BLDNEWCONT(FDA,IENS,DFN,CLINIC,PREFDATE,REQTYPE,APPTREQTYPE) ; build the new contact attempt record.
  1. S FDA(409.86,IENS,.01)=DFN
  1. S FDA(409.86,IENS,1)=CLINIC
  1. S FDA(409.86,IENS,2)=PREFDATE
  1. S FDA(409.86,IENS,2.1)=REQTYPE
  1. ; Main Sequence (2.2) is always set to 1 initially
  1. S FDA(409.86,IENS,2.2)=1
  1. S FDA(409.86,IENS,2.3)=APPTREQTYPE
  1. Q
  1. ;
  1. BLDNEWATTMPT(FDA,IENS,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,SDDUZ,DTTMENTERED,LEFTMSG,SEQUENCE) ;add a new entry to existing contact attempt record.
  1. S FDA(409.863,IENS,.01)=DTTMOFCONTACT
  1. S FDA(409.863,IENS,1)=CONTACTTYPE
  1. S FDA(409.863,IENS,2)=COMMENTS
  1. S FDA(409.863,IENS,3)=$G(LEFTMSG)
  1. ; The first entry in this subfile will always be 1
  1. S FDA(409.863,IENS,4)=SEQUENCE
  1. S FDA(409.863,IENS,5)=$G(SDDUZ)
  1. S FDA(409.863,IENS,6)=DTTMENTERED
  1. Q
  1. ;
  1. BLDRETNINFO(RESULT,IEN,CLINIC) ;build return result of contact attempts
  1. N F,IENS,ERR,PREFDATE,STOPIEN,CONTDATA
  1. S F=409.86,IENS=IEN_","
  1. D GETS^DIQ(409.86,IENS,"**","IE","CONTDATA","ERR")
  1. Q:$D(ERR)
  1. I '$G(CLINIC) S CLINIC=$G(CONTDATA(F,IENS,1,"I"))
  1. S PREFDATE=$$FMTISO^SDAMUTDT($G(CONTDATA(F,IENS,2,"I")),$G(CLINIC))
  1. I PREFDATE<0 S PREFDATE=""
  1. S RESULT("Contact","ID")=$P(IENS,",")
  1. S RESULT("Contact","Patient")=$G(CONTDATA(F,IENS,.01,"I"))
  1. S RESULT("Contact","Clinic")=$G(CONTDATA(F,IENS,1,"I"))
  1. S STOPIEN=$$GET1^DIQ(44,CLINIC,8,"I")
  1. S RESULT("Contact","ClinicStopCodeAMIS")=$$STOPCODETOAMIS^SDESUTIL(STOPIEN)
  1. S RESULT("Contact","PreferredDate")=PREFDATE
  1. S RESULT("Contact","RequestType")=$G(CONTDATA(F,IENS,2.1,"I"))
  1. S RESULT("Contact","MainSequence")=$G(CONTDATA(F,IENS,2.2,"I"))
  1. N SRVSTRING
  1. S SRVSTRING=$$GETSRV($G(CONTDATA(F,IENS,2.1,"I")),+$G(CONTDATA(F,IENS,2.3,"I")))
  1. S RESULT("Contact","Service")=$P($G(SRVSTRING),"^")
  1. S RESULT("Contact","ServiceName")=$P($G(SRVSTRING),"^",2)
  1. S RESULT("Contact","RequestPointer")=$G(CONTDATA(F,IENS,2.3,"I"))
  1. K CONTDATA
  1. Q
  1. ;
  1. ASSIGNVARS(CONTACT,REQTYPE,DTTMOFCONTACT,COMMENTS,DTMENTERED,LEFTMSG,SDDUZ) ;assign variables used sent in from CONTACT array
  1. S DTTMOFCONTACT=$G(CONTACT("DTTMOFCONTACT"))
  1. S CONTACTTYPE=$G(CONTACT("CONTACTTYPE"))
  1. S COMMENTS=$G(CONTACT("COMMENTS"))
  1. S DTTMENTERED=$G(CONTACT("DTTMENTERED"))
  1. S LEFTMSG=$G(CONTACT("LEFTMESSAGE"))
  1. S:LEFTMSG="" LEFTMSG=0
  1. S:$G(SDCONTEXT("USER DUZ"))'="" SDDUZ=$G(SDCONTEXT("USER DUZ"))
  1. S:$G(SDCONTEXT("USER DUZ"))="" SDDUZ=DUZ
  1. Q
  1. ;
  1. VALIDATE(ERRORS,REQTYPE,DTTMOFCONTACT,COMMENTS,DTTMENTERED,LEFTMSG,CONTACTTYPE,CLINIC) ;validate input array values
  1. D VALFIELD^SDES2VALUTIL(,.ERRORS,409.86,2.1,REQTYPE,,0,395,396)
  1. D VALFIELD^SDES2VALUTIL(,.ERRORS,409.863,3,LEFTMSG,0,0,,402)
  1. D VALFIELD^SDES2VALUTIL(,.ERRORS,409.863,2,COMMENTS,0,0)
  1. D VALFIELD^SDES2VALUTIL(,.ERRORS,409.863,1,CONTACTTYPE,1,0)
  1. S DTTMOFCONTACT=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,DTTMOFCONTACT,CLINIC,1,389,390) ;
  1. S DTTMENTERED=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,DTTMENTERED,,1,387,388) ;
  1. Q
  1. ;
  1. REQUESTINFO(ERRORS,CONTACT,APPTREQTYPE,REQUESTIEN,REQTYP,DFN,CLINIC,PREFDATE,CONTACTIEN) ;
  1. ; Given the request ien and request type, return back information needed from request
  1. N REQTYPEFOUND,VALID
  1. S REQTYPEFOUND=0
  1. S REQUESTIEN=$G(CONTACT("REQUESTIEN"))
  1. S REQTYPE=$G(CONTACT("REQTYPE"))
  1. I (REQTYPE="A")!(REQTYPE="RTC")!(REQTYPE="V") D
  1. . D VALFILEIEN^SDES2VALUTIL(.VALID,.ERRORS,409.85,REQUESTIEN,1,0,3,4)
  1. . Q:'VALID
  1. . S DFN=$$GET1^DIQ(409.85,REQUESTIEN,.01,"I")
  1. . S CLINIC=$$GET1^DIQ(409.85,REQUESTIEN,8,"I")
  1. . S PREFDATE=$$GET1^DIQ(409.85,REQUESTIEN,22,"I")
  1. . S APPTREQTYPE=REQUESTIEN_";"_"SDEC(409.85,"
  1. . S REQTYPEFOUND=1
  1. I (REQTYPE="C")!(REQTYPE="P") D
  1. . D VALFILEIEN^SDES2VALUTIL(.VALID,.ERRORS,123,REQUESTIEN,1,0,3,4)
  1. . Q:'VALID
  1. . S DFN=$$GET1^DIQ(123,REQUESTIEN,.02,"I")
  1. . S CLINIC=""
  1. . S:$$GET1^DIQ(123,REQUESTIEN,17,"I")'="" PREFDATE=$$GET1^DIQ(123,REQUESTIEN,17,"I")
  1. . S:$G(PREFDATE)="" PREFDATE=$$GET1^DIQ(123,REQUESTIEN,.01,"I")
  1. . S APPTREQTYPE=REQUESTIEN_";"_"GMR(123,"
  1. . S REQTYPEFOUND=1
  1. I REQTYPE="R" D
  1. . D VALFILEIEN^SDES2VALUTIL(.VALID,.ERRORS,403.5,REQUESTIEN,1,0,3,4)
  1. . Q:'VALID
  1. . S DFN=$$GET1^DIQ(403.5,REQUESTIEN,.01,"I")
  1. . S CLINIC=$$GET1^DIQ(403.5,REQUESTIEN,4.5,"I")
  1. . S PREFDATE=$$GET1^DIQ(403.5,REQUESTIEN,5,"I")
  1. . S APPTREQTYPE=REQUESTIEN_";"_"SD(403.5,"
  1. . S REQTYPEFOUND=1
  1. I '$D(ERRORS)&('REQTYPEFOUND) D ERRLOG^SDES2JSON(.ERRORS,52,"Passed in Request Type invalid or not supported.")
  1. Q
  1. ;
  1. CREATECONTACT(RESULT,FDA,DFN,CONTACTIEN,CLINIC,PREFDATE,REQTYPE,APPTREQTYPE,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,SDDUZ,DTTMENTERED,LEFTMSG) ;
  1. ;create a new contact attempt record
  1. D BLDNEWCONT(.FDA,"+1,",DFN,CLINIC,PREFDATE,REQTYPE,APPTREQTYPE)
  1. S SUBIENS="+2,+1,"
  1. D BLDNEWATTMPT(.FDA,SUBIENS,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,SDDUZ,DTTMENTERED,LEFTMSG,1)
  1. Q
  1. ;
  1. UPDATECONTACT(RESULT,FDA,CONTACTIEN,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,SDDUZ,DTTMENTERED,LEFTMSG) ;
  1. ;update the contact attempt multiple with the new contact data
  1. S SUBIENS="+1,"_CONTACTIEN_","
  1. S SEQUENCE=$O(^SDEC(409.86,CONTACTIEN,1,9999),-1)+1
  1. D BLDNEWATTMPT(.FDA,SUBIENS,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,SDDUZ,DTTMENTERED,LEFTMSG,SEQUENCE)
  1. Q
  1. ;
  1. SAVECONTACT(ERRORS,RESULT,FDA,NEWIEN) ;file contact attempt in 409.86 file
  1. NEW DIERR,FILERR
  1. D UPDATE^DIE(,"FDA","NEWIEN","FILERR") K FDA
  1. I $D(FILERR) D Q
  1. .D ERRLOG^SDESJSON(.ERRORS,52,$G(FILERR("DIERR",1,"TEXT",1)))
  1. .S ERRORS("Contact",1)=""
  1. .D BUILDJSON^SDES2JSON(.RESULT,.ERRORS)
  1. Q
  1. ;
  1. GETCONTACTS(RESULT,SDCONTEXT,REQARRAY) ; RPC: SDES2 GET CONTACT ATTEMPT
  1. N REQTYPE,REQIEN,ERRORS,APPTREQTYPE,REQIEN,REQTYPE,DFN,CLINIC,PREFDATE,CONTACTS,CONTACTIEN
  1. D ASSIGNREQVAR(.REQARRAY,.REQTYPE,.REQIEN)
  1. D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
  1. I $D(ERRORS) S ERRORS("Contact",1)="" D BUILDJSON^SDES2JSON(.RESULT,.ERRORS) Q
  1. ;
  1. D VALFIELD^SDES2VALUTIL(,.ERRORS,409.86,2.1,REQTYPE,,0,395,396)
  1. D REQUESTINFO(.ERRORS,.REQARRAY,.APPTREQTYPE)
  1. I $D(ERRORS) S ERRORS("Contact",1)="" D BUILDJSON^SDES2JSON(.RESULT,.ERRORS) Q
  1. ;
  1. D GETCONTACTIEN(.CONTACTIEN,APPTREQTYPE)
  1. I $G(CONTACTIEN)="" S CONTACTS("Contact",1)="",CONTACTS("ContactAttempts")="" D BUILDJSON^SDES2JSON(.RESULT,.CONTACTS) Q
  1. D BLDRETNINFO(.CONTACTS,CONTACTIEN)
  1. D DISPCONTACT(.CONTACTS,CONTACTIEN)
  1. D BUILDJSON^SDESBUILDJSON(.RESULT,.CONTACTS)
  1. Q
  1. ;
  1. ASSIGNREQVAR(REQARRAY,REQTYPE,REQIEN) ;
  1. S REQTYPE=$G(REQARRAY("REQTYPE"))
  1. S REQIEN=$G(REQARRAY("REQUESTIEN"))
  1. Q
  1. ;
  1. DISPCONTACT(RESULT,CONTACTIEN,CLINIC) ;get contact attempt information given contact ien
  1. N ERRORS,CONTMULT,CIENS,CONTDATA,CCNT,CONTACTS,CONTDATE,DTTMENTERED
  1. ;
  1. S CONTACTIEN=$G(CONTACTIEN)
  1. S CCNT=0
  1. S CONTMULT=0 F S CONTMULT=$O(^SDEC(409.86,CONTACTIEN,1,CONTMULT)) Q:'CONTMULT D
  1. .S CIENS=CONTMULT_","_CONTACTIEN_","
  1. .D GETS^DIQ(409.863,CIENS,"**","IE","CONTDATA")
  1. .I '$G(CLINIC) S CLINIC=$$GET1^DIQ(409.86,CONTACTIEN,1,"I")
  1. .S CCNT=CCNT+1
  1. .S CONTDATE=$G(CONTDATA(409.863,CIENS,.01,"I"))
  1. .S CONTDATE=$$FMTISO^SDAMUTDT(CONTDATE,$G(CLINIC))
  1. .S CONTACTS("ContactAttempts",CCNT,"DateTimeOfContact")=CONTDATE
  1. .S CONTACTS("ContactAttempts",CCNT,"Type")=$G(CONTDATA(409.863,CIENS,1,"E"))
  1. .S CONTACTS("ContactAttempts",CCNT,"Comments")=$G(CONTDATA(409.863,CIENS,2,"E"))
  1. .S CONTACTS("ContactAttempts",CCNT,"LeftMessage")=$G(CONTDATA(409.863,CIENS,3,"E"))
  1. .S CONTACTS("ContactAttempts",CCNT,"Sequence")=$G(CONTDATA(409.863,CIENS,4,"E"))
  1. .S CONTACTS("ContactAttempts",CCNT,"EnteredByName")=$G(CONTDATA(409.863,CIENS,5,"E"))
  1. .S CONTACTS("ContactAttempts",CCNT,"EnteredByIEN")=$G(CONTDATA(409.863,CIENS,5,"I"))
  1. .S CONTACTS("ContactAttempts",CCNT,"EnteredBySecID")=$$GET1^DIQ(200,$G(CONTDATA(409.863,CIENS,5,"I")),205.1,"E")
  1. .S DTTMENTERED=$$FMTISO^SDAMUTDT($G(CONTDATA(409.863,CIENS,6,"I")))
  1. .S CONTACTS("ContactAttempts",CCNT,"DateTimeEntered")=DTTMENTERED
  1. .K CONTDATA
  1. I '$D(CONTACTS) S CONTACTS("ContactAttempts",1)=""
  1. M RESULT=CONTACTS
  1. Q
  1. ;
  1. GETSRV(REQTYP,REQIEN) ; Function to get SERVICE based on Request type and ien
  1. N SERVICE S SERVICE=""
  1. I 'REQIEN!(REQTYP="") Q SERVICE
  1. I (REQTYP="A")!(REQTYP="RTC")!(REQTYP="V") D Q SERVICE
  1. . S SERVICE=$$GET1^DIQ(409.85,REQIEN,8.5,"I")
  1. . S SERVICE=SERVICE_"^"_$$GET1^DIQ(409.85,REQIEN,8.5,"E")
  1. I (REQTYP="C")!(REQTYP="P") D Q SERVICE
  1. . S SERVICE=$$GET1^DIQ(123,REQIEN,1,"I")
  1. . S SERVICE=SERVICE_"^"_$$GET1^DIQ(123,REQIEN,1,"E")
  1. Q SERVICE
  1. ;