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

SDESCREATEAPPREQ.m

Go to the documentation of this file.
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
 ;
 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
 ;
 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
BUILDCOMMENTS(REQUEST,REQUESTIEN) ;
 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