SDES2GETPATSTAT ;ALB/BLB - SDES2 GET PATIENT CLINIC STATUS Jan 08, 2024
;;5.3;Scheduling;**869**;Aug 13, 1993;Build 13
;;Per VHA Directive 6402, this routine should not be modified
;
Q
;
GETPATIENTSTATUS(JSON,SDCONTEXT,PATIENT) ;
N STATUS,ERRORS,DFN,CLINICIEN,STOPCODE
;
D POPULATE(.PATIENT,.DFN,.CLINICIEN,.STOPCODE)
D VALIDATE(.ERRORS,.SDCONTEXT,.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,SDCONTEXT,DFN,CLINICIEN) ;
N VAL
;
D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
I $D(ERRORS) Q
;
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 1951 printed Apr 23, 2025@19:08:40 Page 2
SDES2GETPATSTAT ;ALB/BLB - SDES2 GET PATIENT CLINIC STATUS Jan 08, 2024
+1 ;;5.3;Scheduling;**869**;Aug 13, 1993;Build 13
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;
+4 QUIT
+5 ;
GETPATIENTSTATUS(JSON,SDCONTEXT,PATIENT) ;
+1 NEW STATUS,ERRORS,DFN,CLINICIEN,STOPCODE
+2 ;
+3 DO POPULATE(.PATIENT,.DFN,.CLINICIEN,.STOPCODE)
+4 DO VALIDATE(.ERRORS,.SDCONTEXT,.DFN,.CLINICIEN)
+5 IF $DATA(ERRORS)
SET ERRORS("PatientClinicstatus",1)=""
DO BUILDJSON^SDES2JSON(.JSON,.ERRORS)
QUIT
+6 ;
+7 SET STATUS("PatientClinicStatus","Status")=$$GETSTATUS(DFN,CLINICIEN,STOPCODE)
+8 ;
+9 DO BUILDJSON^SDES2JSON(.JSON,.STATUS)
+10 QUIT
+11 ;
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,SDCONTEXT,DFN,CLINICIEN) ;
+1 NEW VAL
+2 ;
+3 DO VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
+4 IF $DATA(ERRORS)
QUIT
+5 ;
+6 DO VALFILEIEN^SDES2VALUTIL(.VAL,.ERRORS,44,CLINICIEN,1,,18,19)
+7 DO VALFILEIEN^SDES2VALUTIL(.VAL,.ERRORS,2,DFN,1,,1,2)
+8 IF $DATA(ERRORS)
QUIT
+9 ;
+10 IF '$$GET1^DIQ(44,CLINICIEN,8,"I")
DO ERRLOG^SDESJSON(.ERRORS,"This clinic does not have a defined stop code number")
+11 QUIT
+12 ;
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 ;