diff --git a/nirc_ehr/resources/queries/study/deaths.js b/nirc_ehr/resources/queries/study/deaths.js index 99ef0498..626223e7 100644 --- a/nirc_ehr/resources/queries/study/deaths.js +++ b/nirc_ehr/resources/queries/study/deaths.js @@ -152,17 +152,24 @@ EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Even }); EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.COMPLETE, 'study', 'Deaths', function(event, errors, helper){ - var deaths = helper.getDeaths(); - - if (deaths) { - var ids = []; - for (var id in deaths){ - ids.push(id); - } - if (!helper.isETL() && event === 'insert') { - triggerHelper.sendDeathNotification(ids[0]); + var rows = helper.getRows() || []; + for (var i = 0; i < rows.length; i++) { + var row = rows[i].row; + var oldRow = rows[i].oldRow; + + // Notification will get sent when: + // 1) a brand-new row saved directly as 'Request: Pending' (i.e., when a user clicks 'Submit Death'), or + // 2) a draft death record moving from 'In Progress' to 'Request: Pending'. + if (!helper.isETL() && + row && row.Id && + row.QCStateLabel && + row.QCStateLabel.toUpperCase() === 'REQUEST: PENDING' && + (!oldRow || !oldRow.QCStateLabel || oldRow.QCStateLabel.toUpperCase() === 'IN PROGRESS')) { + console.log("Sending NIRC Death Notification") + triggerHelper.sendDeathNotification(row.Id); + + console.log("Updating Procedure Orders to Completed for Animal: " + row.Id + "") + triggerHelper.updateProcedureOrdersToCompleted([row.Id]); } - - triggerHelper.updateProcedureOrdersToCompleted(ids); } }); \ No newline at end of file diff --git a/nirc_ehr/src/org/labkey/nirc_ehr/query/NIRC_EHRTriggerHelper.java b/nirc_ehr/src/org/labkey/nirc_ehr/query/NIRC_EHRTriggerHelper.java index 74bd1adf..22112ed5 100644 --- a/nirc_ehr/src/org/labkey/nirc_ehr/query/NIRC_EHRTriggerHelper.java +++ b/nirc_ehr/src/org/labkey/nirc_ehr/query/NIRC_EHRTriggerHelper.java @@ -950,7 +950,7 @@ public void updateProcedureOrdersToCompleted(List ids) if (results.length == 0) { - _log.info("No prc_order rows found with 'Request: Approved' status for the provided IDs"); + _log.info("No Procedure Orders found with 'Request: Approved' status for the provided IDs"); return; }