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

SDESUPDRECREQ.m

Go to the documentation of this file.
  1. SDESUPDRECREQ ;ALB/LAB,KML,MGD - ;July 19, 2022
  1. ;;5.3;Scheduling;**803,805,809,820**;Aug 13, 1993;Build 10
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. ; Documented API's and Integration Agreements
  1. ; -------------------------------------------
  1. ; Reference to $$LKUP^XPDKEY is supported by IA #1367
  1. ; Reference to OWNSKEY^XUSRB is supported by IA #3277
  1. ;
  1. ;INPUT:
  1. ; RECALLIEN - sent for UPDATE of RECALL REQUEST only(Required for Update) IEN pointer to RECALL REMINDERS
  1. ; DFN - (required) DFN Pointer to PATIENT file
  1. ; ACCNO - (optional) Accession # (free-text 1-25 characters)
  1. ; SDCMT - (optional) COMMENT (free-text 1-80 characters)
  1. ; FASTING - (required) FAST/NON-FASTING valid values: FASTING,NON-FASTING,NONE
  1. ; APPTP - (required) Test/App pointer to RECALL REMINDERS APPT TYPE file 403.51
  1. ; RRPROVIEN - (required) Provider - Pointer to RECALL REMINDERS PROVIDERS file 403.54
  1. ; CLINIEN - (required) Clinic pointer to HOSPITAL LOCATION file
  1. ; APPTLEN - (optional) Length of Appointment numeric between 10 and 120
  1. ; DATE - (required) Recall Date in ISO8601 format (no time). e.g., CCYY-MM-DD
  1. ; RECPPDT- (optional) Recall Date (Per patient) in ISO8601 format (no time) e.g., CCYY-MM-DD
  1. ; DAPTDT- (optional) Date Reminder Sent in ISO8601 format (no time) e.g., CCYY-MM-DD
  1. ; USERIEN- (optional) User Who Entered Recall pointer to NEW PERSON file; default to current user
  1. ; SECPDT- (optional) Second Print Date in ISO8601 format (no time) e.g., CCYY-MM-DD
  1. ; SDENTDT - (optional) Date recall entered in ISO8601 format e.g., CCYY-MM-DD)
  1. ; EAS- (optional) EAS Tracking Number
  1. ;
  1. ;RETURN:
  1. Q
  1. ;
  1. CREATERECREQ(RETN,DFN,ACCNO,SDCMT,FASTING,APPTP,RRPROVIEN,CLINIEN,APPTLEN,DATE,RECPPDT,DAPTDT,USERIEN,SECPDT,SDENTDT,EAS) ;CREATE recall request
  1. N POP,SDRECREQ,RECALLIEN,SDCREATE,SDFDA,SDMSG,SDIEN
  1. S RECALLIEN="+1",SDCREATE=1
  1. S POP=0
  1. D VALIDATE
  1. I POP D BLDJSON
  1. Q:POP
  1. D DATACONV
  1. D BLDREC
  1. D UPDATE^DIE("","SDFDA","SDIEN","SDMSG")
  1. I $D(SDMSG) S NUM=134 D CALLERROR,BLDJSON Q
  1. S SDRECREQ("RecallReqCreate","IEN")=SDIEN(1)
  1. D BLDJSON
  1. Q
  1. ;
  1. UPDRECALLREQ(RETN,RECALLIEN,DFN,ACCNO,SDCMT,FASTING,APPTP,RRPROVIEN,CLINIEN,APPTLEN,DATE,RECPPDT,DAPTDT,USERIEN,SECPDT,EAS) ;update recall request
  1. N POP,SDRECREQ,SDFDA,SDMSG,SDIEN
  1. S POP=0,SDCREATE=0
  1. D VALIDATE
  1. I POP D BLDJSON
  1. Q:POP
  1. D DATACONV
  1. D BLDREC
  1. D FILE^DIE(,"SDFDA","SDMSG")
  1. I $D(SDMSG) S NUM=134 D CALLERROR,BLDJSON Q
  1. S SDRECREQ("RecallReqEdit","IEN")=RECALLIEN
  1. D BLDJSON
  1. Q
  1. ;
  1. DATACONV ;make any data conversion changes
  1. S APPTLEN=$G(APPTLEN) I APPTLEN'="" S:((+APPTLEN<10)!(+APPTLEN>120)) APPTLEN=""
  1. S RECPPDT=$G(RECPPDT) S RECPPDT=$$ISOTFM^SDAMUTDT(RECPPDT) I RECPPDT=-1 S RECPPDT="" ;VSE-2396
  1. S DAPTDT=$G(DAPTDT) S DAPTDT=$$ISOTFM^SDAMUTDT(DAPTDT) I DAPTDT=-1 S DAPTDT="" ;VSE-2396
  1. S USERIEN=$G(USERIEN) I (USERIEN="")!('$D(^VA(200,+USERIEN))) S USERIEN=DUZ
  1. S SECPDT=$G(SECPDT) I SECPDT'="" S SECPDT=$$ISOTFM^SDAMUTDT(SECPDT) I SECPDT=-1 S SECPDT="" ;;VSE-2396
  1. S EAS=$G(EAS)
  1. S SDCMT=$TR($G(SDCMT),"^"," ")
  1. Q
  1. ;
  1. VALIDATE ;validate input parameters
  1. N NUM
  1. I $G(RECALLIEN)="" S POP=1,NUM=16 D CALLERROR Q
  1. I (RECALLIEN'="+1")&('$D(^SD(403.5,+RECALLIEN))) S POP=1,NUM=17 D CALLERROR Q
  1. I '+$G(DFN) S POP=1,NUM=1 D CALLERROR Q
  1. I '$D(^DPT(+DFN,0)) S POP=1,NUM=2 D CALLERROR Q
  1. S FASTING=$G(FASTING)
  1. I FASTING="" S POP=1,NUM=141 D CALLERROR Q
  1. S FASTING=$S($$UP^XLFSTR(FASTING)="FASTING":"f",$$UP^XLFSTR(FASTING)="NON-FASTING":"n",$$UP^XLFSTR(FASTING)="F":"f",$$UP^XLFSTR(FASTING)="N":"n",FASTING="@":"@",1:138)
  1. I FASTING=138 S POP=1,NUM=138 D CALLERROR
  1. Q:POP
  1. S APPTP=$G(APPTP) I '(+APPTP) s POP=1,NUM=139 D CALLERROR Q
  1. I '$D(^SD(403.51,+APPTP)) S POP=1,NUM=132 D CALLERROR Q
  1. ;check provider (required)
  1. I '+$G(RRPROVIEN) S POP=1,NUM=137 D CALLERROR Q
  1. I +RRPROVIEN I '$D(^SD(403.54,+RRPROVIEN)) S POP=1,NUM=131 D CALLERROR Q
  1. ;check that user has the correct security key
  1. S NUM=$$KEY(RECALLIEN) I NUM S POP=1 D CALLERROR Q
  1. ;check Clinic (required)
  1. S CLINIEN=$G(CLINIEN)
  1. I '+CLINIEN S POP=1,NUM=18 D CALLERROR Q
  1. I +CLINIEN I '$D(^SC(+CLINIEN)) S POP=1,NUM=19 D CALLERROR Q
  1. ;check Recall Date (required)
  1. S DATE=$G(DATE) I DATE="" S POP=1,NUM=140 D CALLERROR Q
  1. S DATE=$$ISOTFM^SDAMUTDT(DATE) I DATE=-1 S POP=1,NUM=133 D CALLERROR Q ;VSE-2396
  1. S SDENTDT=$G(SDENTDT)
  1. I (SDCREATE)&($G(SDENTDT)'="") S SDENTDT=$$ISOTFM^SDAMUTDT(SDENTDT) ;VSE-2396
  1. I (SDENTDT=-1)!(SDENTDT="") S SDENTDT=DT ;
  1. ;validate EAS
  1. I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS)
  1. I EAS=-1 S POP=1,NUM=142 D CALLERROR
  1. Q
  1. ;
  1. CALLERROR ;calls json error logic if error encountered
  1. D ERRLOG^SDESJSON(.SDRECREQ,NUM)
  1. Q
  1. ;
  1. BLDREC ;build and file record
  1. S SDFDA=$NA(SDFDA(403.5,RECALLIEN_",")) ;recall
  1. S SDFDA(403.5,RECALLIEN_",",.01)=DFN
  1. S:$G(ACCNO)'="" SDFDA(403.5,RECALLIEN_",",2)=$E(ACCNO,1,25)
  1. S:SDCMT'="" SDFDA(403.5,RECALLIEN_",",2.5)=$E(SDCMT,1,80)
  1. S SDFDA(403.5,RECALLIEN_",",2.6)=FASTING
  1. S SDFDA(403.5,RECALLIEN_",",3)=APPTP
  1. S SDFDA(403.5,RECALLIEN_",",4)=RRPROVIEN
  1. S SDFDA(403.5,RECALLIEN_",",4.5)=CLINIEN
  1. S:APPTLEN'="" SDFDA(403.5,RECALLIEN_",",4.7)=APPTLEN
  1. S SDFDA(403.5,RECALLIEN_",",5)=DATE
  1. S:RECPPDT'="" SDFDA(403.5,RECALLIEN_",",5.5)=RECPPDT
  1. S:DAPTDT'="" SDFDA(403.5,RECALLIEN_",",6)=DAPTDT
  1. S SDFDA(403.5,RECALLIEN_",",7)=USERIEN
  1. S:SDCREATE SDFDA(403.5,RECALLIEN_",",7.5)=SDENTDT ;only add if creating new record, cannot edit
  1. S:SECPDT'="" SDFDA(403.5,RECALLIEN_",",8)=SECPDT
  1. S:EAS'="" SDFDA(403.5,RECALLIEN_",",100)=EAS
  1. Q
  1. ;
  1. BLDJSON ;Convert data to JSON
  1. N JSONERR
  1. S JSONERR=""
  1. D ENCODE^SDESJSON(.SDRECREQ,.RETN,.JSONERR)
  1. Q
  1. ;
  1. KEY(RECALLIEN) ;check that user has the correct SECURITY KEY
  1. ;INPUT:
  1. ; RECALLIEN - Pointer to RECALL REMINDERS file 403.5
  1. ;RETURN
  1. ; 0=User has the correct SECURITY KEY
  1. ; 135=error number - user does not have correct security keys
  1. N KEY,KY,RET,SDPRV,SDFLAG
  1. S RET=135
  1. S (SDPRV,KEY,SDFLAG)="" S SDPRV=$P($G(^SD(403.5,+RECALLIEN,0)),U,5) D
  1. .I SDPRV="" S RET=0
  1. .I SDPRV'="" S KEY=$P($G(^SD(403.54,SDPRV,0)),U,7) D
  1. ..I KEY="" S RET=0 Q
  1. ..N VALUE
  1. ..S VALUE=$$LKUP^XPDKEY(KEY) K KY D OWNSKEY^XUSRB(.KY,VALUE,DUZ)
  1. ..I $G(KY(0))'=0 S RET=0
  1. Q RET
  1. ;