diff --git a/nirc_ehr/resources/queries/study/arrival.js b/nirc_ehr/resources/queries/study/arrival.js index 0d31e16e..7f1d4366 100644 --- a/nirc_ehr/resources/queries/study/arrival.js +++ b/nirc_ehr/resources/queries/study/arrival.js @@ -10,6 +10,14 @@ function onInit(event, helper){ skipAssignmentCheck: true, }); } + +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) { 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");