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

SDES2CRTAPREQ.m

Go to the documentation of this file.
  1. SDES2CRTAPREQ ;ALB/BWF,JAS,TJB,JAS,BWF - CREATE APPOINTMENT REQUEST ; NOV 23, 2024
  1. ;;5.3;Scheduling;**869,871,875,877,893,895,897**;Aug 13, 1993;Build 2
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. ;External References
  1. ;-------------------
  1. ; Reference to $$ACTIVPRV^PXAPI is supported by IA #2349
  1. ; Reference to $$ACTIVE^XUSER is supported by IA #2343
  1. Q
  1. ; RPC: SDES2 CREATE APPT REQ
  1. ;
  1. ; SDCONTEXT INPUT
  1. ;
  1. ;S SDCONTEXT("ACHERON AUDIT ID") = Up to 40 Character unique ID number. Ex: 11d9dcc6-c6a2-4785-8031-8261576fca37
  1. ;S SDCONTEXT("USER DUZ") = The DUZ of the user taking action in the calling application.
  1. ;S SDCONTEXT("USER SECID") = The SECID of the user taking action in the calling application.
  1. ;S SDCONTEXT("PATIENT DFN") = The DFN/IEN of the target patient from the calling application.
  1. ;S SDCONTEXT("PATIENT ICN") = The ICN of the target patient from the calling application.
  1. ;
  1. ; REQUEST INPUT FORMAT
  1. ;
  1. ;S REQUEST("DFN")="" REQ (PATIENT IEN)
  1. ;S REQUEST("APPOINTMENT TYPE")="" REQ - APPOINTMENT TYPE - can be the Name or IEN
  1. ;S REQUEST("PATIENT INDICATED DATE")="" REQ (PID DATE IN ISO FORMAT)
  1. ;S REQUEST("PRIORITY")="" REQ
  1. ;S REQUEST("REQUEST SUB TYPE")="" REQ
  1. ;S REQUEST("REQUESTED BY")="" REQ
  1. ;S REQUEST("CLINIC IEN")="" OPT/REQ \
  1. ;S REQUEST("PRIMARY AMIS")="" OPT/REQ---> Either CLINIC IEN or PRIMARY AMIS/CREDIT PRIMARY AMIS must be defined
  1. ;S REQUEST("CREDIT AMIS")="" OPT/REQ /
  1. ;S REQUEST("STATION NUMBER")="" OPT/REQ -- > Either STATION NUMBER or INSTITUTION NAME is REQUIRED
  1. ;S REQUEST("INSTITUTION NAME")="" OPT/REQ --/
  1. ;S REQUEST("CREATE DATE")="" OPT - Defaults to today if not sent
  1. ;S REQUEST("PROVIDER IEN")="" OPT (Required if 'REQUESTED BY' is 'PROVIDER')
  1. ;S REQUEST("PRIORITY GROUP")="" OPT
  1. ;S REQUEST("SERVICE CONNECTED")="" OPT (This is for PRIORITY; 1 OR 0, if passed)
  1. ;S REQUEST("SERVICE CONNECTED PERCENTAGE")="" OPT
  1. ;S REQUEST("MODALITY")="" OPT
  1. ;S REQUEST("PATIENT STATUS")="" OPT
  1. ;S REQUEST("VAOS GUID")="" OPT
  1. ;S REQUEST("TIME SENSITIVE")="" OPT
  1. ;S REQUEST("REQUEST COMMENT")="" OPT
  1. ;S REQUEST("PATIENT COMMENT")="" OPT
  1. ;S REQUEST("PATIENT PREFERRED START DATE",1)="" OPT
  1. ;S REQUEST("PATIENT PREFERRED END DATE",1)="" OPT
  1. ;S REQUEST("PATIENT PREFERRED START DATE",2)="" OPT
  1. ;S REQUEST("PATIENT PREFERRED END DATE",2)="" OPT
  1. ;S REQUEST("PATIENT PREFERRED START DATE",3)="" OPT
  1. ;S REQUEST("PATIENT PREFERRED END DATE",3)="" OPT
  1. ;S REQUEST("MRTC","NEEDED")="" OPT (YES/NO)
  1. ;S REQUEST("MRTC","PARENT REQUEST")="" OPT
  1. ;S REQUEST("MRTC","DAYS BETWEEN APPTS")="" OPT
  1. ;S REQUEST("MRTC","HOW MANY NEEDED")="" OPT
  1. ;S REQUEST("DUPLICATE REASON")="" OPT - The reason a duplicate appointment request is being made
  1. ;
  1. CREATEREQUEST(JSONRETURN,SDCONTEXT,REQUEST) ;
  1. N REQUESTIEN,ERRORS,RETURN,INSTITUTIONIEN,FILEDATA,ORIGUSER
  1. ;
  1. D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
  1. I $D(ERRORS) S ERRORS("Request",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
  1. S ORIGUSER=$S($G(SDCONTEXT("USER DUZ"))'="":SDCONTEXT("USER DUZ"),1:DUZ)
  1. ;
  1. M FILEDATA=REQUEST
  1. D VALIDATE(.REQUEST,.FILEDATA,.INSTITUTIONIEN,.ERRORS)
  1. ;
  1. I $D(ERRORS) S ERRORS("Request",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
  1. ;
  1. S REQUESTIEN=$$BUILDER(.FILEDATA,INSTITUTIONIEN,ORIGUSER,$G(SDCONTEXT("ACHERON AUDIT ID")))
  1. ;
  1. S RETURN("Request","IEN")=$G(REQUESTIEN)
  1. ;
  1. D BUILDJSON^SDES2JSON(.JSONRETURN,.RETURN)
  1. Q
  1. ;
  1. VALIDATE(REQUEST,FILEDATA,INSTITUTIONIEN,ERRORS) ;
  1. N VALRETURN
  1. ; Validate required fields first, quit if any errors related to required variables
  1. D VALFILEIEN^SDES2VALUTIL(.VALRETURN,.ERRORS,2,$G(REQUEST("DFN")),1,,1,2)
  1. ;
  1. D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,8.7,$G(REQUEST("APPOINTMENT TYPE")),0,,,180)
  1. S FILEDATA("APPOINTMENT TYPE")=$G(VALRETURN(409.85,8.7,"I"))
  1. ;
  1. ; CLINIC VALIDATION - Quit here if validation fails. Clinic is needed for subsequent checks
  1. ;
  1. I $G(REQUEST("CLINIC IEN"))'="" D VALFILEIEN^SDES2VALUTIL(.VALRETURN,.ERRORS,44,$G(REQUEST("CLINIC IEN")),1,,,19)
  1. ;
  1. I $G(REQUEST("CLINIC IEN"))="",$G(REQUEST("PRIMARY AMIS"))="" D ERRLOG^SDES2JSON(.ERRORS,530)
  1. ; CLINIC IEN or PRIMARY AMIS is allowed, NOT both
  1. ;
  1. I $G(REQUEST("CLINIC IEN"))'="",($G(REQUEST("PRIMARY AMIS"))'=""!($G(REQUEST("CREDIT AMIS"))'="")) D ERRLOG^SDES2JSON(.ERRORS,202)
  1. ;
  1. ; cannot have credit amis with no primary amis
  1. I $G(REQUEST("CREDIT AMIS"))'="",$G(REQUEST("PRIMARY AMIS"))="" D ERRLOG^SDES2JSON(.ERRORS,234)
  1. I $G(REQUEST("PRIMARY AMIS"))'="" D VALPRIMAMIS(.ERRORS,.REQUEST,.FILEDATA)
  1. ;
  1. I $G(REQUEST("CREDIT AMIS"))'="" D VALCREDITAMIS(.ERRORS,.REQUEST,.FILEDATA)
  1. ;
  1. I $G(REQUEST("PRIMARY AMIS"))'="",$G(REQUEST("CREDIT AMIS"))'="" D CONDAMISCHECK^SDES2VAL44(.ERRORS,$G(REQUEST("PRIMARY AMIS")),$G(REQUEST("CREDIT AMIS")))
  1. ;
  1. S FILEDATA("PATIENT INDICATED DATE")=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$G(REQUEST("PATIENT INDICATED DATE")),$G(REQUEST("CLINIC IEN")),1,159,160)
  1. ;
  1. D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,10,$G(REQUEST("PRIORITY")),1,,457,211)
  1. I VALRETURN S FILEDATA("PRIORITY")=$G(VALRETURN(409.85,10,"I"))
  1. ;
  1. D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,11,$G(REQUEST("REQUESTED BY")),1,,62,198)
  1. I VALRETURN D
  1. .S FILEDATA("REQUESTED BY")=$G(VALRETURN(409.85,11,"I"))
  1. .I $G(FILEDATA("REQUESTED BY"))=1 D Q
  1. ..D VALFILEIEN^SDES2VALUTIL(.VALRETURN,.ERRORS,200,$G(REQUEST("PROVIDER IEN")),1,,53,54)
  1. ..I VALRETURN,('$$ACTIVE^XUSER($G(REQUEST("PROVIDER IEN")))!('$$ACTIVPRV^PXAPI($G(REQUEST("PROVIDER IEN"))))) D ERRLOG^SDES2JSON(.ERRORS,560)
  1. ;
  1. D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,4,$G(REQUEST("REQUEST SUB TYPE")),1,,60,61)
  1. ;
  1. I $G(REQUEST("CREATE DATE"))="" S FILEDATA("CREATE DATE")=$$FMTISO^SDAMUTDT(DT,$G(REQUEST("CLINIC IEN")))
  1. S FILEDATA("CREATE DATE")=$$VALISODTTM^SDES2VALISODTTM(.ERRORS,$G(FILEDATA("CREATE DATE")),$G(REQUEST("CLINIC IEN")),,,49)
  1. ;
  1. S INSTITUTIONIEN=$$STATIONTOINST(.ERRORS,$G(REQUEST("STATION NUMBER")),$G(REQUEST("INSTITUTION NAME")))
  1. ;
  1. ; Validate Optional fields
  1. I $L($G(REQUEST("MODALITY"))) D
  1. .D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,6,$G(REQUEST("MODALITY")),,,,224) Q:'VALRETURN
  1. .S FILEDATA("MODALITY")=$G(VALRETURN(409.85,6,"I"))
  1. ;
  1. I $L($G(REQUEST("PRIORITY GROUP"))) D
  1. .D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,10.5,$G(REQUEST("PRIORITY GROUP")),,,,199) Q:'VALRETURN
  1. .S FILEDATA("PRIORITY GROUP")=$G(VALRETURN(409.85,10.5,"I"))
  1. ;
  1. I $L($G(REQUEST("SERVICE CONNECTED"))) D
  1. .D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,15,$G(REQUEST("SERVICE CONNECTED")),,,,200)
  1. .S FILEDATA("SERVICE CONNECTED")=$G(VALRETURN(409.85,15,"I"))
  1. ;
  1. I $L($G(REQUEST("SERVICE CONNECTED PERCENTAGE"))) D
  1. .D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,14,$G(REQUEST("SERVICE CONNECTED PERCENTAGE")),,,,201) Q:'VALRETURN
  1. .;I $G(FILEDATA("SERVICE CONNECTED"))=0,+$G(REQUEST("SERVICE CONNECTED PERCENTAGE")) D ERRLOG^SDES2JSON(.ERRORS,232)
  1. ;
  1. I $L($G(REQUEST("PATIENT STATUS"))) D
  1. .D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,.02,$G(REQUEST("PATIENT STATUS")),,,,203) Q:'VALRETURN
  1. .S FILEDATA("PATIENT STATUS")=$G(VALRETURN(409.85,.02,"I"))
  1. ;
  1. I $L($G(REQUEST("REQUEST COMMENT"))) D
  1. .D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,25,$G(REQUEST("REQUEST COMMENT")),,,,443)
  1. ;
  1. I $G(REQUEST("DUPLICATE REASON"))]"" D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,51,$G(REQUEST("DUPLICATE REASON")),,,,593)
  1. ;
  1. I $L($G(REQUEST("TIME SENSITIVE"))) D
  1. .D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,409.85,47,$G(REQUEST("TIME SENSITIVE")))
  1. .I VALRETURN S FILEDATA("TIME SENSITIVE")=$G(VALRETURN(409.85,47,"I"))
  1. ;
  1. I $D(REQUEST("PATIENT PREFERRED START DATE")),$D(REQUEST("PATIENT PREFERRED END DATE")) D VALIDATEDATEPREF(.ERRORS,.REQUEST)
  1. I $D(REQUEST("MRTC")) D VALIDATEMRTCDATA(.ERRORS,.REQUEST,.FILEDATA)
  1. I $G(REQUEST("MRTC","PARENT REQUEST")),$G(REQUEST("DFN")) S FILEDATA("MRTC","CHILD SEQUENCE NUMBER")=$$MRTCHILDSEQUENCE($G(REQUEST("MRTC","PARENT REQUEST")),$G(REQUEST("DFN")))
  1. I $G(REQUEST("MRTC","PARENT REQUEST")) D
  1. . I $G(FILEDATA("MRTC","CHILD SEQUENCE NUMBER")),$G(FILEDATA("MRTC","CHILD SEQUENCE NUMBER"))>$$GET1^DIQ(409.85,$G(REQUEST("MRTC","PARENT REQUEST")),43,"I") D ERRLOG^SDES2JSON(.ERRORS,544)
  1. . S FILEDATA("MRTC","ORDER ID")=$$GET1^DIQ(409.85,$G(REQUEST("MRTC","PARENT REQUEST")),46,"I")
  1. Q
  1. ;
  1. BUILDER(REQUEST,INSTITUTIONIEN,ORIGUSER,EAS) ;
  1. N FDA,RETURNIEN
  1. S FDA(409.85,"+1,",.01)=$G(REQUEST("DFN"))
  1. S FDA(409.85,"+1,",.02)=$G(REQUEST("PATIENT STATUS"))
  1. S FDA(409.85,"+1,",1)=$G(REQUEST("CREATE DATE"))
  1. S FDA(409.85,"+1,",2)=$G(INSTITUTIONIEN)
  1. S FDA(409.85,"+1,",4)=$G(REQUEST("REQUEST SUB TYPE"))
  1. S FDA(409.85,"+1,",5)=$G(REQUEST("VAOS GUID"))
  1. S FDA(409.85,"+1,",6)=$G(REQUEST("MODALITY"))
  1. S FDA(409.85,"+1,",8)=$G(REQUEST("CLINIC IEN"))
  1. S FDA(409.85,"+1,",8.5)=$G(REQUEST("PRIMARY AMIS"))
  1. S FDA(409.85,"+1,",8.6)=$G(REQUEST("CREDIT AMIS"))
  1. S FDA(409.85,"+1,",8.7)=$G(REQUEST("APPOINTMENT TYPE"))
  1. S FDA(409.85,"+1,",9)=$G(ORIGUSER)
  1. S FDA(409.85,"+1,",9.5)=$$NOW^XLFDT
  1. S FDA(409.85,"+1,",10)=$G(REQUEST("PRIORITY"))
  1. S FDA(409.85,"+1,",10.5)=$G(REQUEST("PRIORITY GROUP"))
  1. S FDA(409.85,"+1,",11)=$G(REQUEST("REQUESTED BY"))
  1. S FDA(409.85,"+1,",12)=$G(REQUEST("PROVIDER IEN"))
  1. S FDA(409.85,"+1,",14)=$G(REQUEST("SERVICE CONNECTED PERCENTAGE"))
  1. S FDA(409.85,"+1,",15)=$G(REQUEST("SERVICE CONNECTED"))
  1. S FDA(409.85,"+1,",22)=$G(REQUEST("PATIENT INDICATED DATE"))
  1. S FDA(409.85,"+1,",23)="O"
  1. S FDA(409.85,"+1,",25)=$$CTRL^XMXUTIL1($G(REQUEST("REQUEST COMMENT")))
  1. S FDA(409.85,"+1,",41)=$G(REQUEST("MRTC","NEEDED"))
  1. S FDA(409.85,"+1,",42)=$G(REQUEST("MRTC","DAYS BETWEEN APPTS"))
  1. S FDA(409.85,"+1,",43)=$G(REQUEST("MRTC","HOW MANY NEEDED"))
  1. S FDA(409.85,"+1,",43.1)=$G(REQUEST("MRTC","CHILD SEQUENCE NUMBER"))
  1. S FDA(409.85,"+1,",43.8)=$G(REQUEST("MRTC","PARENT REQUEST"))
  1. S FDA(409.85,"+1,",46)=$G(REQUEST("MRTC","ORDER ID"))
  1. S FDA(409.85,"+1,",47)=$S($G(REQUEST("TIME SENSITIVE"))'="":$G(REQUEST("TIME SENSITIVE")),1:0)
  1. S FDA(409.85,"+1,",49)=$G(REQUEST("PID CHANGE ALLOWED"))
  1. S FDA(409.85,"+1,",51)=$G(REQUEST("DUPLICATE REASON"))
  1. S FDA(409.85,"+1,",100)=$G(EAS)
  1. ;
  1. D UPDATE^DIE("","FDA","RETURNIEN") K FDA
  1. S REQUESTIEN=$G(RETURNIEN(1))
  1. ;
  1. ; 409.85 COMMENTS AUDIT multiple
  1. I $G(REQUEST("REQUEST COMMENT"))'="" D
  1. . S FDA(409.8527,"+1,"_REQUESTIEN_",",.01)=$$NOW^XLFDT
  1. . S FDA(409.8527,"+1,"_REQUESTIEN_",",1)=ORIGUSER
  1. . S FDA(409.8527,"+1,"_REQUESTIEN_",",2)=$$CTRL^XMXUTIL1($G(REQUEST("REQUEST COMMENT")))
  1. . D UPDATE^DIE("","FDA") K FDA
  1. ;
  1. D ADDPIDHISTORY(REQUESTIEN,$G(REQUEST("PATIENT INDICATED DATE")),ORIGUSER)
  1. ;
  1. I $G(REQUEST("MRTC","PARENT REQUEST"))'=""&($G(REQUESTIEN)'="") D ADDMRTCMULT(REQUESTIEN,REQUEST("MRTC","PARENT REQUEST"),REQUEST("PATIENT INDICATED DATE"))
  1. ;
  1. I ($D(REQUEST("PATIENT COMMENT")))!($D(REQUEST("PATIENT PREFERRED START DATE"))) D BUILDCOMMENTS(.REQUEST,REQUESTIEN)
  1. ;
  1. D AUDIT(REQUESTIEN,$G(REQUEST("CLINIC IEN")),$G(REQUEST("PRIMARY AMIS")),ORIGUSER)
  1. ;
  1. Q REQUESTIEN
  1. ;
  1. ADDPIDHISTORY(REQUESTIEN,PID,USER) ;
  1. N PIDFDA,FDA,OLDPID,PARENTIEN
  1. ;
  1. I PID=$$GET1^DIQ(409.854,$O(^SDEC(409.85,REQUESTIEN,10,"A"),-1)_","_REQUESTIEN_",",1,"I") Q
  1. ;
  1. S PIDFDA(409.854,"+1,"_REQUESTIEN_",",.01)=$$NOW^XLFDT
  1. S PIDFDA(409.854,"+1,"_REQUESTIEN_",",1)=PID
  1. S PIDFDA(409.854,"+1,"_REQUESTIEN_",",2)=$$GET1^DIQ(200,$G(USER),.01,"E")
  1. D UPDATE^DIE(,"PIDFDA") K PIDFDA
  1. ;
  1. S OLDPID=$$GET1^DIQ(409.85,REQUESTIEN_",",22,"I")
  1. S PARENTIEN=$$GET1^DIQ(409.85,REQUESTIEN_",",43.8,"I")
  1. ;
  1. S FDA(409.85,REQUESTIEN_",",22)=PID
  1. D FILE^DIE(,"FDA") K FDA
  1. ;
  1. I PARENTIEN,$D(^SDEC(409.85,PARENTIEN)) D
  1. . N PREFIEN S PREFIEN=$O(^SDEC(409.85,PARENTIEN,5,"B",OLDPID,0))
  1. . S FDA(409.851,PREFIEN_","_PARENTIEN_",",.01)=PID
  1. . D FILE^DIE(,"FDA") K FDA
  1. Q
  1. ;
  1. ADDMRTCMULT(CHILD,PARENT,PATIENTINDDATE) ;Update the MRTC subfiles
  1. D ADDMRTCLINKS(CHILD,PARENT)
  1. D ADDMRTCPIDLINKS(PARENT,PATIENTINDDATE)
  1. Q
  1. ;
  1. N FDA
  1. Q:$O(^SDEC(409.85,PARENT,2,"B",CHILD))
  1. S FDA(409.852,"+1,"_PARENT_",",.01)=CHILD
  1. D UPDATE^DIE(,"FDA") K FDA
  1. Q
  1. ;
  1. N SDFDA
  1. Q:$O(^SDEC(409.85,PARENT,5,"B",PATIENTINDDATE,0))
  1. S SDFDA(409.851,"+1,"_PARENT_",",.01)=PATIENTINDDATE
  1. D UPDATE^DIE("","SDFDA") K SDFDA
  1. Q
  1. ;
  1. MRTCHILDSEQUENCE(PARENTREQUESTIEN,DFN) ; return next sequence # for child mrtc
  1. N COUNT,REQUESTIEN,IENS,NEXTSEQUENCENUM,CHILD,LASTCHILD
  1. S REQUESTIEN=0,COUNT=0,LASTCHILD=""
  1. F S REQUESTIEN=$O(^SDEC(409.85,"B",DFN,REQUESTIEN)) Q:'REQUESTIEN D
  1. .I $$GET1^DIQ(409.85,REQUESTIEN,43.8,"I")=PARENTREQUESTIEN D
  1. ..S COUNT=COUNT+1
  1. ..S CHILD(REQUESTIEN)=COUNT
  1. I $D(CHILD) D
  1. .S LASTCHILD=$O(CHILD(LASTCHILD),-1)
  1. .S NEXTSEQUENCENUM=$G(CHILD($G(LASTCHILD)))+1
  1. I '$D(CHILD) S NEXTSEQUENCENUM=1
  1. Q NEXTSEQUENCENUM
  1. ;
  1. AUDIT(REQUESTIEN,CLINICIEN,STOPCODE,ORIGUSER) ;
  1. N FDA
  1. S FDA(409.8545,"+1,"_REQUESTIEN_",",.01)=$$NOW^XLFDT
  1. S FDA(409.8545,"+1,"_REQUESTIEN_",",1)=$G(ORIGUSER)
  1. S FDA(409.8545,"+1,"_REQUESTIEN_",",2)=$G(CLINICIEN)
  1. S FDA(409.8545,"+1,"_REQUESTIEN_",",3)=$G(STOPCODE)
  1. D UPDATE^DIE("","FDA") K FDA
  1. Q
  1. BUILDCOMMENTS(REQUEST,REQUESTIEN) ;
  1. N REQCOMMS,NUM,NUM2,DONE,PREFDATES,PATCOMMS,RANGE,COUNT
  1. S NUM=0
  1. ;
  1. I $D(REQUEST("PATIENT COMMENT")) D
  1. .D WP^SDECUTL(.PATCOMMS,$G(REQUEST("PATIENT COMMENT")))
  1. .D WP^DIE(409.85,REQUESTIEN_",",60,"","PATCOMMS")
  1. ;
  1. I '$G(REQUEST("PATIENT PREFERRED START DATE",1)) Q
  1. ;
  1. S NUM=0,COUNT="",COUNT=$O(REQUEST("PATIENT PREFERRED START DATE",COUNT),-1)
  1. F NUM=1:1:COUNT D
  1. .S STARTDATE=$G(REQUEST("PATIENT PREFERRED START DATE",NUM))
  1. .S ENDDATE=$G(REQUEST("PATIENT PREFERRED END DATE",NUM))
  1. .S STARTDATE=$$ISOTFM^SDAMUTDT(STARTDATE),STARTDATE=$$FMTE^XLFDT(STARTDATE)
  1. .S ENDDATE=$$ISOTFM^SDAMUTDT(ENDDATE),ENDDATE=$$FMTE^XLFDT(ENDDATE)
  1. .S RANGE(NUM)="Patient preferred date range #"_NUM_": "_STARTDATE_" to "_ENDDATE
  1. D WP^DIE(409.85,REQUESTIEN_",",60,"A","RANGE")
  1. Q
  1. ;
  1. STATIONTOINST(ERRORS,STATIONNUM,INSTNAME) ;
  1. N INSTITUTIONIEN
  1. I STATIONNUM="",INSTNAME="" D ERRLOG^SDES2JSON(.ERRORS,204) Q 0
  1. I STATIONNUM="",INSTNAME'="" S INSTITUTIONIEN=$$FIND1^DIC(4,"","X",INSTNAME,"B") I 'INSTITUTIONIEN D ERRLOG^SDES2JSON(.ERRORS,205) Q 0
  1. I STATIONNUM'="" S INSTITUTIONIEN=$$FIND1^DIC(4,"","X",STATIONNUM,"D") I 'INSTITUTIONIEN D ERRLOG^SDES2JSON(.ERRORS,197) Q 0
  1. Q INSTITUTIONIEN
  1. ;
  1. VALPRIMAMIS(ERRORS,REQUEST,FDATA) ; PRIMARY AMIS STOP CODE
  1. N SDPRIMAMIS,SDAMISERROR
  1. S SDPRIMAMIS=$G(REQUEST("PRIMARY AMIS"))
  1. S SDAMISERROR=$$VALIDATEAMIS^SDES2UTIL(.SDPRIMAMIS,"P")
  1. I SDAMISERROR D ERRLOG^SDES2JSON(.ERRORS,SDAMISERROR) Q
  1. S FDATA("PRIMARY AMIS")=SDPRIMAMIS
  1. Q
  1. ;
  1. VALCREDITAMIS(ERRORS,REQUEST,FDATA) ; CREDIT AMIS STOP CODE
  1. N SDCREDITAMIS,SDAMISERROR
  1. S SDCREDITAMIS=$G(REQUEST("CREDIT AMIS"))
  1. S SDAMISERROR=$$VALIDATEAMIS^SDES2UTIL(.SDCREDITAMIS,"C")
  1. I SDAMISERROR D ERRLOG^SDES2JSON(.ERRORS,SDAMISERROR) Q
  1. S FDATA("CREDIT AMIS")=SDCREDITAMIS
  1. Q
  1. ;
  1. VALIDATEDATEPREF(ERRORS,REQUEST) ;
  1. N ARYIEN,ARYIEN2,DATE,ERR,STARTDATE,ENDDATE
  1. S ARYIEN=0,ERR=0
  1. F S ARYIEN=$O(REQUEST("PATIENT PREFERRED START DATE",ARYIEN)) Q:'ARYIEN!($G(ERR)) D
  1. .S STARTDATE=$G(REQUEST("PATIENT PREFERRED START DATE",ARYIEN))
  1. .S STARTDATE=$$ISOTFM^SDAMUTDT(STARTDATE)
  1. .I STARTDATE=-1!($L(STARTDATE,".")=1) S ERR=1 D ERRLOG^SDES2JSON(.ERRORS,206) Q
  1. .S ENDDATE=$G(REQUEST("PATIENT PREFERRED END DATE",ARYIEN))
  1. .S ENDDATE=$$ISOTFM^SDAMUTDT(ENDDATE)
  1. .I ENDDATE=-1!($L(ENDDATE,".")=1) S ERR=1 D ERRLOG^SDES2JSON(.ERRORS,206) Q
  1. .I ENDDATE<STARTDATE D ERRLOG^SDES2JSON(.ERRORS,29,"Start Date:"_STARTDATE_" - End Date: "_ENDDATE)
  1. I $G(REQUEST("PATIENT PREFERRED START DATE",1)),'$G(REQUEST("PATIENT PREFERRED END DATE",1)) D ERRLOG^SDES2JSON(.ERRORS,195) Q
  1. I $G(REQUEST("PATIENT PREFERRED START DATE",2)),'$G(REQUEST("PATIENT PREFERRED END DATE",2)) D ERRLOG^SDES2JSON(.ERRORS,195) Q
  1. I $G(REQUEST("PATIENT PREFERRED START DATE",3)),'$G(REQUEST("PATIENT PREFERRED END DATE",3)) D ERRLOG^SDES2JSON(.ERRORS,195) Q
  1. I '$G(REQUEST("PATIENT PREFERRED START DATE",1)),$G(REQUEST("PATIENT PREFERRED END DATE",1)) D ERRLOG^SDES2JSON(.ERRORS,195) Q
  1. I '$G(REQUEST("PATIENT PREFERRED START DATE",2)),$G(REQUEST("PATIENT PREFERRED END DATE",2)) D ERRLOG^SDES2JSON(.ERRORS,195) Q
  1. I '$G(REQUEST("PATIENT PREFERRED START DATE",3)),$G(REQUEST("PATIENT PREFERRED END DATE",3)) D ERRLOG^SDES2JSON(.ERRORS,195) Q
  1. Q
  1. ;
  1. VALIDATEMRTCDATA(ERRORS,REQUEST,FILEDATA) ;
  1. N VRET
  1. D VALFIELD^SDES2VALUTIL(.VRET,.ERRORS,409.85,41,$G(REQUEST("MRTC","NEEDED")),1,,539,208)
  1. S FILEDATA("MRTC","NEEDED")=$G(VRET(409.85,41,"I"))
  1. ; if this is not an mrtc, check for other mrtc fields and quit
  1. I $G(FILEDATA("MRTC","NEEDED"))=0 D Q
  1. .I $D(REQUEST("MRTC","PARENT REQUEST"))!($D(REQUEST("MRTC","DAYS BETWEEN APPTS")))!(($D(REQUEST("MRTC","HOW MANY NEEDED")))) D ERRLOG^SDES2JSON(.ERRORS,233)
  1. ; if this is an MRTC, validate fields as required
  1. I $G(REQUEST("MRTC","PARENT REQUEST"))'="" D
  1. .D VALFILEIEN^SDES2VALUTIL(.VRET,.ERRORS,409.85,$G(REQUEST("MRTC","PARENT REQUEST")),1,,536,207)
  1. .I VRET D
  1. ..I $$GET1^DIQ(409.85,$G(REQUEST("MRTC","PARENT REQUEST")),.01,"I")'=$G(REQUEST("DFN")) D ERRLOG^SDES2JSON(.ERRORS,533)
  1. ..I $$GET1^DIQ(409.85,$G(REQUEST("MRTC","PARENT REQUEST")),42,"I")'=$G(REQUEST("MRTC","DAYS BETWEEN APPTS")) D ERRLOG^SDES2JSON(.ERRORS,52,"DAYS BETWEEN does not match parent.")
  1. ..I $$GET1^DIQ(409.85,$G(REQUEST("MRTC","PARENT REQUEST")),43,"I")'=$G(REQUEST("MRTC","HOW MANY NEEDED")) D ERRLOG^SDES2JSON(.ERRORS,52,"HOW MANY NEEDED does not match parent.")
  1. D VALFIELD^SDES2VALUTIL(.VRET,.ERRORS,409.85,42,$G(REQUEST("MRTC","DAYS BETWEEN APPTS")),1,,537,209)
  1. D VALFIELD^SDES2VALUTIL(.VRET,.ERRORS,409.85,43,$G(REQUEST("MRTC","HOW MANY NEEDED")),1,,538,210)
  1. Q