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

SDESCONTACTS.m

Go to the documentation of this file.
  1. SDESCONTACTS ;ALB/BWF,JAS - VISTA SCHEDULING CONTACT RPCS ;AUG 28, 2024
  1. ;;5.3;Scheduling;**835,837,845,851,887**;Aug 13, 1993;Build 7
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. Q
  1. ; RPC: SDES CONTACT NEW
  1. ; INPUT:
  1. ;CONTACT("CLINIC")=CLINIC IEN
  1. ;- Clinic IEN from the HOSPITAL LOCATION FILE (#44
  1. ;CONTACT("COMMENTS")=COMMENTS
  1. ;- Free text comments (1-80 characters)
  1. ;CONTACT("CONTACTIEN")=CONTACT IEN
  1. ;- IEN of the main contact entry in the SDEC CONTACT file (#409.86)
  1. ;CONTACT("CONTACTTYPE")=CONTACT TYPE
  1. ;- Contact Type (C - Call, L - Letter, E - Email, T - Text, S - Secure messaging)
  1. ;CONTACT("DFN")=PATIENT DFN
  1. ;- Pointer to the PATIENT file (#2)
  1. ;CONTACT("DTTMENTERED")=DATE/TIME ENTERED (ISO FORMAT)
  1. ;- ISO Date/Time
  1. ;CONTACT("DTTMOFCONTACT")=DATE/TIME OF CONTACT (ISO FORMAT)
  1. ;- ISO Date/Time
  1. ;CONTACT("LEFTMESSAGE")=0 for no, 1 for yes
  1. ;CONTACT("PREFDATE")=PREFERRED DATE (ISO FORMAT)
  1. ;- ISO Date
  1. ;CONTACT("REQTYPE")=REQUEST TYPE
  1. ;- Request Type (A - APPT, R - RECALL, C - CONSULT)
  1. ;CONTACT("REQUESTIEN")=REQUEST IEN
  1. ;- Request IEN (Variable pointer) based on the request type
  1. ; A - SDEC APPT REQUEST (#409.85)
  1. ; C - REQUEST/CONSULTATION file (#123)
  1. ; R - RECALL REQUEST file (#403.5)
  1. ;
  1. ADDUPD(RESULT,CONTACT) ;
  1. N ERRORS,DFN,CLINIC,PREFDATE,REQTYPE,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DTTMENTERED,REQUESTIEN,NEWCONTACT
  1. N NEWIEN,SDREQPTR40986,REQTYPE40985,FILERR,FDA,NEWCONTIEN,SUBIENS,CONTACTIEN,SEQUENCE,LEFTMSG,NEWCONTATTMTIEN
  1. S DFN=$G(CONTACT("DFN"))
  1. S CLINIC=$G(CONTACT("CLINIC"))
  1. S PREFDATE=""
  1. S REQTYPE=$G(CONTACT("REQTYPE"))
  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 REQUESTIEN=$G(CONTACT("REQUESTIEN"))
  1. S LEFTMSG=$G(CONTACT("LEFTMESSAGE"))
  1. I LEFTMSG="" S LEFTMSG=0
  1. D VALIDATEDFN^SDESINPUTVALUTL(.ERRORS,DFN)
  1. I CLINIC'="" D VALIDATECLINIC(.ERRORS,CLINIC)
  1. I $D(ERRORS) S ERRORS("Contact",1)="" D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS) Q
  1. D VALREQTYPE(.ERRORS,REQTYPE,"^R^A^RTC^C^P^V^")
  1. I $G(LEFTMSG)'="" D VALLEFTMSG(.ERRORS,LEFTMSG)
  1. S DTTMOFCONTACT=$$VALDATE2^SDESVALUTIL(.ERRORS,DTTMOFCONTACT,CLINIC,389,390)
  1. ; validate text input based on field definition
  1. D VALTEXTINPUT(.ERRORS,COMMENTS,409.863,2,1)
  1. S DTTMENTERED=$$VALDATE2^SDESVALUTIL(.ERRORS,DTTMENTERED,CLINIC,387,388)
  1. I $D(ERRORS) S ERRORS("Contact",1)="" D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS) Q
  1. D VALREQIEN(.ERRORS,REQUESTIEN,REQTYPE)
  1. D VALSETOFCODES(.ERRORS,CONTACTTYPE,409.863,1,"Contact Type")
  1. S CONTACTIEN=$$GETCONTIEN(.ERRORS,REQUESTIEN,REQTYPE)
  1. I $D(ERRORS) S ERRORS("Contact",1)="" D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS) Q
  1. I REQUESTIEN D
  1. .S SDREQPTR40986=""
  1. .I (REQTYPE="A")!(REQTYPE="RTC")!(REQTYPE="V") D
  1. ..Q:$$GET1^DIQ(409.85,REQUESTIEN,.01,"I")'=DFN
  1. ..S REQTYPE40985=$$GET1^DIQ(409.85,REQUESTIEN,4,"I")
  1. ..I REQTYPE40985'="APPT",REQTYPE40985'="RTC",REQTYPE40985'="VETERAN" Q
  1. ..S SDREQPTR40986=REQUESTIEN_";"_"SDEC(409.85,"
  1. ..S PREFDATE=$$GET1^DIQ(409.85,REQUESTIEN,22,"I")
  1. .Q:SDREQPTR40986'=""
  1. .I REQTYPE="C"!(REQTYPE="P") D
  1. ..Q:$$GET1^DIQ(123,REQUESTIEN,.02,"I")'=DFN
  1. ..Q:$$GET1^DIQ(123,REQUESTIEN,13,"I")'=REQTYPE
  1. ..Q:CLINIC'=""&(CLINIC'=$$GET1^DIQ(123,REQUESTIEN,.04,"I"))
  1. ..S SDREQPTR40986=REQUESTIEN_";"_"GMR(123,"
  1. ..I $D(^SDEC(409.87,"B",REQUESTIEN)) S PREFDATE=$$GETPID^SDECCONSJSON(REQUESTIEN)
  1. ..I '$D(^SDEC(409.87,"B",REQUESTIEN))!(PREFDATE="") S PREFDATE=$$GET1^DIQ(123,REQUESTIEN,17,"I")
  1. .Q:SDREQPTR40986'=""
  1. .I REQTYPE="R" D
  1. ..Q:$$GET1^DIQ(403.5,REQUESTIEN,.01,"I")'=DFN
  1. ..I CLINIC'="",$$GET1^DIQ(403.5,REQUESTIEN,4.5,"I")'=CLINIC Q
  1. ..S SDREQPTR40986=REQUESTIEN_";"_"SD(403.5,"
  1. ..S PREFDATE=$$GET1^DIQ(403.5,REQUESTIEN,5,"I")
  1. I $G(SDREQPTR40986)="" D Q
  1. .D ERRLOG^SDESJSON(.ERRORS,394)
  1. .S ERRORS("Contact",1)=""
  1. .D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS)
  1. I $G(PREFDATE)="" D
  1. .D ERRLOG^SDESJSON(.ERRORS,408)
  1. I $D(ERRORS) D Q
  1. .S ERRORS("Contact",1)=""
  1. .D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS)
  1. I 'CONTACTIEN D
  1. .D BLDNEWCONT(.FDA,"+1,",DFN,CLINIC,PREFDATE,REQTYPE,SDREQPTR40986)
  1. .S SUBIENS="+2,+1,"
  1. .D BLDNEWATTMPT(.FDA,SUBIENS,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DUZ,DTTMENTERED,LEFTMSG,1)
  1. ; if there is already a contactien, only build the Date/Time of contact subfile (#409.863) for filing
  1. I CONTACTIEN D
  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,DUZ,DTTMENTERED,LEFTMSG,SEQUENCE)
  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^SDESBUILDJSON(.RESULT,.ERRORS)
  1. I CONTACTIEN D
  1. .S NEWCONTATTMTIEN=$G(NEWIEN(1))
  1. I 'CONTACTIEN D
  1. .S CONTACTIEN=$G(NEWIEN(1))
  1. .S NEWCONTATTMTIEN=$G(NEWIEN(2))
  1. ; Update the preferred date/PID date if it is different than the request pid date
  1. I PREFDATE'=$$GET1^DIQ(409.68,CONTACTIEN,2,"I") D
  1. .S FDA(409.68,CONTACTIEN_",",2)=PREFDATE D FILE^DIE(,"FDA") K FDA
  1. D BLDCONTACT(.NEWCONTACT,CONTACTIEN,CLINIC)
  1. I '$D(NEWCONTACT) S NEWCONTACT("Contact",1)="" D BUILDJSON^SDESBUILDJSON(.RESULT,.CONTACTS) Q
  1. D DISPMULT(.NEWCONTACT,CONTACTIEN,CLINIC)
  1. D BUILDJSON^SDESBUILDJSON(.RESULT,.NEWCONTACT)
  1. Q
  1. ; return the contact ien based on the full pointer reference
  1. GETCONTIEN(ERRORS,REQIEN,REQTYPE) ;
  1. N TRGTFILE,TRGTFLD,FILEROOT,FULLREF,CONTACTDFN,TRGTDFN,CONTACTIEN,TRGTDFNFLD
  1. S TRGTFILE=$S("^A^RTC^V^"[(U_REQTYPE_U):409.85,"^C^P^"[(U_REQTYPE_U):123,REQTYPE="R":403.5,1:"")
  1. S TRGTDFNFLD=$S(TRGTFILE=409.85!(TRGTFILE="403.5"):.01,TRGTFILE=123:.02,1:"")
  1. S FILEROOT=$$ROOT^DILFD(TRGTFILE)
  1. S FULLREF=REQIEN_";"_$P(FILEROOT,U,2)
  1. I '$L(FULLREF) D Q ""
  1. .D ERRLOG^SDESJSON(.ERRORS,391)
  1. ; If this entry doesn't exist, return "", because it is a NEW entry
  1. I '$D(^SDEC(409.86,"REQPTR",FULLREF)) Q ""
  1. S CONTACTIEN=$O(^SDEC(409.86,"REQPTR",FULLREF,"A"),-1)
  1. I 'CONTACTIEN D Q ""
  1. .D ERRLOG^SDESJSON(.ERRORS,392)
  1. S CONTACTDFN=$$GET1^DIQ(409.86,CONTACTIEN,.01,"I")
  1. S TRGTDFN=$$GET1^DIQ(TRGTFILE,REQIEN,TRGTDFNFLD,"I")
  1. ; check for DFN match
  1. I CONTACTDFN'=TRGTDFN D Q ""
  1. .D ERRLOG^SDESJSON(.ERRORS,393)
  1. Q CONTACTIEN
  1. ; add a new entry SDEC CONTACTS file (#409.86)
  1. BLDNEWCONT(FDA,IENS,DFN,CLINIC,PREFDATE,REQTYPE,SDREQPTR40986) ;=
  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)=SDREQPTR40986
  1. Q
  1. ; add a new entry to the Date/time of contact multiple in the SDEC CONTACTS file (#409.86)
  1. BLDNEWATTMPT(FDA,IENS,DTTMOFCONTACT,CONTACTTYPE,COMMENTS,DUZ,DTTMENTERED,LEFTMSG,SEQUENCE) ;
  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(DUZ)
  1. S FDA(409.863,IENS,6)=DTTMENTERED
  1. Q
  1. ;
  1. ; SDES CONTACT DISPLAY SINGLE
  1. DISPLAY(RESULT,REQTYPE,REQIEN) ;
  1. N ERRORS,CONTACTIEN,RECALLP01,APPTREQP01,CONTACTP01,CONSULTP02,VPTR,CONTACTS
  1. S REQTYPE=$G(REQTYPE),REQIEN=$G(REQIEN)
  1. D VALREQTYPE(.ERRORS,REQTYPE,"^R^A^RTC^C^P^V^")
  1. I $D(ERRORS) S ERRORS("Contact",1)="" D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS) Q
  1. D VALREQIEN(.ERRORS,REQIEN,REQTYPE)
  1. I $D(ERRORS) S ERRORS("Contact",1)="" D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS) Q
  1. S CONTACTIEN=$$GETCONTIEN(.ERRORS,REQIEN,REQTYPE)
  1. I 'CONTACTIEN S ERRORS("Contact",1)="" D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS) Q
  1. S VPTR=$$GET1^DIQ(409.86,CONTACTIEN,2.3,"I")
  1. I $P(VPTR,";")'=REQIEN D Q
  1. .S ERRORS("Contact",1)=""
  1. .D ERRLOG^SDESJSON(.ERRORS,394)
  1. .D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS)
  1. D BLDCONTACT(.CONTACTS,CONTACTIEN)
  1. I $D(ERRORS) S ERRORS("Contact",1)="" D BUILDJSON^SDESBUILDJSON(.RESULT,.ERRORS) Q
  1. I '$D(CONTACTS) S CONTACTS("Contact",1)="" D BUILDJSON^SDESBUILDJSON(.RESULT,.CONTACTS) Q
  1. D DISPMULT(.CONTACTS,CONTACTIEN)
  1. D BUILDJSON^SDESBUILDJSON(.RESULT,.CONTACTS)
  1. Q
  1. DISPMULT(RESULT,CONTACTIEN,CLINIC) ;
  1. ; RPC: SDES CONTACT MULTI-DISPLAY
  1. N ERRORS,CONTMULT,CIENS,CONTDATA,CCNT,CONTACTS,CONTDATE,DTTMENTERED
  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","CERR")
  1. .I $D(CERR) K CERR Q
  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")),$G(CLINIC))
  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. BLDCONTACT(RESULT,IEN,CLINIC) ;
  1. N F,IENS,ERR,PREFDATE,STOPIEN
  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^SDES2CONTACTS($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. ; RECALLREQPTR is needed to find the old CONTACT entry tied to a RECALL REMINDER and re-point it to the new entry
  1. ; NEWREQLINK is ONLY passed in if this was a recall request that is being reopened as an appointment request
  1. ; REQIEN is the 409.85 request ien for CONSULTS and APPT type records
  1. UPDCONTSEQ(DFN,REQIEN,NEWREQLINK,RECALLREQPTR) ; update contact attempts main sequence
  1. N IEN40986,REC409860,FOUND,SDECFDA,REC40986PTR
  1. S IEN40986="",FOUND=0
  1. F S IEN40986=$O(^SDEC(409.86,"B",DFN,IEN40986)) Q:IEN40986=""!(FOUND) D
  1. .S REC40986PTR=$P($$GET1^DIQ(409.86,IEN40986,2.3,"I"),";")
  1. .I $G(RECALLREQPTR),$G(RECALLREQPTR)'=+REC40986PTR Q
  1. .I '$G(RECALLREQPTR),REQIEN'=REC40986PTR Q
  1. .K SDECFDA
  1. .S SDECFDA(409.86,IEN40986_",",2.2)=$O(^SDEC(409.86,IEN40986,1,9999),-1)+1
  1. .I $G(NEWREQLINK)]"" D
  1. ..S SDECFDA(409.86,IEN40986_",",2.1)="A"
  1. ..S SDECFDA(409.86,IEN40986_",",2.3)=NEWREQLINK
  1. .D FILE^DIE("","SDECFDA") K SDECFDA
  1. .S FOUND=1
  1. Q
  1. ; validate clinic
  1. VALIDATECLINIC(ERRORS,CLINICIEN) ;
  1. I '$D(^SC(CLINICIEN,0)) D ERRLOG^SDESJSON(.ERRORS,19) Q
  1. Q
  1. ; validate contact request type
  1. VALREQTYPE(ERRORS,REQTYPE,RESTRICT2LIST) ;
  1. N RESULTS,CONT,CODE,INTCODE,FOUND
  1. I REQTYPE="" D ERRLOG^SDESJSON(.ERRORS,395)
  1. D FIELD^DID(409.86,2.1,"","SET OF CODES","RESULTS")
  1. S FOUND=0
  1. F CONT=1:1:$L(RESULTS("SET OF CODES"),";") D Q:FOUND
  1. .S CODE=$P(RESULTS("SET OF CODES"),";",CONT) Q:'$L(CODE)
  1. .S INTCODE=$P(CODE,":")
  1. .I $G(RESTRICT2LIST)]"",RESTRICT2LIST'[(U_INTCODE_U) Q
  1. .I REQTYPE=INTCODE S FOUND=1 Q
  1. I 'FOUND D ERRLOG^SDESJSON(.ERRORS,396)
  1. Q
  1. ; validate request ien
  1. VALREQIEN(ERRORS,REQIEN,REQTYPE) ;
  1. I REQIEN="" D ERRLOG^SDESJSON(.ERRORS,3) Q
  1. I (REQTYPE="A")!(REQTYPE="RTC")!(REQTYPE="V"),'$D(^SDEC(409.85,REQIEN)) D ERRLOG^SDESJSON(.ERRORS,4) Q
  1. I (REQTYPE="C")!(REQTYPE="P"),'$D(^GMR(123,REQIEN)) D ERRLOG^SDESJSON(.ERRORS,4) Q
  1. I REQTYPE="R",'$D(^SD(403.5,REQIEN)) D ERRLOG^SDESJSON(.ERRORS,4) Q
  1. Q
  1. ; validate contact ien
  1. VALIDATECONTIEN(ERRORS,CONTACTIEN) ;
  1. I CONTACTIEN="" D ERRLOG^SDESJSON(.ERRORS,398) Q
  1. I '$D(^SDEC(409.86,CONTACTIEN)) D ERRLOG^SDESJSON(.ERRORS,399) Q
  1. Q
  1. VALCONTTYPE(ERRORS,TYPE) ;
  1. N RESULTS,CONT,CODE,INTCODE,FOUND,CODEINC,CODESET,FULLCODE
  1. I TYPE="" D ERRLOG^SDESJSON(.ERRORS,400)
  1. D FIELD^DID(409.863,1,"","SET OF CODES","RESULTS")
  1. S CODESET=$G(RESULTS("SET OF CODES"))
  1. S FOUND=0
  1. F CODEINC=1:1:$L(CODESET,";") D Q:FOUND
  1. .S FULLCODE=$P(CODESET,";",CODEINC)
  1. .S INTCODE=$P(FULLCODE,":")
  1. .Q:INTCODE'=TYPE
  1. .S FOUND=1
  1. I 'FOUND D ERRLOG^SDESJSON(.ERRORS,401)
  1. Q
  1. ; FILE - file where the set of codes field lives
  1. ; FLD - set of codes field
  1. ; VALUE - value to validate
  1. ; TEXT - meaningful sentence predicate to return. This will be proceeded by 'Missing set of codes value' or "Invalid set of codes value"
  1. ; - (i.e, contact attempt type, appointment type)
  1. VALSETOFCODES(ERRORS,VALUE,FILE,FLD,TEXT) ;
  1. N RESULTS,CONT,CODE,INTCODE,FOUND,RESULTS,ITEM
  1. I VALUE="" D ERRLOG^SDESJSON(.ERRORS,52,"Missing set of codes value: "_TEXT_".") Q
  1. D FIELD^DID(FILE,FLD,"","SET OF CODES","RESULTS")
  1. S FOUND=0
  1. F ITEM=1:1:$L(RESULTS("SET OF CODES"),";") D Q:FOUND
  1. .S CODE=$P(RESULTS("SET OF CODES"),";",ITEM) Q:'$L(CODE)
  1. .S INTCODE=$P(CODE,":")
  1. .I VALUE=INTCODE S FOUND=1 Q
  1. I 'FOUND D ERRLOG^SDESJSON(.ERRORS,52,"Invalid set of codes value: "_TEXT_": '"_VALUE_"'.")
  1. Q
  1. VALTEXTINPUT(ERRORS,COMMENTS,FILE,FLD,REQUIRED) ;
  1. N X,INPUTCHK,RESULTS,LABEL,HELPTEXT
  1. D FIELD^DID(FILE,FLD,"","INPUT TRANSFORM;HELP-PROMPT;LABEL","RESULTS")
  1. S INPUTCHK=$G(RESULTS("INPUT TRANSFORM"))
  1. S HELPTEXT=$G(RESULTS("HELP-PROMPT"))
  1. S LABEL=$G(RESULTS("LABEL"))
  1. I $G(REQUIRED),'$L($G(COMMENTS)) D ERRLOG^SDESJSON(.ERRORS,52,"Missing field: "_$S($L($G(LABEL)):LABEL_".",1:"Unknown Text Field.")) Q
  1. S X=COMMENTS
  1. X INPUTCHK
  1. I '$D(X) D ERRLOG^SDESJSON(.ERRORS,52,HELPTEXT)
  1. Q
  1. VALCONTACTIEN(ERRORS,IEN) ;
  1. I 'IEN D ERRLOG^SDESJSON(.ERRORS,398) Q
  1. I '$D(^SDEC(409.86,IEN)) D ERRLOG^SDESJSON(.ERRORS,399)
  1. Q
  1. VALLEFTMSG(ERRORS,LEFTMSG) ;
  1. I LEFTMSG'=0,LEFTMSG'=1 D ERRLOG^SDESJSON(.ERRORS,402)
  1. Q