SDES2UNDOCHECKIN ;ALB/AGW - VISTA SCHEDULING RPCS ;MAR 12, 2026
;;5.3;Scheduling;**940**;Aug 13, 1993;Build 5
;;Per VHA Directive 6402, this routine should not be modified
;; Reference to DUZ^XUP is supported by IA #7487
;
; Clone of SDESCANCHECKIN
;
; The SDCONTEXT array is controlled by the Acheron application and its fields are
; needed for the storage of the required auditing information.
;
; SDCONTEXT("ACHERON AUDIT ID") = Up to 40 Character unique ID number. Ex: 11d9dcc6-c6a2-4785-8031-8261576fca37
; SDCONTEXT("PATIENT DFN") = The DFN/IEN of the target patient from the calling application.
; SDCONTEXT("PATIENT ICN") = The ICN of the target patient from the calling application.
; SDCONTEXT("USER DUZ") = The DUZ of the user taking action in the calling application.
; SDCONTEXT("USER SECID") = The SECID of the user taking action in the calling application.
;
; SDINPUT
; SDINPUT("APPT IEN") = IEN of SDEC APPOINTMENT (#409.84) file record to remove check in (required)
; SDINPUT("FULL OBJECT") = 1 RETURNS THE FULL APPOINTMENT OBJECT (OPT)
;
Q
UNDOCHECKIN(SDRESULT,SDCONTEXT,SDINPUT) ;Remove checkin
N DFN,SDESSTART,RESOURCE,CLINICIEN,SDESSTART,SDERRORS,CANCKIN,APPTDAT,APPTOBJ,FDA,UNDOCKIN
N RES,C,DA,DSIHCL,DSIHFS,DSIHFS,DSPV150,EVN,FS,HL16,HL7STRG,HLA,HLHDR,HLN,HLECH
N HLPARAM,HLQ,HLSAN,HLTYPE,HLX,IEN,J,PIVOT,R,REF,S,VA,VACNTRY,VAERR,XQXFLG,XX,Y,Z0,ZMID,ZTSK
N DGNOCOPF,DGWRT,DIERR,DISYS,DT,DTIME,IVMZ10F,VALRET,APPTIEN,APPTIENS,HLFS,DGMT,%DT
N HLCS,HLDOM,HLFORMAT,HLINST,HLPROD,HLRESLT,HLARYTYP
D VALCONTEXT^SDES2VALCONTEXT(.SDERRORS,.SDCONTEXT)
I $D(SDERRORS) S SDERRORS("undoCheckin",1)="" D BUILDJSON^SDES2JSON(.SDRESULT,.SDERRORS) Q
I $G(SDCONTEXT("USER DUZ"))'="" N DUZ D DUZ^XUP(SDCONTEXT("USER DUZ"))
D VALIDATE(.SDINPUT,.APPTIEN,.DFN,.CLINICIEN,.SDESSTART,.RESOURCE,.APPTOBJ,.SDERRORS)
I $D(SDERRORS) S SDERRORS("undoCheckin",1)="" D BUILDJSON^SDES2JSON(.SDRESULT,.SDERRORS) Q
D SDECCHK(APPTIEN,DFN,CLINICIEN,SDESSTART,.SDERRORS) ; sets field .03 (Checkin), in file 409.84
I $D(SDERRORS) D ERRLOG^SDES2JSON S SDERRORS("undoCheckin",1)="" D BUILDJSON^SDES2JSON(.SDRESULT,.SDERRORS) Q
D BUILDJSON(.SDRESULT,APPTOBJ,.SDERRORS)
I $D(SDERRORS) D ERRLOG^SDES2JSON S SDERRORS("undoCheckin",1)="" D BUILDJSON^SDES2JSON(.SDRESULT,.SDERRORS) Q
Q
;
SDECCHK(APPTIEN,DFN,CLINICIEN,SDESSTART,SDERRORS) ; sets field .03 (Checkin), in file 409.84
N SDDA,SDCIHDL,SDATA,SDECFDA,SDECMSG,SDECIENS
S SDDA=$$FIND^SDESCHECKOUT(DFN,SDESSTART,CLINICIEN)
S SDATA=SDDA_U_DFN_U_SDESSTART_U_CLINICIEN
S SDCIHDL=$$HANDLE^SDAMEVT(1)
D BEFORE^SDAMEVT(.SDATA,DFN,SDESSTART,CLINICIEN,SDDA,SDCIHDL)
S APPTIENS=APPTIEN_","
S FDA(409.84,APPTIENS,100)=$G(SDCONTEXT("ACHERON AUDIT ID"))
S SDECFDA(409.84,APPTIENS,.03)="@"
S SDECFDA(409.84,APPTIENS,.04)="@"
D FILE^DIE("","SDECFDA","SDERRORS")
S FDA(44.003,SDDA_","_SDESSTART_","_CLINICIEN_",",309)="" D FILE^DIE(,"FDA","ERR")
K FDA,ERR
D AFTER^SDAMEVT(.SDATA,DFN,SDESSTART,CLINICIEN,SDDA,SDCIHDL)
D EVT^SDAMEVT(.SDATA,4,2,SDCIHDL)
M UNDOCKIN("UndoCheckIn",1)=SDATA(1)
Q
;
VALIDATE(SDINPUT,APPTIEN,DFN,CLINICIEN,SDESSTART,RESOURCE,APPTOBJ,SDERRORS) ;Validate SDINPUT
N APPTIENS,SL,SDSI,X1,X2,SDDAY,SDCNT,ESC
S APPTIEN=$G(SDINPUT("APPT IEN"))
D VALFILEIEN^SDES2VALUTIL(.VALRET,.SDERRORS,409.84,APPTIEN,1,0,14,15) Q:$D(SDERRORS)
S APPTIENS=APPTIEN_","
D GETS^DIQ(409.84,APPTIEN,".01;.03;.05;.07;.12","I","APPTDAT","SDERRORS") Q:$D(SDERRORS)
I $G(APPTDAT(409.84,APPTIENS,.12,"I"))]"" D ERRLOG^SDES2JSON(.SDERRORS,322) Q
I '$G(APPTDAT(409.84,APPTIENS,.03,"I")) D ERRLOG^SDES2JSON(.SDERRORS,318) Q
S RESOURCE=$$GET1^DIQ(409.84,APPTIEN,.07,"I") I ('RESOURCE) D ERRLOG^SDES2JSON(.SDERRORS,282) Q
S CLINICIEN=$$GET1^DIQ(409.831,RESOURCE,.04,"I")
I 'CLINICIEN D ERRLOG^SDESJSON(.SDERRORS,283) Q
S DFN=$$GET1^DIQ(409.84,APPTIEN,.05,"I")
S SDESSTART=$$GET1^DIQ(409.84,APPTIEN,.01,"I")
S APPTOBJ=$G(SDINPUT("FULL OBJECT")) S:APPTOBJ="" APPTOBJ=0
D VALBOOLEAN^SDES2UTIL1(.SDERRORS,APPTOBJ,0,"SDINPUT(""FULL OBJECT"")")
Q
;
BUILDJSON(SDRESULT,APPTOBJ,SDERRORS) ; build json file
I '($G(APPTOBJ)) D
. S CANCKIN("undoCheckin",1,"Results")="Undo check-in successful"
. D BUILDJSON^SDES2JSON(.SDRESULT,.CANCKIN)
. Q
I ($G(APPTOBJ)) D
. D BUILDAPPTOBJ^SDES2BLDAPPTOBJ(.APPTOBJ,APPTIEN,1,.SDERRORS)
. I $D(SDERRORS) S SDERRORS("undoCheckin",1)="" Q
. M CANCKIN("undoCheckin",1,"Appointment")=APPTOBJ("Appointment",1)
. S CANCKIN("undoCheckin",1,"Results")="Undo check-in successful"
. D BUILDJSON^SDES2JSON(.SDRESULT,.CANCKIN)
. Q
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDES2UNDOCHECKIN 4623 printed May 25, 2026@12:59:25 Page 2
SDES2UNDOCHECKIN ;ALB/AGW - VISTA SCHEDULING RPCS ;MAR 12, 2026
+1 ;;5.3;Scheduling;**940**;Aug 13, 1993;Build 5
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;; Reference to DUZ^XUP is supported by IA #7487
+4 ;
+5 ; Clone of SDESCANCHECKIN
+6 ;
+7 ; The SDCONTEXT array is controlled by the Acheron application and its fields are
+8 ; needed for the storage of the required auditing information.
+9 ;
+10 ; SDCONTEXT("ACHERON AUDIT ID") = Up to 40 Character unique ID number. Ex: 11d9dcc6-c6a2-4785-8031-8261576fca37
+11 ; SDCONTEXT("PATIENT DFN") = The DFN/IEN of the target patient from the calling application.
+12 ; SDCONTEXT("PATIENT ICN") = The ICN of the target patient from the calling application.
+13 ; SDCONTEXT("USER DUZ") = The DUZ of the user taking action in the calling application.
+14 ; SDCONTEXT("USER SECID") = The SECID of the user taking action in the calling application.
+15 ;
+16 ; SDINPUT
+17 ; SDINPUT("APPT IEN") = IEN of SDEC APPOINTMENT (#409.84) file record to remove check in (required)
+18 ; SDINPUT("FULL OBJECT") = 1 RETURNS THE FULL APPOINTMENT OBJECT (OPT)
+19 ;
+20 QUIT
UNDOCHECKIN(SDRESULT,SDCONTEXT,SDINPUT) ;Remove checkin
+1 NEW DFN,SDESSTART,RESOURCE,CLINICIEN,SDESSTART,SDERRORS,CANCKIN,APPTDAT,APPTOBJ,FDA,UNDOCKIN
+2 NEW RES,C,DA,DSIHCL,DSIHFS,DSIHFS,DSPV150,EVN,FS,HL16,HL7STRG,HLA,HLHDR,HLN,HLECH
+3 NEW HLPARAM,HLQ,HLSAN,HLTYPE,HLX,IEN,J,PIVOT,R,REF,S,VA,VACNTRY,VAERR,XQXFLG,XX,Y,Z0,ZMID,ZTSK
+4 NEW DGNOCOPF,DGWRT,DIERR,DISYS,DT,DTIME,IVMZ10F,VALRET,APPTIEN,APPTIENS,HLFS,DGMT,%DT
+5 NEW HLCS,HLDOM,HLFORMAT,HLINST,HLPROD,HLRESLT,HLARYTYP
+6 DO VALCONTEXT^SDES2VALCONTEXT(.SDERRORS,.SDCONTEXT)
+7 IF $DATA(SDERRORS)
SET SDERRORS("undoCheckin",1)=""
DO BUILDJSON^SDES2JSON(.SDRESULT,.SDERRORS)
QUIT
+8 IF $GET(SDCONTEXT("USER DUZ"))'=""
NEW DUZ
DO DUZ^XUP(SDCONTEXT("USER DUZ"))
+9 DO VALIDATE(.SDINPUT,.APPTIEN,.DFN,.CLINICIEN,.SDESSTART,.RESOURCE,.APPTOBJ,.SDERRORS)
+10 IF $DATA(SDERRORS)
SET SDERRORS("undoCheckin",1)=""
DO BUILDJSON^SDES2JSON(.SDRESULT,.SDERRORS)
QUIT
+11 ; sets field .03 (Checkin), in file 409.84
DO SDECCHK(APPTIEN,DFN,CLINICIEN,SDESSTART,.SDERRORS)
+12 IF $DATA(SDERRORS)
DO ERRLOG^SDES2JSON
SET SDERRORS("undoCheckin",1)=""
DO BUILDJSON^SDES2JSON(.SDRESULT,.SDERRORS)
QUIT
+13 DO BUILDJSON(.SDRESULT,APPTOBJ,.SDERRORS)
+14 IF $DATA(SDERRORS)
DO ERRLOG^SDES2JSON
SET SDERRORS("undoCheckin",1)=""
DO BUILDJSON^SDES2JSON(.SDRESULT,.SDERRORS)
QUIT
+15 QUIT
+16 ;
SDECCHK(APPTIEN,DFN,CLINICIEN,SDESSTART,SDERRORS) ; sets field .03 (Checkin), in file 409.84
+1 NEW SDDA,SDCIHDL,SDATA,SDECFDA,SDECMSG,SDECIENS
+2 SET SDDA=$$FIND^SDESCHECKOUT(DFN,SDESSTART,CLINICIEN)
+3 SET SDATA=SDDA_U_DFN_U_SDESSTART_U_CLINICIEN
+4 SET SDCIHDL=$$HANDLE^SDAMEVT(1)
+5 DO BEFORE^SDAMEVT(.SDATA,DFN,SDESSTART,CLINICIEN,SDDA,SDCIHDL)
+6 SET APPTIENS=APPTIEN_","
+7 SET FDA(409.84,APPTIENS,100)=$GET(SDCONTEXT("ACHERON AUDIT ID"))
+8 SET SDECFDA(409.84,APPTIENS,.03)="@"
+9 SET SDECFDA(409.84,APPTIENS,.04)="@"
+10 DO FILE^DIE("","SDECFDA","SDERRORS")
+11 SET FDA(44.003,SDDA_","_SDESSTART_","_CLINICIEN_",",309)=""
DO FILE^DIE(,"FDA","ERR")
+12 KILL FDA,ERR
+13 DO AFTER^SDAMEVT(.SDATA,DFN,SDESSTART,CLINICIEN,SDDA,SDCIHDL)
+14 DO EVT^SDAMEVT(.SDATA,4,2,SDCIHDL)
+15 MERGE UNDOCKIN("UndoCheckIn",1)=SDATA(1)
+16 QUIT
+17 ;
VALIDATE(SDINPUT,APPTIEN,DFN,CLINICIEN,SDESSTART,RESOURCE,APPTOBJ,SDERRORS) ;Validate SDINPUT
+1 NEW APPTIENS,SL,SDSI,X1,X2,SDDAY,SDCNT,ESC
+2 SET APPTIEN=$GET(SDINPUT("APPT IEN"))
+3 DO VALFILEIEN^SDES2VALUTIL(.VALRET,.SDERRORS,409.84,APPTIEN,1,0,14,15)
if $DATA(SDERRORS)
QUIT
+4 SET APPTIENS=APPTIEN_","
+5 DO GETS^DIQ(409.84,APPTIEN,".01;.03;.05;.07;.12","I","APPTDAT","SDERRORS")
if $DATA(SDERRORS)
QUIT
+6 IF $GET(APPTDAT(409.84,APPTIENS,.12,"I"))]""
DO ERRLOG^SDES2JSON(.SDERRORS,322)
QUIT
+7 IF '$GET(APPTDAT(409.84,APPTIENS,.03,"I"))
DO ERRLOG^SDES2JSON(.SDERRORS,318)
QUIT
+8 SET RESOURCE=$$GET1^DIQ(409.84,APPTIEN,.07,"I")
IF ('RESOURCE)
DO ERRLOG^SDES2JSON(.SDERRORS,282)
QUIT
+9 SET CLINICIEN=$$GET1^DIQ(409.831,RESOURCE,.04,"I")
+10 IF 'CLINICIEN
DO ERRLOG^SDESJSON(.SDERRORS,283)
QUIT
+11 SET DFN=$$GET1^DIQ(409.84,APPTIEN,.05,"I")
+12 SET SDESSTART=$$GET1^DIQ(409.84,APPTIEN,.01,"I")
+13 SET APPTOBJ=$GET(SDINPUT("FULL OBJECT"))
if APPTOBJ=""
SET APPTOBJ=0
+14 DO VALBOOLEAN^SDES2UTIL1(.SDERRORS,APPTOBJ,0,"SDINPUT(""FULL OBJECT"")")
+15 QUIT
+16 ;
BUILDJSON(SDRESULT,APPTOBJ,SDERRORS) ; build json file
+1 IF '($GET(APPTOBJ))
Begin DoDot:1
+2 SET CANCKIN("undoCheckin",1,"Results")="Undo check-in successful"
+3 DO BUILDJSON^SDES2JSON(.SDRESULT,.CANCKIN)
+4 QUIT
End DoDot:1
+5 IF ($GET(APPTOBJ))
Begin DoDot:1
+6 DO BUILDAPPTOBJ^SDES2BLDAPPTOBJ(.APPTOBJ,APPTIEN,1,.SDERRORS)
+7 IF $DATA(SDERRORS)
SET SDERRORS("undoCheckin",1)=""
QUIT
+8 MERGE CANCKIN("undoCheckin",1,"Appointment")=APPTOBJ("Appointment",1)
+9 SET CANCKIN("undoCheckin",1,"Results")="Undo check-in successful"
+10 DO BUILDJSON^SDES2JSON(.SDRESULT,.CANCKIN)
+11 QUIT
End DoDot:1
+12 QUIT