From 09c2278173598be41fd64337db1ba969ea2e0a86 Mon Sep 17 00:00:00 2001 From: Gary Jones Date: Wed, 15 Jan 2025 12:42:16 -0700 Subject: [PATCH] 23.11 fb eiacuc to prime end date (#1213) * Restructure of Feature BRanch for eIACUC to Prime * Upd[atre of Stored Proecure to End Date Protocols * Don't enddate protocols in approved state This code done in a pairing session with Gary and Brent. * Update of Stored Procedure to insure only none approved Protocols are enddated * Created new StoreProcedure of Stored Procedure to insure only none approved Protocols are enddated * Modification the Storedc Proec ure was missing the end statment was erroring out * Update onprc_ehr-24.005-24.006.sql COrrected Misspelled field name at line 44 * Update of EiACUC P{rocessing for enddate * Update onprc_ehr-24.004-24.005.sql Removeed withdrawn from the query where clause * Rename .xml and change descriptions * Updated the Stored Precedure from ALTER to CREATE * UPdate of SQL Script to remove unwanted testing comments and reformt CTEs for Stnadarization --------- Co-authored-by: Brent Logan --- .../resources/etls/UpdateEhrProtocols.xml | 35 ++++++++++++++ .../sqlserver/onprc_ehr-24.001-24.002.sql | 7 +++ .../sqlserver/onprc_ehr-24.002-24.003.sql | 34 +++++++++++++ .../sqlserver/onprc_ehr-24.004-24.005.sql | 48 +++++++++++++++++++ onprc_ehr/resources/schemas/onprc_ehr.xml | 3 ++ .../org/labkey/onprc_ehr/ONPRC_EHRModule.java | 2 +- 6 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 onprc_ehr/resources/etls/UpdateEhrProtocols.xml create mode 100644 onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.001-24.002.sql create mode 100644 onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.002-24.003.sql create mode 100644 onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.004-24.005.sql diff --git a/onprc_ehr/resources/etls/UpdateEhrProtocols.xml b/onprc_ehr/resources/etls/UpdateEhrProtocols.xml new file mode 100644 index 000000000..9ddf6dec9 --- /dev/null +++ b/onprc_ehr/resources/etls/UpdateEhrProtocols.xml @@ -0,0 +1,35 @@ + + + + + Update Protocols in EHR + + Runs stored procedures to update the protocol table in schema ehr. + + + + + Determines and populates BaseProtocol and RevisionNumber data for the protocol table in schema onprc_ehr. + + + + + + Adds enddate data to the protocol table in ehr. + + + + + + + + + + + + + diff --git a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.001-24.002.sql b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.001-24.002.sql new file mode 100644 index 000000000..79c8ec8b6 --- /dev/null +++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.001-24.002.sql @@ -0,0 +1,7 @@ +--added to allow insert of calculated fields from eIACUC + +--2024-12-13 In development need to use a drop if exists statement for these to run + +ALTER TABLE onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS ADD [BaseProtocol] varchar(100) Null; +ALTER TABLE onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS ADD [RevisionNumber] varchar(100) Null; +ALTER TABLE onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS ADD [NewestRecord] INT Null; \ No newline at end of file diff --git a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.002-24.003.sql b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.002-24.003.sql new file mode 100644 index 000000000..0b8089f6f --- /dev/null +++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.002-24.003.sql @@ -0,0 +1,34 @@ +CREATE PROCEDURE onprc_ehr.BaseProtocol +AS +BEGIN + -- Create a Common Table Expression (CTE) named BaseProtocol + WITH BaseProtocol AS + ( + SELECT + RowID, + Protocol_id, + -- Determine the BaseProtocol based on the length of the Protocol_id + CASE + WHEN LEN(Protocol_id) > 10 THEN SUBSTRING(Protocol_id, 6, 15) + ELSE Protocol_id + END AS BaseProtocol, + -- Determine the RevisionNumber based on the length of the Protocol_id + CASE + WHEN LEN(Protocol_id) > 10 THEN SUBSTRING(Protocol_id,1, 5) + ELSE 'Original' + END AS RevisionNumber, + approval_date, + Three_Year_Expiration, + last_modified, + Protocol_State + FROM onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS + ) + + -- Update the onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS table with BaseProtocol and RevisionNumber from the CTE + UPDATE onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS + SET BaseProtocol = BaseProtocol.BaseProtocol, + RevisionNumber = BaseProtocol.RevisionNumber + FROM BaseProtocol + WHERE onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS.RowID = BaseProtocol.RowID; +END +GO \ No newline at end of file diff --git a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.004-24.005.sql b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.004-24.005.sql new file mode 100644 index 000000000..d6bc68d98 --- /dev/null +++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.004-24.005.sql @@ -0,0 +1,48 @@ +GO +/****** Object: StoredProcedure [onprc_ehr].[ExpiredProtocolUpdate] Script Date: 12/20/2024 9:09:09 AM ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +CREATE PROCEDURE [onprc_ehr].[ExpiredProtocolUpdate] + AS +BEGIN + +WITH ApprovedProtocols AS ( + SELECT + BaseProtocol, + MAX(Approval_Date) AS maxApprovalDate + FROM + onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS + WHERE + Protocol_State IN ('approved','expired', 'terminated') + GROUP BY + BaseProtocol +), + + + DistinctProtocols AS ( + SELECT DISTINCT + p.rowID, + p.BaseProtocol, + p.RevisionNumber, + p.Protocol_State, + p.Approval_Date, + p.Last_Modified, + p.Three_Year_Expiration + FROM + onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS p + INNER JOIN ApprovedProtocols ap ON p.BaseProtocol = ap.BaseProtocol + AND p.Approval_Date = ap.maxApprovalDate), + ExpiredProtocol AS ( + Select + d.*, + p.protocol, + p.enddate + from DistinctProtocols d inner join ehr.protocol p on d.BaseProtocol = p.external_ID + where d.Protocol_State != 'Approved' and p.enddate is Null) + +Update p + Set p.enddate = getDate() + from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol +END diff --git a/onprc_ehr/resources/schemas/onprc_ehr.xml b/onprc_ehr/resources/schemas/onprc_ehr.xml index 12b59e438..5f5b3a307 100644 --- a/onprc_ehr/resources/schemas/onprc_ehr.xml +++ b/onprc_ehr/resources/schemas/onprc_ehr.xml @@ -735,6 +735,9 @@ + + + diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java b/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java index df0f81a3f..5ec60e1d9 100644 --- a/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java +++ b/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java @@ -126,7 +126,7 @@ public String getName() @Override public @Nullable Double getSchemaVersion() { - return 23.016; + return 24.005; } @Override