From 139f135dbfe5826d1eeea79622720b722bfc88bd Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Wed, 15 Oct 2025 06:44:56 -0700 Subject: [PATCH 1/3] case validation cleanup and fix --- nirc_ehr/resources/queries/study/cases.js | 47 ++++++++++------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/nirc_ehr/resources/queries/study/cases.js b/nirc_ehr/resources/queries/study/cases.js index a645e309..d2aee175 100644 --- a/nirc_ehr/resources/queries/study/cases.js +++ b/nirc_ehr/resources/queries/study/cases.js @@ -15,21 +15,29 @@ function onInit(event, helper) { EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.BEFORE_UPSERT, 'study', 'cases', function(helper, errors, row, oldRow){ if (!helper.isETL()) { + var error = false; if (row.enddate) { if (!row.closeRemark) { EHR.Server.Utils.addError(errors, 'closeRemark', 'Close remark required when closing a case.', 'ERROR'); + error = true; } if(!triggerHelper.canCloseCase(row.category)) { EHR.Server.Utils.addError(errors, 'enddate', 'Veterinarian permission required to close a case.', 'ERROR'); + error = true; } } + if (!row.performedby) { + EHR.Server.Utils.addError(errors, 'performedby', 'Opened by is a required field.', 'ERROR'); + error = true; + } + if (!helper.isValidateOnly() && row.caseid && row.enddate && (row.enddate != oldRow.enddate)) { triggerHelper.closeDailyClinicalObs(row.caseid, row.enddate); } - if (!helper.isValidateOnly()) { + if (!helper.isValidateOnly() && !error) { var qc; if (row.QCStateLabel) { qc = EHR.Server.Security.getQCStateByLabel(row.QCStateLabel); @@ -41,36 +49,21 @@ EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Even if (!qc) { console.error('Unable to find QCState: ' + row.QCState + '/' + row.QCStateLabel); } - - // Don't allow taking an existing non-draft case back to draft - if (oldRow && qc.Label == 'In Progress') { - var oldQc = EHR.Server.Security.getQCStateByLabel(oldRow.QCStateLabel); - if (oldQc.Label != 'In Progress') { - EHR.Server.Utils.addError(errors, null, 'Cannot save a draft copy of a case already opened or in review.', 'ERROR'); - } - } else { - var reopen = oldRow && oldRow.enddate && !row.enddate; - if ((reopen || helper.getEvent() == 'insert') && row.caseid && row.Id && row.performedby && row.taskid && row.category == 'Clinical') { - var qc; - if (row.QCStateLabel) { - qc = EHR.Server.Security.getQCStateByLabel(row.QCStateLabel); - } - else if (row.QCState) { - qc = EHR.Server.Security.getQCStateByRowId(row.QCState); - } - if (!qc) { - console.error('Unable to find QCState: ' + row.QCState + '/' + row.QCStateLabel); + // Don't allow taking an existing non-draft case back to draft + if (oldRow && qc.Label == 'In Progress') { + var oldQc = EHR.Server.Security.getQCStateByLabel(oldRow.QCStateLabel); + if (oldQc.Label != 'In Progress') { + EHR.Server.Utils.addError(errors, null, 'Cannot save a draft copy of a case already opened or in review.', 'ERROR'); } - else if ((qc.Label == 'Completed' || qc.Label == 'Review Required') && row.caseid && row.Id && row.performedby && row.taskid && qc) { - var ordersInTransaction = helper.getProperty('ordersInTransaction'); - var oit = []; - if (ordersInTransaction && ordersInTransaction.length) { - oit = ordersInTransaction; - } - triggerHelper.ensureDailyClinicalObservationOrders(row.Id, row.caseid, row.date, row.performedby, qc.RowId, row.taskid, oit); + } else if (row.category == 'Clinical' && (qc.Label == 'Completed' || qc.Label == 'Review Required') && row.caseid && row.Id && row.performedby && row.taskid) { + var ordersInTransaction = helper.getProperty('ordersInTransaction'); + var oit = []; + if (ordersInTransaction && ordersInTransaction.length) { + oit = ordersInTransaction; } + triggerHelper.ensureDailyClinicalObservationOrders(row.Id, row.caseid, row.date, row.performedby, qc.RowId, row.taskid, oit); } } } From f9d209e025570704a0a6698c95c625aeab9cee7d Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Wed, 15 Oct 2025 06:45:09 -0700 Subject: [PATCH 2/3] use ldk admin update --- nirc_ehr/resources/views/datasets.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nirc_ehr/resources/views/datasets.html b/nirc_ehr/resources/views/datasets.html index 022bf7b5..1b828030 100644 --- a/nirc_ehr/resources/views/datasets.html +++ b/nirc_ehr/resources/views/datasets.html @@ -80,7 +80,7 @@ cfg.items.push({ xtype: 'ldk-linkbutton', tooltip: item.searchTooltip || 'Admin click to update records', - href: LABKEY.ActionURL.buildURL('ehr', 'updateQuery', null, params), + href: LABKEY.ActionURL.buildURL('ldk', 'updateQuery', null, params), text: 'Admin Update Records' }); } From 95ea85739869542eb2ed1c041f97e6989ee1741e Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Thu, 16 Oct 2025 09:55:20 -0700 Subject: [PATCH 3/3] casing --- nirc_ehr/resources/queries/study/cases.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nirc_ehr/resources/queries/study/cases.js b/nirc_ehr/resources/queries/study/cases.js index d2aee175..02dc3b8b 100644 --- a/nirc_ehr/resources/queries/study/cases.js +++ b/nirc_ehr/resources/queries/study/cases.js @@ -29,7 +29,7 @@ EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Even } if (!row.performedby) { - EHR.Server.Utils.addError(errors, 'performedby', 'Opened by is a required field.', 'ERROR'); + EHR.Server.Utils.addError(errors, 'performedby', 'Opened By is a required field.', 'ERROR'); error = true; }