From a9cfbbc1932928c869eab6d1004fbe5b7a102fc1 Mon Sep 17 00:00:00 2001 From: Ohsudev <76500320+Ohsudev@users.noreply.github.com> Date: Wed, 20 Aug 2025 16:38:59 -0700 Subject: [PATCH 1/3] MOdified BSu Rounds to allow duplication of an existing open case observation entry --- .../web/onprc_ehr/model/sources/BehaviorRounds.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/onprc_ehr/resources/web/onprc_ehr/model/sources/BehaviorRounds.js b/onprc_ehr/resources/web/onprc_ehr/model/sources/BehaviorRounds.js index 5b2e316a9..8d5840d5b 100644 --- a/onprc_ehr/resources/web/onprc_ehr/model/sources/BehaviorRounds.js +++ b/onprc_ehr/resources/web/onprc_ehr/model/sources/BehaviorRounds.js @@ -48,6 +48,13 @@ EHR.model.DataModelManager.registerMetadata('BehaviorRounds', { columnConfig: { editable: false } + }, + caseid: { + hidden: false, + columnConfig: { + width: 10, + editable: false + } } } } From 1902649236e16faecc8d9c0c416e3a8fd356ed51 Mon Sep 17 00:00:00 2001 From: Ohsudev <76500320+Ohsudev@users.noreply.github.com> Date: Fri, 12 Sep 2025 12:35:21 -0700 Subject: [PATCH 2/3] Modified BSU Rounds screen to allow user to add "Alopecia Grow" so that can be included in the current case. --- .../window/AddBehaviorCasesWindow.js | 200 ++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 onprc_ehr/resources/web/onprc_ehr/window/AddBehaviorCasesWindow.js diff --git a/onprc_ehr/resources/web/onprc_ehr/window/AddBehaviorCasesWindow.js b/onprc_ehr/resources/web/onprc_ehr/window/AddBehaviorCasesWindow.js new file mode 100644 index 000000000..bd6453103 --- /dev/null +++ b/onprc_ehr/resources/web/onprc_ehr/window/AddBehaviorCasesWindow.js @@ -0,0 +1,200 @@ +/* Copyright (c) 2014-2019 LabKey Corporation +* +* Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 + */ +/** + * This window will allow users to query open cases and add records to a task based on them + */ +Ext4.define('ONPRC_EHR.window.AddBehaviorCasesWindow', { + extend: 'EHR.window.AddSurgicalCasesWindow', + caseCategory: 'Behavior', + templateName: null, + + allowNoSelection: true, + showAssignedVetCombo: false, + showAllowOpen: true, + defaultRemark: 'BSU Rounds Entered', + + getCases: function(button){ + Ext4.Msg.wait("Loading..."); + this.hide(); + + var casesFilterArray = this.getCasesFilterArray(); + var obsFilterArray = this.getBaseFilterArray(); + obsFilterArray.push(LABKEY.Filter.create('caseCategory', this.caseCategory, LABKEY.Filter.Types.EQUAL)); + var includeOpen = this.down('#includeOpen') ? this.down('#includeOpen').getValue() : false; + if (includeOpen){ + obsFilterArray.push(LABKEY.Filter.create('caseIsOpen', true, LABKEY.Filter.Types.EQUAL)); + } + else { + obsFilterArray.push(LABKEY.Filter.create('caseIsActive', true, LABKEY.Filter.Types.EQUAL)); + } + + //find distinct animals matching criteria + var multi = new LABKEY.MultiRequest(); + + multi.add(LABKEY.Query.selectRows, { + requiredVersion: 9.1, + schemaName: 'study', + queryName: 'latestObservationsForCase', + columns: 'Id,date,category,area,observation,remark,caseid', + filterArray: obsFilterArray, + scope: this, + success: function(results){ + this.obsResults = results; + }, + failure: LDK.Utils.getErrorCallback() + }); + + multi.add(LABKEY.Query.selectRows, { + requiredVersion: 9.1, + schemaName: 'study', + queryName: 'cases', + sort: 'Id/curLocation/location,Id,remark,allProblemCategories', + columns: 'Id,objectid', + filterArray: casesFilterArray, + scope: this, + success: function(results){ + this.casesResults = results; + }, + failure: LDK.Utils.getErrorCallback() + }); + + multi.send(this.onSuccess, this); + }, + + //@Override. this is to skip the duplicate case check + addRecords: function(records){ + this.doAddRecords(records); + }, + + //@Override. this is to skip the duplicate case check + doAddRecords: function(records){ + this.processObservations(records); + }, + + //apply previous observations, or inser a blank obs record. + processObservations: function(caseRecords){ + //find all distinct IDs with cases. + var distinctCaseIds = []; + if (caseRecords && caseRecords.length){ + Ext4.Array.forEach(caseRecords, function(cr){ + if (distinctCaseIds.indexOf(cr.get('caseid') == -1)){ + distinctCaseIds.push(cr.get('caseid')); + } + }, this); + } + + var previousObsMap = {}; + if (this.obsResults && this.obsResults.rows && this.obsResults.rows.length){ + Ext4.Array.forEach(this.obsResults.rows, function(sr){ + //reset variable + var newobservation = ''; + var row = new LDK.SelectRowsRow(sr); + newobservation = row.getValue('category'); + + //note: this has been changed to ensure 1 row per case + var key = row.getValue('caseid'); + if (!previousObsMap[key]) + previousObsMap[key] = []; + + previousObsMap[key].push({ + Id: row.getValue('Id'), + date: this.recordData.date, + performedby: this.recordData.performedby, + caseid: row.getValue('caseid'), + category: row.getValue('category'), + area: row.getValue('area'), + allProblemCategories:row.getValue('allProblemCategories'), + //dont copy value + //observation: row.getValue('observation'), + remark: row.getValue('remark') + }); + if (newobservation == "Alopecia Score") { + previousObsMap[key].push({ + Id: row.getValue('Id'), + date: this.recordData.date, + performedby: this.recordData.performedby, + caseid: row.getValue('caseid'), + category: 'Alopecia Regrowth', + area: row.getValue('area'), + allProblemCategories:row.getValue('allProblemCategories'), + //dont copy value + //observation: row.getValue('observation'), + remark: row.getValue('remark') + }); + + } + }, this); + } + + var obsRecords = []; + var obsStore = this.targetStore.storeCollection.getClientStoreByName('Clinical Observations'); + LDK.Assert.assertNotEmpty('Unable to find Clinical Observations store', obsStore); + + var treatmentRecords = []; + var treatmentStore = this.targetStore.storeCollection.getClientStoreByName('Drug Administration'); + LDK.Assert.assertNotEmpty('Unable to find Drug Administration store', treatmentStore); + + Ext4.Array.forEach(caseRecords, function(cr){ + if (previousObsMap[cr.get('caseid')]){ + Ext4.Array.forEach(previousObsMap[cr.get('caseid')], function(r){ + r = Ext4.apply(r, { + 'Id/curLocation/location': cr.get('Id/curLocation/location') + }); + + obsRecords.push(obsStore.createModel(r)); + }, this); + } + else { + obsRecords.push(obsStore.createModel({ + 'Id/curLocation/location': cr.get('Id/curLocation/location'), + Id: cr.get('Id'), + date: this.recordData.date, + performedby: this.recordData.performedby, + caseid: cr.get('caseid') + })); + } + + treatmentRecords.push(treatmentStore.createModel({ + Id: cr.get('Id'), + caseid: cr.get('caseid'), + date: this.recordData.date, + performedby: this.recordData.performedby + })); + }, this); + + if (obsRecords.length){ + obsStore.add(obsRecords); + } + + if (treatmentRecords.length){ + treatmentStore.add(treatmentRecords); + } + + Ext4.Msg.hide(); + this.close(); + } +}); + +EHR.DataEntryUtils.registerGridButton('ADDBEHAVIORCASESAMENDED', function(config){ + return Ext4.Object.merge({ + text: 'Add Open Cases', + tooltip: 'Click to automatically add animals with open cases', + handler: function(btn){ + var grid = btn.up('gridpanel'); + if(!grid.store || !grid.store.hasLoaded()){ + console.log('no store or store hasnt loaded'); + return; + } + + var cellEditing = grid.getPlugin('cellediting'); + if(cellEditing) + cellEditing.completeEdit(); + + Ext4.create('ONPRC_EHR.window.AddBehaviorCasesWindow', { + targetStore: grid.store + }).show(); + } + }, config); +}); From 5cd622e4bc502fa0f0de9238ed3a1c9037458484 Mon Sep 17 00:00:00 2001 From: Ohsudev <76500320+Ohsudev@users.noreply.github.com> Date: Fri, 12 Sep 2025 12:36:57 -0700 Subject: [PATCH 3/3] Modified BSU Rounds screen to allow user to add "Alopecia Grow" so that can be included in the current case. --- .../dataentry/BehaviorRoundsObservationsFormSection.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/BehaviorRoundsObservationsFormSection.java b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/BehaviorRoundsObservationsFormSection.java index 399a70462..e082cf1fa 100644 --- a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/BehaviorRoundsObservationsFormSection.java +++ b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/BehaviorRoundsObservationsFormSection.java @@ -34,14 +34,14 @@ public BehaviorRoundsObservationsFormSection() addClientDependency(ClientDependency.supplierFromPath("ehr/window/AddClinicalCasesWindow.js")); addClientDependency(ClientDependency.supplierFromPath("ehr/window/AddSurgicalCasesWindow.js")); - addClientDependency(ClientDependency.supplierFromPath("ehr/window/AddBehaviorCasesWindow.js")); + addClientDependency(ClientDependency.supplierFromPath("onprc_ehr/window/AddBehaviorCasesWindow.js")); } @Override public List getTbarButtons() { List defaultButtons = super.getTbarButtons(); - defaultButtons.add(0, "ADDBEHAVIORCASES"); + defaultButtons.add(0, "ADDBEHAVIORCASESAMENDED"); return defaultButtons; }