From dbf8c9b0e9d7c81264b911aa4494f776d1231cde Mon Sep 17 00:00:00 2001 From: "F. Daniel Nicolalde" Date: Sun, 3 Oct 2021 20:35:56 -0500 Subject: [PATCH 1/2] Adding title to billedby on blood table and changing isUnselectable. (#246) --- ehr/resources/queries/study/blood.query.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ehr/resources/queries/study/blood.query.xml b/ehr/resources/queries/study/blood.query.xml index 7dd11e98f..aff044512 100644 --- a/ehr/resources/queries/study/blood.query.xml +++ b/ehr/resources/queries/study/blood.query.xml @@ -19,11 +19,12 @@ Billed By false - true + false ehr_lookups blood_billed_by value + title From df4ab9935434d64ac11a9f57f9d9d3dec51d1cf0 Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Fri, 8 Oct 2021 14:23:54 -0700 Subject: [PATCH 2/2] Clinical remarks data source and EHR lookups cache (#250) * Add change to DefaultClinicalRemarksDataSource.getCategoryText * Add lookupsets table info and QUS with cache refresh --- .../DefaultClinicalRemarksDataSource.java | 7 +- .../ehr/query/EHRLookupsUserSchema.java | 4 +- .../org/labkey/ehr/query/LookupSetsTable.java | 65 +++++++++++++++++++ 3 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 ehr/src/org/labkey/ehr/query/LookupSetsTable.java diff --git a/ehr/api-src/org/labkey/api/ehr/history/DefaultClinicalRemarksDataSource.java b/ehr/api-src/org/labkey/api/ehr/history/DefaultClinicalRemarksDataSource.java index dbf242edd..7f5a70afe 100644 --- a/ehr/api-src/org/labkey/api/ehr/history/DefaultClinicalRemarksDataSource.java +++ b/ehr/api-src/org/labkey/api/ehr/history/DefaultClinicalRemarksDataSource.java @@ -44,7 +44,12 @@ public DefaultClinicalRemarksDataSource(Module module) protected String getCategoryText(Results rs) throws SQLException { String category = rs.getString("category"); - return (category == null || REPLACED_SOAP.equals(category) || REPLACEMENT_SOAP.equals(category) ? "Clinical" : category) + " Remark"; + + FieldKey titleFk = FieldKey.fromString("category/title"); + if (rs.hasColumn(titleFk)) + category = rs.getString(titleFk); + + return (category == null || REPLACED_SOAP.equals(category) || REPLACEMENT_SOAP.equals(category) ? "Clinical" : category) + " - Remark"; } // @Override diff --git a/ehr/src/org/labkey/ehr/query/EHRLookupsUserSchema.java b/ehr/src/org/labkey/ehr/query/EHRLookupsUserSchema.java index e5e86014f..f7f2a0b3f 100644 --- a/ehr/src/org/labkey/ehr/query/EHRLookupsUserSchema.java +++ b/ehr/src/org/labkey/ehr/query/EHRLookupsUserSchema.java @@ -29,9 +29,9 @@ import org.labkey.api.data.TableSelector; import org.labkey.api.ehr.security.EHRDataAdminPermission; import org.labkey.api.ehr.security.EHRHousingTransferPermission; -import org.labkey.api.ehr.security.EHRSnomedEditPermission; import org.labkey.api.ehr.security.EHRLocationEditPermission; import org.labkey.api.ehr.security.EHRProcedureManagementPermission; +import org.labkey.api.ehr.security.EHRSnomedEditPermission; import org.labkey.api.ldk.table.ContainerScopedTable; import org.labkey.api.query.FieldKey; import org.labkey.api.query.FilteredTable; @@ -204,7 +204,7 @@ else if (TABLE_VETERINARIANS.equalsIgnoreCase(name)) return createVeterinariansTable(name, cf); else if (EHRSchema.TABLE_LOOKUP_SETS.equalsIgnoreCase(name)) { - ContainerScopedTable ret = new ContainerScopedTable<>(this, createSourceTable(name), cf, "setname"); + ContainerScopedTable ret = new LookupSetsTable<>(this, createSourceTable(name), cf, "setname"); ret.addPermissionMapping(InsertPermission.class, EHRDataAdminPermission.class); ret.addPermissionMapping(UpdatePermission.class, EHRDataAdminPermission.class); ret.addPermissionMapping(DeletePermission.class, EHRDataAdminPermission.class); diff --git a/ehr/src/org/labkey/ehr/query/LookupSetsTable.java b/ehr/src/org/labkey/ehr/query/LookupSetsTable.java new file mode 100644 index 000000000..c31061065 --- /dev/null +++ b/ehr/src/org/labkey/ehr/query/LookupSetsTable.java @@ -0,0 +1,65 @@ +package org.labkey.ehr.query; + +import org.labkey.api.data.Container; +import org.labkey.api.data.ContainerFilter; +import org.labkey.api.data.TableInfo; +import org.labkey.api.ldk.table.ContainerScopedTable; +import org.labkey.api.query.BatchValidationException; +import org.labkey.api.query.InvalidKeyException; +import org.labkey.api.query.QueryUpdateService; +import org.labkey.api.query.QueryUpdateServiceException; +import org.labkey.api.query.SimpleUserSchema; +import org.labkey.api.query.UserSchema; +import org.labkey.api.security.User; +import org.labkey.ehr.dataentry.DataEntryManager; + +import java.sql.SQLException; +import java.util.Map; + +/** + * This TableInfo is for the actual ehr.lookupsets table. It is not a duplicate of LookupSetTable which + * is for the virtual tables created from the data in ehr.lookupsets. + */ +public class LookupSetsTable extends ContainerScopedTable +{ + public LookupSetsTable(SchemaType schema, TableInfo st, ContainerFilter cf, String newPk) + { + super(schema, st, cf, newPk); + } + + @Override + public QueryUpdateService getUpdateService() + { + return new UpdateService(this); + } + + private class UpdateService extends ContainerScopedTable.UpdateService + { + public UpdateService(SimpleUserSchema.SimpleTable ti) + { + super(ti); + } + + @Override + protected void afterInsertUpdate(int count, BatchValidationException errors) + { + DataEntryManager.get().getCache().clear(); + } + + @Override + protected Map deleteRow(User user, Container container, Map oldRowMap) throws QueryUpdateServiceException, SQLException, InvalidKeyException + { + Map row = super.deleteRow(user, container, oldRowMap); + DataEntryManager.get().getCache().clear(); + return row; + } + + @Override + protected int truncateRows(User user, Container container) throws QueryUpdateServiceException, SQLException + { + int i = super.truncateRows(user, container); + DataEntryManager.get().getCache().clear(); + return i; + } + } +}