From 5cfa7577c5621c8c3185e95b9bcc2cbc078d0035 Mon Sep 17 00:00:00 2001 From: Spamhurts Date: Fri, 19 Dec 2025 11:53:13 -0600 Subject: [PATCH 1/5] Added earliest housing demographics provider and query. --- .../study/demographicsEarliestHousing.sql | 17 ++++++++ .../org/labkey/snprc_ehr/SNPRC_EHRModule.java | 2 + .../EarliestHousingDemographicsProvider.java | 43 +++++++++++++++++++ .../snprc_ehr/table/SNPRC_EHRCustomizer.java | 21 +++++++++ 4 files changed, 83 insertions(+) create mode 100644 snprc_ehr/resources/queries/study/demographicsEarliestHousing.sql create mode 100644 snprc_ehr/src/org/labkey/snprc_ehr/demographics/EarliestHousingDemographicsProvider.java diff --git a/snprc_ehr/resources/queries/study/demographicsEarliestHousing.sql b/snprc_ehr/resources/queries/study/demographicsEarliestHousing.sql new file mode 100644 index 00000000..3480516d --- /dev/null +++ b/snprc_ehr/resources/queries/study/demographicsEarliestHousing.sql @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017-2018 LabKey Corporation + * + * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 + */ +SELECT + d.Id AS Id, + h.date as FirstHousingDate, + h.room as FirstHousingRoom, + h.room.area.description as FirstHousingRoomDescription +FROM study.demographics d + + +--date of first housing +LEFT JOIN study.housing as h on h.id = d.id and h.qcstate.publicdata = true + and h.date = (select min(c1.date) from study.housing as c1 + where h.id = c1.id) diff --git a/snprc_ehr/src/org/labkey/snprc_ehr/SNPRC_EHRModule.java b/snprc_ehr/src/org/labkey/snprc_ehr/SNPRC_EHRModule.java index 821b2d6a..e2d0c612 100644 --- a/snprc_ehr/src/org/labkey/snprc_ehr/SNPRC_EHRModule.java +++ b/snprc_ehr/src/org/labkey/snprc_ehr/SNPRC_EHRModule.java @@ -65,6 +65,7 @@ import org.labkey.snprc_ehr.demographics.CurrentDietDemographicsProvider; import org.labkey.snprc_ehr.demographics.CurrentPedigreeDemographicsProvider; import org.labkey.snprc_ehr.demographics.DeathsDemographicsProvider; +import org.labkey.snprc_ehr.demographics.EarliestHousingDemographicsProvider; import org.labkey.snprc_ehr.demographics.IdHistoryDemographicsProvider; import org.labkey.snprc_ehr.demographics.LastBcsDemographicsProvider; import org.labkey.snprc_ehr.demographics.LastHousingDemographicsProvider; @@ -194,6 +195,7 @@ protected void doStartupAfterSpringConfig(ModuleContext moduleContext) EHRService.get().registerDemographicsProvider(new MhcSummaryDemographicsProvider(this)); EHRService.get().registerDemographicsProvider(new LastHousingDemographicsProvider(this)); EHRService.get().registerDemographicsProvider(new LastBcsDemographicsProvider(this)); + EHRService.get().registerDemographicsProvider(new EarliestHousingDemographicsProvider(this)); EHRService.get().registerReportLink(EHRService.REPORT_LINK_TYPE.housing, "Find Animals Housed In A Given Room/Cage At A Specific Time", this, DetailsURL.fromString("/ehr-housingOverlaps.view?groupById=1"), "Commonly Used Queries"); EHRService.get().registerReportLink(EHRService.REPORT_LINK_TYPE.animalSearch, "Population Summary By Species, Gender and Age", this, DetailsURL.fromString("/query-executeQuery.view?schemaName=study&query.queryName=colonyPopulationByAge"), "Other Searches"); diff --git a/snprc_ehr/src/org/labkey/snprc_ehr/demographics/EarliestHousingDemographicsProvider.java b/snprc_ehr/src/org/labkey/snprc_ehr/demographics/EarliestHousingDemographicsProvider.java new file mode 100644 index 00000000..ee60b3d9 --- /dev/null +++ b/snprc_ehr/src/org/labkey/snprc_ehr/demographics/EarliestHousingDemographicsProvider.java @@ -0,0 +1,43 @@ +package org.labkey.snprc_ehr.demographics; + +import org.labkey.api.ehr.demographics.AbstractListDemographicsProvider; +import org.labkey.api.module.Module; +import org.labkey.api.query.FieldKey; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +public class EarliestHousingDemographicsProvider extends AbstractListDemographicsProvider + +{ + + public EarliestHousingDemographicsProvider(Module owner) + { + super(owner, "study", "demographicsEarliestHousing", "EarliestHousing"); + _supportsQCState = false; + } + + @Override + public String getName() + { + return "Earliest Housing"; + } + + @Override + protected Collection getFieldKeys() + { + Set keys = new HashSet<>(); + keys.add(FieldKey.fromString("FirstHousingDate")); + keys.add(FieldKey.fromString("FirstHousingRoom")); + keys.add(FieldKey.fromString("FirstHousingRoomDescription")); + + return keys; + } + + @Override + public boolean requiresRecalc(String schema, String query) + { + return ("study".equalsIgnoreCase(schema) && "Housing".equalsIgnoreCase(query)); + } +} diff --git a/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java b/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java index 8da6ec56..dc43a3ad 100644 --- a/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java +++ b/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java @@ -19,6 +19,7 @@ import org.jetbrains.annotations.Nullable; import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.data.AbstractTableInfo; +import org.labkey.api.data.BaseColumnInfo; import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.Container; import org.labkey.api.data.ForeignKey; @@ -29,6 +30,7 @@ import org.labkey.api.data.WhitespacePreservingDisplayColumnFactory; import org.labkey.api.data.WrappedColumn; +import org.labkey.api.data.WrappedColumnInfo; import org.labkey.api.ehr.EHRService; import org.labkey.api.ehr.security.EHRDataEntryPermission; import org.labkey.api.exp.api.StorageProvisioner; @@ -62,6 +64,8 @@ public class SNPRC_EHRCustomizer extends AbstractTableCustomizer private Set calculatedColumns; + public static final String ID_COL = "Id"; + public SNPRC_EHRCustomizer() { _provider = new CustomizerQueryProvider(); @@ -134,6 +138,17 @@ public UserSchema getEHRUserSchema(AbstractTableInfo ds, String name) return getUserSchema(ds, name, ehrContainer); } + private BaseColumnInfo getWrappedIdCol(UserSchema us, AbstractTableInfo ds, String name, String queryName) + { + WrappedColumn col = new WrappedColumn(ds.getColumn(ID_COL), name); + col.setReadOnly(true); + col.setIsUnselectable(true); + col.setUserEditable(false); + col.setFk(new QueryForeignKey(ds.getUserSchema(), null, us, null, queryName, ID_COL, ID_COL)); + + return col; + } + protected boolean hasTable(AbstractTableInfo tableInfo, String schemaName, String queryName, @Nullable Container targetContainer) { if (targetContainer == null) @@ -161,8 +176,14 @@ public void doTableSpecificCustomizations(AbstractTableInfo ti) */ if (matches(ti, "study", "Animal")) { + UserSchema us = getEHRUserSchema(ti, STUDY_SCHEMA); customizeAnimalTable(ti); + var col42 = getWrappedIdCol(us, ti, "earliestLocation", "demographicsEarliestHousing"); + col42.setLabel("Housing - Earliest"); + col42.setDescription("The calculates the earliest housing location for each living animal."); + ti.addColumn(col42); } + if (matches(ti, "study", "Animal Events") || matches(ti, "study", "encounters")) { customizeEncounterTable(ti); From 171ee7a31e39acd32d4b8f0d0d8cc91e9cc74a63 Mon Sep 17 00:00:00 2001 From: Spamhurts Date: Fri, 19 Dec 2025 14:50:50 -0600 Subject: [PATCH 2/5] removed redundant column wrapping method and replaced "Id" strings with a constant --- .../snprc_ehr/table/SNPRC_EHRCustomizer.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java b/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java index dc43a3ad..082541af 100644 --- a/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java +++ b/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java @@ -178,7 +178,7 @@ public void doTableSpecificCustomizations(AbstractTableInfo ti) { UserSchema us = getEHRUserSchema(ti, STUDY_SCHEMA); customizeAnimalTable(ti); - var col42 = getWrappedIdCol(us, ti, "earliestLocation", "demographicsEarliestHousing"); + var col42 = getWrappedCol(us, ti, "earliestLocation", "demographicsEarliestHousing",ID_COL,ID_COL); col42.setLabel("Housing - Earliest"); col42.setDescription("The calculates the earliest housing location for each living animal."); ti.addColumn(col42); @@ -465,27 +465,27 @@ private void customizeAnimalTable(AbstractTableInfo ds) } if (ds.getColumn("flags") == null) { - var col = getWrappedCol(us, ds, "Flags", "demographicsActiveFlags", "Id", "Id"); + var col = getWrappedCol(us, ds, "Flags", "demographicsActiveFlags", ID_COL, ID_COL); col.setLabel("ActiveFlags"); col.setURL(DetailsURL.fromString("/query/executeQuery.view?schemaName=ehr_lookups&queryName=flag_values&query.Id~eq=${Id}", ds.getContainerContext())); ds.addColumn(col); } if (ds.getColumn("parents") == null) { - var col = getWrappedCol(us, ds, "parents", "demographicsParents", "Id", "Id"); + var col = getWrappedCol(us, ds, "parents", "demographicsParents", ID_COL, ID_COL); col.setLabel("Parents"); ds.addColumn(col); } if (ds.getColumn("mhcSummary") == null) { - var col = getWrappedCol(us, ds, "mhcSummary", "mhcSummary", "Id", "Id"); + var col = getWrappedCol(us, ds, "mhcSummary", "mhcSummary", ID_COL, ID_COL); col.setLabel("mhcSummary"); ds.addColumn(col); } if (ds.getColumn("totalOffspring") == null) { - var col15 = getWrappedCol(us, ds, "totalOffspring", "demographicsTotalOffspring", "Id", "Id"); + var col15 = getWrappedCol(us, ds, "totalOffspring", "demographicsTotalOffspring", ID_COL, ID_COL); col15.setLabel("Number of Offspring"); col15.setDescription("Shows the total offspring of each animal"); ds.addColumn(col15); @@ -493,7 +493,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("labworkHistory") == null) { - var col = getWrappedCol(us, ds, "labworkHistory", "demographicsLabwork", "Id", "Id"); + var col = getWrappedCol(us, ds, "labworkHistory", "demographicsLabwork", ID_COL, ID_COL); col.setLabel("Labwork History"); col.setDescription("Shows the date of last labwork for a subsets of tests"); ds.addColumn(col); @@ -502,7 +502,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) //do we have freezer samples? if (ds.getColumn("freezerSamples") == null) { - var col = getWrappedCol(us, ds, "freezerSamples", "demographicsFreezers", "Id", "Id"); + var col = getWrappedCol(us, ds, "freezerSamples", "demographicsFreezers", ID_COL, ID_COL); col.setLabel("Freezer Samples"); col.setDescription("Shows the number of archived freezer samples"); col.setURL(DetailsURL.fromString("/query/executeQuery.view?schemaName=study&queryName=freezerWorks&query.Id~eq=${Id}", ds.getContainerContext())); @@ -510,7 +510,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) } if (ds.getColumn("idHistoryList") == null) { - var col = getWrappedCol(us, ds, "idHistoryList", "demographicsIdHistory", "Id", "Id"); + var col = getWrappedCol(us, ds, "idHistoryList", "demographicsIdHistory", ID_COL, ID_COL); col.setLabel("Id Hx List"); col.setDescription("List of Ids assigned to animal"); col.setURL(DetailsURL.fromString("/query/executeQuery.view?schemaName=study&queryName=idHistory&query.Id~eq=${Id}", ds.getContainerContext())); @@ -519,7 +519,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("activeAccounts") == null) { - var col = getWrappedCol(us, ds, "activeAccounts", "demographicsActiveAccount", "Id", "Id"); + var col = getWrappedCol(us, ds, "activeAccounts", "demographicsActiveAccount", ID_COL, ID_COL); col.setLabel("Accounts - Active"); col.setDescription("Shows all accounts to which the animal is actively assigned on the current date"); ds.addColumn(col); @@ -527,7 +527,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("packageCategory") == null) { - var col = getWrappedCol(us, ds, "packageCategory", "demographicsPackageCategories", "Id", "Id"); + var col = getWrappedCol(us, ds, "packageCategory", "demographicsPackageCategories", ID_COL, ID_COL); col.setLabel("Package Category"); col.setDescription("Shows the package category for procedures"); ds.addColumn(col); @@ -535,7 +535,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("activeAssignments") == null) { - var col = getWrappedCol(us, ds, "activeAssignments", "demographicsActiveAssignment", "Id", "Id"); + var col = getWrappedCol(us, ds, "activeAssignments", "demographicsActiveAssignment", ID_COL, ID_COL); col.setLabel("IACUC Assignments - Active"); col.setDescription("Shows all protocols to which the animal is actively assigned on the current date"); ds.addColumn(col); @@ -543,7 +543,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("activeGroups") == null) { - var col = getWrappedCol(us, ds, "activeGroups", "demographicsAnimalGroups", "Id", "Id"); + var col = getWrappedCol(us, ds, "activeGroups", "demographicsAnimalGroups", ID_COL, ID_COL); col.setLabel("Animal Groups - Active"); col.setDescription("Shows all groups to which the animal is actively assigned on the current date"); ds.addColumn(col); @@ -551,14 +551,14 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("MostRecentTBDate") == null) { - var col = getWrappedCol(us, ds, "MostRecentTBDate", "demographicsMostRecentTBDate", "Id", "Id"); + var col = getWrappedCol(us, ds, "MostRecentTBDate", "demographicsMostRecentTBDate", ID_COL, ID_COL); col.setLabel("Most Recent TB"); col.setDescription("Queries the most recent TB date for the animal."); ds.addColumn(col); } if (ds.getColumn("LastBCS") == null) { - var col = getWrappedCol(us, ds, "LastBCS", "demographicsLastBCS", "Id", "Id"); + var col = getWrappedCol(us, ds, "LastBCS", "demographicsLastBCS", ID_COL, ID_COL); col.setLabel("Most Recent BCS"); col.setDescription("Queries the most recent BCS value for the animal."); ds.addColumn(col); @@ -567,7 +567,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) // Change label and description 8/31/2017 tjh if (ds.getColumn("MostRecentArrival") != null) { - var col = getWrappedCol(us, ds, "MostRecentArrival", "demographicsArrival", "Id", "Id"); + var col = getWrappedCol(us, ds, "MostRecentArrival", "demographicsArrival", ID_COL, ID_COL); ds.removeColumn(col); col.setLabel("Acquisition"); col.setDescription("Calculates the earliest and most recent acquisition per animal."); @@ -577,7 +577,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) // Change label and description 8/31/2017 tjh if (ds.getColumn("MostRecentDeparture") != null) { - var col = getWrappedCol(us, ds, "MostRecentDeparture", "demographicsMostRecentDeparture", "Id", "Id"); + var col = getWrappedCol(us, ds, "MostRecentDeparture", "demographicsMostRecentDeparture", ID_COL, ID_COL); ds.removeColumn(col); col.setLabel("Disposition"); col.setDescription("Calculates the earliest and most recent departure per animal, if applicable, and most recent acquisition."); @@ -589,7 +589,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) { if (ds.getColumn("GenDemoCustomizer") == null) { - var col = getWrappedCol(us, ds, "GenDemoCustomizer", "GenDemoCustomizer", "Id", "Id"); + var col = getWrappedCol(us, ds, "GenDemoCustomizer", "GenDemoCustomizer", ID_COL, ID_COL); col.setLabel("Genetic Assays"); col.setDescription("Show if genetic assays exist for ID"); ds.addColumn(col); From 7c22bdfb2b3b5f26d51ba08c145a46bc243c6a17 Mon Sep 17 00:00:00 2001 From: Spamhurts Date: Fri, 19 Dec 2025 15:54:28 -0600 Subject: [PATCH 3/5] actually removed the redundant column wrapping method that was missed on the last commit and aligned wrapped column name with the demographic provider --- .../EarliestHousingDemographicsProvider.java | 2 +- .../labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java | 13 +------------ 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/snprc_ehr/src/org/labkey/snprc_ehr/demographics/EarliestHousingDemographicsProvider.java b/snprc_ehr/src/org/labkey/snprc_ehr/demographics/EarliestHousingDemographicsProvider.java index ee60b3d9..ca3dd6e0 100644 --- a/snprc_ehr/src/org/labkey/snprc_ehr/demographics/EarliestHousingDemographicsProvider.java +++ b/snprc_ehr/src/org/labkey/snprc_ehr/demographics/EarliestHousingDemographicsProvider.java @@ -14,7 +14,7 @@ public class EarliestHousingDemographicsProvider extends AbstractListDemographic public EarliestHousingDemographicsProvider(Module owner) { - super(owner, "study", "demographicsEarliestHousing", "EarliestHousing"); + super(owner, "study", "demographicsEarliestHousing", "earliestHousing"); _supportsQCState = false; } diff --git a/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java b/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java index 082541af..156489ae 100644 --- a/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java +++ b/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java @@ -138,17 +138,6 @@ public UserSchema getEHRUserSchema(AbstractTableInfo ds, String name) return getUserSchema(ds, name, ehrContainer); } - private BaseColumnInfo getWrappedIdCol(UserSchema us, AbstractTableInfo ds, String name, String queryName) - { - WrappedColumn col = new WrappedColumn(ds.getColumn(ID_COL), name); - col.setReadOnly(true); - col.setIsUnselectable(true); - col.setUserEditable(false); - col.setFk(new QueryForeignKey(ds.getUserSchema(), null, us, null, queryName, ID_COL, ID_COL)); - - return col; - } - protected boolean hasTable(AbstractTableInfo tableInfo, String schemaName, String queryName, @Nullable Container targetContainer) { if (targetContainer == null) @@ -178,7 +167,7 @@ public void doTableSpecificCustomizations(AbstractTableInfo ti) { UserSchema us = getEHRUserSchema(ti, STUDY_SCHEMA); customizeAnimalTable(ti); - var col42 = getWrappedCol(us, ti, "earliestLocation", "demographicsEarliestHousing",ID_COL,ID_COL); + var col42 = getWrappedCol(us, ti, "earliestHousing", "demographicsEarliestHousing",ID_COL,ID_COL); col42.setLabel("Housing - Earliest"); col42.setDescription("The calculates the earliest housing location for each living animal."); ti.addColumn(col42); From 843121371dd4cf5fd1b93d67be8ef159f8674a80 Mon Sep 17 00:00:00 2001 From: Spamhurts Date: Mon, 22 Dec 2025 14:21:25 -0600 Subject: [PATCH 4/5] - Use the ID_COLUMN constant in QueryConstants.java. - Renamed local wrapped column var name. - added offspring to the browse all datasets screen --- .../queries/study/BrowseDataSets.sql | 2 + .../snprc_ehr/table/SNPRC_EHRCustomizer.java | 44 +++++++++---------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/snprc_ehr/resources/queries/study/BrowseDataSets.sql b/snprc_ehr/resources/queries/study/BrowseDataSets.sql index aab30e6f..9b2b44a5 100644 --- a/snprc_ehr/resources/queries/study/BrowseDataSets.sql +++ b/snprc_ehr/resources/queries/study/BrowseDataSets.sql @@ -68,3 +68,5 @@ UNION select 'ehr' as schema, 'Colony Management' as CategoryId,'Kinship' as Label, 'kinship' as Name, true as ShowByDefault, true as isAnimal UNION select 'ehr' as schema, 'Colony Management' as CategoryId,'Project' as Label, 'project' as Name, true as ShowByDefault, false as isAnimal +UNION +select 'study' as schema, 'Colony Management' as CategoryId,'Offspring' as Label, 'demographicsOffspring' as Name, true as ShowByDefault, true as isAnimal diff --git a/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java b/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java index 156489ae..717039f9 100644 --- a/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java +++ b/snprc_ehr/src/org/labkey/snprc_ehr/table/SNPRC_EHRCustomizer.java @@ -19,7 +19,6 @@ import org.jetbrains.annotations.Nullable; import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.data.AbstractTableInfo; -import org.labkey.api.data.BaseColumnInfo; import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.Container; import org.labkey.api.data.ForeignKey; @@ -30,7 +29,6 @@ import org.labkey.api.data.WhitespacePreservingDisplayColumnFactory; import org.labkey.api.data.WrappedColumn; -import org.labkey.api.data.WrappedColumnInfo; import org.labkey.api.ehr.EHRService; import org.labkey.api.ehr.security.EHRDataEntryPermission; import org.labkey.api.exp.api.StorageProvisioner; @@ -47,7 +45,6 @@ import org.labkey.snprc_ehr.SNPRC_EHRSchema; import org.labkey.snprc_ehr.helpers.CustomizerQueryProvider; import org.labkey.snprc_ehr.model.CalculatedColumn; - import static org.labkey.snprc_ehr.constants.QueryConstants.*; import java.util.Calendar; @@ -64,7 +61,6 @@ public class SNPRC_EHRCustomizer extends AbstractTableCustomizer private Set calculatedColumns; - public static final String ID_COL = "Id"; public SNPRC_EHRCustomizer() { @@ -167,10 +163,10 @@ public void doTableSpecificCustomizations(AbstractTableInfo ti) { UserSchema us = getEHRUserSchema(ti, STUDY_SCHEMA); customizeAnimalTable(ti); - var col42 = getWrappedCol(us, ti, "earliestHousing", "demographicsEarliestHousing",ID_COL,ID_COL); - col42.setLabel("Housing - Earliest"); - col42.setDescription("The calculates the earliest housing location for each living animal."); - ti.addColumn(col42); + var col = getWrappedCol(us, ti, "earliestHousing", "demographicsEarliestHousing", ID_COLUMN, ID_COLUMN); + col.setLabel("Housing - Earliest"); + col.setDescription("The calculates the earliest housing location for each living animal."); + ti.addColumn(col); } if (matches(ti, "study", "Animal Events") || matches(ti, "study", "encounters")) @@ -454,27 +450,27 @@ private void customizeAnimalTable(AbstractTableInfo ds) } if (ds.getColumn("flags") == null) { - var col = getWrappedCol(us, ds, "Flags", "demographicsActiveFlags", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "Flags", "demographicsActiveFlags", ID_COLUMN, ID_COLUMN); col.setLabel("ActiveFlags"); col.setURL(DetailsURL.fromString("/query/executeQuery.view?schemaName=ehr_lookups&queryName=flag_values&query.Id~eq=${Id}", ds.getContainerContext())); ds.addColumn(col); } if (ds.getColumn("parents") == null) { - var col = getWrappedCol(us, ds, "parents", "demographicsParents", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "parents", "demographicsParents", ID_COLUMN, ID_COLUMN); col.setLabel("Parents"); ds.addColumn(col); } if (ds.getColumn("mhcSummary") == null) { - var col = getWrappedCol(us, ds, "mhcSummary", "mhcSummary", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "mhcSummary", "mhcSummary", ID_COLUMN, ID_COLUMN); col.setLabel("mhcSummary"); ds.addColumn(col); } if (ds.getColumn("totalOffspring") == null) { - var col15 = getWrappedCol(us, ds, "totalOffspring", "demographicsTotalOffspring", ID_COL, ID_COL); + var col15 = getWrappedCol(us, ds, "totalOffspring", "demographicsTotalOffspring", ID_COLUMN, ID_COLUMN); col15.setLabel("Number of Offspring"); col15.setDescription("Shows the total offspring of each animal"); ds.addColumn(col15); @@ -482,7 +478,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("labworkHistory") == null) { - var col = getWrappedCol(us, ds, "labworkHistory", "demographicsLabwork", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "labworkHistory", "demographicsLabwork", ID_COLUMN, ID_COLUMN); col.setLabel("Labwork History"); col.setDescription("Shows the date of last labwork for a subsets of tests"); ds.addColumn(col); @@ -491,7 +487,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) //do we have freezer samples? if (ds.getColumn("freezerSamples") == null) { - var col = getWrappedCol(us, ds, "freezerSamples", "demographicsFreezers", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "freezerSamples", "demographicsFreezers", ID_COLUMN, ID_COLUMN); col.setLabel("Freezer Samples"); col.setDescription("Shows the number of archived freezer samples"); col.setURL(DetailsURL.fromString("/query/executeQuery.view?schemaName=study&queryName=freezerWorks&query.Id~eq=${Id}", ds.getContainerContext())); @@ -499,7 +495,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) } if (ds.getColumn("idHistoryList") == null) { - var col = getWrappedCol(us, ds, "idHistoryList", "demographicsIdHistory", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "idHistoryList", "demographicsIdHistory", ID_COLUMN, ID_COLUMN); col.setLabel("Id Hx List"); col.setDescription("List of Ids assigned to animal"); col.setURL(DetailsURL.fromString("/query/executeQuery.view?schemaName=study&queryName=idHistory&query.Id~eq=${Id}", ds.getContainerContext())); @@ -508,7 +504,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("activeAccounts") == null) { - var col = getWrappedCol(us, ds, "activeAccounts", "demographicsActiveAccount", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "activeAccounts", "demographicsActiveAccount", ID_COLUMN, ID_COLUMN); col.setLabel("Accounts - Active"); col.setDescription("Shows all accounts to which the animal is actively assigned on the current date"); ds.addColumn(col); @@ -516,7 +512,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("packageCategory") == null) { - var col = getWrappedCol(us, ds, "packageCategory", "demographicsPackageCategories", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "packageCategory", "demographicsPackageCategories", ID_COLUMN, ID_COLUMN); col.setLabel("Package Category"); col.setDescription("Shows the package category for procedures"); ds.addColumn(col); @@ -524,7 +520,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("activeAssignments") == null) { - var col = getWrappedCol(us, ds, "activeAssignments", "demographicsActiveAssignment", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "activeAssignments", "demographicsActiveAssignment", ID_COLUMN, ID_COLUMN); col.setLabel("IACUC Assignments - Active"); col.setDescription("Shows all protocols to which the animal is actively assigned on the current date"); ds.addColumn(col); @@ -532,7 +528,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("activeGroups") == null) { - var col = getWrappedCol(us, ds, "activeGroups", "demographicsAnimalGroups", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "activeGroups", "demographicsAnimalGroups", ID_COLUMN, ID_COLUMN); col.setLabel("Animal Groups - Active"); col.setDescription("Shows all groups to which the animal is actively assigned on the current date"); ds.addColumn(col); @@ -540,14 +536,14 @@ private void customizeAnimalTable(AbstractTableInfo ds) if (ds.getColumn("MostRecentTBDate") == null) { - var col = getWrappedCol(us, ds, "MostRecentTBDate", "demographicsMostRecentTBDate", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "MostRecentTBDate", "demographicsMostRecentTBDate", ID_COLUMN, ID_COLUMN); col.setLabel("Most Recent TB"); col.setDescription("Queries the most recent TB date for the animal."); ds.addColumn(col); } if (ds.getColumn("LastBCS") == null) { - var col = getWrappedCol(us, ds, "LastBCS", "demographicsLastBCS", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "LastBCS", "demographicsLastBCS", ID_COLUMN, ID_COLUMN); col.setLabel("Most Recent BCS"); col.setDescription("Queries the most recent BCS value for the animal."); ds.addColumn(col); @@ -556,7 +552,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) // Change label and description 8/31/2017 tjh if (ds.getColumn("MostRecentArrival") != null) { - var col = getWrappedCol(us, ds, "MostRecentArrival", "demographicsArrival", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "MostRecentArrival", "demographicsArrival", ID_COLUMN, ID_COLUMN); ds.removeColumn(col); col.setLabel("Acquisition"); col.setDescription("Calculates the earliest and most recent acquisition per animal."); @@ -566,7 +562,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) // Change label and description 8/31/2017 tjh if (ds.getColumn("MostRecentDeparture") != null) { - var col = getWrappedCol(us, ds, "MostRecentDeparture", "demographicsMostRecentDeparture", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "MostRecentDeparture", "demographicsMostRecentDeparture", ID_COLUMN, ID_COLUMN); ds.removeColumn(col); col.setLabel("Disposition"); col.setDescription("Calculates the earliest and most recent departure per animal, if applicable, and most recent acquisition."); @@ -578,7 +574,7 @@ private void customizeAnimalTable(AbstractTableInfo ds) { if (ds.getColumn("GenDemoCustomizer") == null) { - var col = getWrappedCol(us, ds, "GenDemoCustomizer", "GenDemoCustomizer", ID_COL, ID_COL); + var col = getWrappedCol(us, ds, "GenDemoCustomizer", "GenDemoCustomizer", ID_COLUMN, ID_COLUMN); col.setLabel("Genetic Assays"); col.setDescription("Show if genetic assays exist for ID"); ds.addColumn(col); From c6c00292fc86eca4736cb6889c6eb696be95e38f Mon Sep 17 00:00:00 2001 From: Spamhurts Date: Tue, 23 Dec 2025 10:30:27 -0600 Subject: [PATCH 5/5] commented out earliest housing registration to sort out test issue --- snprc_ehr/src/org/labkey/snprc_ehr/SNPRC_EHRModule.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/snprc_ehr/src/org/labkey/snprc_ehr/SNPRC_EHRModule.java b/snprc_ehr/src/org/labkey/snprc_ehr/SNPRC_EHRModule.java index e2d0c612..7f3f448f 100644 --- a/snprc_ehr/src/org/labkey/snprc_ehr/SNPRC_EHRModule.java +++ b/snprc_ehr/src/org/labkey/snprc_ehr/SNPRC_EHRModule.java @@ -195,7 +195,9 @@ protected void doStartupAfterSpringConfig(ModuleContext moduleContext) EHRService.get().registerDemographicsProvider(new MhcSummaryDemographicsProvider(this)); EHRService.get().registerDemographicsProvider(new LastHousingDemographicsProvider(this)); EHRService.get().registerDemographicsProvider(new LastBcsDemographicsProvider(this)); - EHRService.get().registerDemographicsProvider(new EarliestHousingDemographicsProvider(this)); + + // Commented out until we need to add the EarliestHousing to the snapshot view. tjh + //EHRService.get().registerDemographicsProvider(new EarliestHousingDemographicsProvider(this)); EHRService.get().registerReportLink(EHRService.REPORT_LINK_TYPE.housing, "Find Animals Housed In A Given Room/Cage At A Specific Time", this, DetailsURL.fromString("/ehr-housingOverlaps.view?groupById=1"), "Commonly Used Queries"); EHRService.get().registerReportLink(EHRService.REPORT_LINK_TYPE.animalSearch, "Population Summary By Species, Gender and Age", this, DetailsURL.fromString("/query-executeQuery.view?schemaName=study&query.queryName=colonyPopulationByAge"), "Other Searches");