SDES2NOSHOW ;ALB/BLB,BLB,JAS,MGD,BLB,LAB,TJB,JHC,LAB - SDES2 NO-SHOW ;MAR 03,2026
;;5.3;Scheduling;**871,875,889,915,919,927,909,929**;Aug 13, 1993;Build 9
;;Per VHA Directive 6402, this routine should not be modified
;
; Reference to DUZ^XUP is supported by IA #7487
;
Q
;
NOSHOW(JSON,SDCONTEXT,NOSHOW) ;
N ERRORS,RETURN,DATA,APPTIEN,DFN,PARENTREQUEST,APPTDATETIME,CLINICIEN,EVENT,REQUESTTYPE,REQUESTIEN,CLINICAPPTIEN,RECALL
N RECALLREQIEN,RECALLREQLINK,OLDRECALLPTR
; Leaking variables from external calls
N %DT,C,DSIHCL,DSIHFS,DSPV150,EVN,J,HL16,HL7STRG,HLA,HLECH,HLFS,HLQ,IEN,PIVOT,R,REF,RTN,S,SEQ,SCHEMAIL,SDCODES,VA,VACNTRY,VAERR,XQXFLG,XX,Y,Z0
;
D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
I $D(ERRORS) S ERRORS("NoShow",1)="" D BUILDJSON^SDESBUILDJSON(.JSON,.ERRORS) Q
I $G(SDCONTEXT("USER DUZ"))'="" N DUZ D DUZ^XUP(SDCONTEXT("USER DUZ"))
;
D VALIDATE($G(NOSHOW("APPOINTMENT IEN")))
I $D(ERRORS) S ERRORS("NoShow",1)="" D BUILDJSON^SDESBUILDJSON(.JSON,.ERRORS) Q
;
D POPULATE(.NOSHOW,.SDCONTEXT,.APPTIEN,.DFN,.APPTDATETIME,.CLINICIEN,.REQUESTTYPE,.REQUESTIEN,.CLINICAPPTIEN,,,,.PARENTREQUEST)
;
D EVENTHANDLER1(.DATA,DFN,APPTDATETIME,CLINICIEN,.EVENT,CLINICAPPTIEN)
;
D NOSHOW40984(APPTIEN)
D NOSHOW2(APPTDATETIME,DFN)
;
I REQUESTTYPE="APPT" D NOSHOW40985(REQUESTIEN,PARENTREQUEST,APPTIEN,.SDCONTEXT)
I REQUESTTYPE="RECALL" D
. D REOPEN^SDESRECALLREQ(.RECALL,APPTIEN,,,,1)
. I '$D(RECALL) Q
. S RECALLREQIEN=$P($G(RECALL),U)
. S RECALLREQLINK=$P($G(RECALL),U,2)
. S OLDRECALLPTR=$P($G(RECALL),U,3)
. D UPDCONTSEQ^SDESCONTACTS($G(DFN),$G(RECALLREQIEN),$G(RECALLREQLINK),$G(OLDRECALLPTR))
;
I REQUESTTYPE="CONSULT" D
. N GMRCDUZ
. D NOSHOW^SDCNSLT(CLINICIEN,APPTDATETIME,DFN,REQUESTIEN,CLINICAPPTIEN)
;
;
D EVENTHANDLER2(.DATA,DFN,APPTDATETIME,CLINICIEN,.EVENT,CLINICAPPTIEN)
;
S RETURN("NoShow",1)="No-show complete."
D BUILDJSON^SDESBUILDJSON(.JSON,.RETURN)
Q
;
NOSHOW40984(APPTIEN) ;
N FDA,IENS
;
S IENS=APPTIEN_","
S FDA(409.84,IENS,.1)=1
S FDA(409.84,IENS,.101)=$$NOW^XLFDT
S FDA(409.84,IENS,.102)=DUZ
S FDA(409.84,IENS,.17)="N"
D FILE^DIE(,"FDA") K FDA
Q
;
NOSHOW2(APPTDATETIME,DFN) ;
N FDA,IENS
;
S IENS=APPTDATETIME_","_DFN_","
S FDA(2.98,IENS,3)="N"
S FDA(2.98,IENS,14)=DUZ
S FDA(2.98,IENS,15)=$$NOW^XLFDT
D FILE^DIE(,"FDA") K FDA
Q
;
NOSHOW40985(REQUESTIEN,PARENTREQUEST,APPTIEN,SDCONTEXT) ;
N FDA,IENS,ERROR
;
S IENS=REQUESTIEN_","
S FDA(409.85,IENS,49)=1
S FDA(409.85,IENS,19)="@"
S FDA(409.85,IENS,20)="@"
S FDA(409.85,IENS,21)="@"
S FDA(409.85,IENS,23)="O"
S FDA(409.85,IENS,13)="@"
S FDA(409.85,IENS,13.1)="@"
S FDA(409.85,IENS,13.2)="@"
S FDA(409.85,IENS,13.3)="@"
S FDA(409.85,IENS,13.4)="@"
S FDA(409.85,IENS,13.6)="@"
S FDA(409.85,IENS,13.7)="@"
S FDA(409.85,IENS,13.8)="@"
S FDA(409.85,IENS,100)=$G(SDCONTEXT("ACHERON AUDIT ID"))
D FILE^DIE(,"FDA") K FDA
;
I $G(PARENTREQUEST),$$GET1^DIQ(409.85,PARENTREQUEST,23,"I")="C" D
. S FDA(409.85,PARENTREQUEST_",",19)="@"
. S FDA(409.85,PARENTREQUEST_",",20)="@"
. S FDA(409.85,PARENTREQUEST_",",21)="@"
. S FDA(409.85,PARENTREQUEST_",",23)="O"
. S FDA(409.85,PARENTREQUEST_",",100)=$G(SDCONTEXT("ACHERON AUDIT ID"))
. D FILE^DIE(,"FDA","ERROR") K FDA
I $G(PARENTREQUEST) D
. D REMOVEMRTCAPTIEN^SDES2CANCELAPPT(REQUESTIEN,APPTIEN,PARENTREQUEST) ;
Q
;
VALIDATE(APPTIEN) ;
N SDCLINIC,NOW,CLINICDT
D VALFILEIEN^SDES2VALUTIL(,.ERRORS,409.84,APPTIEN,1,,14,15)
I $D(ERRORS) Q
;
I $$GET1^DIQ(409.84,APPTIEN,.1,"I") D ERRLOG^SDESJSON(.ERRORS,367)
S SDCLINIC=$$GET1^DIQ(409.831,$$GET1^DIQ(409.84,APPTIEN,.07,"I"),.04,"I")
S NOW=$$FMTISO^SDAMUTDT($$NOW^XLFDT())
S CLINICDT=$$ISOTFM^SDAMUTDT(NOW,SDCLINIC)
I CLINICDT<$$GET1^DIQ(409.84,APPTIEN,.01,"I") D ERRLOG^SDESJSON(.ERRORS,369)
Q
;
GET44APPTIEN(CLINICIEN,APPTDATETIME,DFN) ;
N FOUND,SUBIEN,RECORDIEN
S FOUND=0,RECORDIEN=""
S SUBIEN=0
F S SUBIEN=$O(^SC(CLINICIEN,"S",APPTDATETIME,1,SUBIEN)) Q:'SUBIEN!($G(FOUND)=1) D
.I $$GET1^DIQ(44.003,SUBIEN_","_APPTDATETIME_","_CLINICIEN_",",310)="CANCELLED" Q
.I $$GET1^DIQ(44.003,SUBIEN_","_APPTDATETIME_","_CLINICIEN_",",.01,"I")=DFN D
..S RECORDIEN=SUBIEN,FOUND=1
Q RECORDIEN
;
EVENTHANDLER1(DATA,DFN,APPTDATETIME,CLINICIEN,EVENT,CLINICAPPTIEN) ;
S DATA=CLINICAPPTIEN_U_DFN_U_APPTDATETIME_U_CLINICIEN
S EVENT=$$HANDLE^SDAMEVT(1)
D BEFORE^SDAMEVT(.DATA,DFN,APPTDATETIME,CLINICIEN,CLINICAPPTIEN,EVENT)
Q
;
EVENTHANDLER2(DATA,DFN,APPTDATETIME,CLINICIEN,EVENT,CLINICAPPTIEN) ;
D AFTER^SDAMEVT(.DATA,DFN,APPTDATETIME,CLINICIEN,CLINICAPPTIEN,EVENT)
D EVT^SDAMEVT(.DATA,3,2,EVENT) ;
I $$GET1^DIQ(2.98,APPTDATETIME_","_DFN_",",21,"I") D
.D EN^SDCODEL($$GET1^DIQ(2.98,APPTDATETIME_","_DFN_",",21,"I"),2,"","NOSHOW")
Q
;
POPULATE(NOSHOW,SDCONTEXT,APPTIEN,DFN,APPTDATETIME,CLINICIEN,REQUESTTYPE,REQUESTIEN,CLINICAPPTIEN,PROVIDER,NOTE,RESOURCE,PARENTREQUEST) ;
S APPTIEN=$G(NOSHOW("APPOINTMENT IEN"))
S DFN=$$GET1^DIQ(409.84,APPTIEN,.05,"I")
S APPTDATETIME=$$GET1^DIQ(409.84,APPTIEN,.01,"I")
S CLINICIEN=$$GET1^DIQ(409.831,$$GET1^DIQ(409.84,APPTIEN,.07,"I"),.04,"I")
S REQUESTTYPE=$$GET1^DIQ(409.84,APPTIEN,.22)
S REQUESTIEN=$P($$GET1^DIQ(409.84,APPTIEN,.22,"I"),";")
S CLINICAPPTIEN=$$GET44APPTIEN(CLINICIEN,APPTDATETIME,DFN)
S PROVIDER=$$GET1^DIQ(409.84,APPTIEN,.16,"I")
S NOTE=$$GET1^DIQ(409.84,APPTIEN,1,"E")
S RESOURCE=$$GET1^DIQ(409.84,APPTIEN,.07,"I")
S PARENTREQUEST=$$GET1^DIQ(409.85,REQUESTIEN,43.8,"I")
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDES2NOSHOW 5551 printed Apr 22, 2026@14:52:08 Page 2
SDES2NOSHOW ;ALB/BLB,BLB,JAS,MGD,BLB,LAB,TJB,JHC,LAB - SDES2 NO-SHOW ;MAR 03,2026
+1 ;;5.3;Scheduling;**871,875,889,915,919,927,909,929**;Aug 13, 1993;Build 9
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;
+4 ; Reference to DUZ^XUP is supported by IA #7487
+5 ;
+6 QUIT
+7 ;
NOSHOW(JSON,SDCONTEXT,NOSHOW) ;
+1 NEW ERRORS,RETURN,DATA,APPTIEN,DFN,PARENTREQUEST,APPTDATETIME,CLINICIEN,EVENT,REQUESTTYPE,REQUESTIEN,CLINICAPPTIEN,RECALL
+2 NEW RECALLREQIEN,RECALLREQLINK,OLDRECALLPTR
+3 ; Leaking variables from external calls
+4 NEW %DT,C,DSIHCL,DSIHFS,DSPV150,EVN,J,HL16,HL7STRG,HLA,HLECH,HLFS,HLQ,IEN,PIVOT,R,REF,RTN,S,SEQ,SCHEMAIL,SDCODES,VA,VACNTRY,VAERR,XQXFLG,XX,Y,Z0
+5 ;
+6 DO VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
+7 IF $DATA(ERRORS)
SET ERRORS("NoShow",1)=""
DO BUILDJSON^SDESBUILDJSON(.JSON,.ERRORS)
QUIT
+8 IF $GET(SDCONTEXT("USER DUZ"))'=""
NEW DUZ
DO DUZ^XUP(SDCONTEXT("USER DUZ"))
+9 ;
+10 DO VALIDATE($GET(NOSHOW("APPOINTMENT IEN")))
+11 IF $DATA(ERRORS)
SET ERRORS("NoShow",1)=""
DO BUILDJSON^SDESBUILDJSON(.JSON,.ERRORS)
QUIT
+12 ;
+13 DO POPULATE(.NOSHOW,.SDCONTEXT,.APPTIEN,.DFN,.APPTDATETIME,.CLINICIEN,.REQUESTTYPE,.REQUESTIEN,.CLINICAPPTIEN,,,,.PARENTREQUEST)
+14 ;
+15 DO EVENTHANDLER1(.DATA,DFN,APPTDATETIME,CLINICIEN,.EVENT,CLINICAPPTIEN)
+16 ;
+17 DO NOSHOW40984(APPTIEN)
+18 DO NOSHOW2(APPTDATETIME,DFN)
+19 ;
+20 IF REQUESTTYPE="APPT"
DO NOSHOW40985(REQUESTIEN,PARENTREQUEST,APPTIEN,.SDCONTEXT)
+21 IF REQUESTTYPE="RECALL"
Begin DoDot:1
+22 DO REOPEN^SDESRECALLREQ(.RECALL,APPTIEN,,,,1)
+23 IF '$DATA(RECALL)
QUIT
+24 SET RECALLREQIEN=$PIECE($GET(RECALL),U)
+25 SET RECALLREQLINK=$PIECE($GET(RECALL),U,2)
+26 SET OLDRECALLPTR=$PIECE($GET(RECALL),U,3)
+27 DO UPDCONTSEQ^SDESCONTACTS($GET(DFN),$GET(RECALLREQIEN),$GET(RECALLREQLINK),$GET(OLDRECALLPTR))
End DoDot:1
+28 ;
+29 IF REQUESTTYPE="CONSULT"
Begin DoDot:1
+30 NEW GMRCDUZ
+31 DO NOSHOW^SDCNSLT(CLINICIEN,APPTDATETIME,DFN,REQUESTIEN,CLINICAPPTIEN)
End DoDot:1
+32 ;
+33 ;
+34 DO EVENTHANDLER2(.DATA,DFN,APPTDATETIME,CLINICIEN,.EVENT,CLINICAPPTIEN)
+35 ;
+36 SET RETURN("NoShow",1)="No-show complete."
+37 DO BUILDJSON^SDESBUILDJSON(.JSON,.RETURN)
+38 QUIT
+39 ;
NOSHOW40984(APPTIEN) ;
+1 NEW FDA,IENS
+2 ;
+3 SET IENS=APPTIEN_","
+4 SET FDA(409.84,IENS,.1)=1
+5 SET FDA(409.84,IENS,.101)=$$NOW^XLFDT
+6 SET FDA(409.84,IENS,.102)=DUZ
+7 SET FDA(409.84,IENS,.17)="N"
+8 DO FILE^DIE(,"FDA")
KILL FDA
+9 QUIT
+10 ;
NOSHOW2(APPTDATETIME,DFN) ;
+1 NEW FDA,IENS
+2 ;
+3 SET IENS=APPTDATETIME_","_DFN_","
+4 SET FDA(2.98,IENS,3)="N"
+5 SET FDA(2.98,IENS,14)=DUZ
+6 SET FDA(2.98,IENS,15)=$$NOW^XLFDT
+7 DO FILE^DIE(,"FDA")
KILL FDA
+8 QUIT
+9 ;
NOSHOW40985(REQUESTIEN,PARENTREQUEST,APPTIEN,SDCONTEXT) ;
+1 NEW FDA,IENS,ERROR
+2 ;
+3 SET IENS=REQUESTIEN_","
+4 SET FDA(409.85,IENS,49)=1
+5 SET FDA(409.85,IENS,19)="@"
+6 SET FDA(409.85,IENS,20)="@"
+7 SET FDA(409.85,IENS,21)="@"
+8 SET FDA(409.85,IENS,23)="O"
+9 SET FDA(409.85,IENS,13)="@"
+10 SET FDA(409.85,IENS,13.1)="@"
+11 SET FDA(409.85,IENS,13.2)="@"
+12 SET FDA(409.85,IENS,13.3)="@"
+13 SET FDA(409.85,IENS,13.4)="@"
+14 SET FDA(409.85,IENS,13.6)="@"
+15 SET FDA(409.85,IENS,13.7)="@"
+16 SET FDA(409.85,IENS,13.8)="@"
+17 SET FDA(409.85,IENS,100)=$GET(SDCONTEXT("ACHERON AUDIT ID"))
+18 DO FILE^DIE(,"FDA")
KILL FDA
+19 ;
+20 IF $GET(PARENTREQUEST)
IF $$GET1^DIQ(409.85,PARENTREQUEST,23,"I")="C"
Begin DoDot:1
+21 SET FDA(409.85,PARENTREQUEST_",",19)="@"
+22 SET FDA(409.85,PARENTREQUEST_",",20)="@"
+23 SET FDA(409.85,PARENTREQUEST_",",21)="@"
+24 SET FDA(409.85,PARENTREQUEST_",",23)="O"
+25 SET FDA(409.85,PARENTREQUEST_",",100)=$GET(SDCONTEXT("ACHERON AUDIT ID"))
+26 DO FILE^DIE(,"FDA","ERROR")
KILL FDA
End DoDot:1
+27 IF $GET(PARENTREQUEST)
Begin DoDot:1
+28 ;
DO REMOVEMRTCAPTIEN^SDES2CANCELAPPT(REQUESTIEN,APPTIEN,PARENTREQUEST)
End DoDot:1
+29 QUIT
+30 ;
VALIDATE(APPTIEN) ;
+1 NEW SDCLINIC,NOW,CLINICDT
+2 DO VALFILEIEN^SDES2VALUTIL(,.ERRORS,409.84,APPTIEN,1,,14,15)
+3 IF $DATA(ERRORS)
QUIT
+4 ;
+5 IF $$GET1^DIQ(409.84,APPTIEN,.1,"I")
DO ERRLOG^SDESJSON(.ERRORS,367)
+6 SET SDCLINIC=$$GET1^DIQ(409.831,$$GET1^DIQ(409.84,APPTIEN,.07,"I"),.04,"I")
+7 SET NOW=$$FMTISO^SDAMUTDT($$NOW^XLFDT())
+8 SET CLINICDT=$$ISOTFM^SDAMUTDT(NOW,SDCLINIC)
+9 IF CLINICDT<$$GET1^DIQ(409.84,APPTIEN,.01,"I")
DO ERRLOG^SDESJSON(.ERRORS,369)
+10 QUIT
+11 ;
GET44APPTIEN(CLINICIEN,APPTDATETIME,DFN) ;
+1 NEW FOUND,SUBIEN,RECORDIEN
+2 SET FOUND=0
SET RECORDIEN=""
+3 SET SUBIEN=0
+4 FOR
SET SUBIEN=$ORDER(^SC(CLINICIEN,"S",APPTDATETIME,1,SUBIEN))
if 'SUBIEN!($GET(FOUND)=1)
QUIT
Begin DoDot:1
+5 IF $$GET1^DIQ(44.003,SUBIEN_","_APPTDATETIME_","_CLINICIEN_",",310)="CANCELLED"
QUIT
+6 IF $$GET1^DIQ(44.003,SUBIEN_","_APPTDATETIME_","_CLINICIEN_",",.01,"I")=DFN
Begin DoDot:2
+7 SET RECORDIEN=SUBIEN
SET FOUND=1
End DoDot:2
End DoDot:1
+8 QUIT RECORDIEN
+9 ;
EVENTHANDLER1(DATA,DFN,APPTDATETIME,CLINICIEN,EVENT,CLINICAPPTIEN) ;
+1 SET DATA=CLINICAPPTIEN_U_DFN_U_APPTDATETIME_U_CLINICIEN
+2 SET EVENT=$$HANDLE^SDAMEVT(1)
+3 DO BEFORE^SDAMEVT(.DATA,DFN,APPTDATETIME,CLINICIEN,CLINICAPPTIEN,EVENT)
+4 QUIT
+5 ;
EVENTHANDLER2(DATA,DFN,APPTDATETIME,CLINICIEN,EVENT,CLINICAPPTIEN) ;
+1 DO AFTER^SDAMEVT(.DATA,DFN,APPTDATETIME,CLINICIEN,CLINICAPPTIEN,EVENT)
+2 ;
DO EVT^SDAMEVT(.DATA,3,2,EVENT)
+3 IF $$GET1^DIQ(2.98,APPTDATETIME_","_DFN_",",21,"I")
Begin DoDot:1
+4 DO EN^SDCODEL($$GET1^DIQ(2.98,APPTDATETIME_","_DFN_",",21,"I"),2,"","NOSHOW")
End DoDot:1
+5 QUIT
+6 ;
POPULATE(NOSHOW,SDCONTEXT,APPTIEN,DFN,APPTDATETIME,CLINICIEN,REQUESTTYPE,REQUESTIEN,CLINICAPPTIEN,PROVIDER,NOTE,RESOURCE,PARENTREQUEST) ;
+1 SET APPTIEN=$GET(NOSHOW("APPOINTMENT IEN"))
+2 SET DFN=$$GET1^DIQ(409.84,APPTIEN,.05,"I")
+3 SET APPTDATETIME=$$GET1^DIQ(409.84,APPTIEN,.01,"I")
+4 SET CLINICIEN=$$GET1^DIQ(409.831,$$GET1^DIQ(409.84,APPTIEN,.07,"I"),.04,"I")
+5 SET REQUESTTYPE=$$GET1^DIQ(409.84,APPTIEN,.22)
+6 SET REQUESTIEN=$PIECE($$GET1^DIQ(409.84,APPTIEN,.22,"I"),";")
+7 SET CLINICAPPTIEN=$$GET44APPTIEN(CLINICIEN,APPTDATETIME,DFN)
+8 SET PROVIDER=$$GET1^DIQ(409.84,APPTIEN,.16,"I")
+9 SET NOTE=$$GET1^DIQ(409.84,APPTIEN,1,"E")
+10 SET RESOURCE=$$GET1^DIQ(409.84,APPTIEN,.07,"I")
+11 SET PARENTREQUEST=$$GET1^DIQ(409.85,REQUESTIEN,43.8,"I")
+12 QUIT