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

SDESAPPTREQ2.m

Go to the documentation of this file.
  1. SDESAPPTREQ2 ;ALB/ANU - APPOINTMENT REQUEST CREATE/UPDATE IN FILE2 ;Feb 16, 2022
  1. ;;5.3;Scheduling;**809**;Aug 13, 1993;Build 10
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. Q
  1. ; This entry point is used for both the SDES SET APT REQ 2 CREATE and SDES SET APT REQ 2 UPDATE RPCs.
  1. ; The parameter list for each RPC must be kept in sync. This includes in the Remote Procedure file definition.
  1. ;
  1. ARSET(SDECY,SDAPPTUPD,SDPATIENTDFN,SDCLNIEN,SDAPPTDTTM,SDLABDTTM,SDXRAYDTTM,SDEKGDTTM,SDVSTPURP,SDAPPTTYPE,SDCOLLATERAL,SDSCHREQTYPE,SDNXTAVAAPPT,SDFOLLOWUP) ; Create/Update Appointment Request
  1. ; INP - Input parameters array
  1. ;
  1. ; SDAPPTUPD = (req - integer) 1 for Update and 0 for Create Appointment
  1. ; SDPATIENTDFN = (req - integer) DFN Pointer to PATIENT file 2
  1. ; SDCLNIEN = (req - integer) IEN point to HOSPTIAL LOCATION file 44
  1. ; SDAPPTDTTM = (req - date) appointment date and time in ISO 8601 extended format (e.g. 2022-01-19T20:15:44)
  1. ; SDLABDTTM = (date) Lab Date/Time
  1. ; SDXRAYDTTM = (date) X-Ray Date/Time
  1. ; SDEKGDTTM = (date) EKG Date/Time
  1. ; SDVSTPURP = (req - integer) Visit Purpose (Values - 1 to 4)
  1. ; SDAPPTTYPE = (text) Appointment Type, Pointer to #409.1 (required for create)
  1. ; SDCOLLATERAL = (integer) Collateral Visit (1,0)
  1. ; SDSCHREQTYPE = (req - text) Scheduling Request Type (N,C,P etc.,)
  1. ; SDNXTAVAAPPT = (req - integer) Next Available Appointment Indicator (0,1,2,3)
  1. ; SDFOLLOWUP = (integer) Followup Visit
  1. ;
  1. N POP,SDAPTREQ
  1. ;
  1. D VALIDATE
  1. I 'POP D
  1. .I +SDAPPTUPD=1 D UPDATE Q
  1. .I +SDAPPTUPD=0 D CREATE Q
  1. D BUILDER
  1. Q
  1. ;
  1. VALIDATE ; Validate
  1. ;
  1. S POP=0
  1. ;
  1. ;
  1. I SDAPPTUPD'=1,SDAPPTUPD'=0 S SDAPTREQ("Error",1)="Invalid Update Flag." Q
  1. ;
  1. ; Patient DFN
  1. S SDPATIENTDFN=$G(SDPATIENTDFN,"")
  1. I SDPATIENTDFN="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,1) Q
  1. I SDPATIENTDFN'="",'$D(^DPT(+SDPATIENTDFN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,2) Q
  1. ;
  1. ; Clinic IEN
  1. S SDCLNIEN=$G(SDCLNIEN,"")
  1. I SDCLNIEN="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,18) Q
  1. I '$D(^SC(+SDCLNIEN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,19) Q
  1. I $$INACTIVE^SDEC32(+SDCLNIEN) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,19) Q
  1. ;
  1. ; Appointment Type
  1. S SDAPPTTYPE=$G(SDAPPTTYPE,"")
  1. I SDAPPTUPD=0,SDAPPTTYPE="" D ERRLOG^SDESJSON(.SDAPTREQ,60) S POP=1 Q
  1. I SDAPPTTYPE'="",('$D(^SD(409.1,"B",SDAPPTTYPE))) D ERRLOG^SDESJSON(.SDAPTREQ,61) S POP=1 Q
  1. I SDAPPTTYPE'="",($D(^SD(409.1,"B",SDAPPTTYPE))) S SDAPPTTYPE=$O(^SD(409.1,"B",SDAPPTTYPE,0))
  1. ;
  1. ; Appointment date/time of appt
  1. S SDAPPTDTTM=$G(SDAPPTDTTM,"")
  1. I SDAPPTDTTM="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,76) Q
  1. S SDAPPTDTTM=$$ISOTFM^SDAMUTDT(SDAPPTDTTM,SDCLNIEN)
  1. ;S SDAPPTDTTM=$$GMTTFM^SDAMUTDT(SDAPPTDTTM)
  1. I SDAPPTDTTM=-1 S SDAPPTDTTM="",POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,77) Q
  1. I SDAPPTUPD=0,SDAPPTDTTM<DT S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,59) Q
  1. ;
  1. ; Lab Dt/Tm
  1. S SDLABDTTM=$G(SDLABDTTM,"")
  1. I SDLABDTTM'="" S SDLABDTTM=$$ISOTFM^SDAMUTDT(SDLABDTTM,SDCLNIEN)
  1. ;I SDLABDTTM'="" S SDLABDTTM=$$GMTTFM^SDAMUTDT(SDLABDTTM)
  1. I SDLABDTTM=-1 S SDLABDTTM="",POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,147) Q
  1. ;
  1. ; XRAY Dt/Tm
  1. S SDXRAYDTTM=$G(SDXRAYDTTM,"")
  1. I SDXRAYDTTM'="" S SDXRAYDTTM=$$ISOTFM^SDAMUTDT(SDXRAYDTTM,SDCLNIEN)
  1. ;I SDXRAYDTTM'="" S SDXRAYDTTM=$$GMTTFM^SDAMUTDT(SDXRAYDTTM)
  1. I SDXRAYDTTM=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,145) Q
  1. ;
  1. ; EKG Dt/Tm
  1. S SDEKGDTTM=$G(SDEKGDTTM,"")
  1. I SDEKGDTTM'="" S SDEKGDTTM=$$ISOTFM^SDAMUTDT(SDEKGDTTM,SDCLNIEN)
  1. ;I SDEKGDTTM'="" S SDEKGDTTM=$$GMTTFM^SDAMUTDT(SDEKGDTTM)
  1. I SDEKGDTTM=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,146) Q
  1. ;
  1. ; Purpose of Visit
  1. S SDVSTPURP=$G(SDVSTPURP,"")
  1. S SDVSTPURP=$E(SDVSTPURP,1,1)
  1. I SDVSTPURP="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,149) Q
  1. I "1234"'[+SDVSTPURP S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,148) Q
  1. ;
  1. ; Collateral Visit
  1. S SDCOLLATERAL=$G(SDCOLLATERAL,"")
  1. S SDCOLLATERAL=$E(SDCOLLATERAL,1,1)
  1. I SDCOLLATERAL'="",("01"'[SDCOLLATERAL) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,150) Q
  1. ;
  1. ; Scheduling Request Type
  1. S SDSCHREQTYPE=$G(SDSCHREQTYPE,"")
  1. S SDSCHREQTYPE=$E(SDSCHREQTYPE,1,1)
  1. I SDSCHREQTYPE="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,151) Q
  1. I ("NCPWMAO"'[SDSCHREQTYPE) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,152) Q
  1. ;
  1. ; Next Available Appointment Indicator
  1. S SDNXTAVAAPPT=$G(SDNXTAVAAPPT,"")
  1. S SDNXTAVAAPPT=$E(SDNXTAVAAPPT,1,1)
  1. I SDNXTAVAAPPT="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,154) Q
  1. I ("0123"'[SDNXTAVAAPPT) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,153) Q
  1. ;
  1. ; Followup Visit
  1. S SDFOLLOWUP=$G(SDFOLLOWUP,"")
  1. I SDFOLLOWUP'="",("01"'[SDFOLLOWUP) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,155) Q
  1. ;
  1. Q
  1. ;
  1. CREATE ;Build FDA array to creat a new entry in 2
  1. ; add appt to file 2
  1. N SDECFDA,SDECIENS,SDERR
  1. I $D(^DPT(SDPATIENTDFN,"S",SDAPPTDTTM,0)) S SDAPTREQ("Error",1)="Appointment Already Exists in File #2 for this Date/Time" Q
  1. S SDECIENS="?+2,"_SDPATIENTDFN_","
  1. S SDECIENS(2)=SDAPPTDTTM
  1. S SDECFDA(2.98,SDECIENS,".01")=$$NULLDEL(SDCLNIEN)
  1. S SDECFDA(2.98,SDECIENS,"3")=$S($G(^DPT(+$G(SDPATIENTDFN),.1))'="":"I",1:"")
  1. S SDECFDA(2.98,SDECIENS,"5")=$$NULLDEL(SDLABDTTM) ;lab date/time
  1. S SDECFDA(2.98,SDECIENS,"6")=$$NULLDEL(SDXRAYDTTM) ;xray date/time
  1. S SDECFDA(2.98,SDECIENS,"7")=$$NULLDEL(SDEKGDTTM) ;ekg date/time
  1. S SDECFDA(2.98,SDECIENS,"9")=$$NULLDEL(SDVSTPURP) ;Purpose of Visit
  1. S SDECFDA(2.98,SDECIENS,"9.5")=$$NULLDEL(SDAPPTTYPE)
  1. S SDECFDA(2.98,SDECIENS,"13")=$$NULLDEL(SDCOLLATERAL) ; Collateral Visit
  1. S SDECFDA(2.98,SDECIENS,"14")="@"
  1. S SDECFDA(2.98,SDECIENS,"15")="@"
  1. S SDECFDA(2.98,SDECIENS,"16")="@"
  1. S SDECFDA(2.98,SDECIENS,"17")="@"
  1. S SDECFDA(2.98,SDECIENS,"19")=$$NULLDEL(DUZ) ;data entry clerk
  1. S SDECFDA(2.98,SDECIENS,"20")=$$NOW^XLFDT
  1. S SDECFDA(2.98,SDECIENS,"21")="@"
  1. S SDECFDA(2.98,SDECIENS,"25")=$$NULLDEL(SDSCHREQTYPE) ;scheduling request type
  1. S SDECFDA(2.98,SDECIENS,"26")=$$NULLDEL(SDNXTAVAAPPT) ;Next ava. appt. indicator
  1. S SDECFDA(2.98,SDECIENS,"28")=$$NULLDEL(SDFOLLOWUP) ;follow-up visit yes/no
  1. D UPDATE^DIE("","SDECFDA","SDECIENS","SDERR")
  1. I $D(SDERR) S SDAPTREQ("Error",1)="Error trying to create Appointment in File #2." Q
  1. S SDAPTREQ("Success")="Appointment is successfully created."
  1. Q
  1. ;
  1. NULLDEL(STR) ;return "@" to delete a field if the new data would be null ;*zeb+tag 722 2/19/19 added to support APPADD
  1. Q $S(STR]"":STR,1:"@")
  1. ;
  1. UPDATE ;Find ien for appt in file 2
  1. ; Update appt in file 2
  1. N SDECFDA,SDECIENS,SDERR
  1. I '$D(^DPT(SDPATIENTDFN,"S",SDAPPTDTTM,0)) S SDAPTREQ("Error",1)="Appointment is not found in File #2 for this Date/Time" Q
  1. S SDECIENS=SDAPPTDTTM_","_SDPATIENTDFN_","
  1. S SDECFDA(2.98,SDECIENS,".01")=SDCLNIEN
  1. S SDECFDA(2.98,SDECIENS,"3")=$S($G(^DPT(+$G(SDPATIENTDFN),.1))'="":"I",1:"")
  1. S SDECFDA(2.98,SDECIENS,"5")=SDLABDTTM ;lab date/time
  1. S SDECFDA(2.98,SDECIENS,"6")=SDXRAYDTTM ;xray date/time
  1. S SDECFDA(2.98,SDECIENS,"7")=SDEKGDTTM ;ekg date/time
  1. S SDECFDA(2.98,SDECIENS,"9")=SDVSTPURP ;Purpose of Visit
  1. S SDECFDA(2.98,SDECIENS,"9.5")=SDAPPTTYPE
  1. S SDECFDA(2.98,SDECIENS,"13")=SDCOLLATERAL ; Collateral Visit
  1. S SDECFDA(2.98,SDECIENS,"14")=""
  1. S SDECFDA(2.98,SDECIENS,"15")=""
  1. S SDECFDA(2.98,SDECIENS,"16")=""
  1. S SDECFDA(2.98,SDECIENS,"17")=""
  1. S SDECFDA(2.98,SDECIENS,"19")=DUZ ;data entry clerk
  1. S SDECFDA(2.98,SDECIENS,"20")=$$NOW^XLFDT
  1. S SDECFDA(2.98,SDECIENS,"25")=SDSCHREQTYPE ;scheduling request type
  1. S SDECFDA(2.98,SDECIENS,"26")=SDNXTAVAAPPT ;Next ava. appt. indicator
  1. S SDECFDA(2.98,SDECIENS,"28")=SDFOLLOWUP ;follow-up visit yes/no
  1. D FILE^DIE("","SDECFDA","SDERR")
  1. I $D(SDERR) S SDAPTREQ("Error",1)="Error trying to update Appointment in File #2." Q
  1. S SDAPTREQ("Success")="Appointment is successfully updated."
  1. Q
  1. ;
  1. BUILDER ;Convert data to JSON
  1. N JSONERR
  1. S JSONERR=""
  1. D ENCODE^SDESJSON(.SDAPTREQ,.SDECY,.JSONERR)
  1. Q