SDES2GETPATSTAT ;ALB/BLB,LAB - SDES2 GET PATIENT CLINIC STATUS ; Jun 5,2025
;;5.3;Scheduling;**869,909**;Aug 13, 1993;Build 12
;;Per VHA Directive 6402, this routine should not be modified
;
; Reference to DUZ^XUP is supported by IA #7487
;
Q
;
GETPATIENTSTATUS(JSON,SDCONTEXT,PATIENT) ;
N STATUS,ERRORS,DFN,CLINICIEN,STOPCODE
;
D POPULATE(.PATIENT,.DFN,.CLINICIEN,.STOPCODE)
D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
I $D(ERRORS) S ERRORS("PatientClinicstatus",1)="" D BUILDJSON^SDES2JSON(.JSON,.ERRORS) Q
I $G(SDCONTEXT("USER DUZ"))'="" N DUZ D DUZ^XUP(SDCONTEXT("USER DUZ"))
D VALIDATE(.ERRORS,.DFN,.CLINICIEN)
I $D(ERRORS) S ERRORS("PatientClinicstatus",1)="" D BUILDJSON^SDES2JSON(.JSON,.ERRORS) Q
;
S STATUS("PatientClinicStatus","Status")=$$GETSTATUS(DFN,CLINICIEN,STOPCODE)
;
D BUILDJSON^SDES2JSON(.JSON,.STATUS)
Q
;
GETSTATUS(DFN,CLINICIEN,STOPCODE) ;
N APPTIEN,APPTDATETIME,FOUND,PATIENTSTATUS,BEGINDATE,ENDDATE
;
S PATIENTSTATUS="NEW"
S BEGINDATE=$P($$FMADD^XLFDT($$NOW^XLFDT,-1095),".",1)
S ENDDATE=$P($$NOW^XLFDT,".")
;
S APPTDATETIME=$$GETSUB^SDES2UTIL(BEGINDATE),FOUND=0
F S APPTDATETIME=$O(^SDEC(409.84,"APTDT",DFN,APPTDATETIME)) Q:'APPTDATETIME!(PATIENTSTATUS="ESTABLISHED")!($P(APPTDATETIME,".")>ENDDATE) D
.S APPTIEN=0
.F S APPTIEN=$O(^SDEC(409.84,"APTDT",DFN,APPTDATETIME,APPTIEN)) Q:'APPTIEN D
..I $$GET1^DIQ(44,$$GET1^DIQ(409.831,$$GET1^DIQ(409.84,APPTIEN,.07,"I"),.04,"I"),8,"I")=STOPCODE D
...I $P(APPTDATETIME,".")>=BEGINDATE,$P(APPTDATETIME,".")<=ENDDATE,$$GET1^DIQ(409.84,APPTIEN,.14,"I") D
....S PATIENTSTATUS="ESTABLISHED"
;
Q PATIENTSTATUS
;
VALIDATE(ERRORS,DFN,CLINICIEN) ;
N VAL
D VALFILEIEN^SDES2VALUTIL(.VAL,.ERRORS,44,CLINICIEN,1,,18,19)
D VALFILEIEN^SDES2VALUTIL(.VAL,.ERRORS,2,DFN,1,,1,2)
I $D(ERRORS) Q
;
I '$$GET1^DIQ(44,CLINICIEN,8,"I") D ERRLOG^SDESJSON(.ERRORS,"This clinic does not have a defined stop code number")
Q
;
POPULATE(PATIENT,DFN,CLINICIEN,STOPCODE) ;
S DFN=$G(PATIENT("DFN"))
S CLINICIEN=$G(PATIENT("CLINIC IEN"))
S STOPCODE=$$GET1^DIQ(44,CLINICIEN,8,"I")
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDES2GETPATSTAT 2131 printed Apr 22, 2026@14:51:48 Page 2
SDES2GETPATSTAT ;ALB/BLB,LAB - SDES2 GET PATIENT CLINIC STATUS ; Jun 5,2025
+1 ;;5.3;Scheduling;**869,909**;Aug 13, 1993;Build 12
+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 ;
GETPATIENTSTATUS(JSON,SDCONTEXT,PATIENT) ;
+1 NEW STATUS,ERRORS,DFN,CLINICIEN,STOPCODE
+2 ;
+3 DO POPULATE(.PATIENT,.DFN,.CLINICIEN,.STOPCODE)
+4 DO VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
+5 IF $DATA(ERRORS)
SET ERRORS("PatientClinicstatus",1)=""
DO BUILDJSON^SDES2JSON(.JSON,.ERRORS)
QUIT
+6 IF $GET(SDCONTEXT("USER DUZ"))'=""
NEW DUZ
DO DUZ^XUP(SDCONTEXT("USER DUZ"))
+7 DO VALIDATE(.ERRORS,.DFN,.CLINICIEN)
+8 IF $DATA(ERRORS)
SET ERRORS("PatientClinicstatus",1)=""
DO BUILDJSON^SDES2JSON(.JSON,.ERRORS)
QUIT
+9 ;
+10 SET STATUS("PatientClinicStatus","Status")=$$GETSTATUS(DFN,CLINICIEN,STOPCODE)
+11 ;
+12 DO BUILDJSON^SDES2JSON(.JSON,.STATUS)
+13 QUIT
+14 ;
GETSTATUS(DFN,CLINICIEN,STOPCODE) ;
+1 NEW APPTIEN,APPTDATETIME,FOUND,PATIENTSTATUS,BEGINDATE,ENDDATE
+2 ;
+3 SET PATIENTSTATUS="NEW"
+4 SET BEGINDATE=$PIECE($$FMADD^XLFDT($$NOW^XLFDT,-1095),".",1)
+5 SET ENDDATE=$PIECE($$NOW^XLFDT,".")
+6 ;
+7 SET APPTDATETIME=$$GETSUB^SDES2UTIL(BEGINDATE)
SET FOUND=0
+8 FOR
SET APPTDATETIME=$ORDER(^SDEC(409.84,"APTDT",DFN,APPTDATETIME))
if 'APPTDATETIME!(PATIENTSTATUS="ESTABLISHED")!($PIECE(APPTDATETIME,".")>ENDDATE)
QUIT
Begin DoDot:1
+9 SET APPTIEN=0
+10 FOR
SET APPTIEN=$ORDER(^SDEC(409.84,"APTDT",DFN,APPTDATETIME,APPTIEN))
if 'APPTIEN
QUIT
Begin DoDot:2
+11 IF $$GET1^DIQ(44,$$GET1^DIQ(409.831,$$GET1^DIQ(409.84,APPTIEN,.07,"I"),.04,"I"),8,"I")=STOPCODE
Begin DoDot:3
+12 IF $PIECE(APPTDATETIME,".")>=BEGINDATE
IF $PIECE(APPTDATETIME,".")<=ENDDATE
IF $$GET1^DIQ(409.84,APPTIEN,.14,"I")
Begin DoDot:4
+13 SET PATIENTSTATUS="ESTABLISHED"
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+14 ;
+15 QUIT PATIENTSTATUS
+16 ;
VALIDATE(ERRORS,DFN,CLINICIEN) ;
+1 NEW VAL
+2 DO VALFILEIEN^SDES2VALUTIL(.VAL,.ERRORS,44,CLINICIEN,1,,18,19)
+3 DO VALFILEIEN^SDES2VALUTIL(.VAL,.ERRORS,2,DFN,1,,1,2)
+4 IF $DATA(ERRORS)
QUIT
+5 ;
+6 IF '$$GET1^DIQ(44,CLINICIEN,8,"I")
DO ERRLOG^SDESJSON(.ERRORS,"This clinic does not have a defined stop code number")
+7 QUIT
+8 ;
POPULATE(PATIENT,DFN,CLINICIEN,STOPCODE) ;
+1 SET DFN=$GET(PATIENT("DFN"))
+2 SET CLINICIEN=$GET(PATIENT("CLINIC IEN"))
+3 SET STOPCODE=$$GET1^DIQ(44,CLINICIEN,8,"I")
+4 QUIT
+5 ;