From 5a3ad5638726922ee352e2f9a485886ebadcd7d0 Mon Sep 17 00:00:00 2001 From: Binal Patel Date: Thu, 4 Sep 2025 21:32:39 -0700 Subject: [PATCH 1/2] Add error message for a duplicate animal id. --- nirc_ehr/resources/queries/study/arrival.js | 4 ++++ .../nirc_ehr/query/NIRC_EHRTriggerHelper.java | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/nirc_ehr/resources/queries/study/arrival.js b/nirc_ehr/resources/queries/study/arrival.js index 0d31e16e..aa2e5ec1 100644 --- a/nirc_ehr/resources/queries/study/arrival.js +++ b/nirc_ehr/resources/queries/study/arrival.js @@ -12,6 +12,10 @@ function onInit(event, helper){ } EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.BEFORE_UPSERT, 'study', 'Arrival', function(helper, scriptErrors, row, oldRow) { + if (triggerHelper.animalIdExists(row.Id)) { + EHR.Server.Utils.addError(scriptErrors, 'Id', 'Animal Id ' + row.Id + ' is already in use. Please use a different Id.', 'ERROR'); + } + if (row.eventDate) { row.date = row.eventDate; } 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 c423298f..0f86c196 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 @@ -264,6 +264,18 @@ public String saveBirthRecord(String id, Map row) throws QueryUp return null; } + public boolean animalIdExists(String id) + { + TableInfo ti = getTableInfo("study", "demographics"); + if (ti != null) + { + SimpleFilter filter = new SimpleFilter(FieldKey.fromString("Id"), id); + TableSelector ts = new TableSelector(ti, PageFlowUtil.set("lsid"), filter, null); + return ts.exists(); + } + return false; + } + public boolean birthExists(String id) { TableInfo ti = getTableInfo("study", "birth"); @@ -275,6 +287,7 @@ public boolean birthExists(String id) } return false; } + public boolean deathExists(String id) { TableInfo ti = getTableInfo("study", "deaths"); From bde3184fa434712553ce8d9f471d35c686d42028 Mon Sep 17 00:00:00 2001 From: Binal Patel Date: Sat, 6 Sep 2025 21:17:36 -0700 Subject: [PATCH 2/2] Code review change: Add to BEFORE_INSERT instead of BEFORE_UPSERT --- nirc_ehr/resources/queries/study/arrival.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/nirc_ehr/resources/queries/study/arrival.js b/nirc_ehr/resources/queries/study/arrival.js index aa2e5ec1..7f1d4366 100644 --- a/nirc_ehr/resources/queries/study/arrival.js +++ b/nirc_ehr/resources/queries/study/arrival.js @@ -10,11 +10,15 @@ function onInit(event, helper){ skipAssignmentCheck: true, }); } -EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.BEFORE_UPSERT, 'study', 'Arrival', function(helper, scriptErrors, row, oldRow) { + +EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.BEFORE_INSERT, 'study', 'Arrival', function(helper, scriptErrors, row, oldRow) { if (triggerHelper.animalIdExists(row.Id)) { EHR.Server.Utils.addError(scriptErrors, 'Id', 'Animal Id ' + row.Id + ' is already in use. Please use a different Id.', 'ERROR'); } +}); + +EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.BEFORE_UPSERT, 'study', 'Arrival', function(helper, scriptErrors, row, oldRow) { if (row.eventDate) { row.date = row.eventDate;