SDES2INACTCLIN ;ALB/TJB,MGD,TJB,TJB,JAS,TJB,MCB - Inactivate Clinic in HOSPITAL LOCATION FILE 44 ;May 7, 2025
;;5.3;Scheduling;**864,877,890,902,903,905,907**;Aug 13, 1993;Build 5
;;Per VHA Directive 6402, this routine should not be modified
;
; Documented API's and Integration Agreements
; -------------------------------------------
;Reference to $$GETS^DIQ is supported by IA #2056
;Reference to $$GETS1^DIQ is supported by IA #2056
;
Q
;
SDINACTCLN(SDRETURN,SDCONTEXT,SDPARAM) ;Inactivate Clinic
;INPUT -
; 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.
;
; SDPARAM("CLINIC IEN")=CLINIC IEN IEN of the clinic in file 44 - Hospital location
; SDPARAM("INACTIVATION DATE")=DATE ISO DATE to inactivate the clinic if empty default to today (DT)
; SDPARAM("DELETE INACTIVATION")="Y" Either not defined (don't pass in) or "Y" any other value errors
;
;RETURN PARMETER:
; Status
;
N ERRORS,RESULTS,CLINICIEN,INACTDATE,DELINACT,DIERR
S DELINACT=0
; validate context array
D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
I $D(ERRORS) S ERRORS("ClinicInactivate",1)="" D BUILDJSON^SDES2JSON(.SDRETURN,.ERRORS) Q
D VALCLINIEN^SDES2VAL44(.ERRORS,$G(SDPARAM("CLINIC IEN")),1)
D INIT(.SDPARAM,.CLINICIEN,.INACTDATE)
D VALIDATE(.ERRORS,.SDPARAM,INACTDATE,CLINICIEN,.DELINACT)
I $D(ERRORS) S ERRORS("ClinicInactivate",1)="" D BUILDJSON^SDES2JSON(.SDRETURN,.ERRORS) Q
I DELINACT=0 D Q:$D(ERRORS)
. D NOAPPOINTMENTS(CLINICIEN,INACTDATE,.ERRORS)
. I $D(ERRORS) S ERRORS("ClinicInactivate",1)="" D BUILDJSON^SDES2JSON(.SDRETURN,.ERRORS) Q
. ; File the inactivation on HOSPITAL LOCATION
. D BLDCINREC(.RESULTS,CLINICIEN,INACTDATE,.ERRORS)
. ; If the Clinic was inactivated then update the SDEC RESOURCE (409.831) with the inactivation information
. I '$D(ERRORS) D UPDATECLNRES(CLINICIEN,INACTDATE,$G(SDCONTEXT("USER DUZ")),.ERRORS)
. I $D(ERRORS) S ERRORS("ClinicInactivate",1)="" D BUILDJSON^SDES2JSON(.SDRETURN,.ERRORS) Q ; There was a problem updating 409.831 with the inactivation
I DELINACT=1 D
. D DELETEINACTIVE(.RESULTS,.SDPARAM,$S($G(SDCONTEXT("USER DUZ"))'="":SDCONTEXT("USER DUZ"),1:DUZ)) ; delete the inactivate date
D ENCODE^SDES2JSON(.RESULTS,.SDRETURN)
Q
;
INIT(SDPARAM,CLINICIEN,INACTDATE) ; initialize values needed
S CLINICIEN=$G(SDPARAM("CLINIC IEN"))
S INACTDATE=$G(SDPARAM("INACTIVATION DATE"))
; If no Inactivation Date then default it to today
I INACTDATE="" S INACTDATE=$$FMTISO^SDAMUTDT(DT)
Q
;
VALPARAM(ERRORS,PARAMS,DELINACT) ; Check if we are doing a delete inactivation date
N INACTDT
Q:$D(ERRORS)
I '$D(PARAMS("DELETE INACTIVATION")) Q ; No delete inactivation
I $G(PARAMS("DELETE INACTIVATION"))'="Y" D ERRLOG^SDES2JSON(.ERRORS,52,"Incorrect value for 'DELETE INACTIVATION' parameter, must be 'Y' or not provided") Q
S INACTDT=$$GET1^DIQ(44,PARAMS("CLINIC IEN"),2505,"I")
I INACTDT="" D ERRLOG^SDES2JSON(.ERRORS,52,"No INACTIVATE DATE on this clinic, can't delete INACTIVATE DATE") Q
I INACTDT=DT D ERRLOG^SDES2JSON(.ERRORS,52,"Clinic inactivated today for this clinic, can't delete INACTIVATE DATE must use clinic reactivate.") Q
S DELINACT=1
Q
VALIDATE(ERRORS,SDPARAM,INACTIVEDATE,CLINICIEN,DELINACT) ; validate incoming parameters
N FMDATE
D VALPARAM(.ERRORS,.SDPARAM,.DELINACT) Q:DELINACT
; Validate the inactivation date
S FMDATE=$$ISOTFM^SDAMUTDT(INACTIVEDATE)
I FMDATE=-1 D ERRLOG^SDES2JSON(.ERRORS,46,"For Clinic Inactivation")
I FMDATE>0,(FMDATE<DT) D ERRLOG^SDES2JSON(.ERRORS,46,"Clinic Inactivation can't be before today")
Q
; Make sure there are no active appointments after the inactivation date
NOAPPOINTMENTS(CLINICIEN,INACTDATE,ERRORS) ;
N POP,FMDATE,DATEIDX,LASTDATE,I1
S FMDATE=$$ISOTFM^SDAMUTDT($G(INACTDATE))
S CLINICIEN=$G(CLINICIEN)
S POP=0,LASTDATE=9999999,DATEIDX=FMDATE-.0001
F S DATEIDX=$O(^SC(CLINICIEN,"S",DATEIDX)) Q:'DATEIDX!(POP)!(FMDATE'<LASTDATE&(LASTDATE)) D
. S I1=0 F S I1=$O(^SC(CLINICIEN,"S",DATEIDX,1,I1)) Q:'I1 I $$GET1^DIQ(44.003,I1_","_DATEIDX_","_CLINICIEN_",",310,"I")'="C" S POP=1,FMDATE=DATEIDX Q
I POP D ERRLOG^SDES2JSON(.ERRORS,521)
Q
;
BLDCINREC(SDCINREC,CLINICIEN,INACTIVEDATE,ERRORS) ;Inactivate Clinic
; If the inactivation was filed in FILEMAN, no errors recorded, otherwise populate ERRORS
N SDERR,SDFDA,SDCLNNAME,FMDATE,REACTDT,SDATE,I
N CLIN,PROVDUZ,IEN ; These variables linger from the UPDATE^DIE call
S SDCLNNAME=""
S REACTDT=$$GET1^DIQ(44,CLINICIEN,2506,"I")
S FMDATE=$$ISOTFM^SDAMUTDT(INACTIVEDATE)
S SDCLNNAME=$$GET1^DIQ(44,CLINICIEN,.01)
S SDFDA(44,CLINICIEN_",",2505)=FMDATE
I REACTDT'="",REACTDT<=FMDATE D
. S SDFDA(44,CLINICIEN_",",2506)="@"
D UPDATE^DIE("","SDFDA","","SDERR")
I $D(SDERR) D ERRLOG^SDES2JSON(.ERRORS,81) Q
; Remove the grid elements
S SDATE=$S((REACTDT'=""&(REACTDT>FMDATE)):REACTDT,1:9999999) D Q:$D(ERRORS)
. F I=FMDATE-.0001:0 S I=$O(^SC(CLINICIEN,"ST",I)) Q:'I!(I>SDATE) K ^SC(CLINICIEN,"ST",I)
. F I=FMDATE-.0001:0 S I=$O(^SC(CLINICIEN,"T",I)) Q:'I!(I>SDATE) K ^SC(CLINICIEN,"T",I)
. F I=FMDATE-.0001:0 S I=$O(^SC(CLINICIEN,"OST",I)) Q:'I!(I>SDATE) K ^SC(CLINICIEN,"OST",I)
. D REMVTX(CLINICIEN,FMDATE)
I FMDATE=DT D REMPROV(CLINICIEN)
S SDCINREC("ClinicInactivate",1)="Clinic is successfully inactivated."
Q
;
REMVTX(SCLIN,SDDATE) ; Remove T0 to T6 patterns
N SDN,SD,J,J1,I,X,X1,X2,DA,DIE,DR,DOW,SDINDPAT,FDA,ERR,FDAIEN,SDFILE,TNODE
S TNODE="44.06^44.07^44.08^44.09^44.008^44.009^44.0001"
F I=0:1:6 S SDFILE(I)=$P(TNODE,U,I+1)
K SDN S DOW=$$DOW^XLFDT(SDDATE,1),SDN(DOW)=SDDATE,SDINDPAT(DOW)=$G(^SC(SCLIN,"T"_DOW,9999999,1)),X=SDDATE
F I=1:1:6 S X2=1,X1=X D C^%DTC S DOW=$$DOW^XLFDT(X,1),SDN(DOW)=X,SDINDPAT(DOW)=$G(^SC(SCLIN,"T"_DOW,9999999,1))
F I=0:1:6 S J=$O(^SC(SCLIN,"T"_I,(SDN(I)-0.0001))) D Q:$D(ERRORS)
. Q:'$D(^SC(SCLIN,"T"_I,0)) ; skip if no Tx node
. Q:$O(^SC(SCLIN,"T"_I,0))=""
. S SD=$O(^SC(SCLIN,"T"_I,J,0))
. I J>0,SD'=9999999,$$GET1^DIQ(SDFILE(I),J_","_SCLIN_",",1,"I")'="" D Q:$D(ERRORS)
. . K FDA,ERR,FDAIEN
. . D Q:$D(ERRORS)
. . . Q:$D(^SC(SCLIN,"T"_I,SDN(I)))
. . . S FDA(SDFILE(I),"+2,"_SCLIN_",",1)=$$GET1^DIQ(SDFILE(I),J_","_SCLIN_",",1,"I") ;^SC(SCLIN,"T"_I,J,1)
. . . S FDA(SDFILE(I),"+2,"_SCLIN_",",.01)=SDN(I)
. . . S FDAIEN(2)=SDN(I) D UPDATE^DIE("","FDA","FDAIEN","ERR")
. . . I $D(ERR) D ERRLOG^SDES2JSON(.ERRORS,81,"Issue with saving old pattern for Clinic IEN:"_SCLIN_" DOW: "_I_" Date: "_SDN(I))
. . K ^SC(SCLIN,"T"_I,J) F J1=J:0 S J1=$O(^SC(SCLIN,"T"_I,J1)) Q:'J1 K ^SC(SCLIN,"T"_I,J1) ;don't remove if already canceled, SD*5.3*726
. D Q:$D(ERRORS) ; File indefinite date with empty pattern
. . I $$GET1^DIQ(SDFILE(I),"9999999,"_SCLIN_",",.01,"I")=9999999,$$GET1^DIQ(SDFILE(I),"9999999,"_SCLIN_",",1,"I")="" Q ; Already have an empty indefinite pattern
. . K FDA,ERR,FDAIEN
. . S FDA(SDFILE(I),"+2,"_SCLIN_",",1)=""
. . S FDA(SDFILE(I),"+2,"_SCLIN_",",.01)=9999999
. . S FDAIEN(2)=9999999 D UPDATE^DIE("","FDA","FDAIEN","ERR")
. . I $D(ERR) D ERRLOG^SDES2JSON(.ERRORS,81,"Issue with saving empty indefinite pattern for Clinic IEN:"_SCLIN)
. D:SDINDPAT(I)'="" ; If we have an indefinite pattern then file it on the inactivation date
. . Q:$D(^SC(SCLIN,"T"_I,SDN(I)))
. . K FDA,ERR,FDAIEN
. . S FDA(SDFILE(I),"+2,"_SCLIN_",",1)=SDINDPAT(I)
. . S FDA(SDFILE(I),"+2,"_SCLIN_",",.01)=SDN(I)
. . S FDAIEN(2)=SDN(I)
. . D UPDATE^DIE("","FDA","FDAIEN","ERR")
. . I $D(ERR) D ERRLOG^SDES2JSON(.ERRORS,81,"Issue with filing the saved pattern for Clinic IEN:"_SCLIN_" Date: "_SDN(I))
Q
;
REMPROV(CLINIEN) ;Remove Providers from Clinic
Q:'$D(^SC(CLINIEN,"PR"))
N PRVDA,PRVIEN,X,Y
S PRVIEN=0
F S PRVIEN=$O(^SC(CLINIEN,"PR",PRVIEN)) Q:'PRVIEN D
. S PRVDA(44.1,PRVIEN_","_CLINIEN_",",.01)="@"
. D FILE^DIE(,"PRVDA") K PRVDA
Q
;
UPDATECLNRES(SDCLINICIEN,INACTIVATIONDATE,SDDUZ,ERRORS) ;Update INACTIVATED DATE/TIME and INACTIVATED BY USER in SDEC RESOURCE File #409.831
N SDRESFDA,SDCLINRES,SDERR,FMDATE,REACTDT
S SDCLINRES=$$GETRES^SDES2UTIL1(SDCLINICIEN,1)
Q:SDCLINRES="" ; no resource associated with clinic
S FMDATE=$$ISOTFM^SDAMUTDT(INACTIVATIONDATE)
S REACTDT=$$GET1^DIQ(409.831,SDCLINRES,.025,"I")
S SDRESFDA(409.831,SDCLINRES_",",.021)=$P(FMDATE,".")
S SDRESFDA(409.831,SDCLINRES_",",.022)=$S(SDDUZ'="":SDDUZ,1:DUZ)
I REACTDT'="",REACTDT<=FMDATE D
. S SDRESFDA(409.831,SDCLINRES_",",.025)="@"
. S SDRESFDA(409.831,SDCLINRES_",",.026)="@"
D FILE^DIE("","SDRESFDA","SDERR")
I $D(SDERR) D ERRLOG^SDES2JSON(.ERRORS,81,"File 409.831 not updated with the inactivation date for Resource IEN="_SDCLINRES)
Q
; If the code is called with SDPARAM("DELETE INACTIVATION")="Y"
DELETEINACTIVE(RESULTS,SDPARAM,SDDUZ) ;
;
N FDA,FDERR,SDCLINRES
S SDCLINRES=$$GETRES^SDES2UTIL1(SDPARAM("CLINIC IEN"),1)
S FDA(44,SDPARAM("CLINIC IEN")_",",2505)="@"
D FILE^DIE("","FDA","FDERR")
I $D(FDERR) S RESULTS("ClinicInactivate",1)="" D ERRLOG^SDES2JSON(.RESULTS,52,"Error trying to delete INACTIVATE DATE on Clinic "_SDPARAM("CLINIC IEN")) Q
K FDA,FDERR
S FDA(409.831,SDCLINRES_",",.021)="@"
S FDA(409.831,SDCLINRES_",",.022)="@"
D FILE^DIE("","FDA","FDERR")
I $D(FDERR) S RESULTS("ClinicInactivate",1)="" D ERRLOG^SDES2JSON(.RESULTS,81,"File 409.831 not updated with the inactivation date for Resource IEN="_SDCLINRES) Q
S RESULTS("ClinicInactivate",1,"DeleteInactivate")="Inactivate Date successfully removed from clinic: "_SDPARAM("CLINIC IEN")_"."
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDES2INACTCLIN 9972 printed Aug 26, 2025@23:10:42 Page 2
SDES2INACTCLIN ;ALB/TJB,MGD,TJB,TJB,JAS,TJB,MCB - Inactivate Clinic in HOSPITAL LOCATION FILE 44 ;May 7, 2025
+1 ;;5.3;Scheduling;**864,877,890,902,903,905,907**;Aug 13, 1993;Build 5
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;
+4 ; Documented API's and Integration Agreements
+5 ; -------------------------------------------
+6 ;Reference to $$GETS^DIQ is supported by IA #2056
+7 ;Reference to $$GETS1^DIQ is supported by IA #2056
+8 ;
+9 QUIT
+10 ;
SDINACTCLN(SDRETURN,SDCONTEXT,SDPARAM) ;Inactivate Clinic
+1 ;INPUT -
+2 ; SDCONTEXT("ACHERON AUDIT ID") = Up to 40 Character unique ID number. Ex: 11d9dcc6-c6a2-4785-8031-8261576fca37
+3 ; SDCONTEXT("PATIENT DFN") = The DFN/IEN of the target patient from the calling application.
+4 ; SDCONTEXT("PATIENT ICN") = The ICN of the target patient from the calling application.
+5 ; SDCONTEXT("USER DUZ") = The DUZ of the user taking action in the calling application.
+6 ; SDCONTEXT("USER SECID") = The SECID of the user taking action in the calling application.
+7 ;
+8 ; SDPARAM("CLINIC IEN")=CLINIC IEN IEN of the clinic in file 44 - Hospital location
+9 ; SDPARAM("INACTIVATION DATE")=DATE ISO DATE to inactivate the clinic if empty default to today (DT)
+10 ; SDPARAM("DELETE INACTIVATION")="Y" Either not defined (don't pass in) or "Y" any other value errors
+11 ;
+12 ;RETURN PARMETER:
+13 ; Status
+14 ;
+15 NEW ERRORS,RESULTS,CLINICIEN,INACTDATE,DELINACT,DIERR
+16 SET DELINACT=0
+17 ; validate context array
+18 DO VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
+19 IF $DATA(ERRORS)
SET ERRORS("ClinicInactivate",1)=""
DO BUILDJSON^SDES2JSON(.SDRETURN,.ERRORS)
QUIT
+20 DO VALCLINIEN^SDES2VAL44(.ERRORS,$GET(SDPARAM("CLINIC IEN")),1)
+21 DO INIT(.SDPARAM,.CLINICIEN,.INACTDATE)
+22 DO VALIDATE(.ERRORS,.SDPARAM,INACTDATE,CLINICIEN,.DELINACT)
+23 IF $DATA(ERRORS)
SET ERRORS("ClinicInactivate",1)=""
DO BUILDJSON^SDES2JSON(.SDRETURN,.ERRORS)
QUIT
+24 IF DELINACT=0
Begin DoDot:1
+25 DO NOAPPOINTMENTS(CLINICIEN,INACTDATE,.ERRORS)
+26 IF $DATA(ERRORS)
SET ERRORS("ClinicInactivate",1)=""
DO BUILDJSON^SDES2JSON(.SDRETURN,.ERRORS)
QUIT
+27 ; File the inactivation on HOSPITAL LOCATION
+28 DO BLDCINREC(.RESULTS,CLINICIEN,INACTDATE,.ERRORS)
+29 ; If the Clinic was inactivated then update the SDEC RESOURCE (409.831) with the inactivation information
+30 IF '$DATA(ERRORS)
DO UPDATECLNRES(CLINICIEN,INACTDATE,$GET(SDCONTEXT("USER DUZ")),.ERRORS)
+31 ; There was a problem updating 409.831 with the inactivation
IF $DATA(ERRORS)
SET ERRORS("ClinicInactivate",1)=""
DO BUILDJSON^SDES2JSON(.SDRETURN,.ERRORS)
QUIT
End DoDot:1
if $DATA(ERRORS)
QUIT
+32 IF DELINACT=1
Begin DoDot:1
+33 ; delete the inactivate date
DO DELETEINACTIVE(.RESULTS,.SDPARAM,$SELECT($GET(SDCONTEXT("USER DUZ"))'="":SDCONTEXT("USER DUZ"),1:DUZ))
End DoDot:1
+34 DO ENCODE^SDES2JSON(.RESULTS,.SDRETURN)
+35 QUIT
+36 ;
INIT(SDPARAM,CLINICIEN,INACTDATE) ; initialize values needed
+1 SET CLINICIEN=$GET(SDPARAM("CLINIC IEN"))
+2 SET INACTDATE=$GET(SDPARAM("INACTIVATION DATE"))
+3 ; If no Inactivation Date then default it to today
+4 IF INACTDATE=""
SET INACTDATE=$$FMTISO^SDAMUTDT(DT)
+5 QUIT
+6 ;
VALPARAM(ERRORS,PARAMS,DELINACT) ; Check if we are doing a delete inactivation date
+1 NEW INACTDT
+2 if $DATA(ERRORS)
QUIT
+3 ; No delete inactivation
IF '$DATA(PARAMS("DELETE INACTIVATION"))
QUIT
+4 IF $GET(PARAMS("DELETE INACTIVATION"))'="Y"
DO ERRLOG^SDES2JSON(.ERRORS,52,"Incorrect value for 'DELETE INACTIVATION' parameter, must be 'Y' or not provided")
QUIT
+5 SET INACTDT=$$GET1^DIQ(44,PARAMS("CLINIC IEN"),2505,"I")
+6 IF INACTDT=""
DO ERRLOG^SDES2JSON(.ERRORS,52,"No INACTIVATE DATE on this clinic, can't delete INACTIVATE DATE")
QUIT
+7 IF INACTDT=DT
DO ERRLOG^SDES2JSON(.ERRORS,52,"Clinic inactivated today for this clinic, can't delete INACTIVATE DATE must use clinic reactivate.")
QUIT
+8 SET DELINACT=1
+9 QUIT
VALIDATE(ERRORS,SDPARAM,INACTIVEDATE,CLINICIEN,DELINACT) ; validate incoming parameters
+1 NEW FMDATE
+2 DO VALPARAM(.ERRORS,.SDPARAM,.DELINACT)
if DELINACT
QUIT
+3 ; Validate the inactivation date
+4 SET FMDATE=$$ISOTFM^SDAMUTDT(INACTIVEDATE)
+5 IF FMDATE=-1
DO ERRLOG^SDES2JSON(.ERRORS,46,"For Clinic Inactivation")
+6 IF FMDATE>0
IF (FMDATE<DT)
DO ERRLOG^SDES2JSON(.ERRORS,46,"Clinic Inactivation can't be before today")
+7 QUIT
+8 ; Make sure there are no active appointments after the inactivation date
NOAPPOINTMENTS(CLINICIEN,INACTDATE,ERRORS) ;
+1 NEW POP,FMDATE,DATEIDX,LASTDATE,I1
+2 SET FMDATE=$$ISOTFM^SDAMUTDT($GET(INACTDATE))
+3 SET CLINICIEN=$GET(CLINICIEN)
+4 SET POP=0
SET LASTDATE=9999999
SET DATEIDX=FMDATE-.0001
+5 FOR
SET DATEIDX=$ORDER(^SC(CLINICIEN,"S",DATEIDX))
if 'DATEIDX!(POP)!(FMDATE'<LASTDATE&(LASTDATE))
QUIT
Begin DoDot:1
+6 SET I1=0
FOR
SET I1=$ORDER(^SC(CLINICIEN,"S",DATEIDX,1,I1))
if 'I1
QUIT
IF $$GET1^DIQ(44.003,I1_","_DATEIDX_","_CLINICIEN_",",310,"I")'="C"
SET POP=1
SET FMDATE=DATEIDX
QUIT
End DoDot:1
+7 IF POP
DO ERRLOG^SDES2JSON(.ERRORS,521)
+8 QUIT
+9 ;
BLDCINREC(SDCINREC,CLINICIEN,INACTIVEDATE,ERRORS) ;Inactivate Clinic
+1 ; If the inactivation was filed in FILEMAN, no errors recorded, otherwise populate ERRORS
+2 NEW SDERR,SDFDA,SDCLNNAME,FMDATE,REACTDT,SDATE,I
+3 ; These variables linger from the UPDATE^DIE call
NEW CLIN,PROVDUZ,IEN
+4 SET SDCLNNAME=""
+5 SET REACTDT=$$GET1^DIQ(44,CLINICIEN,2506,"I")
+6 SET FMDATE=$$ISOTFM^SDAMUTDT(INACTIVEDATE)
+7 SET SDCLNNAME=$$GET1^DIQ(44,CLINICIEN,.01)
+8 SET SDFDA(44,CLINICIEN_",",2505)=FMDATE
+9 IF REACTDT'=""
IF REACTDT<=FMDATE
Begin DoDot:1
+10 SET SDFDA(44,CLINICIEN_",",2506)="@"
End DoDot:1
+11 DO UPDATE^DIE("","SDFDA","","SDERR")
+12 IF $DATA(SDERR)
DO ERRLOG^SDES2JSON(.ERRORS,81)
QUIT
+13 ; Remove the grid elements
+14 SET SDATE=$SELECT((REACTDT'=""&(REACTDT>FMDATE)):REACTDT,1:9999999)
Begin DoDot:1
+15 FOR I=FMDATE-.0001:0
SET I=$ORDER(^SC(CLINICIEN,"ST",I))
if 'I!(I>SDATE)
QUIT
KILL ^SC(CLINICIEN,"ST",I)
+16 FOR I=FMDATE-.0001:0
SET I=$ORDER(^SC(CLINICIEN,"T",I))
if 'I!(I>SDATE)
QUIT
KILL ^SC(CLINICIEN,"T",I)
+17 FOR I=FMDATE-.0001:0
SET I=$ORDER(^SC(CLINICIEN,"OST",I))
if 'I!(I>SDATE)
QUIT
KILL ^SC(CLINICIEN,"OST",I)
+18 DO REMVTX(CLINICIEN,FMDATE)
End DoDot:1
if $DATA(ERRORS)
QUIT
+19 IF FMDATE=DT
DO REMPROV(CLINICIEN)
+20 SET SDCINREC("ClinicInactivate",1)="Clinic is successfully inactivated."
+21 QUIT
+22 ;
REMVTX(SCLIN,SDDATE) ; Remove T0 to T6 patterns
+1 NEW SDN,SD,J,J1,I,X,X1,X2,DA,DIE,DR,DOW,SDINDPAT,FDA,ERR,FDAIEN,SDFILE,TNODE
+2 SET TNODE="44.06^44.07^44.08^44.09^44.008^44.009^44.0001"
+3 FOR I=0:1:6
SET SDFILE(I)=$PIECE(TNODE,U,I+1)
+4 KILL SDN
SET DOW=$$DOW^XLFDT(SDDATE,1)
SET SDN(DOW)=SDDATE
SET SDINDPAT(DOW)=$GET(^SC(SCLIN,"T"_DOW,9999999,1))
SET X=SDDATE
+5 FOR I=1:1:6
SET X2=1
SET X1=X
DO C^%DTC
SET DOW=$$DOW^XLFDT(X,1)
SET SDN(DOW)=X
SET SDINDPAT(DOW)=$GET(^SC(SCLIN,"T"_DOW,9999999,1))
+6 FOR I=0:1:6
SET J=$ORDER(^SC(SCLIN,"T"_I,(SDN(I)-0.0001)))
Begin DoDot:1
+7 ; skip if no Tx node
if '$DATA(^SC(SCLIN,"T"_I,0))
QUIT
+8 if $ORDER(^SC(SCLIN,"T"_I,0))=""
QUIT
+9 SET SD=$ORDER(^SC(SCLIN,"T"_I,J,0))
+10 IF J>0
IF SD'=9999999
IF $$GET1^DIQ(SDFILE(I),J_","_SCLIN_",",1,"I")'=""
Begin DoDot:2
+11 KILL FDA,ERR,FDAIEN
+12 Begin DoDot:3
+13 if $DATA(^SC(SCLIN,"T"_I,SDN(I)))
QUIT
+14 ;^SC(SCLIN,"T"_I,J,1)
SET FDA(SDFILE(I),"+2,"_SCLIN_",",1)=$$GET1^DIQ(SDFILE(I),J_","_SCLIN_",",1,"I")
+15 SET FDA(SDFILE(I),"+2,"_SCLIN_",",.01)=SDN(I)
+16 SET FDAIEN(2)=SDN(I)
DO UPDATE^DIE("","FDA","FDAIEN","ERR")
+17 IF $DATA(ERR)
DO ERRLOG^SDES2JSON(.ERRORS,81,"Issue with saving old pattern for Clinic IEN:"_SCLIN_" DOW: "_I_" Date: "_SDN(I))
End DoDot:3
if $DATA(ERRORS)
QUIT
+18 ;don't remove if already canceled, SD*5.3*726
KILL ^SC(SCLIN,"T"_I,J)
FOR J1=J:0
SET J1=$ORDER(^SC(SCLIN,"T"_I,J1))
if 'J1
QUIT
KILL ^SC(SCLIN,"T"_I,J1)
End DoDot:2
if $DATA(ERRORS)
QUIT
+19 ; File indefinite date with empty pattern
Begin DoDot:2
+20 ; Already have an empty indefinite pattern
IF $$GET1^DIQ(SDFILE(I),"9999999,"_SCLIN_",",.01,"I")=9999999
IF $$GET1^DIQ(SDFILE(I),"9999999,"_SCLIN_",",1,"I")=""
QUIT
+21 KILL FDA,ERR,FDAIEN
+22 SET FDA(SDFILE(I),"+2,"_SCLIN_",",1)=""
+23 SET FDA(SDFILE(I),"+2,"_SCLIN_",",.01)=9999999
+24 SET FDAIEN(2)=9999999
DO UPDATE^DIE("","FDA","FDAIEN","ERR")
+25 IF $DATA(ERR)
DO ERRLOG^SDES2JSON(.ERRORS,81,"Issue with saving empty indefinite pattern for Clinic IEN:"_SCLIN)
End DoDot:2
if $DATA(ERRORS)
QUIT
+26 ; If we have an indefinite pattern then file it on the inactivation date
if SDINDPAT(I)'=""
Begin DoDot:2
+27 if $DATA(^SC(SCLIN,"T"_I,SDN(I)))
QUIT
+28 KILL FDA,ERR,FDAIEN
+29 SET FDA(SDFILE(I),"+2,"_SCLIN_",",1)=SDINDPAT(I)
+30 SET FDA(SDFILE(I),"+2,"_SCLIN_",",.01)=SDN(I)
+31 SET FDAIEN(2)=SDN(I)
+32 DO UPDATE^DIE("","FDA","FDAIEN","ERR")
+33 IF $DATA(ERR)
DO ERRLOG^SDES2JSON(.ERRORS,81,"Issue with filing the saved pattern for Clinic IEN:"_SCLIN_" Date: "_SDN(I))
End DoDot:2
End DoDot:1
if $DATA(ERRORS)
QUIT
+34 QUIT
+35 ;
REMPROV(CLINIEN) ;Remove Providers from Clinic
+1 if '$DATA(^SC(CLINIEN,"PR"))
QUIT
+2 NEW PRVDA,PRVIEN,X,Y
+3 SET PRVIEN=0
+4 FOR
SET PRVIEN=$ORDER(^SC(CLINIEN,"PR",PRVIEN))
if 'PRVIEN
QUIT
Begin DoDot:1
+5 SET PRVDA(44.1,PRVIEN_","_CLINIEN_",",.01)="@"
+6 DO FILE^DIE(,"PRVDA")
KILL PRVDA
End DoDot:1
+7 QUIT
+8 ;
UPDATECLNRES(SDCLINICIEN,INACTIVATIONDATE,SDDUZ,ERRORS) ;Update INACTIVATED DATE/TIME and INACTIVATED BY USER in SDEC RESOURCE File #409.831
+1 NEW SDRESFDA,SDCLINRES,SDERR,FMDATE,REACTDT
+2 SET SDCLINRES=$$GETRES^SDES2UTIL1(SDCLINICIEN,1)
+3 ; no resource associated with clinic
if SDCLINRES=""
QUIT
+4 SET FMDATE=$$ISOTFM^SDAMUTDT(INACTIVATIONDATE)
+5 SET REACTDT=$$GET1^DIQ(409.831,SDCLINRES,.025,"I")
+6 SET SDRESFDA(409.831,SDCLINRES_",",.021)=$PIECE(FMDATE,".")
+7 SET SDRESFDA(409.831,SDCLINRES_",",.022)=$SELECT(SDDUZ'="":SDDUZ,1:DUZ)
+8 IF REACTDT'=""
IF REACTDT<=FMDATE
Begin DoDot:1
+9 SET SDRESFDA(409.831,SDCLINRES_",",.025)="@"
+10 SET SDRESFDA(409.831,SDCLINRES_",",.026)="@"
End DoDot:1
+11 DO FILE^DIE("","SDRESFDA","SDERR")
+12 IF $DATA(SDERR)
DO ERRLOG^SDES2JSON(.ERRORS,81,"File 409.831 not updated with the inactivation date for Resource IEN="_SDCLINRES)
+13 QUIT
+14 ; If the code is called with SDPARAM("DELETE INACTIVATION")="Y"
DELETEINACTIVE(RESULTS,SDPARAM,SDDUZ) ;
+1 ;
+2 NEW FDA,FDERR,SDCLINRES
+3 SET SDCLINRES=$$GETRES^SDES2UTIL1(SDPARAM("CLINIC IEN"),1)
+4 SET FDA(44,SDPARAM("CLINIC IEN")_",",2505)="@"
+5 DO FILE^DIE("","FDA","FDERR")
+6 IF $DATA(FDERR)
SET RESULTS("ClinicInactivate",1)=""
DO ERRLOG^SDES2JSON(.RESULTS,52,"Error trying to delete INACTIVATE DATE on Clinic "_SDPARAM("CLINIC IEN"))
QUIT
+7 KILL FDA,FDERR
+8 SET FDA(409.831,SDCLINRES_",",.021)="@"
+9 SET FDA(409.831,SDCLINRES_",",.022)="@"
+10 DO FILE^DIE("","FDA","FDERR")
+11 IF $DATA(FDERR)
SET RESULTS("ClinicInactivate",1)=""
DO ERRLOG^SDES2JSON(.RESULTS,81,"File 409.831 not updated with the inactivation date for Resource IEN="_SDCLINRES)
QUIT
+12 SET RESULTS("ClinicInactivate",1,"DeleteInactivate")="Inactivate Date successfully removed from clinic: "_SDPARAM("CLINIC IEN")_"."
+13 QUIT
+14 ;