From 08c082774c7c6726c54c4b54f7881e864098d266 Mon Sep 17 00:00:00 2001 From: jonesgaohsu Date: Fri, 20 Dec 2024 08:52:58 -0700 Subject: [PATCH 01/12] Restructure of Feature BRanch for eIACUC to Prime --- .../etls/eIACUCtoPrimteProtocols.xml | 40 +++++++++ .../sqlserver/onprc_ehr-24.001-24.002.sql | 7 ++ .../sqlserver/onprc_ehr-24.002-24.003.sql | 31 +++++++ .../sqlserver/onprc_ehr-24.004-24.005.sql | 83 +++++++++++++++++++ onprc_ehr/resources/schemas/onprc_ehr.xml | 3 + .../org/labkey/onprc_ehr/ONPRC_EHRModule.java | 2 +- 6 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 onprc_ehr/resources/etls/eIACUCtoPrimteProtocols.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/eIACUCtoPrimteProtocols.xml b/onprc_ehr/resources/etls/eIACUCtoPrimteProtocols.xml new file mode 100644 index 000000000..ea306a7b2 --- /dev/null +++ b/onprc_ehr/resources/etls/eIACUCtoPrimteProtocols.xml @@ -0,0 +1,40 @@ + + + + + eIACUC to Prime Protocols + + Runs stored Procedure to update eiACUC Protocols in ehr + + + + + + Runs a stored procedure that generates lab values + + + + + + Runs a stored procedure that generates lab values + + + + + + + + + + + + + + + + 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..79d58106a --- /dev/null +++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.002-24.003.sql @@ -0,0 +1,31 @@ +--This build is a stored preoccured that uses a temp table and then updates onprc_ehronprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS +ALTER Procedure onprc_ehr.BaseProtocol + + AS +--Create a Temp Table that creates Base Protocol and Revision Number + WITH BaseProtocol AS ( + SELECT + RowID, + Protocol_id, + CASE + WHEN LEN(protocol_id) > 10 THEN SUBSTRING(protocol_id, 6, 15) + ELSE protocol_id + END AS BaseProtocol, + 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 + ) +--This will update the onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS inserting the BaseProtocol and RevisionNumber +Update e +Set e.BaseProtocol = p.BaseProtocol, e.RevisionNumber = p.revisionNumber +-- + from onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS e, BaseProtocol p +where e.rowID = p.rowID + 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..fa082d6af --- /dev/null +++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.004-24.005.sql @@ -0,0 +1,83 @@ +/* +2024-12-13 this is an update based on recent changes from Brent +Explanation of process +ApprovedProtocols CTE: + +This Common Table Expression (CTE) selects the BaseProtocol and the maximum Approval_Date for protocols that are in the states 'expired', 'terminated', or 'withdrawn'. +It groups the results by BaseProtocol to ensure each base protocol has only one entry with the latest approval date. +DistinctProtocols CTE: + +This CTE selects distinct protocol records from onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS that match the base protocols and approval dates identified in the ApprovedProtocols CTE. +It joins the onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS table with the ApprovedProtocols CTE on BaseProtocol and Approval_Date. +The result is a set of distinct protocols with their latest approval dates and other relevant details. +Select Statement: + +This part of the procedure selects protocols from the ehr.protocol table that need to be updated. +It joins the ehr.protocol table with the DistinctProtocols CTE on external_id and BaseProtocol. +It filters the results to include only those protocols where enddate is NULL. +Update Statement: + +This statement updates the enddate and contacts fields in the ehr.protocol table for the protocols identified in the previous step. +It sets the enddate to the Approval_Date from the ExpiredProtocol and updates the contacts field with a message indicating the protocol's status. +In summary, the procedure identifies protocols that have expired, terminated, or withdrawn statuses, finds the latest approval date for each base protocol, and updates the enddate and contacts fields in the ehr.protocol table accordingly. This ensures that the protocol records are up-to-date with their current status. + +*/ +CREATE PROCEDURE onprc_ehr.ExpiredProtocolUpdate + AS +BEGIN + -- Create a CTE to get the latest approval date for each base protocol +WITH ApprovedProtocols AS ( + SELECT + BaseProtocol, + MAX(Approval_Date) AS maxApprovalDate + FROM + onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS + WHERE + Protocol_State IN ('expired', 'terminated', 'withdrawn') + GROUP BY + BaseProtocol +), + + -- Create a CTE to get distinct protocols with the latest approval date + 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 + ), + +-- Select protocols that need to be updated + ExpiredProtocol as + (SELECT + p.Protocol, + p.external_Id, + d.BaseProtocol, + d.RevisionNumber, + d.Protocol_State, + p.enddate + FROM + ehr.protocol p + INNER JOIN DistinctProtocols d + ON p.external_id = d.BaseProtocol + WHERE + p.enddate IS NULL), + +-- Update the end date and contacts for expired protocols + UPDATE e +SET + e.enddate = p.Approval_Date, + e.contacts = 'Protocol enddated based on eiACUC Status ' + p.Protocol_State +FROM + ehr.protocol e + INNER JOIN ExpiredProtocol p +ON e.external_id = p.BaseProtocol; +END; \ No newline at end of file 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 From 4d042e6d8ed3084e9069eab56249946c7cd26d10 Mon Sep 17 00:00:00 2001 From: jonesgaohsu Date: Fri, 20 Dec 2024 09:14:13 -0700 Subject: [PATCH 02/12] Upd[atre of Stored Proecure to End Date Protocols --- .../sqlserver/onprc_ehr-24.004-24.005.sql | 82 ++++++++----------- 1 file changed, 34 insertions(+), 48 deletions(-) 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 index fa082d6af..46f8b013e 100644 --- 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 @@ -1,31 +1,14 @@ -/* -2024-12-13 this is an update based on recent changes from Brent -Explanation of process -ApprovedProtocols CTE: - -This Common Table Expression (CTE) selects the BaseProtocol and the maximum Approval_Date for protocols that are in the states 'expired', 'terminated', or 'withdrawn'. -It groups the results by BaseProtocol to ensure each base protocol has only one entry with the latest approval date. -DistinctProtocols CTE: - -This CTE selects distinct protocol records from onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS that match the base protocols and approval dates identified in the ApprovedProtocols CTE. -It joins the onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS table with the ApprovedProtocols CTE on BaseProtocol and Approval_Date. -The result is a set of distinct protocols with their latest approval dates and other relevant details. -Select Statement: - -This part of the procedure selects protocols from the ehr.protocol table that need to be updated. -It joins the ehr.protocol table with the DistinctProtocols CTE on external_id and BaseProtocol. -It filters the results to include only those protocols where enddate is NULL. -Update Statement: - -This statement updates the enddate and contacts fields in the ehr.protocol table for the protocols identified in the previous step. -It sets the enddate to the Approval_Date from the ExpiredProtocol and updates the contacts field with a message indicating the protocol's status. -In summary, the procedure identifies protocols that have expired, terminated, or withdrawn statuses, finds the latest approval date for each base protocol, and updates the enddate and contacts fields in the ehr.protocol table accordingly. This ensures that the protocol records are up-to-date with their current status. - -*/ -CREATE PROCEDURE onprc_ehr.ExpiredProtocolUpdate +USE [Labkey_GJ] +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 +ALTER PROCEDURE [onprc_ehr].[ExpiredProtocolUpdate] AS BEGIN - -- Create a CTE to get the latest approval date for each base protocol + WITH ApprovedProtocols AS ( SELECT BaseProtocol, @@ -33,12 +16,12 @@ WITH ApprovedProtocols AS ( FROM onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS WHERE - Protocol_State IN ('expired', 'terminated', 'withdrawn') + Protocol_State IN ('approved','expired', 'terminated', 'withdrawn') GROUP BY BaseProtocol ), - -- Create a CTE to get distinct protocols with the latest approval date + DistinctProtocols AS ( SELECT DISTINCT p.rowID, @@ -55,29 +38,32 @@ WITH ApprovedProtocols AS ( AND p.Approval_Date = ap.maxApprovalDate ), --- Select protocols that need to be updated - ExpiredProtocol as - (SELECT - p.Protocol, - p.external_Id, - d.BaseProtocol, - d.RevisionNumber, - d.Protocol_State, - p.enddate - FROM - ehr.protocol p - INNER JOIN DistinctProtocols d - ON p.external_id = d.BaseProtocol - WHERE - p.enddate IS NULL), + ExpiredProtocol as ( + SELECT + p.Protocol, + p.external_Id, + d.BaseProtocol, + d.RevisionNumber, + d.Protocol_State, + p.enddate, + Case + when d.approval_date >= d.three_year_Expiration then d.approval_Date + When d.three_Year_Expiration <= d.Last_Modified then d.last_modified + End as LatestDate + FROM + ehr.protocol p + INNER JOIN DistinctProtocols d + ON p.external_id = d.BaseProtocol + WHERE + p.enddate IS NULL) --- Update the end date and contacts for expired protocols - UPDATE e + +UPDATE e SET - e.enddate = p.Approval_Date, + e.enddate =p.LatestDate, e.contacts = 'Protocol enddated based on eiACUC Status ' + p.Protocol_State -FROM - ehr.protocol e + FROM + ehr.protocol e INNER JOIN ExpiredProtocol p ON e.external_id = p.BaseProtocol; END; \ No newline at end of file From 98e0c33baae429cdc7d32c141e317009afad8e73 Mon Sep 17 00:00:00 2001 From: Brent Logan Date: Fri, 20 Dec 2024 09:33:25 -0800 Subject: [PATCH 03/12] Don't enddate protocols in approved state This code done in a pairing session with Gary and Brent. --- .../sqlserver/onprc_ehr-24.004-24.005.sql | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) 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 index 46f8b013e..94fd8c8d6 100644 --- 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 @@ -16,12 +16,11 @@ WITH ApprovedProtocols AS ( FROM onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS WHERE - Protocol_State IN ('approved','expired', 'terminated', 'withdrawn') + Protocol_State IN ('approved','expired', 'terminated') --All protocols that have been approved GROUP BY BaseProtocol ), - DistinctProtocols AS ( SELECT DISTINCT p.rowID, @@ -46,24 +45,21 @@ WITH ApprovedProtocols AS ( d.RevisionNumber, d.Protocol_State, p.enddate, - Case - when d.approval_date >= d.three_year_Expiration then d.approval_Date - When d.three_Year_Expiration <= d.Last_Modified then d.last_modified - End as LatestDate + CURRENT_DATE() as LatestDate FROM ehr.protocol p INNER JOIN DistinctProtocols d ON p.external_id = d.BaseProtocol WHERE - p.enddate IS NULL) - + p.enddate IS NULL + AND d.Protocol_State NOT LIKE 'approved') UPDATE e SET - e.enddate =p.LatestDate, - e.contacts = 'Protocol enddated based on eiACUC Status ' + p.Protocol_State + e.enddate = p.LatestDate, + e.contacts = 'Protocol enddated based on eiACUC Status ' + p.Protocol_State --debug message to be removed before push to prod FROM ehr.protocol e INNER JOIN ExpiredProtocol p ON e.external_id = p.BaseProtocol; -END; \ No newline at end of file +END; From d802efa56d3a84d6709e96e661292fda2f84d063 Mon Sep 17 00:00:00 2001 From: jonesgaohsu Date: Mon, 23 Dec 2024 07:06:57 -0700 Subject: [PATCH 04/12] Update of Stored Procedure to insure only none approved Protocols are enddated --- .../sqlserver/onprc_ehr-24.004-24.005.sql | 50 +++---------------- 1 file changed, 8 insertions(+), 42 deletions(-) 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 index 46f8b013e..8b15a987e 100644 --- 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 @@ -1,14 +1,3 @@ -USE [Labkey_GJ] -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 -ALTER PROCEDURE [onprc_ehr].[ExpiredProtocolUpdate] - AS -BEGIN - WITH ApprovedProtocols AS ( SELECT BaseProtocol, @@ -16,12 +5,11 @@ WITH ApprovedProtocols AS ( FROM onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS WHERE - Protocol_State IN ('approved','expired', 'terminated', 'withdrawn') + Protocol_State IN ('approved','expired', 'terminated') --All protocols that have been approved GROUP BY BaseProtocol ), - DistinctProtocols AS ( SELECT DISTINCT p.rowID, @@ -35,35 +23,13 @@ WITH ApprovedProtocols AS ( onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS p INNER JOIN ApprovedProtocols ap ON p.BaseProtocol = ap.BaseProtocol - AND p.Approval_Date = ap.maxApprovalDate - ), - + AND p.Approval_Date = ap.maxApprovalDate) + , ExpiredProtocol as ( - SELECT - p.Protocol, - p.external_Id, - d.BaseProtocol, - d.RevisionNumber, - d.Protocol_State, - p.enddate, - Case - when d.approval_date >= d.three_year_Expiration then d.approval_Date - When d.three_Year_Expiration <= d.Last_Modified then d.last_modified - End as LatestDate - FROM - ehr.protocol p - INNER JOIN DistinctProtocols d - ON p.external_id = d.BaseProtocol - WHERE - p.enddate IS NULL) + 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() , p.contacts = 'EndDated based on Protocol_State ' + e.PROTOCOL_State -UPDATE e -SET - e.enddate =p.LatestDate, - e.contacts = 'Protocol enddated based on eiACUC Status ' + p.Protocol_State - FROM - ehr.protocol e - INNER JOIN ExpiredProtocol p -ON e.external_id = p.BaseProtocol; -END; \ No newline at end of file + from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol \ No newline at end of file From 1a329ad30c2957619d1f2783de97fcfaea76ee97 Mon Sep 17 00:00:00 2001 From: jonesgaohsu Date: Mon, 23 Dec 2024 07:25:32 -0700 Subject: [PATCH 05/12] Created new StoreProcedure of Stored Procedure to insure only none approved Protocols are enddated --- .../sqlserver/onprc_ehr-24.005-24.006.sql | 49 +++++++++++++++++++ .../org/labkey/onprc_ehr/ONPRC_EHRModule.java | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql diff --git a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql new file mode 100644 index 000000000..48e541e27 --- /dev/null +++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql @@ -0,0 +1,49 @@ +/****** Object: StoredProcedure [onprc_ehr].[ExpiredProtocolUpdate] + Script Date: 12/20/2024 9:09:09 AM +Modified 20241223 to handle issue that origin was enddating Approvd Protocols +The modification changed the where clause and did not include Approved Protocols in the outpiut +******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +ALTER PROCEDURE [onprc_ehr].[ExpiredProtocol20241223] + 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', 'withdrawn') + 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() , p.contacts = 'EndDated based on Protocol_State ' + e.PROTOCOL_State + + from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol \ No newline at end of file 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 5ec60e1d9..ca89952d2 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 24.005; + return 24.006; } @Override From a3793151e7ee2bd2a4294ed165601ef515760025 Mon Sep 17 00:00:00 2001 From: jonesgaohsu Date: Mon, 23 Dec 2024 08:37:01 -0700 Subject: [PATCH 06/12] Modification the Storedc Proec ure was missing the end statment was erroring out --- .../schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql index 48e541e27..5133f2348 100644 --- a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql +++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql @@ -41,9 +41,10 @@ WITH ApprovedProtocols AS ( , 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)) + where (d.Protocol_Stae != 'Approved' and p.enddate is Null)) Update p Set p.enddate = getDate() , p.contacts = 'EndDated based on Protocol_State ' + e.PROTOCOL_State - from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol \ No newline at end of file + from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol +End \ No newline at end of file From 52d2a69a154ed94eee8b368dc2cf3842e6547cb3 Mon Sep 17 00:00:00 2001 From: Gary Jones Date: Mon, 23 Dec 2024 09:24:43 -0700 Subject: [PATCH 07/12] Update onprc_ehr-24.005-24.006.sql COrrected Misspelled field name at line 44 --- .../schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql index 5133f2348..35f70af0d 100644 --- a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql +++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql @@ -41,10 +41,10 @@ WITH ApprovedProtocols AS ( , 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_Stae != 'Approved' and p.enddate is Null)) + where (d.Protocol_State != 'Approved' and p.enddate is Null)) Update p Set p.enddate = getDate() , p.contacts = 'EndDated based on Protocol_State ' + e.PROTOCOL_State from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol -End \ No newline at end of file +End From d8f50eb70342f80175a86c75d068cc68a64998e3 Mon Sep 17 00:00:00 2001 From: jonesgaohsu Date: Thu, 26 Dec 2024 10:03:19 -0700 Subject: [PATCH 08/12] Update of EiACUC P{rocessing for enddate --- .../sqlserver/onprc_ehr-24.002-24.003.sql | 63 ++++++++++--------- .../sqlserver/onprc_ehr-24.004-24.005.sql | 6 +- .../sqlserver/onprc_ehr-24.005-24.006.sql | 50 --------------- .../org/labkey/onprc_ehr/ONPRC_EHRModule.java | 2 +- 4 files changed, 37 insertions(+), 84 deletions(-) delete mode 100644 onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql 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 index 79d58106a..da2fe1cfa 100644 --- 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 @@ -1,31 +1,34 @@ ---This build is a stored preoccured that uses a temp table and then updates onprc_ehronprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS -ALTER Procedure onprc_ehr.BaseProtocol - - AS ---Create a Temp Table that creates Base Protocol and Revision Number - WITH BaseProtocol AS ( - SELECT - RowID, - Protocol_id, - CASE - WHEN LEN(protocol_id) > 10 THEN SUBSTRING(protocol_id, 6, 15) - ELSE protocol_id - END AS BaseProtocol, - 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 - ) ---This will update the onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS inserting the BaseProtocol and RevisionNumber -Update e -Set e.BaseProtocol = p.BaseProtocol, e.RevisionNumber = p.revisionNumber --- - from onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS e, BaseProtocol p -where e.rowID = p.rowID +ALTER 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 index 3599c5188..aa6901fa0 100644 --- 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 @@ -1,11 +1,10 @@ -USE [Labkey_GJ] 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 -ALTER PROCEDURE [onprc_ehr].[ExpiredProtocolUpdate] +CREATE PROCEDURE [onprc_ehr].[ExpiredProtocolUpdate] AS BEGIN @@ -44,4 +43,5 @@ WITH ApprovedProtocols AS ( Update p Set p.enddate = getDate() , p.contacts = 'EndDated based on Protocol_State ' + e.PROTOCOL_State - from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol \ No newline at end of file + from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol +END \ No newline at end of file diff --git a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql deleted file mode 100644 index 35f70af0d..000000000 --- a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql +++ /dev/null @@ -1,50 +0,0 @@ -/****** Object: StoredProcedure [onprc_ehr].[ExpiredProtocolUpdate] - Script Date: 12/20/2024 9:09:09 AM -Modified 20241223 to handle issue that origin was enddating Approvd Protocols -The modification changed the where clause and did not include Approved Protocols in the outpiut -******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -ALTER PROCEDURE [onprc_ehr].[ExpiredProtocol20241223] - 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', 'withdrawn') - 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() , p.contacts = 'EndDated based on Protocol_State ' + e.PROTOCOL_State - - from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol -End 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 ca89952d2..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 24.006; + return 24.005; } @Override From 075099645546269dd4dc8951fa23fccbfcb24d9e Mon Sep 17 00:00:00 2001 From: Gary Jones Date: Mon, 30 Dec 2024 14:09:12 -0700 Subject: [PATCH 09/12] Update onprc_ehr-24.004-24.005.sql Removeed withdrawn from the query where clause --- .../schemas/dbscripts/sqlserver/onprc_ehr-24.004-24.005.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 index aa6901fa0..8dafb5690 100644 --- 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 @@ -15,7 +15,7 @@ WITH ApprovedProtocols AS ( FROM onprc_ehr.eIACUC_PRIME_VIEW_PROTOCOLS WHERE - Protocol_State IN ('approved','expired', 'terminated', 'withdrawn') + Protocol_State IN ('approved','expired', 'terminated') GROUP BY BaseProtocol ), @@ -44,4 +44,4 @@ Update p Set p.enddate = getDate() , p.contacts = 'EndDated based on Protocol_State ' + e.PROTOCOL_State from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol -END \ No newline at end of file +END From 62407a008dd984cb6f0bcb6a089cdd3adbe3a5f2 Mon Sep 17 00:00:00 2001 From: brentlogan Date: Thu, 2 Jan 2025 17:43:55 -0800 Subject: [PATCH 10/12] Rename .xml and change descriptions --- ...teProtocols.xml => UpdateEhrProtocols.xml} | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) rename onprc_ehr/resources/etls/{eIACUCtoPrimteProtocols.xml => UpdateEhrProtocols.xml} (55%) diff --git a/onprc_ehr/resources/etls/eIACUCtoPrimteProtocols.xml b/onprc_ehr/resources/etls/UpdateEhrProtocols.xml similarity index 55% rename from onprc_ehr/resources/etls/eIACUCtoPrimteProtocols.xml rename to onprc_ehr/resources/etls/UpdateEhrProtocols.xml index ea306a7b2..9ddf6dec9 100644 --- a/onprc_ehr/resources/etls/eIACUCtoPrimteProtocols.xml +++ b/onprc_ehr/resources/etls/UpdateEhrProtocols.xml @@ -2,36 +2,31 @@ - eIACUC to Prime Protocols - - Runs stored Procedure to update eiACUC Protocols in ehr + Update Protocols in EHR + Runs stored procedures to update the protocol table in schema ehr. - Runs a stored procedure that generates lab values + Determines and populates BaseProtocol and RevisionNumber data for the protocol table in schema onprc_ehr. - Runs a stored procedure that generates lab values + Adds enddate data to the protocol table in ehr. - - - - + --> From 87c47ef15bf7e9d48a2730691e40ec21aa968525 Mon Sep 17 00:00:00 2001 From: jonesgaohsu Date: Fri, 3 Jan 2025 11:06:21 -0700 Subject: [PATCH 11/12] Updated the Stored Precedure from ALTER to CREATE --- .../schemas/dbscripts/sqlserver/onprc_ehr-24.002-24.003.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index da2fe1cfa..0b8089f6f 100644 --- 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 @@ -1,4 +1,4 @@ -ALTER PROCEDURE onprc_ehr.BaseProtocol +CREATE PROCEDURE onprc_ehr.BaseProtocol AS BEGIN -- Create a Common Table Expression (CTE) named BaseProtocol From 1f4141030e40bfa2523cc804b09362a76aded513 Mon Sep 17 00:00:00 2001 From: jonesgaohsu Date: Tue, 14 Jan 2025 11:49:53 -0700 Subject: [PATCH 12/12] UPdate of SQL Script to remove unwanted testing comments and reformt CTEs for Stnadarization --- .../sqlserver/onprc_ehr-24.004-24.005.sql | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) 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 index 8dafb5690..d6bc68d98 100644 --- 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 @@ -32,16 +32,17 @@ WITH ApprovedProtocols AS ( 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) + 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() , p.contacts = 'EndDated based on Protocol_State ' + e.PROTOCOL_State - + Set p.enddate = getDate() from ehr.protocol p inner join expiredProtocol e on p.external_id = e.BaseProtocol END