diff --git a/onprc_ehr/resources/web/onprc_ehr/panel/EnterDataPanel.js b/onprc_ehr/resources/web/onprc_ehr/panel/EnterDataPanel.js
index 07d179695..b3ad78b86 100644
--- a/onprc_ehr/resources/web/onprc_ehr/panel/EnterDataPanel.js
+++ b/onprc_ehr/resources/web/onprc_ehr/panel/EnterDataPanel.js
@@ -492,14 +492,9 @@ Ext4.define('onprc_ehr.panel.EnterDataPanel', {
width: 200
},{
xtype: 'ldk-linkbutton',
- text: 'Requests With Manual Results',
+ text: 'Requests',
linkCls: 'labkey-text-link',
- href: LABKEY.ActionURL.buildURL('query', 'executeQuery', null, {schemaName: 'study', 'query.queryName': 'Clinpath Runs', 'query.viewName': 'Requests', 'query.QCState/Label~startswith': 'Request:', 'query.servicerequested/chargetype~eq': 'Clinpath', 'query.mergeSyncInfo/automaticresults~eq': false})
- },{
- xtype: 'ldk-linkbutton',
- text: 'Requests With Automatic Results',
- linkCls: 'labkey-text-link',
- href: LABKEY.ActionURL.buildURL('query', 'executeQuery', null, {schemaName: 'study', 'query.queryName': 'Clinpath Runs', 'query.viewName': 'Requests', 'query.QCState/Label~startswith': 'Request:', 'query.servicerequested/chargetype~eq': 'Clinpath', 'query.mergeSyncInfo/automaticresults~eq': true})
+ href: LABKEY.ActionURL.buildURL('query', 'executeQuery', null, {schemaName: 'study', 'query.queryName': 'Clinpath Runs', 'query.viewName': 'Requests', 'query.QCState/Label~startswith': 'Request:', 'query.servicerequested/chargetype~eq': 'Clinpath'})
}]
},{
layout: 'hbox',
diff --git a/onprc_ehr/resources/web/onprc_ehr/panel/LabworkRequestInstructionsPanel.js b/onprc_ehr/resources/web/onprc_ehr/panel/LabworkRequestInstructionsPanel.js
deleted file mode 100644
index e0d8fb19b..000000000
--- a/onprc_ehr/resources/web/onprc_ehr/panel/LabworkRequestInstructionsPanel.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2013-2014 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
- */
-Ext4.define('ONPRC_EHR.panel.RequestInstructionsPanel', {
- extend: 'Ext.panel.Panel',
- alias: 'widget.onprc-labworkrequestinstructionspanel',
-
- initComponent: function(){
- var mergeURL = LABKEY.getModuleProperty('MergeSync', 'MergeURL');
- var items;
- if (mergeURL){
- items = [{
- html: 'This form allows you to request Labwork, similar to requesting in Merge. After requesting Clinpath services through this form, this request will be created in Merge. You can print print labels through Merge.' +
- 'Click here to open Merge
' +
- 'Click here for instructions on Merge label printing ',
- style: 'padding: 5px;'
- }]
- }
- else {
- items = [{
- html: 'The Merge URL has not been configured for this site',
- style: 'padding: 5px;'
- }]
- }
-
- Ext4.apply(this, {
- defaults: {
- border: false
- },
- items: items
- });
-
- this.callParent(arguments);
- }
-});
\ No newline at end of file
diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/LabworkRequestFormType.java b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/LabworkRequestFormType.java
index 6f44fb36d..9127f1a57 100644
--- a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/LabworkRequestFormType.java
+++ b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/LabworkRequestFormType.java
@@ -39,10 +39,6 @@ public LabworkRequestFormType(DataEntryFormContext ctx, Module owner)
{
super(ctx, owner, NAME, LABEL, "Requests", Arrays.asList(
new RequestFormSection(),
-
- //Modified: 1-14-2019 R. Blasa No longer need Merge web link
-// new LabworkRequestInstructionsFormSection(),
-
new AnimalDetailsFormSection(),
new ClinpathRunsFormSection(true)
));
@@ -55,7 +51,6 @@ public LabworkRequestFormType(DataEntryFormContext ctx, Module owner)
//Added 2-8-2016 Blasa
addClientDependency(ClientDependency.supplierFromPath("onprc_ehr/model/sources/labworkPanel.js"));
- addClientDependency(ClientDependency.supplierFromModuleName("MergeSync"));
addClientDependency(ClientDependency.supplierFromPath("onprc_ehr/panel/LabworkRequestDataEntryPanel.js"));
setJavascriptClass("ONPRC_EHR.panel.LabworkRequestDataEntryPanel");
}
diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/LabworkRequestInstructionsFormSection.java b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/LabworkRequestInstructionsFormSection.java
deleted file mode 100644
index b896826b8..000000000
--- a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/LabworkRequestInstructionsFormSection.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2014 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.labkey.onprc_ehr.dataentry;
-
-import org.labkey.api.ehr.dataentry.AbstractFormSection;
-import org.labkey.api.ehr.dataentry.DataEntryFormContext;
-import org.labkey.api.ehr.dataentry.FormElement;
-import org.labkey.api.view.template.ClientDependency;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * User: bimber
- * Date: 6/9/13
- * Time: 4:15 PM
- */
-public class LabworkRequestInstructionsFormSection extends AbstractFormSection
-{
- public LabworkRequestInstructionsFormSection()
- {
- super("LabworkRequestInstructions", "Instructions", "onprc-labworkrequestinstructionspanel");
-
- addClientDependency(ClientDependency.supplierFromPath("onprc_ehr/panel/LabworkRequestInstructionsPanel.js"));
- }
-
- @Override
- protected List getFormElements(DataEntryFormContext ctx)
- {
- return Collections.emptyList();
- }
-}
From 9692d8e1f90288866e2a378dddd21da005d081bb Mon Sep 17 00:00:00 2001
From: bbimber
Date: Wed, 26 Aug 2026 14:13:05 -0700
Subject: [PATCH 04/19] Support tracking libraryType in MHC results and ETLs
(#1858)
@brentlogan: these changes are an extension to the MHC typing storage
and ETLs. They mostly impact the PRIMe-seq side, but will ultimately
need to be deployed to PRIMe.
Can you confirm what LK version PRIMe is running? I would like to deploy
the PRIMe-seq parts of this first, stage data, and then add the PRIMe
pieces. Because I think you update less frequently, this might just
happen naturally.
---
GeneticsCore/resources/etls/MHC_Typing.xml | 1 +
.../resources/queries/geneticscore/mhc_data_source.sql | 3 +++
.../dbscripts/postgresql/geneticscore-17.14-17.15.sql | 1 +
.../dbscripts/sqlserver/geneticscore-17.14-17.15.sql | 1 +
GeneticsCore/resources/schemas/geneticscore.xml | 3 +++
GeneticsCore/resources/views/mhcDataDashboard.html | 6 ++++++
.../src/org/labkey/GeneticsCore/GeneticsCoreModule.java | 2 +-
.../src/org/labkey/GeneticsCore/mhc/MhcTaskRef.java | 2 +-
.../resources/queries/sequenceanalysis/MHC_Data_Unified.sql | 3 ++-
9 files changed, 19 insertions(+), 3 deletions(-)
create mode 100644 GeneticsCore/resources/schemas/dbscripts/postgresql/geneticscore-17.14-17.15.sql
create mode 100644 GeneticsCore/resources/schemas/dbscripts/sqlserver/geneticscore-17.14-17.15.sql
diff --git a/GeneticsCore/resources/etls/MHC_Typing.xml b/GeneticsCore/resources/etls/MHC_Typing.xml
index 1b8134db3..9e93c1e25 100644
--- a/GeneticsCore/resources/etls/MHC_Typing.xml
+++ b/GeneticsCore/resources/etls/MHC_Typing.xml
@@ -11,6 +11,7 @@
marker
result
assaytype
+ librarytype
score
totalTests
objectid
diff --git a/GeneticsCore/resources/queries/geneticscore/mhc_data_source.sql b/GeneticsCore/resources/queries/geneticscore/mhc_data_source.sql
index d66017d3f..5eb5501e1 100644
--- a/GeneticsCore/resources/queries/geneticscore/mhc_data_source.sql
+++ b/GeneticsCore/resources/queries/geneticscore/mhc_data_source.sql
@@ -13,6 +13,7 @@ SELECT
s.totalRecords as totalTests,
s.status as result,
cast('SSP' as varchar) as assaytype,
+ 'N/A' as librarytype,
NULL as score
FROM assay.SSP_assay.SSP.SSP_Summary s
@@ -27,6 +28,7 @@ SELECT
count(*) as totalTests,
cast('POS' as varchar) as result,
cast('SBT' as varchar) as assaytype,
+ a.analysisId.readset.libraryType as librarytype,
sum(a.result) / (SELECT count(DISTINCT a2.analysisId) as total FROM assay.GenotypeAssay.Genotype.Data a2 WHERE a2.subjectId = a.subjectId AND a2.run.assayType = 'SBT' ) AS score,
FROM assay.GenotypeAssay.Genotype.Data a
@@ -42,6 +44,7 @@ DISTINCT s.subjectId,
1 as totalTests,
cast('NEG' as varchar) as result,
cast('SBT' as varchar) as assaytype,
+ null as librarytype,
NULL as score,
--we want any IDs with SBT data, but lacking data for these special-cased markers
diff --git a/GeneticsCore/resources/schemas/dbscripts/postgresql/geneticscore-17.14-17.15.sql b/GeneticsCore/resources/schemas/dbscripts/postgresql/geneticscore-17.14-17.15.sql
new file mode 100644
index 000000000..9bbbd6300
--- /dev/null
+++ b/GeneticsCore/resources/schemas/dbscripts/postgresql/geneticscore-17.14-17.15.sql
@@ -0,0 +1 @@
+ALTER TABLE geneticscore.mhc_data ADD librarytype varchar(1000);
\ No newline at end of file
diff --git a/GeneticsCore/resources/schemas/dbscripts/sqlserver/geneticscore-17.14-17.15.sql b/GeneticsCore/resources/schemas/dbscripts/sqlserver/geneticscore-17.14-17.15.sql
new file mode 100644
index 000000000..44938f852
--- /dev/null
+++ b/GeneticsCore/resources/schemas/dbscripts/sqlserver/geneticscore-17.14-17.15.sql
@@ -0,0 +1 @@
+ALTER TABLE geneticscore.mhc_data ADD libraryType varchar(1000);
\ No newline at end of file
diff --git a/GeneticsCore/resources/schemas/geneticscore.xml b/GeneticsCore/resources/schemas/geneticscore.xml
index edd583b0f..b6e75f073 100644
--- a/GeneticsCore/resources/schemas/geneticscore.xml
+++ b/GeneticsCore/resources/schemas/geneticscore.xml
@@ -44,6 +44,9 @@
Assay Type
+
+ Library Type
+
Key
true
diff --git a/GeneticsCore/resources/views/mhcDataDashboard.html b/GeneticsCore/resources/views/mhcDataDashboard.html
index 8ca2fcdb5..baabebe4e 100644
--- a/GeneticsCore/resources/views/mhcDataDashboard.html
+++ b/GeneticsCore/resources/views/mhcDataDashboard.html
@@ -86,6 +86,12 @@
schemaName: 'geneticscore',
queryName: 'mhc_data'
})
+ },{
+ name: 'Manage Library Types',
+ url: LABKEY.ActionURL.buildURL('query', 'executeQuery.view', null, {
+ schemaName: 'sequenceanalysis',
+ queryName: 'library_types'
+ })
}]
},{
header: 'Data Archival',
diff --git a/GeneticsCore/src/org/labkey/GeneticsCore/GeneticsCoreModule.java b/GeneticsCore/src/org/labkey/GeneticsCore/GeneticsCoreModule.java
index 4bc8cdea1..dd534e5e1 100644
--- a/GeneticsCore/src/org/labkey/GeneticsCore/GeneticsCoreModule.java
+++ b/GeneticsCore/src/org/labkey/GeneticsCore/GeneticsCoreModule.java
@@ -40,7 +40,7 @@ public String getName()
@Override
public @Nullable Double getSchemaVersion()
{
- return 17.14;
+ return 17.15;
}
@Override
diff --git a/GeneticsCore/src/org/labkey/GeneticsCore/mhc/MhcTaskRef.java b/GeneticsCore/src/org/labkey/GeneticsCore/mhc/MhcTaskRef.java
index 91aeaee97..67c77dae4 100644
--- a/GeneticsCore/src/org/labkey/GeneticsCore/mhc/MhcTaskRef.java
+++ b/GeneticsCore/src/org/labkey/GeneticsCore/mhc/MhcTaskRef.java
@@ -159,7 +159,7 @@ private void processSubject(PipelineJob job, String subject) throws PipelineJobE
}
List> toInsert = new ArrayList<>();
- Set fields = PageFlowUtil.set("subjectid", "marker", "result", "assaytype", "totalTests", "score");
+ Set fields = PageFlowUtil.set("subjectid", "marker", "result", "assaytype", "totalTests", "score", "librarytype");
new TableSelector(us.getTable("mhc_data_source"), fields, new SimpleFilter(FieldKey.fromString("subjectId"), subject), null).forEachResults(rs -> {
CaseInsensitiveHashMap map = new CaseInsensitiveHashMap<>();
for (String f : fields)
diff --git a/onprc_reports/resources/queries/sequenceanalysis/MHC_Data_Unified.sql b/onprc_reports/resources/queries/sequenceanalysis/MHC_Data_Unified.sql
index 5e9794932..4b350de19 100644
--- a/onprc_reports/resources/queries/sequenceanalysis/MHC_Data_Unified.sql
+++ b/onprc_reports/resources/queries/sequenceanalysis/MHC_Data_Unified.sql
@@ -10,7 +10,8 @@ SELECT
null as shortName,
sum(t.totalTests) as totalTests,
t.result,
- GROUP_CONCAT(distinct t.assaytype) as type
+ GROUP_CONCAT(distinct t.assaytype) as type,
+ GROUP_CONCAT(distinct t.libraryType) as libraryTypes
FROM geneticscore.mhc_data t
GROUP BY t.subjectid, t.marker, t.result
From 0d0272155514ccd66252c64b1799952cee581c6c Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Wed, 26 Aug 2026 16:36:17 -0700
Subject: [PATCH 05/19] Modified Printable online reports to include qcstate.
(#1853)
Modified Medication Printable online reports to now include qcstate
reporting column
---
onprc_ehr/resources/queries/study/treatmentSchedule.query.xml | 2 +-
onprc_ehr/resources/queries/study/treatmentSchedule/.qview.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/onprc_ehr/resources/queries/study/treatmentSchedule.query.xml b/onprc_ehr/resources/queries/study/treatmentSchedule.query.xml
index e5689ef32..751f34472 100644
--- a/onprc_ehr/resources/queries/study/treatmentSchedule.query.xml
+++ b/onprc_ehr/resources/queries/study/treatmentSchedule.query.xml
@@ -73,7 +73,7 @@
true
- true
+ false
core
qcstate
diff --git a/onprc_ehr/resources/queries/study/treatmentSchedule/.qview.xml b/onprc_ehr/resources/queries/study/treatmentSchedule/.qview.xml
index 9ef8f2ccd..95509a802 100644
--- a/onprc_ehr/resources/queries/study/treatmentSchedule/.qview.xml
+++ b/onprc_ehr/resources/queries/study/treatmentSchedule/.qview.xml
@@ -17,7 +17,7 @@
-
+
From 494eddaf19e4abd2d387618c5786b4b10d92cc09 Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Wed, 26 Aug 2026 16:58:25 -0700
Subject: [PATCH 06/19] 26.3 fb blood draw validation (#1850)
Modified Blood Draw input form to allow users an option to enter
"Additional Services" selections
---
onprc_ehr/resources/scripts/onprc_ehr/onprc_triggers.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/onprc_ehr/resources/scripts/onprc_ehr/onprc_triggers.js b/onprc_ehr/resources/scripts/onprc_ehr/onprc_triggers.js
index 51e4b53e8..451ef432c 100644
--- a/onprc_ehr/resources/scripts/onprc_ehr/onprc_triggers.js
+++ b/onprc_ehr/resources/scripts/onprc_ehr/onprc_triggers.js
@@ -1150,6 +1150,9 @@ exports.init = function(EHR){
if (!row.quantity && row.num_tubes && row.tube_vol){
row.quantity = row.num_tubes * row.tube_vol;
}
+ if (row.additionalServices == null) {
+ EHR.Server.Utils.addError(scriptErrors, 'additionalServices', 'Please select from a list of Additional Services items', 'INFO');
+ }
if (row.additionalServices) {
if (row.tube_type || row.tube_vol){
From dd3545aa1bd9e0fe5fd68947c769a49eb86a97c1 Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Wed, 26 Aug 2026 19:13:21 -0700
Subject: [PATCH 07/19] 26.3 fb stored procedure cleanup (#1803)
Stored procedure clean up of single use programs
---
...omplianceProcedureRecentTestsorg.query.xml | 126 ------------
.../ComplianceProcedureRecentTestsorg.sql | 148 --------------
.../.qview.xml | 25 ---
.../Occupational Health Compliance.qview.xml | 28 ---
...nd Due Soon withNoEHRS OccHealth.qview.xml | 16 --
.../Overdue and Due Soon.qview.xml | 12 --
.../ComplianceRecentTestsorg.query.xml | 121 -----------
.../ComplianceRecentTestsorg.sql | 192 ------------------
.../ComplianceRecentTestsorg/.qview.xml | 23 ---
.../sqlserver/onprc_ehr-26.003-26.004.sql | 82 ++++++++
onprc_ehr/resources/schemas/onprc_ehr.xml | 42 ----
.../org/labkey/onprc_ehr/ONPRC_EHRModule.java | 2 +-
12 files changed, 83 insertions(+), 734 deletions(-)
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.query.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/.qview.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Occupational Health Compliance.qview.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon withNoEHRS OccHealth.qview.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon.qview.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.query.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg/.qview.xml
create mode 100644 onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-26.003-26.004.sql
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.query.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.query.xml
deleted file mode 100644
index b3e75afd8..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.query.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
- Employee Requirement Summary -- Original version
-
-
- Employee ID
- true
-
- ehr_compliancedb
- employees
- employeeId
-
-
-
-
- Row ID
-
-
- Requirement Name
- 250
-
- ehr_compliancedb
- requirements
- requirementName
-
- ALWAYS_OFF
-
-
- Times Completed
- 50
- /query/executeQuery.view?schemaName=ehr_compliancedb&
- query.queryName=CompletionDates&
- query.EmployeeId~eq=${employeeId}&
- query.requirementName~eq=${requirementName}&
-
-
-
- Expire Period (Months)
- 70
-
-
- New Expire Period (Months)
- 70
-
-
-
- Email
- 70
-
-
-
- Last Name
- 110
-
-
-
- First Name
- 110
-
-
-
- Host
- 110
-
-
- Supervisor
- 150
-
-
-
- Unit
- 210
-
-
- Most Recent Date
- yyyy-MM-dd
- 70
-
-
- Comments
- 70
-
-
- Category
- 70
-
-
-
- Trainee Type
- 70
-
-
- Requirement Name Type
- 180
-
-
- Months Until Renewal
- 60
-
-
-
-
-
- FBEC5D
-
-
-
-
-
- Essential
- 60
- ALWAYS_OFF
-
-
- Snooze Until
- 60
- ALWAYS_OFF
-
-
-
-
-
-
-
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.sql b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.sql
deleted file mode 100644
index 585ed1c0e..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.sql
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2010-2014 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
- */
-
--- Modified: 6-14-2022 R.Blasa ComplianceRecentTests.sql
--- Training that was completed by an employee and being recorded as completed as a Unit or Category
-select b.requirementname,
- a.employeeid,
- group_concat(distinct a.unit,chr(10)) as unit,
- group_concat(distinct a.category,chr(10)) as category,
- group_concat(distinct b.trackingflag) as trackingflag,
-
-
- (select count(zz.date) from completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from completiondates yy where yy.date in (select max(zz.date) from completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
- (Select group_concat(distinct yy.snooze_date , chr(10)) from completiondates yy where yy.date in (select max(zz.date) from completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
-
- WHEN (select max(st.date) from completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - (TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS DECIMAL ) AS MonthsUntilRenewal
-
-
-
-from employeeperunit a ,requirementspercategory b
-where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
-
-
- group by b.requirementname,a.employeeid
-
-
-union
-
--- Training that was completed by an employee but not recorded as being completed as a Unit or Category
-select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from completiondates yy where yy.date in (select max(zz.date) from completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select group_concat(distinct yy.snooze_date , chr(10)) from completiondates yy where yy.date in (select max(zz.date) from completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS DECIMAL) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.completiondates a
-where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
-group by a.requirementname,a.employeeid
-
-UNION
-
--- Additional requirements for employees that have not completed training, but is required
-select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'Yes' as trackingflag,
- null as timesCompleted,
- null as ExpiredPeriod,
- null as NewExpirePeriod,
- null as MostRecentDate,
- '' as comment,
- null as snooze_date,
- null AS MonthsUntilRenewal
-
-
-from ehr_compliancedb.RequirementsPerEmployee j
-Where j.requirementname not in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
- and z.employeeid = j.employeeid and z.date is not null)
- And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
-
-
-group by j.requirementname,j.employeeid
-
-
-
-
-
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/.qview.xml
deleted file mode 100644
index 82fc59d49..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/.qview.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Occupational Health Compliance.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Occupational Health Compliance.qview.xml
deleted file mode 100644
index 97934dc5a..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Occupational Health Compliance.qview.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon withNoEHRS OccHealth.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon withNoEHRS OccHealth.qview.xml
deleted file mode 100644
index 192608c90..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon withNoEHRS OccHealth.qview.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon.qview.xml
deleted file mode 100644
index bc93d1734..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon.qview.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.query.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.query.xml
deleted file mode 100644
index 46cb8fc00..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.query.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
- Employee Requirement Summary - Original version
-
-
- Employee ID
- true
-
- ehr_compliancedb
- employees
- employeeId
-
-
-
-
- Row ID
-
-
- Requirement Name
- 90
-
- ehr_compliancedb
- requirements
- requirementName
-
- ALWAYS_OFF
-
-
- Times Completed
- 50
- /query/executeQuery.view?schemaName=ehr_compliancedb&
- query.queryName=CompletionDates&
- query.EmployeeId~eq=${employeeId}&
- query.requirementName~eq=${requirementName}&
-
-
-
- Expire Period (Months)
- 70
-
-
- New Expire Period (Months)
- 70
-
-
-
- Email
- 70
-
-
-
- Last Name
- 110
-
-
-
- First Name
- 110
-
-
-
- Host
- 110
-
-
- Supervisor
- 150
-
-
-
- Unit
- 210
-
-
- Most Recent Date
- yyyy-MM-dd
- 70
-
-
- Comments
- 70
-
-
- Category
- 70
-
-
-
- Trainee Type
- 70
-
-
- Requirement Name Type
- 180
-
-
- Months Until Renewal
- 60
-
-
-
-
-
- FBEC5D
-
-
-
-
-
- Essential
- 60
- ALWAYS_OFF
-
-
-
-
-
-
-
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.sql b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.sql
deleted file mode 100644
index 1ff4baac6..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.sql
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (c) 2010-2014 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
- */
-
--- Modified: 6-14-2022 R.Blasa ComplianceRecentTests.sql
--- Training that was completed by an employee and being recorded as completed as a Unit or Category
-select b.requirementname,
- a.employeeid,
- group_concat(distinct b.unit,chr(10)) as unit,
- group_concat(distinct a.category,chr(10)) as category,
- group_concat(distinct b.trackingflag) as trackingflag,
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - (TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS double) AS MonthsUntilRenewal
-
-
-
-from employeeperunit a ,requirementspercategory b
-where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
-
-group by b.requirementname,a.employeeid
-
-union
-
--- Training that was completed by an employee but not recorded as being completed as a Unit or Category
-select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
-
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS double) AS MonthsUntilRenewal
-
-from ehr_compliancedb.completiondates a
-where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
-
-group by a.requirementname,a.employeeid
-
-
-union
-
--- Training that was completed by as an employee training exemptions, and at least completed one, or more times
-select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
-
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
- And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as comment,
-
-
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
-
- END AS double) AS MonthsUntilRenewal
-
-from ehr_compliancedb.employeerequirementexemptions j
- Where j.requirementname in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
- and z.employeeid = j.employeeid and z.date is not null)
- And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
-
-
-group by j.requirementname,j.employeeid
-
-UNION
-
--- Additional requirements for employees that have not completed training, but is required
-select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'Yes' as trackingflag,
- null as timesCompleted,
- null as ExpiredPeriod,
- null as NewExpirePeriod,
- null as MostRecentDate,
- '' as comment,
- null AS MonthsUntilRenewal
-
-
-from ehr_compliancedb.RequirementsPerEmployee j
-Where j.requirementname NOT in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
- and z.employeeid = j.employeeid and z.date is not null)
- And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
-
-
-group by j.requirementname,j.employeeid
-
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg/.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg/.qview.xml
deleted file mode 100644
index 750c4460d..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg/.qview.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-26.003-26.004.sql b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-26.003-26.004.sql
new file mode 100644
index 000000000..26838c022
--- /dev/null
+++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-26.003-26.004.sql
@@ -0,0 +1,82 @@
+/*
+ Created: 7-16-2026 R. Blasa Process to removed temp tables, and stored prcoedure that are no longer needed
+
+ */
+---Dropping user defined sql queries
+--- ComplianceProcedureRecenttTestsorg.sql
+---- ComplianceProcedureRecentTestsorg --> directory and xml files
+
+--- ComplianceRecenttTestsorg.sql
+---- ComplianceRecentTestsorg --> directory and xml files
+
+
+----Drop corresponding temp tables
+---- No temp tables to include here
+--Drop stored procedures
+EXEC core.fn_dropifexists 'sp_Compliance_requirementname_Update_Process','onprc_ehr','PROCEDURE';
+GO
+----Drop corresponding temp tables
+
+--Drop stored procedures
+EXEC core.fn_dropifexists 's_JmacRemovalDateProcess','onprc_ehr','PROCEDURE';
+GO
+
+EXEC core.fn_dropifexists 'Rpt_TempJmacDate','onprc_ehr','TABLE';
+GO
+
+EXEC core.fn_dropifexists 'JmacRemovalDate','onprc_ehr','TABLE';
+GO
+----Drop corresponding temp tables
+ ---- No temp tables to include here
+--Drop stored procedures
+EXEC core.fn_dropifexists 'p_EnvironmentalHistoricalUpdates','onprc_ehr','PROCEDURE';
+GO
+----Drop corresponding temp tables
+ ---- No temp tables to include here
+--Drop stored procedures
+EXEC core.fn_dropifexists 'p_Environmental_Update_Process','onprc_ehr','PROCEDURE';
+GO
+
+--Drop stored procedures
+EXEC core.fn_dropifexists 'sp_RpSLASummaryCensus','dbo','PROCEDURE';
+GO
+
+----Drop corresponding temp tables
+EXEC core.fn_dropifexists 'Rpt_SLaCensus','dbo','TABLE';
+GO
+
+
+--Drop stored procedures
+EXEC core.fn_dropifexists 'RptMergeChargetypeUpdateSP','dbo','PROCEDURE';
+GO
+
+----Drop corresponding temp tables
+EXEC core.fn_dropifexists 'Rpt_Labwork_MergeUpdate','dbo','TABLE';
+GO
+EXEC core.fn_dropifexists 'Rpt_Labwork_MergeUpdatelog','dbo','TABLE';
+GO
+
+
+--Drop stored procedures
+EXEC core.fn_dropifexists 's_MasterProblemHistoricalProcess','onprc_ehr','PROCEDURE';
+GO
+
+
+----Drop corresponding temp tables
+---- No temp tables to include here
+--Drop stored procedures
+EXEC core.fn_dropifexists 'p_ComplianceTranslatestringUpdate','onprc_ehr_compliancedb','PROCEDURE';
+GO
+
+----Drop corresponding temp tables
+EXEC core.fn_dropifexists 'Rpt_TempProblemList','onprc_ehr','TABLE';
+GO
+
+EXEC core.fn_dropifexists 'Rpt_TempProblemListMaster','onprc_ehr','TABLE';
+GO
+
+
+
+
+
+
diff --git a/onprc_ehr/resources/schemas/onprc_ehr.xml b/onprc_ehr/resources/schemas/onprc_ehr.xml
index 2e4c069f5..26e225c6f 100644
--- a/onprc_ehr/resources/schemas/onprc_ehr.xml
+++ b/onprc_ehr/resources/schemas/onprc_ehr.xml
@@ -1517,46 +1517,4 @@
-
-
-
-
-
-
-
-
-
-
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 378583262..b6651a8de 100644
--- a/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java
+++ b/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java
@@ -124,7 +124,7 @@ public String getName()
@Override
public @Nullable Double getSchemaVersion()
{
- return 26.003;
+ return 26.004;
}
@Override
From 23875503d36c79ec61dc9dee052d28f09139b72b Mon Sep 17 00:00:00 2001
From: Marty Pradere
Date: Thu, 27 Aug 2026 03:21:36 -0700
Subject: [PATCH 08/19] Fix stored XSS in finance notification charge summary
report (#1779)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Rationale
FinanceNotification.writeResultTable builds the ONPRC charge summary
report by concatenating editor-entered database values (financial
analyst, project, alias/account, OGA project number, category) and their
derived URLs directly into HTML with no escaping. That HTML is rendered
verbatim into the LDK RunNotificationAction admin preview via
HtmlString.unsafe and is also sent as the HTML email body, so a stored
payload in any of those project/alias fields executed in the browser of
any user who previewed the notification or received the email — a stored
XSS with privilege-escalation potential toward admins. This is the ONPRC
counterpart to the BillingNotification fix. DCMFinanceNotification was a
registered subclass that overrode writeResultTable with a near-duplicate
copy of the same unescaped report; rather than carry and fix a second
copy, it is removed entirely.
## Changes
- FinanceNotification: wrap every editor-entered value (financial
analyst, project, account, project number, category) and its derived
href URL in PageFlowUtil.filter in the per-financial-analyst tables, and
filter the top category summary table (url and category), which was
unescaped in this copy; add the org.labkey.api.util.PageFlowUtil import.
- DCMFinanceNotification: remove the class entirely and drop its
NotificationService registration and import from ONPRC_BillingModule.
---
.../onprc_billing/ONPRC_BillingModule.java | 2 -
.../notification/DCMFinanceNotification.java | 186 ------------------
.../notification/FinanceNotification.java | 25 +--
.../tests/onprc_ehr/ONPRC_BillingTest.java | 1 -
4 files changed, 13 insertions(+), 201 deletions(-)
delete mode 100644 onprc_billing/src/org/labkey/onprc_billing/notification/DCMFinanceNotification.java
diff --git a/onprc_billing/src/org/labkey/onprc_billing/ONPRC_BillingModule.java b/onprc_billing/src/org/labkey/onprc_billing/ONPRC_BillingModule.java
index 0d132cfed..035af29a8 100644
--- a/onprc_billing/src/org/labkey/onprc_billing/ONPRC_BillingModule.java
+++ b/onprc_billing/src/org/labkey/onprc_billing/ONPRC_BillingModule.java
@@ -49,7 +49,6 @@
import org.labkey.onprc_billing.dataentry.ChargesARTCoreFormType;
import org.labkey.onprc_billing.dataentry.ReversalFormType;
import org.labkey.onprc_billing.notification.BillingValidationNotification;
-import org.labkey.onprc_billing.notification.DCMFinanceNotification;
import org.labkey.onprc_billing.notification.FinanceNotification;
import org.labkey.onprc_billing.pipeline.BillingPipelineProvider;
import org.labkey.onprc_billing.query.BillingAuditProvider;
@@ -113,7 +112,6 @@ protected void doStartupAfterSpringConfig(ModuleContext moduleContext)
PipelineService.get().registerPipelineProvider(new BillingPipelineProvider(this));
NotificationService.get().registerNotification(new FinanceNotification());
- NotificationService.get().registerNotification(new DCMFinanceNotification());
NotificationService.get().registerNotification(new BillingValidationNotification());
EHRService.get().registerTableCustomizer(this, ONPRC_BillingCustomizer.class);
diff --git a/onprc_billing/src/org/labkey/onprc_billing/notification/DCMFinanceNotification.java b/onprc_billing/src/org/labkey/onprc_billing/notification/DCMFinanceNotification.java
deleted file mode 100644
index 2da58ca5c..000000000
--- a/onprc_billing/src/org/labkey/onprc_billing/notification/DCMFinanceNotification.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package org.labkey.onprc_billing.notification;
-
-import org.apache.commons.lang3.StringUtils;
-import org.labkey.api.data.Container;
-import org.labkey.onprc_billing.ONPRC_BillingManager;
-import org.labkey.onprc_billing.ONPRC_BillingSchema;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-/**
-
- */
-public class DCMFinanceNotification extends FinanceNotification
-{
- @Override
- public String getName()
- {
- return "DCM Finance Notification";
- }
-
- @Override
- public String getEmailSubject(Container c)
- {
- return "DCM Finance/Billing Alerts: " + getDateTimeFormat(c).format(new Date());
- }
-
- @Override
- public String getCronString()
- {
- return "0 30 7 * * ?";
- }
-
- @Override
- public String getScheduleDescription()
- {
- return "every day at 7:30AM";
- }
-
- @Override
- protected void writeResultTable(final StringBuilder msg, Date lastInvoiceEnd, Calendar start, Calendar endDate, final Map>>> dataMap, final Map> totalsByCategory, Map categoryToQuery, Map containerMap, Container c)
- {
- msg.append("Charge Summary: ");
- msg.append("The table below summarizes projected charges since the since the last invoice date of " + getDateFormat(c).format(lastInvoiceEnd));
-
- msg.append("
Category # Items Amount ");
- for (String category : totalsByCategory.keySet())
- {
- Map totalsMap = totalsByCategory.get(category);
- Container container = containerMap.get(category);
-
- String url = getExecuteQueryUrl(container, ONPRC_BillingSchema.NAME, categoryToQuery.get(category), null) + "&query.param.StartDate=" + getDateFormat(c).format(start.getTime()) + "&query.param.EndDate=" + getDateFormat(c).format(endDate.getTime());
- msg.append("" + category + " " + totalsMap.get("total") + " " + _dollarFormat.format(totalsMap.get("totalCost")) + " ");
- }
- msg.append("
");
-
- msg.append("The tables below highlight any suspicious or abnormal items, grouped by project. These will not necessarily be problems, but may warrant investigation. ");
-
- //NOTE: this is a slightly odd approach, but the primary notification groups these data by FA. we take this map and group it instead by project/alias
- Map>> newDataMap = new TreeMap<>();
- Set foundCols = new LinkedHashSet<>();
- for (String financialAnalyst : dataMap.keySet())
- {
- //first collect all distinct columns we will need to show
- outerloop:
- for (FieldDescriptor fd : _fields)
- {
- for (String key : dataMap.get(financialAnalyst).keySet())
- {
- Map> projectDataByCategory = dataMap.get(financialAnalyst).get(key);
- for (String category : projectDataByCategory.keySet())
- {
- if (projectDataByCategory.get(category).containsKey(fd.getFieldName()))
- {
- foundCols.add(fd);
- continue outerloop;
- }
- }
- }
- }
-
- //then transform the initial Map based on FA into one based on project/alias
- for (String key : dataMap.get(financialAnalyst).keySet())
- {
- List tokens = new ArrayList<>(Arrays.asList(key.split("<>")));
- tokens.remove(0); //remove FA
- String newKey = StringUtils.join(tokens, "<>");
- Map> newDataByCategory = newDataMap.get(newKey);
- if (newDataByCategory == null)
- newDataByCategory = new TreeMap<>();
-
- Map> dataByCategory = dataMap.get(financialAnalyst).get(key);
- for (String category : dataByCategory.keySet())
- {
- Map newTotals = newDataByCategory.get(category);
- if (newTotals == null)
- newTotals = new TreeMap<>();
-
- Map totals = dataByCategory.get(category);
- for (String t : totals.keySet())
- {
- Integer newVal = newTotals.containsKey(t) ? newTotals.get(t) : 0;
- newVal += totals.get(t);
- newTotals.put(t, newVal);
- }
-
- newDataByCategory.put(category, newTotals);
- newDataMap.put(newKey, newDataByCategory);
- }
- }
- }
-
- //reorder columns based on initial order
- LinkedHashSet toShow = new LinkedHashSet<>();
- toShow.addAll(Arrays.asList(_fields));
- toShow.retainAll(foundCols);
-
- //now build the table itself
- msg.append("Project Alias OGA Project Category ");
- for (FieldDescriptor fd : toShow)
- {
- msg.append("" + fd.getLabel() + " ");
- }
- msg.append(" ");
-
- //and append rows
- for (String key : newDataMap.keySet())
- {
- String[] tokens = key.split("<>");
- Map> dataByCategory = newDataMap.get(key);
- for (String category : dataByCategory.keySet())
- {
- Map totals = dataByCategory.get(category);
-
- String baseUrl = getExecuteQueryUrl(containerMap.get(category), ONPRC_BillingSchema.NAME, categoryToQuery.get(category), null) + "&query.param.StartDate=" + getDateFormat(c).format(start.getTime()) + "&query.param.EndDate=" + getDateFormat(c).format(endDate.getTime());
- String projUrl = baseUrl + ("None".equals(tokens[0]) ? "&query.project/displayName~isblank" : "&query.project/displayName~eq=" + tokens[0]);
- msg.append("" + tokens[0] + " ");
-
- //alias
- String accountUrl = null;
- Container financeContainer = ONPRC_BillingManager.get().getBillingContainer(containerMap.get(category));
- if (financeContainer != null && !"Unknown".equals((tokens[1])))
- {
- accountUrl = getExecuteQueryUrl(financeContainer, ONPRC_BillingSchema.NAME, "aliases", null, null) + "&query.alias~eq=" + tokens[1];
- }
-
- if (accountUrl != null)
- {
- msg.append("" + tokens[1] + " ");
- }
- else
- {
- msg.append("" + (tokens[1]) + " ");
- }
-
- msg.append("" + (tokens[2]) + " ");
- msg.append("" + category + " ");
-
- for (FieldDescriptor fd : toShow)
- {
- if (totals.containsKey(fd.getFieldName()))
- {
- String url = projUrl + fd.getFilter();
- msg.append("" + totals.get(fd.getFieldName()) + " ");
- }
- else
- {
- msg.append(" ");
- }
- }
-
- msg.append(" ");
- }
- }
-
- msg.append("
");
- msg.append("");
- }
-}
diff --git a/onprc_billing/src/org/labkey/onprc_billing/notification/FinanceNotification.java b/onprc_billing/src/org/labkey/onprc_billing/notification/FinanceNotification.java
index 3ebd9db8a..f1a112165 100644
--- a/onprc_billing/src/org/labkey/onprc_billing/notification/FinanceNotification.java
+++ b/onprc_billing/src/org/labkey/onprc_billing/notification/FinanceNotification.java
@@ -39,6 +39,7 @@
import org.labkey.api.query.QueryService;
import org.labkey.api.query.UserSchema;
import org.labkey.api.security.User;
+import org.labkey.api.util.PageFlowUtil;
import org.labkey.onprc_billing.ONPRC_BillingManager;
import org.labkey.onprc_billing.ONPRC_BillingModule;
import org.labkey.onprc_billing.ONPRC_BillingSchema;
@@ -428,8 +429,8 @@ protected void writeResultTable(final StringBuilder msg, Date lastInvoiceEnd, Ca
Map totalsMap = totalsByCategory.get(category);
Container container = containerMap.get(category);
- String url = getExecuteQueryUrl(container, ONPRC_BillingSchema.NAME, categoryToQuery.get(category), null) + "&query.param.StartDate=" + getDateFormat(c).format(start.getTime()) + "&query.param.EndDate=" + getDateFormat(c).format(endDate.getTime());
- msg.append("" + category + " " + totalsMap.get("total") + " " + _dollarFormat.format(totalsMap.get("totalCost")) + " ");
+ String url = getExecuteQueryUrl(container, ONPRC_BillingSchema.NAME, categoryToQuery.get(category), null) + "&query.param.StartDate=" + PageFlowUtil.encodeURIComponent(getDateFormat(c).format(start.getTime())) + "&query.param.EndDate=" + PageFlowUtil.encodeURIComponent(getDateFormat(c).format(endDate.getTime()));
+ msg.append("" + PageFlowUtil.filter(category) + " " + totalsMap.get("total") + " " + _dollarFormat.format(totalsMap.get("totalCost")) + " ");
}
msg.append(" ");
@@ -472,37 +473,37 @@ protected void writeResultTable(final StringBuilder msg, Date lastInvoiceEnd, Ca
{
Map totals = dataByCategory.get(category);
- String baseUrl = getExecuteQueryUrl(containerMap.get(category), ONPRC_BillingSchema.NAME, categoryToQuery.get(category), null) + "&query.param.StartDate=" + getDateFormat(c).format(start.getTime()) + "&query.param.EndDate=" + getDateFormat(c).format(endDate.getTime());
- String projUrl = baseUrl + ("None".equals(tokens[1]) ? "&query.project/displayName~isblank" : "&query.project/displayName~eq=" + tokens[1]);
- msg.append("" + financialAnalyst + " "); //the FA
- msg.append("" + tokens[1] + " ");
+ String baseUrl = getExecuteQueryUrl(containerMap.get(category), ONPRC_BillingSchema.NAME, categoryToQuery.get(category), null) + "&query.param.StartDate=" + PageFlowUtil.encodeURIComponent(getDateFormat(c).format(start.getTime())) + "&query.param.EndDate=" + PageFlowUtil.encodeURIComponent(getDateFormat(c).format(endDate.getTime()));
+ String projUrl = baseUrl + ("None".equals(tokens[1]) ? "&query.project/displayName~isblank" : "&query.project/displayName~eq=" + PageFlowUtil.encodeURIComponent(tokens[1]));
+ msg.append("" + PageFlowUtil.filter(financialAnalyst) + " "); //the FA
+ msg.append("" + PageFlowUtil.filter(tokens[1]) + " ");
//alias
String accountUrl = null;
Container financeContainer = ONPRC_BillingManager.get().getBillingContainer(containerMap.get(category));
if (financeContainer != null && !"Unknown".equals((tokens[2])))
{
- accountUrl = getExecuteQueryUrl(financeContainer, ONPRC_BillingSchema.NAME, "aliases", null, null) + "&query.alias~eq=" + tokens[2];
+ accountUrl = getExecuteQueryUrl(financeContainer, ONPRC_BillingSchema.NAME, "aliases", null, null) + "&query.alias~eq=" + PageFlowUtil.encodeURIComponent(tokens[2]);
}
if (accountUrl != null)
{
- msg.append("" + tokens[2] + " ");
+ msg.append("" + PageFlowUtil.filter(tokens[2]) + " ");
}
else
{
- msg.append("" + (tokens[2]) + " ");
+ msg.append("" + PageFlowUtil.filter(tokens[2]) + " ");
}
- msg.append("" + (tokens[3]) + " ");
- msg.append("" + category + " ");
+ msg.append("" + PageFlowUtil.filter(tokens[3]) + " ");
+ msg.append("" + PageFlowUtil.filter(category) + " ");
for (FieldDescriptor fd : foundCols)
{
if (totals.containsKey(fd.getFieldName()))
{
String url = projUrl + fd.getFilter();
- msg.append("" + totals.get(fd.getFieldName()) + " ");
+ msg.append("" + totals.get(fd.getFieldName()) + " ");
}
else
{
diff --git a/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/ONPRC_BillingTest.java b/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/ONPRC_BillingTest.java
index 2adf3d9af..149e97f27 100644
--- a/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/ONPRC_BillingTest.java
+++ b/onprc_ehr/test/src/org/labkey/test/tests/onprc_ehr/ONPRC_BillingTest.java
@@ -128,7 +128,6 @@ public void testNotifications()
//run finance notifications
Set notifications = new HashSet<>();
- notifications.add("DCM Finance Notification");
notifications.add("Finance Notification");
beginAt(WebTestHelper.getBaseURL() + "/ldk/" + getContainerPath() + "/notificationAdmin.view");
From 894e527632636ca5504c88dcc965a397f9ffc131 Mon Sep 17 00:00:00 2001
From: Lakshmi Kolli <69940873+kollil@users.noreply.github.com>
Date: Thu, 27 Aug 2026 12:39:54 -0700
Subject: [PATCH 09/19] Birth records report update (#1870)
Added new column called "Source" to the Birth Records report on the
animal history page
---
.../queries/study/Birth/BirthSource.qview.xml | 26 +++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 onprc_ehr/resources/queries/study/Birth/BirthSource.qview.xml
diff --git a/onprc_ehr/resources/queries/study/Birth/BirthSource.qview.xml b/onprc_ehr/resources/queries/study/Birth/BirthSource.qview.xml
new file mode 100644
index 000000000..cdebfc248
--- /dev/null
+++ b/onprc_ehr/resources/queries/study/Birth/BirthSource.qview.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From bba2d1f8579309367c132cc4406985a7a5f4adb0 Mon Sep 17 00:00:00 2001
From: Binal Patel
Date: Fri, 28 Aug 2026 21:44:28 -0600
Subject: [PATCH 10/19] Add PostgreSQL equivalent of SQL Server
onprc_ehr-26.003-26.004 cleanup script (#1871)
---
.../postgresql/onprc_ehr-26.003-26.004.sql | 71 +++++++++++++++++++
1 file changed, 71 insertions(+)
create mode 100644 onprc_ehr/resources/schemas/dbscripts/postgresql/onprc_ehr-26.003-26.004.sql
diff --git a/onprc_ehr/resources/schemas/dbscripts/postgresql/onprc_ehr-26.003-26.004.sql b/onprc_ehr/resources/schemas/dbscripts/postgresql/onprc_ehr-26.003-26.004.sql
new file mode 100644
index 000000000..00fad4b96
--- /dev/null
+++ b/onprc_ehr/resources/schemas/dbscripts/postgresql/onprc_ehr-26.003-26.004.sql
@@ -0,0 +1,71 @@
+/*
+ PostgreSQL equivalent of the sqlserver onprc_ehr-26.003-26.004.sql script.
+
+ Two translation notes:
+ - SQL Server stored procedures are implemented as zero-argument plpgsql functions here, so each
+ EXEC core.fn_dropifexists '','','PROCEDURE' becomes DROP FUNCTION IF EXISTS .().
+ - The objects the sqlserver script drops out of 'dbo', and the onprc_ehr_compliancedb procedure, have no
+ PostgreSQL counterpart -- nothing on this platform ever created them. They are left as comments below,
+ in the same order as the sqlserver script, so the two files still read side by side.
+ */
+---Dropping user defined sql queries
+--- ComplianceProcedureRecenttTestsorg.sql
+---- ComplianceProcedureRecentTestsorg --> directory and xml files
+
+--- ComplianceRecenttTestsorg.sql
+---- ComplianceRecentTestsorg --> directory and xml files
+
+
+----Drop corresponding temp tables
+---- No temp tables to include here
+--Drop stored procedures
+DROP FUNCTION IF EXISTS onprc_ehr.sp_Compliance_requirementname_Update_Process();
+
+----Drop corresponding temp tables
+
+--Drop stored procedures
+DROP FUNCTION IF EXISTS onprc_ehr.s_JmacRemovalDateProcess();
+
+DROP TABLE IF EXISTS onprc_ehr.Rpt_TempJmacDate;
+
+DROP TABLE IF EXISTS onprc_ehr.JmacRemovalDate;
+
+----Drop corresponding temp tables
+ ---- No temp tables to include here
+--Drop stored procedures
+DROP FUNCTION IF EXISTS onprc_ehr.p_EnvironmentalHistoricalUpdates();
+
+----Drop corresponding temp tables
+ ---- No temp tables to include here
+--Drop stored procedures
+DROP FUNCTION IF EXISTS onprc_ehr.p_Environmental_Update_Process();
+
+--Drop stored procedures
+---- sqlserver only: dbo.sp_RpSLASummaryCensus was never created on PostgreSQL
+
+----Drop corresponding temp tables
+---- sqlserver only: dbo.Rpt_SLaCensus was never created on PostgreSQL
+
+
+--Drop stored procedures
+---- sqlserver only: dbo.RptMergeChargetypeUpdateSP was never created on PostgreSQL
+
+----Drop corresponding temp tables
+---- sqlserver only: dbo.Rpt_Labwork_MergeUpdate was never created on PostgreSQL
+---- sqlserver only: dbo.Rpt_Labwork_MergeUpdatelog was never created on PostgreSQL
+
+
+--Drop stored procedures
+DROP FUNCTION IF EXISTS onprc_ehr.s_MasterProblemHistoricalProcess();
+
+
+----Drop corresponding temp tables
+---- No temp tables to include here
+--Drop stored procedures
+---- sqlserver only: the onprc_ehr_compliancedb schema has no PostgreSQL dbscripts, so
+---- p_ComplianceTranslatestringUpdate does not exist on this platform
+
+----Drop corresponding temp tables
+DROP TABLE IF EXISTS onprc_ehr.Rpt_TempProblemList;
+
+DROP TABLE IF EXISTS onprc_ehr.Rpt_TempProblemListMaster;
From 982e9cbe220aaa03984b14bcd395fe840657e00c Mon Sep 17 00:00:00 2001
From: Adam Rauch
Date: Mon, 31 Aug 2026 12:07:17 -0700
Subject: [PATCH 11/19] Migrate remaining ONPRC modules' SQL scripts to
PostgreSQL (#1859)
## Rationale
Consolidate and migrate SQL upgrade scripts in the last three ONPRC
modules:
- extscheduler
- onprc_ehr_compliancedb
- onprc_ssu
All three move from `SupportedDatabases: mssql` / `ManageVersion: false`
to `mssql, pgsql` with managed versions.
---
ONPRC_EHR_ComplianceDB/module.properties | 4 +-
.../requirementsperemployee.js | 40 +
.../onprc_ehr_compliancedb-0.000-25.000.sql | 966 +++++++
.../onprc_ehr_compliancedb-25.000-25.001.sql | 609 ++++
.../onprc_ehr_compliancedb-0.000-24.000.sql | 43 -
.../onprc_ehr_compliancedb-0.000-25.000.sql | 2530 +++++++++++++++++
.../onprc_ehr_compliancedb-24.001-24.002.sql | 311 --
.../onprc_ehr_compliancedb-24.002-24.003.sql | 65 -
.../onprc_ehr_compliancedb-24.003-24.004.sql | 66 -
.../onprc_ehr_compliancedb-24.004-24.005.sql | 250 --
.../onprc_ehr_compliancedb-24.005-24.006.sql | 261 --
.../onprc_ehr_compliancedb-24.006-24.007.sql | 349 ---
.../onprc_ehr_compliancedb-24.007-24.008.sql | 317 ---
.../onprc_ehr_compliancedb-24.008-24.009.sql | 232 --
.../onprc_ehr_compliancedb-24.009-24.010.sql | 325 ---
.../onprc_ehr_compliancedb-24.010-24.011.sql | 251 --
.../onprc_ehr_compliancedb-24.011-24.012.sql | 65 -
.../ONPRC_EHR_ComplianceDBModule.java | 10 +-
extscheduler/module.properties | 4 +-
.../postgresql/extscheduler-0.000-25.000.sql | 68 +
.../sqlserver/extscheduler-0.000-25.000.sql | 568 ++++
.../sqlserver/extscheduler-15.20-15.21.sql | 38 -
.../sqlserver/extscheduler-15.21-15.22.sql | 6 -
.../sqlserver/extscheduler-15.22-15.23.sql | 24 -
.../sqlserver/extscheduler-15.23-15.24.sql | 27 -
.../sqlserver/extscheduler-15.24-15.25.sql | 20 -
.../sqlserver/extscheduler-15.25-15.26.sql | 1 -
.../sqlserver/extscheduler-15.26-15.27.sql | 2 -
.../sqlserver/extscheduler-15.27-15.28.sql | 16 -
.../sqlserver/extscheduler-15.28-15.29.sql | 1 -
.../sqlserver/extscheduler-15.29-15.30.sql | 1 -
.../sqlserver/extscheduler-15.30-15.31.sql | 21 -
.../sqlserver/extscheduler-20.02-20.03.sql | 7 -
.../sqlserver/extscheduler-20.502-20.503.sql | 49 -
.../sqlserver/extscheduler-20.503-20.504.sql | 55 -
.../sqlserver/extscheduler-20.504-20.505.sql | 55 -
.../sqlserver/extscheduler-20.505-20.506.sql | 55 -
.../sqlserver/extscheduler-20.601-20.602.sql | 28 -
.../sqlserver/extscheduler-20.602-20.603.sql | 28 -
.../sqlserver/extscheduler-20.901-20.902.sql | 32 -
.../sqlserver/extscheduler-20.903-20.904.sql | 32 -
.../sqlserver/extscheduler-20.910-20.911.sql | 11 -
.../sqlserver/extscheduler-20.911-20.912.sql | 14 -
.../sqlserver/extscheduler-20.922-20.923.sql | 9 -
.../sqlserver/extscheduler-20.936-20.937.sql | 13 -
.../sqlserver/extscheduler-21.001-21.002.sql | 1 -
.../sqlserver/extscheduler-23.001-23.002.sql | 19 -
.../sqlserver/extscheduler-26.000-26.001.sql | 18 +
.../resources/schemas/extscheduler.xml | 16 -
.../extscheduler/ExtSchedulerModule.java | 6 +-
onprc_ssu/module.properties | 4 +-
.../onprc_ssu-0.000-25.000.sql} | 26 +-
...0-13.21.sql => onprc_ssu-0.000-25.000.sql} | 10 +-
.../sqlserver/onprc_ssu-13.21-13.22.sql | 17 -
.../org/labkey/onprc_ssu/ONPRC_SSUModule.java | 6 +-
55 files changed, 4845 insertions(+), 3157 deletions(-)
create mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/onprc_ehr_compliancedb/requirementsperemployee.js
create mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/postgresql/onprc_ehr_compliancedb-0.000-25.000.sql
create mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/postgresql/onprc_ehr_compliancedb-25.000-25.001.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-0.000-24.000.sql
create mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-0.000-25.000.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.001-24.002.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.002-24.003.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.003-24.004.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.004-24.005.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.005-24.006.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.006-24.007.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.007-24.008.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.008-24.009.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.009-24.010.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.010-24.011.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.011-24.012.sql
create mode 100644 extscheduler/resources/schemas/dbscripts/postgresql/extscheduler-0.000-25.000.sql
create mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-0.000-25.000.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.20-15.21.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.21-15.22.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.22-15.23.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.23-15.24.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.24-15.25.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.25-15.26.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.26-15.27.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.27-15.28.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.28-15.29.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.29-15.30.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.30-15.31.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.02-20.03.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.502-20.503.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.503-20.504.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.504-20.505.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.505-20.506.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.601-20.602.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.602-20.603.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.901-20.902.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.903-20.904.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.910-20.911.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.911-20.912.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.922-20.923.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.936-20.937.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-21.001-21.002.sql
delete mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-23.001-23.002.sql
create mode 100644 extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-26.000-26.001.sql
rename onprc_ssu/resources/schemas/dbscripts/{sqlserver/onprc_ssu-13.22-13.23.sql => postgresql/onprc_ssu-0.000-25.000.sql} (58%)
rename onprc_ssu/resources/schemas/dbscripts/sqlserver/{onprc_ssu-13.20-13.21.sql => onprc_ssu-0.000-25.000.sql} (82%)
delete mode 100644 onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.21-13.22.sql
diff --git a/ONPRC_EHR_ComplianceDB/module.properties b/ONPRC_EHR_ComplianceDB/module.properties
index 7c901fa67..d6cafdc82 100644
--- a/ONPRC_EHR_ComplianceDB/module.properties
+++ b/ONPRC_EHR_ComplianceDB/module.properties
@@ -1,4 +1,4 @@
Name: ONPRC_EHR_ComplianceDB
ModuleClass: org.labkey.ONPRCEHR_ComplianceDB.ONPRC_EHR_ComplianceDBModule
-SupportedDatabases: mssql
-ManageVersion: false
+SupportedDatabases: mssql, pgsql
+ManageVersion: true
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/onprc_ehr_compliancedb/requirementsperemployee.js b/ONPRC_EHR_ComplianceDB/resources/queries/onprc_ehr_compliancedb/requirementsperemployee.js
new file mode 100644
index 000000000..76a800812
--- /dev/null
+++ b/ONPRC_EHR_ComplianceDB/resources/queries/onprc_ehr_compliancedb/requirementsperemployee.js
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2026 LabKey Corporation
+*
+* Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
+*/
+
+var LABKEY = require("labkey");
+
+var helper = org.labkey.ldk.query.LookupValidationHelper.create(LABKEY.Security.currentContainer.id, LABKEY.Security.currentUser.id, 'onprc_ehr_compliancedb', 'requirementsperemployee');
+
+function beforeInsert(row, errors){
+ beforeUpsert(row, errors);
+}
+
+function beforeUpdate(row, oldRow, errors){
+ //NOTE: this is designed to merge the old row into the new one.
+ for (var prop in oldRow){
+ if(!row.hasOwnProperty(prop) && LABKEY.ExtAdapter.isDefined(oldRow[prop])){
+ row[prop] = oldRow[prop];
+ }
+ }
+
+ beforeUpsert(row, errors);
+}
+
+function beforeUpsert(row, errors){
+ var lookupFields = ['employeeid', 'requirementname'];
+ for (var i=0;i employees foreign key on insert.
+ SELECT employeeid INTO _employeeidFinal
+ FROM ehr_compliancedb.employees
+ WHERE lower(employeeid) = _employeeid AND enddate IS NULL
+ LIMIT 1;
+
+ IF _employeeidFinal IS NULL THEN
+ UPDATE onprc_ehr_compliancedb.SciShield_Data ss
+ SET processed = 2
+ WHERE ss.rowid = _SciShieldID;
+
+ CONTINUE;
+ END IF;
+
+ -- If all previous version were validated proceed with the record insert
+ IF NOT EXISTS (SELECT 1 FROM ehr_compliancedb.completiondates WHERE lower(employeeid) = _employeeid AND lower(requirementname) = lower(_requirementnameFinal) AND date = _Completiondate) THEN
+ INSERT INTO ehr_compliancedb.completiondates
+ (employeeid, requirementname, date, trainer, container, created, createdby, modified, modifiedby)
+ VALUES
+ (_employeeidFinal, _requirementnameFinal, _Completiondate, 'ONLINE TRAINING', 'cd170458-c55f-102f-9907-5107380a54be', now(), 2595, now(), 2595);
+
+ UPDATE onprc_ehr_compliancedb.SciShield_Data ss
+ SET processed = 1
+ WHERE ss.rowid = _SciShieldID;
+ END IF;
+ END LOOP;
+
+ -- Create master records of the last most recent entries
+ IF EXISTS (SELECT 1 FROM onprc_ehr_compliancedb.SciShieldTemp) THEN
+ INSERT INTO onprc_ehr_compliancedb.SciShieldMasterTemp
+ (employeeid, requirementname, completeddate, comment, createddate, rowid)
+ SELECT
+ employeeid,
+ requirementname,
+ completeddate,
+ comment,
+ createddate,
+ rowid
+ FROM onprc_ehr_compliancedb.SciShieldTemp;
+ END IF;
+
+ RETURN 0;
+
+EXCEPTION
+ WHEN OTHERS THEN
+ RETURN 1;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION onprc_ehr_compliancedb.p_ComplianceTranslatestringUpdate()
+RETURNS integer AS $$
+BEGIN
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.EmployeePerUnit WHERE unit ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.EmployeePerUnit SET unit = regexp_replace(unit, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.EmployeePerUnit WHERE category ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.EmployeePerUnit SET category = regexp_replace(category, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.Employees WHERE majorudds ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.Employees SET majorudds = regexp_replace(majorudds, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.Employees WHERE unit ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.Employees SET unit = regexp_replace(unit, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.Employees WHERE category ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.Employees SET category = regexp_replace(category, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.requirements WHERE requirementname ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.requirements SET requirementname = regexp_replace(requirementname, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.EmployeeRequirementExemptions WHERE requirementname ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.EmployeeRequirementExemptions SET requirementname = regexp_replace(requirementname, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.unit_names WHERE unit ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.unit_names SET unit = regexp_replace(unit, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.RequirementsPerCategory WHERE RequirementName ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.RequirementsPerCategory SET requirementname = regexp_replace(requirementname, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.RequirementsPerCategory WHERE category ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.RequirementsPerCategory SET category = regexp_replace(category, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.RequirementsPerCategory WHERE unit ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.RequirementsPerCategory SET unit = regexp_replace(unit, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.completiondates WHERE requirementname ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.completiondates SET requirementname = regexp_replace(requirementname, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.EmployeeCategory WHERE categoryname ILIKE '%arrs%') THEN
+ UPDATE ehr_compliancedb.EmployeeCategory SET categoryname = regexp_replace(categoryname, 'arrs', 'DCM', 'gi');
+ END IF;
+
+ RETURN 0;
+
+EXCEPTION
+ WHEN OTHERS THEN
+ RETURN 1;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION onprc_ehr_compliancedb.p_ComplianceRecentOverDueSoon_Process()
+RETURNS integer AS $$
+BEGIN
+ DELETE FROM onprc_ehr_compliancedb.ComplianceRecentReport;
+
+ INSERT INTO onprc_ehr_compliancedb.ComplianceRecentReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+ )
+ SELECT
+ b.requirementname,
+ a.employeeid,
+ string_agg(a.unit, chr(10)) AS unit,
+ string_agg(a.category, chr(10)) AS category,
+ string_agg(b.trackingflag, chr(10)) AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT h.type FROM ehr_compliancedb.Requirements h WHERE h.requirementname = b.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid) AS times_Completed,
+ (SELECT k.expireperiod FROM ehr_compliancedb.Requirements k WHERE k.requirementname = b.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid) AS mostrecentcompleted_date,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = b.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = b.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = b.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = b.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.employeeperunit a, ehr_compliancedb.requirementspercategory b
+ WHERE (a.unit = b.unit OR a.category = b.category)
+ AND b.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE a.employeeid = t.employeeid AND b.requirementname = t.requirementname)
+ AND a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND b.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = b.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY b.requirementname, a.employeeid
+
+ UNION
+
+ SELECT
+ a.requirementname,
+ a.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ 'None' AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT h.type FROM ehr_compliancedb.Requirements h WHERE h.requirementname = a.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS timesCompleted,
+ (SELECT k.expireperiod FROM ehr_compliancedb.Requirements k WHERE k.requirementname = a.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS MostRecentDate,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = a.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = a.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.completiondates a
+ WHERE a.requirementname NOT IN (
+ SELECT DISTINCT h.requirementname
+ FROM ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h
+ WHERE (k.unit = h.unit OR k.category = h.category) AND a.employeeid = k.employeeid
+ )
+ AND a.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE a.employeeid = t.employeeid AND a.requirementname = t.requirementname)
+ AND a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND a.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = a.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY a.requirementname, a.employeeid
+
+ UNION
+
+ SELECT
+ a.requirementname,
+ a.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ 'No' AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT h.type FROM ehr_compliancedb.Requirements h WHERE h.requirementname = a.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS timesCompleted,
+ (SELECT k.expireperiod FROM ehr_compliancedb.Requirements k WHERE k.requirementname = a.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS MostRecentDate,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = a.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = a.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DECIMAL
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.employeerequirementexemptions a
+ WHERE a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND a.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = a.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY a.requirementname, a.employeeid
+
+ UNION
+
+ SELECT
+ j.requirementname,
+ j.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ string_agg(j.trackingflag, chr(10)) AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS trainee_type,
+ (SELECT h.type FROM ehr_compliancedb.Requirements h WHERE h.requirementname = j.requirementname) AS requirement_type,
+ 0 AS timesCompleted,
+ (SELECT k.expireperiod FROM ehr_compliancedb.Requirements k WHERE k.requirementname = j.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ NULL AS MostRecentDate,
+ '' AS comment,
+ NULL AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = j.requirementname AND st.employeeid = j.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = j.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM onprc_ehr_compliancedb.RequirementsPerEmployee j
+ WHERE j.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE j.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND j.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = j.requirementname AND q.dateDisabled IS NULL)
+ AND j.requirementname NOT IN (
+ SELECT DISTINCT h.requirementname
+ FROM ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h
+ WHERE (k.unit = h.unit OR k.category = h.category) AND j.employeeid = k.employeeid
+ )
+ AND j.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE j.employeeid = t.employeeid AND j.requirementname = t.requirementname)
+ AND j.requirementname NOT IN (SELECT DISTINCT k.requirementname FROM ehr_compliancedb.completiondates k WHERE k.employeeid = j.employeeid)
+ GROUP BY j.requirementname, j.employeeid
+ ORDER BY employeeid, requirementname, mostrecentcompleted_date DESC;
+
+ RETURN 0;
+
+EXCEPTION
+ WHEN OTHERS THEN
+ RETURN 1;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION onprc_ehr_compliancedb.p_ComplianceProcedureOverDueSoon_Process()
+RETURNS integer AS $$
+BEGIN
+ DELETE FROM onprc_ehr_compliancedb.ComplianceProcedureReport;
+
+ INSERT INTO onprc_ehr_compliancedb.ComplianceProcedureReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+ )
+ SELECT
+ b.requirementname,
+ a.employeeid,
+ string_agg(a.unit, chr(10)) AS unit,
+ string_agg(a.category, chr(10)) AS category,
+ string_agg(b.trackingflag, chr(10)) AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT h.type FROM ehr_compliancedb.Requirements h WHERE h.requirementname = b.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid) AS times_Completed,
+ (SELECT k.expireperiod FROM ehr_compliancedb.Requirements k WHERE k.requirementname = b.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid) AS mostrecentcompleted_date,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = b.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = b.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = b.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = b.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.employeeperunit a, ehr_compliancedb.requirementspercategory b
+ WHERE (a.unit = b.unit OR a.category = b.category)
+ AND b.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE a.employeeid = t.employeeid AND b.requirementname = t.requirementname)
+ AND a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND b.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = b.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY b.requirementname, a.employeeid
+
+ UNION
+
+ SELECT
+ a.requirementname,
+ a.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ 'None' AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT h.type FROM ehr_compliancedb.Requirements h WHERE h.requirementname = a.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS timesCompleted,
+ (SELECT k.expireperiod FROM ehr_compliancedb.Requirements k WHERE k.requirementname = a.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS MostRecentDate,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = a.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = a.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.completiondates a
+ WHERE a.requirementname NOT IN (
+ SELECT DISTINCT h.requirementname
+ FROM ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h
+ WHERE (k.unit = h.unit OR k.category = h.category) AND a.employeeid = k.employeeid
+ )
+ AND a.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE a.employeeid = t.employeeid AND a.requirementname = t.requirementname)
+ AND a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND a.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = a.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY a.requirementname, a.employeeid
+
+ UNION
+
+ SELECT
+ a.requirementname,
+ a.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ 'No' AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT h.type FROM ehr_compliancedb.Requirements h WHERE h.requirementname = a.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS timesCompleted,
+ (SELECT k.expireperiod FROM ehr_compliancedb.Requirements k WHERE k.requirementname = a.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS MostRecentDate,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = a.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = a.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DECIMAL
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.employeerequirementexemptions a
+ WHERE a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND a.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = a.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY a.requirementname, a.employeeid
+
+ UNION
+
+ SELECT
+ j.requirementname,
+ j.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ string_agg(j.trackingflag, chr(10)) AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS trainee_type,
+ (SELECT h.type FROM ehr_compliancedb.Requirements h WHERE h.requirementname = j.requirementname) AS requirement_type,
+ 0 AS timesCompleted,
+ (SELECT k.expireperiod FROM ehr_compliancedb.Requirements k WHERE k.requirementname = j.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ NULL AS MostRecentDate,
+ '' AS comment,
+ NULL AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = j.requirementname AND st.employeeid = j.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = j.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM onprc_ehr_compliancedb.RequirementsPerEmployee j
+ WHERE j.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE j.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND j.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = j.requirementname AND q.dateDisabled IS NULL)
+ AND j.requirementname NOT IN (
+ SELECT DISTINCT h.requirementname
+ FROM ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h
+ WHERE (k.unit = h.unit OR k.category = h.category) AND j.employeeid = k.employeeid
+ )
+ AND j.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE j.employeeid = t.employeeid AND j.requirementname = t.requirementname)
+ AND j.requirementname NOT IN (SELECT DISTINCT k.requirementname FROM ehr_compliancedb.completiondates k WHERE k.employeeid = j.employeeid)
+ GROUP BY j.requirementname, j.employeeid
+ ORDER BY employeeid, requirementname, mostrecentcompleted_date DESC;
+
+ RETURN 0;
+
+EXCEPTION
+ WHEN OTHERS THEN
+ RETURN 1;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION onprc_ehr_compliancedb.p_ComplianceAccesscontainerUpdate()
+RETURNS integer AS $$
+BEGIN
+ IF EXISTS (SELECT 1 FROM ehr_compliancedb.completiondates WHERE container = 'f1c05e2d-618d-103d-abc9-9814909bffcd') THEN
+ UPDATE ehr_compliancedb.completiondates
+ SET container = 'cd170458-c55f-102f-9907-5107380a54be'
+ WHERE container = 'f1c05e2d-618d-103d-abc9-9814909bffcd';
+ END IF;
+
+ RETURN 0;
+
+EXCEPTION
+ WHEN OTHERS THEN
+ RETURN 1;
+END;
+$$ LANGUAGE plpgsql;
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/postgresql/onprc_ehr_compliancedb-25.000-25.001.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/postgresql/onprc_ehr_compliancedb-25.000-25.001.sql
new file mode 100644
index 000000000..a044debfc
--- /dev/null
+++ b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/postgresql/onprc_ehr_compliancedb-25.000-25.001.sql
@@ -0,0 +1,609 @@
+ALTER TABLE onprc_ehr_compliancedb.ComplianceProcedureReport ALTER COLUMN expired_period TYPE VARCHAR(50);
+ALTER TABLE onprc_ehr_compliancedb.ComplianceProcedureReport ALTER COLUMN new_expired_period TYPE VARCHAR(50);
+
+ALTER TABLE onprc_ehr_compliancedb.ComplianceRecentReport ALTER COLUMN expired_period TYPE VARCHAR(50);
+ALTER TABLE onprc_ehr_compliancedb.ComplianceRecentReport ALTER COLUMN new_expired_period TYPE VARCHAR(50);
+
+-- Author: R. Blasa
+-- Created: 9-20-2024
+/*
+**
+** Created by
+** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
+** the ComplianceProcedureRecentTest.sql query
+**
+** 1-22-2026 Fix the issues with more than one subquery results
+**
+*/
+
+CREATE OR REPLACE FUNCTION onprc_ehr_compliancedb.p_ComplianceProcedureOverDueSoon_Process()
+RETURNS integer AS $$
+BEGIN
+ -- Reset Reporting table
+ DELETE FROM onprc_ehr_compliancedb.ComplianceProcedureReport;
+
+ INSERT INTO onprc_ehr_compliancedb.ComplianceProcedureReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+ )
+ SELECT
+ b.requirementname,
+ a.employeeid,
+ string_agg(a.unit, chr(10)) AS unit,
+ string_agg(a.category, chr(10)) AS category,
+ string_agg(b.trackingflag, chr(10)) AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT string_agg(h.type::text, chr(10)) FROM ehr_compliancedb.Requirements h WHERE h.requirementname = b.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid) AS times_Completed,
+ (SELECT string_agg(k.expireperiod::text, chr(10)) FROM ehr_compliancedb.Requirements k WHERE k.requirementname = b.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid) AS mostrecentcompleted_date,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = b.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = b.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = b.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = b.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.employeeperunit a, ehr_compliancedb.requirementspercategory b
+ WHERE (a.unit = b.unit OR a.category = b.category)
+ AND b.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE a.employeeid = t.employeeid AND b.requirementname = t.requirementname)
+ AND a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND b.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = b.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY b.requirementname, a.employeeid
+
+ UNION
+
+ SELECT
+ a.requirementname,
+ a.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ 'None' AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT string_agg(h.type::text, chr(10)) FROM ehr_compliancedb.Requirements h WHERE h.requirementname = a.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS timesCompleted,
+ (SELECT string_agg(k.expireperiod::text, chr(10)) FROM ehr_compliancedb.Requirements k WHERE k.requirementname = a.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS MostRecentDate,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = a.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = a.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.completiondates a
+ WHERE a.requirementname NOT IN (
+ SELECT DISTINCT h.requirementname
+ FROM ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h
+ WHERE (k.unit = h.unit OR k.category = h.category) AND a.employeeid = k.employeeid
+ )
+ AND a.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE a.employeeid = t.employeeid AND a.requirementname = t.requirementname)
+ AND a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND a.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = a.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY a.requirementname, a.employeeid
+
+ -- Additional requirements for employees that have not completed training, but is required
+ UNION
+
+ SELECT
+ j.requirementname,
+ j.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ string_agg(j.trackingflag, chr(10)) AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS trainee_type,
+ (SELECT string_agg(h.type::text, chr(10)) FROM ehr_compliancedb.Requirements h WHERE h.requirementname = j.requirementname) AS requirement_type,
+ 0 AS timesCompleted,
+ (SELECT string_agg(k.expireperiod::text, chr(10)) FROM ehr_compliancedb.Requirements k WHERE k.requirementname = j.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ NULL AS MostRecentDate,
+ '' AS comment,
+ NULL AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = j.requirementname AND st.employeeid = j.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = j.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM onprc_ehr_compliancedb.RequirementsPerEmployee j
+ WHERE j.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE j.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND j.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = j.requirementname AND q.dateDisabled IS NULL)
+ AND j.requirementname NOT IN (
+ SELECT DISTINCT h.requirementname
+ FROM ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h
+ WHERE (k.unit = h.unit OR k.category = h.category) AND j.employeeid = k.employeeid
+ )
+ AND j.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE j.employeeid = t.employeeid AND j.requirementname = t.requirementname)
+ AND j.requirementname NOT IN (SELECT DISTINCT k.requirementname FROM ehr_compliancedb.completiondates k WHERE k.employeeid = j.employeeid)
+ GROUP BY j.requirementname, j.employeeid
+ ORDER BY employeeid, requirementname, mostrecentcompleted_date DESC;
+
+ RETURN 0;
+
+EXCEPTION
+ WHEN OTHERS THEN
+ RETURN 1;
+END;
+$$ LANGUAGE plpgsql;
+
+-- Author: R. Blasa
+-- Created: 9-20-2024
+/*
+**
+** Created by
+** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
+** the ComplianceRecentTest.sql query
+**
+** 1-22-2026 Fix the issues with more than one subquery results
+**
+*/
+
+CREATE OR REPLACE FUNCTION onprc_ehr_compliancedb.p_ComplianceRecentOverDueSoon_Process()
+RETURNS integer AS $$
+BEGIN
+ -- Reset Reporting table
+ DELETE FROM onprc_ehr_compliancedb.ComplianceRecentReport;
+
+ INSERT INTO onprc_ehr_compliancedb.ComplianceRecentReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+ )
+ SELECT
+ b.requirementname,
+ a.employeeid,
+ string_agg(a.unit, chr(10)) AS unit,
+ string_agg(a.category, chr(10)) AS category,
+ string_agg(b.trackingflag, chr(10)) AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT string_agg(h.type::text, chr(10)) FROM ehr_compliancedb.Requirements h WHERE h.requirementname = b.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid) AS times_Completed,
+ (SELECT string_agg(k.expireperiod::text, chr(10)) FROM ehr_compliancedb.Requirements k WHERE k.requirementname = b.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid) AS mostrecentcompleted_date,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = b.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = b.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = b.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = b.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = b.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = b.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.employeeperunit a, ehr_compliancedb.requirementspercategory b
+ WHERE (a.unit = b.unit OR a.category = b.category)
+ AND b.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE a.employeeid = t.employeeid AND b.requirementname = t.requirementname)
+ AND a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND b.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = b.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY b.requirementname, a.employeeid
+
+ UNION
+
+ SELECT
+ a.requirementname,
+ a.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ 'None' AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT string_agg(h.type::text, chr(10)) FROM ehr_compliancedb.Requirements h WHERE h.requirementname = a.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS timesCompleted,
+ (SELECT string_agg(k.expireperiod::text, chr(10)) FROM ehr_compliancedb.Requirements k WHERE k.requirementname = a.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS MostRecentDate,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = a.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = a.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.completiondates a
+ WHERE a.requirementname NOT IN (
+ SELECT DISTINCT h.requirementname
+ FROM ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h
+ WHERE (k.unit = h.unit OR k.category = h.category) AND a.employeeid = k.employeeid
+ )
+ AND a.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE a.employeeid = t.employeeid AND a.requirementname = t.requirementname)
+ AND a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND a.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = a.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY a.requirementname, a.employeeid
+
+ -- Training that was completed by as an employee training exemptions, and at least completed one, or more times
+ UNION
+
+ SELECT
+ a.requirementname,
+ a.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ 'No' AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = a.employeeid) AS trainee_type,
+ (SELECT string_agg(h.type::text, chr(10)) FROM ehr_compliancedb.Requirements h WHERE h.requirementname = a.requirementname) AS requirement_type,
+ (SELECT count(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS timesCompleted,
+ (SELECT string_agg(k.expireperiod::text, chr(10)) FROM ehr_compliancedb.Requirements k WHERE k.requirementname = a.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid) AS MostRecentDate,
+ (
+ SELECT string_agg(DISTINCT yy.comment, chr(10))
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS comment,
+ (
+ SELECT max(yy.snooze_date)
+ FROM ehr_compliancedb.completiondates yy
+ WHERE yy.date IN (SELECT max(zz.date) FROM ehr_compliancedb.completiondates zz WHERE zz.requirementname = a.requirementname AND zz.employeeid = a.employeeid)
+ AND yy.requirementname = a.requirementname AND yy.employeeid = a.employeeid
+ ) AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = a.requirementname AND st.employeeid = a.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = a.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = a.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = a.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DECIMAL
+ ) AS MonthsUntilRenewal
+ FROM ehr_compliancedb.employeerequirementexemptions a
+ WHERE a.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE a.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND a.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = a.requirementname AND q.dateDisabled IS NULL)
+ GROUP BY a.requirementname, a.employeeid
+
+ -- Additional requirements for employees that have not completed training, but is required
+ UNION
+
+ SELECT
+ j.requirementname,
+ j.employeeid,
+ NULL AS unit,
+ NULL AS category,
+ string_agg(j.trackingflag, chr(10)) AS trackingflag,
+ (SELECT h.email FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS email,
+ (SELECT h.lastname FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS lastname,
+ (SELECT h.firstname FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS firstname,
+ (SELECT h.majorudds FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS host,
+ (SELECT h.supervisor FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS supervisor,
+ (SELECT h.type FROM ehr_compliancedb.employees h WHERE h.employeeid = j.employeeid) AS trainee_type,
+ (SELECT string_agg(h.type::text, chr(10)) FROM ehr_compliancedb.Requirements h WHERE h.requirementname = j.requirementname) AS requirement_type,
+ 0 AS timesCompleted,
+ (SELECT string_agg(k.expireperiod::text, chr(10)) FROM ehr_compliancedb.Requirements k WHERE k.requirementname = j.requirementname) AS ExpiredPeriod,
+ (
+ SELECT ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING (COALESCE(tt.expireperiod, 0)) > ((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ AND (tt.reviewdate IS NOT NULL)
+ ) AS NewExpirePeriod,
+ NULL AS MostRecentDate,
+ '' AS comment,
+ NULL AS snooze_date,
+ CAST(
+ CASE
+ WHEN (SELECT max(st.date) FROM ehr_compliancedb.completiondates st WHERE st.requirementname = j.requirementname AND st.employeeid = j.employeeid) IS NULL THEN 0
+ WHEN (SELECT COALESCE(tt.expireperiod, 0) FROM ehr_compliancedb.requirements tt WHERE tt.requirementname = j.requirementname GROUP BY tt.expireperiod) = 0 THEN NULL
+ WHEN (
+ SELECT count(*)
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ ) > 0 THEN
+ (
+ SELECT (((EXTRACT(YEAR FROM tt.reviewdate) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM tt.reviewdate) - EXTRACT(MONTH FROM max(pq.date)))
+ - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date))))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod, tt.reviewdate
+ HAVING tt.reviewdate > max(pq.date)
+ )
+ ELSE
+ (
+ SELECT COALESCE(tt.expireperiod, 0) - ((EXTRACT(YEAR FROM now()) - EXTRACT(YEAR FROM max(pq.date))) * 12 + EXTRACT(MONTH FROM now()) - EXTRACT(MONTH FROM max(pq.date)))
+ FROM ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq
+ WHERE tt.requirementname = j.requirementname AND pq.requirementname = tt.requirementname AND pq.employeeid = j.employeeid
+ GROUP BY tt.expireperiod
+ )
+ END AS DOUBLE PRECISION
+ ) AS MonthsUntilRenewal
+ FROM onprc_ehr_compliancedb.RequirementsPerEmployee j
+ WHERE j.employeeid IN (SELECT p.employeeid FROM ehr_compliancedb.employees p WHERE j.employeeid = p.employeeid AND p.enddate IS NULL)
+ AND j.requirementname IN (SELECT q.requirementname FROM ehr_compliancedb.Requirements q WHERE q.requirementname = j.requirementname AND q.dateDisabled IS NULL)
+ AND j.requirementname NOT IN (
+ SELECT DISTINCT h.requirementname
+ FROM ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h
+ WHERE (k.unit = h.unit OR k.category = h.category) AND j.employeeid = k.employeeid
+ )
+ AND j.requirementname NOT IN (SELECT DISTINCT t.requirementname FROM ehr_compliancedb.employeerequirementexemptions t WHERE j.employeeid = t.employeeid AND j.requirementname = t.requirementname)
+ AND j.requirementname NOT IN (SELECT DISTINCT k.requirementname FROM ehr_compliancedb.completiondates k WHERE k.employeeid = j.employeeid)
+ GROUP BY j.requirementname, j.employeeid
+ ORDER BY employeeid, requirementname, mostrecentcompleted_date DESC;
+
+ RETURN 0;
+
+EXCEPTION
+ WHEN OTHERS THEN
+ RETURN 1;
+END;
+$$ LANGUAGE plpgsql;
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-0.000-24.000.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-0.000-24.000.sql
deleted file mode 100644
index 2ada5c5ca..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-0.000-24.000.sql
+++ /dev/null
@@ -1,43 +0,0 @@
-
-CREATE SCHEMA onprc_ehr_compliancedb;
-GO
-
-CREATE TABLE onprc_ehr_compliancedb.SciShield_Data
-(
- RowId INT IDENTITY(1,1) NOT NULL,
- employeeId nvarchar(255) not null,
- requirementname nvarchar(255) null,
- Date datetime null,
- Container ENTITYID NOT NULL,
- comment nvarchar(2000) null,
- CreatedBy USERID,
- Created datetime,
- ModifiedBy USERID,
- Modified datetime,
- processed int NULL
-
- CONSTRAINT PK_ScieShield_Data PRIMARY KEY (RowId),
- CONSTRAINT FK_ONPRC_EHR_COMPLIANCE_SCISHIELD_DATA_CONTAINER FOREIGN KEY (Container) REFERENCES core.Containers (EntityId)
-);
-CREATE INDEX IX_ONPRC_EHR_COMPLIANCEDB_SCISHIELD_DATA_CONTAINER ON onprc_ehr_compliancedb.SciShield_Data (Container);
-
-CREATE TABLE onprc_ehr_compliancedb.SciShield_Reference_Data
-(
- rowId int identity(1,1),
- label nvarchar(250) NULL,
- value nvarchar(255) NOT NULL ,
- columnName nvarchar(255) NOT NULL,
- sort_order integer null,
- endDate datetime NULL,
- Container ENTITYID NOT NULL,
- CreatedBy USERID,
- Created datetime,
- ModifiedBy USERID,
- Modified datetime,
-
- CONSTRAINT pk_SciShield_reference PRIMARY KEY (value),
- CONSTRAINT FK_ONPRC_EHR_COMPLIANCE_REFERENCE_DATA_CONTAINER FOREIGN KEY (Container) REFERENCES core.Containers (EntityId)
-);
-CREATE INDEX IX_ONPRC_EHR_COMPLIANCEDB_SCISHIELD_REFERENCE_DATA_CONTAINER ON onprc_ehr_compliancedb.SciShield_Reference_Data (Container);
-
-GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-0.000-25.000.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-0.000-25.000.sql
new file mode 100644
index 000000000..a2339f639
--- /dev/null
+++ b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-0.000-25.000.sql
@@ -0,0 +1,2530 @@
+CREATE SCHEMA onprc_ehr_compliancedb;
+GO
+
+CREATE TABLE onprc_ehr_compliancedb.SciShield_Data
+(
+ RowId INT IDENTITY(1,1) NOT NULL,
+ employeeId nvarchar(255) not null,
+ requirementname nvarchar(255) null,
+ Date datetime null,
+ Container ENTITYID NOT NULL,
+ comment nvarchar(2000) null,
+ CreatedBy USERID,
+ Created datetime,
+ ModifiedBy USERID,
+ Modified datetime,
+ processed int NULL
+
+ CONSTRAINT PK_ScieShield_Data PRIMARY KEY (RowId),
+ CONSTRAINT FK_ONPRC_EHR_COMPLIANCE_SCISHIELD_DATA_CONTAINER FOREIGN KEY (Container) REFERENCES core.Containers (EntityId)
+);
+CREATE INDEX IX_ONPRC_EHR_COMPLIANCEDB_SCISHIELD_DATA_CONTAINER ON onprc_ehr_compliancedb.SciShield_Data (Container);
+
+CREATE TABLE onprc_ehr_compliancedb.SciShield_Reference_Data
+(
+ rowId int identity(1,1),
+ label nvarchar(250) NULL,
+ value nvarchar(255) NOT NULL ,
+ columnName nvarchar(255) NOT NULL,
+ sort_order integer null,
+ endDate datetime NULL,
+ Container ENTITYID NOT NULL,
+ CreatedBy USERID,
+ Created datetime,
+ ModifiedBy USERID,
+ Modified datetime,
+
+ CONSTRAINT pk_SciShield_reference PRIMARY KEY (value),
+ CONSTRAINT FK_ONPRC_EHR_COMPLIANCE_REFERENCE_DATA_CONTAINER FOREIGN KEY (Container) REFERENCES core.Containers (EntityId)
+);
+CREATE INDEX IX_ONPRC_EHR_COMPLIANCEDB_SCISHIELD_REFERENCE_DATA_CONTAINER ON onprc_ehr_compliancedb.SciShield_Reference_Data (Container);
+
+GO
+
+/* 24.xxx SQL scripts */
+
+-- Author: R. Blasa
+-- Created: 2-10-2024
+-- Description: Stored procedure program process SciShield INitial Data
+
+
+CREATE TABLE [onprc_ehr_compliancedb].[SciShieldTemp] (
+ [searchID] [int] IDENTITY(100,1) NOT NULL,
+ [employeeid] [varchar](500) NULL,
+ [requirementname] [varchar](3000) NULL,
+ [completeddate] [smalldatetime] NULL,
+ [comment] [varchar](300) NULL,
+ [createddate] [smalldatetime] NULL,
+ [rowid] [int] NULL
+ ) ON [PRIMARY]
+ GO
+
+CREATE TABLE [onprc_ehr_compliancedb].[SciShieldMasterTemp](
+ [searchID] [int] IDENTITY(100,1) NOT NULL,
+ [employeeid] [varchar](500) NULL,
+ [requirementname] [varchar](3000) NULL,
+ [completeddate] [smalldatetime] NULL,
+ [comment] [varchar](300) NULL,
+ [createddate] [smalldatetime] NULL,
+ [rowid] [int] NULL
+ ) ON [PRIMARY]
+ GO
+
+
+
+-- Author: R. Blasa
+-- Created: 2-10-2024
+
+/*
+**
+** Created by
+** Blasa 1-25-2024 Import process from ScieShield To Prime Compliance Module
+**
+** Processed codes: Null ---Not Processed
+** 1 ------ Successfully posted
+** 2 --------- invalid Employeeid
+** 3 --------- Undefined Requirement Name
+** 4--------- Already exists Compliance module
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.[p_SciShieldToPrimeProcess]
+
+
+AS
+
+
+DECLARE
+ @SearchKey Int,
+ @TempsearchKey Int,
+ @requirementnameFinal varchar(2000),
+ @requirementnanme varchar(2000),
+ @employeeid varchar(500),
+ @Completiondate smalldatetime,
+ @SciShieldID int
+
+
+
+
+
+BEGIN
+
+ ---- Reset temp table
+
+ Delete onprc_ehr_compliancedb.SciShieldTemp
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+If exists(Select * from onprc_ehr_compliancedb.SciShield_Data where processed is null)
+BEGIN
+
+ Insert into onprc_ehr_compliancedb.SciShieldTemp
+ (
+ employeeid,
+ requirementname,
+ completeddate,
+ createddate,
+ rowid
+ )
+
+
+ select
+ employeeid, -------employeeid
+ requirementname, ----requirement name
+ date, ----completed Date
+ getdate(), --- created date
+ rowid --- SciShield unique id
+
+
+ from onprc_ehr_compliancedb.SciShield_Data
+ where processed is null
+
+ order by employeeid, requirementname, date desc
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+ELSE ------ No new entries exit
+ BEGIN
+
+ GOTO No_Records
+
+ END
+
+ --- Initialize Varaibles
+
+ Set @TempsearchKey = 0
+ Set @SearchKey = 0
+
+
+
+ --- Start processing input records from SciShield
+
+
+ Select top 1 @searchkey = searchID from onprc_ehr_compliancedb.SciShieldTemp
+ order by searchID
+
+
+
+
+While @TempSearchKey < @SearchKey
+ BEGIN
+ Set @requirementnameFinal = ''
+ Set @requirementnanme = ''
+ Set @employeeid = ''
+ Set @Completiondate = Null
+ Set @SciShieldID = Null
+
+
+ Select @employeeid =rtrim(ltrim(lower(employeeid))), @requirementnanme = requirementname, @completiondate = completeddate, @SciShieldID = rowid
+ from onprc_ehr_compliancedb.SciShieldTemp Where searchID = @Searchkey
+
+ ---Validate requirementname
+ IF exists (Select * from onprc_ehr_compliancedb.SciShield_Reference_Data where label = @requirementnanme And columnname = 'requirementname' )
+ BEGIN
+
+ Select @requirementnameFinal = value from onprc_ehr_compliancedb.SciShield_Reference_Data where label = @requirementnanme And columnname = 'requirementname'
+ END
+ ELSE IF exists (Select * from ehr_compliancedb.requirements where requirementname = @requirementnanme)
+ BEGIN
+ Select @requirementnameFinal = requirementname from ehr_compliancedb.requirements where requirementname = @requirementnanme
+ END
+
+ ELSE
+ BEGIN
+ Update ss
+ Set ss.processed = 3
+
+ From onprc_ehr_compliancedb.SciShield_Data ss Where ss.rowid = @SciShieldID
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ GOTO Next_Record
+ END
+
+ ----validate if the record already exists
+
+ IF exists( Select * from ehr_compliancedb.completiondates Where employeeid = @employeeid And requirementname = @requirementnameFinal
+ And date = @completiondate)
+ BEGIN
+ Update ss
+ Set ss.processed = 4
+
+ From onprc_ehr_compliancedb.SciShield_Data ss Where ss.rowid = @SciShieldID
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ GOTO Next_Record
+ END
+
+
+ ----validate if the employeeid is defined
+
+ IF not exists( Select * from ehr_compliancedb.employees Where employeeid = @employeeid And enddate is null)
+ BEGIN
+
+ Update ss
+ Set ss.processed = 2
+
+ From onprc_ehr_compliancedb.SciShield_Data ss Where ss.rowid = @SciShieldID
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ GOTO Next_Record
+
+
+
+ END ----
+
+
+ ---- IF all previous version were validated proceed with the record insert
+
+
+ IF not exists( Select * from ehr_compliancedb.completiondates Where employeeid = @employeeid And requirementname = @requirementnameFinal
+ And date = @completiondate)
+
+ BEGIN
+ Insert into ehr_compliancedb.completiondates
+ (employeeid,
+ requirementname,
+ date,
+ trainer,
+ container,
+ created,
+ createdby,
+ modified,
+ modifiedby
+
+ )
+ values(
+ @employeeid,
+ @requirementnameFinal,
+ @completiondate,
+ 'ONLINE TRAINING',
+ 'CD170458-C55F-102F-9907-5107380A54BE',
+ getdate(),
+ 2595,
+ getdate(),
+ 2595
+ )
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+
+---------- Set successful entry flag
+
+ Update ss
+ Set ss.processed = 1
+
+ From onprc_ehr_compliancedb.SciShield_Data ss Where ss.rowid = @SciShieldID
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+END ----
+
+
+
+
+Next_Record:
+
+
+
+ Set @TempSearchkey = @SearchKey
+
+
+ Select Top 1 @Searchkey = searchID from onprc_ehr_compliancedb.SciShieldTemp
+ Where searchID > @TempSearchkey
+ Order by searchID
+
+
+
+END ---(While)
+
+
+
+ ---- Create a master records of the last most recent entries
+ If exists (Select * from onprc_ehr_compliancedb.SciShieldTemp)
+ BEGiN
+ Insert into onprc_ehr_compliancedb.SciShieldMasterTemp
+ select
+ employeeid,
+ requirementname,
+ completeddate,
+ comment,
+ createddate,
+ rowid
+
+
+ from onprc_ehr_compliancedb.SciShieldTemp
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+END
+
+No_Records:
+
+ RETURN 0
+
+
+Err_Proc:
+ -------Error Generated, Transfer process stopped
+ RETURN 1
+
+
+END
+
+GO
+
+CREATE INDEX IX_completiondates_trainer ON ehr_compliancedb.completiondates(trainer);
+GO
+
+-- Author: R. Blasa
+-- Created: 9-16-2024
+
+/*
+**
+** Created by
+** Blasa 9-16-2024 Storedprocedure to update Compliance Access contaimer values
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.[p_ComplianceAccesscontainerUpdate]
+
+
+AS
+
+
+
+BEGIN
+
+ ------ Update container value and include as part of the main Compliance module
+
+If exists(Select * from ehr_Compliancedb.CompletionDates ss where ss.container = '47F00C3F-5691-103D-8866-41AD310B2640' )
+BEGIN
+
+ Update ss
+ set ss.container = 'CD170458-C55F-102F-9907-5107380A54BE' ----Compliance folder on Prime Production
+
+ from ehr_Compliancedb.CompletionDates ss
+ Where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' ---Compliance Access folder on Prime Production
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+ELSE ------ No new entries exit
+ BEGIN
+
+ GOTO No_Records
+
+ END
+
+
+
+
+No_Records:
+
+ RETURN 0
+
+
+Err_Proc:
+ -------Error Generated, Transfer process stopped
+ RETURN 1
+
+
+END
+
+GO
+
+EXEC core.fn_dropifexists 'p_ComplianceAccesscontainerUpdate', 'onprc_ehr_compliancedb', 'PROCEDURE';
+GO
+
+-- Author: R. Blasa
+-- Created: 10-2-2024
+
+/*
+**
+** Created by
+** Blasa 9-16-2024 Storedprocedure to update Compliance Access contaimer values.
+** 10-2-2024 Corrected Container values.
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.p_ComplianceAccesscontainerUpdate
+
+
+AS
+
+
+
+BEGIN
+
+ ------ Update container value and include as part of the main Compliance module
+
+If exists(Select * from ehr_Compliancedb.CompletionDates ss where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' )
+BEGIN
+
+ Update ss
+ set ss.container = 'CD170458-C55F-102F-9907-5107380A54BE' ----Compliance folder on Prime Production
+
+ from ehr_Compliancedb.CompletionDates ss
+ Where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' ---Compliance Access folder on Prime Production
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+ELSE ------ No new entries exit
+ BEGIN
+
+ GOTO No_Records
+
+ END
+
+
+
+
+No_Records:
+
+ RETURN 0
+
+
+Err_Proc:
+ -------Error Generated, Transfer process stopped
+ RETURN 1
+
+
+END
+
+GO
+
+EXEC core.fn_dropifexists 'p_ComplianceAccesscontainerUpdate', 'onprc_ehr_compliancedb', 'PROCEDURE';
+GO
+
+-- Author: R. Blasa
+-- Created: 12-10-2024
+
+/*
+**
+** Created by
+** Blasa 12-10-2024 Storedprocedure to update string name "ARRS" to "DCM"
+**
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.p_ComplianceTranslatestringUpdate
+
+
+AS
+
+
+
+BEGIN
+
+ ------ Update container value and include as part of the main Compliance module
+
+If exists(select * from ehr_compliancedb.EmployeePerUnit ------> count= 496
+ where unit like '%arrs%'
+ )
+BEGIN
+
+ Update ehr_compliancedb.EmployeePerUnit
+ set unit = replace(unit,'arrs', 'DCM')
+
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+ If exists(select * from ehr_compliancedb.EmployeePerUnit ------> count= 496
+ where category like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.EmployeePerUnit
+ set category = replace(category,'arrs', 'DCM')
+
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+
+ If exists(select * from ehr_compliancedb.Employees
+ where majorudds like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.Employees
+ set majorudds = replace(majorudds,'arrs', 'DCM')
+
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+
+ If exists(select * from ehr_compliancedb.Employees
+ where unit like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.Employees
+ set unit = replace(unit,'arrs', 'DCM')
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+
+ If exists(select * from ehr_compliancedb.Employees
+ where category like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.Employees
+ set category = replace(category,'arrs', 'DCM')
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+
+ If exists(select * from ehr_compliancedb.requirements
+ where requirementname like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.requirements
+ set requirementname = replace(requirementname,'arrs', 'DCM')
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+
+ If exists(select * from ehr_compliancedb.EmployeeRequirementExemptions
+ where requirementname like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.EmployeeRequirementExemptions
+ set requirementname = replace(requirementname,'arrs', 'DCM')
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+
+
+ If exists(select * from ehr_compliancedb.unit_names
+ where unit like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.unit_names
+ set unit = replace(unit,'arrs', 'DCM')
+
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+ If exists(select * from ehr_compliancedb.RequirementsPerCategory
+ where RequirementName like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.RequirementsPerCategory
+ set requirementname = replace(requirementname,'arrs', 'DCM')
+
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+ If exists(select * from ehr_compliancedb.RequirementsPerCategory
+ where category like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.RequirementsPerCategory
+ set category = replace(category,'arrs', 'DCM')
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+ If exists(select * from ehr_compliancedb.RequirementsPerCategory
+ where unit like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.RequirementsPerCategory
+ set unit = replace(unit,'arrs', 'DCM')
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+ If exists(select * from ehr_compliancedb.completiondates
+ where requirementname like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.completiondates
+ set requirementname = replace(requirementname,'arrs', 'DCM')
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+ If exists(select * from ehr_compliancedb.EmployeeCategory
+ where categoryname like '%arrs%'
+ )
+ BEGIN
+
+ Update ehr_compliancedb.EmployeeCategory
+ set categoryname = replace(categoryname ,'arrs', 'DCM')
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+ END
+
+
+
+
+
+
+
+
+No_Records:
+
+ RETURN 0
+
+
+Err_Proc:
+ --
+ RETURN 1
+
+
+END
+
+GO
+
+-- Author: R. Blasa
+-- Created: 9-20-2024-2024
+-- Description: Stored procedure program to create a static data set for Compliance Procedure Recent Test .sql
+
+
+ CREATE TABLE onprc_ehr_compliancedb.ComplianceProcedureReport(
+ [rowid] [int] IDENTITY(1,1) NOT NULL,
+ [employeeid] varchar(300) NULL,
+ [requirementname] [varchar](4000) NULL,
+ [unit] [varchar](500) NULL,
+ [category] [varchar](500) NULL,
+ [trackingflag] [varchar](100) NULL,
+ [email] [varchar](500) NULL,
+ [lastname] [varchar](500) NULL,
+ [firstname] [varchar](500) NULL,
+ [host] [varchar](500) NULL,
+ [supervisor] [varchar](500) NULL,
+ [trainee_type] [varchar](500) NULL,
+ [times_completed] [smallint] NULL,
+ [expired_period] [smallint] NULL,
+ [new_expired_period] [smallint] NULL,
+ [mostrecentcompleted_date] [smalldatetime] NULL,
+ [comment] [varchar](4000) NULL,
+ [snooze_date] [smalldatetime] NULL,
+ [months_until_renewal] [Float] NULL,
+ [requirement_name_type] [varchar](1000) NULL
+
+ ) ON [PRIMARY]
+ GO
+
+-- Author: R. Blasa
+-- Created: 9-20-2024
+
+/*
+**
+** Created by
+** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
+** the ComplianceProcedureRecentTest.sql query
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.p_ComplianceProcedureOverDueSoon_Process
+
+
+AS
+
+
+ ----- Reset Reporting table
+ Delete onprc_ehr_compliancedb.ComplianceProcedureReport
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+BEGIN
+
+ Insert into onprc_ehr_compliancedb.ComplianceProcedureReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+
+ )
+
+
+
+
+
+ select b.requirementname,
+ a.employeeid,
+ string_agg(a.unit,char(10)) as unit,
+ string_agg(a.category,char(10)) as category,
+ (select top 1 h.trackingflag from ehr_compliancedb.requirementspercategory h where h.requirementname = b.requirementname) as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type,
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate()) ) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) )
+
+
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate()) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS Float) AS MonthsUntilRenewal
+
+
+
+ from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
+ where ( a.unit = b.unit or a.category = b.category )
+ And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And b.requirementname = t.requirementname)
+
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
+
+
+ group by b.requirementname,a.employeeid
+
+
+ union
+
+ select a.requirementname,
+ a.employeeid,
+ null as unit,
+ null as category,
+ 'No' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select ( datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) )
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate()) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS Float) AS MonthsUntilRenewal
+
+
+ from ehr_compliancedb.completiondates a
+ where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
+ or k.category = h.category) And a.employeeid = k.employeeid )
+ And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And a.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
+
+ group by a.requirementname,a.employeeid
+
+ UNION
+
+ -- Additional requirements for employees that have not completed training, but is required
+ select j.requirementname,
+ j.employeeid,
+ null as unit,
+ null as category,
+ 'Yes' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
+ null as timesCompleted,
+ null as ExpiredPeriod,
+ null as NewExpirePeriod,
+ null as MostRecentDate,
+ '' as comment,
+ null as snooze_date,
+ null AS MonthsUntilRenewal
+
+
+
+ from ehr_compliancedb.RequirementsPerEmployee j
+ Where j.requirementname not in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
+ and z.employeeid = j.employeeid and z.date is not null)
+ And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
+ And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
+
+ group by j.requirementname,j.employeeid
+
+ order by employeeid,requirementname, mostrecentcompleted_date desc
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+
+ RETURN 0
+
+
+Err_Proc:
+
+ RETURN 1
+
+
+END
+
+GO
+
+-- Author: R. Blasa
+-- Created: 9-20-2024-2024
+-- Description: Stored procedure program to create a static data set for Compliance Recent Test .sql
+
+
+ CREATE TABLE onprc_ehr_compliancedb.ComplianceRecentReport(
+ [rowid] [int] IDENTITY(1,1) NOT NULL,
+ [employeeid] varchar(300) NULL,
+ [requirementname] [varchar](4000) NULL,
+ [unit] [varchar](500) NULL,
+ [category] [varchar](500) NULL,
+ [trackingflag] [varchar](100) NULL,
+ [email] [varchar](500) NULL,
+ [lastname] [varchar](500) NULL,
+ [firstname] [varchar](500) NULL,
+ [host] [varchar](500) NULL,
+ [supervisor] [varchar](500) NULL,
+ [trainee_type] [varchar](500) NULL,
+ [times_completed] [smallint] NULL,
+ [expired_period] [smallint] NULL,
+ [new_expired_period] [smallint] NULL,
+ [mostrecentcompleted_date] [smalldatetime] NULL,
+ [comment] [varchar](4000) NULL,
+ [snooze_date] [smalldatetime] NULL,
+ [months_until_renewal] [FLOAT] NULL,
+ [requirement_name_type] [varchar](1000) NULL
+
+ ) ON [PRIMARY]
+ GO
+
+
+-- Author: R. Blasa
+-- Created: 9-20-2024
+
+/*
+**
+** Created by
+** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
+** the ComplianceRecentTest.sql query
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.p_ComplianceRecentOverDueSoon_Process
+
+
+AS
+
+
+
+ ----- Reset Reporting table
+ Delete onprc_ehr_compliancedb.ComplianceRecentReport
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+BEGIN
+
+ Insert into onprc_ehr_compliancedb.ComplianceRecentReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+
+ )
+
+
+
+
+ select b.requirementname,
+ a.employeeid,
+ string_agg(a.unit,char(10)) as unit,
+ string_agg(a.category,char(10)) as category,
+ (select top 1 h.trackingflag from ehr_compliancedb.requirementspercategory h where h.requirementname = b.requirementname) as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) ) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
+
+
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+
+ from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
+ where ( a.unit = b.unit or a.category = b.category )
+ And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And b.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
+
+
+ group by b.requirementname,a.employeeid
+
+
+ union
+
+ select a.requirementname,
+ a.employeeid,
+ null as unit,
+ null as category,
+ 'No' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+ from ehr_compliancedb.completiondates a
+ where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
+ or k.category = h.category) And a.employeeid = k.employeeid )
+ And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And a.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
+
+ group by a.requirementname,a.employeeid
+
+ UNION
+
+ --- Training that was completed by as an employee training exemptions, and at least completed one, or more times
+
+ select a.requirementname,
+ a.employeeid,
+ null as unit,
+ null as category,
+ 'No' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) )
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS DECIMAL) AS MonthsUntilRenewal
+
+
+ from ehr_compliancedb.employeerequirementexemptions a
+ Where a.requirementname in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = a.requirementname
+ and z.employeeid = a.employeeid and z.date is not null)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
+
+ group by a.requirementname,a.employeeid
+
+ UNION
+
+ --- Additional requirements for employees that have not completed training, but is required
+
+ select j.requirementname,
+ j.employeeid,
+ null as unit,
+ null as category,
+ 'Yes' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
+ And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
+ And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) )
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
+
+ END AS DECIMAL) AS MonthsUntilRenewal
+
+
+
+
+
+ from ehr_compliancedb.RequirementsPerEmployee j
+ Where j.requirementname not in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
+ and z.employeeid = j.employeeid and z.date is not null)
+ And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
+ And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
+
+ group by j.requirementname,j.employeeid
+
+ order by employeeid,requirementname, mostrecentcompleted_date desc
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+
+ RETURN 0
+
+
+Err_Proc:
+
+ RETURN 1
+
+
+END
+
+GO
+
+EXEC core.fn_dropifexists 'p_ComplianceRecentOverDueSoon_Process', 'onprc_ehr_compliancedb', 'PROCEDURE';
+GO
+
+-- Author: R. Blasa
+-- Created: 9-20-2024
+
+/*
+**
+** Created by
+** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
+** the ComplianceRecentTest.sql query
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.p_ComplianceRecentOverDueSoon_Process
+
+
+AS
+
+
+
+ ----- Reset Reporting table
+ Delete onprc_ehr_compliancedb.ComplianceRecentReport
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+BEGIN
+
+ Insert into onprc_ehr_compliancedb.ComplianceRecentReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+
+ )
+
+
+
+
+ select b.requirementname,
+ a.employeeid,
+ string_agg(a.unit,char(10)) as unit,
+ string_agg(a.category,char(10)) as category,
+ string_agg(b.trackingflag,char(10)) as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) ) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
+
+
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+
+ from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
+ where ( a.unit = b.unit or a.category = b.category )
+ And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And b.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
+
+
+ group by b.requirementname,a.employeeid
+
+
+ union
+
+ select a.requirementname,
+ a.employeeid,
+ null as unit,
+ null as category,
+ 'None' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+ from ehr_compliancedb.completiondates a
+ where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
+ or k.category = h.category) And a.employeeid = k.employeeid )
+ And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And a.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
+
+ group by a.requirementname,a.employeeid
+
+ UNION
+
+ --- Training that was completed by as an employee training exemptions, and at least completed one, or more times
+
+ select a.requirementname,
+ a.employeeid,
+ null as unit,
+ null as category,
+ 'No' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) )
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS DECIMAL) AS MonthsUntilRenewal
+
+
+ from ehr_compliancedb.employeerequirementexemptions a
+ Where a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
+
+ group by a.requirementname,a.employeeid
+
+ UNION
+
+ --- Additional requirements for employees that have not completed training, but is required
+
+ select j.requirementname,
+ j.employeeid,
+ null as unit,
+ null as category,
+ 'Yes' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
+ And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
+ And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) )
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
+
+ END AS DECIMAL) AS MonthsUntilRenewal
+
+
+
+ from ehr_compliancedb.RequirementsPerEmployee j
+ Where j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
+ And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
+
+ group by j.requirementname,j.employeeid
+
+ order by employeeid,requirementname, mostrecentcompleted_date desc
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+
+ RETURN 0
+
+
+Err_Proc:
+
+ RETURN 1
+
+
+END
+
+GO
+
+EXEC core.fn_dropifexists 'p_ComplianceProcedureOverDueSoon_Process', 'onprc_ehr_compliancedb', 'PROCEDURE';
+GO
+
+-- Author: R. Blasa
+-- Created: 9-20-2024
+
+/*
+**
+** Created by
+** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
+** the ComplianceProcedureRecentTest.sql query
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.p_ComplianceProcedureOverDueSoon_Process
+
+
+AS
+
+
+ ----- Reset Reporting table
+ Delete onprc_ehr_compliancedb.ComplianceProcedureReport
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+BEGIN
+
+ Insert into onprc_ehr_compliancedb.ComplianceProcedureReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+
+ )
+
+
+
+
+
+ select b.requirementname,
+ a.employeeid,
+ string_agg(a.unit,char(10)) as unit,
+ string_agg(a.category,char(10)) as category,
+ string_agg(b.trackingflag,char(10)) as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type,
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate()) ) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) )
+
+
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate()) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS Float) AS MonthsUntilRenewal
+
+
+
+ from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
+ where ( a.unit = b.unit or a.category = b.category )
+ And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And b.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
+
+
+ group by b.requirementname,a.employeeid
+
+ union
+
+ select a.requirementname,
+ a.employeeid,
+ null as unit,
+ null as category,
+ 'None' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
+
+
+ ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+ from ehr_compliancedb.completiondates a
+ where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
+ or k.category = h.category) And a.employeeid = k.employeeid )
+ And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And a.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
+
+ group by a.requirementname,a.employeeid
+
+ union
+
+ -- Additional requirements for employees that have not completed training, but is required
+ select j.requirementname,
+ j.employeeid,
+ null as unit,
+ null as category,
+ 'Yes' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
+ null as timesCompleted,
+ null as ExpiredPeriod,
+ null as NewExpirePeriod,
+ null as MostRecentDate,
+ '' as comment,
+ null as snooze_date,
+ null AS MonthsUntilRenewal
+
+
+
+ from ehr_compliancedb.RequirementsPerEmployee j
+ Where j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
+ And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
+
+ group by j.requirementname,j.employeeid
+
+ order by employeeid,requirementname, mostrecentcompleted_date desc
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+
+ RETURN 0
+
+
+Err_Proc:
+
+ RETURN 1
+
+
+END
+
+GO
+
+CREATE TABLE onprc_ehr_compliancedb.RequirementsPerEmployee
+(
+ RowId INT IDENTITY(1,1) NOT NULL,
+ EmployeeId varchar(255) not null,
+ RequirementName varchar(255) not null,
+ CreatedBy USERID,
+ Created datetime,
+ ModifiedBy USERID,
+ Modified datetime,
+ trackingflag varchar(100)
+
+ CONSTRAINT PK_RequirementsPerEmployeename PRIMARY KEY (RowId)
+);
+GO
+
+EXEC core.fn_dropifexists 'p_ComplianceRecentOverDueSoon_Process', 'onprc_ehr_compliancedb', 'PROCEDURE';
+GO
+
+-- Author: R. Blasa
+-- Created: 9-20-2024
+
+/*
+**
+** Created by
+** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
+** the ComplianceRecentTest.sql query
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.p_ComplianceRecentOverDueSoon_Process
+
+
+AS
+
+
+
+ ----- Reset Reporting table
+ Delete onprc_ehr_compliancedb.ComplianceRecentReport
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+BEGIN
+
+ Insert into onprc_ehr_compliancedb.ComplianceRecentReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+
+ )
+
+
+
+
+ select b.requirementname,
+ a.employeeid,
+ string_agg(a.unit,char(10)) as unit,
+ string_agg(a.category,char(10)) as category,
+ string_agg(b.trackingflag,char(10)) as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) )
+
+
+
+
+ ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+
+ from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
+ where ( a.unit = b.unit or a.category = b.category )
+ And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And b.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
+
+
+ group by b.requirementname,a.employeeid
+
+
+ union
+
+ select a.requirementname,
+ a.employeeid,
+ null as unit,
+ null as category,
+ 'None' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) )
+
+
+ ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+ from ehr_compliancedb.completiondates a
+ where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
+ or k.category = h.category) And a.employeeid = k.employeeid )
+ And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And a.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
+
+ group by a.requirementname,a.employeeid
+
+ UNION
+
+ --- Training that was completed by as an employee training exemptions, and at least completed one, or more times
+
+ select a.requirementname,
+ a.employeeid,
+ null as unit,
+ null as category,
+ 'No' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
+
+ ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) )
+
+
+ ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS DECIMAL) AS MonthsUntilRenewal
+
+
+ from ehr_compliancedb.employeerequirementexemptions a
+ Where a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
+
+ group by a.requirementname,a.employeeid
+
+ UNION
+
+ --- Additional requirements for employees that have not completed training, but is required
+
+ select j.requirementname,
+ j.employeeid,
+ null as unit,
+ null as category,
+ string_agg(j.trackingflag,char(10)) as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
+ 0 as timesCompleted,
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+ null as MostRecentDate,
+ '' as comment,
+ null as snooze_date,
+ CAST(
+ CASE
+
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
+ WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) )
+
+
+ ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+ from onprc_ehr_compliancedb.RequirementsPerEmployee j
+ Where j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
+ And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
+ And j.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
+ or k.category = h.category) And j.employeeid = k.employeeid )
+ And j.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where j.employeeid = t.employeeid And j.requirementname = t.requirementname)
+ And j.requirementname not in (select distinct k.requirementname from ehr_compliancedb.completiondates k Where k.employeeid = j.employeeid)
+
+ group by j.requirementname,j.employeeid
+
+ order by employeeid,requirementname, mostrecentcompleted_date desc
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+
+ RETURN 0
+
+
+Err_Proc:
+
+ RETURN 1
+
+
+END
+
+GO
+
+EXEC core.fn_dropifexists 'p_ComplianceProcedureOverDueSoon_Process', 'onprc_ehr_compliancedb', 'PROCEDURE';
+GO
+
+-- Author: R. Blasa
+-- Created: 9-20-2024
+
+/*
+**
+** Created by
+** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
+** the ComplianceProcedureRecentTest.sql query
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.p_ComplianceProcedureOverDueSoon_Process
+
+
+AS
+
+
+ ----- Reset Reporting table
+ Delete onprc_ehr_compliancedb.ComplianceProcedureReport
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+BEGIN
+
+ Insert into onprc_ehr_compliancedb.ComplianceProcedureReport
+ (
+ requirementname,
+ employeeid,
+ unit,
+ category,
+ trackingflag,
+ email,
+ lastname,
+ firstname,
+ host,
+ supervisor,
+ trainee_type,
+ requirement_name_type,
+ times_completed,
+ expired_period,
+ new_expired_Period,
+ mostrecentcompleted_date,
+ comment,
+ snooze_date,
+ months_until_renewal
+
+ )
+
+
+
+
+
+ select b.requirementname,
+ a.employeeid,
+ string_agg(a.unit,char(10)) as unit,
+ string_agg(a.category,char(10)) as category,
+ string_agg(b.trackingflag,char(10)) as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type,
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate()) ) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) )
+
+
+ ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate()) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS Float) AS MonthsUntilRenewal
+
+
+
+ from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
+ where ( a.unit = b.unit or a.category = b.category )
+ And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And b.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
+
+
+ group by b.requirementname,a.employeeid
+
+ union
+
+ select a.requirementname,
+ a.employeeid,
+ null as unit,
+ null as category,
+ 'None' as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
+
+
+ (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
+
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+
+ (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
+
+ (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
+
+ (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
+ And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
+
+ CAST(
+ CASE
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
+ WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) )
+
+
+ ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+ from ehr_compliancedb.completiondates a
+ where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
+ or k.category = h.category) And a.employeeid = k.employeeid )
+ And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
+ And a.requirementname = t.requirementname)
+ And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
+ And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
+
+ group by a.requirementname,a.employeeid
+
+ union
+
+ -- Additional requirements for employees that have not completed training, but is required
+ select j.requirementname,
+ j.employeeid,
+ null as unit,
+ null as category,
+ string_agg(j.trackingflag,char(10)) as trackingflag,
+ (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
+ (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
+ (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
+ (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
+ (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
+ (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
+ (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
+ 0 as timesCompleted,
+ (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
+ ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
+ null as MostRecentDate,
+ '' as comment,
+ null as snooze_date,
+ CAST(
+ CASE
+
+ WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
+ WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
+
+
+ WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
+
+ ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
+ having (tt.reviewdate) > (max(pq.date)) )
+
+
+ ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
+
+ END AS FLOAT) AS MonthsUntilRenewal
+
+
+
+ from onprc_ehr_compliancedb.RequirementsPerEmployee j
+ Where j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
+ And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
+ And j.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
+ or k.category = h.category) And j.employeeid = k.employeeid )
+ And j.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where j.employeeid = t.employeeid And j.requirementname = t.requirementname)
+ And j.requirementname not in (select distinct k.requirementname from ehr_compliancedb.completiondates k Where k.employeeid = j.employeeid)
+
+ group by j.requirementname,j.employeeid
+
+ order by employeeid,requirementname, mostrecentcompleted_date desc
+
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+
+
+
+ RETURN 0
+
+
+Err_Proc:
+
+ RETURN 1
+
+
+END
+
+GO
+
+EXEC core.fn_dropifexists 'p_ComplianceAccesscontainerUpdate', 'onprc_ehr_compliancedb', 'PROCEDURE';
+GO
+
+-- Author: R. Blasa
+-- Created: 10-2-2024
+
+/*
+**
+** Created by
+** Blasa 9-5-2025 Storedprocedure to update Compliance Access contaimer values and update
+** Completion date records
+** .
+**
+**
+**
+*/
+
+CREATE Procedure onprc_ehr_compliancedb.p_ComplianceAccesscontainerUpdate
+
+
+ AS
+
+
+
+BEGIN
+
+ ------ Update container value and include as part of the main Compliance module
+
+If exists(Select * from ehr_Compliancedb.CompletionDates ss where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' )
+BEGIN
+
+Update ss
+set ss.container = 'CD170458-C55F-102F-9907-5107380A54BE' ----Compliance folder on Prime Production
+
+ from ehr_Compliancedb.CompletionDates ss
+Where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' ---Compliance Access folder on Prime Production
+
+ If @@Error <> 0
+ GoTo Err_Proc
+
+END
+
+ELSE ------ No new entries exit
+BEGIN
+
+GOTO No_Records
+
+END
+
+
+
+
+No_Records:
+
+ RETURN 0
+
+
+Err_Proc:
+ -------Error Generated, Transfer process stopped
+ RETURN 1
+
+
+END
+
+GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.001-24.002.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.001-24.002.sql
deleted file mode 100644
index c36be855e..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.001-24.002.sql
+++ /dev/null
@@ -1,311 +0,0 @@
-
-
-
-
--- Author: R. Blasa
--- Created: 2-10-2024
--- Description: Stored procedure program process SciShield INitial Data
-
-
-CREATE TABLE [onprc_ehr_compliancedb].[SciShieldTemp] (
- [searchID] [int] IDENTITY(100,1) NOT NULL,
- [employeeid] [varchar](500) NULL,
- [requirementname] [varchar](3000) NULL,
- [completeddate] [smalldatetime] NULL,
- [comment] [varchar](300) NULL,
- [createddate] [smalldatetime] NULL,
- [rowid] [int] NULL
- ) ON [PRIMARY]
- GO
-
-CREATE TABLE [onprc_ehr_compliancedb].[SciShieldMasterTemp](
- [searchID] [int] IDENTITY(100,1) NOT NULL,
- [employeeid] [varchar](500) NULL,
- [requirementname] [varchar](3000) NULL,
- [completeddate] [smalldatetime] NULL,
- [comment] [varchar](300) NULL,
- [createddate] [smalldatetime] NULL,
- [rowid] [int] NULL
- ) ON [PRIMARY]
- GO
-
-
-
--- Author: R. Blasa
--- Created: 2-10-2024
-
-/*
-**
-** Created by
-** Blasa 1-25-2024 Import process from ScieShield To Prime Compliance Module
-**
-** Processed codes: Null ---Not Processed
-** 1 ------ Successfully posted
-** 2 --------- invalid Employeeid
-** 3 --------- Undefined Requirement Name
-** 4--------- Already exists Compliance module
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.[p_SciShieldToPrimeProcess]
-
-
-AS
-
-
-DECLARE
- @SearchKey Int,
- @TempsearchKey Int,
- @requirementnameFinal varchar(2000),
- @requirementnanme varchar(2000),
- @employeeid varchar(500),
- @Completiondate smalldatetime,
- @SciShieldID int
-
-
-
-
-
-BEGIN
-
- ---- Reset temp table
-
- Delete onprc_ehr_compliancedb.SciShieldTemp
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-If exists(Select * from onprc_ehr_compliancedb.SciShield_Data where processed is null)
-BEGIN
-
- Insert into onprc_ehr_compliancedb.SciShieldTemp
- (
- employeeid,
- requirementname,
- completeddate,
- createddate,
- rowid
- )
-
-
- select
- employeeid, -------employeeid
- requirementname, ----requirement name
- date, ----completed Date
- getdate(), --- created date
- rowid --- SciShield unique id
-
-
- from onprc_ehr_compliancedb.SciShield_Data
- where processed is null
-
- order by employeeid, requirementname, date desc
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-ELSE ------ No new entries exit
- BEGIN
-
- GOTO No_Records
-
- END
-
- --- Initialize Varaibles
-
- Set @TempsearchKey = 0
- Set @SearchKey = 0
-
-
-
- --- Start processing input records from SciShield
-
-
- Select top 1 @searchkey = searchID from onprc_ehr_compliancedb.SciShieldTemp
- order by searchID
-
-
-
-
-While @TempSearchKey < @SearchKey
- BEGIN
- Set @requirementnameFinal = ''
- Set @requirementnanme = ''
- Set @employeeid = ''
- Set @Completiondate = Null
- Set @SciShieldID = Null
-
-
- Select @employeeid =rtrim(ltrim(lower(employeeid))), @requirementnanme = requirementname, @completiondate = completeddate, @SciShieldID = rowid
- from onprc_ehr_compliancedb.SciShieldTemp Where searchID = @Searchkey
-
- ---Validate requirementname
- IF exists (Select * from onprc_ehr_compliancedb.SciShield_Reference_Data where label = @requirementnanme And columnname = 'requirementname' )
- BEGIN
-
- Select @requirementnameFinal = value from onprc_ehr_compliancedb.SciShield_Reference_Data where label = @requirementnanme And columnname = 'requirementname'
- END
- ELSE IF exists (Select * from ehr_compliancedb.requirements where requirementname = @requirementnanme)
- BEGIN
- Select @requirementnameFinal = requirementname from ehr_compliancedb.requirements where requirementname = @requirementnanme
- END
-
- ELSE
- BEGIN
- Update ss
- Set ss.processed = 3
-
- From onprc_ehr_compliancedb.SciShield_Data ss Where ss.rowid = @SciShieldID
-
- If @@Error <> 0
- GoTo Err_Proc
-
- GOTO Next_Record
- END
-
- ----validate if the record already exists
-
- IF exists( Select * from ehr_compliancedb.completiondates Where employeeid = @employeeid And requirementname = @requirementnameFinal
- And date = @completiondate)
- BEGIN
- Update ss
- Set ss.processed = 4
-
- From onprc_ehr_compliancedb.SciShield_Data ss Where ss.rowid = @SciShieldID
-
- If @@Error <> 0
- GoTo Err_Proc
-
- GOTO Next_Record
- END
-
-
- ----validate if the employeeid is defined
-
- IF not exists( Select * from ehr_compliancedb.employees Where employeeid = @employeeid And enddate is null)
- BEGIN
-
- Update ss
- Set ss.processed = 2
-
- From onprc_ehr_compliancedb.SciShield_Data ss Where ss.rowid = @SciShieldID
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- GOTO Next_Record
-
-
-
- END ----
-
-
- ---- IF all previous version were validated proceed with the record insert
-
-
- IF not exists( Select * from ehr_compliancedb.completiondates Where employeeid = @employeeid And requirementname = @requirementnameFinal
- And date = @completiondate)
-
- BEGIN
- Insert into ehr_compliancedb.completiondates
- (employeeid,
- requirementname,
- date,
- trainer,
- container,
- created,
- createdby,
- modified,
- modifiedby
-
- )
- values(
- @employeeid,
- @requirementnameFinal,
- @completiondate,
- 'ONLINE TRAINING',
- 'CD170458-C55F-102F-9907-5107380A54BE',
- getdate(),
- 2595,
- getdate(),
- 2595
- )
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-
----------- Set successful entry flag
-
- Update ss
- Set ss.processed = 1
-
- From onprc_ehr_compliancedb.SciShield_Data ss Where ss.rowid = @SciShieldID
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
-END ----
-
-
-
-
-Next_Record:
-
-
-
- Set @TempSearchkey = @SearchKey
-
-
- Select Top 1 @Searchkey = searchID from onprc_ehr_compliancedb.SciShieldTemp
- Where searchID > @TempSearchkey
- Order by searchID
-
-
-
-END ---(While)
-
-
-
- ---- Create a master records of the last most recent entries
- If exists (Select * from onprc_ehr_compliancedb.SciShieldTemp)
- BEGiN
- Insert into onprc_ehr_compliancedb.SciShieldMasterTemp
- select
- employeeid,
- requirementname,
- completeddate,
- comment,
- createddate,
- rowid
-
-
- from onprc_ehr_compliancedb.SciShieldTemp
-
-
- If @@Error <> 0
- GoTo Err_Proc
-END
-
-No_Records:
-
- RETURN 0
-
-
-Err_Proc:
- -------Error Generated, Transfer process stopped
- RETURN 1
-
-
-END
-
-GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.002-24.003.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.002-24.003.sql
deleted file mode 100644
index 51a39f1c9..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.002-24.003.sql
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-CREATE INDEX IX_completiondates_trainer ON ehr_compliancedb.completiondates(trainer);
-GO
-
--- Author: R. Blasa
--- Created: 9-16-2024
-
-/*
-**
-** Created by
-** Blasa 9-16-2024 Storedprocedure to update Compliance Access contaimer values
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.[p_ComplianceAccesscontainerUpdate]
-
-
-AS
-
-
-
-BEGIN
-
- ------ Update container value and include as part of the main Compliance module
-
-If exists(Select * from ehr_Compliancedb.CompletionDates ss where ss.container = '47F00C3F-5691-103D-8866-41AD310B2640' )
-BEGIN
-
- Update ss
- set ss.container = 'CD170458-C55F-102F-9907-5107380A54BE' ----Compliance folder on Prime Production
-
- from ehr_Compliancedb.CompletionDates ss
- Where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' ---Compliance Access folder on Prime Production
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-ELSE ------ No new entries exit
- BEGIN
-
- GOTO No_Records
-
- END
-
-
-
-
-No_Records:
-
- RETURN 0
-
-
-Err_Proc:
- -------Error Generated, Transfer process stopped
- RETURN 1
-
-
-END
-
-GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.003-24.004.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.003-24.004.sql
deleted file mode 100644
index ce18d1d4b..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.003-24.004.sql
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-EXEC core.fn_dropifexists 'p_ComplianceAccesscontainerUpdate', 'onprc_ehr_compliancedb', 'PROCEDURE';
-GO
-
--- Author: R. Blasa
--- Created: 10-2-2024
-
-/*
-**
-** Created by
-** Blasa 9-16-2024 Storedprocedure to update Compliance Access contaimer values.
-** 10-2-2024 Corrected Container values.
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.p_ComplianceAccesscontainerUpdate
-
-
-AS
-
-
-
-BEGIN
-
- ------ Update container value and include as part of the main Compliance module
-
-If exists(Select * from ehr_Compliancedb.CompletionDates ss where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' )
-BEGIN
-
- Update ss
- set ss.container = 'CD170458-C55F-102F-9907-5107380A54BE' ----Compliance folder on Prime Production
-
- from ehr_Compliancedb.CompletionDates ss
- Where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' ---Compliance Access folder on Prime Production
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-ELSE ------ No new entries exit
- BEGIN
-
- GOTO No_Records
-
- END
-
-
-
-
-No_Records:
-
- RETURN 0
-
-
-Err_Proc:
- -------Error Generated, Transfer process stopped
- RETURN 1
-
-
-END
-
-GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.004-24.005.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.004-24.005.sql
deleted file mode 100644
index 4c2b7aa50..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.004-24.005.sql
+++ /dev/null
@@ -1,250 +0,0 @@
-
-
-EXEC core.fn_dropifexists 'p_ComplianceAccesscontainerUpdate', 'onprc_ehr_compliancedb', 'PROCEDURE';
-GO
-
--- Author: R. Blasa
--- Created: 12-10-2024
-
-/*
-**
-** Created by
-** Blasa 12-10-2024 Storedprocedure to update string name "ARRS" to "DCM"
-**
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.p_ComplianceTranslatestringUpdate
-
-
-AS
-
-
-
-BEGIN
-
- ------ Update container value and include as part of the main Compliance module
-
-If exists(select * from ehr_compliancedb.EmployeePerUnit ------> count= 496
- where unit like '%arrs%'
- )
-BEGIN
-
- Update ehr_compliancedb.EmployeePerUnit
- set unit = replace(unit,'arrs', 'DCM')
-
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
- If exists(select * from ehr_compliancedb.EmployeePerUnit ------> count= 496
- where category like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.EmployeePerUnit
- set category = replace(category,'arrs', 'DCM')
-
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
-
- If exists(select * from ehr_compliancedb.Employees
- where majorudds like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.Employees
- set majorudds = replace(majorudds,'arrs', 'DCM')
-
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
-
- If exists(select * from ehr_compliancedb.Employees
- where unit like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.Employees
- set unit = replace(unit,'arrs', 'DCM')
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
-
- If exists(select * from ehr_compliancedb.Employees
- where category like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.Employees
- set category = replace(category,'arrs', 'DCM')
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
-
- If exists(select * from ehr_compliancedb.requirements
- where requirementname like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.requirements
- set requirementname = replace(requirementname,'arrs', 'DCM')
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
-
- If exists(select * from ehr_compliancedb.EmployeeRequirementExemptions
- where requirementname like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.EmployeeRequirementExemptions
- set requirementname = replace(requirementname,'arrs', 'DCM')
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
-
-
- If exists(select * from ehr_compliancedb.unit_names
- where unit like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.unit_names
- set unit = replace(unit,'arrs', 'DCM')
-
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
- If exists(select * from ehr_compliancedb.RequirementsPerCategory
- where RequirementName like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.RequirementsPerCategory
- set requirementname = replace(requirementname,'arrs', 'DCM')
-
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
- If exists(select * from ehr_compliancedb.RequirementsPerCategory
- where category like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.RequirementsPerCategory
- set category = replace(category,'arrs', 'DCM')
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
- If exists(select * from ehr_compliancedb.RequirementsPerCategory
- where unit like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.RequirementsPerCategory
- set unit = replace(unit,'arrs', 'DCM')
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
- If exists(select * from ehr_compliancedb.completiondates
- where requirementname like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.completiondates
- set requirementname = replace(requirementname,'arrs', 'DCM')
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
- If exists(select * from ehr_compliancedb.EmployeeCategory
- where categoryname like '%arrs%'
- )
- BEGIN
-
- Update ehr_compliancedb.EmployeeCategory
- set categoryname = replace(categoryname ,'arrs', 'DCM')
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
- END
-
-
-
-
-
-
-
-
-No_Records:
-
- RETURN 0
-
-
-Err_Proc:
- --
- RETURN 1
-
-
-END
-
-GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.005-24.006.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.005-24.006.sql
deleted file mode 100644
index 0a739ae44..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.005-24.006.sql
+++ /dev/null
@@ -1,261 +0,0 @@
--- Author: R. Blasa
--- Created: 9-20-2024-2024
--- Description: Stored procedure program to create a static data set for Compliance Procedure Recent Test .sql
-
-
- CREATE TABLE onprc_ehr_compliancedb.ComplianceProcedureReport(
- [rowid] [int] IDENTITY(1,1) NOT NULL,
- [employeeid] varchar(300) NULL,
- [requirementname] [varchar](4000) NULL,
- [unit] [varchar](500) NULL,
- [category] [varchar](500) NULL,
- [trackingflag] [varchar](100) NULL,
- [email] [varchar](500) NULL,
- [lastname] [varchar](500) NULL,
- [firstname] [varchar](500) NULL,
- [host] [varchar](500) NULL,
- [supervisor] [varchar](500) NULL,
- [trainee_type] [varchar](500) NULL,
- [times_completed] [smallint] NULL,
- [expired_period] [smallint] NULL,
- [new_expired_period] [smallint] NULL,
- [mostrecentcompleted_date] [smalldatetime] NULL,
- [comment] [varchar](4000) NULL,
- [snooze_date] [smalldatetime] NULL,
- [months_until_renewal] [Float] NULL,
- [requirement_name_type] [varchar](1000) NULL
-
- ) ON [PRIMARY]
- GO
-
--- Author: R. Blasa
--- Created: 9-20-2024
-
-/*
-**
-** Created by
-** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
-** the ComplianceProcedureRecentTest.sql query
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.p_ComplianceProcedureOverDueSoon_Process
-
-
-AS
-
-
- ----- Reset Reporting table
- Delete onprc_ehr_compliancedb.ComplianceProcedureReport
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-BEGIN
-
- Insert into onprc_ehr_compliancedb.ComplianceProcedureReport
- (
- requirementname,
- employeeid,
- unit,
- category,
- trackingflag,
- email,
- lastname,
- firstname,
- host,
- supervisor,
- trainee_type,
- requirement_name_type,
- times_completed,
- expired_period,
- new_expired_Period,
- mostrecentcompleted_date,
- comment,
- snooze_date,
- months_until_renewal
-
- )
-
-
-
-
-
- select b.requirementname,
- a.employeeid,
- string_agg(a.unit,char(10)) as unit,
- string_agg(a.category,char(10)) as category,
- (select top 1 h.trackingflag from ehr_compliancedb.requirementspercategory h where h.requirementname = b.requirementname) as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type,
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
-
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate()) ) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate()) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS Float) AS MonthsUntilRenewal
-
-
-
- from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
- where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
-
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
- group by b.requirementname,a.employeeid
-
-
- union
-
- select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select ( datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) )
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate()) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS Float) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.completiondates a
- where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
- group by a.requirementname,a.employeeid
-
- UNION
-
- -- Additional requirements for employees that have not completed training, but is required
- select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'Yes' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
- null as timesCompleted,
- null as ExpiredPeriod,
- null as NewExpirePeriod,
- null as MostRecentDate,
- '' as comment,
- null as snooze_date,
- null AS MonthsUntilRenewal
-
-
-
- from ehr_compliancedb.RequirementsPerEmployee j
- Where j.requirementname not in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
- and z.employeeid = j.employeeid and z.date is not null)
- And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
- group by j.requirementname,j.employeeid
-
- order by employeeid,requirementname, mostrecentcompleted_date desc
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-
- RETURN 0
-
-
-Err_Proc:
-
- RETURN 1
-
-
-END
-
-GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.006-24.007.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.006-24.007.sql
deleted file mode 100644
index 24134b431..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.006-24.007.sql
+++ /dev/null
@@ -1,349 +0,0 @@
--- Author: R. Blasa
--- Created: 9-20-2024-2024
--- Description: Stored procedure program to create a static data set for Compliance Recent Test .sql
-
-
- CREATE TABLE onprc_ehr_compliancedb.ComplianceRecentReport(
- [rowid] [int] IDENTITY(1,1) NOT NULL,
- [employeeid] varchar(300) NULL,
- [requirementname] [varchar](4000) NULL,
- [unit] [varchar](500) NULL,
- [category] [varchar](500) NULL,
- [trackingflag] [varchar](100) NULL,
- [email] [varchar](500) NULL,
- [lastname] [varchar](500) NULL,
- [firstname] [varchar](500) NULL,
- [host] [varchar](500) NULL,
- [supervisor] [varchar](500) NULL,
- [trainee_type] [varchar](500) NULL,
- [times_completed] [smallint] NULL,
- [expired_period] [smallint] NULL,
- [new_expired_period] [smallint] NULL,
- [mostrecentcompleted_date] [smalldatetime] NULL,
- [comment] [varchar](4000) NULL,
- [snooze_date] [smalldatetime] NULL,
- [months_until_renewal] [FLOAT] NULL,
- [requirement_name_type] [varchar](1000) NULL
-
- ) ON [PRIMARY]
- GO
-
-
--- Author: R. Blasa
--- Created: 9-20-2024
-
-/*
-**
-** Created by
-** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
-** the ComplianceRecentTest.sql query
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.p_ComplianceRecentOverDueSoon_Process
-
-
-AS
-
-
-
- ----- Reset Reporting table
- Delete onprc_ehr_compliancedb.ComplianceRecentReport
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-BEGIN
-
- Insert into onprc_ehr_compliancedb.ComplianceRecentReport
- (
- requirementname,
- employeeid,
- unit,
- category,
- trackingflag,
- email,
- lastname,
- firstname,
- host,
- supervisor,
- trainee_type,
- requirement_name_type,
- times_completed,
- expired_period,
- new_expired_Period,
- mostrecentcompleted_date,
- comment,
- snooze_date,
- months_until_renewal
-
- )
-
-
-
-
- select b.requirementname,
- a.employeeid,
- string_agg(a.unit,char(10)) as unit,
- string_agg(a.category,char(10)) as category,
- (select top 1 h.trackingflag from ehr_compliancedb.requirementspercategory h where h.requirementname = b.requirementname) as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
-
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) ) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
-
- from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
- where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
- group by b.requirementname,a.employeeid
-
-
- union
-
- select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.completiondates a
- where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
- group by a.requirementname,a.employeeid
-
- UNION
-
- --- Training that was completed by as an employee training exemptions, and at least completed one, or more times
-
- select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) )
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS DECIMAL) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.employeerequirementexemptions a
- Where a.requirementname in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = a.requirementname
- and z.employeeid = a.employeeid and z.date is not null)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
- group by a.requirementname,a.employeeid
-
- UNION
-
- --- Additional requirements for employees that have not completed training, but is required
-
- select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'Yes' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
- And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
- And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) )
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
-
- END AS DECIMAL) AS MonthsUntilRenewal
-
-
-
-
-
- from ehr_compliancedb.RequirementsPerEmployee j
- Where j.requirementname not in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
- and z.employeeid = j.employeeid and z.date is not null)
- And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
- group by j.requirementname,j.employeeid
-
- order by employeeid,requirementname, mostrecentcompleted_date desc
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-
- RETURN 0
-
-
-Err_Proc:
-
- RETURN 1
-
-
-END
-
-GO
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.007-24.008.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.007-24.008.sql
deleted file mode 100644
index ea9b67efb..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.007-24.008.sql
+++ /dev/null
@@ -1,317 +0,0 @@
-
-
-EXEC core.fn_dropifexists 'p_ComplianceRecentOverDueSoon_Process', 'onprc_ehr_compliancedb', 'PROCEDURE';
-GO
-
--- Author: R. Blasa
--- Created: 9-20-2024
-
-/*
-**
-** Created by
-** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
-** the ComplianceRecentTest.sql query
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.p_ComplianceRecentOverDueSoon_Process
-
-
-AS
-
-
-
- ----- Reset Reporting table
- Delete onprc_ehr_compliancedb.ComplianceRecentReport
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-BEGIN
-
- Insert into onprc_ehr_compliancedb.ComplianceRecentReport
- (
- requirementname,
- employeeid,
- unit,
- category,
- trackingflag,
- email,
- lastname,
- firstname,
- host,
- supervisor,
- trainee_type,
- requirement_name_type,
- times_completed,
- expired_period,
- new_expired_Period,
- mostrecentcompleted_date,
- comment,
- snooze_date,
- months_until_renewal
-
- )
-
-
-
-
- select b.requirementname,
- a.employeeid,
- string_agg(a.unit,char(10)) as unit,
- string_agg(a.category,char(10)) as category,
- string_agg(b.trackingflag,char(10)) as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
-
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) ) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
-
- from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
- where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
- group by b.requirementname,a.employeeid
-
-
- union
-
- select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'None' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.completiondates a
- where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
- group by a.requirementname,a.employeeid
-
- UNION
-
- --- Training that was completed by as an employee training exemptions, and at least completed one, or more times
-
- select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) )
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS DECIMAL) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.employeerequirementexemptions a
- Where a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
- group by a.requirementname,a.employeeid
-
- UNION
-
- --- Additional requirements for employees that have not completed training, but is required
-
- select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'Yes' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
- And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
- And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) )
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
-
- END AS DECIMAL) AS MonthsUntilRenewal
-
-
-
- from ehr_compliancedb.RequirementsPerEmployee j
- Where j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
- group by j.requirementname,j.employeeid
-
- order by employeeid,requirementname, mostrecentcompleted_date desc
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-
- RETURN 0
-
-
-Err_Proc:
-
- RETURN 1
-
-
-END
-
-GO
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.008-24.009.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.008-24.009.sql
deleted file mode 100644
index 54bfb6df4..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.008-24.009.sql
+++ /dev/null
@@ -1,232 +0,0 @@
-
-
-EXEC core.fn_dropifexists 'p_ComplianceProcedureOverDueSoon_Process', 'onprc_ehr_compliancedb', 'PROCEDURE';
-GO
-
--- Author: R. Blasa
--- Created: 9-20-2024
-
-/*
-**
-** Created by
-** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
-** the ComplianceProcedureRecentTest.sql query
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.p_ComplianceProcedureOverDueSoon_Process
-
-
-AS
-
-
- ----- Reset Reporting table
- Delete onprc_ehr_compliancedb.ComplianceProcedureReport
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-BEGIN
-
- Insert into onprc_ehr_compliancedb.ComplianceProcedureReport
- (
- requirementname,
- employeeid,
- unit,
- category,
- trackingflag,
- email,
- lastname,
- firstname,
- host,
- supervisor,
- trainee_type,
- requirement_name_type,
- times_completed,
- expired_period,
- new_expired_Period,
- mostrecentcompleted_date,
- comment,
- snooze_date,
- months_until_renewal
-
- )
-
-
-
-
-
- select b.requirementname,
- a.employeeid,
- string_agg(a.unit,char(10)) as unit,
- string_agg(a.category,char(10)) as category,
- string_agg(b.trackingflag,char(10)) as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type,
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
-
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate()) ) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( datediff(month,max(pq.date), tt.reviewdate) ) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate()) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS Float) AS MonthsUntilRenewal
-
-
-
- from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
- where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
- group by b.requirementname,a.employeeid
-
- union
-
- select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'None' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) )) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > (datediff(month,max(pq.date), tt.reviewdate) ) )
-
-
- ELSE ( select (tt.expireperiod) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.completiondates a
- where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
- group by a.requirementname,a.employeeid
-
- union
-
- -- Additional requirements for employees that have not completed training, but is required
- select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'Yes' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
- null as timesCompleted,
- null as ExpiredPeriod,
- null as NewExpirePeriod,
- null as MostRecentDate,
- '' as comment,
- null as snooze_date,
- null AS MonthsUntilRenewal
-
-
-
- from ehr_compliancedb.RequirementsPerEmployee j
- Where j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
- group by j.requirementname,j.employeeid
-
- order by employeeid,requirementname, mostrecentcompleted_date desc
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-
- RETURN 0
-
-
-Err_Proc:
-
- RETURN 1
-
-
-END
-
-GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.009-24.010.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.009-24.010.sql
deleted file mode 100644
index 7d8b3cb9b..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.009-24.010.sql
+++ /dev/null
@@ -1,325 +0,0 @@
-
-CREATE TABLE onprc_ehr_compliancedb.RequirementsPerEmployee
-(
- RowId INT IDENTITY(1,1) NOT NULL,
- EmployeeId varchar(255) not null,
- RequirementName varchar(255) not null,
- CreatedBy USERID,
- Created datetime,
- ModifiedBy USERID,
- Modified datetime,
- trackingflag varchar(100)
-
- CONSTRAINT PK_RequirementsPerEmployeename PRIMARY KEY (RowId)
-);
-GO
-
-EXEC core.fn_dropifexists 'p_ComplianceRecentOverDueSoon_Process', 'onprc_ehr_compliancedb', 'PROCEDURE';
-GO
-
--- Author: R. Blasa
--- Created: 9-20-2024
-
-/*
-**
-** Created by
-** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
-** the ComplianceRecentTest.sql query
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.p_ComplianceRecentOverDueSoon_Process
-
-
-AS
-
-
-
- ----- Reset Reporting table
- Delete onprc_ehr_compliancedb.ComplianceRecentReport
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-BEGIN
-
- Insert into onprc_ehr_compliancedb.ComplianceRecentReport
- (
- requirementname,
- employeeid,
- unit,
- category,
- trackingflag,
- email,
- lastname,
- firstname,
- host,
- supervisor,
- trainee_type,
- requirement_name_type,
- times_completed,
- expired_period,
- new_expired_Period,
- mostrecentcompleted_date,
- comment,
- snooze_date,
- months_until_renewal
-
- )
-
-
-
-
- select b.requirementname,
- a.employeeid,
- string_agg(a.unit,char(10)) as unit,
- string_agg(a.category,char(10)) as category,
- string_agg(b.trackingflag,char(10)) as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
-
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) )
-
-
-
-
- ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
-
- from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
- where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
- group by b.requirementname,a.employeeid
-
-
- union
-
- select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'None' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) )
-
-
- ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.completiondates a
- where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
- group by a.requirementname,a.employeeid
-
- UNION
-
- --- Training that was completed by as an employee training exemptions, and at least completed one, or more times
-
- select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
-
- ( select ( datediff(month,max(pq.date), tt.reviewdate) - (datediff(month,max(pq.date), getdate())) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) )
-
-
- ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS DECIMAL) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.employeerequirementexemptions a
- Where a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
- group by a.requirementname,a.employeeid
-
- UNION
-
- --- Additional requirements for employees that have not completed training, but is required
-
- select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- string_agg(j.trackingflag,char(10)) as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
- 0 as timesCompleted,
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
- null as MostRecentDate,
- '' as comment,
- null as snooze_date,
- CAST(
- CASE
-
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
- WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) )
-
-
- ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
- from onprc_ehr_compliancedb.RequirementsPerEmployee j
- Where j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
- And j.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And j.employeeid = k.employeeid )
- And j.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where j.employeeid = t.employeeid And j.requirementname = t.requirementname)
- And j.requirementname not in (select distinct k.requirementname from ehr_compliancedb.completiondates k Where k.employeeid = j.employeeid)
-
- group by j.requirementname,j.employeeid
-
- order by employeeid,requirementname, mostrecentcompleted_date desc
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-
- RETURN 0
-
-
-Err_Proc:
-
- RETURN 1
-
-
-END
-
-GO
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.010-24.011.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.010-24.011.sql
deleted file mode 100644
index 8452ee8c8..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.010-24.011.sql
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-EXEC core.fn_dropifexists 'p_ComplianceProcedureOverDueSoon_Process', 'onprc_ehr_compliancedb', 'PROCEDURE';
-GO
-
--- Author: R. Blasa
--- Created: 9-20-2024
-
-/*
-**
-** Created by
-** Blasa 9-20-2024 Created a storedprocedure to create a static set of data from
-** the ComplianceProcedureRecentTest.sql query
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.p_ComplianceProcedureOverDueSoon_Process
-
-
-AS
-
-
- ----- Reset Reporting table
- Delete onprc_ehr_compliancedb.ComplianceProcedureReport
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-BEGIN
-
- Insert into onprc_ehr_compliancedb.ComplianceProcedureReport
- (
- requirementname,
- employeeid,
- unit,
- category,
- trackingflag,
- email,
- lastname,
- firstname,
- host,
- supervisor,
- trainee_type,
- requirement_name_type,
- times_completed,
- expired_period,
- new_expired_Period,
- mostrecentcompleted_date,
- comment,
- snooze_date,
- months_until_renewal
-
- )
-
-
-
-
-
- select b.requirementname,
- a.employeeid,
- string_agg(a.unit,char(10)) as unit,
- string_agg(a.category,char(10)) as category,
- string_agg(b.trackingflag,char(10)) as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = b.requirementname) as requirement_type,
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as times_Completed,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as mostrecentcompleted_date,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
-
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate()) ) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) )
-
-
- ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate()) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS Float) AS MonthsUntilRenewal
-
-
-
- from ehr_Compliancedb.employeeperunit a ,ehr_compliancedb.requirementspercategory b
- where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
- group by b.requirementname,a.employeeid
-
- union
-
- select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'None' as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = a.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = a.requirementname) as requirement_type, ----- type trainee, or trainer
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select distinct string_agg(yy.comment, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select distinct string_agg(yy.snooze_date, char(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) )
-
-
- ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.completiondates a
- where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where a.employeeid = p.employeeid And p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
- group by a.requirementname,a.employeeid
-
- union
-
- -- Additional requirements for employees that have not completed training, but is required
- select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- string_agg(j.trackingflag,char(10)) as trackingflag,
- (select h.email from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as email,
- (select h.lastname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as lastname,
- (select h.firstname from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as firstname,
- (select h.majorudds from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as host,
- (select h.supervisor from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as supervisor,
- (select h.type from ehr_compliancedb.employees h where h.employeeid = j.employeeid) as trainee_type, ----- type trainee, or trainer
- (select h.type from ehr_compliancedb.Requirements h where h.requirementname = j.requirementname) as requirement_type, ----- type trainee, or trainer
- 0 as timesCompleted,
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
- ( select (datediff(month,max(pq.date), tt.reviewdate) )from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (COALESCE(tt.expireperiod,0)) > (datediff(month,max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
- null as MostRecentDate,
- '' as comment,
- null as snooze_date,
- CAST(
- CASE
-
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
- WHEN ( select (COALESCE(tt.expireperiod,0)) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) ) > 0 THEN
-
- ( select (datediff(month,max(pq.date), tt.reviewdate) - ( datediff(month,max(pq.date), getdate())) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.reviewdate) > (max(pq.date)) )
-
-
- ELSE ( select (COALESCE(tt.expireperiod,0)) - ( datediff(month,max(pq.date), getdate())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
-
- END AS FLOAT) AS MonthsUntilRenewal
-
-
-
- from onprc_ehr_compliancedb.RequirementsPerEmployee j
- Where j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where j.employeeid = p.employeeid And p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
- And j.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And j.employeeid = k.employeeid )
- And j.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where j.employeeid = t.employeeid And j.requirementname = t.requirementname)
- And j.requirementname not in (select distinct k.requirementname from ehr_compliancedb.completiondates k Where k.employeeid = j.employeeid)
-
- group by j.requirementname,j.employeeid
-
- order by employeeid,requirementname, mostrecentcompleted_date desc
-
-
- If @@Error <> 0
- GoTo Err_Proc
-
-
-
-
- RETURN 0
-
-
-Err_Proc:
-
- RETURN 1
-
-
-END
-
-GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.011-24.012.sql b/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.011-24.012.sql
deleted file mode 100644
index 2c97c39ae..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/schemas/dbscripts/sqlserver/onprc_ehr_compliancedb-24.011-24.012.sql
+++ /dev/null
@@ -1,65 +0,0 @@
-EXEC core.fn_dropifexists 'p_ComplianceAccesscontainerUpdate', 'onprc_ehr_compliancedb', 'PROCEDURE';
-GO
-
--- Author: R. Blasa
--- Created: 10-2-2024
-
-/*
-**
-** Created by
-** Blasa 9-5-2025 Storedprocedure to update Compliance Access contaimer values and update
-** Completion date records
-** .
-**
-**
-**
-*/
-
-CREATE Procedure onprc_ehr_compliancedb.p_ComplianceAccesscontainerUpdate
-
-
- AS
-
-
-
-BEGIN
-
- ------ Update container value and include as part of the main Compliance module
-
-If exists(Select * from ehr_Compliancedb.CompletionDates ss where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' )
-BEGIN
-
-Update ss
-set ss.container = 'CD170458-C55F-102F-9907-5107380A54BE' ----Compliance folder on Prime Production
-
- from ehr_Compliancedb.CompletionDates ss
-Where ss.container = 'F1C05E2D-618D-103D-ABC9-9814909BFFCD' ---Compliance Access folder on Prime Production
-
- If @@Error <> 0
- GoTo Err_Proc
-
-END
-
-ELSE ------ No new entries exit
-BEGIN
-
-GOTO No_Records
-
-END
-
-
-
-
-No_Records:
-
- RETURN 0
-
-
-Err_Proc:
- -------Error Generated, Transfer process stopped
- RETURN 1
-
-
-END
-
-GO
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/src/org/labkey/ONPRCEHR_ComplianceDB/ONPRC_EHR_ComplianceDBModule.java b/ONPRC_EHR_ComplianceDB/src/org/labkey/ONPRCEHR_ComplianceDB/ONPRC_EHR_ComplianceDBModule.java
index e03bd4352..adc19a67c 100644
--- a/ONPRC_EHR_ComplianceDB/src/org/labkey/ONPRCEHR_ComplianceDB/ONPRC_EHR_ComplianceDBModule.java
+++ b/ONPRC_EHR_ComplianceDB/src/org/labkey/ONPRCEHR_ComplianceDB/ONPRC_EHR_ComplianceDBModule.java
@@ -55,8 +55,8 @@ public String getName()
@Override
public Double getSchemaVersion()
{
- return 25.001;
- } //Modified: 9-8-025
+ return 26.000;
+ }
@Override
public @NotNull Collection getSchemaNames()
@@ -64,12 +64,6 @@ public Double getSchemaVersion()
return Collections.singleton(ONPRC_EHR_ComplianceDBSchema.NAME);
}
- @Override
- public boolean hasScripts()
- {
- return true;
- }
-
@Override
protected void registerSchemas()
{
diff --git a/extscheduler/module.properties b/extscheduler/module.properties
index cfa1b282e..85ac54a44 100644
--- a/extscheduler/module.properties
+++ b/extscheduler/module.properties
@@ -1,5 +1,5 @@
Name: extscheduler
ModuleClass: org.labkey.extscheduler.ExtSchedulerModule
-SupportedDatabases: mssql
+SupportedDatabases: mssql, pgsql
RequiredServerVersion: 15.2
-ManageVersion: false
+ManageVersion: true
diff --git a/extscheduler/resources/schemas/dbscripts/postgresql/extscheduler-0.000-25.000.sql b/extscheduler/resources/schemas/dbscripts/postgresql/extscheduler-0.000-25.000.sql
new file mode 100644
index 000000000..b49efd0ae
--- /dev/null
+++ b/extscheduler/resources/schemas/dbscripts/postgresql/extscheduler-0.000-25.000.sql
@@ -0,0 +1,68 @@
+CREATE SCHEMA extscheduler;
+
+CREATE TABLE extscheduler.Resources
+(
+ Id SERIAL NOT NULL,
+ Name VARCHAR(255) NOT NULL,
+ Color VARCHAR(20),
+ Room VARCHAR(255),
+ Bldg VARCHAR(255),
+ Instance VARCHAR(50),
+
+ Container ENTITYID NOT NULL,
+ CreatedBy USERID,
+ Created TIMESTAMP,
+ ModifiedBy USERID,
+ Modified TIMESTAMP,
+
+ CONSTRAINT PK_resources PRIMARY KEY (Id),
+ CONSTRAINT UQ_resources_ContainerName UNIQUE (Container, Name)
+);
+
+CREATE TABLE extscheduler.Events
+(
+ Id SERIAL NOT NULL,
+ ResourceId INT NOT NULL,
+ Name VARCHAR(255),
+ StartDate TIMESTAMP NOT NULL,
+ EndDate TIMESTAMP NOT NULL,
+ UserId USERID NOT NULL,
+ Alias VARCHAR(25),
+ Quantity INT,
+ Comments VARCHAR(4000),
+
+ Container ENTITYID NOT NULL,
+ CreatedBy USERID,
+ Created TIMESTAMP,
+ ModifiedBy USERID,
+ Modified TIMESTAMP,
+
+ CONSTRAINT PK_events PRIMARY KEY (Id),
+ CONSTRAINT FK_events_ResourceId FOREIGN KEY (ResourceId) REFERENCES extscheduler.Resources(Id),
+ CONSTRAINT CHK_event_DateRangeValid CHECK (StartDate <= EndDate)
+);
+
+CREATE OR REPLACE FUNCTION extscheduler.tr_overlappingdateranges() RETURNS TRIGGER AS $$
+BEGIN
+ IF EXISTS(
+ SELECT 1 FROM extscheduler.events R
+ LEFT JOIN (
+ SELECT ObjectId, Value FROM prop.Properties
+ JOIN prop.PropertySets ON PropertySets.Set = Properties.Set
+ WHERE Name = 'ExtSchedulerAllowEventOverlap'
+ ) P ON R.Container = P.ObjectId
+ WHERE (P.Value IS NULL OR P.Value = 'false') AND (
+ (R.Container = NEW.Container AND R.ResourceId = NEW.ResourceId AND R.StartDate < NEW.EndDate AND NEW.StartDate < R.EndDate)
+ AND NOT (R.Id = NEW.Id)
+ )
+ ) THEN
+ RAISE EXCEPTION 'Start/End date ranges may not overlap for the same resource.';
+ END IF;
+ RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE TRIGGER TR_OverlappingDateRanges
+ BEFORE INSERT OR UPDATE ON extscheduler.events
+ FOR EACH ROW
+ EXECUTE FUNCTION extscheduler.tr_overlappingdateranges();
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-0.000-25.000.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-0.000-25.000.sql
new file mode 100644
index 000000000..e665d02d7
--- /dev/null
+++ b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-0.000-25.000.sql
@@ -0,0 +1,568 @@
+CREATE SCHEMA extscheduler;
+GO
+
+CREATE TABLE extscheduler.Resources
+(
+ Id INT IDENTITY(1,1) NOT NULL,
+ Name VARCHAR(255) NOT NULL,
+ Color VARCHAR(20),
+
+ Container ENTITYID NOT NULL,
+ CreatedBy USERID,
+ Created DATETIME,
+ ModifiedBy USERID,
+ Modified DATETIME,
+
+ CONSTRAINT PK_resources PRIMARY KEY (Id),
+ CONSTRAINT UQ_resources_ContainerName UNIQUE (Container, Name)
+);
+
+CREATE TABLE extscheduler.Events
+(
+ Id INT IDENTITY(1,1) NOT NULL,
+ ResourceId INT NOT NULL,
+ Name VARCHAR(255) NOT NULL,
+ StartDate DATETIME NOT NULL,
+ EndDate DATETIME NOT NULL,
+ UserId USERID NOT NULL,
+
+ Container ENTITYID NOT NULL,
+ CreatedBy USERID,
+ Created DATETIME,
+ ModifiedBy USERID,
+ Modified DATETIME,
+
+ CONSTRAINT PK_events PRIMARY KEY (Id),
+ CONSTRAINT FK_events_ResourceId FOREIGN KEY (ResourceId) REFERENCES extscheduler.resources(Id),
+ CONSTRAINT UQ_events_ContainerResourceName UNIQUE (Container, ResourceId, Name)
+);
+
+/* 15.xxx SQL scripts */
+
+ALTER TABLE extscheduler.Resources Add Room VARCHAR(255);
+ALTER TABLE extscheduler.Resources Add Bldg VARCHAR (255);
+
+
+ALTER TABLE extscheduler.Events ADD Alias VARCHAR(25);
+
+CREATE TABLE extscheduler.users
+(
+ Id INT IDENTITY(1,1) NOT NULL,
+ PrimeUserID USERID NOT NULL,
+ FirstName VARCHAR(255) NOT NULL,
+ LastName Varchar(255) NOT NULL,
+ Email VARCHAR(255) NOT NULL,
+ Phone VARCHAR(255),
+ Department VARCHAR(255),
+ Lab_FirstName VARCHAR(255),
+ Lab_LastName VARCHAR(255),
+ FiscalAuthority_Name VARCHAR(255),
+ FiscalAuthority_Phone VARCHAR(255),
+ SecurityLevel VARCHAR(255),
+ Container ENTITYID NOT NULL,
+ CreatedBy USERID,
+ Created DATETIME,
+ ModifiedBy USERID,
+ Modified DATETIME,
+
+ CONSTRAINT PK_users PRIMARY KEY (Id),
+ CONSTRAINT FK_users_PrimeUserID FOREIGN KEY (PrimeUserID) REFERENCES core.Usersdata(UserId),
+ CONSTRAINT UQ_users_ContainerPrimeUserID UNIQUE (Container, PrimeUserID)
+);
+
+DROP TABLE extscheduler.users;
+
+
+CREATE TABLE extscheduler.users
+(
+ Id INT IDENTITY(1,1) NOT NULL,
+ PrimeUserID USERID NOT NULL,
+ FirstName VARCHAR(255) NOT NULL,
+ LastName Varchar(255) NOT NULL,
+ Email VARCHAR(255) NOT NULL,
+ Phone VARCHAR(255),
+ Department VARCHAR(255),
+ Lab_FirstName VARCHAR(255),
+ Lab_LastName VARCHAR(255),
+ FiscalAuthority_Name VARCHAR(255),
+ FiscalAuthority_Phone VARCHAR(255),
+ SecurityLevel VARCHAR(255),
+ Container ENTITYID NOT NULL,
+ CreatedBy USERID,
+ Created DATETIME,
+ ModifiedBy USERID,
+ Modified DATETIME,
+
+ CONSTRAINT PK_users PRIMARY KEY (Id),
+ CONSTRAINT FK_users_PrimeUserID FOREIGN KEY (PrimeUserID) REFERENCES core.Usersdata(UserId),
+ CONSTRAINT UQ_users_ContainerPrimeUserID UNIQUE (Container, PrimeUserID)
+);
+
+ALTER TABLE extscheduler.events DROP CONSTRAINT UQ_events_ContainerResourceName;
+ALTER TABLE extscheduler.events ADD CONSTRAINT CHK_event_DateRangeValid CHECK (StartDate <= EndDate);
+
+GO
+
+CREATE TRIGGER TR_OverlappingDateRanges ON extscheduler.events FOR INSERT, UPDATE AS
+BEGIN
+ IF EXISTS(
+ SELECT 1 FROM extscheduler.events R
+ INNER JOIN inserted I
+ ON (
+ (R.Container = I.Container AND R.ResourceId = I.ResourceId AND R.StartDate < I.EndDate AND I.StartDate < R.EndDate)
+ AND NOT (R.Container = I.Container AND R.ResourceId = I.ResourceId AND R.StartDate = I.StartDate AND I.EndDate = R.EndDate)
+ )
+ )
+ BEGIN
+ RAISERROR('Start/End date ranges may not overlap for the same resource.', 16, 1)
+ ROLLBACK
+ END
+END
+
+GO
+
+ALTER TABLE extscheduler.events ALTER COLUMN Name VARCHAR(255) NULL;
+
+DROP TABLE extscheduler.users;
+
+GO
+
+ALTER TRIGGER extscheduler.TR_OverlappingDateRanges ON extscheduler.Events FOR INSERT, UPDATE AS
+BEGIN
+ IF EXISTS(
+ SELECT 1 FROM extscheduler.events R
+ INNER JOIN inserted I
+ ON (
+ (R.Container = I.Container AND R.ResourceId = I.ResourceId AND R.StartDate < I.EndDate AND I.StartDate < R.EndDate)
+ AND NOT (R.Id = I.Id)
+ )
+ )
+ BEGIN
+ RAISERROR('Start/End date ranges may not overlap for the same resource.', 16, 1)
+ ROLLBACK
+ END
+END
+
+GO
+
+ALTER TABLE extscheduler.Events ADD Quantity INT;
+
+ALTER TABLE extscheduler.Events ADD Comments VARCHAR(255);
+
+GO
+
+ALTER TRIGGER extscheduler.TR_OverlappingDateRanges ON extscheduler.Events FOR INSERT, UPDATE AS
+BEGIN
+ IF EXISTS(
+ SELECT 1 FROM extscheduler.events R
+ LEFT JOIN (
+ SELECT ObjectId, Value FROM prop.Properties
+ JOIN prop.PropertySets ON PropertySets."Set" = Properties."Set"
+ WHERE Name = 'ExtSchedulerAllowEventOverlap'
+ ) P ON R.Container = P.ObjectId
+ INNER JOIN inserted I
+ ON (P.Value IS NULL OR P.Value = 'false') AND (
+ (R.Container = I.Container AND R.ResourceId = I.ResourceId AND R.StartDate < I.EndDate AND I.StartDate < R.EndDate)
+ AND NOT (R.Id = I.Id)
+ )
+ )
+ BEGIN
+ RAISERROR('Start/End date ranges may not overlap for the same resource.', 16, 1)
+ ROLLBACK
+ END
+END
+
+GO
+
+/* 20.xxx SQL scripts */
+
+/*
+Created: 2020-05-07
+Created by jonesga
+Purpose: Update of Comments field of scheduler per user request
+
+*/
+ALTER TABLE extscheduler.Events ALTER COLUMN Comments NVARCHAR(4000);
+
+/*
+Created: 2020-05-07
+Created by jonesga
+Purpose: Dataset to mimic DateRange from Labkey for SCheduler actionin SQL
+
+*/
+EXEC core.fn_dropifexists 'DateParts','extScheduler','TABLE';
+GO
+
+CREATE TABLE extScheduler.dateParts
+(date datetime,
+dateOnly datetime,
+DayOfYear int,
+DayofMonth int,
+DayofWeek int,
+DayName varchar(20),
+
+WeekofMonth int,
+WeekofYear int,
+ Month int,
+ year int)
+
+Go
+
+Insert into extScheduler.DateParts
+ (Date,
+ dateonly,
+ DayOfYear,
+ DayofMonth,
+ DayofWeek,
+ DayName,
+ WeekofMonth,
+ WeekofYear,
+ Month,
+ year)
+Select
+
+ i.NDate,
+ CAST(i.Ndate as date) as dateOnly,
+ cast(datepart(dy,i.Ndate) as integer) as DayOfYear,
+ cast(datepart(dd,i.Ndate) as integer) as DayOfMonth,
+ cast(datepart(dw,i.Ndate) as integer) as DayOfWeek,
+ cast(dateName(dd,i.Ndate) as VarChar(20)) as DayName,
+ (cast(datepart(dd,i.Ndate) as integer)/ 7) as WeekofMonth,
+ cast(datepart(wk,i.Ndate) as integer) as WeekofYear,
+ cast(datepart(mm,i.Ndate) as integer) as Month,
+ cast(datepart(yyyy,i.Ndate) as integer) as Year
+FROM (SELECT DateAdd(dd, i.value, '5/1/2020') as NDate FROM ldk.integers i)i
+Where i.nDate <= '4/20/2021'
+
+-- ================================================
+-- Template generated from Template Explorer using:
+-- Create Procedure (New Menu).SQL
+--
+-- Use the Specify Values for Template Parameters
+-- command (Ctrl-Shift-M) to fill in the parameter
+-- values below.
+--
+-- This block of comments will not be included in
+-- the definition of the procedure.
+-- ================================================
+-- =============================================
+-- Author: jonesga@ohsu.edu
+-- Create date: 2020-05-13
+-- Description: PRocedure to Block out Scheduling for Covid19 testing for 3:30 to 7 PM on Monday and Friday
+-- =============================================
+EXEC core.fn_dropifexists 'extBlockOutEvening', 'extscheduler', 'PROCEDURE'
+GO
+
+CREATE PROCEDURE extscheduler.extBlockOutEvening
+ -- Add the parameters for the stored procedure here
+ @Month INTEGER, @ResourceID INTEGER
+AS
+BEGIN
+
+ INSERT INTO [extscheduler].[Events]
+ ([ResourceId]
+ ,[Name]
+ ,[StartDate]
+ ,[EndDate]
+ ,[UserId]
+ ,[Container]
+ ,[CreatedBy]
+ ,[Created]
+ ,[Quantity]
+ ,[Comments])
+
+ SELECT @ResourceID
+ ,'No Covid-19 Testing'
+ ,DateAdd(hh,1530,c.date) as StartDate
+ ,DateAdd(hh,19,c.date) as EndDate
+ ,1003
+ ,'5C3C9FF8-6BCF-1038-930A-7D62F3A605B4'
+ ,1003
+ ,GetDate()
+ ,1
+ ,'Insert by ISE'
+ FROM [Labkey].[extscheduler].[dateParts] c
+ where c.dayofWeek in (2,6) and c.Month = @Month
+--Days of Week start with Sunday
+
+
+
+END
+GO
+
+/****** Object: StoredProcedure [extscheduler].[extBlockOutMorning] Script Date: 5/13/2020 6:10:00 AM ******/
+-- ================================================
+-- Template generated from Template Explorer using:
+-- Create Procedure (New Menu).SQL
+--
+-- Use the Specify Values for Template Parameters
+-- command (Ctrl-Shift-M) to fill in the parameter
+-- values below.
+--
+-- This block of comments will not be included in
+-- the definition of the procedure.
+-- ================================================
+-- =============================================
+-- Author: jonesga@ohsu.edu
+-- Create date: 2020-05-13
+-- Description: PRocedure to Block out Scheduling for Covid19 testing for 7 to 8 on Monday and Friday
+-- =============================================
+EXEC core.fn_dropifexists 'extBlockOutMorning', 'extscheduler', 'PROCEDURE'
+GO
+
+CREATE PROCEDURE [extscheduler].[extBlockOutMorning]
+ -- Add the parameters for the stored procedure here
+ @Month INTEGER, @ResourceID INTEGER
+AS
+BEGIN
+
+ INSERT INTO [extscheduler].[Events]
+ ([ResourceId]
+ ,[Name]
+ ,[StartDate]
+ ,[EndDate]
+ ,[UserId]
+ ,[Container]
+ ,[CreatedBy]
+ ,[Created]
+ ,[Quantity]
+ ,[Comments])
+
+ SELECT @ResourceID
+ ,'No Covid-19 Testing'
+ ,DateAdd(hh,7,c.date) as StartDate
+ ,DateAdd(hh,8,c.date) as EndDate
+ ,1003
+ ,'5C3C9FF8-6BCF-1038-930A-7D62F3A605B4'
+ ,1003
+ ,GetDate()
+ ,1
+ ,'Insert by ISE'
+ FROM [Labkey].[extscheduler].[dateParts] c
+ where c.dayofWeek in (2,6) and c.Month = @Month
+--Days of Week start with Sunday
+
+END
+
+GO
+
+-- /****** Object: StoredProcedure [extscheduler].[extBlockOutDays] Script Date: 5/13/2020 6:12:06 AM ******/
+-- ================================================
+-- Template generated from Template Explorer using:
+-- Create Procedure (New Menu).SQL
+--
+-- Use the Specify Values for Template Parameters
+-- command (Ctrl-Shift-M) to fill in the parameter
+-- values below.
+--
+-- This block of comments will not be included in
+-- the definition of the procedure.
+-- ================================================
+-- =============================================
+-- Author: jonesga@ohsu.edu
+-- Create date: 2020-05-13
+-- Description: PRocedure to Block out Scheduling for Covid19 testing for all days except Monday and Friday
+-- =============================================
+EXEC core.fn_dropifexists 'extBlockOutDays', 'extscheduler', 'PROCEDURE'
+GO
+
+CREATE PROCEDURE [extscheduler].[extBlockOutDays]
+ -- Add the parameters for the stored procedure here
+ @Month INTEGER, @ResourceID INTEGER
+AS
+BEGIN
+
+ INSERT INTO [extscheduler].[Events]
+ ([ResourceId]
+ ,[Name]
+ ,[StartDate]
+ ,[EndDate]
+ ,[UserId]
+ ,[Container]
+ ,[CreatedBy]
+ ,[Created]
+ ,[Quantity]
+ ,[Comments])
+
+ SELECT @ResourceID
+ ,'No Covid-19 Testing'
+ ,DateAdd(hh,7,c.date) as StartDate
+ ,DateAdd(hh,19,c.date) as EndDate
+ ,1003
+ ,'5C3C9FF8-6BCF-1038-930A-7D62F3A605B4'
+ ,1003
+ ,GetDate()
+ ,1
+ ,'Insert by ISE'
+ FROM [Labkey].[extscheduler].[dateParts] c
+ where c.dayofWeek in (1,3,4,5,7) and c.Month = @Month
+--Days of Week start with Sunday
+
+END
+
+GO
+
+EXEC core.fn_dropifexists 'vw_Covid19Research', 'extScheduler', 'VIEW', NULL;
+GO
+
+CREATE VIEW extScheduler.vw_Covid19Research AS
+SELECT extscheduler.Events.Id AS SChedulerID, extscheduler.Events.ResourceId, extscheduler.Resources.Name AS ResourceName, extscheduler.Events.Name, extscheduler.Events.StartDate, extscheduler.Events.UserId,
+ extscheduler.Events.CreatedBy, extscheduler.Events.Created, extscheduler.Events.Quantity, core.UsersData.IM AS EmployeeID
+FROM extscheduler.Events LEFT OUTER JOIN
+ core.UsersData ON extscheduler.Events.UserId = core.UsersData.UserId LEFT OUTER JOIN
+ extscheduler.Resources ON extscheduler.Events.ResourceId = extscheduler.Resources.Id
+WHERE (extscheduler.Events.ResourceId = 67);
+
+GO
+
+EXEC core.fn_dropifexists 'vw_Covid19DCMSchedule', 'extScheduler', 'VIEW', NULL;
+GO
+
+CREATE VIEW extScheduler.vw_Covid19DCMSchedule AS
+SELECT extscheduler.Events.Id AS SChedulerID, extscheduler.Events.ResourceId, extscheduler.Resources.Name AS ResourceName, extscheduler.Events.Name, extscheduler.Events.StartDate, extscheduler.Events.UserId,
+ extscheduler.Events.CreatedBy, extscheduler.Events.Created, extscheduler.Events.Quantity, core.UsersData.IM AS EmployeeID
+ FROM extscheduler.Events LEFT OUTER JOIN
+ core.UsersData ON extscheduler.Events.UserId = core.UsersData.UserId LEFT OUTER JOIN
+ extscheduler.Resources ON extscheduler.Events.ResourceId = extscheduler.Resources.Id
+ WHERE (extscheduler.Resources.Name LIKE 'DCM%');
+
+GO
+
+/****** Object: Table [list].[c10437d746_covid19testing] Script Date: 9/16/2020 9:19:28 AM ******/
+EXEC core.fn_dropifexists 'Covid19Testing', 'extScheduler', 'TABLE', NULL;
+GO
+
+CREATE TABLE [extScheduler].[Covid19Testing](
+ [container] [dbo].[ENTITYID] NOT NULL,
+ [entityId] [dbo].[ENTITYID] NOT NULL,
+ [lastIndexed] [datetime] NULL,
+ [createdBy] [int] NULL,
+ [modified] [datetime] NULL,
+ [modifiedBy] [int] NULL,
+ [created] [datetime] NULL,
+ [Key] [int] IDENTITY(1,1) NOT NULL,
+ [SchedulerID] [int] NULL,
+ [ResourceID] [int] NULL,
+ [UserName] [nvarchar](4000) NULL,
+ [UserID] [int] NULL,
+ [EmployeeID] [nvarchar](4000) NULL,
+ [ScheduledDate] [datetime] NULL,
+ [ScheduledTime] [datetime] NULL,
+ [Create] [datetime] NULL,
+ [SampleDate] [nvarchar](4000) NULL,
+ [CreatedB] [nvarchar](4000) NULL,
+ [ComplianceUpdated] [bit] NULL,
+ CONSTRAINT [covid19testing_pk] PRIMARY KEY CLUSTERED
+(
+[Key] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+ ) ON [PRIMARY]
+ GO
+
+/****** Object: Table [list].[c10437d746_covid19testing] Script Date: 9/16/2020 9:19:28 AM ******/
+EXEC core.fn_dropifexists 'Covid19Testing', 'extScheduler', 'TABLE', NULL;
+GO
+
+CREATE TABLE [extScheduler].[Covid19Testing](
+ [container] [dbo].[ENTITYID] NOT NULL,
+ [entityId] [dbo].[ENTITYID] NOT NULL,
+ [lastIndexed] [datetime] NULL,
+ [createdBy] [int] NULL,
+ [modified] [datetime] NULL,
+ [modifiedBy] [int] NULL,
+ [created] [datetime] NULL,
+ [Key] [int] IDENTITY(1,1) NOT NULL,
+ [SchedulerID] [int] NULL,
+ [ResourceID] [int] NULL,
+ [UserName] [nvarchar](4000) NULL,
+ [UserID] [int] NULL,
+ [EmployeeID] [nvarchar](4000) NULL,
+ [ScheduledDate] [datetime] NULL,
+ [ScheduledTime] [datetime] NULL,
+ [Create] [datetime] NULL,
+ [SampleDate] [nvarchar](4000) NULL,
+ [CreatedB] [nvarchar](4000) NULL,
+ [ComplianceUpdated] [bit] NULL,
+ CONSTRAINT [covid19testingKey_pk] PRIMARY KEY CLUSTERED
+(
+[Key] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+ ) ON [PRIMARY]
+ GO
+
+EXEC core.fn_dropifexists 'TempScheduler', 'extScheduler', 'TABLE', NULL;
+GO
+
+CREATE TABLE [extscheduler].[TempScheduler](
+ [Searchkey] [int] IDENTITY(100,1) NOT NULL,
+ [usernames] [varchar](500) NULL,
+ [EventId] [varchar](max) NULL,
+ [StartDate] [smalldatetime] NULL,
+ [created] [smalldatetime] NULL
+ ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+ GO
+
+EXEC core.fn_dropifexists 'TempCoV19Interim', 'extScheduler', 'TABLE', NULL;
+GO
+
+/****** Object: Table [extscheduler].[TempScheduler]
+ ONCE TESTED CHAN GE TO labkey_public
+ Script Date: 10/29/2020 8:19:18 AM ******/
+
+CREATE TABLE [extscheduler].[TempCoV19Interim](
+ [EventId] [varchar](max) NULL,
+ [UserName] [nvarchar](1000) NULL,
+ [container] [varchar](max) NULL,
+ [notes] nvarchar(100) null
+ ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+ GO
+
+EXEC core.fn_dropifexists 'TempCoV19Interim', 'extScheduler', 'TABLE', NULL;
+GO
+
+CREATE TABLE [extscheduler].[TempCoV19Interim](
+ [EventId] [varchar](max) NULL,
+ [UserName] [nvarchar](1000) NULL,
+ [container] [varchar](max) NULL
+ ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
+ GO
+
+EXEC core.fn_dropifexists 'TempCoV19Final', 'extScheduler', 'TABLE', NULL;
+ GO
+
+CREATE TABLE [extscheduler].[TempCoV19Final](
+ [container] [uniqueidentifier] NOT NULL,
+ [UserName] [nvarchar](4000) NULL,
+ [UserID] [int] NULL,
+ [EventID] [int] NULL,
+ [StartDate] [smalldatetime] NULL,
+ [EmployeeID] [nvarchar](4000) NULL,
+ [Created] [smalldatetime] NULL
+ ) ON [PRIMARY]
+ GO
+
+/* 21.xxx SQL scripts */
+
+ALTER TABLE extscheduler.Resources ADD Instance varchar(50);
+
+/* 23.xxx SQL scripts */
+
+EXEC core.fn_dropifexists 'TempCoV19Final', 'extScheduler', 'TABLE', NULL;
+ GO
+EXEC core.fn_dropifexists 'covid19testing', 'extScheduler', 'TABLE', NULL;
+GO
+
+EXEC core.fn_dropifexists 'tempscheduler', 'extScheduler', 'TABLE', NULL;
+GO
+
+EXEC core.fn_dropifexists 'TempCoV19Interim', 'extScheduler', 'TABLE', NULL;
+GO
+
+EXEC core.fn_dropifexists 'vw_Covid19Research', 'extScheduler', 'VIEW', NULL;
+GO
+
+EXEC core.fn_dropifexists 'vw_covid19dcmschedule', 'extScheduler', 'VIEW', NULL;
+GO
+
+EXEC core.fn_dropifexists 'vw_Covid19DCMDaily', 'extScheduler', 'VIEW', NULL;
+GO
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.20-15.21.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.20-15.21.sql
deleted file mode 100644
index a42290b84..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.20-15.21.sql
+++ /dev/null
@@ -1,38 +0,0 @@
-CREATE SCHEMA extscheduler;
-GO
-
-CREATE TABLE extscheduler.Resources
-(
- Id INT IDENTITY(1,1) NOT NULL,
- Name VARCHAR(255) NOT NULL,
- Color VARCHAR(20),
-
- Container ENTITYID NOT NULL,
- CreatedBy USERID,
- Created DATETIME,
- ModifiedBy USERID,
- Modified DATETIME,
-
- CONSTRAINT PK_resources PRIMARY KEY (Id),
- CONSTRAINT UQ_resources_ContainerName UNIQUE (Container, Name)
-);
-
-CREATE TABLE extscheduler.Events
-(
- Id INT IDENTITY(1,1) NOT NULL,
- ResourceId INT NOT NULL,
- Name VARCHAR(255) NOT NULL,
- StartDate DATETIME NOT NULL,
- EndDate DATETIME NOT NULL,
- UserId USERID NOT NULL,
-
- Container ENTITYID NOT NULL,
- CreatedBy USERID,
- Created DATETIME,
- ModifiedBy USERID,
- Modified DATETIME,
-
- CONSTRAINT PK_events PRIMARY KEY (Id),
- CONSTRAINT FK_events_ResourceId FOREIGN KEY (ResourceId) REFERENCES extscheduler.resources(Id),
- CONSTRAINT UQ_events_ContainerResourceName UNIQUE (Container, ResourceId, Name)
-);
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.21-15.22.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.21-15.22.sql
deleted file mode 100644
index 201d67257..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.21-15.22.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-
-ALTER TABLE extscheduler.Resources Add Room VARCHAR(255);
-ALTER TABLE extscheduler.Resources Add Bldg VARCHAR (255);
-
-
-ALTER TABLE extscheduler.Events ADD Alias VARCHAR(25);
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.22-15.23.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.22-15.23.sql
deleted file mode 100644
index bdcdf797b..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.22-15.23.sql
+++ /dev/null
@@ -1,24 +0,0 @@
-CREATE TABLE extscheduler.users
-(
- Id INT IDENTITY(1,1) NOT NULL,
- PrimeUserID USERID NOT NULL,
- FirstName VARCHAR(255) NOT NULL,
- LastName Varchar(255) NOT NULL,
- Email VARCHAR(255) NOT NULL,
- Phone VARCHAR(255),
- Department VARCHAR(255),
- Lab_FirstName VARCHAR(255),
- Lab_LastName VARCHAR(255),
- FiscalAuthority_Name VARCHAR(255),
- FiscalAuthority_Phone VARCHAR(255),
- SecurityLevel VARCHAR(255),
- Container ENTITYID NOT NULL,
- CreatedBy USERID,
- Created DATETIME,
- ModifiedBy USERID,
- Modified DATETIME,
-
- CONSTRAINT PK_users PRIMARY KEY (Id),
- CONSTRAINT FK_users_PrimeUserID FOREIGN KEY (PrimeUserID) REFERENCES core.Usersdata(UserId),
- CONSTRAINT UQ_users_ContainerPrimeUserID UNIQUE (Container, PrimeUserID)
-);
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.23-15.24.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.23-15.24.sql
deleted file mode 100644
index 37b9da6a9..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.23-15.24.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-DROP TABLE extscheduler.users;
-
-
-CREATE TABLE extscheduler.users
-(
- Id INT IDENTITY(1,1) NOT NULL,
- PrimeUserID USERID NOT NULL,
- FirstName VARCHAR(255) NOT NULL,
- LastName Varchar(255) NOT NULL,
- Email VARCHAR(255) NOT NULL,
- Phone VARCHAR(255),
- Department VARCHAR(255),
- Lab_FirstName VARCHAR(255),
- Lab_LastName VARCHAR(255),
- FiscalAuthority_Name VARCHAR(255),
- FiscalAuthority_Phone VARCHAR(255),
- SecurityLevel VARCHAR(255),
- Container ENTITYID NOT NULL,
- CreatedBy USERID,
- Created DATETIME,
- ModifiedBy USERID,
- Modified DATETIME,
-
- CONSTRAINT PK_users PRIMARY KEY (Id),
- CONSTRAINT FK_users_PrimeUserID FOREIGN KEY (PrimeUserID) REFERENCES core.Usersdata(UserId),
- CONSTRAINT UQ_users_ContainerPrimeUserID UNIQUE (Container, PrimeUserID)
-);
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.24-15.25.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.24-15.25.sql
deleted file mode 100644
index 697272a9a..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.24-15.25.sql
+++ /dev/null
@@ -1,20 +0,0 @@
-ALTER TABLE extscheduler.events DROP CONSTRAINT UQ_events_ContainerResourceName;
-ALTER TABLE extscheduler.events ADD CONSTRAINT CHK_event_DateRangeValid CHECK (StartDate <= EndDate);
-
-GO
-
-CREATE TRIGGER TR_OverlappingDateRanges ON extscheduler.events FOR INSERT, UPDATE AS
-BEGIN
- IF EXISTS(
- SELECT 1 FROM extscheduler.events R
- INNER JOIN inserted I
- ON (
- (R.Container = I.Container AND R.ResourceId = I.ResourceId AND R.StartDate < I.EndDate AND I.StartDate < R.EndDate)
- AND NOT (R.Container = I.Container AND R.ResourceId = I.ResourceId AND R.StartDate = I.StartDate AND I.EndDate = R.EndDate)
- )
- )
- BEGIN
- RAISERROR('Start/End date ranges may not overlap for the same resource.', 16, 1)
- ROLLBACK
- END
-END
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.25-15.26.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.25-15.26.sql
deleted file mode 100644
index 678dc8f41..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.25-15.26.sql
+++ /dev/null
@@ -1 +0,0 @@
-ALTER TABLE extscheduler.events ALTER COLUMN Name VARCHAR(255) NULL;
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.26-15.27.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.26-15.27.sql
deleted file mode 100644
index a15bb70fe..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.26-15.27.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-
-DROP TABLE extscheduler.users;
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.27-15.28.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.27-15.28.sql
deleted file mode 100644
index 8a4027489..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.27-15.28.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-
-ALTER TRIGGER extscheduler.TR_OverlappingDateRanges ON extscheduler.Events FOR INSERT, UPDATE AS
-BEGIN
- IF EXISTS(
- SELECT 1 FROM extscheduler.events R
- INNER JOIN inserted I
- ON (
- (R.Container = I.Container AND R.ResourceId = I.ResourceId AND R.StartDate < I.EndDate AND I.StartDate < R.EndDate)
- AND NOT (R.Id = I.Id)
- )
- )
- BEGIN
- RAISERROR('Start/End date ranges may not overlap for the same resource.', 16, 1)
- ROLLBACK
- END
-END
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.28-15.29.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.28-15.29.sql
deleted file mode 100644
index 4ae71d86e..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.28-15.29.sql
+++ /dev/null
@@ -1 +0,0 @@
-ALTER TABLE extscheduler.Events ADD Quantity INT;
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.29-15.30.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.29-15.30.sql
deleted file mode 100644
index 6fc9496ad..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.29-15.30.sql
+++ /dev/null
@@ -1 +0,0 @@
-ALTER TABLE extscheduler.Events ADD Comments VARCHAR(255);
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.30-15.31.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.30-15.31.sql
deleted file mode 100644
index 048fef129..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-15.30-15.31.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-
-ALTER TRIGGER extscheduler.TR_OverlappingDateRanges ON extscheduler.Events FOR INSERT, UPDATE AS
-BEGIN
- IF EXISTS(
- SELECT 1 FROM extscheduler.events R
- LEFT JOIN (
- SELECT ObjectId, Value FROM prop.Properties
- JOIN prop.PropertySets ON PropertySets."Set" = Properties."Set"
- WHERE Name = 'ExtSchedulerAllowEventOverlap'
- ) P ON R.Container = P.ObjectId
- INNER JOIN inserted I
- ON (P.Value IS NULL OR P.Value = 'false') AND (
- (R.Container = I.Container AND R.ResourceId = I.ResourceId AND R.StartDate < I.EndDate AND I.StartDate < R.EndDate)
- AND NOT (R.Id = I.Id)
- )
- )
- BEGIN
- RAISERROR('Start/End date ranges may not overlap for the same resource.', 16, 1)
- ROLLBACK
- END
-END
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.02-20.03.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.02-20.03.sql
deleted file mode 100644
index ae7232d34..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.02-20.03.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
-Created: 2020-05-07
-Created by jonesga
-Purpose: Update of Comments field of scheduler per user request
-
-*/
-ALTER TABLE extscheduler.Events ALTER COLUMN Comments NVARCHAR(4000);
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.502-20.503.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.502-20.503.sql
deleted file mode 100644
index 7ca6608b7..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.502-20.503.sql
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-Created: 2020-05-07
-Created by jonesga
-Purpose: Dataset to mimic DateRange from Labkey for SCheduler actionin SQL
-
-*/
-EXEC core.fn_dropifexists 'DateParts','extScheduler','TABLE';
-GO
-
-CREATE TABLE extScheduler.dateParts
-(date datetime,
-dateOnly datetime,
-DayOfYear int,
-DayofMonth int,
-DayofWeek int,
-DayName varchar(20),
-
-WeekofMonth int,
-WeekofYear int,
- Month int,
- year int)
-
-Go
-
-Insert into extScheduler.DateParts
- (Date,
- dateonly,
- DayOfYear,
- DayofMonth,
- DayofWeek,
- DayName,
- WeekofMonth,
- WeekofYear,
- Month,
- year)
-Select
-
- i.NDate,
- CAST(i.Ndate as date) as dateOnly,
- cast(datepart(dy,i.Ndate) as integer) as DayOfYear,
- cast(datepart(dd,i.Ndate) as integer) as DayOfMonth,
- cast(datepart(dw,i.Ndate) as integer) as DayOfWeek,
- cast(dateName(dd,i.Ndate) as VarChar(20)) as DayName,
- (cast(datepart(dd,i.Ndate) as integer)/ 7) as WeekofMonth,
- cast(datepart(wk,i.Ndate) as integer) as WeekofYear,
- cast(datepart(mm,i.Ndate) as integer) as Month,
- cast(datepart(yyyy,i.Ndate) as integer) as Year
-FROM (SELECT DateAdd(dd, i.value, '5/1/2020') as NDate FROM ldk.integers i)i
-Where i.nDate <= '4/20/2021'
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.503-20.504.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.503-20.504.sql
deleted file mode 100644
index b6b61df4e..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.503-20.504.sql
+++ /dev/null
@@ -1,55 +0,0 @@
--- ================================================
--- Template generated from Template Explorer using:
--- Create Procedure (New Menu).SQL
---
--- Use the Specify Values for Template Parameters
--- command (Ctrl-Shift-M) to fill in the parameter
--- values below.
---
--- This block of comments will not be included in
--- the definition of the procedure.
--- ================================================
--- =============================================
--- Author: jonesga@ohsu.edu
--- Create date: 2020-05-13
--- Description: PRocedure to Block out Scheduling for Covid19 testing for 3:30 to 7 PM on Monday and Friday
--- =============================================
-EXEC core.fn_dropifexists 'extBlockOutEvening', 'extscheduler', 'PROCEDURE'
-GO
-
-CREATE PROCEDURE extscheduler.extBlockOutEvening
- -- Add the parameters for the stored procedure here
- @Month INTEGER, @ResourceID INTEGER
-AS
-BEGIN
-
- INSERT INTO [extscheduler].[Events]
- ([ResourceId]
- ,[Name]
- ,[StartDate]
- ,[EndDate]
- ,[UserId]
- ,[Container]
- ,[CreatedBy]
- ,[Created]
- ,[Quantity]
- ,[Comments])
-
- SELECT @ResourceID
- ,'No Covid-19 Testing'
- ,DateAdd(hh,1530,c.date) as StartDate
- ,DateAdd(hh,19,c.date) as EndDate
- ,1003
- ,'5C3C9FF8-6BCF-1038-930A-7D62F3A605B4'
- ,1003
- ,GetDate()
- ,1
- ,'Insert by ISE'
- FROM [Labkey].[extscheduler].[dateParts] c
- where c.dayofWeek in (2,6) and c.Month = @Month
---Days of Week start with Sunday
-
-
-
-END
-GO
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.504-20.505.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.504-20.505.sql
deleted file mode 100644
index b6de4bbeb..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.504-20.505.sql
+++ /dev/null
@@ -1,55 +0,0 @@
-/****** Object: StoredProcedure [extscheduler].[extBlockOutMorning] Script Date: 5/13/2020 6:10:00 AM ******/
--- ================================================
--- Template generated from Template Explorer using:
--- Create Procedure (New Menu).SQL
---
--- Use the Specify Values for Template Parameters
--- command (Ctrl-Shift-M) to fill in the parameter
--- values below.
---
--- This block of comments will not be included in
--- the definition of the procedure.
--- ================================================
--- =============================================
--- Author: jonesga@ohsu.edu
--- Create date: 2020-05-13
--- Description: PRocedure to Block out Scheduling for Covid19 testing for 7 to 8 on Monday and Friday
--- =============================================
-EXEC core.fn_dropifexists 'extBlockOutMorning', 'extscheduler', 'PROCEDURE'
-GO
-
-CREATE PROCEDURE [extscheduler].[extBlockOutMorning]
- -- Add the parameters for the stored procedure here
- @Month INTEGER, @ResourceID INTEGER
-AS
-BEGIN
-
- INSERT INTO [extscheduler].[Events]
- ([ResourceId]
- ,[Name]
- ,[StartDate]
- ,[EndDate]
- ,[UserId]
- ,[Container]
- ,[CreatedBy]
- ,[Created]
- ,[Quantity]
- ,[Comments])
-
- SELECT @ResourceID
- ,'No Covid-19 Testing'
- ,DateAdd(hh,7,c.date) as StartDate
- ,DateAdd(hh,8,c.date) as EndDate
- ,1003
- ,'5C3C9FF8-6BCF-1038-930A-7D62F3A605B4'
- ,1003
- ,GetDate()
- ,1
- ,'Insert by ISE'
- FROM [Labkey].[extscheduler].[dateParts] c
- where c.dayofWeek in (2,6) and c.Month = @Month
---Days of Week start with Sunday
-
-END
-
-GO
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.505-20.506.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.505-20.506.sql
deleted file mode 100644
index 8ba6347df..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.505-20.506.sql
+++ /dev/null
@@ -1,55 +0,0 @@
--- /****** Object: StoredProcedure [extscheduler].[extBlockOutDays] Script Date: 5/13/2020 6:12:06 AM ******/
--- ================================================
--- Template generated from Template Explorer using:
--- Create Procedure (New Menu).SQL
---
--- Use the Specify Values for Template Parameters
--- command (Ctrl-Shift-M) to fill in the parameter
--- values below.
---
--- This block of comments will not be included in
--- the definition of the procedure.
--- ================================================
--- =============================================
--- Author: jonesga@ohsu.edu
--- Create date: 2020-05-13
--- Description: PRocedure to Block out Scheduling for Covid19 testing for all days except Monday and Friday
--- =============================================
-EXEC core.fn_dropifexists 'extBlockOutDays', 'extscheduler', 'PROCEDURE'
-GO
-
-CREATE PROCEDURE [extscheduler].[extBlockOutDays]
- -- Add the parameters for the stored procedure here
- @Month INTEGER, @ResourceID INTEGER
-AS
-BEGIN
-
- INSERT INTO [extscheduler].[Events]
- ([ResourceId]
- ,[Name]
- ,[StartDate]
- ,[EndDate]
- ,[UserId]
- ,[Container]
- ,[CreatedBy]
- ,[Created]
- ,[Quantity]
- ,[Comments])
-
- SELECT @ResourceID
- ,'No Covid-19 Testing'
- ,DateAdd(hh,7,c.date) as StartDate
- ,DateAdd(hh,19,c.date) as EndDate
- ,1003
- ,'5C3C9FF8-6BCF-1038-930A-7D62F3A605B4'
- ,1003
- ,GetDate()
- ,1
- ,'Insert by ISE'
- FROM [Labkey].[extscheduler].[dateParts] c
- where c.dayofWeek in (1,3,4,5,7) and c.Month = @Month
---Days of Week start with Sunday
-
-END
-
-GO
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.601-20.602.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.601-20.602.sql
deleted file mode 100644
index 91cf20033..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.601-20.602.sql
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2003-2005 Fred Hutchinson Cancer Research Center
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Created 2020-06-09
- * Created by jonesga
- * Purpose - View joining Scheduler Resources, Events and the User Data
- */
-EXEC core.fn_dropifexists 'vw_Covid19Research', 'extScheduler', 'VIEW', NULL;
-GO
-
-CREATE VIEW extScheduler.vw_Covid19Research AS
-SELECT extscheduler.Events.Id AS SChedulerID, extscheduler.Events.ResourceId, extscheduler.Resources.Name AS ResourceName, extscheduler.Events.Name, extscheduler.Events.StartDate, extscheduler.Events.UserId,
- extscheduler.Events.CreatedBy, extscheduler.Events.Created, extscheduler.Events.Quantity, core.UsersData.IM AS EmployeeID
-FROM extscheduler.Events LEFT OUTER JOIN
- core.UsersData ON extscheduler.Events.UserId = core.UsersData.UserId LEFT OUTER JOIN
- extscheduler.Resources ON extscheduler.Events.ResourceId = extscheduler.Resources.Id
-WHERE (extscheduler.Events.ResourceId = 67)
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.602-20.603.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.602-20.603.sql
deleted file mode 100644
index 85ef48351..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.602-20.603.sql
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2003-2005 Fred Hutchinson Cancer Research Center
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Created 2020-06-09
- * Created by jonesga
- * Purpose - View joining Scheduler Resources, Events and the User Data
- */
-EXEC core.fn_dropifexists 'vw_Covid19DCMSchedule', 'extScheduler', 'VIEW', NULL;
-GO
-
-CREATE VIEW extScheduler.vw_Covid19DCMSchedule AS
-SELECT extscheduler.Events.Id AS SChedulerID, extscheduler.Events.ResourceId, extscheduler.Resources.Name AS ResourceName, extscheduler.Events.Name, extscheduler.Events.StartDate, extscheduler.Events.UserId,
- extscheduler.Events.CreatedBy, extscheduler.Events.Created, extscheduler.Events.Quantity, core.UsersData.IM AS EmployeeID
- FROM extscheduler.Events LEFT OUTER JOIN
- core.UsersData ON extscheduler.Events.UserId = core.UsersData.UserId LEFT OUTER JOIN
- extscheduler.Resources ON extscheduler.Events.ResourceId = extscheduler.Resources.Id
- WHERE (extscheduler.Resources.Name LIKE 'DCM%')
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.901-20.902.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.901-20.902.sql
deleted file mode 100644
index 9f118c9d4..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.901-20.902.sql
+++ /dev/null
@@ -1,32 +0,0 @@
-
-/****** Object: Table [list].[c10437d746_covid19testing] Script Date: 9/16/2020 9:19:28 AM ******/
-EXEC core.fn_dropifexists 'Covid19Testing', 'extScheduler', 'TABLE', NULL;
-GO
-
-CREATE TABLE [extScheduler].[Covid19Testing](
- [container] [dbo].[ENTITYID] NOT NULL,
- [entityId] [dbo].[ENTITYID] NOT NULL,
- [lastIndexed] [datetime] NULL,
- [createdBy] [int] NULL,
- [modified] [datetime] NULL,
- [modifiedBy] [int] NULL,
- [created] [datetime] NULL,
- [Key] [int] IDENTITY(1,1) NOT NULL,
- [SchedulerID] [int] NULL,
- [ResourceID] [int] NULL,
- [UserName] [nvarchar](4000) NULL,
- [UserID] [int] NULL,
- [EmployeeID] [nvarchar](4000) NULL,
- [ScheduledDate] [datetime] NULL,
- [ScheduledTime] [datetime] NULL,
- [Create] [datetime] NULL,
- [SampleDate] [nvarchar](4000) NULL,
- [CreatedB] [nvarchar](4000) NULL,
- [ComplianceUpdated] [bit] NULL,
- CONSTRAINT [covid19testing_pk] PRIMARY KEY CLUSTERED
-(
-[Key] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
-
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.903-20.904.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.903-20.904.sql
deleted file mode 100644
index c648c48f1..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.903-20.904.sql
+++ /dev/null
@@ -1,32 +0,0 @@
-
-/****** Object: Table [list].[c10437d746_covid19testing] Script Date: 9/16/2020 9:19:28 AM ******/
-EXEC core.fn_dropifexists 'Covid19Testing', 'extScheduler', 'TABLE', NULL;
-GO
-
-CREATE TABLE [extScheduler].[Covid19Testing](
- [container] [dbo].[ENTITYID] NOT NULL,
- [entityId] [dbo].[ENTITYID] NOT NULL,
- [lastIndexed] [datetime] NULL,
- [createdBy] [int] NULL,
- [modified] [datetime] NULL,
- [modifiedBy] [int] NULL,
- [created] [datetime] NULL,
- [Key] [int] IDENTITY(1,1) NOT NULL,
- [SchedulerID] [int] NULL,
- [ResourceID] [int] NULL,
- [UserName] [nvarchar](4000) NULL,
- [UserID] [int] NULL,
- [EmployeeID] [nvarchar](4000) NULL,
- [ScheduledDate] [datetime] NULL,
- [ScheduledTime] [datetime] NULL,
- [Create] [datetime] NULL,
- [SampleDate] [nvarchar](4000) NULL,
- [CreatedB] [nvarchar](4000) NULL,
- [ComplianceUpdated] [bit] NULL,
- CONSTRAINT [covid19testingKey_pk] PRIMARY KEY CLUSTERED
-(
-[Key] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
-
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.910-20.911.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.910-20.911.sql
deleted file mode 100644
index 00cfdeb80..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.910-20.911.sql
+++ /dev/null
@@ -1,11 +0,0 @@
-EXEC core.fn_dropifexists 'TempScheduler', 'extScheduler', 'TABLE', NULL;
-GO
-
-CREATE TABLE [extscheduler].[TempScheduler](
- [Searchkey] [int] IDENTITY(100,1) NOT NULL,
- [usernames] [varchar](500) NULL,
- [EventId] [varchar](max) NULL,
- [StartDate] [smalldatetime] NULL,
- [created] [smalldatetime] NULL
- ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
- GO
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.911-20.912.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.911-20.912.sql
deleted file mode 100644
index 0f9f2a570..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.911-20.912.sql
+++ /dev/null
@@ -1,14 +0,0 @@
-EXEC core.fn_dropifexists 'TempCoV19Interim', 'extScheduler', 'TABLE', NULL;
-GO
-
-/****** Object: Table [extscheduler].[TempScheduler]
- ONCE TESTED CHAN GE TO labkey_public
- Script Date: 10/29/2020 8:19:18 AM ******/
-
-CREATE TABLE [extscheduler].[TempCoV19Interim](
- [EventId] [varchar](max) NULL,
- [UserName] [nvarchar](1000) NULL,
- [container] [varchar](max) NULL,
- [notes] nvarchar(100) null
- ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
- GO
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.922-20.923.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.922-20.923.sql
deleted file mode 100644
index f892cd5b4..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.922-20.923.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-EXEC core.fn_dropifexists 'TempCoV19Interim', 'extScheduler', 'TABLE', NULL;
-GO
-
-CREATE TABLE [extscheduler].[TempCoV19Interim](
- [EventId] [varchar](max) NULL,
- [UserName] [nvarchar](1000) NULL,
- [container] [varchar](max) NULL
- ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
- GO
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.936-20.937.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.936-20.937.sql
deleted file mode 100644
index adf2cc97a..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-20.936-20.937.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-EXEC core.fn_dropifexists 'TempCoV19Final', 'extScheduler', 'TABLE', NULL;
- GO
-
-CREATE TABLE [extscheduler].[TempCoV19Final](
- [container] [uniqueidentifier] NOT NULL,
- [UserName] [nvarchar](4000) NULL,
- [UserID] [int] NULL,
- [EventID] [int] NULL,
- [StartDate] [smalldatetime] NULL,
- [EmployeeID] [nvarchar](4000) NULL,
- [Created] [smalldatetime] NULL
- ) ON [PRIMARY]
- GO
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-21.001-21.002.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-21.001-21.002.sql
deleted file mode 100644
index ffc8359a2..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-21.001-21.002.sql
+++ /dev/null
@@ -1 +0,0 @@
-ALTER TABLE extscheduler.Resources ADD Instance varchar(50);
\ No newline at end of file
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-23.001-23.002.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-23.001-23.002.sql
deleted file mode 100644
index 67387b57f..000000000
--- a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-23.001-23.002.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-EXEC core.fn_dropifexists 'TempCoV19Final', 'extScheduler', 'TABLE', NULL;
- GO
-EXEC core.fn_dropifexists 'covid19testing', 'extScheduler', 'TABLE', NULL;
-GO
-
-EXEC core.fn_dropifexists 'tempscheduler', 'extScheduler', 'TABLE', NULL;
-GO
-
-EXEC core.fn_dropifexists 'TempCoV19Interim', 'extScheduler', 'TABLE', NULL;
-GO
-
-EXEC core.fn_dropifexists 'vw_Covid19Research', 'extScheduler', 'VIEW', NULL;
-GO
-
-EXEC core.fn_dropifexists 'vw_covid19dcmschedule', 'extScheduler', 'VIEW', NULL;
-GO
-
-EXEC core.fn_dropifexists 'vw_Covid19DCMDaily', 'extScheduler', 'VIEW', NULL;
-GO
diff --git a/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-26.000-26.001.sql b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-26.000-26.001.sql
new file mode 100644
index 000000000..4093b705d
--- /dev/null
+++ b/extscheduler/resources/schemas/dbscripts/sqlserver/extscheduler-26.000-26.001.sql
@@ -0,0 +1,18 @@
+/*
+ * Drop the 2020 Covid-19 scheduling scaffolding. The dateParts window these procedures read is frozen at
+ * 2020-05-01 through 2021-04-20, so they can only ever generate events dated 2020-2021. extBlockOutEvening
+ * additionally violates CHK_event_DateRangeValid -- its StartDate is date + 1530 hours, a 15:30 clock time
+ * misread as an hour count -- and has never inserted a row.
+ */
+
+EXEC core.fn_dropifexists 'extBlockOutEvening', 'extscheduler', 'PROCEDURE';
+GO
+
+EXEC core.fn_dropifexists 'extBlockOutMorning', 'extscheduler', 'PROCEDURE';
+GO
+
+EXEC core.fn_dropifexists 'extBlockOutDays', 'extscheduler', 'PROCEDURE';
+GO
+
+EXEC core.fn_dropifexists 'dateParts', 'extscheduler', 'TABLE';
+GO
diff --git a/extscheduler/resources/schemas/extscheduler.xml b/extscheduler/resources/schemas/extscheduler.xml
index 5656d835d..a4771c6e8 100644
--- a/extscheduler/resources/schemas/extscheduler.xml
+++ b/extscheduler/resources/schemas/extscheduler.xml
@@ -100,20 +100,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/extscheduler/src/org/labkey/extscheduler/ExtSchedulerModule.java b/extscheduler/src/org/labkey/extscheduler/ExtSchedulerModule.java
index be8aa0d4f..8b1405273 100644
--- a/extscheduler/src/org/labkey/extscheduler/ExtSchedulerModule.java
+++ b/extscheduler/src/org/labkey/extscheduler/ExtSchedulerModule.java
@@ -27,13 +27,13 @@ public String getName()
@Override
public @Nullable Double getSchemaVersion()
{
- return 23.002;
+ return 26.001;
}
@Override
- public boolean hasScripts()
+ public double getEarliestUpgradeVersion()
{
- return true;
+ return 23.002;
}
@Override
diff --git a/onprc_ssu/module.properties b/onprc_ssu/module.properties
index b21928fe5..fbfea49ba 100644
--- a/onprc_ssu/module.properties
+++ b/onprc_ssu/module.properties
@@ -1,3 +1,3 @@
ModuleClass: org.labkey.onprc_ssu.ONPRC_SSUModule
-SupportedDatabases: mssql
-ManageVersion: false
+SupportedDatabases: mssql, pgsql
+ManageVersion: true
diff --git a/onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.22-13.23.sql b/onprc_ssu/resources/schemas/dbscripts/postgresql/onprc_ssu-0.000-25.000.sql
similarity index 58%
rename from onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.22-13.23.sql
rename to onprc_ssu/resources/schemas/dbscripts/postgresql/onprc_ssu-0.000-25.000.sql
index 9f83153b5..cfcbd6b2c 100644
--- a/onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.22-13.23.sql
+++ b/onprc_ssu/resources/schemas/dbscripts/postgresql/onprc_ssu-0.000-25.000.sql
@@ -14,6 +14,26 @@
* limitations under the License.
*/
-ALTER TABLE onprc_ssu.schedule ADD formcreated bit;
-ALTER TABLE onprc_ssu.schedule ADD encounterid entityid;
-ALTER TABLE onprc_ssu.schedule ADD taskid entityid;
\ No newline at end of file
+CREATE SCHEMA onprc_ssu;
+
+CREATE TABLE onprc_ssu.schedule (
+ rowid SERIAL,
+ Id varchar(100),
+ date timestamp,
+ location varchar(200),
+ procedureid int,
+ project integer,
+ formcreated boolean,
+ encounterid entityid,
+ taskid entityid,
+
+ objectid entityid not null,
+
+ container entityid,
+ created timestamp,
+ createdby int,
+ modified timestamp,
+ modifiedby int,
+
+ constraint PK_schedule PRIMARY KEY (objectid)
+);
diff --git a/onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.20-13.21.sql b/onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-0.000-25.000.sql
similarity index 82%
rename from onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.20-13.21.sql
rename to onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-0.000-25.000.sql
index 7c2a9b137..2b86999cf 100644
--- a/onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.20-13.21.sql
+++ b/onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-0.000-25.000.sql
@@ -35,4 +35,12 @@ CREATE TABLE onprc_ssu.schedule (
modifiedby int,
constraint PK_schedule PRIMARY KEY (objectid)
-);
\ No newline at end of file
+);
+
+/* 13.xxx SQL scripts */
+
+ALTER TABLE onprc_ssu.schedule ADD project integer;
+
+ALTER TABLE onprc_ssu.schedule ADD formcreated bit;
+ALTER TABLE onprc_ssu.schedule ADD encounterid entityid;
+ALTER TABLE onprc_ssu.schedule ADD taskid entityid;
\ No newline at end of file
diff --git a/onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.21-13.22.sql b/onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.21-13.22.sql
deleted file mode 100644
index a4333d8eb..000000000
--- a/onprc_ssu/resources/schemas/dbscripts/sqlserver/onprc_ssu-13.21-13.22.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2011 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE onprc_ssu.schedule ADD project integer;
\ No newline at end of file
diff --git a/onprc_ssu/src/org/labkey/onprc_ssu/ONPRC_SSUModule.java b/onprc_ssu/src/org/labkey/onprc_ssu/ONPRC_SSUModule.java
index 99b6a6825..154e27899 100644
--- a/onprc_ssu/src/org/labkey/onprc_ssu/ONPRC_SSUModule.java
+++ b/onprc_ssu/src/org/labkey/onprc_ssu/ONPRC_SSUModule.java
@@ -42,13 +42,13 @@ public String getName()
@Override
public @Nullable Double getSchemaVersion()
{
- return 13.23;
+ return 26.000;
}
@Override
- public boolean hasScripts()
+ public double getEarliestUpgradeVersion()
{
- return true;
+ return 13.23;
}
@Override
From 588ec2fb2da4053d86b091186ba5633d3f089164 Mon Sep 17 00:00:00 2001
From: Adam Rauch
Date: Tue, 1 Sep 2026 10:56:03 -0700
Subject: [PATCH 12/19] Clean up some PG scripts (#1875)
## Rationale
Add PG scripts to match recently added SQL Server scripts. These are
only needed for local dev/test databases that ran earlier versions of
the PG bootstrap scripts.
Clean up sla-0.000-25.000.sql - remove significant CREATE/DROP/CREATE
blocks, inline ALTER statements
---
.../postgresql/extscheduler-26.001-26.002.sql | 15 +
.../extscheduler/ExtSchedulerModule.java | 2 +-
.../postgresql/onprc_ehr-26.002-26.003.sql | 3 +
.../dbscripts/postgresql/sla-0.000-25.000.sql | 351 ++----------------
4 files changed, 56 insertions(+), 315 deletions(-)
create mode 100644 extscheduler/resources/schemas/dbscripts/postgresql/extscheduler-26.001-26.002.sql
diff --git a/extscheduler/resources/schemas/dbscripts/postgresql/extscheduler-26.001-26.002.sql b/extscheduler/resources/schemas/dbscripts/postgresql/extscheduler-26.001-26.002.sql
new file mode 100644
index 000000000..24d2efb56
--- /dev/null
+++ b/extscheduler/resources/schemas/dbscripts/postgresql/extscheduler-26.001-26.002.sql
@@ -0,0 +1,15 @@
+/*
+ * Drop the 2020 Covid-19 scheduling scaffolding. The dateParts window these procedures read is frozen at
+ * 2020-05-01 through 2021-04-20, so they can only ever generate events dated 2020-2021. extBlockOutEvening
+ * additionally violates CHK_event_DateRangeValid -- its StartDate is date + 1530 hours, a 15:30 clock time
+ * misread as an hour count -- and has never inserted a row.
+ */
+
+-- Note: The bootstrap script doesn't create these procedures or the table. This clean up is here for only a few
+-- development machines that ran a previous version of the bootstrap script. When consolidation takes place, these
+-- statements can simply be removed.
+
+DROP PROCEDURE IF EXISTS extscheduler."extBlockOutEvening";
+DROP PROCEDURE IF EXISTS extscheduler."extBlockOutMorning";
+DROP PROCEDURE IF EXISTS extscheduler."extBlockOutDays";
+DROP TABLE IF EXISTS extscheduler."dateParts";
diff --git a/extscheduler/src/org/labkey/extscheduler/ExtSchedulerModule.java b/extscheduler/src/org/labkey/extscheduler/ExtSchedulerModule.java
index 8b1405273..39ea42c88 100644
--- a/extscheduler/src/org/labkey/extscheduler/ExtSchedulerModule.java
+++ b/extscheduler/src/org/labkey/extscheduler/ExtSchedulerModule.java
@@ -27,7 +27,7 @@ public String getName()
@Override
public @Nullable Double getSchemaVersion()
{
- return 26.001;
+ return 26.002;
}
@Override
diff --git a/onprc_ehr/resources/schemas/dbscripts/postgresql/onprc_ehr-26.002-26.003.sql b/onprc_ehr/resources/schemas/dbscripts/postgresql/onprc_ehr-26.002-26.003.sql
index 3580eee74..091659828 100644
--- a/onprc_ehr/resources/schemas/dbscripts/postgresql/onprc_ehr-26.002-26.003.sql
+++ b/onprc_ehr/resources/schemas/dbscripts/postgresql/onprc_ehr-26.002-26.003.sql
@@ -1,3 +1,6 @@
+-- Current scripts create this as a FUNCTION, but earlier versions had created a PROCEDURE by this name. Tolerate that case.
+DROP PROCEDURE IF EXISTS audit.ArchiveAuditTables;
+
CREATE OR REPLACE FUNCTION audit.ArchiveAuditTables(
INOUT RetentionMonths INT
)
diff --git a/sla/resources/schemas/dbscripts/postgresql/sla-0.000-25.000.sql b/sla/resources/schemas/dbscripts/postgresql/sla-0.000-25.000.sql
index 164062bb0..fe7837200 100644
--- a/sla/resources/schemas/dbscripts/postgresql/sla-0.000-25.000.sql
+++ b/sla/resources/schemas/dbscripts/postgresql/sla-0.000-25.000.sql
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011 LabKey Corporation
+ * Copyright (c) 2011-2024 LabKey Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,187 +14,9 @@
* limitations under the License.
*/
--- Create schema, tables, indexes, and constraints used for SLA module here
--- All SQL VIEW definitions should be created in sla-create.sql and dropped in sla-drop.sql
-CREATE SCHEMA sla;
-
-CREATE TABLE sla.census
-(
- RowID SERIAL NOT NULL,
- Project INTEGER,
- CountDate TIMESTAMP,
- InvestigatorId INTEGER,
- Room VARCHAR(255),
- Species VARCHAR(255),
- CageType VARCHAR(255),
- CageSize VARCHAR(255),
- CountType INTEGER,
- AnimalCount INTEGER,
- CageCount INTEGER,
- DLAMInventory INTEGER,
- objectid ENTITYID,
-
- Container ENTITYID NOT NULL,
- CreatedBy USERID,
- Created TIMESTAMP,
- ModifiedBy USERID,
- Modified TIMESTAMP,
-
- CONSTRAINT PK_census PRIMARY KEY (rowId)
-);
-
-CREATE TABLE sla.etl_runs
-(
- RowId SERIAL,
- date TIMESTAMP,
- queryname VARCHAR(200),
- rowversion VARCHAR(200),
-
- Container ENTITYID NOT NULL,
-
- CONSTRAINT PK_etl_runs PRIMARY KEY (rowId)
-);
-
-CREATE TABLE sla.purchase(
- RowID SERIAL NOT NULL,
- Project INTEGER,
- UserID INTEGER,
- PriInvPhone VARCHAR(255),
- PriInvEmail VARCHAR(255),
- RequestorID INTEGER,
- VendorID INTEGER,
- Username VARCHAR(255),
- OHSUAlias VARCHAR(255),
- HazardousAgentsUsed INTEGER,
- HazardsList VARCHAR(255),
- DOBRequired INTEGER,
- AdditionalVendorInfo VARCHAR(255),
- OtherVendor VARCHAR(255),
- VendorContact VARCHAR(255),
- ConfirmationNum VARCHAR(255),
- HousingConfirmed INTEGER,
- IACUCConfirmed INTEGER,
- RequestDate TIMESTAMP,
- OrderDate TIMESTAMP,
- AdminComments VARCHAR(500),
- DARComments VARCHAR(500),
- OrderedBy VARCHAR(255),
- ProjFundingSource VARCHAR(255),
- objectid ENTITYID,
-
- Container ENTITYID,
- CreatedBy USERID,
- Created TIMESTAMP,
- ModifiedBy USERID,
- Modified TIMESTAMP,
-
- CONSTRAINT PK_purchase PRIMARY KEY (rowId)
-);
-
-CREATE TABLE sla.purchaseDetails(
- RowId SERIAL NOT NULL,
- PurchaseID INTEGER,
- Species INTEGER,
- Age VARCHAR(255),
- Weight VARCHAR(255),
- Gestation VARCHAR(255),
- Sex INTEGER,
- Strain VARCHAR(255),
- CageID INTEGER,
- NumAnimalsOrdered INTEGER,
- NumAnimalsReceived INTEGER,
- BoxesQuantity INTEGER,
- CostPerAnimal VARCHAR(255),
- ShippingCost VARCHAR(255),
- TotalCost VARCHAR(255),
- HousingInstructions VARCHAR(255),
- RequestedArrivalDate TIMESTAMP,
- ExpectedArrivalDate TIMESTAMP,
- ReceivedDate TIMESTAMP,
- ReceivedBy VARCHAR(255),
- CancelledBy VARCHAR(255),
- DateCancelled TIMESTAMP,
- objectid ENTITYID,
-
- Container ENTITYID,
- CreatedBy USERID,
- Created TIMESTAMP,
- ModifiedBy USERID,
- Modified TIMESTAMP,
-
- CONSTRAINT PK_purchaseDetails PRIMARY KEY (rowId)
-);
-
-CREATE TABLE sla.requestors(
- RowId SERIAL NOT NULL,
- RequestorId INTEGER,
- LastName VARCHAR(255),
- FirstName VARCHAR(255),
- Initials VARCHAR(10),
- PhoneNumber VARCHAR(20),
- EmailAddress VARCHAR(255),
- objectid ENTITYID,
-
- Container ENTITYID,
- CreatedBy USERID,
- Created TIMESTAMP,
- ModifiedBy USERID,
- Modified TIMESTAMP,
-
- CONSTRAINT PK_requestors PRIMARY KEY (rowId)
-);
-
-CREATE TABLE sla.vendors(
- RowId SERIAL NOT NULL,
- SLAVendorName VARCHAR(255),
- Phone1 VARCHAR(15),
- Phone2 VARCHAR(15),
- FundingSourceRequired INTEGER,
- Comments VARCHAR(255),
- objectid ENTITYID,
-
- Container ENTITYID,
- CreatedBy USERID,
- Created TIMESTAMP,
- ModifiedBy USERID,
- Modified TIMESTAMP,
-
- CONSTRAINT PK_vendors PRIMARY KEY (rowId)
-);
-
-CREATE TABLE sla.emailList(
- RowId SERIAL NOT NULL,
- Name VARCHAR(100),
- Email VARCHAR(100),
- PrimaryNotifier INTEGER,
- objectid ENTITYID,
-
- Container ENTITYID,
- CreatedBy USERID,
- Created TIMESTAMP,
- ModifiedBy USERID,
- Modified TIMESTAMP,
-
- CONSTRAINT PK_emailList PRIMARY KEY (rowId)
-);
-
-/* 13.xxx SQL scripts */
-
---it is easier to drop/recreate, rather than try incremental changes:
-SELECT core.fn_dropifexists('census', 'sla', 'TABLE', NULL);
-SELECT core.fn_dropifexists('etl_runs', 'sla', 'TABLE', NULL);
-SELECT core.fn_dropifexists('purchase', 'sla', 'TABLE', NULL);
-SELECT core.fn_dropifexists('purchaseDetails', 'sla', 'TABLE', NULL);
-SELECT core.fn_dropifexists('requestors', 'sla', 'TABLE', NULL);
-SELECT core.fn_dropifexists('vendors', 'sla', 'TABLE', NULL);
-SELECT core.fn_dropifexists('emailList', 'sla', 'TABLE', NULL);
-
-SELECT core.fn_dropifexists('*', 'sla', 'schema', NULL);
-
CREATE SCHEMA sla;
CREATE TABLE sla.census (
- rowid SERIAL NOT NULL,
project INTEGER,
date TIMESTAMP,
investigatorid ENTITYID, --onprc_ehr.investigators
@@ -206,7 +28,10 @@ CREATE TABLE sla.census (
animalcount INTEGER,
cagecount INTEGER,
dlaminventory INTEGER,
- objectid ENTITYID,
+ taskid ENTITYID,
+ formSort INTEGER,
+ QCState INTEGER,
+ objectid ENTITYID NOT NULL,
container ENTITYID NOT NULL,
createdby USERID,
@@ -214,7 +39,7 @@ CREATE TABLE sla.census (
modifiedby USERID,
modified TIMESTAMP,
- CONSTRAINT PK_census PRIMARY KEY (rowid)
+ CONSTRAINT PK_census PRIMARY KEY (objectid)
);
CREATE TABLE sla.etl_runs (
@@ -229,12 +54,11 @@ CREATE TABLE sla.etl_runs (
);
CREATE TABLE sla.purchase (
- rowid SERIAL NOT NULL, --not the PK
+ rowid SERIAL NOT NULL,
project INTEGER,
account VARCHAR(255),
requestorid ENTITYID,
vendorid ENTITYID,
-
hazardslist VARCHAR(255),
dobrequired INTEGER,
comments VARCHAR(4000),
@@ -244,7 +68,9 @@ CREATE TABLE sla.purchase (
requestdate TIMESTAMP,
orderdate TIMESTAMP,
orderedby VARCHAR(100),
- objectid ENTITYID,
+ DARComments VARCHAR(1000),
+ VendorContact VARCHAR(100),
+ objectid ENTITYID NOT NULL,
container ENTITYID,
createdby USERID,
@@ -258,14 +84,14 @@ CREATE TABLE sla.purchase (
CREATE TABLE sla.purchaseDetails (
rowid SERIAL NOT NULL,
purchaseid ENTITYID,
- species INTEGER,
- age DOUBLE PRECISION,
- weight DOUBLE PRECISION,
+ species VARCHAR(50),
+ age VARCHAR(200),
+ weight VARCHAR(200),
weight_units VARCHAR(100),
gestation VARCHAR(255),
- gender VARCHAR(100),
+ gender VARCHAR(50),
strain VARCHAR(255),
- cageid INTEGER,
+ room VARCHAR(255),
animalsordered INTEGER,
animalsreceived INTEGER,
boxesquantity INTEGER,
@@ -279,7 +105,9 @@ CREATE TABLE sla.purchaseDetails (
receivedby VARCHAR(255),
cancelledby VARCHAR(255),
datecancelled TIMESTAMP,
- objectid ENTITYID,
+ sla_DOB TIMESTAMP,
+ vendorLocation VARCHAR(200),
+ objectid ENTITYID NOT NULL,
container ENTITYID,
createdby USERID,
@@ -291,7 +119,7 @@ CREATE TABLE sla.purchaseDetails (
);
CREATE TABLE sla.requestors (
- rowid SERIAL NOT NULL, --not the PK
+ rowid SERIAL NOT NULL,
lastname VARCHAR(255),
firstname VARCHAR(255),
initials VARCHAR(10),
@@ -310,7 +138,7 @@ CREATE TABLE sla.requestors (
);
CREATE TABLE sla.vendors (
- rowid SERIAL NOT NULL, --not the PK
+ rowid SERIAL NOT NULL,
name VARCHAR(255),
phone1 VARCHAR(15),
phone2 VARCHAR(15),
@@ -327,12 +155,6 @@ CREATE TABLE sla.vendors (
CONSTRAINT PK_vendors PRIMARY KEY (objectid)
);
-ALTER TABLE sla.census DROP CONSTRAINT PK_census;
-ALTER TABLE sla.census ALTER COLUMN objectid SET NOT NULL;
-ALTER TABLE sla.census DROP COLUMN rowid;
-
-ALTER TABLE sla.census ADD CONSTRAINT PK_census PRIMARY KEY (objectid);
-
CREATE TABLE sla.allowableAnimals (
protocol VARCHAR(4000),
species VARCHAR(200),
@@ -340,11 +162,10 @@ CREATE TABLE sla.allowableAnimals (
gender VARCHAR(100),
age VARCHAR(100),
allowed INTEGER,
-
startdate TIMESTAMP,
enddate TIMESTAMP,
-
objectid ENTITYID NOT NULL,
+
container ENTITYID NOT NULL,
createdby INTEGER NOT NULL,
created TIMESTAMP NOT NULL,
@@ -356,7 +177,6 @@ CREATE TABLE sla.allowableAnimals (
CREATE TABLE sla.species (
species VARCHAR(200),
-
datedisabled TIMESTAMP,
createdby INTEGER,
created TIMESTAMP,
@@ -377,7 +197,6 @@ INSERT INTO sla.species (species) VALUES ('Fish');
CREATE TABLE sla.gender (
gender VARCHAR(200),
-
datedisabled TIMESTAMP,
createdby INTEGER,
created TIMESTAMP,
@@ -391,30 +210,6 @@ INSERT INTO sla.gender (gender) VALUES ('Male or Female');
INSERT INTO sla.gender (gender) VALUES ('Female');
INSERT INTO sla.gender (gender) VALUES ('Male');
-ALTER TABLE sla.census ADD taskid ENTITYID;
-ALTER TABLE sla.census ADD formSort INTEGER;
-
-ALTER TABLE sla.census ADD QCState INTEGER;
-
--- Adding placeholder protocols table for use in the SLA prototype
--- I expect that this table will have additional columns related to the IACUC protocols.
-CREATE TABLE sla.protocols (
- protocol VARCHAR(4000),
- account VARCHAR(255),
- "grant" VARCHAR(255),
- --additional IACUC realted fields expected
-
- --TODO are the protocols container specific?
- --container entityid not null,
-
- createdby INTEGER NOT NULL,
- created TIMESTAMP NOT NULL,
- modifiedby INTEGER NOT NULL,
- modified TIMESTAMP NOT NULL,
-
- CONSTRAINT PK_protocols PRIMARY KEY (protocol)
-);
-
CREATE TABLE sla.Reference_Data (
rowId SERIAL,
label VARCHAR(250) DEFAULT NULL,
@@ -440,79 +235,22 @@ CREATE TABLE sla.purchaseDrafts (
CONSTRAINT PK_purchaseDrafts PRIMARY KEY (rowid)
);
-DROP TABLE sla.purchaseDetails;
-
-CREATE TABLE sla.purchaseDetails (
- rowid SERIAL NOT NULL,
- purchaseid ENTITYID,
- species VARCHAR(50),
- age VARCHAR(200),
- weight VARCHAR(200),
- weight_units VARCHAR(100),
- gestation VARCHAR(255),
- gender VARCHAR(50),
- strain VARCHAR(255),
- room VARCHAR(255),
- animalsordered INTEGER,
- animalsreceived INTEGER,
- boxesquantity INTEGER,
- costperanimal VARCHAR(255),
- shippingcost VARCHAR(255),
- totalcost VARCHAR(255),
- housingInstructions VARCHAR(255),
- requestedarrivaldate TIMESTAMP,
- expectedarrivaldate TIMESTAMP,
- receiveddate TIMESTAMP,
- receivedby VARCHAR(255),
- cancelledby VARCHAR(255),
- datecancelled TIMESTAMP,
- objectid ENTITYID,
-
- container ENTITYID,
- createdby USERID,
- created TIMESTAMP,
- modifiedby USERID,
- modified TIMESTAMP,
-
- CONSTRAINT PK_purchaseDetails PRIMARY KEY (objectid)
-);
-
-ALTER TABLE sla.purchase ADD DARComments VARCHAR(1000);
-ALTER TABLE sla.purchase ADD VendorContact VARCHAR(100);
-
-ALTER TABLE sla.purchaseDetails ADD sla_DOB TIMESTAMP;
-ALTER TABLE sla.purchaseDetails ADD vendorLocation VARCHAR(200);
-
-/* 23.xxx SQL scripts */
-
-SELECT core.fn_dropifexists('protocols', 'sla', 'TABLE', NULL);
-
--- =================================================================================================
---Created by Kollil
---These tables and stored proc was created to enter weaning data into SLA tables
---Refer to ticket #11233
--- =================================================================================================
-
---Drop table if exists
-SELECT core.fn_dropifexists('weaning', 'sla', 'TABLE', NULL);
---Drop Stored proc if exists
-DROP FUNCTION IF EXISTS onprc_ehr.SLAWeaningDataTransfer();
-
CREATE TABLE sla.weaning (
rowid SERIAL NOT NULL,
investigator VARCHAR(250),
date TIMESTAMP, -- Pup's DOB
project VARCHAR(200),
vendorLocation VARCHAR(200),
- DOB TIMESTAMP, --Dam's DOB
- DOM TIMESTAMP, --Date of Mating
+ DOB TIMESTAMP, -- Dam's DOB
+ DOM TIMESTAMP, -- Date of Mating
species VARCHAR(100),
sex VARCHAR(100),
strain VARCHAR(200),
numAlive INTEGER,
numDead INTEGER,
totalPups INTEGER,
- dateofTransfer TIMESTAMP, --The date of transfer into SLA tables
+ dateofTransfer TIMESTAMP, -- The date of transfer into SLA tables
+
createdBy USERID,
created TIMESTAMP,
modifiedBy USERID,
@@ -521,14 +259,6 @@ CREATE TABLE sla.weaning (
CONSTRAINT PK_weaning PRIMARY KEY (rowid)
);
-/****** Object: StoredProcedure sla.SLAWeaningDataTransfer Script Date: 8/24/2024 *****/
--- ==========================================================================================
--- Author: Lakshmi Kolli
--- Create date: 8/24/2024
--- Description: Create a stored proc to check for any rodents with age >= 21 days and enter
--- the data into SLA tables
--- ==========================================================================================
-
CREATE OR REPLACE FUNCTION onprc_ehr.SLAWeaningDataTransfer()
RETURNS void
LANGUAGE plpgsql
@@ -545,16 +275,16 @@ DECLARE
_DOT2 TIMESTAMP;
_max_rowid INTEGER;
BEGIN
- --Check if any rodents age is 21 days and above and not transferred into SLA tables
+ -- Check if any rodents age is 21 days and above and not transferred into SLA tables
SELECT COUNT(*) INTO _WCount
FROM sla.weaning
WHERE numAlive > 0
AND dateofTransfer IS NULL
AND (CURRENT_DATE - CAST(date AS DATE)) >= 21;
- --Found entries, so, insert those records into SLA.purchase and SLA.purchasedetails tables
+ -- Found entries, so, insert those records into SLA.purchase and SLA.purchasedetails tables
IF _WCount > 0 THEN
- --Create a local temp table to process the weaning data.
+ -- Create a local temp table to process the weaning data.
CREATE TEMP TABLE TempWeaning (
rowid SERIAL NOT NULL,
orig_weaning_rowid INTEGER,
@@ -572,7 +302,7 @@ BEGIN
created TIMESTAMP
) ON COMMIT DROP;
- --Move the weaning entries into a temp table
+ -- Move the weaning entries into a temp table
INSERT INTO TempWeaning (orig_weaning_rowid, investigator, date, project, vendorlocation, DOB, DOM, species, sex, strain, numAlive, created)
SELECT rowid, investigator, date, project, vendorlocation, date, DOM, species,
CASE
@@ -586,18 +316,13 @@ BEGIN
AND dateofTransfer IS NULL
AND (CURRENT_DATE - CAST(date AS DATE)) >= 21;
- --Set the counter seed value and upper bound
+ -- Set the counter seed value and upper bound
SELECT MIN(rowid), MAX(rowid) INTO _counter, _max_rowid FROM TempWeaning;
+-- TODO: Hard-coded, all-caps ENTITYIDs below! These should probably be lowercased.
+
WHILE _counter <= _max_rowid
LOOP
- /* Requestorid - (Kati Marshall ) - 7B3F1ED1-4CD9-4D9A-AFF4-FE0618D49C4B
- Userid - (Kati Marshall) - 1294
- vendor - (ONPRC Weaning - SLA) - E1EE1B64-B7BE-1035-BFC4-5107380AE41E
- container - (SLA) - 4831D09C-4169-1034-BAD2-5107380A9819
- created - (onprc-is) - 1003
- */
-
SELECT dateofTransfer INTO _DOT FROM TempWeaning WHERE rowid = _counter;
IF _DOT IS NULL THEN
-- Get projectid, PI and account
@@ -607,7 +332,6 @@ BEGIN
_purchaseId := gen_random_uuid()::ENTITYID;
- -- Check if the row is already transferred into the main SLA tables. If DOT is null means the row hasn't been transferred yet.
-- Insert weaning data into sla.purchase table as a pending order
INSERT INTO sla.purchase
(project, account, requestorid, vendorid, hazardslist, dobrequired, comments, confirmationnum, housingconfirmed,
@@ -616,7 +340,7 @@ BEGIN
(_center_project, _alias, '7B3F1ED1-4CD9-4D9A-AFF4-FE0618D49C4B', 'E1EE1B64-B7BE-1035-BFC4-5107380AE41E', '', 0, '', NULL, NULL, NULL, NULL, NULL, '', _purchaseId,
'4831D09C-4169-1034-BAD2-5107380A9819', 1003, now(), NULL, NULL, '', '');
- --Insert data into purchasedetails with the newly created purchaseid above
+ -- Insert data into purchasedetails with the newly created purchaseid above
INSERT INTO sla.purchaseDetails
(purchaseid, species, age, weight, weight_units, gestation, gender, strain, room, animalsordered, animalsreceived, boxesquantity, costperanimal, shippingcost,
totalcost, housingInstructions, requestedarrivaldate, expectedarrivaldate, receiveddate, receivedby, cancelledby, datecancelled,
@@ -626,7 +350,7 @@ BEGIN
gen_random_uuid()::ENTITYID, '4831D09C-4169-1034-BAD2-5107380A9819', 1003, now(), NULL, NULL, date, vendorLocation
FROM TempWeaning WHERE rowid = _counter;
- --Update the sla.weaning row with the date of transfer date set for the transferred weaning row
+ -- Update the sla.weaning row with the date of transfer date set for the transferred weaning row
UPDATE sla.weaning
SET dateofTransfer = now()
WHERE rowid = (SELECT orig_weaning_rowid FROM TempWeaning WHERE rowid = _counter);
@@ -635,19 +359,18 @@ BEGIN
SET dateofTransfer = now()
WHERE rowid = _counter;
- --Find if there are any rows with the same center project. Then create them under the same purchaseId
- --set the new counter
+ -- Find if there are any rows with the same center project. Then create them under the same purchaseId
_counter2 := _counter + 1;
WHILE _counter2 <= _max_rowid
LOOP
SELECT dateofTransfer INTO _DOT2 FROM TempWeaning WHERE rowid = _counter2;
IF _DOT2 IS NULL THEN
- --Get projectid of the next row
+ -- Get projectid of the next row
SELECT project INTO _center_project2
FROM ehr.project
WHERE name = (SELECT project FROM TempWeaning WHERE rowid = _counter2);
- --If they are same projects, then use the the same purchaseid when creating the purchase details record
+ -- If they are same projects, then use the same purchaseid when creating the purchase details record
IF (_center_project = _center_project2) THEN
INSERT INTO sla.purchaseDetails
(purchaseid, species, age, weight, weight_units, gestation, gender, strain, room, animalsordered, animalsreceived, boxesquantity, costperanimal, shippingcost,
From 13ba258c39aa400d2ab6ead0ed0aebd5997711a0 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 1 Sep 2026 12:09:42 -0700
Subject: [PATCH 13/19] [bot] Merge 26.7 to 26.9 (#1876)
_Generated automatically._
Merging changes from: a82c5d573628f8a4d5b3e15d068874eb92167ca0
**Approve all matching PRs simultaneously.**
**Approval will trigger automatic merge.**
Verify all PRs before approving:
https://internal.labkey.com/Scrumtime/Backlog/harvest-gitOpenPullRequests.view?branch=26.9_fb_bot_merge_26.7
---------
Co-authored-by: Lakshmi Kolli <69940873+kollil@users.noreply.github.com>
Co-authored-by: Marty Pradere
Co-authored-by: github-actions
Co-authored-by: bbimber
Co-authored-by: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Co-authored-by: Binal Patel
Co-authored-by: Lum
---
GeneticsCore/resources/etls/MHC_Typing.xml | 1 +
.../queries/geneticscore/mhc_data_source.sql | 3 +
.../postgresql/geneticscore-17.14-17.15.sql | 1 +
.../sqlserver/geneticscore-17.14-17.15.sql | 1 +
.../resources/schemas/geneticscore.xml | 3 +
.../resources/views/mhcDataDashboard.html | 6 +
.../GeneticsCore/GeneticsCoreModule.java | 2 +-
.../labkey/GeneticsCore/mhc/MhcTaskRef.java | 2 +-
...omplianceProcedureRecentTestsorg.query.xml | 126 --
.../ComplianceProcedureRecentTestsorg.sql | 148 --
.../.qview.xml | 25 -
.../Occupational Health Compliance.qview.xml | 28 -
...nd Due Soon withNoEHRS OccHealth.qview.xml | 16 -
.../Overdue and Due Soon.qview.xml | 12 -
.../ComplianceRecentTestsorg.query.xml | 121 --
.../ComplianceRecentTestsorg.sql | 192 ---
.../ComplianceRecentTestsorg/.qview.xml | 23 -
mergesync/build.gradle | 25 -
mergesync/module.properties | 3 -
mergesync/resources/module.xml | 11 -
.../mergesync/merge_results/.qview.xml | 5 -
.../queries/mergesync/merge_runs.query.xml | 15 -
.../queries/mergesync/merge_runs/.qview.xml | 5 -
.../queries/mergesync/orderssynced.query.xml | 31 -
.../queries/mergesync/orderssynced/.qview.xml | 5 -
.../postgresql/mergesync-0.00-0.01.sql | 111 --
.../postgresql/mergesync-0.01-0.02.sql | 20 -
.../postgresql/mergesync-0.02-0.03.sql | 23 -
.../postgresql/mergesync-0.03-0.04.sql | 17 -
.../postgresql/mergesync-0.04-0.05.sql | 63 -
.../postgresql/mergesync-0.05-0.06.sql | 121 --
.../postgresql/mergesync-0.06-0.07.sql | 19 -
.../postgresql/mergesync-0.07-0.08.sql | 17 -
.../postgresql/mergesync-0.08-0.09.sql | 23 -
.../postgresql/mergesync-0.09-0.10.sql | 17 -
.../postgresql/mergesync-0.10-0.11.sql | 18 -
.../sqlserver/mergesync-0.00-0.01.sql | 112 --
.../sqlserver/mergesync-0.01-0.02.sql | 21 -
.../sqlserver/mergesync-0.02-0.03.sql | 23 -
.../sqlserver/mergesync-0.03-0.04.sql | 17 -
.../sqlserver/mergesync-0.04-0.05.sql | 64 -
.../sqlserver/mergesync-0.05-0.06.sql | 124 --
.../sqlserver/mergesync-0.06-0.07.sql | 19 -
.../sqlserver/mergesync-0.07-0.08.sql | 17 -
.../sqlserver/mergesync-0.08-0.09.sql | 21 -
.../sqlserver/mergesync-0.09-0.10.sql | 17 -
.../sqlserver/mergesync-0.10-0.11.sql | 18 -
mergesync/resources/schemas/mergesync.xml | 93 --
.../resources/scripts/mergesync/mergesync.js | 46 -
mergesync/resources/views/begin.html | 185 ---
mergesync/resources/views/begin.view.xml | 5 -
mergesync/resources/views/instructions.html | 63 -
.../resources/views/instructions.view.xml | 5 -
.../resources/web/mergesync/mergeButtons.js | 31 -
.../labkey/mergesync/MergeSyncController.java | 350 -----
.../labkey/mergesync/MergeSyncManager.java | 393 -----
.../org/labkey/mergesync/MergeSyncModule.java | 98 --
.../org/labkey/mergesync/MergeSyncRunner.java | 1286 -----------------
.../org/labkey/mergesync/MergeSyncSchema.java | 46 -
.../mergesync/MergeSyncTableCustomizer.java | 71 -
.../labkey/mergesync/MergeSyncUserSchema.java | 374 -----
.../labkey/mergesync/RequestSyncHelper.java | 740 ----------
ogasync/build.gradle | 28 -
ogasync/module.properties | 3 -
.../queries/oga/ZGMS_PRIM_ALL_V.query.xml | 12 -
.../queries/oga/grantProjects.query.xml | 39 -
.../resources/queries/oga/grantProjects.sql | 9 -
.../queries/oga/grantProjects/.qview.xml | 5 -
.../grantProjects/Active Projects.qview.xml | 8 -
.../resources/queries/oga/grants.query.xml | 33 -
ogasync/resources/queries/oga/grants.sql | 23 -
ogasync/resources/views/begin.html | 171 ---
ogasync/resources/views/begin.view.xml | 5 -
.../org/labkey/ogasync/OGASyncController.java | 256 ----
.../org/labkey/ogasync/OGASyncManager.java | 338 -----
.../src/org/labkey/ogasync/OGASyncModule.java | 60 -
.../src/org/labkey/ogasync/OGASyncRunner.java | 557 -------
.../onprc_billing/ONPRC_BillingModule.java | 2 -
.../notification/DCMFinanceNotification.java | 201 ---
.../notification/FinanceNotification.java | 25 +-
.../queries/study/Birth/BirthSource.qview.xml | 26 +
.../study/clinpathRuns/Requests.qview.xml | 5 -
.../queries/study/treatmentSchedule.query.xml | 2 +-
.../study/treatmentSchedule/.qview.xml | 2 +-
.../postgresql/onprc_ehr-26.003-26.004.sql | 71 +
.../sqlserver/onprc_ehr-26.003-26.004.sql | 82 ++
onprc_ehr/resources/schemas/onprc_ehr.xml | 42 -
.../scripts/onprc_ehr/onprc_triggers.js | 3 +
.../web/onprc_ehr/panel/EnterDataPanel.js | 9 +-
.../panel/LabworkRequestInstructionsPanel.js | 37 -
.../org/labkey/onprc_ehr/ONPRC_EHRModule.java | 2 +-
.../dataentry/LabworkRequestFormType.java | 5 -
...LabworkRequestInstructionsFormSection.java | 45 -
.../ColonyAlertsNotification.java | 5 +-
.../tests/onprc_ehr/ONPRC_BillingTest.java | 1 -
.../test/tests/onprc_ehr/ONPRC_EHRTest.java | 3 +
.../sequenceanalysis/MHC_Data_Unified.sql | 3 +-
97 files changed, 225 insertions(+), 7391 deletions(-)
create mode 100644 GeneticsCore/resources/schemas/dbscripts/postgresql/geneticscore-17.14-17.15.sql
create mode 100644 GeneticsCore/resources/schemas/dbscripts/sqlserver/geneticscore-17.14-17.15.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.query.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/.qview.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Occupational Health Compliance.qview.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon withNoEHRS OccHealth.qview.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon.qview.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.query.xml
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.sql
delete mode 100644 ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg/.qview.xml
delete mode 100644 mergesync/build.gradle
delete mode 100644 mergesync/module.properties
delete mode 100644 mergesync/resources/module.xml
delete mode 100644 mergesync/resources/queries/mergesync/merge_results/.qview.xml
delete mode 100644 mergesync/resources/queries/mergesync/merge_runs.query.xml
delete mode 100644 mergesync/resources/queries/mergesync/merge_runs/.qview.xml
delete mode 100644 mergesync/resources/queries/mergesync/orderssynced.query.xml
delete mode 100644 mergesync/resources/queries/mergesync/orderssynced/.qview.xml
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.00-0.01.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.01-0.02.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.02-0.03.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.03-0.04.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.04-0.05.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.05-0.06.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.06-0.07.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.07-0.08.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.08-0.09.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.09-0.10.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.10-0.11.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.00-0.01.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.01-0.02.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.02-0.03.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.03-0.04.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.04-0.05.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.05-0.06.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.06-0.07.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.07-0.08.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.08-0.09.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.09-0.10.sql
delete mode 100644 mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.10-0.11.sql
delete mode 100644 mergesync/resources/schemas/mergesync.xml
delete mode 100644 mergesync/resources/scripts/mergesync/mergesync.js
delete mode 100644 mergesync/resources/views/begin.html
delete mode 100644 mergesync/resources/views/begin.view.xml
delete mode 100644 mergesync/resources/views/instructions.html
delete mode 100644 mergesync/resources/views/instructions.view.xml
delete mode 100644 mergesync/resources/web/mergesync/mergeButtons.js
delete mode 100644 mergesync/src/org/labkey/mergesync/MergeSyncController.java
delete mode 100644 mergesync/src/org/labkey/mergesync/MergeSyncManager.java
delete mode 100644 mergesync/src/org/labkey/mergesync/MergeSyncModule.java
delete mode 100644 mergesync/src/org/labkey/mergesync/MergeSyncRunner.java
delete mode 100644 mergesync/src/org/labkey/mergesync/MergeSyncSchema.java
delete mode 100644 mergesync/src/org/labkey/mergesync/MergeSyncTableCustomizer.java
delete mode 100644 mergesync/src/org/labkey/mergesync/MergeSyncUserSchema.java
delete mode 100644 mergesync/src/org/labkey/mergesync/RequestSyncHelper.java
delete mode 100644 ogasync/build.gradle
delete mode 100644 ogasync/module.properties
delete mode 100644 ogasync/resources/queries/oga/ZGMS_PRIM_ALL_V.query.xml
delete mode 100644 ogasync/resources/queries/oga/grantProjects.query.xml
delete mode 100644 ogasync/resources/queries/oga/grantProjects.sql
delete mode 100644 ogasync/resources/queries/oga/grantProjects/.qview.xml
delete mode 100644 ogasync/resources/queries/oga/grantProjects/Active Projects.qview.xml
delete mode 100644 ogasync/resources/queries/oga/grants.query.xml
delete mode 100644 ogasync/resources/queries/oga/grants.sql
delete mode 100644 ogasync/resources/views/begin.html
delete mode 100644 ogasync/resources/views/begin.view.xml
delete mode 100644 ogasync/src/org/labkey/ogasync/OGASyncController.java
delete mode 100644 ogasync/src/org/labkey/ogasync/OGASyncManager.java
delete mode 100644 ogasync/src/org/labkey/ogasync/OGASyncModule.java
delete mode 100644 ogasync/src/org/labkey/ogasync/OGASyncRunner.java
delete mode 100644 onprc_billing/src/org/labkey/onprc_billing/notification/DCMFinanceNotification.java
create mode 100644 onprc_ehr/resources/queries/study/Birth/BirthSource.qview.xml
create mode 100644 onprc_ehr/resources/schemas/dbscripts/postgresql/onprc_ehr-26.003-26.004.sql
create mode 100644 onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-26.003-26.004.sql
delete mode 100644 onprc_ehr/resources/web/onprc_ehr/panel/LabworkRequestInstructionsPanel.js
delete mode 100644 onprc_ehr/src/org/labkey/onprc_ehr/dataentry/LabworkRequestInstructionsFormSection.java
diff --git a/GeneticsCore/resources/etls/MHC_Typing.xml b/GeneticsCore/resources/etls/MHC_Typing.xml
index 1b8134db3..9e93c1e25 100644
--- a/GeneticsCore/resources/etls/MHC_Typing.xml
+++ b/GeneticsCore/resources/etls/MHC_Typing.xml
@@ -11,6 +11,7 @@
marker
result
assaytype
+ librarytype
score
totalTests
objectid
diff --git a/GeneticsCore/resources/queries/geneticscore/mhc_data_source.sql b/GeneticsCore/resources/queries/geneticscore/mhc_data_source.sql
index d66017d3f..5eb5501e1 100644
--- a/GeneticsCore/resources/queries/geneticscore/mhc_data_source.sql
+++ b/GeneticsCore/resources/queries/geneticscore/mhc_data_source.sql
@@ -13,6 +13,7 @@ SELECT
s.totalRecords as totalTests,
s.status as result,
cast('SSP' as varchar) as assaytype,
+ 'N/A' as librarytype,
NULL as score
FROM assay.SSP_assay.SSP.SSP_Summary s
@@ -27,6 +28,7 @@ SELECT
count(*) as totalTests,
cast('POS' as varchar) as result,
cast('SBT' as varchar) as assaytype,
+ a.analysisId.readset.libraryType as librarytype,
sum(a.result) / (SELECT count(DISTINCT a2.analysisId) as total FROM assay.GenotypeAssay.Genotype.Data a2 WHERE a2.subjectId = a.subjectId AND a2.run.assayType = 'SBT' ) AS score,
FROM assay.GenotypeAssay.Genotype.Data a
@@ -42,6 +44,7 @@ DISTINCT s.subjectId,
1 as totalTests,
cast('NEG' as varchar) as result,
cast('SBT' as varchar) as assaytype,
+ null as librarytype,
NULL as score,
--we want any IDs with SBT data, but lacking data for these special-cased markers
diff --git a/GeneticsCore/resources/schemas/dbscripts/postgresql/geneticscore-17.14-17.15.sql b/GeneticsCore/resources/schemas/dbscripts/postgresql/geneticscore-17.14-17.15.sql
new file mode 100644
index 000000000..9bbbd6300
--- /dev/null
+++ b/GeneticsCore/resources/schemas/dbscripts/postgresql/geneticscore-17.14-17.15.sql
@@ -0,0 +1 @@
+ALTER TABLE geneticscore.mhc_data ADD librarytype varchar(1000);
\ No newline at end of file
diff --git a/GeneticsCore/resources/schemas/dbscripts/sqlserver/geneticscore-17.14-17.15.sql b/GeneticsCore/resources/schemas/dbscripts/sqlserver/geneticscore-17.14-17.15.sql
new file mode 100644
index 000000000..44938f852
--- /dev/null
+++ b/GeneticsCore/resources/schemas/dbscripts/sqlserver/geneticscore-17.14-17.15.sql
@@ -0,0 +1 @@
+ALTER TABLE geneticscore.mhc_data ADD libraryType varchar(1000);
\ No newline at end of file
diff --git a/GeneticsCore/resources/schemas/geneticscore.xml b/GeneticsCore/resources/schemas/geneticscore.xml
index edd583b0f..b6e75f073 100644
--- a/GeneticsCore/resources/schemas/geneticscore.xml
+++ b/GeneticsCore/resources/schemas/geneticscore.xml
@@ -44,6 +44,9 @@
Assay Type
+
+ Library Type
+
Key
true
diff --git a/GeneticsCore/resources/views/mhcDataDashboard.html b/GeneticsCore/resources/views/mhcDataDashboard.html
index 8ca2fcdb5..baabebe4e 100644
--- a/GeneticsCore/resources/views/mhcDataDashboard.html
+++ b/GeneticsCore/resources/views/mhcDataDashboard.html
@@ -86,6 +86,12 @@
schemaName: 'geneticscore',
queryName: 'mhc_data'
})
+ },{
+ name: 'Manage Library Types',
+ url: LABKEY.ActionURL.buildURL('query', 'executeQuery.view', null, {
+ schemaName: 'sequenceanalysis',
+ queryName: 'library_types'
+ })
}]
},{
header: 'Data Archival',
diff --git a/GeneticsCore/src/org/labkey/GeneticsCore/GeneticsCoreModule.java b/GeneticsCore/src/org/labkey/GeneticsCore/GeneticsCoreModule.java
index 4bc8cdea1..dd534e5e1 100644
--- a/GeneticsCore/src/org/labkey/GeneticsCore/GeneticsCoreModule.java
+++ b/GeneticsCore/src/org/labkey/GeneticsCore/GeneticsCoreModule.java
@@ -40,7 +40,7 @@ public String getName()
@Override
public @Nullable Double getSchemaVersion()
{
- return 17.14;
+ return 17.15;
}
@Override
diff --git a/GeneticsCore/src/org/labkey/GeneticsCore/mhc/MhcTaskRef.java b/GeneticsCore/src/org/labkey/GeneticsCore/mhc/MhcTaskRef.java
index 91aeaee97..67c77dae4 100644
--- a/GeneticsCore/src/org/labkey/GeneticsCore/mhc/MhcTaskRef.java
+++ b/GeneticsCore/src/org/labkey/GeneticsCore/mhc/MhcTaskRef.java
@@ -159,7 +159,7 @@ private void processSubject(PipelineJob job, String subject) throws PipelineJobE
}
List> toInsert = new ArrayList<>();
- Set fields = PageFlowUtil.set("subjectid", "marker", "result", "assaytype", "totalTests", "score");
+ Set fields = PageFlowUtil.set("subjectid", "marker", "result", "assaytype", "totalTests", "score", "librarytype");
new TableSelector(us.getTable("mhc_data_source"), fields, new SimpleFilter(FieldKey.fromString("subjectId"), subject), null).forEachResults(rs -> {
CaseInsensitiveHashMap map = new CaseInsensitiveHashMap<>();
for (String f : fields)
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.query.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.query.xml
deleted file mode 100644
index b3e75afd8..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.query.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
- Employee Requirement Summary -- Original version
-
-
- Employee ID
- true
-
- ehr_compliancedb
- employees
- employeeId
-
-
-
-
- Row ID
-
-
- Requirement Name
- 250
-
- ehr_compliancedb
- requirements
- requirementName
-
- ALWAYS_OFF
-
-
- Times Completed
- 50
- /query/executeQuery.view?schemaName=ehr_compliancedb&
- query.queryName=CompletionDates&
- query.EmployeeId~eq=${employeeId}&
- query.requirementName~eq=${requirementName}&
-
-
-
- Expire Period (Months)
- 70
-
-
- New Expire Period (Months)
- 70
-
-
-
- Email
- 70
-
-
-
- Last Name
- 110
-
-
-
- First Name
- 110
-
-
-
- Host
- 110
-
-
- Supervisor
- 150
-
-
-
- Unit
- 210
-
-
- Most Recent Date
- yyyy-MM-dd
- 70
-
-
- Comments
- 70
-
-
- Category
- 70
-
-
-
- Trainee Type
- 70
-
-
- Requirement Name Type
- 180
-
-
- Months Until Renewal
- 60
-
-
-
-
-
- FBEC5D
-
-
-
-
-
- Essential
- 60
- ALWAYS_OFF
-
-
- Snooze Until
- 60
- ALWAYS_OFF
-
-
-
-
-
-
-
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.sql b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.sql
deleted file mode 100644
index 16ce9a184..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg.sql
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2025-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
- */
-
--- Modified: 6-14-2022 R.Blasa ComplianceRecentTests.sql
--- Training that was completed by an employee and being recorded as completed as a Unit or Category
-select b.requirementname,
- a.employeeid,
- group_concat(distinct a.unit,chr(10)) as unit,
- group_concat(distinct a.category,chr(10)) as category,
- group_concat(distinct b.trackingflag) as trackingflag,
-
-
- (select count(zz.date) from completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from completiondates yy where yy.date in (select max(zz.date) from completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
- (Select group_concat(distinct yy.snooze_date , chr(10)) from completiondates yy where yy.date in (select max(zz.date) from completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
-
- WHEN (select max(st.date) from completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - (TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS DECIMAL ) AS MonthsUntilRenewal
-
-
-
-from employeeperunit a ,requirementspercategory b
-where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
-
-
- group by b.requirementname,a.employeeid
-
-
-union
-
--- Training that was completed by an employee but not recorded as being completed as a Unit or Category
-select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from completiondates yy where yy.date in (select max(zz.date) from completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
- (Select group_concat(distinct yy.snooze_date , chr(10)) from completiondates yy where yy.date in (select max(zz.date) from completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as snooze_date,
-
- CAST(
- CASE
- WHEN (select max(st.date) from completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS DECIMAL) AS MonthsUntilRenewal
-
-
- from ehr_compliancedb.completiondates a
-where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
-group by a.requirementname,a.employeeid
-
-UNION
-
--- Additional requirements for employees that have not completed training, but is required
-select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'Yes' as trackingflag,
- null as timesCompleted,
- null as ExpiredPeriod,
- null as NewExpirePeriod,
- null as MostRecentDate,
- '' as comment,
- null as snooze_date,
- null AS MonthsUntilRenewal
-
-
-from ehr_compliancedb.RequirementsPerEmployee j
-Where j.requirementname not in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
- and z.employeeid = j.employeeid and z.date is not null)
- And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
-
-
-group by j.requirementname,j.employeeid
-
-
-
-
-
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/.qview.xml
deleted file mode 100644
index 82fc59d49..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/.qview.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Occupational Health Compliance.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Occupational Health Compliance.qview.xml
deleted file mode 100644
index 97934dc5a..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Occupational Health Compliance.qview.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon withNoEHRS OccHealth.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon withNoEHRS OccHealth.qview.xml
deleted file mode 100644
index 192608c90..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon withNoEHRS OccHealth.qview.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon.qview.xml
deleted file mode 100644
index bc93d1734..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceProcedureRecentTestsorg/Overdue and Due Soon.qview.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.query.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.query.xml
deleted file mode 100644
index 46cb8fc00..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.query.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
- Employee Requirement Summary - Original version
-
-
- Employee ID
- true
-
- ehr_compliancedb
- employees
- employeeId
-
-
-
-
- Row ID
-
-
- Requirement Name
- 90
-
- ehr_compliancedb
- requirements
- requirementName
-
- ALWAYS_OFF
-
-
- Times Completed
- 50
- /query/executeQuery.view?schemaName=ehr_compliancedb&
- query.queryName=CompletionDates&
- query.EmployeeId~eq=${employeeId}&
- query.requirementName~eq=${requirementName}&
-
-
-
- Expire Period (Months)
- 70
-
-
- New Expire Period (Months)
- 70
-
-
-
- Email
- 70
-
-
-
- Last Name
- 110
-
-
-
- First Name
- 110
-
-
-
- Host
- 110
-
-
- Supervisor
- 150
-
-
-
- Unit
- 210
-
-
- Most Recent Date
- yyyy-MM-dd
- 70
-
-
- Comments
- 70
-
-
- Category
- 70
-
-
-
- Trainee Type
- 70
-
-
- Requirement Name Type
- 180
-
-
- Months Until Renewal
- 60
-
-
-
-
-
- FBEC5D
-
-
-
-
-
- Essential
- 60
- ALWAYS_OFF
-
-
-
-
-
-
-
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.sql b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.sql
deleted file mode 100644
index 3226ee975..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg.sql
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (c) 2025-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
- */
-
--- Modified: 6-14-2022 R.Blasa ComplianceRecentTests.sql
--- Training that was completed by an employee and being recorded as completed as a Unit or Category
-select b.requirementname,
- a.employeeid,
- group_concat(distinct b.unit,chr(10)) as unit,
- group_concat(distinct a.category,chr(10)) as category,
- group_concat(distinct b.trackingflag) as trackingflag,
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = b.requirementname) as ExpiredPeriod,
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= b.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= b.requirementname and yy.employeeid= a.employeeid ) as comment,
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = b.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = b.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - (TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = b.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS double) AS MonthsUntilRenewal
-
-
-
-from employeeperunit a ,requirementspercategory b
-where ( a.unit = b.unit or a.category = b.category )
- And b.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And b.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And b.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = b.requirementname And q.dateDisabled is null )
-
-
-
-group by b.requirementname,a.employeeid
-
-union
-
--- Training that was completed by an employee but not recorded as being completed as a Unit or Category
-select a.requirementname,
- a.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = a.requirementname) as ExpiredPeriod,
-
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= a.requirementname and zz.employeeid= a.employeeid )
- And yy.requirementname= a.requirementname and yy.employeeid= a.employeeid ) as comment,
-
-
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = a.requirementname and st.employeeid = a.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = a.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = a.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = a.employeeid group by tt.expireperiod )
-
- END AS double) AS MonthsUntilRenewal
-
-from ehr_compliancedb.completiondates a
-where a.requirementname not in (select distinct h.requirementname from ehr_compliancedb.employeeperunit k, ehr_compliancedb.requirementspercategory h Where (k.unit = h.unit
- or k.category = h.category) And a.employeeid = k.employeeid )
- And a.requirementname not in (select distinct t.requirementname from ehr_compliancedb.employeerequirementexemptions t Where a.employeeid = t.employeeid
- And a.requirementname = t.requirementname)
- And a.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And a.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = a.requirementname And q.dateDisabled is null )
-
-
-group by a.requirementname,a.employeeid
-
-
-union
-
--- Training that was completed by as an employee training exemptions, and at least completed one, or more times
-select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'No' as trackingflag,
-
-
- (select count(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as timesCompleted,
-
- (select k.expireperiod from ehr_compliancedb.Requirements k where k.requirementname = j.requirementname) as ExpiredPeriod,
-
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) ) as NewExpirePeriod,
-
- (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid ) as MostRecentDate,
-
- (Select group_concat(distinct yy.comment, chr(10)) from ehr_compliancedb.completiondates yy where yy.date in (select max(zz.date) from ehr_compliancedb.completiondates zz where zz.requirementname= j.requirementname and zz.employeeid= j.employeeid )
- And yy.requirementname= j.requirementname and yy.employeeid= j.employeeid ) as comment,
-
-
-
- CAST(
- CASE
- WHEN (select max(st.date) from ehr_compliancedb.completiondates st where st.requirementname = j.requirementname and st.employeeid = j.employeeid ) IS NULL then 0
- WHEN ( select (tt.expireperiod) from ehr_compliancedb.requirements tt where tt.requirementname = j.requirementname group by tt.expireperiod ) = 0 then Null
-
-
- WHEN ( select count(*) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) ) > 0 THEN
-
- ( select ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now()) ) ) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod, tt.reviewdate
- having (tt.expireperiod) > ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), tt.reviewdate)) and (tt.reviewdate is not null) )
-
-
-
-
- ELSE ( select (tt.expireperiod) - ( TIMESTAMPDIFF('SQL_TSI_MONTH', max(pq.date), Now())) from ehr_compliancedb.requirements tt, ehr_compliancedb.completiondates pq where tt.requirementname = j.requirementname and pq.requirementname = tt.requirementname and pq.employeeid = j.employeeid group by tt.expireperiod )
-
- END AS double) AS MonthsUntilRenewal
-
-from ehr_compliancedb.employeerequirementexemptions j
- Where j.requirementname in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
- and z.employeeid = j.employeeid and z.date is not null)
- And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
-
-
-group by j.requirementname,j.employeeid
-
-UNION
-
--- Additional requirements for employees that have not completed training, but is required
-select j.requirementname,
- j.employeeid,
- null as unit,
- null as category,
- 'Yes' as trackingflag,
- null as timesCompleted,
- null as ExpiredPeriod,
- null as NewExpirePeriod,
- null as MostRecentDate,
- '' as comment,
- null AS MonthsUntilRenewal
-
-
-from ehr_compliancedb.RequirementsPerEmployee j
-Where j.requirementname NOT in (select z.requirementname from ehr_compliancedb.completiondates z where z.requirementname = j.requirementname
- and z.employeeid = j.employeeid and z.date is not null)
- And j.employeeid in (select p.employeeid from ehr_compliancedb.employees p where p.enddate is null)
- And j.requirementname in (select q.requirementname from ehr_compliancedb.Requirements q where q.requirementname = j.requirementname And q.dateDisabled is null )
-
-
-
-group by j.requirementname,j.employeeid
-
diff --git a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg/.qview.xml b/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg/.qview.xml
deleted file mode 100644
index 750c4460d..000000000
--- a/ONPRC_EHR_ComplianceDB/resources/queries/EHR_ComplianceDB/ComplianceRecentTestsorg/.qview.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mergesync/build.gradle b/mergesync/build.gradle
deleted file mode 100644
index cc66e7e0f..000000000
--- a/mergesync/build.gradle
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2016-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import org.labkey.gradle.util.BuildUtils;
-
-plugins {
- id 'org.labkey.build.module'
-}
-
-dependencies {
- BuildUtils.addLabKeyDependency(project: project, config: "implementation", depProjectPath: ":server:modules:ehrModules:ehr", depProjectConfig: "apiJarFile")
- BuildUtils.addLabKeyDependency(project: project, config: "implementation", depProjectPath: ":server:modules:LabDevKitModules:LDK", depProjectConfig: "apiJarFile")
-}
diff --git a/mergesync/module.properties b/mergesync/module.properties
deleted file mode 100644
index a6d6304b2..000000000
--- a/mergesync/module.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-ModuleClass: org.labkey.mergesync.MergeSyncModule
-ManageVersion: false
-SupportedDatabases: mssql, pgsql
diff --git a/mergesync/resources/module.xml b/mergesync/resources/module.xml
deleted file mode 100644
index 0c59021b4..000000000
--- a/mergesync/resources/module.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- true
- The is the URL of the merge website
-
- ADMIN
-
-
-
-
diff --git a/mergesync/resources/queries/mergesync/merge_results/.qview.xml b/mergesync/resources/queries/mergesync/merge_results/.qview.xml
deleted file mode 100644
index 717fe81fa..000000000
--- a/mergesync/resources/queries/mergesync/merge_results/.qview.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/mergesync/resources/queries/mergesync/merge_runs.query.xml b/mergesync/resources/queries/mergesync/merge_runs.query.xml
deleted file mode 100644
index 1ab4b3e26..000000000
--- a/mergesync/resources/queries/mergesync/merge_runs.query.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
- ldk.context
- mergesync/mergeButtons.js
- -
-
MergeSync.buttons.resyncSelected(dataRegionName);
-
-
-
-
-
-
diff --git a/mergesync/resources/queries/mergesync/merge_runs/.qview.xml b/mergesync/resources/queries/mergesync/merge_runs/.qview.xml
deleted file mode 100644
index 717fe81fa..000000000
--- a/mergesync/resources/queries/mergesync/merge_runs/.qview.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/mergesync/resources/queries/mergesync/orderssynced.query.xml b/mergesync/resources/queries/mergesync/orderssynced.query.xml
deleted file mode 100644
index 79c6a7b17..000000000
--- a/mergesync/resources/queries/mergesync/orderssynced.query.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
- study
- clinpathRuns
- objectid
-
-
-
-
- ehr
- tasks
- taskid
-
-
-
-
- ehr
- requests
- requestid
-
-
-
-
-
-
-
diff --git a/mergesync/resources/queries/mergesync/orderssynced/.qview.xml b/mergesync/resources/queries/mergesync/orderssynced/.qview.xml
deleted file mode 100644
index f4f1570e5..000000000
--- a/mergesync/resources/queries/mergesync/orderssynced/.qview.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.00-0.01.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.00-0.01.sql
deleted file mode 100644
index fbbb1e1b4..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.00-0.01.sql
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
--- Create schema, tables, indexes, and constraints used for MergeSync module here
--- All SQL VIEW definitions should be created in mergesync-create.sql and dropped in mergesync-drop.sql
-CREATE SCHEMA mergesync;
-
-CREATE TABLE mergesync.testnamemapping (
- rowid serial,
- servicename varchar(100),
- mergetestname varchar(100)
-);
-
-CREATE TABLE mergesync.orderssynced (
- rowid serial,
- objectid varchar(100),
- merge_accession varchar(100),
- container entityid,
- created timestamp,
- createdby int,
- resultsreceived boolean
-);
-
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Albumin', 'ALB');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Amylase', 'AMYL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Anaerobic Culture', 'ANCULT');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Antibiotic Sensitivity', 'SENSI');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('BAL Fluid Analysis with Cytology', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('BASIC Chemistry Panel in-house', 'BASIC');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Bile Acids Post-prarandial', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Bile Acids Pre-prarandial', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('C-Reactive Protein', 'CRP');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CBC only, no differential', 'CBC');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CBC with automated differential', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CBC with manual differential', 'DIFF');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Chemistry panel with high density lipoprotein send out', 'CMPHDL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Clotting panel', 'CLOTPL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Comprehensive Chemistry panel in-house', 'COMP');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Comprehensive Chemistry Panel Send Out', 'CMP');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Compromised SPF Surveillance', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CSF analysis (WBC count & differential)', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CSF Glucose', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CSF Total Protein', 'CSF');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Cytology Send out', 'CYTO');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Dermatophyte test medium culture', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('ESPF Surveillance - Monthly', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('ESPF Surveillance - Quarterly', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Exam for Yeast', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Fecal culture', 'F_CULT');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Fecal parasite exam', 'F_PARA');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Filovirus', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Fungus Culture', 'FUNGAL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('General culture', 'G-CULT');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Glycosolated hemoglobin (HGBA1C)', 'HGBA1C');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Gram Stain', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('HDL', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B Post-Exposure Baseline Serology', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B Post-Exposure Baseline Virology', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B Post-Exposure Follow-Up Serology', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B Status Confirmation', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('High-density lipoprotein & Low-density lipoprotein (HDL & LDL)', 'HDLLDL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Intuitive Basic Array', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Intuitive Expanded Array', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Japanese Macaque Surveillance', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('LDL', 'LDL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Lipase', 'Lipase');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Lipid panel in-house: Cholesterol, Triglyceride, HDL, LDL', 'LIPID');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Malaria Screen', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Miscellaneous in-house', 'MISIN');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Miscellaneous send out', 'MISOUT');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Occult Blood', 'OCCBLD');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Other Clinpath', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Other SPF Surveillance', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL ABSCN-5', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL ABSCN-8', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL PCR', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL SIV WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL SRV1 WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL SRV2 WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL SRV5 WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL STLV WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Phenobarbital', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Primagam for TB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Protein Electrophoresis-Total Protein', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('RBC Morphology', 'MORPH');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Reticulocyte count', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Specific Gravity', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('SPF Surveillance - Annual', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('SRV', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('SRV Virus Isolation', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Terminal Serum Surveillance', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Thyroid Panel', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Urinalysis', 'URINE');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Vitamin D (1,25 Dihydroxy)', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Vitamin D (250H)', 'VITD');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('WBC differential', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Yersinia culture', 'YERSNA');
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.01-0.02.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.01-0.02.sql
deleted file mode 100644
index c2038db6d..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.01-0.02.sql
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.orderssynced DROP COLUMN merge_accession;
-ALTER TABLE mergesync.orderssynced ADD order_accession integer;
-ALTER TABLE mergesync.orderssynced ADD test_accession integer;
-ALTER TABLE mergesync.orderssynced ADD taskid entityid;
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.02-0.03.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.02-0.03.sql
deleted file mode 100644
index 2ea5d27ce..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.02-0.03.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.orderssynced DROP COLUMN rowid;
-ALTER TABLE mergesync.orderssynced ADD runid entityid;
-ALTER TABLE mergesync.orderssynced ADD merge_datecreated timestamp;
-ALTER TABLE mergesync.orderssynced ADD merge_dateposted timestamp;
-ALTER TABLE mergesync.orderssynced ALTER COLUMN objectid SET not null;
-
-ALTER TABLE mergesync.orderssynced ADD CONSTRAINT PK_orderssynced PRIMARY KEY (objectid);
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.03-0.04.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.03-0.04.sql
deleted file mode 100644
index 8fb92366a..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.03-0.04.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.orderssynced ADD requestid entityid;
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.04-0.05.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.04-0.05.sql
deleted file mode 100644
index ec986fce1..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.04-0.05.sql
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-CREATE TABLE mergesync.mergetolkmapping (
- mergetestname varchar(100),
- servicename varchar(100),
- automaticresults bool default false,
-
- CONSTRAINT PK_mergetolkmapping PRIMARY KEY (mergetestname)
-);
-
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('ALB', 'Albumin', true);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('AMYL', 'Amylase', true);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('ANCULT', 'Anaerobic Culture', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('BASIC', 'BASIC Chemistry Panel in-house', true);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CBC', 'CBC with automated differential', true);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CBCMIN', 'CBC only, no differential', true);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CLOTPL', 'Clotting panel', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CMP', 'Comprehensive Chemistry Panel Send Out', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CMPHDL', 'Chemistry panel with high density lipoprotein send out', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('COMP', 'Comprehensive Chemistry panel in-house', true);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CRP', 'C-Reactive Protein', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CSFCC', 'CSF analysis (WBC count & differential)', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CSFPRO', 'CSF Total Protein', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CSFTP', 'Cerebral Spinal Fluid Total Protein – Send out', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CSFWBC', 'Cerebral Spinal Fluid white blood count with differential', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CYTO', 'BAL Fluid Analysis with Cytology', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('DIFF', 'CBC with manual differential', false);
---INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('DIFF', 'WBC differential', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('DTMFUN', 'Dermatophyte test medium culture', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('F_CULT', 'Fecal culture', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('F_PARA', 'Fecal parasite exam', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('FUNGAL', 'Fungus Culture', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('GCULT1', 'General culture', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('GCULT2', 'General culture', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('GCULT3', 'General culture', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('HDLLDL', 'High-density lipoprotein & Low-density lipoprotein (HDL & LDL)', true);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('HGBA1C', 'Glycosolated hemoglobin (HGBA1C)', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('LDL', 'LDL', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('LIPID', 'Lipid panel in-house: Cholesterol, Triglyceride, HDL, LDL', true);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('MALA', 'Malaria Screen', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('MIS IN', 'Miscellaneous in-house', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('MISOUT', 'Bile Acids Post-prarandial', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('OCCBLD', 'Occult Blood', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('RETIC', 'Reticulocyte count', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('SENS2', 'Antibiotic Sensitivity', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('SENS3', 'Antibiotic Sensitivity', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('SENSI', 'Antibiotic Sensitivity', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('URINE', 'Urinalysis', false);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('YERSNA', 'Yersinia culture', false);
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.05-0.06.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.05-0.06.sql
deleted file mode 100644
index 91416ab8f..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.05-0.06.sql
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-TRUNCATE TABLE mergesync.testnamemapping;
-ALTER TABLE mergesync.testnamemapping DROP COLUMN rowid;
-ALTER TABLE mergesync.testnamemapping ALTER COLUMN servicename SET NOT NULL;
-ALTER TABLE mergesync.testnamemapping ADD CONSTRAINT PK_testnamemapping PRIMARY KEY (servicename);
-ALTER TABLE mergesync.testnamemapping ADD automaticresults bool default false;
-
-DROP TABLE mergesync.mergetolkmapping;
-
-CREATE TABLE mergesync.mergetolkmapping (
- mergetestname varchar(100) NOT NULL,
- servicename varchar(100),
-
- CONSTRAINT PK_mergetolkmapping PRIMARY KEY (mergetestname)
-);
-
--- @SkipOnEmptySchemasBegin
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Albumin', 'ALB', true);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Amylase', 'AMYL', true);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Anaerobic Culture', 'ANCULT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('BASIC Chemistry Panel in-house', 'BASIC', true);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CBC with automated differential', 'CBC', true);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Clotting panel', 'CLOTPL', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Comprehensive Chemistry Panel Send Out', 'CMP', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Chemistry panel with high density lipoprotein send out', 'CMPHDL', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Comprehensive Chemistry panel in-house', 'COMP', true);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('C-Reactive Protein', 'CRP', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CSF analysis (WBC count & differential)', 'CSFCC', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CSF Total Protein', 'CSFPRO', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Cerebral Spinal Fluid Total Protein – Send out', 'CSFTP', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Cerebral Spinal Fluid white blood count with differential', 'CSFWBC', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('BAL Fluid Analysis with Cytology', 'CYTO', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Cytology Send out', 'CYTO', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CBC with manual differential', 'DIFF', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('WBC differential', 'DIFF', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Dermatophyte test medium culture', 'DTMFUN', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Fecal culture', 'F_CULT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Fecal parasite exam', 'F_PARA', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Fungus Culture', 'FUNGAL', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('General culture', 'GCULT1', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('High-density lipoprotein & Low-density lipoprotein (HDL & LDL)', 'HDLLDL', true);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Glycosolated hemoglobin (HGBA1C)', 'HGBA1C', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('LDL', 'LDL', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Lipid panel in-house: Cholesterol, Triglyceride, HDL, LDL', 'LIPID', true);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Malaria Screen', 'MALA', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Miscellaneous in-house', 'MIS IN', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Bile Acids Post-prarandial', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Bile Acids Pre-prarandial', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Calcium, ionized', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Calcium, total', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CSF Glucose', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Lipase', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Miscellaneous send out', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Phenobarbital', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Protein Electrophoresis-Total Protein', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Thyroid Panel', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Vitamin D (1,25 Dihydroxy)', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Vitamin D (250H)', 'MISOUT', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('RBC Morphology', 'MORPH', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Occult Blood', 'OCCBLD', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Reticulocyte count', 'RETIC', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Antibiotic Sensitivity', 'SENSI', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Urinalysis', 'URINE', false);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Yersinia culture', 'YERSNA', false);
-
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('ALB', 'Albumin');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('AMYL', 'Amylase');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('ANCULT', 'Anaerobic Culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('BASIC', 'BASIC Chemistry Panel in-house');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CBC', 'CBC with automated differential');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CLOTPL', 'Clotting panel');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CMP', 'Comprehensive Chemistry Panel Send Out');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CMPHDL', 'Chemistry panel with high density lipoprotein send out');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('COMP', 'Comprehensive Chemistry panel in-house');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CRP', 'C-Reactive Protein');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CSFCC', 'CSF analysis (WBC count & differential)');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CSFPRO', 'CSF Total Protein');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CSFTP', 'Cerebral Spinal Fluid Total Protein – Send out');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CSFWBC', 'Cerebral Spinal Fluid white blood count with differential');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CYTO', 'BAL Fluid Analysis with Cytology');
---INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CYTO', 'Cytology Send out');
---INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('DIFF', 'CBC with manual differential');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('DIFF', 'WBC differential');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('DTMFUN', 'Dermatophyte test medium culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('F_CULT', 'Fecal culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('F_PARA', 'Fecal parasite exam');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('FUNGAL', 'Fungus Culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('GCULT1', 'General culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('GCULT2', 'General culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('GCULT3', 'General culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('HDLLDL', 'High-density lipoprotein & Low-density lipoprotein (HDL & LDL)');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('HGBA1C', 'Glycosolated hemoglobin (HGBA1C)');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('LDL', 'LDL');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('LIPID', 'Lipid panel in-house: Cholesterol, Triglyceride, HDL, LDL');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('MALA', 'Malaria Screen');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('MIS IN', 'Miscellaneous in-house');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('MISOUT', 'Miscellaneous send out');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('MORPH', 'RBC Morphology');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('OCCBLD', 'Occult Blood');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('RETIC', 'Reticulocyte count');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENS2', 'Antibiotic Sensitivity');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENS3', 'Antibiotic Sensitivity');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENSI', 'Antibiotic Sensitivity');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('URINE', 'Urinalysis');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('YERSNA', 'Yersinia culture');
--- @SkipOnEmptySchemasEnd
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.06-0.07.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.06-0.07.sql
deleted file mode 100644
index dd03b5211..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.06-0.07.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-UPDATE mergesync.testnamemapping SET automaticresults = true WHERE servicename = 'WBC differential';
-UPDATE mergesync.testnamemapping SET automaticresults = true WHERE servicename = 'RBC Morphology';
-UPDATE mergesync.testnamemapping SET automaticresults = true WHERE servicename = 'Reticulocyte count';
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.07-0.08.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.07-0.08.sql
deleted file mode 100644
index 0d9eaf62c..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.07-0.08.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-DELETE FROM mergesync.testnamemapping WHERE servicename = 'CBC with manual differential';
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.08-0.09.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.08-0.09.sql
deleted file mode 100644
index 0697fb386..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.08-0.09.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
--- @SkipOnEmptySchemasBegin
-DELETE FROM mergesync.mergetolkmapping WHERE mergetestname = 'SENSI2';
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENSI2', 'Antibiotic Sensitivity');
-
-DELETE FROM mergesync.mergetolkmapping WHERE mergetestname = 'SENSI3';
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENSI3', 'Antibiotic Sensitivity');
--- @SkipOnEmptySchemasEnd
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.09-0.10.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.09-0.10.sql
deleted file mode 100644
index 41bbafba7..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.09-0.10.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.mergetolkmapping ADD deletedate TIMESTAMP;
diff --git a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.10-0.11.sql b/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.10-0.11.sql
deleted file mode 100644
index 0ae81e704..000000000
--- a/mergesync/resources/schemas/dbscripts/postgresql/mergesync-0.10-0.11.sql
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.mergetolkmapping DROP COLUMN deletedate;
-ALTER TABLE mergesync.orderssynced ADD deletedate TIMESTAMP;
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.00-0.01.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.00-0.01.sql
deleted file mode 100644
index fa7fb6754..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.00-0.01.sql
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
--- Create schema, tables, indexes, and constraints used for MergeSync module here
--- All SQL VIEW definitions should be created in mergesync-create.sql and dropped in mergesync-drop.sql
-CREATE SCHEMA mergesync;
-GO
-
-CREATE TABLE mergesync.testnamemapping (
- rowid int identity(1,1),
- servicename varchar(100),
- mergetestname varchar(100)
-);
-
-CREATE TABLE mergesync.orderssynced (
- rowid int identity(1,1),
- objectid varchar(100),
- merge_accession varchar(100),
- container entityid,
- created DATETIME,
- createdby int,
- resultsreceived bit
-);
-
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Albumin', 'ALB');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Amylase', 'AMYL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Anaerobic Culture', 'ANCULT');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Antibiotic Sensitivity', 'SENSI');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('BAL Fluid Analysis with Cytology', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('BASIC Chemistry Panel in-house', 'BASIC');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Bile Acids Post-prarandial', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Bile Acids Pre-prarandial', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('C-Reactive Protein', 'CRP');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CBC only, no differential', 'CBC');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CBC with automated differential', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CBC with manual differential', 'DIFF');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Chemistry panel with high density lipoprotein send out', 'CMPHDL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Clotting panel', 'CLOTPL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Comprehensive Chemistry panel in-house', 'COMP');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Comprehensive Chemistry Panel Send Out', 'CMP');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Compromised SPF Surveillance', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CSF analysis (WBC count & differential)', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CSF Glucose', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('CSF Total Protein', 'CSF');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Cytology Send out', 'CYTO');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Dermatophyte test medium culture', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('ESPF Surveillance - Monthly', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('ESPF Surveillance - Quarterly', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Exam for Yeast', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Fecal culture', 'F_CULT');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Fecal parasite exam', 'F_PARA');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Filovirus', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Fungus Culture', 'FUNGAL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('General culture', 'G-CULT');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Glycosolated hemoglobin (HGBA1C)', 'HGBA1C');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Gram Stain', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('HDL', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B Post-Exposure Baseline Serology', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B Post-Exposure Baseline Virology', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B Post-Exposure Follow-Up Serology', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Herpes B Status Confirmation', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('High-density lipoprotein & Low-density lipoprotein (HDL & LDL)', 'HDLLDL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Intuitive Basic Array', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Intuitive Expanded Array', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Japanese Macaque Surveillance', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('LDL', 'LDL');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Lipase', 'Lipase');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Lipid panel in-house: Cholesterol, Triglyceride, HDL, LDL', 'LIPID');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Malaria Screen', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Miscellaneous in-house', 'MISIN');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Miscellaneous send out', 'MISOUT');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Occult Blood', 'OCCBLD');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Other Clinpath', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Other SPF Surveillance', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL ABSCN-5', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL ABSCN-8', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL PCR', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL SIV WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL SRV1 WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL SRV2 WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL SRV5 WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('PDL STLV WB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Phenobarbital', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Primagam for TB', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Protein Electrophoresis-Total Protein', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('RBC Morphology', 'MORPH');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Reticulocyte count', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Specific Gravity', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('SPF Surveillance - Annual', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('SRV', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('SRV Virus Isolation', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Terminal Serum Surveillance', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Thyroid Panel', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Urinalysis', 'URINE');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Vitamin D (1,25 Dihydroxy)', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Vitamin D (250H)', 'VITD');
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('WBC differential', null);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname) VALUES ('Yersinia culture', 'YERSNA');
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.01-0.02.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.01-0.02.sql
deleted file mode 100644
index e182c146c..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.01-0.02.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.orderssynced DROP COLUMN merge_accession;
-GO
-ALTER TABLE mergesync.orderssynced ADD order_accession integer;
-ALTER TABLE mergesync.orderssynced ADD test_accession integer;
-ALTER TABLE mergesync.orderssynced ADD taskid entityid;
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.02-0.03.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.02-0.03.sql
deleted file mode 100644
index fddf58cc0..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.02-0.03.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.orderssynced DROP COLUMN rowid;
-ALTER TABLE mergesync.orderssynced ADD runid entityid;
-ALTER TABLE mergesync.orderssynced ADD merge_datecreated DATETIME;
-ALTER TABLE mergesync.orderssynced ADD merge_dateposted DATETIME;
-ALTER TABLE mergesync.orderssynced ALTER COLUMN objectid entityid not null;
-GO
-ALTER TABLE mergesync.orderssynced ADD CONSTRAINT PK_orderssynced PRIMARY KEY (objectid);
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.03-0.04.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.03-0.04.sql
deleted file mode 100644
index 8fb92366a..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.03-0.04.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.orderssynced ADD requestid entityid;
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.04-0.05.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.04-0.05.sql
deleted file mode 100644
index c4d266b7b..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.04-0.05.sql
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-CREATE TABLE mergesync.mergetolkmapping (
- mergetestname varchar(100),
- servicename varchar(100),
- automaticresults bit default 0,
-
- CONSTRAINT PK_mergetolkmapping PRIMARY KEY (mergetestname)
-);
-
-
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('ALB', 'Albumin', 1);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('AMYL', 'Amylase', 1);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('ANCULT', 'Anaerobic Culture', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('BASIC', 'BASIC Chemistry Panel in-house', 1);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CBC', 'CBC with automated differential', 1);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CBCMIN', 'CBC only, no differential', 1);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CLOTPL', 'Clotting panel', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CMP', 'Comprehensive Chemistry Panel Send Out', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CMPHDL', 'Chemistry panel with high density lipoprotein send out', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('COMP', 'Comprehensive Chemistry panel in-house', 1);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CRP', 'C-Reactive Protein', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CSFCC', 'CSF analysis (WBC count & differential)', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CSFPRO', 'CSF Total Protein', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CSFTP', 'Cerebral Spinal Fluid Total Protein – Send out', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CSFWBC', 'Cerebral Spinal Fluid white blood count with differential', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('CYTO', 'BAL Fluid Analysis with Cytology', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('DIFF', 'CBC with manual differential', 0);
---INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('DIFF', 'WBC differential', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('DTMFUN', 'Dermatophyte test medium culture', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('F_CULT', 'Fecal culture', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('F_PARA', 'Fecal parasite exam', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('FUNGAL', 'Fungus Culture', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('GCULT1', 'General culture', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('GCULT2', 'General culture', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('GCULT3', 'General culture', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('HDLLDL', 'High-density lipoprotein & Low-density lipoprotein (HDL & LDL)', 1);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('HGBA1C', 'Glycosolated hemoglobin (HGBA1C)', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('LDL', 'LDL', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('LIPID', 'Lipid panel in-house: Cholesterol, Triglyceride, HDL, LDL', 1);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('MALA', 'Malaria Screen', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('MIS IN', 'Miscellaneous in-house', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('MISOUT', 'Bile Acids Post-prarandial', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('OCCBLD', 'Occult Blood', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('RETIC', 'Reticulocyte count', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('SENS2', 'Antibiotic Sensitivity', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('SENS3', 'Antibiotic Sensitivity', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('SENSI', 'Antibiotic Sensitivity', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('URINE', 'Urinalysis', 0);
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename, automaticresults) VALUES ('YERSNA', 'Yersinia culture', 0);
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.05-0.06.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.05-0.06.sql
deleted file mode 100644
index 7e660a19e..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.05-0.06.sql
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-TRUNCATE TABLE mergesync.testnamemapping;
-ALTER TABLE mergesync.testnamemapping DROP COLUMN rowid;
-ALTER TABLE mergesync.testnamemapping ALTER COLUMN servicename varchar(100) NOT NULL;
-GO
-ALTER TABLE mergesync.testnamemapping ADD CONSTRAINT PK_testnamemapping PRIMARY KEY (servicename);
-GO
-ALTER TABLE mergesync.testnamemapping ADD automaticresults bit default 0;
-GO
-
-DROP TABLE mergesync.mergetolkmapping;
-GO
-CREATE TABLE mergesync.mergetolkmapping (
- mergetestname varchar(100) NOT NULL,
- servicename varchar(100),
-
- CONSTRAINT PK_mergetolkmapping PRIMARY KEY (mergetestname)
-);
-
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Albumin', 'ALB', 1);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Amylase', 'AMYL', 1);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Anaerobic Culture', 'ANCULT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('BASIC Chemistry Panel in-house', 'BASIC', 1);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CBC with automated differential', 'CBC', 1);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Clotting panel', 'CLOTPL', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Comprehensive Chemistry Panel Send Out', 'CMP', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Chemistry panel with high density lipoprotein send out', 'CMPHDL', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Comprehensive Chemistry panel in-house', 'COMP', 1);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('C-Reactive Protein', 'CRP', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CSF analysis (WBC count & differential)', 'CSFCC', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CSF Total Protein', 'CSFPRO', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Cerebral Spinal Fluid Total Protein – Send out', 'CSFTP', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Cerebral Spinal Fluid white blood count with differential', 'CSFWBC', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('BAL Fluid Analysis with Cytology', 'CYTO', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Cytology Send out', 'CYTO', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CBC with manual differential', 'DIFF', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('WBC differential', 'DIFF', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Dermatophyte test medium culture', 'DTMFUN', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Fecal culture', 'F_CULT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Fecal parasite exam', 'F_PARA', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Fungus Culture', 'FUNGAL', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('General culture', 'GCULT1', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('High-density lipoprotein & Low-density lipoprotein (HDL & LDL)', 'HDLLDL', 1);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Glycosolated hemoglobin (HGBA1C)', 'HGBA1C', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('LDL', 'LDL', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Lipid panel in-house: Cholesterol, Triglyceride, HDL, LDL', 'LIPID', 1);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Malaria Screen', 'MALA', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Miscellaneous in-house', 'MIS IN', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Bile Acids Post-prarandial', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Bile Acids Pre-prarandial', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Calcium, ionized', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Calcium, total', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('CSF Glucose', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Lipase', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Miscellaneous send out', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Phenobarbital', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Protein Electrophoresis-Total Protein', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Thyroid Panel', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Vitamin D (1,25 Dihydroxy)', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Vitamin D (250H)', 'MISOUT', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('RBC Morphology', 'MORPH', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Occult Blood', 'OCCBLD', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Reticulocyte count', 'RETIC', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Antibiotic Sensitivity', 'SENSI', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Urinalysis', 'URINE', 0);
-INSERT INTO mergesync.testnamemapping (servicename, mergetestname, automaticresults) VALUES ('Yersinia culture', 'YERSNA', 0);
-
-TRUNCATE TABLE mergesync.mergetolkmapping;
-TRUNCATE TABLE mergesync.mergetolkmapping;
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('ALB', 'Albumin');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('AMYL', 'Amylase');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('ANCULT', 'Anaerobic Culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('BASIC', 'BASIC Chemistry Panel in-house');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CBC', 'CBC with automated differential');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CLOTPL', 'Clotting panel');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CMP', 'Comprehensive Chemistry Panel Send Out');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CMPHDL', 'Chemistry panel with high density lipoprotein send out');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('COMP', 'Comprehensive Chemistry panel in-house');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CRP', 'C-Reactive Protein');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CSFCC', 'CSF analysis (WBC count & differential)');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CSFPRO', 'CSF Total Protein');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CSFTP', 'Cerebral Spinal Fluid Total Protein – Send out');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CSFWBC', 'Cerebral Spinal Fluid white blood count with differential');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CYTO', 'BAL Fluid Analysis with Cytology');
---INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('CYTO', 'Cytology Send out');
---INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('DIFF', 'CBC with manual differential');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('DIFF', 'WBC differential');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('DTMFUN', 'Dermatophyte test medium culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('F_CULT', 'Fecal culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('F_PARA', 'Fecal parasite exam');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('FUNGAL', 'Fungus Culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('GCULT1', 'General culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('GCULT2', 'General culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('GCULT3', 'General culture');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('HDLLDL', 'High-density lipoprotein & Low-density lipoprotein (HDL & LDL)');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('HGBA1C', 'Glycosolated hemoglobin (HGBA1C)');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('LDL', 'LDL');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('LIPID', 'Lipid panel in-house: Cholesterol, Triglyceride, HDL, LDL');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('MALA', 'Malaria Screen');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('MIS IN', 'Miscellaneous in-house');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('MISOUT', 'Miscellaneous send out');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('MORPH', 'RBC Morphology');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('OCCBLD', 'Occult Blood');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('RETIC', 'Reticulocyte count');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENS2', 'Antibiotic Sensitivity');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENS3', 'Antibiotic Sensitivity');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENSI', 'Antibiotic Sensitivity');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('URINE', 'Urinalysis');
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('YERSNA', 'Yersinia culture');
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.06-0.07.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.06-0.07.sql
deleted file mode 100644
index 145b13204..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.06-0.07.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-UPDATE mergesync.testnamemapping SET automaticresults = 1 WHERE servicename = 'WBC differential';
-UPDATE mergesync.testnamemapping SET automaticresults = 1 WHERE servicename = 'RBC Morphology';
-UPDATE mergesync.testnamemapping SET automaticresults = 1 WHERE servicename = 'Reticulocyte count';
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.07-0.08.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.07-0.08.sql
deleted file mode 100644
index 0d9eaf62c..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.07-0.08.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-DELETE FROM mergesync.testnamemapping WHERE servicename = 'CBC with manual differential';
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.08-0.09.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.08-0.09.sql
deleted file mode 100644
index c290aaf47..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.08-0.09.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-DELETE FROM mergesync.mergetolkmapping WHERE mergetestname = 'SENSI2';
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENSI2', 'Antibiotic Sensitivity');
-
-DELETE FROM mergesync.mergetolkmapping WHERE mergetestname = 'SENSI3';
-INSERT INTO mergesync.mergetolkmapping (mergetestname, servicename) VALUES ('SENSI3', 'Antibiotic Sensitivity');
\ No newline at end of file
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.09-0.10.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.09-0.10.sql
deleted file mode 100644
index 25d65f4c2..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.09-0.10.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.mergetolkmapping ADD deletedate DATETIME;
diff --git a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.10-0.11.sql b/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.10-0.11.sql
deleted file mode 100644
index 277145e95..000000000
--- a/mergesync/resources/schemas/dbscripts/sqlserver/mergesync-0.10-0.11.sql
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-ALTER TABLE mergesync.mergetolkmapping DROP COLUMN deletedate;
-ALTER TABLE mergesync.orderssynced ADD deletedate DATETIME;
diff --git a/mergesync/resources/schemas/mergesync.xml b/mergesync/resources/schemas/mergesync.xml
deleted file mode 100644
index 232df34e6..000000000
--- a/mergesync/resources/schemas/mergesync.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
- LabKey to Merge Service/Panel Name Mapping
-
-
- Service Name
- true
-
-
- Merge Test Name
-
-
- Expect Results From Merge?
-
-
-
-
-
- Merge to LabKey Service/Panel Name Mapping
-
-
- Merge Test Name
-
-
- Service Name
-
-
-
-
-
- Orders Synced To/From Merge
-
-
- Clinpath Runs Record
-
-
- Request Id
-
-
- Task Id
-
-
- Key
-
-
- Merge Order Accession #
-
-
- Merge Test Accession #
-
-
- Merge Date Created
-
-
- Merge Date Posted
-
-
- Date Deleted In LabKey
-
-
- Folder
-
-
-
-
-
-
-
-
- Results Received?
-
-
-
-
\ No newline at end of file
diff --git a/mergesync/resources/scripts/mergesync/mergesync.js b/mergesync/resources/scripts/mergesync/mergesync.js
deleted file mode 100644
index 6fd35af74..000000000
--- a/mergesync/resources/scripts/mergesync/mergesync.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
- */
-var console = require("console");
-var LABKEY = require("labkey");
-
-exports.init = function(EHR){
- EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.COMPLETE, 'study', 'clinpathruns', function(event, errors, helper){
- var rows = helper.getRows();
- if (helper.getEvent() == 'insert' && rows.length && !helper.isValidateOnly()){
- var toSync = [];
- for (var i=0;i
-
-Ext4.onReady(function (){
-
- if (LABKEY.Security.currentUser.isAdmin){
- var webpart = <%=webpartContext%>;
-
- Ext4.define('ETLPanel', {
- extend: 'Ext.form.Panel',
- initComponent: function(){
- Ext4.apply(this, {
- border: false,
- items: [{
- html: 'Loading...'
- }],
- buttons: [{
- text: 'Submit',
- handler: this.onSubmit
- },{
- text: 'Pull From Merge Now',
- itemId: 'runEtlBtn',
- disabled: true,
- handler: function(btn){
- LABKEY.Ajax.request({
- url: LABKEY.ActionURL.buildURL('mergeSync', 'pullFromMerge', null),
- method : 'POST',
- scope: this,
- failure: LDK.Utils.getErrorCallback({
- showAlertOnError: true
- })
- });
- Ext4.Msg.alert('Request Sent', 'A request has been sent to pull data from merge');
- }
- }]
- });
-
- this.loadData();
- this.callParent();
- },
-
- loadData: function(){
- LABKEY.Ajax.request({
- url: LABKEY.ActionURL.buildURL('mergeSync', 'getEtlDetails', null),
- method : 'GET',
- scope: this,
- failure: LDK.Utils.getErrorCallback(),
- success: this.onLoad
- });
- },
-
- onLoad: function(results){
- var json = LDK.Utils.decodeHttpResponseJson(results);
- var labelWidth = 180;
- var width = 550;
-
- var toAdd = [];
- toAdd.push({
- xtype: 'checkbox',
- fieldLabel: 'Pull Enabled',
- labelWidth: labelWidth,
- width: width,
- itemId: 'pullEnabled',
- checked: json.pullEnabled
- });
-
- toAdd.push({
- xtype: 'checkbox',
- fieldLabel: 'Push Enabled',
- labelWidth: labelWidth,
- width: width,
- itemId: 'pushEnabled',
- checked: json.pushEnabled
- });
-
- toAdd.push({
- xtype: 'checkbox',
- fieldLabel: 'Sync Animals and Projects',
- labelWidth: labelWidth,
- width: width,
- itemId: 'syncAnimalsAndProjects',
- checked: json.syncAnimalsAndProjects
- });
-
- toAdd.push({
- xtype: 'datefield',
- fieldLabel: 'Min Date',
- labelWidth: labelWidth,
- width: width,
- itemId: 'lastRun',
- //format: 'Y-m-d h:i',
- value: LDK.ConvertUtils.parseDate(json.lastRun)
- });
-
- toAdd.push({
- xtype: 'displayfield',
- fieldLabel: 'Next Run',
- labelWidth: labelWidth,
- width: width,
- value: json.nextRun
- });
-
- if (json.pullEnabled)
- this.down('#runEtlBtn').setDisabled(false);
-
- Ext4.each(json.configKeys, function(key){
- toAdd.push({
- xtype: 'textfield',
- labelWidth: labelWidth,
- width: width,
- itemId: key,
- fieldLabel: key,
- value: json.config[key]
- });
- }, this);
-
- this.removeAll();
- this.add({
- title: 'ETL Settings',
- xtype: 'form',
- itemId: 'etlSettings',
- bodyStyle: 'padding: 5px;',
- items: toAdd
- });
- },
-
- onSubmit: function(btn){
- var form = btn.up('form');
- var settings = form.down('#etlSettings');
- var fields = settings.getForm().getFields();
-
- var json = {};
-
- fields.each(function(field){
- if (field.itemId)
- json[field.itemId] = field.getValue();
- }, this);
-
- Ext4.Msg.wait('Saving...');
- LABKEY.Ajax.request({
- url: LABKEY.ActionURL.buildURL('mergeSync', 'setEtlDetails', null),
- method : 'POST',
- params: json,
- scope: this,
- failure: LDK.Utils.getErrorCallback(),
- success: function(response){
- Ext4.Msg.hide();
- Ext4.Msg.alert('Success', 'Save Successful', function(){
- window.location.reload();
- });
- }
- });
- }
- });
-
- Ext4.create('ETLPanel', {}).render('etl_div');
- }
-});
-
-
-
-
-This page allows configuration of the Merge Sync. Below are explanations for the config properties:
-
-
-
-
- labkeyUser: A valid LabKey user, which should have admin permission in the target folder. Only required if pull is enabled.
-
-
- labkeyContainer: The containerPath where the data will be saved. Only required if pull is enabled. There can only be active container per site.
-
-
- syncInterval: The sync frequency in minutes.
-
-
- dataSourceName: The name of the data source, which should be defined in application.properties
-
-
- schemaName: The name of the source schema in the merge DB. Most likely 'dbo'
-
-
-
- Click here to view more detailed documentation on the Merge Sync process
-
-
\ No newline at end of file
diff --git a/mergesync/resources/views/begin.view.xml b/mergesync/resources/views/begin.view.xml
deleted file mode 100644
index 60651d881..000000000
--- a/mergesync/resources/views/begin.view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/mergesync/resources/views/instructions.html b/mergesync/resources/views/instructions.html
deleted file mode 100644
index 256da47a4..000000000
--- a/mergesync/resources/views/instructions.html
+++ /dev/null
@@ -1,63 +0,0 @@
-
diff --git a/mergesync/resources/views/instructions.view.xml b/mergesync/resources/views/instructions.view.xml
deleted file mode 100644
index 8b9f5cc95..000000000
--- a/mergesync/resources/views/instructions.view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/mergesync/resources/web/mergesync/mergeButtons.js b/mergesync/resources/web/mergesync/mergeButtons.js
deleted file mode 100644
index 6abd2e145..000000000
--- a/mergesync/resources/web/mergesync/mergeButtons.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
- */
-Ext4.ns('MergeSync.buttons');
-
-MergeSync.buttons = new function(){
- return {
- resyncSelected: function(dataRegionName){
- var dataRegion = LABKEY.DataRegions[dataRegionName];
- var checked = dataRegion.getChecked();
- if (!checked || !checked.length){
- alert('No records selected');
- return;
- }
-
- Ext4.Msg.wait('Loading...');
- LABKEY.Ajax.request({
- url: LABKEY.ActionURL.buildURL('mergesync', 'resyncRuns', null, {pks: checked}),
- method: 'POST',
- scope: this,
- failure: LDK.Utils.getErrorCallback(),
- success: function(){
- Ext4.Msg.hide();
- Ext4.Msg.alert('Success', 'Runs have been resynced');
- }
- });
- }
- }
-};
\ No newline at end of file
diff --git a/mergesync/src/org/labkey/mergesync/MergeSyncController.java b/mergesync/src/org/labkey/mergesync/MergeSyncController.java
deleted file mode 100644
index 11f1c8565..000000000
--- a/mergesync/src/org/labkey/mergesync/MergeSyncController.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.labkey.mergesync;
-
-import org.apache.commons.beanutils.ConversionException;
-import org.labkey.api.action.ApiResponse;
-import org.labkey.api.action.ApiSimpleResponse;
-import org.labkey.api.action.MutatingApiAction;
-import org.labkey.api.action.ReadOnlyApiAction;
-import org.labkey.api.action.SpringActionController;
-import org.labkey.api.data.ContainerManager;
-import org.labkey.api.data.ConvertHelper;
-import org.labkey.api.data.PropertyManager;
-import org.labkey.api.data.PropertyManager.WritablePropertyMap;
-import org.labkey.api.security.RequiresPermission;
-import org.labkey.api.security.ValidEmail;
-import org.labkey.api.security.permissions.AdminPermission;
-import org.labkey.api.util.JobRunner;
-import org.springframework.validation.BindException;
-import org.springframework.validation.Errors;
-
-import java.sql.SQLException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-public class MergeSyncController extends SpringActionController
-{
- private static final DefaultActionResolver _actionResolver = new DefaultActionResolver(MergeSyncController.class);
- public static final String NAME = "mergesync";
-
- public MergeSyncController()
- {
- setActionResolver(_actionResolver);
- }
-
- @RequiresPermission(AdminPermission.class)
- public static class SetEtlDetailsAction extends MutatingApiAction
- {
- @Override
- public ApiResponse execute(EtlAdminForm form, BindException errors)
- {
- Map resultProperties = new HashMap<>();
-
- WritablePropertyMap configMap = PropertyManager.getWritableProperties(MergeSyncManager.CONFIG_PROPERTY_DOMAIN, true);
-
- configMap.put(MergeSyncManager.DATA_SOURCE_PROP_NAME, form.getDataSourceName());
- configMap.put(MergeSyncManager.SCHEMA_PROP_NAME, form.getSchemaName());
- configMap.put(MergeSyncManager.MERGE_USER_PROP_NAME, form.getMergeUserName());
- if (form.getLastRun() != null)
- {
- try
- {
- Date lastRun = ConvertHelper.convert(form.getLastRun(), Date.class);
-
- configMap.put(MergeSyncManager.LAST_RUN_PROP_NAME, ((Long)lastRun.getTime()).toString());
- }
- catch (ConversionException e)
- {
- errors.reject(ERROR_MSG, e.getMessage());
- return null;
- }
- }
- configMap.put(MergeSyncManager.SYNC_INTERVAL_PROP_NAME, form.getSyncInterval() == null ? null : form.getSyncInterval().toString());
-
- if (form.getLabkeyUser() != null)
- {
- try
- {
- new ValidEmail(form.getLabkeyUser());
- }
- catch (ValidEmail.InvalidEmailException e)
- {
- errors.reject(ERROR_MSG, "Invalid email: " + e.getMessage());
- return null;
- }
-
- configMap.put(MergeSyncManager.LABKEY_USER_PROP_NAME, form.getLabkeyUser());
- }
-
- if (form.getLabkeyContainer() != null)
- {
- if (ContainerManager.getForPath(form.getLabkeyContainer()) == null)
- {
- errors.reject(ERROR_MSG, "Invalid container: " + form.getLabkeyContainer());
- return null;
- }
-
- configMap.put(MergeSyncManager.LABKEY_CONTAINER_PROP_NAME, form.getLabkeyContainer());
- }
-
- if (form.getPullEnabled() != null)
- configMap.put(MergeSyncManager.PULL_ENABLED_PROP_NAME, form.getPullEnabled().toString());
-
- if (form.getPushEnabled() != null)
- configMap.put(MergeSyncManager.PUSH_ENABLED_PROP_NAME, form.getPushEnabled().toString());
-
- if (form.getSyncAnimalsAndProjects() != null)
- configMap.put(MergeSyncManager.SYNC_ANIMALS_PROP_NAME, form.getSyncAnimalsAndProjects().toString());
-
- configMap.save();
-
- //if config was changed and the ETL is current scheduled to run, we need to restart it
- MergeSyncManager.get().onSettingsChange();
-
- resultProperties.put("success", true);
-
- return new ApiSimpleResponse(resultProperties);
- }
- }
-
- public static class EtlAdminForm
- {
- private Boolean _pullEnabled;
- private Boolean _pushEnabled;
- private Boolean _syncAnimalsAndProjects;
- private String _dataSourceName;
- private String _schemaName;
- private String _labkeyUser;
- private String _lastRun;
- private String _labkeyContainer;
- private Integer _syncInterval;
- private String _mergeUserName;
-
- public String getDataSourceName()
- {
- return _dataSourceName;
- }
-
- public void setDataSourceName(String dataSourceName)
- {
- _dataSourceName = dataSourceName;
- }
-
- public String getSchemaName()
- {
- return _schemaName;
- }
-
- public void setSchemaName(String schemaName)
- {
- _schemaName = schemaName;
- }
-
- public Boolean getPullEnabled()
- {
- return _pullEnabled;
- }
-
- public void setPullEnabled(Boolean pullEnabled)
- {
- _pullEnabled = pullEnabled;
- }
-
- public Boolean getPushEnabled()
- {
- return _pushEnabled;
- }
-
- public void setPushEnabled(Boolean pushEnabled)
- {
- _pushEnabled = pushEnabled;
- }
-
- public Boolean getSyncAnimalsAndProjects()
- {
- return _syncAnimalsAndProjects;
- }
-
- public void setSyncAnimalsAndProjects(Boolean syncAnimalsAndProjects)
- {
- _syncAnimalsAndProjects = syncAnimalsAndProjects;
- }
-
- public String getLabkeyUser()
- {
- return _labkeyUser;
- }
-
- public void setLabkeyUser(String labkeyUser)
- {
- _labkeyUser = labkeyUser;
- }
-
- public String getLabkeyContainer()
- {
- return _labkeyContainer;
- }
-
- public void setLabkeyContainer(String labkeyContainer)
- {
- _labkeyContainer = labkeyContainer;
- }
-
- public Integer getSyncInterval()
- {
- return _syncInterval;
- }
-
- public void setSyncInterval(Integer syncInterval)
- {
- _syncInterval = syncInterval;
- }
-
- public String getLastRun()
- {
- return _lastRun;
- }
-
- public void setLastRun(String lastRun)
- {
- _lastRun = lastRun;
- }
-
- public String getMergeUserName()
- {
- return _mergeUserName;
- }
-
- public void setMergeUserName(String mergeUserName)
- {
- _mergeUserName = mergeUserName;
- }
- }
-
- @RequiresPermission(AdminPermission.class)
- public static class GetEtlDetailsAction extends ReadOnlyApiAction
- {
- @Override
- public ApiResponse execute(Object form, BindException errors)
- {
- Map resultProperties = new HashMap<>();
- resultProperties.put("pullEnabled", MergeSyncManager.get().isPullEnabled());
- resultProperties.put("pushEnabled", MergeSyncManager.get().isPushEnabled());
- resultProperties.put("lastRun", MergeSyncManager.get().getLastRun());
- resultProperties.put("nextRun", MergeSyncManager.get().getNextRun());
- resultProperties.put("syncAnimalsAndProjects", MergeSyncManager.get().doSyncAnimalsAndProjects());
-
- String[] etlConfigKeys = {MergeSyncManager.DATA_SOURCE_PROP_NAME, MergeSyncManager.SCHEMA_PROP_NAME, MergeSyncManager.LABKEY_CONTAINER_PROP_NAME, MergeSyncManager.LABKEY_USER_PROP_NAME, MergeSyncManager.SYNC_INTERVAL_PROP_NAME, MergeSyncManager.MERGE_USER_PROP_NAME};
-
- resultProperties.put("configKeys", etlConfigKeys);
- resultProperties.put("config", PropertyManager.getProperties(MergeSyncManager.CONFIG_PROPERTY_DOMAIN));
-
- return new ApiSimpleResponse(resultProperties);
- }
- }
-
- @RequiresPermission(AdminPermission.class)
- public static class PullFromMergeAction extends MutatingApiAction
- {
- @Override
- public ApiResponse execute(Object form, BindException errors)
- {
- try
- {
- JobRunner.getDefault().execute(() -> new MergeSyncRunner().pullResultsFromMerge());
- }
- catch (Exception e)
- {
- errors.reject(ERROR_MSG, e.getMessage());
- return null;
- }
-
- return new ApiSimpleResponse("success", true);
- }
-
- @Override
- public void validateForm(Object form, Errors errors)
- {
- try
- {
- MergeSyncManager.get().validateSettings();
- }
- catch (Exception e)
- {
- errors.reject(ERROR_MSG, e.getMessage());
- }
- }
- }
-
- @RequiresPermission(AdminPermission.class)
- public static class ResyncRunsAction extends MutatingApiAction
- {
- @Override
- public ApiResponse execute(ResyncRunsForm form, BindException errors)
- {
- if (form.getPks() == null || form.getPks().length == 0)
- {
- errors.reject(ERROR_MSG, "Must supply a list of PKs to sync");
- return null;
- }
-
- MergeSyncRunner runner = new MergeSyncRunner();
- try
- {
- for (String pk : form.getPks())
- {
- String[] tokens = pk.split("<>");
- if (tokens.length != 2 || tokens[0] == null || tokens[1] == null)
- {
- errors.reject(ERROR_MSG, "Invalid PK: " + pk);
- return null;
- }
- else
- {
- Integer accession = Integer.parseInt(tokens[0]);
- Integer testId = Integer.parseInt(tokens[1]);
- runner.syncSingleRun(getContainer(), getUser(), accession, testId);
- }
- }
- }
- catch (SQLException | RuntimeException e)
- {
- errors.reject(ERROR_MSG, e.getMessage());
- return null;
- }
-
- return new ApiSimpleResponse("success", true);
- }
- }
-
- public static class ResyncRunsForm
- {
- private String[] _pks;
-
- public String[] getPks()
- {
- return _pks;
- }
-
- public void setPks(String[] pks)
- {
- _pks = pks;
- }
- }
-}
\ No newline at end of file
diff --git a/mergesync/src/org/labkey/mergesync/MergeSyncManager.java b/mergesync/src/org/labkey/mergesync/MergeSyncManager.java
deleted file mode 100644
index e4904067d..000000000
--- a/mergesync/src/org/labkey/mergesync/MergeSyncManager.java
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.labkey.mergesync;
-
-import org.apache.commons.lang3.time.DateUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.labkey.api.data.Container;
-import org.labkey.api.data.ContainerManager;
-import org.labkey.api.data.DbSchema;
-import org.labkey.api.data.DbSchemaType;
-import org.labkey.api.data.DbScope;
-import org.labkey.api.data.PropertyManager;
-import org.labkey.api.data.PropertyManager.WritablePropertyMap;
-import org.labkey.api.security.User;
-import org.labkey.api.security.UserManager;
-import org.labkey.api.security.ValidEmail;
-import org.labkey.api.util.JobRunner;
-import org.quartz.JobBuilder;
-import org.quartz.JobDetail;
-import org.quartz.SimpleScheduleBuilder;
-import org.quartz.Trigger;
-import org.quartz.TriggerBuilder;
-import org.quartz.impl.StdSchedulerFactory;
-
-import java.util.Calendar;
-import java.util.Date;
-
-public class MergeSyncManager
-{
- private static final MergeSyncManager _instance = new MergeSyncManager();
- private JobDetail _job = null;
- private Trigger _trigger = null;
-
- public static final String TABLE_TESTNAMEMAPPING = "testnamemapping";
- public static final String TABLE_MERGE_TO_LK_MAPPING = "mergetolkmapping";
- public static final String TABLE_ORDERSSYNCED = "orderssynced";
-
- public static final String TABLE_MERGE_ORDERS = "orders";
- public static final String TABLE_MERGE_RESULTS = "results";
- public static final String TABLE_MERGE_TEST = "tests";
- public static final String TABLE_MERGE_TESTINFO = "testinfo";
- public static final String TABLE_MERGE_CONTAINERS = "containers";
- public static final String TABLE_MERGE_VISITS = "visits";
- public static final String TABLE_MERGE_COPY_TO = "copyto";
- public static final String TABLE_MERGE_VISIT_INS = "vis_ins";
- public static final String TABLE_MERGE_INSURANCE = "insurance";
- public static final String TABLE_MERGE_PERSONNEL = "prsnl";
- public static final String TABLE_MERGE_PATIENTS = "patients";
-
- private MergeSyncManager()
- {
-
- }
-
- public static MergeSyncManager get()
- {
- return _instance;
- }
-
- private static final Logger _log = LogManager.getLogger(MergeSyncManager.class);
- private Integer _syncInterval;
-
- public static final String DATA_SOURCE_PROP_NAME = "dataSourceName";
- public static final String SCHEMA_PROP_NAME = "schemaName";
-
- public static final String LABKEY_USER_PROP_NAME = "labkeyUser";
- public static final String LABKEY_CONTAINER_PROP_NAME = "labkeyContainer";
- public static final String SYNC_INTERVAL_PROP_NAME = "syncInterval";
-
- public static final String PULL_ENABLED_PROP_NAME = "pullEnabled";
- public static final String PUSH_ENABLED_PROP_NAME = "pushEnabled";
- public static final String SYNC_ANIMALS_PROP_NAME = "syncAnimalsAndProjects";
- public static final String LAST_RUN_PROP_NAME = "lastRun";
- public static final String MERGE_USER_PROP_NAME = "mergeUserName";
-
- public static final String CONFIG_PROPERTY_DOMAIN = "org.labkey.mergesync.etl.config";
-
- public synchronized void schedule()
- {
- if (!isEnabled())
- return;
-
- try
- {
- validateSettings();
- _syncInterval = getSyncInterval();
-
- if (_syncInterval <= 0)
- {
- _log.error("Merge sync has an invalid frequency, will not schedule: {}", _syncInterval);
- return;
- }
-
- if (_job == null)
- {
- _job = JobBuilder.newJob(MergeSyncRunner.class)
- .withIdentity(MergeSyncRunner.class.getCanonicalName(), MergeSyncRunner.class.getCanonicalName())
- .usingJobData("mergeSync", MergeSyncRunner.class.getName())
- .build();
- }
-
- _trigger = TriggerBuilder.newTrigger()
- .withIdentity(MergeSyncRunner.class.getCanonicalName(), MergeSyncRunner.class.getCanonicalName())
- .withSchedule(SimpleScheduleBuilder.repeatMinutelyForever(_syncInterval))
- .forJob(_job)
- .build();
-
- StdSchedulerFactory.getDefaultScheduler().scheduleJob(_job, _trigger);
-
- _log.info("Merge sync scheduled to run every {} minutes", getSyncInterval());
- }
- catch (IllegalArgumentException e)
- {
- _log.error("Merge sync is enabled, but the saved setting are invalid. Sync will not start.", e);
- return;
- }
- catch (Exception e)
- {
- _log.error("Error scheduling Merge sync", e);
- }
- }
-
- public synchronized void unschedule()
- {
- if (_job != null)
- {
- try
- {
- StdSchedulerFactory.getDefaultScheduler().deleteJob(_job.getKey());
- _trigger = null;
- _log.info("Merge sync unscheduled");
- }
- catch (Exception e)
- {
- _log.error("Error unscheduling Merge sync", e);
- }
- }
- }
-
- public void onSettingsChange()
- {
- if (!isEnabled())
- {
- if (_job != null)
- unschedule();
- }
- else
- {
- try
- {
- validateSettings();
-
- if (_job == null)
- {
- schedule();
- }
- else
- {
- if (!_syncInterval.equals(getSyncInterval()))
- {
- _log.info("Rescheduling Merge Sync due to change in settings");
- unschedule();
- schedule();
- }
-
- //this indicates it is already scheduled with the correct frequency
- }
- }
- catch (Exception e)
- {
- //ignore
- }
- }
- }
-
- public Date getNextRun()
- {
- if (_trigger == null)
- return null;
-
- return _trigger.getFireTimeAfter(new Date());
- }
-
- public Date getLastRun()
- {
- String prop = PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(LAST_RUN_PROP_NAME);
- if (prop == null)
- return null;
-
- Long value = Long.parseLong(prop);
- if (value == null)
- {
- return null;
- }
-
- return new Date(value);
- }
-
- public void setLastRun(Date date)
- {
- WritablePropertyMap pm = PropertyManager.getWritableProperties(CONFIG_PROPERTY_DOMAIN, true);
- date = DateUtils.truncate(date, Calendar.MINUTE); //always round to nearest minute
- pm.put(LAST_RUN_PROP_NAME, String.valueOf(date.getTime()));
- pm.save();
- }
-
- public void init()
- {
- if (isEnabled() && _trigger == null)
- {
- _log.info("scheduling Merge sync");
- JobRunner.getDefault().execute(new Runnable(){
- @Override
- public void run()
- {
- schedule();
- }
- }, 60000);
- }
- }
-
- public String getDataSourceName()
- {
- String prop = PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(DATA_SOURCE_PROP_NAME);
- if (prop == null)
- return null;
-
- return prop;
- }
-
- public String getSchemaName()
- {
- String prop = PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(SCHEMA_PROP_NAME);
- if (prop == null)
- return null;
-
- return prop;
- }
-
- public User getLabKeyUser()
- {
- String prop = PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(LABKEY_USER_PROP_NAME);
- if (prop == null)
- return null;
-
- try
- {
- ValidEmail email = new ValidEmail(prop);
- return UserManager.getUser(email);
- }
- catch (ValidEmail.InvalidEmailException e)
- {
- _log.error("Invalid email saved for Merge Sync: {}", e.getMessage());
- }
-
- return null;
- }
-
- public Container getLabKeyContainer()
- {
- String prop = PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(LABKEY_CONTAINER_PROP_NAME);
- if (prop == null)
- return null;
-
- return ContainerManager.getForPath(prop);
- }
-
- public int getSyncInterval()
- {
- String prop = PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(SYNC_INTERVAL_PROP_NAME);
- if (prop == null)
- return -1;
-
- Integer value = Integer.parseInt(prop);
- if (value == null)
- {
- return -1;
- }
-
- return value;
- }
-
- public boolean isPullEnabled()
- {
- String prop = PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(PULL_ENABLED_PROP_NAME);
- if (prop == null)
- return false;
-
- Boolean value = Boolean.parseBoolean(prop);
- if (value == null)
- {
- return false;
- }
-
- return value;
- }
-
- public boolean doSyncAnimalsAndProjects()
- {
- String prop = PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(SYNC_ANIMALS_PROP_NAME);
- if (prop == null)
- return false;
-
- Boolean value = Boolean.parseBoolean(prop);
- if (value == null)
- {
- return false;
- }
-
- return value;
- }
-
- public boolean isPushEnabled()
- {
- String prop = PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(PUSH_ENABLED_PROP_NAME);
- if (prop == null)
- return false;
-
- Boolean value = Boolean.parseBoolean(prop);
- if (value == null)
- {
- return false;
- }
-
- return value;
- }
-
- public String getMergeUserName()
- {
- return PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(MERGE_USER_PROP_NAME);
- }
-
- private boolean isEnabled()
- {
- return isPullEnabled() || isPullEnabled();
- }
-
- public void validateSettings() throws IllegalArgumentException
- {
- if (isEnabled())
- {
- if (getDataSourceName() == null)
- throw new IllegalArgumentException("Must provide a data source name");
-
- DbScope scope = DbScope.getDbScope(getDataSourceName());
- if (scope == null)
- throw new IllegalArgumentException("Unknown data source: " + getDataSourceName());
-
- DbSchema schema = scope.getSchema(getSchemaName(), DbSchemaType.Bare);
- if (schema == null)
- throw new IllegalArgumentException("Unknown schema: " + getSchemaName());
- }
-
- if (isPullEnabled())
- {
- if (getLabKeyUser() == null)
- throw new IllegalArgumentException("Unknown or invalid LabKey User");
-
- if (PropertyManager.getProperties(CONFIG_PROPERTY_DOMAIN).get(LABKEY_CONTAINER_PROP_NAME) == null)
- throw new IllegalArgumentException("No LabKey container set");
- }
-
- if (isPushEnabled() || doSyncAnimalsAndProjects())
- {
- if (getMergeUserName() == null)
- throw new IllegalArgumentException("Must provide the name of the merge user to use for sync");
- }
- }
-
- public DbSchema getMergeSchema()
- {
- DbScope scope = DbScope.getDbScope(MergeSyncManager.get().getDataSourceName());
- if (scope == null)
- return null;
-
- return scope.getSchema(MergeSyncManager.get().getSchemaName(), DbSchemaType.Bare);
- }
-}
\ No newline at end of file
diff --git a/mergesync/src/org/labkey/mergesync/MergeSyncModule.java b/mergesync/src/org/labkey/mergesync/MergeSyncModule.java
deleted file mode 100644
index fdf99f12f..000000000
--- a/mergesync/src/org/labkey/mergesync/MergeSyncModule.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.labkey.mergesync;
-
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.labkey.api.data.Container;
-import org.labkey.api.data.ContainerManager;
-import org.labkey.api.ehr.EHRService;
-import org.labkey.api.ldk.ExtendedSimpleModule;
-import org.labkey.api.module.ModuleContext;
-import org.labkey.api.query.DetailsURL;
-import org.labkey.api.resource.Resource;
-import org.labkey.api.security.permissions.AdminPermission;
-import org.labkey.api.settings.AdminConsole;
-import org.labkey.api.view.WebPartFactory;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-public class MergeSyncModule extends ExtendedSimpleModule
-{
- public static final String NAME = "MergeSync";
-
- @Override
- public String getName()
- {
- return NAME;
- }
-
- @Override
- public @Nullable Double getSchemaVersion()
- {
- return 0.11;
- }
-
- @NotNull
- @Override
- protected Collection createWebPartFactories()
- {
- return Collections.emptyList();
- }
-
- @Override
- protected void init()
- {
- addController(MergeSyncController.NAME, MergeSyncController.class);
- }
-
- @Override
- protected void doStartupAfterSpringConfig(ModuleContext moduleContext)
- {
- Resource r = getModuleResource("/scripts/mergesync/mergesync.js");
- assert r != null;
- EHRService.get().registerTriggerScript(this, r);
- DetailsURL details = DetailsURL.fromString("/mergeSync-begin.view", ContainerManager.getSharedContainer());
- AdminConsole.addLink(AdminConsole.SettingsLinkType.Management, "merge sync admin", details.getActionURL(), AdminPermission.class);
-
- MergeSyncManager.get().init();
-
- EHRService.get().registerTableCustomizer(this, MergeSyncTableCustomizer.class);
- }
-
- @NotNull
- @Override
- public Collection getSummary(Container c)
- {
- return Collections.emptyList();
- }
-
- @Override
- @NotNull
- public Set getSchemaNames()
- {
- return Collections.singleton(MergeSyncSchema.NAME);
- }
-
- @Override
- protected void registerSchemas()
- {
- MergeSyncUserSchema.register(this);
- }
-}
\ No newline at end of file
diff --git a/mergesync/src/org/labkey/mergesync/MergeSyncRunner.java b/mergesync/src/org/labkey/mergesync/MergeSyncRunner.java
deleted file mode 100644
index 60b6d6d6b..000000000
--- a/mergesync/src/org/labkey/mergesync/MergeSyncRunner.java
+++ /dev/null
@@ -1,1286 +0,0 @@
-/*
- * Copyright (c) 2014-2026 LabKey Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.labkey.mergesync;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.time.DateUtils;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
-import org.jetbrains.annotations.Nullable;
-import org.labkey.api.cache.CacheManager;
-import org.labkey.api.collections.CaseInsensitiveHashMap;
-import org.labkey.api.data.ColumnInfo;
-import org.labkey.api.data.CompareType;
-import org.labkey.api.data.Container;
-import org.labkey.api.data.ConvertHelper;
-import org.labkey.api.data.DbSchema;
-import org.labkey.api.data.DbSchemaType;
-import org.labkey.api.data.DbScope;
-import org.labkey.api.data.Results;
-import org.labkey.api.data.ResultsImpl;
-import org.labkey.api.data.SQLFragment;
-import org.labkey.api.data.Selector;
-import org.labkey.api.data.SimpleFilter;
-import org.labkey.api.data.Sort;
-import org.labkey.api.data.SqlExecutor;
-import org.labkey.api.data.Table;
-import org.labkey.api.data.TableInfo;
-import org.labkey.api.data.TableSelector;
-import org.labkey.api.ehr.EHRService;
-import org.labkey.api.query.BatchValidationException;
-import org.labkey.api.query.DuplicateKeyException;
-import org.labkey.api.query.FieldKey;
-import org.labkey.api.query.InvalidKeyException;
-import org.labkey.api.query.QueryService;
-import org.labkey.api.query.QueryUpdateServiceException;
-import org.labkey.api.security.User;
-import org.labkey.api.study.Dataset;
-import org.labkey.api.study.StudyService;
-import org.labkey.api.util.GUID;
-import org.labkey.api.util.PageFlowUtil;
-import org.labkey.api.view.ActionURL;
-import org.labkey.api.view.ViewContext;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * User: bimber
- * Date: 10/10/13
- * Time: 12:26 PM
- */
-public class MergeSyncRunner implements Job
-{
- private static final Logger _log = LogManager.getLogger(MergeSyncRunner.class);
- protected final static SimpleDateFormat _dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm");
- protected final static SimpleDateFormat _dateFormat = new SimpleDateFormat("yyyy-MM-dd");
- private final Set EXCLUDED_RESULTS = PageFlowUtil.set("received", "recieved", ".", "SENT TO RHEIN CONSULTING LAB");
-
- private final Map _cachedResultTables = new HashMap<>();
- private final Map _cachedProjectNames = new HashMap<>();
- private final Map _cachedTasks = new HashMap<>();
- private final Map> _cachedRuns = new HashMap<>();
- private final Map _cachedMethods = new HashMap<>();
- private final Map _cachedTissues = new HashMap<>();
-
- public MergeSyncRunner()
- {
-
- }
-
- /**
- * pulls data from Merge back to EHR
- */
- @Override
- public void execute(JobExecutionContext context)
- {
- if (!MergeSyncManager.get().isPullEnabled())
- return;
-
- pullResultsFromMerge();
- }
-
- /**
- * When a request is sent to merge, a record is added to mergesync.orderssynced
- * This inspects any records in this table and checks whether merge has results available for that run
- */
- public void pullResultsFromMerge()
- {
- Date lastRun = MergeSyncManager.get().getLastRun();
- _log.info("Pulling results from merge verified since: {}", lastRun == null ? "never run before" : _dateTimeFormat.format(lastRun));
-
- if (lastRun == null)
- {
- lastRun = new Date();
- }
-
- TableInfo mergeOrders = MergeSyncManager.get().getMergeSchema().getTable(MergeSyncManager.TABLE_MERGE_ORDERS);
- if (mergeOrders == null)
- {
- _log.warn("Unable to find merge orders table, aborting");
- return;
- }
-
- User u = MergeSyncManager.get().getLabKeyUser();
- Container c = MergeSyncManager.get().getLabKeyContainer();
- if (u == null || c == null)
- {
- _log.error("Unknown user or container, cannot pull results from merge");
- return;
- }
-
- DbSchema mergeSchema = MergeSyncManager.get().getMergeSchema();
- if (mergeSchema == null)
- {
- _log.error("Unable to find merge schema, aborting");
- return;
- }
-
- TableInfo resultTable = MergeSyncUserSchema.getMergeDataTable(mergeSchema, null);
- if (resultTable == null)
- {
- _log.error("Unable to create merge results table");
- return;
- }
-
- try (ViewContext.StackResetter ignored = ViewContext.pushMockViewContext(u, c, new ActionURL("onprc_ehr", "fake.view", c)))
- {
- QueryService.get().setEnvironment(QueryService.Environment.USER, u);
-
- Date syncStart = new Date();
- pullResults(u, c, mergeSchema, lastRun);
-
- MergeSyncManager.get().setLastRun(syncStart);
-
- validateRuns(c, u, mergeSchema, 30, syncStart);
-
- if (MergeSyncManager.get().doSyncAnimalsAndProjects())
- {
- syncAnimalsToMerge(c, u, mergeSchema);
- syncProjectsToMerge(c, u, mergeSchema);
- }
- }
- finally
- {
- QueryService.get().clearEnvironment();
- }
- }
-
- private void pullResults(final User u, final Container c, DbSchema mergeSchema, Date minDate)
- {
- TableInfo clinpathRuns = QueryService.get().getUserSchema(u, c, "study").getTable("clinpathRuns");
- if (clinpathRuns == null)
- {
- _log.error("Unable to find study.clinpathRuns, aborting");
- return;
- }
-
- TableInfo runsTable = MergeSyncUserSchema.getMergeRunsTable(mergeSchema, null);
- final TableInfo mergeResultTable = MergeSyncUserSchema.getMergeDataTable(mergeSchema, null);
-
- //sync on date/time in order to avoid additional work
- SimpleFilter runFilter = new SimpleFilter(FieldKey.fromString("dateVerified"), minDate, CompareType.GTE);
- runFilter.addCondition(FieldKey.fromString("status"), "V");
-
- //Modified: 4-11-2016 R.Blasa allow both numeric and non-numeric ids
- //runFilter.addCondition(FieldKey.fromString("numericLastName"), true, CompareType.EQUAL);
-
- TableSelector runTs = new TableSelector(runsTable, runFilter, null);
- long count = runTs.getRowCount();
- if (count > 0)
- {
- _log.info("found {} new merge runs to sync", count);
- processRuns(c, u, runTs, mergeResultTable);
- _log.info("finished pulling results from merge");
- }
- else
- {
- _log.info("no merge runs found, nothing to do");
- }
- }
-
- private TableInfo getClinpathRuns(Container c, User u)
- {
- TableInfo clinpathRuns = QueryService.get().getUserSchema(u, c, "study").getTable("clinpathRuns");
- if (clinpathRuns == null)
- {
- _log.error("Unable to find study.clinpathRuns, aborting");
- return null;
- }
-
- return clinpathRuns;
- }
-
- private void processRuns(final Container c, final User u, TableSelector runTs, final TableInfo mergeResultTable)
- {
- runTs.forEach(new Selector.ForEachBlock<>()
- {
- @Override
- public void exec(ResultSet runRs) throws SQLException
- {
- processSingleRun(c, u, mergeResultTable, runRs, false);
- }
- });
- }
-
- private void validateRuns(final Container c, final User u, DbSchema mergeSchema, int offset, final Date syncStart)
- {
- TableInfo runsTable = MergeSyncUserSchema.getMergeRunsTable(mergeSchema, null);
-
- Calendar minDate = Calendar.getInstance();
- minDate.setTime(new Date());
- minDate.add(Calendar.DATE, -1 * offset);
-
- SimpleFilter runFilter = new SimpleFilter(FieldKey.fromString("dateVerified"), minDate, CompareType.GTE);
- runFilter.addCondition(FieldKey.fromString("dateVerified"), null, CompareType.NONBLANK);
- runFilter.addCondition(FieldKey.fromString("status"), "V");
-
- //Removed 4-12-2016 R.Blasa allow both nuemric and non-numeric ids
- // runFilter.addCondition(FieldKey.fromString("numericLastName"), true, CompareType.EQUAL);
-
- final TableSelector runTs = new TableSelector(runsTable, runFilter, null);
- if (runTs.exists())
- {
- _log.info("verifying previous {} days of merge runs are present", offset);
- runTs.forEach(new Selector.ForEachBlock<>()
- {
- @Override
- public void exec(ResultSet mergeRunRs) throws SQLException
- {
- Integer accession = mergeRunRs.getInt("accession");
- Integer panelId = mergeRunRs.getInt("panelid");
-
- Map existingRequest = getExistingRequest(c, u, accession, panelId, false);
- if (existingRequest == null || existingRequest.get("runLsid") == null) //proxy for whether this record existing in clinpath runs
- {
- if (existingRequest == null || existingRequest.get("objectid") == null) //proxy for whether a record existing in orders synced. this might
- {
- //NOTE: if the dateVerified is greater than the sync start, it was most likely verified during this sync operation and we'll pick it up during the next sync anyway
- String msg = "merge run missing: " + accession + " / " + panelId + ". No record of previous sync. Date verified: " + _dateTimeFormat.format(mergeRunRs.getDate("dateVerified"));
- if (mergeRunRs.getDate("dateVerified").getTime() <= syncStart.getTime())
- {
- _log.error(msg);
- }
- else
- {
- _log.warn(msg);
- }
- //processSingleRun(c, u, mergeResultTable, mergeRunRs, false);
- }
- else if (existingRequest.get("deletedate") != null)
- {
- //run was deleted from LabKey, ignore
- }
- else if (existingRequest.get("runLsid") == null)
- {
- _log.error("merge run missing: {} / {}. Record of previous sync, but no clinpathRun record. Date verified: {}", accession, panelId, _dateTimeFormat.format(mergeRunRs.getDate("dateVerified")));
- //processSingleRun(c, u, mergeResultTable, mergeRunRs, false);
- }
- }
- }
- });
- }
- }
-
- public void syncSingleRun(final Container c, final User u, final Integer mergeAccession, final Integer mergeTestId) throws SQLException
- {
- DbSchema mergeSchema = MergeSyncManager.get().getMergeSchema();
- if (mergeSchema == null)
- return;
-
- _log.info("attempting to resync single run: {} / {}", mergeAccession, mergeTestId);
-
- TableInfo runsTable = MergeSyncUserSchema.getMergeRunsTable(mergeSchema, null);
- final TableInfo mergeResultTable = MergeSyncUserSchema.getMergeDataTable(mergeSchema, null);
-
- SimpleFilter runFilter = new SimpleFilter(FieldKey.fromString("accession"), mergeAccession, CompareType.EQUAL);
- runFilter.addCondition(FieldKey.fromString("panelid"), mergeTestId);
- runFilter.addCondition(FieldKey.fromString("status"), "V");
-
- //Modified: 4-11-2016 R.Blasa allow both numeric and non-numeric ids
- // runFilter.addCondition(FieldKey.fromString("numericLastName"), true, CompareType.EQUAL);
-
-
-
-
- TableSelector runTs = new TableSelector(runsTable, runFilter, null);
- runTs.forEach(runRs -> {
- //delete results if we expect automatic results
- String mergeService = runRs.getString("servicename_abbr");
- String labkeyServiceName = resolveServiceName(c, u, mergeService, null);
- if (shouldSyncResults(labkeyServiceName))
- {
- deleteExistingResults(c, u, mergeAccession, mergeTestId);
- }
- else
- {
- _log.info("this service type does not have automatic results, so we will not delete any existing results");
- }
-
- try
- {
- Map existingRequest = getExistingRequest(c, u, mergeAccession, mergeTestId, false);
- if (existingRequest != null)
- {
- TableSelector runsTs = new TableSelector(getClinpathRuns(c, u), PageFlowUtil.set("lsid", "Id", "project", "date"), new SimpleFilter(FieldKey.fromString("objectid"), existingRequest.get("runid")), null);
- Map runRow = runsTs.getMap();
- if (runRow != null)
- {
- runRow = new CaseInsensitiveHashMap<>(runRow);
-
- boolean changed = false;
- if (!runRow.get("Id").equals(runRs.getString("animalId")))
- {
- runRow.put("Id", runRs.getString("Id"));
- changed = true;
- }
-
- if (!DateUtils.isSameInstant((Date) runRow.get("date"), runRs.getDate("date")))
- {
- runRow.put("date", runRs.getDate("date"));
- changed = true;
- }
-
- Integer project = resolveProject(c, u, runRs.getString("projectName"));
- if (project != null && !project.equals(runRow.get("project")))
- {
- runRow.put("project", project);
- changed = true;
- }
-
- if (changed)
- {
- Map keys = new CaseInsensitiveHashMap<>();
- keys.put("lsid", runRow.get("lsid"));
- getClinpathRuns(c, u).getUpdateService().updateRows(u, c, Collections.singletonList(runRow), Collections.singletonList(keys), null, getExtraContext());
- }
- }
- }
-
- processSingleRun(c, u, mergeResultTable, runRs, true);
- }
- catch (InvalidKeyException | BatchValidationException | QueryUpdateServiceException e)
- {
- throw new RuntimeException(e.getMessage(), e);
- }
- });
- }
-
- public void deleteExistingResults(final Container c, final User u, Integer mergeAccession, Integer mergeTestId) throws SQLException
- {
- Map request = getExistingRequest(c, u, mergeAccession, mergeTestId, false);
- if (request == null)
- {
- return;
- }
-
- String runId = (String)request.get("runid");
- if (runId == null)
- {
- return;
- }
-
- TableSelector ts = new TableSelector(getClinpathRuns(c, u), Collections.singleton("servicerequested"), new SimpleFilter(FieldKey.fromString("objectid"), runId), null);
- String servicename = ts.getObject(String.class);
- if (servicename == null)
- {
- return;
- }
-
- try
- {
- TableInfo resultTable = resolveServiceResultTable(c, u, servicename);
- if (resultTable == null)
- {
- _log.error("Unable to find result table matching: {}", servicename);
- return;
- }
-
- List lsids = new TableSelector(resultTable, Collections.singleton("lsid"), new SimpleFilter(FieldKey.fromString("runid"), runId), null).getArrayList(String.class);
- if (lsids != null && !lsids.isEmpty())
- {
- List> toDelete = new ArrayList<>();
- for (String lsid : lsids)
- {
- Map row = new CaseInsensitiveHashMap<>();
- row.put("lsid", lsid);
-
- toDelete.add(row);
- }
-
- List deleted = resultTable.getUpdateService().deleteRows(u, c, toDelete, null, getExtraContext());
- _log.info("pre-deleted {} rows from table: {}", deleted.size(), resultTable.getName());
- }
- else
- {
- _log.info("no existing results found, nothing to delete");
- }
- }
- catch (InvalidKeyException | BatchValidationException | QueryUpdateServiceException e)
- {
- throw new RuntimeException(e.getMessage(), e);
- }
- }
-
- private void processSingleRun(final Container c, final User u, TableInfo mergeResultTable, ResultSet mergeRunRs, final boolean forceSyncResults) throws SQLException
- {
- Integer accession = mergeRunRs.getInt("accession");
- Integer panelId = mergeRunRs.getInt("panelid");
-
- SimpleFilter resultFilter = new SimpleFilter(FieldKey.fromString("accession"), accession);
- resultFilter.addCondition(FieldKey.fromString("panelid"), panelId);
- resultFilter.addCondition(FieldKey.fromString("isFinal"), "Y");
- resultFilter.addCondition(FieldKey.fromString("status"), "V");
- resultFilter.addCondition(FieldKey.fromString("text_result"), EXCLUDED_RESULTS, CompareType.NOT_IN);
-
- final Map>> resultsToCreate = new HashMap<>();
- final Map resultDatasets = new HashMap<>();
-
- TableInfo tableOrdersSynced = MergeSyncSchema.getInstance().getSchema().getTable(MergeSyncManager.TABLE_ORDERSSYNCED);
- Map existingRequest = getExistingRequest(c, u, accession, panelId, true);
- final String existingRunId = existingRequest == null ? null : (String)existingRequest.get("runid");
- _log.info("processing order: {}", accession);
- _log.info("existingRunId: {}", existingRunId);
-
- Set completedTasks = new HashSet<>();
- TableSelector resultsTs = new TableSelector(mergeResultTable, resultFilter, null);
- resultsTs.forEach(new Selector.ForEachBlock<>()
- {
- @Override
- public void exec(ResultSet rs) throws SQLException
- {
- Map resultRow = processResultSet(c, u, rs, existingRunId);
- if (resultRow == null)
- {
- return; //this could occur if the result is simply a placeholder like 'RECEIVED'
- }
-
- TableInfo dataset = getResultDataset(c, u, rs.getString("servicename_abbr"), existingRunId);
- if (dataset == null)
- {
- return; //count on getResultDataset() for error reporting
- }
-
- resultDatasets.put(dataset.getName(), dataset);
-
- List> list = resultsToCreate.get(dataset.getName());
- if (list == null)
- list = new ArrayList<>();
-
- list.add(resultRow);
-
- resultsToCreate.put(dataset.getName(), list);
- }
- });
-
- DbScope scope = DbScope.getLabKeyScope();
- try (DbScope.Transaction transaction = scope.ensureTransaction())
- {
- String taskId = null;
- String runId = null;
- String runLsid = null;
- String runTaskId = null;
- String orderObjectId = null;
- if (existingRequest != null)
- {
- taskId = (String)existingRequest.get("taskid");
- runId = (String)existingRequest.get("runid");
- runLsid = (String)existingRequest.get("runLsid");
- orderObjectId = (String)existingRequest.get("objectid");
- runTaskId = (String)existingRequest.get("taskid");
- Boolean resultsReceived = (Boolean)existingRequest.get("resultsreceived");
-
- if (resultsReceived && !forceSyncResults)
- {
- _log.info("This order already has results imported, skipping: {}/{}", accession, panelId);
- return;
- }
- }
-
- String mergeService = mergeRunRs.getString("servicename_abbr");
- String labkeyServiceName = resolveServiceName(c, u, mergeService, runId);
- boolean expectResults = shouldSyncResults(labkeyServiceName);
-
- //NOTE: only put this into a task if we expect to sync results. otherwise leave it in the queue and manual entry
- if (taskId == null && expectResults)
- {
- taskId = createTask(c, u, mergeRunRs.getString("animalId"), mergeRunRs.getDate("date"));
- }
-
- if (runId == null)
- {
- Map map = createRun(c, u, mergeRunRs, taskId, (expectResults && resultsToCreate.isEmpty()));
- runId = map == null ? null : (String)map.get("runid");
- }
-
- if (runLsid == null && runId != null)
- {
- runLsid = getRunLsid(c, u, accession, panelId, runId);
- runTaskId = getRunTaskId(c, u, accession, panelId, runId);
- }
-
- String requestId = null;
- if (orderObjectId == null)
- {
- orderObjectId = createOrderRecord(c, u, taskId, runId, accession, panelId, mergeRunRs.getDate("date"));
- }
- else
- {
- requestId = getRequestForOrder(c, u, orderObjectId);
- }
-
- if (expectResults)
- {
- if (resultsToCreate.isEmpty())
- {
- _log.error("Merge request for {} was expected to have results, but does not. Accession: {}, panelId: {}", mergeService, accession, panelId);
- }
-
- for (String datasetName : resultsToCreate.keySet())
- {
- List> rows = resultsToCreate.get(datasetName);
- for (Map row : rows)
- {
- row.put("taskid", taskId);
- row.put("runid", runId);
- row.put("requestid", requestId);
- }
-
- TableInfo ds = resultDatasets.get(datasetName);
-
- _log.info("creating {} results: {}", datasetName, resultsToCreate.get(datasetName).size());
-
- BatchValidationException errors = new BatchValidationException();
- ds.getUpdateService().insertRows(u, c, resultsToCreate.get(datasetName), errors, null, getExtraContext());
- }
-
- //if successful, we need to mark the run as completed
- _log.info("marking clinpath run as complete: {}", runId);
- Map toUpdate = new CaseInsensitiveHashMap<>();
- toUpdate.put("lsid", runLsid);
- toUpdate.put("QCStateLabel", EHRService.QCSTATES.Completed.getLabel());
-
- Map toUpdateKeys = new CaseInsensitiveHashMap<>();
- toUpdateKeys.put("lsid", runLsid);
-
- getClinpathRuns(c, u).getUpdateService().updateRows(u, c, Collections.singletonList(toUpdate), Collections.singletonList(toUpdateKeys), null, getExtraContext());
- completedTasks.add(taskId);
- }
- else
- {
- if (!resultsToCreate.isEmpty())
- {
- _log.error("Merge request for {} was not expected to have results, but does. Accession: {}, panelId: {}", mergeService, accession, panelId);
- for (String tableName : resultsToCreate.keySet())
- {
- _log.error("{}: {}", tableName, resultsToCreate.get(tableName).size());
- }
- }
- else
- {
- //note: use whether this record is part of a task as a proxy for whether someone has worked with it or not
- if (runTaskId == null)
- {
- Map toUpdate = new CaseInsensitiveHashMap<>();
- toUpdate.put("lsid", runLsid);
- toUpdate.put("QCStateLabel", EHRService.QCSTATES.RequestSampleDelivered.getLabel());
-
- Map toUpdateKeys = new CaseInsensitiveHashMap<>();
- toUpdateKeys.put("lsid", runLsid);
-
- _log.info("marking clinpath run as delivered: {}", runId);
- getClinpathRuns(c, u).getUpdateService().updateRows(u, c, Collections.singletonList(toUpdate), Collections.singletonList(toUpdateKeys), null, getExtraContext());
- }
- else
- {
- _log.info("run is already part of a task, will not set qcstate");
- }
- }
- }
-
- for (String t : completedTasks)
- {
- SimpleFilter filter = new SimpleFilter(FieldKey.fromString("taskid"), t);
- filter.addCondition(FieldKey.fromString("qcstate"), EHRService.QCSTATES.Completed.getQCState(c).getRowId(), CompareType.NEQ_OR_NULL);
- TableSelector ts = new TableSelector(getClinpathRuns(c, u), filter, null);
- if (!ts.exists())
- {
- _log.info("task has no non-completed runs, marking complete: {}", t);
- TableInfo taskTable = DbSchema.get("ehr").getTable("tasks");
- Map toUpdate = new CaseInsensitiveHashMap<>();
- toUpdate.put("taskid", t);
- toUpdate.put("qcstate", EHRService.QCSTATES.Completed.getQCState(c).getRowId());
- Table.update(u, taskTable, toUpdate, t);
- }
- else
- {
- _log.info("task still has non-completed runs, will not mark complete: {}", t);
- }
- }
-
- //update the LK table to indicate results are received
- Map toUpdate = new CaseInsensitiveHashMap<>();
- toUpdate.put("resultsreceived", true);
- toUpdate.put("objectid", orderObjectId);
- toUpdate.put("taskid", taskId);
- toUpdate.put("requestid", requestId);
- Table.update(u, tableOrdersSynced, toUpdate, orderObjectId);
-
- transaction.commit();
- }
- catch (BatchValidationException | DuplicateKeyException | InvalidKeyException | QueryUpdateServiceException e)
- {
- _log.error(e.getMessage(), e);
- throw new RuntimeException(e.getMessage(), e);
- }
- }
-
- private boolean shouldSyncResults(String labkeyServiceName)
- {
- if (labkeyServiceName ==null)
- return false;
-
- String cacheKey = this.getClass().getName() + "||" + "||resultsExpectedMap";
- if (CacheManager.getSharedCache().get(cacheKey) == null)
- {
- TableInfo ti = MergeSyncSchema.getInstance().getSchema().getTable(MergeSyncManager.TABLE_TESTNAMEMAPPING);
- TableSelector ts = new TableSelector(ti);
- Map