SDESNOSHOW ;ALB/BWF,BLB,ANU - VISTA SCHEDULING RPCS NOSHOW/UNDO NOSHOW ; OCT 25, 2023
;;5.3;Scheduling;**831,835,847,853,864**;Aug 13, 1993;Build 15
;;Per VHA Directive 6402, this routine should not be modified
;
Q
NOSHOW(SDESRES,APPTIEN) ;
N DFN,APPTDTTM,REQTYPE,PROVIDER,NOTE,RESOURCE,SDECNOEV,SDESENCOUNTER,REQIEN,APPTIENS,NOSHOW
N SDATA,SDCIHDL,SDDA,CURRENTSTAT,CURNOSHOWDTTM,ERRORS,RESTYPE,CLINICIEN,RESULT,UPDSTAT,FDA
S SDECNOEV=1 ;Don't execute protocol
;
S APPTIEN=$G(APPTIEN)
;validate appointment ID
D VALAPPTIEN^SDESVALUTIL(.ERRORS,APPTIEN)
I $D(ERRORS) S ERRORS("NoShow",1)="" D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS) Q
;
D GETVARS(APPTIEN,.CURRENTSTAT,.CURNOSHOWDTTM,.DFN,.APPTDTTM,.PROVIDER,.REQIEN,.NOSHOW,.REQTYPE,.USERIEN,.RESOURCE)
S SDESNOSHOWDTTM=$$NOW^XLFDT
;
; check resource and clinic validity
I 'RESOURCE D ERRLOG^SDESJSON(.ERRORS,282)
S CLINICIEN=$$GET1^DIQ(409.831,RESOURCE,.04,"I")
I 'CLINICIEN D ERRLOG^SDESJSON(.ERRORS,283)
; already in noshow status
I NOSHOW!(CURRENTSTAT="N"!(CURNOSHOWDTTM]"")) D ERRLOG^SDESJSON(.ERRORS,367)
I $D(ERRORS) S ERRORS("NoShow",1)="" D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS) Q
; make sure no-show is not occuring before appointment date/time
I SDESNOSHOWDTTM<APPTDTTM S ERRORS("NoShow",1)="" D ERRLOG^SDESJSON(.ERRORS,369)
I $D(ERRORS) S ERRORS("NoShow",1)="" D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS) Q
;
; Event driver "BEFORE" actions
S SDDA=$$FIND^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN)
D BEFOREEVT(.SDATA,DFN,APPTDTTM,CLINICIEN,.SDCIHDL)
;
; Process no show
;
D UPDNOSHOWSTAT(.ERRORS,APPTIEN,USERIEN,SDESNOSHOWDTTM,1)
; if an error was returned, build the JSON and quit
I $D(ERRORS) D Q
.D ERRLOG^SDESJSON(.ERRORS,370)
.S ERRORS("NoShow",1)="" D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS) Q
;
D APPTNOSHOW(.ERRORS,CLINICIEN,DFN,APPTDTTM,USERIEN,SDESNOSHOWDTTM,APPTIEN)
I $D(ERRORS) D Q
.D ERRLOG^SDESJSON(.ERRORS,371)
.S ERRORS("NoShow",1)=""
.D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
;
; only update PID if the updates to 409.84 and 2.98 were successful
; PID CHANGE ALLOWED Field in 409.85 based on whether no-show or cancel no-show
S UPDSTAT=$$GET1^DIQ(409.84,APPTIEN,.17,"I")
I REQTYPE="APPT",UPDSTAT="N" D
.S FDA(409.85,REQIEN_",",19)=""
.S FDA(409.85,REQIEN_",",20)=""
.S FDA(409.85,REQIEN_",",21)=""
.; 864
.;S FDA(409.85,REQIEN_",",23)="OPEN"
.S FDA(409.85,REQIEN_",",23)="O"
.S FDA(409.85,REQIEN_",",49)=1
.D FILE^DIE("","FDA") K FDA
;
; fix action required in PCE after no-show from GUI
; SDESENCOUNTER - outpatient encounter
; Anu
;S SDESENCOUNTER=$$GETAPT^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN)
S SDESENCOUNTER=$$GETAPT^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN,.ERRORS)
I $D(ERRORS) D Q
.D ERRLOG^SDESJSON(.ERRORS,174)
.S ERRORS("NoShow",1)=""
.D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
;
I SDESENCOUNTER D EN^SDCODEL(SDESENCOUNTER,2,"","NOSHOW") ;suppress event logging for cancel checkout when no-showing
;
; Event driver "AFTER" actions
D AFTEREVTS(.SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL)
;
S RESULT("NoShow")="No-show complete."
D BUILDJSON^SDESBUILDJSON(.SDESRES,.RESULT)
Q
UNDONOSHOW(SDESRES,APPTIEN) ;
N DFN,APPTDTTM,REQTYPE,CONS,CONSULTIEN,PROVIDER,NOTE,RESOURCE,SDECNOEV,SDESENCOUNTER,REQIEN,APPTIENS,NOSHOW,RESTXT
N CURRENTSTAT,CURNOSHOWDTTM,ERRORS,RESTYPE,CLINICIEN,RESULT,UPDSTAT,FDA
N SDATA,SDCIHDL,SDDA
S SDECNOEV=1 ;Don't execute protocol
;
S APPTIEN=$G(APPTIEN)
;validate appointment ID
D VALAPPTIEN^SDESVALUTIL(.ERRORS,APPTIEN)
I $D(ERRORS) S ERRORS("UndoNoShow",1)="" D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS) Q
;
D GETVARS(APPTIEN,.CURRENTSTAT,.CURNOSHOWDTTM,.DFN,.APPTDTTM,.PROVIDER,.REQIEN,.NOSHOW,.REQTYPE,.USERIEN,.RESOURCE)
S SDESNOSHOWDTTM=""
;
; check resource and clinic validity
I 'RESOURCE D ERRLOG^SDESJSON(.ERRORS,282)
S CLINICIEN=$$GET1^DIQ(409.831,RESOURCE,.04,"I")
I 'CLINICIEN D ERRLOG^SDESJSON(.ERRORS,283)
;
; if not in no-show already do not continue
I 'NOSHOW!(CURRENTSTAT'="N") D ERRLOG^SDESJSON(.ERRORS,368)
I $D(ERRORS) S ERRORS("UndoNoShow",1)="" D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS) Q
;
; Event driver "BEFORE" actions
S SDDA=$$FIND^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN)
D BEFOREEVT(.SDATA,DFN,APPTDTTM,CLINICIEN,.SDCIHDL)
;
; Process no show
;
D UPDNOSHOWSTAT(.ERRORS,APPTIEN,USERIEN,SDESNOSHOWDTTM,0)
; if an error was returned, build the JSON and quit
I $D(ERRORS) D Q
.D ERRLOG^SDESJSON(.ERRORS,370)
.S ERRORS("UndoNoShow",1)="" D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS) Q
;
D APPTUNDONOSHOW(.ERRORS,CLINICIEN,DFN,APPTDTTM,USERIEN,SDESNOSHOWDTTM,APPTIEN)
I $D(ERRORS) D Q
.D ERRLOG^SDESJSON(.ERRORS,371)
.S ERRORS("UndoNoShow",1)=""
.D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
;
; only update PID if the updates to 409.84 and 2.98 were successful
; PID CHANGE ALLOWED Field in 409.85 based on whether no-show or cancel no-show
S UPDSTAT=$$GET1^DIQ(409.84,APPTIEN,.17,"I")
I REQTYPE="APPT",UPDSTAT'="N" D
.S FDA(409.85,REQIEN_",",19)=""
.S FDA(409.85,REQIEN_",",20)=""
.S FDA(409.85,REQIEN_",",21)=""
.; 864
.;S FDA(409.85,REQIEN_",",23)="CLOSED"
.S FDA(409.85,REQIEN_",",23)="C"
.S FDA(409.85,REQIEN_",",49)=0
.D FILE^DIE("","FDA") K FDA
;
;
; fix action required in PCE after no-show from GUI
; SDESENCOUNTER - outpatient encounter
; Anu
;S SDESENCOUNTER=$$GETAPT^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN)
S SDESENCOUNTER=$$GETAPT^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN,.ERRORS)
I $D(ERRORS) D Q
.D ERRLOG^SDESJSON(.ERRORS,174)
.S ERRORS("UndoNoShow",1)=""
.D BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
;
I SDESENCOUNTER D EN^SDCODEL(SDESENCOUNTER,2,"","NOSHOW") ;suppress event logging for cancel checkout when no-showing
;
; Event driver "AFTER" actions
;
;remove undo no-show from grid; /BLB/
;
I REQTYPE="CONSULT" D CONSREQUESTSET(PROVIDER,APPTDTTM,RESOURCE)
D AFTEREVTS(.SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL)
;
S RESULT("UndoNoShow")="Undo No-show complete."
D BUILDJSON^SDESBUILDJSON(.SDESRES,.RESULT)
Q
; get variables needed for processing
GETVARS(APPTIEN,CURRENTSTAT,CURNOSHOWDTTM,DFN,APPTDTTM,PROVIDER,REQIEN,NOSHOW,REQTYPE,USERIEN,RESOURCE) ;
N APPTIENS,APPTDAT,APPTERR
S APPTIENS=APPTIEN_","
D GETS^DIQ(409.84,APPTIENS,".01;.05;.07;.16;.17;.1;.101;.102;.22","I","APPTDAT","APPTERR")
S CURRENTSTAT=$G(APPTDAT(409.84,APPTIENS,.17,"I"))
S CURNOSHOWDTTM=$G(APPTDAT(409.84,APPTIENS,.101,"I"))
S DFN=$G(APPTDAT(409.84,APPTIENS,.05,"I"))
S APPTDTTM=$G(APPTDAT(409.84,APPTIENS,.01,"I"))
S PROVIDER=$G(APPTDAT(409.84,APPTIENS,.16,"I"))
S REQIEN=$P($G(APPTDAT(409.84,APPTIENS,.22,"I")),";")
S NOSHOW=$G(APPTDAT(409.84,APPTIENS,.1,"I"))
S REQTYPE=$$GET1^DIQ(409.84,APPTIENS,.22,"E")
S USERIEN=$G(DUZ)
S RESOURCE=$G(APPTDAT(409.84,APPTIENS,.07,"I"))
Q
;
CONSREQUESTSET(PROVIDER,APPTDTTM,RESOURCE) ;
N REQTYPE,CONS,CONSULTIEN,NOTE
S REQTYPE=$$GET1^DIQ(409.84,APPTIEN,.22,"E")
I REQTYPE="CONSULT" D
.S CONS=$$GET1^DIQ(409.84,APPTIEN,.22,"I")
.S CONSULTIEN=$P(CONS,";",1)
.S NOTE=$$GET1^DIQ(409.84,APPTIEN,1,"E")
.D REQSET^SDESCONSULTUPD(CONSULTIEN,PROVIDER,,1,,NOTE,APPTDTTM,RESOURCE)
Q
;
; update file 2 info
;Set noshow for patient DFN in CLINICIEN SDCL
;at time SDT
APPTNOSHOW(ERRORS,SDCL,DFN,SDT,USERIEN,SDECCDT,SDAPID) ;
N SDRTYP,SDECIENS,SDFDA,SDECMSG,IEN
S SDECIENS=SDT_","_DFN_","
S SDFDA(2.98,SDECIENS,3)="N"
S SDFDA(2.98,SDECIENS,14)=USERIEN
S SDFDA(2.98,SDECIENS,15)=SDECCDT
D FILE^DIE("","SDFDA","SDECMSG")
I $D(SDECMSG) D ERRLOG^SDESJSON(.ERRORS,52,$G(SDECMSG("DIERR",1,"TEXT",1))) Q
D UPDCNSLT(SDAPID,DFN,SDCL,SDT)
Q
; Remove no-show fields from file 2
APPTUNDONOSHOW(ERRORS,SDCL,DFN,SDT,USERIEN,SDECCDT,SDAPID) ;
N SDRTYP,SDECIENS,SDFDA,SDECMSG,IEN
S SDECIENS=SDT_","_DFN_","
S SDFDA(2.98,SDECIENS,3)=""
S SDFDA(2.98,SDECIENS,14)=""
S SDFDA(2.98,SDECIENS,15)=""
D FILE^DIE("","SDFDA","SDECMSG")
I $D(SDECMSG) D ERRLOG^SDESJSON(.ERRORS,52,$G(SDECMSG("DIERR",1,"TEXT",1))) Q
D UPDCNSLT(SDAPID,DFN,SDCL,SDT)
Q
; update consult
UPDCNSLT(SDAPID,DFN,SDCL,SDT) ;
N SDRTYP,IEN,SDRES
S SDRTYP=$$GET1^DIQ(409.84,SDAPID_",",.22,"I")
I $P(SDRTYP,";",2)="GMR(123," D
.S IEN=$$SCIEN^SDECU2(DFN,SDCL,SDT)
.D NOSHOW^SDCNSLT(SDCL,SDT,DFN,$P(SDRTYP,";",1),IEN)
;for Recall Request APPT NOSHOW
I $P(SDRTYP,";",2)="SD(403.5," D REOPEN^SDESRECALLREQ(.SDESRES,APPTIEN,SDRTYP)
Q
; set 409.84 no-show fields
UPDNOSHOWSTAT(ERRORS,APPTIEN,USERIEN,SDESNOSHOWDTTM,NOSHOWSTAT) ;
N SDFDA,SDECIENS,SDECMSG
S SDECIENS=APPTIEN_","
S SDFDA(409.84,SDECIENS,.1)=NOSHOWSTAT ;NOSHOW
S SDFDA(409.84,SDECIENS,.101)=$G(SDESNOSHOWDTTM) ;NOSHOW DATE
S SDFDA(409.84,SDECIENS,.102)=$G(USERIEN) ;NOSHOW USER
S SDFDA(409.84,SDECIENS,.17)=$S(NOSHOWSTAT:"N",1:"") ; Update STATUS
D FILE^DIE("","SDFDA","SDECMSG")
I $D(SDECMSG("DIERR")) S SDECMSG=$G(SDECMSG("DIERR",1,"TEXT",1)) D ERRLOG^SDESJSON(.ERRORS,52,SDECMSG)
Q
;
BEFOREEVT(SDATA,DFN,APPTDTTM,CLINICIEN,SDCIHDL) ;
S SDATA=SDDA_U_DFN_U_APPTDTTM_U_CLINICIEN
S SDCIHDL=$$HANDLE^SDAMEVT(1)
D BEFORE^SDAMEVT(.SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL)
Q
AFTEREVTS(SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL) ;
D AFTER^SDAMEVT(.SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL)
; Execute event driver. 3=no show (see #409.66), 2=non-interactive
D EVT^SDAMEVT(.SDATA,3,2,SDCIHDL) ;
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDESNOSHOW 9516 printed Nov 22, 2024@18:07:16 Page 2
SDESNOSHOW ;ALB/BWF,BLB,ANU - VISTA SCHEDULING RPCS NOSHOW/UNDO NOSHOW ; OCT 25, 2023
+1 ;;5.3;Scheduling;**831,835,847,853,864**;Aug 13, 1993;Build 15
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;
+4 QUIT
NOSHOW(SDESRES,APPTIEN) ;
+1 NEW DFN,APPTDTTM,REQTYPE,PROVIDER,NOTE,RESOURCE,SDECNOEV,SDESENCOUNTER,REQIEN,APPTIENS,NOSHOW
+2 NEW SDATA,SDCIHDL,SDDA,CURRENTSTAT,CURNOSHOWDTTM,ERRORS,RESTYPE,CLINICIEN,RESULT,UPDSTAT,FDA
+3 ;Don't execute protocol
SET SDECNOEV=1
+4 ;
+5 SET APPTIEN=$GET(APPTIEN)
+6 ;validate appointment ID
+7 DO VALAPPTIEN^SDESVALUTIL(.ERRORS,APPTIEN)
+8 IF $DATA(ERRORS)
SET ERRORS("NoShow",1)=""
DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
QUIT
+9 ;
+10 DO GETVARS(APPTIEN,.CURRENTSTAT,.CURNOSHOWDTTM,.DFN,.APPTDTTM,.PROVIDER,.REQIEN,.NOSHOW,.REQTYPE,.USERIEN,.RESOURCE)
+11 SET SDESNOSHOWDTTM=$$NOW^XLFDT
+12 ;
+13 ; check resource and clinic validity
+14 IF 'RESOURCE
DO ERRLOG^SDESJSON(.ERRORS,282)
+15 SET CLINICIEN=$$GET1^DIQ(409.831,RESOURCE,.04,"I")
+16 IF 'CLINICIEN
DO ERRLOG^SDESJSON(.ERRORS,283)
+17 ; already in noshow status
+18 IF NOSHOW!(CURRENTSTAT="N"!(CURNOSHOWDTTM]""))
DO ERRLOG^SDESJSON(.ERRORS,367)
+19 IF $DATA(ERRORS)
SET ERRORS("NoShow",1)=""
DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
QUIT
+20 ; make sure no-show is not occuring before appointment date/time
+21 IF SDESNOSHOWDTTM<APPTDTTM
SET ERRORS("NoShow",1)=""
DO ERRLOG^SDESJSON(.ERRORS,369)
+22 IF $DATA(ERRORS)
SET ERRORS("NoShow",1)=""
DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
QUIT
+23 ;
+24 ; Event driver "BEFORE" actions
+25 SET SDDA=$$FIND^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN)
+26 DO BEFOREEVT(.SDATA,DFN,APPTDTTM,CLINICIEN,.SDCIHDL)
+27 ;
+28 ; Process no show
+29 ;
+30 DO UPDNOSHOWSTAT(.ERRORS,APPTIEN,USERIEN,SDESNOSHOWDTTM,1)
+31 ; if an error was returned, build the JSON and quit
+32 IF $DATA(ERRORS)
Begin DoDot:1
+33 DO ERRLOG^SDESJSON(.ERRORS,370)
+34 SET ERRORS("NoShow",1)=""
DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
QUIT
End DoDot:1
QUIT
+35 ;
+36 DO APPTNOSHOW(.ERRORS,CLINICIEN,DFN,APPTDTTM,USERIEN,SDESNOSHOWDTTM,APPTIEN)
+37 IF $DATA(ERRORS)
Begin DoDot:1
+38 DO ERRLOG^SDESJSON(.ERRORS,371)
+39 SET ERRORS("NoShow",1)=""
+40 DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
End DoDot:1
QUIT
+41 ;
+42 ; only update PID if the updates to 409.84 and 2.98 were successful
+43 ; PID CHANGE ALLOWED Field in 409.85 based on whether no-show or cancel no-show
+44 SET UPDSTAT=$$GET1^DIQ(409.84,APPTIEN,.17,"I")
+45 IF REQTYPE="APPT"
IF UPDSTAT="N"
Begin DoDot:1
+46 SET FDA(409.85,REQIEN_",",19)=""
+47 SET FDA(409.85,REQIEN_",",20)=""
+48 SET FDA(409.85,REQIEN_",",21)=""
+49 ; 864
+50 ;S FDA(409.85,REQIEN_",",23)="OPEN"
+51 SET FDA(409.85,REQIEN_",",23)="O"
+52 SET FDA(409.85,REQIEN_",",49)=1
+53 DO FILE^DIE("","FDA")
KILL FDA
End DoDot:1
+54 ;
+55 ; fix action required in PCE after no-show from GUI
+56 ; SDESENCOUNTER - outpatient encounter
+57 ; Anu
+58 ;S SDESENCOUNTER=$$GETAPT^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN)
+59 SET SDESENCOUNTER=$$GETAPT^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN,.ERRORS)
+60 IF $DATA(ERRORS)
Begin DoDot:1
+61 DO ERRLOG^SDESJSON(.ERRORS,174)
+62 SET ERRORS("NoShow",1)=""
+63 DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
End DoDot:1
QUIT
+64 ;
+65 ;suppress event logging for cancel checkout when no-showing
IF SDESENCOUNTER
DO EN^SDCODEL(SDESENCOUNTER,2,"","NOSHOW")
+66 ;
+67 ; Event driver "AFTER" actions
+68 DO AFTEREVTS(.SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL)
+69 ;
+70 SET RESULT("NoShow")="No-show complete."
+71 DO BUILDJSON^SDESBUILDJSON(.SDESRES,.RESULT)
+72 QUIT
UNDONOSHOW(SDESRES,APPTIEN) ;
+1 NEW DFN,APPTDTTM,REQTYPE,CONS,CONSULTIEN,PROVIDER,NOTE,RESOURCE,SDECNOEV,SDESENCOUNTER,REQIEN,APPTIENS,NOSHOW,RESTXT
+2 NEW CURRENTSTAT,CURNOSHOWDTTM,ERRORS,RESTYPE,CLINICIEN,RESULT,UPDSTAT,FDA
+3 NEW SDATA,SDCIHDL,SDDA
+4 ;Don't execute protocol
SET SDECNOEV=1
+5 ;
+6 SET APPTIEN=$GET(APPTIEN)
+7 ;validate appointment ID
+8 DO VALAPPTIEN^SDESVALUTIL(.ERRORS,APPTIEN)
+9 IF $DATA(ERRORS)
SET ERRORS("UndoNoShow",1)=""
DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
QUIT
+10 ;
+11 DO GETVARS(APPTIEN,.CURRENTSTAT,.CURNOSHOWDTTM,.DFN,.APPTDTTM,.PROVIDER,.REQIEN,.NOSHOW,.REQTYPE,.USERIEN,.RESOURCE)
+12 SET SDESNOSHOWDTTM=""
+13 ;
+14 ; check resource and clinic validity
+15 IF 'RESOURCE
DO ERRLOG^SDESJSON(.ERRORS,282)
+16 SET CLINICIEN=$$GET1^DIQ(409.831,RESOURCE,.04,"I")
+17 IF 'CLINICIEN
DO ERRLOG^SDESJSON(.ERRORS,283)
+18 ;
+19 ; if not in no-show already do not continue
+20 IF 'NOSHOW!(CURRENTSTAT'="N")
DO ERRLOG^SDESJSON(.ERRORS,368)
+21 IF $DATA(ERRORS)
SET ERRORS("UndoNoShow",1)=""
DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
QUIT
+22 ;
+23 ; Event driver "BEFORE" actions
+24 SET SDDA=$$FIND^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN)
+25 DO BEFOREEVT(.SDATA,DFN,APPTDTTM,CLINICIEN,.SDCIHDL)
+26 ;
+27 ; Process no show
+28 ;
+29 DO UPDNOSHOWSTAT(.ERRORS,APPTIEN,USERIEN,SDESNOSHOWDTTM,0)
+30 ; if an error was returned, build the JSON and quit
+31 IF $DATA(ERRORS)
Begin DoDot:1
+32 DO ERRLOG^SDESJSON(.ERRORS,370)
+33 SET ERRORS("UndoNoShow",1)=""
DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
QUIT
End DoDot:1
QUIT
+34 ;
+35 DO APPTUNDONOSHOW(.ERRORS,CLINICIEN,DFN,APPTDTTM,USERIEN,SDESNOSHOWDTTM,APPTIEN)
+36 IF $DATA(ERRORS)
Begin DoDot:1
+37 DO ERRLOG^SDESJSON(.ERRORS,371)
+38 SET ERRORS("UndoNoShow",1)=""
+39 DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
End DoDot:1
QUIT
+40 ;
+41 ; only update PID if the updates to 409.84 and 2.98 were successful
+42 ; PID CHANGE ALLOWED Field in 409.85 based on whether no-show or cancel no-show
+43 SET UPDSTAT=$$GET1^DIQ(409.84,APPTIEN,.17,"I")
+44 IF REQTYPE="APPT"
IF UPDSTAT'="N"
Begin DoDot:1
+45 SET FDA(409.85,REQIEN_",",19)=""
+46 SET FDA(409.85,REQIEN_",",20)=""
+47 SET FDA(409.85,REQIEN_",",21)=""
+48 ; 864
+49 ;S FDA(409.85,REQIEN_",",23)="CLOSED"
+50 SET FDA(409.85,REQIEN_",",23)="C"
+51 SET FDA(409.85,REQIEN_",",49)=0
+52 DO FILE^DIE("","FDA")
KILL FDA
End DoDot:1
+53 ;
+54 ;
+55 ; fix action required in PCE after no-show from GUI
+56 ; SDESENCOUNTER - outpatient encounter
+57 ; Anu
+58 ;S SDESENCOUNTER=$$GETAPT^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN)
+59 SET SDESENCOUNTER=$$GETAPT^SDESCHECKOUT(DFN,APPTDTTM,CLINICIEN,.ERRORS)
+60 IF $DATA(ERRORS)
Begin DoDot:1
+61 DO ERRLOG^SDESJSON(.ERRORS,174)
+62 SET ERRORS("UndoNoShow",1)=""
+63 DO BUILDJSON^SDESBUILDJSON(.SDESRES,.ERRORS)
End DoDot:1
QUIT
+64 ;
+65 ;suppress event logging for cancel checkout when no-showing
IF SDESENCOUNTER
DO EN^SDCODEL(SDESENCOUNTER,2,"","NOSHOW")
+66 ;
+67 ; Event driver "AFTER" actions
+68 ;
+69 ;remove undo no-show from grid; /BLB/
+70 ;
+71 IF REQTYPE="CONSULT"
DO CONSREQUESTSET(PROVIDER,APPTDTTM,RESOURCE)
+72 DO AFTEREVTS(.SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL)
+73 ;
+74 SET RESULT("UndoNoShow")="Undo No-show complete."
+75 DO BUILDJSON^SDESBUILDJSON(.SDESRES,.RESULT)
+76 QUIT
+77 ; get variables needed for processing
GETVARS(APPTIEN,CURRENTSTAT,CURNOSHOWDTTM,DFN,APPTDTTM,PROVIDER,REQIEN,NOSHOW,REQTYPE,USERIEN,RESOURCE) ;
+1 NEW APPTIENS,APPTDAT,APPTERR
+2 SET APPTIENS=APPTIEN_","
+3 DO GETS^DIQ(409.84,APPTIENS,".01;.05;.07;.16;.17;.1;.101;.102;.22","I","APPTDAT","APPTERR")
+4 SET CURRENTSTAT=$GET(APPTDAT(409.84,APPTIENS,.17,"I"))
+5 SET CURNOSHOWDTTM=$GET(APPTDAT(409.84,APPTIENS,.101,"I"))
+6 SET DFN=$GET(APPTDAT(409.84,APPTIENS,.05,"I"))
+7 SET APPTDTTM=$GET(APPTDAT(409.84,APPTIENS,.01,"I"))
+8 SET PROVIDER=$GET(APPTDAT(409.84,APPTIENS,.16,"I"))
+9 SET REQIEN=$PIECE($GET(APPTDAT(409.84,APPTIENS,.22,"I")),";")
+10 SET NOSHOW=$GET(APPTDAT(409.84,APPTIENS,.1,"I"))
+11 SET REQTYPE=$$GET1^DIQ(409.84,APPTIENS,.22,"E")
+12 SET USERIEN=$GET(DUZ)
+13 SET RESOURCE=$GET(APPTDAT(409.84,APPTIENS,.07,"I"))
+14 QUIT
+15 ;
CONSREQUESTSET(PROVIDER,APPTDTTM,RESOURCE) ;
+1 NEW REQTYPE,CONS,CONSULTIEN,NOTE
+2 SET REQTYPE=$$GET1^DIQ(409.84,APPTIEN,.22,"E")
+3 IF REQTYPE="CONSULT"
Begin DoDot:1
+4 SET CONS=$$GET1^DIQ(409.84,APPTIEN,.22,"I")
+5 SET CONSULTIEN=$PIECE(CONS,";",1)
+6 SET NOTE=$$GET1^DIQ(409.84,APPTIEN,1,"E")
+7 DO REQSET^SDESCONSULTUPD(CONSULTIEN,PROVIDER,,1,,NOTE,APPTDTTM,RESOURCE)
End DoDot:1
+8 QUIT
+9 ;
+10 ; update file 2 info
+11 ;Set noshow for patient DFN in CLINICIEN SDCL
+12 ;at time SDT
APPTNOSHOW(ERRORS,SDCL,DFN,SDT,USERIEN,SDECCDT,SDAPID) ;
+1 NEW SDRTYP,SDECIENS,SDFDA,SDECMSG,IEN
+2 SET SDECIENS=SDT_","_DFN_","
+3 SET SDFDA(2.98,SDECIENS,3)="N"
+4 SET SDFDA(2.98,SDECIENS,14)=USERIEN
+5 SET SDFDA(2.98,SDECIENS,15)=SDECCDT
+6 DO FILE^DIE("","SDFDA","SDECMSG")
+7 IF $DATA(SDECMSG)
DO ERRLOG^SDESJSON(.ERRORS,52,$GET(SDECMSG("DIERR",1,"TEXT",1)))
QUIT
+8 DO UPDCNSLT(SDAPID,DFN,SDCL,SDT)
+9 QUIT
+10 ; Remove no-show fields from file 2
APPTUNDONOSHOW(ERRORS,SDCL,DFN,SDT,USERIEN,SDECCDT,SDAPID) ;
+1 NEW SDRTYP,SDECIENS,SDFDA,SDECMSG,IEN
+2 SET SDECIENS=SDT_","_DFN_","
+3 SET SDFDA(2.98,SDECIENS,3)=""
+4 SET SDFDA(2.98,SDECIENS,14)=""
+5 SET SDFDA(2.98,SDECIENS,15)=""
+6 DO FILE^DIE("","SDFDA","SDECMSG")
+7 IF $DATA(SDECMSG)
DO ERRLOG^SDESJSON(.ERRORS,52,$GET(SDECMSG("DIERR",1,"TEXT",1)))
QUIT
+8 DO UPDCNSLT(SDAPID,DFN,SDCL,SDT)
+9 QUIT
+10 ; update consult
UPDCNSLT(SDAPID,DFN,SDCL,SDT) ;
+1 NEW SDRTYP,IEN,SDRES
+2 SET SDRTYP=$$GET1^DIQ(409.84,SDAPID_",",.22,"I")
+3 IF $PIECE(SDRTYP,";",2)="GMR(123,"
Begin DoDot:1
+4 SET IEN=$$SCIEN^SDECU2(DFN,SDCL,SDT)
+5 DO NOSHOW^SDCNSLT(SDCL,SDT,DFN,$PIECE(SDRTYP,";",1),IEN)
End DoDot:1
+6 ;for Recall Request APPT NOSHOW
+7 IF $PIECE(SDRTYP,";",2)="SD(403.5,"
DO REOPEN^SDESRECALLREQ(.SDESRES,APPTIEN,SDRTYP)
+8 QUIT
+9 ; set 409.84 no-show fields
UPDNOSHOWSTAT(ERRORS,APPTIEN,USERIEN,SDESNOSHOWDTTM,NOSHOWSTAT) ;
+1 NEW SDFDA,SDECIENS,SDECMSG
+2 SET SDECIENS=APPTIEN_","
+3 ;NOSHOW
SET SDFDA(409.84,SDECIENS,.1)=NOSHOWSTAT
+4 ;NOSHOW DATE
SET SDFDA(409.84,SDECIENS,.101)=$GET(SDESNOSHOWDTTM)
+5 ;NOSHOW USER
SET SDFDA(409.84,SDECIENS,.102)=$GET(USERIEN)
+6 ; Update STATUS
SET SDFDA(409.84,SDECIENS,.17)=$SELECT(NOSHOWSTAT:"N",1:"")
+7 DO FILE^DIE("","SDFDA","SDECMSG")
+8 IF $DATA(SDECMSG("DIERR"))
SET SDECMSG=$GET(SDECMSG("DIERR",1,"TEXT",1))
DO ERRLOG^SDESJSON(.ERRORS,52,SDECMSG)
+9 QUIT
+10 ;
BEFOREEVT(SDATA,DFN,APPTDTTM,CLINICIEN,SDCIHDL) ;
+1 SET SDATA=SDDA_U_DFN_U_APPTDTTM_U_CLINICIEN
+2 SET SDCIHDL=$$HANDLE^SDAMEVT(1)
+3 DO BEFORE^SDAMEVT(.SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL)
+4 QUIT
AFTEREVTS(SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL) ;
+1 DO AFTER^SDAMEVT(.SDATA,DFN,APPTDTTM,CLINICIEN,SDDA,SDCIHDL)
+2 ; Execute event driver. 3=no show (see #409.66), 2=non-interactive
+3 ;
DO EVT^SDAMEVT(.SDATA,3,2,SDCIHDL)
+4 QUIT