SDESGETRECALL ;ALB/BLB,MGD,RRM,BWF - VISTA SCHEDULING - GET RECALL REQUESTS ;Feb 14, 2023
;;5.3;Scheduling;**803,805,809,813,815,820,824,837**;Aug 13, 1993;Build 4
;;Per VHA Directive 6402, this routine should not be modified
;
;
;
; for an example of the return object, see SDESGETREQWRAPPR due to its length.
;
Q
;
GETRECALLBYIEN(JSONRETURN,RECALLIEN,EAS) ;
N ISRECALLIENVALID,RETURN,REQUEST,ERRORS
;
S ISRECALLIENVALID=$$VALIDATERECIEN(.ERRORS,$G(RECALLIEN))
S ISEASVALID=$$VALIDATEEAS(.ERRORS,$G(EAS))
I $D(ERRORS) S ERRORS("Request",1)="" M RETURN=ERRORS
;
I '$D(ERRORS) D
.S DFN=$$GET1^DIQ(403.5,RECALLIEN,.01,"I")
.D GETRECALL(.REQUEST,RECALLIEN,DFN)
I '$D(REQUEST) S REQUEST("Request",1)=""
M RETURN=REQUEST
;
D BUILDJSON(.JSONRETURN,.RETURN) Q
Q
;
GETRECALLSBYDFN(JSONRETURN,DFN,EAS) ;
N ISDFNVALID,ISEASVALID,REQUEST,RECALLIEN,ERRORS,RETURN
;
S ISDFNVALID=$$VALIDATEDFN(.ERRORS,$G(DFN))
S ISEASVALID=$$VALIDATEEAS(.ERRORS,$G(EAS))
I $D(ERRORS) S ERRORS("Request",1)="" M RETURN=ERRORS D BUILDJSON(.JSONRETURN,.RETURN) Q
;
S RECALLIEN=0
F S RECALLIEN=$O(^SD(403.5,"B",DFN,RECALLIEN)) Q:RECALLIEN="" D
.D GETRECALL(.REQUEST,RECALLIEN,DFN)
I '$D(REQUEST) S REQUEST("Request",1)=""
M RETURN=REQUEST
D BUILDJSON(.JSONRETURN,.RETURN) Q
Q
;
VALIDATERECIEN(ERRORS,RECALLIEN) ;
I RECALLIEN="" D ERRLOG^SDESJSON(.ERRORS,16) Q 0
I RECALLIEN'="",'$D(^SD(403.5,RECALLIEN))!(RECALLIEN=0) D ERRLOG^SDESJSON(.ERRORS,17) Q 0
Q 1
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
;
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
;
GETRECALL(REQUEST,RECALLIEN,DFN) ;
N F,RECARY,NUM,IENS
D GETS^DIQ(403.5,RECALLIEN,"**","IE","RECARY","SDMSG")
S F=403.5,NUM=""
S NUM=$O(REQUEST("Request",NUM),-1)+1
S IENS=RECALLIEN_","
;
D BUILDSDECONTACT^SDESGETAPPTREQ(.REQUEST,RECALLIEN,NUM,"R")
;
S REQUEST("Request",NUM,"Type")="Recall"
S REQUEST("Request",NUM,"PatientIEN")=DFN
S REQUEST("Request",NUM,"PatientICN")=$$GETPATICN^SDESINPUTVALUTL(DFN)
S REQUEST("Request",NUM,"PatientName")=RECARY(F,IENS,.01,"E")
S REQUEST("Request",NUM,"RequestIEN")=RECALLIEN
S REQUEST("Request",NUM,"EASTrackingNumber")=RECARY(F,IENS,100,"E")
S REQUEST("Request",NUM,"RecallAccessionNumber")=RECARY(F,IENS,2,"E")
S REQUEST("Request",NUM,"RecallComment")=RECARY(F,IENS,2.5,"E")
S REQUEST("Request",NUM,"RecallFastingNonFasting")=RECARY(F,IENS,2.6,"E")
S REQUEST("Request",NUM,"RecallProviderIEN")=RECARY(F,IENS,4,"I")
S REQUEST("Request",NUM,"RecallProviderName")=$$GET1^DIQ(403.54,RECARY(F,IENS,4,"I"),.01,"E")
S REQUEST("Request",NUM,"ClinicIEN")=RECARY(F,IENS,4.5,"I")
S REQUEST("Request",NUM,"ClinicName")=RECARY(F,IENS,4.5,"E")
S REQUEST("Request",NUM,"RecallAppointmentLength")=RECARY(F,IENS,4.7,"E") ;
S REQUEST("Request",NUM,"RecallProviderIndicatedDate")=$$FMTISO^SDAMUTDT(RECARY(F,IENS,5,"I"))
S REQUEST("Request",NUM,"PatientIndicatedDate")=$$FMTISO^SDAMUTDT(RECARY(F,IENS,5.5,"I"))
S REQUEST("Request",NUM,"RecallDateReminderSent")=$$FMTISO^SDAMUTDT(RECARY(F,IENS,6,"I"))
S REQUEST("Request",NUM,"EnteredByIEN")=RECARY(F,IENS,7,"I")
S REQUEST("Request",NUM,"EnteredByName")=RECARY(F,IENS,7,"E")
S REQUEST("Request",NUM,"RecallSecondPrint")=$$FMTISO^SDAMUTDT(RECARY(F,IENS,8,"I"))
S REQUEST("Request",NUM,"CreateDate")=$$FMTISO^SDAMUTDT(RECARY(403.5,IENS,7.5,"I"))
S REQUEST("Request",NUM,"RecallGAFScore")=$$GAF^SDECU2(DFN)
S REQUEST("Request",NUM,"RecallPatientSensitiveRecordAccessChecks")=$$PTSEC^SDECUTL(DFN)
S REQUEST("Request",NUM,"RecallSimilarPatientData")=$$SIM^SDECU3(DFN)
S REQUEST("Request",NUM,"ProviderIEN")=""
S REQUEST("Request",NUM,"ProviderName")=""
;
I '$D(REQUEST("Request",NUM,"PatientIndicatedDate"))="" D
.S REQUEST("Request",NUM,"PatientIndicatedDate")=""
; build appointment request and consult
I '$D(^SDEC(409.86,"SRP",RECALLIEN)) D
.D SDECONTACT^SDESGETREQWRAPPR(.REQUEST,NUM)
D APPTREQUEST^SDESGETREQWRAPPR(.REQUEST,NUM)
D CONSULT^SDESGETREQWRAPPR(.REQUEST,NUM)
;
Q
;
BUILDJSON(JSONRETURN,RETURN) ;
D ENCODE^XLFJSON("RETURN","JSONRETURN","ERR")
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDESGETRECALL 4322 printed May 14, 2023@15:17:43 Page 2
SDESGETRECALL ;ALB/BLB,MGD,RRM,BWF - VISTA SCHEDULING - GET RECALL REQUESTS ;Feb 14, 2023
+1 ;;5.3;Scheduling;**803,805,809,813,815,820,824,837**;Aug 13, 1993;Build 4
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;
+4 ;
+5 ;
+6 ; for an example of the return object, see SDESGETREQWRAPPR due to its length.
+7 ;
+8 QUIT
+9 ;
GETRECALLBYIEN(JSONRETURN,RECALLIEN,EAS) ;
+1 NEW ISRECALLIENVALID,RETURN,REQUEST,ERRORS
+2 ;
+3 SET ISRECALLIENVALID=$$VALIDATERECIEN(.ERRORS,$GET(RECALLIEN))
+4 SET ISEASVALID=$$VALIDATEEAS(.ERRORS,$GET(EAS))
+5 IF $DATA(ERRORS)
SET ERRORS("Request",1)=""
MERGE RETURN=ERRORS
+6 ;
+7 IF '$DATA(ERRORS)
Begin DoDot:1
+8 SET DFN=$$GET1^DIQ(403.5,RECALLIEN,.01,"I")
+9 DO GETRECALL(.REQUEST,RECALLIEN,DFN)
End DoDot:1
+10 IF '$DATA(REQUEST)
SET REQUEST("Request",1)=""
+11 MERGE RETURN=REQUEST
+12 ;
+13 DO BUILDJSON(.JSONRETURN,.RETURN)
QUIT
+14 QUIT
+15 ;
GETRECALLSBYDFN(JSONRETURN,DFN,EAS) ;
+1 NEW ISDFNVALID,ISEASVALID,REQUEST,RECALLIEN,ERRORS,RETURN
+2 ;
+3 SET ISDFNVALID=$$VALIDATEDFN(.ERRORS,$GET(DFN))
+4 SET ISEASVALID=$$VALIDATEEAS(.ERRORS,$GET(EAS))
+5 IF $DATA(ERRORS)
SET ERRORS("Request",1)=""
MERGE RETURN=ERRORS
DO BUILDJSON(.JSONRETURN,.RETURN)
QUIT
+6 ;
+7 SET RECALLIEN=0
+8 FOR
SET RECALLIEN=$ORDER(^SD(403.5,"B",DFN,RECALLIEN))
if RECALLIEN=""
QUIT
Begin DoDot:1
+9 DO GETRECALL(.REQUEST,RECALLIEN,DFN)
End DoDot:1
+10 IF '$DATA(REQUEST)
SET REQUEST("Request",1)=""
+11 MERGE RETURN=REQUEST
+12 DO BUILDJSON(.JSONRETURN,.RETURN)
QUIT
+13 QUIT
+14 ;
VALIDATERECIEN(ERRORS,RECALLIEN) ;
+1 IF RECALLIEN=""
DO ERRLOG^SDESJSON(.ERRORS,16)
QUIT 0
+2 IF RECALLIEN'=""
IF '$DATA(^SD(403.5,RECALLIEN))!(RECALLIEN=0)
DO ERRLOG^SDESJSON(.ERRORS,17)
QUIT 0
+3 QUIT 1
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 ;
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 ;
GETRECALL(REQUEST,RECALLIEN,DFN) ;
+1 NEW F,RECARY,NUM,IENS
+2 DO GETS^DIQ(403.5,RECALLIEN,"**","IE","RECARY","SDMSG")
+3 SET F=403.5
SET NUM=""
+4 SET NUM=$ORDER(REQUEST("Request",NUM),-1)+1
+5 SET IENS=RECALLIEN_","
+6 ;
+7 DO BUILDSDECONTACT^SDESGETAPPTREQ(.REQUEST,RECALLIEN,NUM,"R")
+8 ;
+9 SET REQUEST("Request",NUM,"Type")="Recall"
+10 SET REQUEST("Request",NUM,"PatientIEN")=DFN
+11 SET REQUEST("Request",NUM,"PatientICN")=$$GETPATICN^SDESINPUTVALUTL(DFN)
+12 SET REQUEST("Request",NUM,"PatientName")=RECARY(F,IENS,.01,"E")
+13 SET REQUEST("Request",NUM,"RequestIEN")=RECALLIEN
+14 SET REQUEST("Request",NUM,"EASTrackingNumber")=RECARY(F,IENS,100,"E")
+15 SET REQUEST("Request",NUM,"RecallAccessionNumber")=RECARY(F,IENS,2,"E")
+16 SET REQUEST("Request",NUM,"RecallComment")=RECARY(F,IENS,2.5,"E")
+17 SET REQUEST("Request",NUM,"RecallFastingNonFasting")=RECARY(F,IENS,2.6,"E")
+18 SET REQUEST("Request",NUM,"RecallProviderIEN")=RECARY(F,IENS,4,"I")
+19 SET REQUEST("Request",NUM,"RecallProviderName")=$$GET1^DIQ(403.54,RECARY(F,IENS,4,"I"),.01,"E")
+20 SET REQUEST("Request",NUM,"ClinicIEN")=RECARY(F,IENS,4.5,"I")
+21 SET REQUEST("Request",NUM,"ClinicName")=RECARY(F,IENS,4.5,"E")
+22 ;
SET REQUEST("Request",NUM,"RecallAppointmentLength")=RECARY(F,IENS,4.7,"E")
+23 SET REQUEST("Request",NUM,"RecallProviderIndicatedDate")=$$FMTISO^SDAMUTDT(RECARY(F,IENS,5,"I"))
+24 SET REQUEST("Request",NUM,"PatientIndicatedDate")=$$FMTISO^SDAMUTDT(RECARY(F,IENS,5.5,"I"))
+25 SET REQUEST("Request",NUM,"RecallDateReminderSent")=$$FMTISO^SDAMUTDT(RECARY(F,IENS,6,"I"))
+26 SET REQUEST("Request",NUM,"EnteredByIEN")=RECARY(F,IENS,7,"I")
+27 SET REQUEST("Request",NUM,"EnteredByName")=RECARY(F,IENS,7,"E")
+28 SET REQUEST("Request",NUM,"RecallSecondPrint")=$$FMTISO^SDAMUTDT(RECARY(F,IENS,8,"I"))
+29 SET REQUEST("Request",NUM,"CreateDate")=$$FMTISO^SDAMUTDT(RECARY(403.5,IENS,7.5,"I"))
+30 SET REQUEST("Request",NUM,"RecallGAFScore")=$$GAF^SDECU2(DFN)
+31 SET REQUEST("Request",NUM,"RecallPatientSensitiveRecordAccessChecks")=$$PTSEC^SDECUTL(DFN)
+32 SET REQUEST("Request",NUM,"RecallSimilarPatientData")=$$SIM^SDECU3(DFN)
+33 SET REQUEST("Request",NUM,"ProviderIEN")=""
+34 SET REQUEST("Request",NUM,"ProviderName")=""
+35 ;
+36 IF '$DATA(REQUEST("Request",NUM,"PatientIndicatedDate"))=""
Begin DoDot:1
+37 SET REQUEST("Request",NUM,"PatientIndicatedDate")=""
End DoDot:1
+38 ; build appointment request and consult
+39 IF '$DATA(^SDEC(409.86,"SRP",RECALLIEN))
Begin DoDot:1
+40 DO SDECONTACT^SDESGETREQWRAPPR(.REQUEST,NUM)
End DoDot:1
+41 DO APPTREQUEST^SDESGETREQWRAPPR(.REQUEST,NUM)
+42 DO CONSULT^SDESGETREQWRAPPR(.REQUEST,NUM)
+43 ;
+44 QUIT
+45 ;
BUILDJSON(JSONRETURN,RETURN) ;
+1 DO ENCODE^XLFJSON("RETURN","JSONRETURN","ERR")
+2 QUIT
+3 ;