SDESCREATEAPPREQ ;ALB/BLB,MGD,BLB,BWF,MGD,LAB,MGD,JAS,BLB - SCHEDULING APPOINTMENT REQUEST RPCS; May 25, 2023@09:50
;;5.3;Scheduling;**823,826,833,835,837,843,844,846,847**;Aug 13, 1993;Build 4
;;Per VHA Directive 6402, this routine should not be modified
;
Q
;
; RPC: SDES CREATE APPT REQ
;
CREATEREQUEST(JSONRETURN,REQUEST) ;
N REQUESTIEN,ERRORS,RETURN,ISDFNVALID,ISDATETIMEVALID,ISMODALINVALID,ISEASVALID,INSTITUTIONIEN
N ISCLINSTOPVALID,ISREQUESTBYVALID,ISPROVIDERVALID,ISMODALITYVALID,ISPIDVALID,ISPRIGROUPVALID
N ISREQTYPEVALID,ISPRIORITYVALID,ISSERVCONNVALID,ISAPPTTYPEVALID,ISAPPTNAMEVALID,ISPATSTATVALID
N ISDATEPREFVALID,ISMTRCDATAVALID,ISCPRSDATAVALID
;
D VALIDATE(.REQUEST,.INSTITUTIONIEN,.ERRORS)
;
I $D(ERRORS) M RETURN=ERRORS D BUILDJSON(.JSONRETURN,.RETURN) Q
;
D CONVERTSTOPCODE(.REQUEST)
;
S REQUESTIEN=$$BUILDER(.REQUEST,INSTITUTIONIEN)
;
S RETURN("Request","IEN")=$G(REQUESTIEN)
;
D BUILDJSON(.JSONRETURN,.RETURN)
Q
;
VALIDATE(REQUEST,INSTITUTIONIEN,ERRORS) ;
;
S ISDFNVALID=$$VALIDATEDFN(.ERRORS,$G(REQUEST("DFN")))
;
S ISDATETIMEVALID=$$VALIDATEDATETIME(.ERRORS,.REQUEST)
;
S ISREQTYPEVALID=$$VALIDATEREQTYPE(.ERRORS,$G(REQUEST("REQUEST SUB TYPE")))
;
S INSTITUTIONIEN=$$STATIONTOINST(.ERRORS,$G(REQUEST("STATION NUMBER")),$G(REQUEST("INSTITUTION NAME")))
;
S ISCLINSTOPVALID=$$VALIDATECLINSTOP(.ERRORS,$G(REQUEST("CLINIC IEN")),$G(REQUEST("STOP CODE")),$G(REQUEST("SECONDARY STOP CODE")))
;
S ISREQUESTBYVALID=$$VALIDATEREQBY(.ERRORS,$G(REQUEST("REQUESTED BY")))
;
I $G(REQUEST("REQUESTED BY"))=1 S ISPROVIDERVALID=$$VALIDATEPROVIDER(.ERRORS,$G(REQUEST("PROVIDER IEN")))
;
I $G(REQUEST("REQUESTED BY"))'=1 S REQUEST("PROVIDER IEN")=""
;
S ISPIDVALID=$$VALIDATEPID(.ERRORS,.REQUEST)
;
S ISEASVALID=$$VALIDATEEAS(.ERRORS,$G(REQUEST("EAS")))
;
I $L($G(REQUEST("MODALITY"))) S ISMODALINVALID=$$VALIDATEMODALITY^SDESINPUTVALUTL(.ERRORS,$G(REQUEST("MODALITY")))
;
I $L($G(REQUEST("PRIORITY"))) S ISPRIORITYVALID=$$VALIDATEPRIORITY(.ERRORS,$G(REQUEST("PRIORITY")))
;
I $L($G(REQUEST("PRIORITY GROUP"))) S ISPRIGROUPVALID=$$VALIDATEPRIGROUP(.ERRORS,$G(REQUEST("PRIORITY GROUP")))
;
I $L($G(REQUEST("SERVICE CONNECTED"))) S ISSERVCONNVALID=$$VALIDATESERVCONN(.ERRORS,$G(REQUEST("SERVICE CONNECTED")),$G(REQUEST("SERVICE CONNECTED PERCENTAGE")))
;
N SDIEN,SDNAME
S SDIEN=$G(REQUEST("APPOINTMENT TYPE IEN")),SDNAME=$G(REQUEST("APPOINTMENT TYPE NAME"))
S ISAPPTTYPEVALID=$$VALIDATEAPPTTYPE(.ERRORS,.SDIEN,SDNAME)
S REQUEST("APPOINTMENT TYPE IEN")=SDIEN
;
I $L($G(REQUEST("PATIENT STATUS"))) S ISPATSTATVALID=$$VALIDATEPATSTAT(.ERRORS,$G(REQUEST("PATIENT STATUS")))
;
I $D(REQUEST("PATIENT PREFERRED START DATE")),$D(REQUEST("PATIENT PREFERRED END DATE")) D VALIDATEDATEPREF(.ERRORS,.REQUEST)
;
I $D(REQUEST("MRTC")) D VALIDATEMRTCDATA(.ERRORS,.REQUEST,$G(REQUEST("MRTC","PARENT REQUEST")),$G(REQUEST("MRTC","NEEDED")),$G(REQUEST("MRTC","DAYS BETWEEN APPTS")),$G(REQUEST("MRTC","HOW MANY NEEDED")))
;
I $G(REQUEST("MRTC","PARENT REQUEST")),$G(REQUEST("DFN")) S REQUEST("MRTC","CHILD SEQUENCE NUMBER")=$$MRTCHILDSEQUENCE($G(REQUEST("MRTC","PARENT REQUEST")),$G(REQUEST("DFN")))
;
Q
;
CONVERTSTOPCODE(REQUEST) ;
I $D(REQUEST("STOP CODE")) S REQUEST("STOP CODE")=$$FIND1^DIC(40.7,"","X",REQUEST("STOP CODE"),"C")
I $D(REQUEST("SECONDARY STOP CODE")) S REQUEST("SECONDARY STOP CODE")=$$FIND1^DIC(40.7,"","X",REQUEST("SECONDARY STOP CODE"),"C")
Q
;
BUILDER(REQUEST,INSTITUTIONIEN) ;
N FDA,RETURNIEN
S FDA(409.85,"+1,",.01)=$G(REQUEST("DFN"))
S FDA(409.85,"+1,",.02)=$G(REQUEST("PATIENT STATUS"))
S FDA(409.85,"+1,",1)=$G(REQUEST("CREATE DATE"))
S FDA(409.85,"+1,",2)=$G(INSTITUTIONIEN)
S FDA(409.85,"+1,",4)=$G(REQUEST("REQUEST SUB TYPE"))
S FDA(409.85,"+1,",5)=$G(REQUEST("VAOS GUID"))
S FDA(409.85,"+1,",6)=$G(REQUEST("MODALITY"))
S FDA(409.85,"+1,",8)=$G(REQUEST("CLINIC IEN"))
S FDA(409.85,"+1,",8.5)=$G(REQUEST("STOP CODE"))
S FDA(409.85,"+1,",8.6)=$G(REQUEST("SECONDARY STOP CODE"))
S FDA(409.85,"+1,",8.7)=$G(REQUEST("APPOINTMENT TYPE IEN"))
S FDA(409.85,"+1,",9)=$G(DUZ)
S FDA(409.85,"+1,",9.5)=$$NOW^XLFDT
S FDA(409.85,"+1,",10)=$G(REQUEST("PRIORITY"))
S FDA(409.85,"+1,",10.5)=$G(REQUEST("PRIORITY GROUP"))
S FDA(409.85,"+1,",11)=$G(REQUEST("REQUESTED BY"))
S FDA(409.85,"+1,",12)=$G(REQUEST("PROVIDER IEN"))
S FDA(409.85,"+1,",14)=$G(REQUEST("SERVICE CONNECTED PERCENTAGE"))
S FDA(409.85,"+1,",15)=$G(REQUEST("SERVICE CONNECTED"))
S FDA(409.85,"+1,",22)=$G(REQUEST("PATIENT INDICATED DATE"))
S FDA(409.85,"+1,",23)="O"
S FDA(409.85,"+1,",25)=$G(REQUEST("REQUEST COMMENT"))
S FDA(409.85,"+1,",41)=$G(REQUEST("MRTC","NEEDED"))
S FDA(409.85,"+1,",42)=$G(REQUEST("MRTC","DAYS BETWEEN APPTS"))
S FDA(409.85,"+1,",43)=$G(REQUEST("MRTC","HOW MANY NEEDED"))
S FDA(409.85,"+1,",43.1)=$G(REQUEST("MRTC","CHILD SEQUENCE NUMBER"))
S FDA(409.85,"+1,",43.8)=$G(REQUEST("MRTC","PARENT REQUEST"))
S FDA(409.85,"+1,",46)=$G(REQUEST("CPRS ORDER NUMBER"))
S FDA(409.85,"+1,",47)=$S($G(REQUEST("CPRS TIME SENSITIVE"))="YES":"1",$G(REQUEST("CPRS TIME SENSITIVE"))="NO":"0",1:"")
S FDA(409.85,"+1,",49)=$G(REQUEST("PID CHANGE ALLOWED"))
S FDA(409.85,"+1,",100)=$G(REQUEST("EAS"))
;
D UPDATE^DIE("","FDA","RETURNIEN") K FDA
S REQUESTIEN=$G(RETURNIEN(1))
;
D ADDPIDHISTORY(REQUESTIEN,$G(REQUEST("PATIENT INDICATED DATE")))
;
I $D(REQUEST("CPRS PREREQUISITES")) D BUILDCPRSPREREQS(.REQUEST,REQUESTIEN)
;
I $D(REQUEST("MRTC","PARENT REQUEST"))&($G(REQUESTIEN)'="") D ADDMRTCMULT(REQUESTIEN,REQUEST("MRTC","PARENT REQUEST"),REQUEST("PATIENT INDICATED DATE"))
;
I ($D(REQUEST("PATIENT COMMENT")))!($D(REQUEST("PATIENT PREFERRED START DATE"))) D BUILDCOMMENTS(.REQUEST,REQUESTIEN)
;
D AUDIT(REQUESTIEN,$G(REQUEST("CLINIC IEN")),$G(REQUEST("STOP CODE")))
;
Q REQUESTIEN
;
ADDPIDHISTORY(REQUESTIEN,PID) ;
N PIDFDA,FDA
;
I PID=$$GET1^DIQ(409.854,$O(^SDEC(409.85,REQUESTIEN,10,"A"),-1)_","_REQUESTIEN_",",1,"I") Q
;
S PIDFDA(409.854,"+1,"_REQUESTIEN_",",.01)=$$NOW^XLFDT
S PIDFDA(409.854,"+1,"_REQUESTIEN_",",1)=PID
S PIDFDA(409.854,"+1,"_REQUESTIEN_",",2)=$$GET1^DIQ(200,$G(DUZ),.01,"E")
D UPDATE^DIE(,"PIDFDA") K PIDFDA
;
S FDA(409.85,REQUESTIEN_",",22)=PID
D FILE^DIE(,"FDA") K FDA
Q
;
ADDMRTCMULT(CHILD,PARENT,PATIENTINDDATE) ;Update the MRTC subfiles
D ADDMRTCLINKS(CHILD,PARENT)
D ADDMRTCPIDLINKS(PARENT,PATIENTINDDATE)
Q
;
ADDMRTCLINKS(CHILD,PARENT) ;
N FDA
Q:$O(^SDEC(409.85,PARENT,2,"B",CHILD))
S FDA(409.852,"+1,"_PARENT_",",.01)=CHILD
D UPDATE^DIE(,"FDA") K FDA
Q
;
ADDMRTCPIDLINKS(PARENT,PATIENTINDDATE) ;
N SDFDA
Q:$O(^SDEC(409.85,PARENT,5,"B",PATIENTINDDATE,0))
S SDFDA(409.851,"+1,"_PARENT_",",.01)=PATIENTINDDATE
D UPDATE^DIE("","SDFDA") K SDFDA
Q
;
MRTCHILDSEQUENCE(PARENTREQUESTIEN,DFN) ; return next sequence number for child mrtc
N COUNT,REQUESTIEN,IENS,NEXTSEQUENCENUM,CHILD,LASTCHILD
S REQUESTIEN=0,COUNT=0,LASTCHILD=""
F S REQUESTIEN=$O(^SDEC(409.85,"B",DFN,REQUESTIEN)) Q:'REQUESTIEN D
.I $$GET1^DIQ(409.85,REQUESTIEN,43.8,"I")=PARENTREQUESTIEN D
..S COUNT=COUNT+1
..S CHILD(REQUESTIEN)=COUNT
I $D(CHILD) D
.S LASTCHILD=$O(CHILD(LASTCHILD),-1)
.S NEXTSEQUENCENUM=$G(CHILD($G(LASTCHILD)))+1
I '$D(CHILD) S NEXTSEQUENCENUM=1
Q NEXTSEQUENCENUM
;
AUDIT(REQUESTIEN,CLINICIEN,STOPCODE) ;
N FDA
S FDA(409.8545,"+1,"_REQUESTIEN_",",.01)=$$NOW^XLFDT
S FDA(409.8545,"+1,"_REQUESTIEN_",",1)=$G(DUZ)
S FDA(409.8545,"+1,"_REQUESTIEN_",",2)=$G(CLINICIEN)
S FDA(409.8545,"+1,"_REQUESTIEN_",",3)=$G(STOPCODE)
D UPDATE^DIE("","FDA") K FDA
Q
N REQCOMMS,NUM,NUM2,DONE,PREFDATES,PATCOMMS,RANGE,COUNT
S NUM=0
;
I $D(REQUEST("PATIENT COMMENT")) D
.D WP^SDECUTL(.PATCOMMS,$G(REQUEST("PATIENT COMMENT")))
.D WP^DIE(409.85,REQUESTIEN_",",60,"","PATCOMMS")
;
I '$G(REQUEST("PATIENT PREFERRED START DATE",1)) Q
;
S NUM=0,COUNT="",COUNT=$O(REQUEST("PATIENT PREFERRED START DATE",COUNT),-1)
F NUM=1:1:COUNT D
.S STARTDATE=$G(REQUEST("PATIENT PREFERRED START DATE",NUM))
.S ENDDATE=$G(REQUEST("PATIENT PREFERRED END DATE",NUM))
.S STARTDATE=$$ISOTFM^SDAMUTDT(STARTDATE),STARTDATE=$$FMTE^XLFDT(STARTDATE)
.S ENDDATE=$$ISOTFM^SDAMUTDT(ENDDATE),ENDDATE=$$FMTE^XLFDT(ENDDATE)
.S RANGE(NUM)="Patient preferred date range #"_NUM_": "_STARTDATE_" to "_ENDDATE
D WP^DIE(409.85,REQUESTIEN_",",60,"A","RANGE")
Q
;
BUILDCPRSPREREQS(REQUEST,REQUESTIEN) ;
N NUM,FDA
S NUM=0
F S NUM=$O(REQUEST("CPRS PREREQUISITES",NUM)) Q:'NUM D
.S FDA(409.8548,"+1,"_REQUESTIEN_",",.01)=$G(REQUEST("CPRS PREREQUISITES",NUM))
.D UPDATE^DIE(,"FDA") K FDA
Q
;
VALIDATEDFN(ERRORS,DFN) ;
I DFN="" D ERRLOG^SDESJSON(.ERRORS,1) Q 0
I DFN'="",'$D(^DPT(DFN,0)) D ERRLOG^SDESJSON(.ERRORS,2) Q 0
Q 1
;
VALIDATEDATETIME(ERRORS,REQUEST) ;
I $G(REQUEST("CREATE DATE"))="" D Q 1
. S REQUEST("CREATE DATE")=DT
. N NOWDT S NOWDT=$$FMTISO^SDAMUTDT($$NOW^XLFDT) Q:NOWDT=-1
. S REQUEST("CREATE DATE")=$P($$ISOTFM^SDAMUTDT(NOWDT,$G(REQUEST("CLINIC IEN"))),".")
I $G(REQUEST("CREATE DATE"))'="" S REQUEST("CREATE DATE")=$$ISOTFM^SDAMUTDT($G(REQUEST("CREATE DATE")))
I $G(REQUEST("CREATE DATE"))=-1 D ERRLOG^SDESJSON(.ERRORS,49) Q 0
Q 1
;
VALIDATEREQTYPE(ERRORS,REQTYPE) ;
I REQTYPE="" D ERRLOG^SDESJSON(.ERRORS,60) Q 0
I REQTYPE'="",REQTYPE'="APPT",REQTYPE'="MOBILE",REQTYPE'="RTC",REQTYPE'="VETERAN",REQTYPE'="W2VA" D ERRLOG^SDESJSON(.ERRORS,61) Q 0
Q 1
;
STATIONTOINST(ERRORS,STATIONNUM,INSTNAME) ; station number has precedence over institution name
N INSTITUTIONIEN
I STATIONNUM="",INSTNAME="" D ERRLOG^SDESJSON(.ERRORS,204) Q 0
I STATIONNUM="",INSTNAME'="" S INSTITUTIONIEN=$$FIND1^DIC(4,"","X",INSTNAME,"B") I 'INSTITUTIONIEN D ERRLOG^SDESJSON(.ERRORS,205) Q 0
I STATIONNUM'="" S INSTITUTIONIEN=$$FIND1^DIC(4,"","X",STATIONNUM,"D") I 'INSTITUTIONIEN D ERRLOG^SDESJSON(.ERRORS,197) Q 0
Q INSTITUTIONIEN
;
VALIDATECLINSTOP(ERRORS,CLINICIEN,STOP,SECSTOP) ;
N RESTYPE
S STOP=$G(STOP),SECSTOP=$G(SECSTOP),REQTYPE=$G(REQTYPE)
I CLINICIEN'="",'$D(^SC(CLINICIEN,0)) D ERRLOG^SDESJSON(.ERRORS,19) Q 0
;
I STOP=900 D ERRLOG^SDESJSON(.ERRORS,273) Q 0
I STOP'="" S STOP=$$FIND1^DIC(40.7,"","X",STOP,"C") I 'STOP D ERRLOG^SDESJSON(.ERRORS,270) Q 0
S RESTYPE=$$GET1^DIQ(40.7,STOP,5,"I")
I STOP'="",RESTYPE'="P",RESTYPE'="E" D ERRLOG^SDESJSON(.ERRORS,287) Q 0
;
I SECSTOP=900 D ERRLOG^SDESJSON(.ERRORS,273) Q 0
I SECSTOP'="" S SECSTOP=$$FIND1^DIC(40.7,"","X",SECSTOP,"C") I 'SECSTOP D ERRLOG^SDESJSON(.ERRORS,271) Q 0
S RESTYPE=$$GET1^DIQ(40.7,SECSTOP,5,"I")
I SECSTOP'="",RESTYPE'="S",RESTYPE'="E" D ERRLOG^SDESJSON(.ERRORS,288) Q 0
;
I SECSTOP'="",STOP="" D ERRLOG^SDESJSON(.ERRORS,234) Q 0
I CLINICIEN="",STOP="" D ERRLOG^SDESJSON(.ERRORS,63) Q 0
I STOP'="",CLINICIEN'="" D ERRLOG^SDESJSON(.ERRORS,202) Q 0
I SECSTOP'="",CLINICIEN'="" D ERRLOG^SDESJSON(.ERRORS,202) Q 0
Q 1
;
VALIDATEREQBY(ERRORS,REQUESTEDBY) ;
I REQUESTEDBY="" D ERRLOG^SDESJSON(.ERRORS,62) Q 0
I REQUESTEDBY'="",REQUESTEDBY'="PATIENT",REQUESTEDBY'="PROVIDER" D ERRLOG^SDESJSON(.ERRORS,198)
S REQUEST("REQUESTED BY")=$S(REQUESTEDBY="PATIENT":2,REQUESTEDBY="PROVIDER":1,1:"")
I $D(ERRORS) Q 0
Q 1
;
VALIDATEPROVIDER(ERRORS,PROVIDERIEN) ;
I PROVIDERIEN="" D ERRLOG^SDESJSON(.ERRORS,53) Q 0
I PROVIDERIEN'="",'$D(^VA(200,PROVIDERIEN,0)) D ERRLOG^SDESJSON(.ERRORS,54) Q 0
Q 1
;
VALIDATEPID(ERRORS,REQUEST) ;
I $G(REQUEST("PATIENT INDICATED DATE"))="" D ERRLOG^SDESJSON(.ERRORS,159) Q 0
I $G(REQUEST("PATIENT INDICATED DATE"))'="" S REQUEST("PATIENT INDICATED DATE")=$$ISOTFM^SDAMUTDT($G(REQUEST("PATIENT INDICATED DATE")))
I $G(REQUEST("PATIENT INDICATED DATE"))=-1 D ERRLOG^SDESJSON(.ERRORS,160) Q 0
Q 1
;
VALIDATEEAS(ERRORS,EAS) ;
I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL($G(EAS))
I $P($G(EAS),U)=-1 D ERRLOG^SDESJSON(.ERRORS,142) Q 0
Q 1
;
VALIDATEPRIORITY(ERRORS,PRIORITY) ;
I PRIORITY'="ASAP",PRIORITY'="FUTURE" D ERRLOG^SDESJSON(.ERRORS,211) Q 0
S REQUEST("PRIORITY")=$S(PRIORITY="ASAP":"A",PRIORITY="FUTURE":"F",1:"")
Q 1
;
VALIDATEPRIGROUP(ERRORS,GROUP) ;
N NUM,FOUND,GCHECK
S NUM=0,FOUND=0
F NUM=1:1:8 D
.S GCHECK="GROUP "_NUM
.I GROUP=GCHECK S REQUEST("PRIORITY GROUP")=NUM S FOUND=1
I FOUND=0 D ERRLOG^SDESJSON(.ERRORS,199) Q 0
Q 1
;
VALIDATESERVCONN(ERRORS,SERVCONN,SERVCONNPERC) ;
I $D(SERVCONN),SERVCONN'="YES",SERVCONN'="NO" D ERRLOG^SDESJSON(.ERRORS,200) Q 0
I $G(SERVCONNPERC),'+SERVCONNPERC!(SERVCONNPERC'>0)!(SERVCONNPERC'<101) D ERRLOG^SDESJSON(.ERRORS,201) Q 0
I $G(SERVCONN)="NO",+$G(SERVCONNPERC) D ERRLOG^SDESJSON(.ERRORS,232) Q 0
S REQUEST("SERVICE CONNECTED")=$S(SERVCONN="YES":"1",SERVCONN="NO":"0",1:"")
Q 1
;
VALIDATEAPPTTYPE(ERRORS,APPTTYPEIEN,APPTTYPENAME) ;
I APPTTYPEIEN="",APPTTYPENAME="" D ERRLOG^SDESJSON(.ERRORS,306) Q 0
N APPTTYPIEN
S APPTTYPIEN=0
I $G(APPTTYPENAME)'="" D I 'APPTTYPIEN Q 0
. S APPTTYPIEN=$$FIND1^DIC(409.1,"","X",APPTTYPENAME,"B")
. I 'APPTTYPIEN D ERRLOG^SDESJSON(.ERRORS,180)
I APPTTYPIEN S APPTTYPEIEN=APPTTYPIEN Q 1
I APPTTYPEIEN'="",'$D(^SD(409.1,APPTTYPEIEN,0)) D ERRLOG^SDESJSON(.ERRORS,180)
Q 0
;
VALIDATEPATSTAT(ERRORS,PATIENTSTATUS) ;
I PATIENTSTATUS'="NEW",PATIENTSTATUS'="ESTABLISHED" D ERRLOG^SDESJSON(.ERRORS,203) Q 0
S REQUEST("PATIENT STATUS")=$S(PATIENTSTATUS="NEW":"N",PATIENTSTATUS="ESTABLISHED":"E",1:"")
Q 1
;
VALIDATEDATEPREF(ERRORS,REQUEST) ;
N ARYIEN,ARYIEN2,DATE,ERR,STARTDATE,ENDDATE
S ARYIEN=0,ERR=0
F S ARYIEN=$O(REQUEST("PATIENT PREFERRED START DATE",ARYIEN)) Q:'ARYIEN!($G(ERR)) D
.S STARTDATE=$G(REQUEST("PATIENT PREFERRED START DATE",ARYIEN))
.S STARTDATE=$$ISOTFM^SDAMUTDT(STARTDATE)
.I STARTDATE=-1!($L(STARTDATE,".")=1) S ERR=1 D ERRLOG^SDESJSON(.ERRORS,206) Q
.S ARYIEN2=0
.F S ARYIEN2=$O(REQUEST("PATIENT PREFERRED END DATE",ARYIEN2)) Q:'ARYIEN2 D
..S ENDDATE=$G(REQUEST("PATIENT PREFERRED END DATE",ARYIEN2))
..S ENDDATE=$$ISOTFM^SDAMUTDT(ENDDATE)
..I ENDDATE=-1!($L(ENDDATE,".")=1) S ERR=1 D ERRLOG^SDESJSON(.ERRORS,206) Q
I $G(REQUEST("PATIENT PREFERRED START DATE",1)),'$G(REQUEST("PATIENT PREFERRED END DATE",1)) D ERRLOG^SDESJSON(.ERRORS,195) Q 0
I $G(REQUEST("PATIENT PREFERRED START DATE",2)),'$G(REQUEST("PATIENT PREFERRED END DATE",2)) D ERRLOG^SDESJSON(.ERRORS,195) Q 0
I $G(REQUEST("PATIENT PREFERRED START DATE",3)),'$G(REQUEST("PATIENT PREFERRED END DATE",3)) D ERRLOG^SDESJSON(.ERRORS,195) Q 0
Q
;
VALIDATEMRTCDATA(ERRORS,REQUEST,PARENTREQUEST,NEEDED,DAYSBETWEEN,HOWMANY) ;
N NUM,DONE
I NEEDED'="",NEEDED'="YES",NEEDED'="NO" D ERRLOG^SDESJSON(.ERRORS,208) Q
S REQUEST("MRTC","NEEDED")=$S(NEEDED="YES":1,NEEDED="NO":0,1:"")
I REQUEST("MRTC","NEEDED")'=1 D Q ""
.I $G(PARENTREQUEST)!($G(DAYSBETWEEN))!($G(HOWMANY)) D ERRLOG^SDESJSON(.ERRORS,233)
Q 1
;
;
I PARENTREQUEST'="",('$D(^SDEC(409.85,PARENTREQUEST)))!(PARENTREQUEST=0) D ERRLOG^SDESJSON(.ERRORS,207)
;
I DAYSBETWEEN'="" D
.I '+DAYSBETWEEN!(DAYSBETWEEN'<366) D ERRLOG^SDESJSON(.ERRORS,209)
;
I HOWMANY'="" D
.I '+HOWMANY!(HOWMANY'<101) D ERRLOG^SDESJSON(.ERRORS,210)
Q
;
BUILDJSON(JSONRETURN,RETURN) ;.
N JSONERROR
D ENCODE^XLFJSON("RETURN","JSONRETURN","JSONERR")
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDESCREATEAPPREQ 15339 printed Sep 14, 2023@23:25:40 Page 2
SDESCREATEAPPREQ ;ALB/BLB,MGD,BLB,BWF,MGD,LAB,MGD,JAS,BLB - SCHEDULING APPOINTMENT REQUEST RPCS; May 25, 2023@09:50
+1 ;;5.3;Scheduling;**823,826,833,835,837,843,844,846,847**;Aug 13, 1993;Build 4
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;
+4 QUIT
+5 ;
+6 ; RPC: SDES CREATE APPT REQ
+7 ;
CREATEREQUEST(JSONRETURN,REQUEST) ;
+1 NEW REQUESTIEN,ERRORS,RETURN,ISDFNVALID,ISDATETIMEVALID,ISMODALINVALID,ISEASVALID,INSTITUTIONIEN
+2 NEW ISCLINSTOPVALID,ISREQUESTBYVALID,ISPROVIDERVALID,ISMODALITYVALID,ISPIDVALID,ISPRIGROUPVALID
+3 NEW ISREQTYPEVALID,ISPRIORITYVALID,ISSERVCONNVALID,ISAPPTTYPEVALID,ISAPPTNAMEVALID,ISPATSTATVALID
+4 NEW ISDATEPREFVALID,ISMTRCDATAVALID,ISCPRSDATAVALID
+5 ;
+6 DO VALIDATE(.REQUEST,.INSTITUTIONIEN,.ERRORS)
+7 ;
+8 IF $DATA(ERRORS)
MERGE RETURN=ERRORS
DO BUILDJSON(.JSONRETURN,.RETURN)
QUIT
+9 ;
+10 DO CONVERTSTOPCODE(.REQUEST)
+11 ;
+12 SET REQUESTIEN=$$BUILDER(.REQUEST,INSTITUTIONIEN)
+13 ;
+14 SET RETURN("Request","IEN")=$GET(REQUESTIEN)
+15 ;
+16 DO BUILDJSON(.JSONRETURN,.RETURN)
+17 QUIT
+18 ;
VALIDATE(REQUEST,INSTITUTIONIEN,ERRORS) ;
+1 ;
+2 SET ISDFNVALID=$$VALIDATEDFN(.ERRORS,$GET(REQUEST("DFN")))
+3 ;
+4 SET ISDATETIMEVALID=$$VALIDATEDATETIME(.ERRORS,.REQUEST)
+5 ;
+6 SET ISREQTYPEVALID=$$VALIDATEREQTYPE(.ERRORS,$GET(REQUEST("REQUEST SUB TYPE")))
+7 ;
+8 SET INSTITUTIONIEN=$$STATIONTOINST(.ERRORS,$GET(REQUEST("STATION NUMBER")),$GET(REQUEST("INSTITUTION NAME")))
+9 ;
+10 SET ISCLINSTOPVALID=$$VALIDATECLINSTOP(.ERRORS,$GET(REQUEST("CLINIC IEN")),$GET(REQUEST("STOP CODE")),$GET(REQUEST("SECONDARY STOP CODE")))
+11 ;
+12 SET ISREQUESTBYVALID=$$VALIDATEREQBY(.ERRORS,$GET(REQUEST("REQUESTED BY")))
+13 ;
+14 IF $GET(REQUEST("REQUESTED BY"))=1
SET ISPROVIDERVALID=$$VALIDATEPROVIDER(.ERRORS,$GET(REQUEST("PROVIDER IEN")))
+15 ;
+16 IF $GET(REQUEST("REQUESTED BY"))'=1
SET REQUEST("PROVIDER IEN")=""
+17 ;
+18 SET ISPIDVALID=$$VALIDATEPID(.ERRORS,.REQUEST)
+19 ;
+20 SET ISEASVALID=$$VALIDATEEAS(.ERRORS,$GET(REQUEST("EAS")))
+21 ;
+22 IF $LENGTH($GET(REQUEST("MODALITY")))
SET ISMODALINVALID=$$VALIDATEMODALITY^SDESINPUTVALUTL(.ERRORS,$GET(REQUEST("MODALITY")))
+23 ;
+24 IF $LENGTH($GET(REQUEST("PRIORITY")))
SET ISPRIORITYVALID=$$VALIDATEPRIORITY(.ERRORS,$GET(REQUEST("PRIORITY")))
+25 ;
+26 IF $LENGTH($GET(REQUEST("PRIORITY GROUP")))
SET ISPRIGROUPVALID=$$VALIDATEPRIGROUP(.ERRORS,$GET(REQUEST("PRIORITY GROUP")))
+27 ;
+28 IF $LENGTH($GET(REQUEST("SERVICE CONNECTED")))
SET ISSERVCONNVALID=$$VALIDATESERVCONN(.ERRORS,$GET(REQUEST("SERVICE CONNECTED")),$GET(REQUEST("SERVICE CONNECTED PERCENTAGE")))
+29 ;
+30 NEW SDIEN,SDNAME
+31 SET SDIEN=$GET(REQUEST("APPOINTMENT TYPE IEN"))
SET SDNAME=$GET(REQUEST("APPOINTMENT TYPE NAME"))
+32 SET ISAPPTTYPEVALID=$$VALIDATEAPPTTYPE(.ERRORS,.SDIEN,SDNAME)
+33 SET REQUEST("APPOINTMENT TYPE IEN")=SDIEN
+34 ;
+35 IF $LENGTH($GET(REQUEST("PATIENT STATUS")))
SET ISPATSTATVALID=$$VALIDATEPATSTAT(.ERRORS,$GET(REQUEST("PATIENT STATUS")))
+36 ;
+37 IF $DATA(REQUEST("PATIENT PREFERRED START DATE"))
IF $DATA(REQUEST("PATIENT PREFERRED END DATE"))
DO VALIDATEDATEPREF(.ERRORS,.REQUEST)
+38 ;
+39 IF $DATA(REQUEST("MRTC"))
DO VALIDATEMRTCDATA(.ERRORS,.REQUEST,$GET(REQUEST("MRTC","PARENT REQUEST")),$GET(REQUEST("MRTC","NEEDED")),$GET(REQUEST("MRTC","DAYS BETWEEN APPTS")),$GET(REQUEST("MRTC","HOW MANY NEEDED")))
+40 ;
+41 IF $GET(REQUEST("MRTC","PARENT REQUEST"))
IF $GET(REQUEST("DFN"))
SET REQUEST("MRTC","CHILD SEQUENCE NUMBER")=$$MRTCHILDSEQUENCE($GET(REQUEST("MRTC","PARENT REQUEST")),$GET(REQUEST("DFN")))
+42 ;
+43 QUIT
+44 ;
CONVERTSTOPCODE(REQUEST) ;
+1 IF $DATA(REQUEST("STOP CODE"))
SET REQUEST("STOP CODE")=$$FIND1^DIC(40.7,"","X",REQUEST("STOP CODE"),"C")
+2 IF $DATA(REQUEST("SECONDARY STOP CODE"))
SET REQUEST("SECONDARY STOP CODE")=$$FIND1^DIC(40.7,"","X",REQUEST("SECONDARY STOP CODE"),"C")
+3 QUIT
+4 ;
BUILDER(REQUEST,INSTITUTIONIEN) ;
+1 NEW FDA,RETURNIEN
+2 SET FDA(409.85,"+1,",.01)=$GET(REQUEST("DFN"))
+3 SET FDA(409.85,"+1,",.02)=$GET(REQUEST("PATIENT STATUS"))
+4 SET FDA(409.85,"+1,",1)=$GET(REQUEST("CREATE DATE"))
+5 SET FDA(409.85,"+1,",2)=$GET(INSTITUTIONIEN)
+6 SET FDA(409.85,"+1,",4)=$GET(REQUEST("REQUEST SUB TYPE"))
+7 SET FDA(409.85,"+1,",5)=$GET(REQUEST("VAOS GUID"))
+8 SET FDA(409.85,"+1,",6)=$GET(REQUEST("MODALITY"))
+9 SET FDA(409.85,"+1,",8)=$GET(REQUEST("CLINIC IEN"))
+10 SET FDA(409.85,"+1,",8.5)=$GET(REQUEST("STOP CODE"))
+11 SET FDA(409.85,"+1,",8.6)=$GET(REQUEST("SECONDARY STOP CODE"))
+12 SET FDA(409.85,"+1,",8.7)=$GET(REQUEST("APPOINTMENT TYPE IEN"))
+13 SET FDA(409.85,"+1,",9)=$GET(DUZ)
+14 SET FDA(409.85,"+1,",9.5)=$$NOW^XLFDT
+15 SET FDA(409.85,"+1,",10)=$GET(REQUEST("PRIORITY"))
+16 SET FDA(409.85,"+1,",10.5)=$GET(REQUEST("PRIORITY GROUP"))
+17 SET FDA(409.85,"+1,",11)=$GET(REQUEST("REQUESTED BY"))
+18 SET FDA(409.85,"+1,",12)=$GET(REQUEST("PROVIDER IEN"))
+19 SET FDA(409.85,"+1,",14)=$GET(REQUEST("SERVICE CONNECTED PERCENTAGE"))
+20 SET FDA(409.85,"+1,",15)=$GET(REQUEST("SERVICE CONNECTED"))
+21 SET FDA(409.85,"+1,",22)=$GET(REQUEST("PATIENT INDICATED DATE"))
+22 SET FDA(409.85,"+1,",23)="O"
+23 SET FDA(409.85,"+1,",25)=$GET(REQUEST("REQUEST COMMENT"))
+24 SET FDA(409.85,"+1,",41)=$GET(REQUEST("MRTC","NEEDED"))
+25 SET FDA(409.85,"+1,",42)=$GET(REQUEST("MRTC","DAYS BETWEEN APPTS"))
+26 SET FDA(409.85,"+1,",43)=$GET(REQUEST("MRTC","HOW MANY NEEDED"))
+27 SET FDA(409.85,"+1,",43.1)=$GET(REQUEST("MRTC","CHILD SEQUENCE NUMBER"))
+28 SET FDA(409.85,"+1,",43.8)=$GET(REQUEST("MRTC","PARENT REQUEST"))
+29 SET FDA(409.85,"+1,",46)=$GET(REQUEST("CPRS ORDER NUMBER"))
+30 SET FDA(409.85,"+1,",47)=$SELECT($GET(REQUEST("CPRS TIME SENSITIVE"))="YES":"1",$GET(REQUEST("CPRS TIME SENSITIVE"))="NO":"0",1:"")
+31 SET FDA(409.85,"+1,",49)=$GET(REQUEST("PID CHANGE ALLOWED"))
+32 SET FDA(409.85,"+1,",100)=$GET(REQUEST("EAS"))
+33 ;
+34 DO UPDATE^DIE("","FDA","RETURNIEN")
KILL FDA
+35 SET REQUESTIEN=$GET(RETURNIEN(1))
+36 ;
+37 DO ADDPIDHISTORY(REQUESTIEN,$GET(REQUEST("PATIENT INDICATED DATE")))
+38 ;
+39 IF $DATA(REQUEST("CPRS PREREQUISITES"))
DO BUILDCPRSPREREQS(.REQUEST,REQUESTIEN)
+40 ;
+41 IF $DATA(REQUEST("MRTC","PARENT REQUEST"))&($GET(REQUESTIEN)'="")
DO ADDMRTCMULT(REQUESTIEN,REQUEST("MRTC","PARENT REQUEST"),REQUEST("PATIENT INDICATED DATE"))
+42 ;
+43 IF ($DATA(REQUEST("PATIENT COMMENT")))!($DATA(REQUEST("PATIENT PREFERRED START DATE")))
DO BUILDCOMMENTS(.REQUEST,REQUESTIEN)
+44 ;
+45 DO AUDIT(REQUESTIEN,$GET(REQUEST("CLINIC IEN")),$GET(REQUEST("STOP CODE")))
+46 ;
+47 QUIT REQUESTIEN
+48 ;
ADDPIDHISTORY(REQUESTIEN,PID) ;
+1 NEW PIDFDA,FDA
+2 ;
+3 IF PID=$$GET1^DIQ(409.854,$ORDER(^SDEC(409.85,REQUESTIEN,10,"A"),-1)_","_REQUESTIEN_",",1,"I")
QUIT
+4 ;
+5 SET PIDFDA(409.854,"+1,"_REQUESTIEN_",",.01)=$$NOW^XLFDT
+6 SET PIDFDA(409.854,"+1,"_REQUESTIEN_",",1)=PID
+7 SET PIDFDA(409.854,"+1,"_REQUESTIEN_",",2)=$$GET1^DIQ(200,$GET(DUZ),.01,"E")
+8 DO UPDATE^DIE(,"PIDFDA")
KILL PIDFDA
+9 ;
+10 SET FDA(409.85,REQUESTIEN_",",22)=PID
+11 DO FILE^DIE(,"FDA")
KILL FDA
+12 QUIT
+13 ;
ADDMRTCMULT(CHILD,PARENT,PATIENTINDDATE) ;Update the MRTC subfiles
+1 DO ADDMRTCLINKS(CHILD,PARENT)
+2 DO ADDMRTCPIDLINKS(PARENT,PATIENTINDDATE)
+3 QUIT
+4 ;
ADDMRTCLINKS(CHILD,PARENT) ;
+1 NEW FDA
+2 if $ORDER(^SDEC(409.85,PARENT,2,"B",CHILD))
QUIT
+3 SET FDA(409.852,"+1,"_PARENT_",",.01)=CHILD
+4 DO UPDATE^DIE(,"FDA")
KILL FDA
+5 QUIT
+6 ;
ADDMRTCPIDLINKS(PARENT,PATIENTINDDATE) ;
+1 NEW SDFDA
+2 if $ORDER(^SDEC(409.85,PARENT,5,"B",PATIENTINDDATE,0))
QUIT
+3 SET SDFDA(409.851,"+1,"_PARENT_",",.01)=PATIENTINDDATE
+4 DO UPDATE^DIE("","SDFDA")
KILL SDFDA
+5 QUIT
+6 ;
MRTCHILDSEQUENCE(PARENTREQUESTIEN,DFN) ; return next sequence number for child mrtc
+1 NEW COUNT,REQUESTIEN,IENS,NEXTSEQUENCENUM,CHILD,LASTCHILD
+2 SET REQUESTIEN=0
SET COUNT=0
SET LASTCHILD=""
+3 FOR
SET REQUESTIEN=$ORDER(^SDEC(409.85,"B",DFN,REQUESTIEN))
if 'REQUESTIEN
QUIT
Begin DoDot:1
+4 IF $$GET1^DIQ(409.85,REQUESTIEN,43.8,"I")=PARENTREQUESTIEN
Begin DoDot:2
+5 SET COUNT=COUNT+1
+6 SET CHILD(REQUESTIEN)=COUNT
End DoDot:2
End DoDot:1
+7 IF $DATA(CHILD)
Begin DoDot:1
+8 SET LASTCHILD=$ORDER(CHILD(LASTCHILD),-1)
+9 SET NEXTSEQUENCENUM=$GET(CHILD($GET(LASTCHILD)))+1
End DoDot:1
+10 IF '$DATA(CHILD)
SET NEXTSEQUENCENUM=1
+11 QUIT NEXTSEQUENCENUM
+12 ;
AUDIT(REQUESTIEN,CLINICIEN,STOPCODE) ;
+1 NEW FDA
+2 SET FDA(409.8545,"+1,"_REQUESTIEN_",",.01)=$$NOW^XLFDT
+3 SET FDA(409.8545,"+1,"_REQUESTIEN_",",1)=$GET(DUZ)
+4 SET FDA(409.8545,"+1,"_REQUESTIEN_",",2)=$GET(CLINICIEN)
+5 SET FDA(409.8545,"+1,"_REQUESTIEN_",",3)=$GET(STOPCODE)
+6 DO UPDATE^DIE("","FDA")
KILL FDA
+7 QUIT
+1 NEW REQCOMMS,NUM,NUM2,DONE,PREFDATES,PATCOMMS,RANGE,COUNT
+2 SET NUM=0
+3 ;
+4 IF $DATA(REQUEST("PATIENT COMMENT"))
Begin DoDot:1
+5 DO WP^SDECUTL(.PATCOMMS,$GET(REQUEST("PATIENT COMMENT")))
+6 DO WP^DIE(409.85,REQUESTIEN_",",60,"","PATCOMMS")
End DoDot:1
+7 ;
+8 IF '$GET(REQUEST("PATIENT PREFERRED START DATE",1))
QUIT
+9 ;
+10 SET NUM=0
SET COUNT=""
SET COUNT=$ORDER(REQUEST("PATIENT PREFERRED START DATE",COUNT),-1)
+11 FOR NUM=1:1:COUNT
Begin DoDot:1
+12 SET STARTDATE=$GET(REQUEST("PATIENT PREFERRED START DATE",NUM))
+13 SET ENDDATE=$GET(REQUEST("PATIENT PREFERRED END DATE",NUM))
+14 SET STARTDATE=$$ISOTFM^SDAMUTDT(STARTDATE)
SET STARTDATE=$$FMTE^XLFDT(STARTDATE)
+15 SET ENDDATE=$$ISOTFM^SDAMUTDT(ENDDATE)
SET ENDDATE=$$FMTE^XLFDT(ENDDATE)
+16 SET RANGE(NUM)="Patient preferred date range #"_NUM_": "_STARTDATE_" to "_ENDDATE
End DoDot:1
+17 DO WP^DIE(409.85,REQUESTIEN_",",60,"A","RANGE")
+18 QUIT
+19 ;
BUILDCPRSPREREQS(REQUEST,REQUESTIEN) ;
+1 NEW NUM,FDA
+2 SET NUM=0
+3 FOR
SET NUM=$ORDER(REQUEST("CPRS PREREQUISITES",NUM))
if 'NUM
QUIT
Begin DoDot:1
+4 SET FDA(409.8548,"+1,"_REQUESTIEN_",",.01)=$GET(REQUEST("CPRS PREREQUISITES",NUM))
+5 DO UPDATE^DIE(,"FDA")
KILL FDA
End DoDot:1
+6 QUIT
+7 ;
VALIDATEDFN(ERRORS,DFN) ;
+1 IF DFN=""
DO ERRLOG^SDESJSON(.ERRORS,1)
QUIT 0
+2 IF DFN'=""
IF '$DATA(^DPT(DFN,0))
DO ERRLOG^SDESJSON(.ERRORS,2)
QUIT 0
+3 QUIT 1
+4 ;
VALIDATEDATETIME(ERRORS,REQUEST) ;
+1 IF $GET(REQUEST("CREATE DATE"))=""
Begin DoDot:1
+2 SET REQUEST("CREATE DATE")=DT
+3 NEW NOWDT
SET NOWDT=$$FMTISO^SDAMUTDT($$NOW^XLFDT)
if NOWDT=-1
QUIT
+4 SET REQUEST("CREATE DATE")=$PIECE($$ISOTFM^SDAMUTDT(NOWDT,$GET(REQUEST("CLINIC IEN"))),".")
End DoDot:1
QUIT 1
+5 IF $GET(REQUEST("CREATE DATE"))'=""
SET REQUEST("CREATE DATE")=$$ISOTFM^SDAMUTDT($GET(REQUEST("CREATE DATE")))
+6 IF $GET(REQUEST("CREATE DATE"))=-1
DO ERRLOG^SDESJSON(.ERRORS,49)
QUIT 0
+7 QUIT 1
+8 ;
VALIDATEREQTYPE(ERRORS,REQTYPE) ;
+1 IF REQTYPE=""
DO ERRLOG^SDESJSON(.ERRORS,60)
QUIT 0
+2 IF REQTYPE'=""
IF REQTYPE'="APPT"
IF REQTYPE'="MOBILE"
IF REQTYPE'="RTC"
IF REQTYPE'="VETERAN"
IF REQTYPE'="W2VA"
DO ERRLOG^SDESJSON(.ERRORS,61)
QUIT 0
+3 QUIT 1
+4 ;
STATIONTOINST(ERRORS,STATIONNUM,INSTNAME) ; station number has precedence over institution name
+1 NEW INSTITUTIONIEN
+2 IF STATIONNUM=""
IF INSTNAME=""
DO ERRLOG^SDESJSON(.ERRORS,204)
QUIT 0
+3 IF STATIONNUM=""
IF INSTNAME'=""
SET INSTITUTIONIEN=$$FIND1^DIC(4,"","X",INSTNAME,"B")
IF 'INSTITUTIONIEN
DO ERRLOG^SDESJSON(.ERRORS,205)
QUIT 0
+4 IF STATIONNUM'=""
SET INSTITUTIONIEN=$$FIND1^DIC(4,"","X",STATIONNUM,"D")
IF 'INSTITUTIONIEN
DO ERRLOG^SDESJSON(.ERRORS,197)
QUIT 0
+5 QUIT INSTITUTIONIEN
+6 ;
VALIDATECLINSTOP(ERRORS,CLINICIEN,STOP,SECSTOP) ;
+1 NEW RESTYPE
+2 SET STOP=$GET(STOP)
SET SECSTOP=$GET(SECSTOP)
SET REQTYPE=$GET(REQTYPE)
+3 IF CLINICIEN'=""
IF '$DATA(^SC(CLINICIEN,0))
DO ERRLOG^SDESJSON(.ERRORS,19)
QUIT 0
+4 ;
+5 IF STOP=900
DO ERRLOG^SDESJSON(.ERRORS,273)
QUIT 0
+6 IF STOP'=""
SET STOP=$$FIND1^DIC(40.7,"","X",STOP,"C")
IF 'STOP
DO ERRLOG^SDESJSON(.ERRORS,270)
QUIT 0
+7 SET RESTYPE=$$GET1^DIQ(40.7,STOP,5,"I")
+8 IF STOP'=""
IF RESTYPE'="P"
IF RESTYPE'="E"
DO ERRLOG^SDESJSON(.ERRORS,287)
QUIT 0
+9 ;
+10 IF SECSTOP=900
DO ERRLOG^SDESJSON(.ERRORS,273)
QUIT 0
+11 IF SECSTOP'=""
SET SECSTOP=$$FIND1^DIC(40.7,"","X",SECSTOP,"C")
IF 'SECSTOP
DO ERRLOG^SDESJSON(.ERRORS,271)
QUIT 0
+12 SET RESTYPE=$$GET1^DIQ(40.7,SECSTOP,5,"I")
+13 IF SECSTOP'=""
IF RESTYPE'="S"
IF RESTYPE'="E"
DO ERRLOG^SDESJSON(.ERRORS,288)
QUIT 0
+14 ;
+15 IF SECSTOP'=""
IF STOP=""
DO ERRLOG^SDESJSON(.ERRORS,234)
QUIT 0
+16 IF CLINICIEN=""
IF STOP=""
DO ERRLOG^SDESJSON(.ERRORS,63)
QUIT 0
+17 IF STOP'=""
IF CLINICIEN'=""
DO ERRLOG^SDESJSON(.ERRORS,202)
QUIT 0
+18 IF SECSTOP'=""
IF CLINICIEN'=""
DO ERRLOG^SDESJSON(.ERRORS,202)
QUIT 0
+19 QUIT 1
+20 ;
VALIDATEREQBY(ERRORS,REQUESTEDBY) ;
+1 IF REQUESTEDBY=""
DO ERRLOG^SDESJSON(.ERRORS,62)
QUIT 0
+2 IF REQUESTEDBY'=""
IF REQUESTEDBY'="PATIENT"
IF REQUESTEDBY'="PROVIDER"
DO ERRLOG^SDESJSON(.ERRORS,198)
+3 SET REQUEST("REQUESTED BY")=$SELECT(REQUESTEDBY="PATIENT":2,REQUESTEDBY="PROVIDER":1,1:"")
+4 IF $DATA(ERRORS)
QUIT 0
+5 QUIT 1
+6 ;
VALIDATEPROVIDER(ERRORS,PROVIDERIEN) ;
+1 IF PROVIDERIEN=""
DO ERRLOG^SDESJSON(.ERRORS,53)
QUIT 0
+2 IF PROVIDERIEN'=""
IF '$DATA(^VA(200,PROVIDERIEN,0))
DO ERRLOG^SDESJSON(.ERRORS,54)
QUIT 0
+3 QUIT 1
+4 ;
VALIDATEPID(ERRORS,REQUEST) ;
+1 IF $GET(REQUEST("PATIENT INDICATED DATE"))=""
DO ERRLOG^SDESJSON(.ERRORS,159)
QUIT 0
+2 IF $GET(REQUEST("PATIENT INDICATED DATE"))'=""
SET REQUEST("PATIENT INDICATED DATE")=$$ISOTFM^SDAMUTDT($GET(REQUEST("PATIENT INDICATED DATE")))
+3 IF $GET(REQUEST("PATIENT INDICATED DATE"))=-1
DO ERRLOG^SDESJSON(.ERRORS,160)
QUIT 0
+4 QUIT 1
+5 ;
VALIDATEEAS(ERRORS,EAS) ;
+1 IF $LENGTH(EAS)
SET EAS=$$EASVALIDATE^SDESUTIL($GET(EAS))
+2 IF $PIECE($GET(EAS),U)=-1
DO ERRLOG^SDESJSON(.ERRORS,142)
QUIT 0
+3 QUIT 1
+4 ;
VALIDATEPRIORITY(ERRORS,PRIORITY) ;
+1 IF PRIORITY'="ASAP"
IF PRIORITY'="FUTURE"
DO ERRLOG^SDESJSON(.ERRORS,211)
QUIT 0
+2 SET REQUEST("PRIORITY")=$SELECT(PRIORITY="ASAP":"A",PRIORITY="FUTURE":"F",1:"")
+3 QUIT 1
+4 ;
VALIDATEPRIGROUP(ERRORS,GROUP) ;
+1 NEW NUM,FOUND,GCHECK
+2 SET NUM=0
SET FOUND=0
+3 FOR NUM=1:1:8
Begin DoDot:1
+4 SET GCHECK="GROUP "_NUM
+5 IF GROUP=GCHECK
SET REQUEST("PRIORITY GROUP")=NUM
SET FOUND=1
End DoDot:1
+6 IF FOUND=0
DO ERRLOG^SDESJSON(.ERRORS,199)
QUIT 0
+7 QUIT 1
+8 ;
VALIDATESERVCONN(ERRORS,SERVCONN,SERVCONNPERC) ;
+1 IF $DATA(SERVCONN)
IF SERVCONN'="YES"
IF SERVCONN'="NO"
DO ERRLOG^SDESJSON(.ERRORS,200)
QUIT 0
+2 IF $GET(SERVCONNPERC)
IF '+SERVCONNPERC!(SERVCONNPERC'>0)!(SERVCONNPERC'<101)
DO ERRLOG^SDESJSON(.ERRORS,201)
QUIT 0
+3 IF $GET(SERVCONN)="NO"
IF +$GET(SERVCONNPERC)
DO ERRLOG^SDESJSON(.ERRORS,232)
QUIT 0
+4 SET REQUEST("SERVICE CONNECTED")=$SELECT(SERVCONN="YES":"1",SERVCONN="NO":"0",1:"")
+5 QUIT 1
+6 ;
VALIDATEAPPTTYPE(ERRORS,APPTTYPEIEN,APPTTYPENAME) ;
+1 IF APPTTYPEIEN=""
IF APPTTYPENAME=""
DO ERRLOG^SDESJSON(.ERRORS,306)
QUIT 0
+2 NEW APPTTYPIEN
+3 SET APPTTYPIEN=0
+4 IF $GET(APPTTYPENAME)'=""
Begin DoDot:1
+5 SET APPTTYPIEN=$$FIND1^DIC(409.1,"","X",APPTTYPENAME,"B")
+6 IF 'APPTTYPIEN
DO ERRLOG^SDESJSON(.ERRORS,180)
End DoDot:1
IF 'APPTTYPIEN
QUIT 0
+7 IF APPTTYPIEN
SET APPTTYPEIEN=APPTTYPIEN
QUIT 1
+8 IF APPTTYPEIEN'=""
IF '$DATA(^SD(409.1,APPTTYPEIEN,0))
DO ERRLOG^SDESJSON(.ERRORS,180)
+9 QUIT 0
+10 ;
VALIDATEPATSTAT(ERRORS,PATIENTSTATUS) ;
+1 IF PATIENTSTATUS'="NEW"
IF PATIENTSTATUS'="ESTABLISHED"
DO ERRLOG^SDESJSON(.ERRORS,203)
QUIT 0
+2 SET REQUEST("PATIENT STATUS")=$SELECT(PATIENTSTATUS="NEW":"N",PATIENTSTATUS="ESTABLISHED":"E",1:"")
+3 QUIT 1
+4 ;
VALIDATEDATEPREF(ERRORS,REQUEST) ;
+1 NEW ARYIEN,ARYIEN2,DATE,ERR,STARTDATE,ENDDATE
+2 SET ARYIEN=0
SET ERR=0
+3 FOR
SET ARYIEN=$ORDER(REQUEST("PATIENT PREFERRED START DATE",ARYIEN))
if 'ARYIEN!($GET(ERR))
QUIT
Begin DoDot:1
+4 SET STARTDATE=$GET(REQUEST("PATIENT PREFERRED START DATE",ARYIEN))
+5 SET STARTDATE=$$ISOTFM^SDAMUTDT(STARTDATE)
+6 IF STARTDATE=-1!($LENGTH(STARTDATE,".")=1)
SET ERR=1
DO ERRLOG^SDESJSON(.ERRORS,206)
QUIT
+7 SET ARYIEN2=0
+8 FOR
SET ARYIEN2=$ORDER(REQUEST("PATIENT PREFERRED END DATE",ARYIEN2))
if 'ARYIEN2
QUIT
Begin DoDot:2
+9 SET ENDDATE=$GET(REQUEST("PATIENT PREFERRED END DATE",ARYIEN2))
+10 SET ENDDATE=$$ISOTFM^SDAMUTDT(ENDDATE)
+11 IF ENDDATE=-1!($LENGTH(ENDDATE,".")=1)
SET ERR=1
DO ERRLOG^SDESJSON(.ERRORS,206)
QUIT
End DoDot:2
End DoDot:1
+12 IF $GET(REQUEST("PATIENT PREFERRED START DATE",1))
IF '$GET(REQUEST("PATIENT PREFERRED END DATE",1))
DO ERRLOG^SDESJSON(.ERRORS,195)
QUIT 0
+13 IF $GET(REQUEST("PATIENT PREFERRED START DATE",2))
IF '$GET(REQUEST("PATIENT PREFERRED END DATE",2))
DO ERRLOG^SDESJSON(.ERRORS,195)
QUIT 0
+14 IF $GET(REQUEST("PATIENT PREFERRED START DATE",3))
IF '$GET(REQUEST("PATIENT PREFERRED END DATE",3))
DO ERRLOG^SDESJSON(.ERRORS,195)
QUIT 0
+15 QUIT
+16 ;
VALIDATEMRTCDATA(ERRORS,REQUEST,PARENTREQUEST,NEEDED,DAYSBETWEEN,HOWMANY) ;
+1 NEW NUM,DONE
+2 IF NEEDED'=""
IF NEEDED'="YES"
IF NEEDED'="NO"
DO ERRLOG^SDESJSON(.ERRORS,208)
QUIT
+3 SET REQUEST("MRTC","NEEDED")=$SELECT(NEEDED="YES":1,NEEDED="NO":0,1:"")
+4 IF REQUEST("MRTC","NEEDED")'=1
Begin DoDot:1
+5 IF $GET(PARENTREQUEST)!($GET(DAYSBETWEEN))!($GET(HOWMANY))
DO ERRLOG^SDESJSON(.ERRORS,233)
End DoDot:1
QUIT ""
+6 QUIT 1
+7 ;
+8 ;
+9 IF PARENTREQUEST'=""
IF ('$DATA(^SDEC(409.85,PARENTREQUEST)))!(PARENTREQUEST=0)
DO ERRLOG^SDESJSON(.ERRORS,207)
+10 ;
+11 IF DAYSBETWEEN'=""
Begin DoDot:1
+12 IF '+DAYSBETWEEN!(DAYSBETWEEN'<366)
DO ERRLOG^SDESJSON(.ERRORS,209)
End DoDot:1
+13 ;
+14 IF HOWMANY'=""
Begin DoDot:1
+15 IF '+HOWMANY!(HOWMANY'<101)
DO ERRLOG^SDESJSON(.ERRORS,210)
End DoDot:1
+16 QUIT
+17 ;
BUILDJSON(JSONRETURN,RETURN) ;.
+1 NEW JSONERROR
+2 DO ENCODE^XLFJSON("RETURN","JSONRETURN","JSONERR")
+3 QUIT