From 6c8206eb8fa1c375d043c04c6580ddaa53186183 Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Fri, 24 Jan 2025 14:03:15 -0800
Subject: [PATCH 1/7] Modified Surgical Procedure default entries for blood.
---
.../sqlserver/onprc_ehr-24.005-24.006.sql | 14 ++++++++++++++
.../src/org/labkey/onprc_ehr/ONPRC_EHRModule.java | 2 +-
2 files changed, 15 insertions(+), 1 deletion(-)
create mode 100644 onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql
diff --git a/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql
new file mode 100644
index 000000000..3a7cb2a6b
--- /dev/null
+++ b/onprc_ehr/resources/schemas/dbscripts/sqlserver/onprc_ehr-24.005-24.006.sql
@@ -0,0 +1,14 @@
+CREATE TABLE onprc_ehr.procedure_default_blood (
+ rowid int identity(1,1),
+ procedureid int,
+ sampletype varchar(300) Null,
+ additionalServices varchar(1000) Null,
+ reason varchar(300) Null,
+ instructions varchar(2000) Null,
+ chargetype varchar(400) Null
+
+
+ CONSTRAINT PK_procedure_default_blood PRIMARY KEY (rowid)
+)
+
+GO
\ No newline at end of file
diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java b/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java
index 5ec60e1d9..ca89952d2 100644
--- a/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java
+++ b/onprc_ehr/src/org/labkey/onprc_ehr/ONPRC_EHRModule.java
@@ -126,7 +126,7 @@ public String getName()
@Override
public @Nullable Double getSchemaVersion()
{
- return 24.005;
+ return 24.006;
}
@Override
From 17fd7fddd06b6961211e90d9b7e316d7fa65eb73 Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Fri, 24 Jan 2025 14:39:11 -0800
Subject: [PATCH 2/7] Modified Surgical Procedure default entries for blood.
---
onprc_ehr/resources/schemas/onprc_ehr.xml | 30 +
.../window/AddProcedureDefaultsWindow.js | 524 ++++++++++++++++++
.../dataentry/SingleSurgeryFormType.java | 2 +-
.../onprc_ehr/dataentry/SurgeryFormType.java | 2 +-
4 files changed, 556 insertions(+), 2 deletions(-)
create mode 100644 onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
diff --git a/onprc_ehr/resources/schemas/onprc_ehr.xml b/onprc_ehr/resources/schemas/onprc_ehr.xml
index 5f5b3a307..0e79e5d29 100644
--- a/onprc_ehr/resources/schemas/onprc_ehr.xml
+++ b/onprc_ehr/resources/schemas/onprc_ehr.xml
@@ -1456,6 +1456,36 @@
+
+
+ DETAILED
+ Default Surgical Observations Per Procedure
+ rowid
+
+
+ true
+
+
+
+ ehr_lookups
+ procedure
+ rowid
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js b/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
new file mode 100644
index 000000000..126afe429
--- /dev/null
+++ b/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
@@ -0,0 +1,524 @@
+/*
+ * Copyright (c) 2014-2019 LabKey Corporation
+ *
+ * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
+ */
+/**
+ * @cfg dataEntryPanel
+ * @cfg encountersStore
+ * @cfg [] targetTabs
+ */
+Ext4.define('ONPRC_EHR.window.AddProcedureDefaultsWindow', {
+ extend: 'Ext.window.Window',
+ applyStaffTemplate: false,
+ allowAddWeightRecord: false,
+
+ initComponent: function(){
+ Ext4.applyIf(this, {
+ modal: true,
+ width: 750,
+ closeAction: 'destroy',
+ title: ((!this.targetTabs || this.targetTabs.length != 1) ? 'Add Procedure Defaults' : 'Add Procedure Defaults For Section'),
+ bodyStyle: 'padding: 5px;',
+ defaults: {
+ border: false
+ },
+ items: [{
+ html: 'This helper allows you to populate expected rows based on the procedures requested above. A list of the procedures and expected values are below.',
+ style: 'margin-bottom: 10px;'
+ },{
+ itemId: 'services',
+ items: [{
+ border: false,
+ html: 'Loading...'
+ }]
+ }],
+ buttons: [{
+ text: 'Submit',
+ itemId: 'submitBtn',
+ disabled: true,
+ scope: this,
+ handler: this.onSubmit
+ },{
+ text: 'Close',
+ handler: function(btn){
+ btn.up('window').close();
+ }
+ }]
+ });
+
+ if (!this.targetTabs){
+ this.targetTabs = [];
+ this.applyStaffTemplate = true;
+ this.allowAddWeightRecord = true;
+ Ext4.each(this.dataEntryPanel.formConfig.sections, function(s){
+ if (this.tableNameMap[s.name]){
+ var item = this.dataEntryPanel.getSectionByName(s.name);
+ LDK.Assert.assertNotEmpty('Unable to find panel: ' + s.name, item);
+ if (item != null)
+ this.targetTabs.push(item);
+ }
+ }, this);
+ }
+
+ this.inferPanels();
+
+ this.callParent();
+
+ this.on('beforeshow', function(){
+ if (!this.encountersRecords.length){
+ Ext4.Msg.alert('No Records', 'There are no available procedures, nothing to add');
+ return false;
+ }
+ }, this);
+ },
+
+ inferPanels: function(){
+ this.encountersRecords = this.getEncountersRecords();
+ if (!this.encountersRecords.length){
+ return;
+ }
+
+ var services = {};
+ Ext4.Array.forEach(this.encountersRecords, function(r){
+ services[r.get('procedureid')] = true;
+ }, this);
+
+ this.loadServices(Ext4.Object.getKeys(services));
+ },
+
+ getEncountersRecords: function(){
+ var records = [];
+ this.encountersStore.each(function(r){
+ if (r.get('Id') && r.get('date') && r.get('procedureid')){
+ records.push(r);
+ }
+ }, this);
+
+ return records;
+ },
+
+ getExistingParentIds: function(){
+ var keys = {};
+ Ext4.Array.forEach(this.targetTabs, function(tab){
+ keys[tab.formConfig.name] = {};
+ tab.store.each(function(r){
+ if (r.get('parentid'))
+ keys[tab.formConfig.name][r.get('parentid')] = true;
+ }, this);
+ }, this);
+
+ return keys
+ },
+
+ tableNameMap: {
+ 'Drug Administration': {
+ schemaName: 'ehr_lookups',
+ queryName: 'procedure_default_treatments',
+ columns: 'procedureid,code,qualifier,route,frequency,volume,vol_units,dosage,dosage_units,concentration,conc_units,amount,amount_units'
+ },
+ encounter_summaries: {
+ queryName: 'procedure_default_comments',
+ columns: 'procedureid,comment',
+ targetColumns: 'procedureid,remark'
+ },
+ 'Blood Draws': {
+ schemaName: 'onprc_ehr',
+ queryName: 'procedure_default_blood',
+ columns: 'procedureid,sampletype,chargetype,reason,additionalServices',
+
+ },
+ snomed_tags: {
+ schemaName: 'ehr_lookups',
+ queryName: 'procedure_default_codes',
+ columns: 'procedureid,code,qualifier',
+ sort: 'sort_order'
+ }
+ },
+
+ loadServices: function(){
+ var multi = new LABKEY.MultiRequest();
+ var totalRequests = 0;
+ this.panelMap = {};
+ Ext4.Array.forEach(this.targetTabs, function(tab){
+ var cfg = this.tableNameMap[tab.formConfig.name];
+ if (cfg){
+ totalRequests++;
+ multi.add(LABKEY.Query.selectRows, {
+ schemaName: 'ehr_lookups',
+ queryName: cfg.queryName,
+ requiredVersion: 9.1,
+ columns: cfg.columns,
+ failure: LDK.Utils.getErrorCallback(),
+ success: function(results){
+ this.panelMap[tab.formConfig.name] = {};
+ if (results && results.rows && results.rows.length){
+ Ext4.Array.forEach(results.rows, function(r){
+ var row = new LDK.SelectRowsRow(r);
+ if (!this.panelMap[tab.formConfig.name][row.getValue('procedureid')])
+ this.panelMap[tab.formConfig.name][row.getValue('procedureid')] = [];
+
+ this.panelMap[tab.formConfig.name][row.getValue('procedureid')].push(row);
+ }, this);
+ }
+ },
+ scope: this
+ });
+ }
+ }, this);
+
+ LDK.Assert.assertTrue('No matching tables found in AddProcedureDefaultsWindow', totalRequests > 0);
+
+ if (totalRequests > 0)
+ multi.send(this.onLoad, this);
+ else {
+ //this should never actually get called
+ this.on('beforeshow', function(window){
+ Ext4.Msg.alert('No Records', 'Add defaults is not supported for this section.');
+ return false;
+ }, this);
+ }
+ },
+
+ onLoad: function(){
+ var toAdd= [{
+ html: 'Id'
+ },{
+ html: 'Date'
+ },{
+ html: 'Choose Template'
+ },{
+ html: 'Ignore'
+ }];
+
+ var keys = this.getExistingParentIds();
+ Ext4.Array.forEach(this.encountersRecords, function(r){
+ toAdd.push({
+ html: r.get('Id'),
+ width: 60
+ });
+ toAdd.push({
+ html: Ext4.Date.format(r.get('date'), LABKEY.extDefaultDateFormat),
+ width: 110
+ });
+
+ var ignoreId = 'ignore_' + Ext4.id();
+ toAdd.push({
+ xtype: 'labkey-combo',
+ anyMatch: true,
+ width: 250,
+ boundRecord: r,
+ ignoreCheckbox: ignoreId,
+ displayField: 'name',
+ valueField: 'rowid',
+ forceSelection: true,
+ queryMode: 'local',
+ value: r.get('procedureid'),
+ store: {
+ type: 'labkey-store',
+ schemaName: 'ehr_lookups',
+ queryName: 'procedures',
+ columns: 'name,rowid',
+ autoLoad: true
+ }
+ });
+ toAdd.push({
+ xtype: 'checkbox',
+ width: 80,
+ itemId: ignoreId,
+ checked: this.targetTabs.length == 1 ? keys[this.targetTabs[0].formConfig.name][r.get('objectid')] : false
+ });
+ }, this);
+
+ var target = this.down('#services');
+
+ target.removeAll();
+ target.add({
+ border: false,
+ itemId: 'fieldPanel',
+ layout: {
+ type: 'table',
+ columns: 4
+ },
+ defaults: {
+ border: false,
+ height: '15px',
+ style: 'padding: 2px;margin-right: 4px;vertical-align:text-top;'
+ },
+ items: toAdd
+ });
+
+ if (this.allowAddWeightRecord){
+ this.add({
+ xtype: 'checkbox',
+ fieldLabel: 'Add Weight Record',
+ itemId: 'addWeightRecord',
+ checked: true
+ });
+ }
+
+ this.down('#submitBtn').setDisabled(false);
+ },
+
+ onSubmit: function(){
+ var hasRecords = false;
+ var distinctIds = [];
+ var parentIdMap = {};
+
+ this.down('#fieldPanel').items.each(function(item){
+ if (item.boundRecord){
+ var ignoreCheckbox = this.down('#' + item.ignoreCheckbox);
+ if (ignoreCheckbox.getValue()){
+ return;
+ }
+
+ distinctIds.push(item.boundRecord.get('Id'));
+ parentIdMap[item.boundRecord.get('Id')] = parentIdMap[item.boundRecord.get('Id')] || [];
+ parentIdMap[item.boundRecord.get('Id')].push(item.boundRecord.get('objectid'));
+
+ var panel = item.getValue();
+ Ext4.Array.forEach(this.targetTabs, function(targetTab){
+ var rows;
+ var records = [];
+
+ if (panel && this.panelMap[targetTab.formConfig.name] && this.panelMap[targetTab.formConfig.name][panel]){
+ rows = this.panelMap[targetTab.formConfig.name][panel];
+ }
+
+ if (rows && rows.length){
+ Ext4.Array.forEach(rows, function(row){
+ var data = {
+ Id: item.boundRecord.get('Id'),
+ date: item.boundRecord.get('date'),
+ project: item.boundRecord.get('project'),
+ encounterid: item.boundRecord.get('objectid'),
+ parentid: item.boundRecord.get('objectid')
+ };
+
+ var cfg = this.tableNameMap[targetTab.formConfig.name];
+ if (cfg && cfg.columns){
+ var columns = cfg.columns.split(',');
+ var targetColumns = (cfg.targetColumns || cfg.columns).split(',');
+ Ext4.Array.forEach(columns, function(col, idx){
+ if (!Ext4.isEmpty(row.getValue(col))){
+ data[targetColumns[idx]] = row.getValue(col);
+ }
+ }, this);
+ }
+
+ records.push(targetTab.store.createModel(data));
+ }, this);
+
+ if (records.length){
+ targetTab.store.add(records);
+ hasRecords = true;
+ }
+ }
+ }, this);
+ }
+ }, this);
+
+ //add weight
+ distinctIds = Ext4.unique(distinctIds);
+ if (this.allowAddWeightRecord && this.down('#addWeightRecord').getValue()){
+ var weightStore = this.dataEntryPanel.storeCollection.getClientStoreByName('weight');
+ LDK.Assert.assertNotEmpty('Unable to find weight store in AddProcedureDefaultsWindow', weightStore);
+ var toAdd = [];
+ Ext4.Array.forEach(distinctIds, function(id){
+ //arbitrarily assign parentid based on the first matching procedure, in the case of multiple procedures
+ toAdd.push(weightStore.createModel({
+ Id: id,
+ parentid: parentIdMap[id][0]
+ }));
+ }, this);
+
+ if (toAdd.length){
+ weightStore.add(toAdd);
+ }
+ }
+
+ //add templates
+ if (this.applyStaffTemplate){
+ var majorSurg = [];
+ var minorSurg = [];
+ var procedureStore = EHR.DataEntryUtils.getProceduresStore();
+ Ext4.Array.forEach(this.encountersRecords, function(r){
+ if (r.get('procedureid')){
+ var obj = {
+ Id: r.get('Id'),
+ date: r.get('date'),
+ parentid: r.get('objectid')
+ }
+
+ var recIdx = procedureStore.findExact('rowid', r.get('procedureid'));
+ LDK.Assert.assertTrue('Unable to find procedure with rowid: ' + r.get('procedureid'), recIdx > -1);
+ if (recIdx > -1){
+ var procRec = procedureStore.getAt(recIdx);
+
+ if (procRec.get('major')){
+ majorSurg.push(obj);
+ }
+ else {
+ minorSurg.push(obj);
+ }
+ }
+ }
+ }, this);
+
+ this.minorSurgToLoad = minorSurg;
+ this.majorSurgToLoad = majorSurg;
+
+ if (minorSurg.length || majorSurg.length){
+ this.loadTemplateIds();
+ }
+ else {
+ this.finalize(true);
+ }
+ }
+ else {
+ this.finalize(hasRecords);
+ }
+ },
+
+ loadTemplateIds: function(){
+ LABKEY.Query.selectRows({
+ schemaName: 'ehr',
+ queryName: 'formtemplates',
+ requiredVersion: 9.1,
+ scope: this,
+ filterArray: [
+ LABKEY.Filter.create('title', 'Major Surgery;Minor Surgery', LABKEY.Filter.Types.EQUALS_ONE_OF),
+ LABKEY.Filter.create('category', 'Section', LABKEY.Filter.Types.EQUAL),
+ LABKEY.Filter.create('formtype', 'encounter_participants', LABKEY.Filter.Types.EQUAL)
+
+ ],
+ failure: LDK.Utils.getErrorCallback(),
+ success: function(results){
+ if (results && results.rows && results.rows.length){
+ Ext4.Array.forEach(results.rows, function(r){
+ var row = new LDK.SelectRowsRow(r);
+ if (row.getValue('title') == 'Major Surgery'){
+ this.majorSurgTemplateId = row.getValue('entityid');
+ }
+ else if (row.getValue('title') == 'Minor Surgery'){
+ this.minorSurgTemplateId = row.getValue('entityid');
+ }
+ }, this);
+
+ LDK.Assert.assertEquality('Wrong row count found in AddProcedureDefaultsWindow', 2, results.rows.length);
+ }
+
+ LDK.Assert.assertNotEmpty('Unable to find template for Major Surgery', this.majorSurgTemplateId);
+ LDK.Assert.assertNotEmpty('Unable to find template for Minor Surgery', this.minorSurgTemplateId);
+
+ this.loadMinorSurg();
+ }
+ })
+ },
+
+ loadMinorSurg: function(){
+ if (this.minorSurgToLoad && this.minorSurgToLoad.length){
+ EHR.window.ApplyTemplateWindow.loadTemplateRecords(this.afterLoadMinorSurgTemplate, this, this.dataEntryPanel.storeCollection, this.minorSurgTemplateId, this.minorSurgToLoad);
+ }
+ else {
+ this.afterLoadMinorSurgTemplate();
+ }
+ },
+
+ queueTemplateRecords: function(recMap){
+ if (!recMap)
+ return;
+
+ this.templateRecordsToAdd = this.templateRecordsToAdd || {};
+ for (var i in recMap){
+ this.templateRecordsToAdd[i] = this.templateRecordsToAdd[i] || [];
+ this.templateRecordsToAdd[i] = this.templateRecordsToAdd[i].concat(recMap[i]);
+ }
+ },
+
+ addQueuedTemplateRecords: function(){
+ if (!this.templateRecordsToAdd)
+ return;
+
+ for (var i in this.templateRecordsToAdd){
+ var store = Ext4.StoreMgr.get(i);
+ store.add(this.templateRecordsToAdd[i]);
+ delete this.templateRecordsToAdd[i];
+ }
+ },
+
+ afterLoadMinorSurgTemplate: function(recMap){
+ delete this.minorSurgToLoad;
+
+ this.queueTemplateRecords(recMap);
+
+ if (!this.majorSurgToLoad || !this.majorSurgToLoad.length){
+ this.afterLoadMajorSurgTemplate();
+ }
+ else {
+ EHR.window.ApplyTemplateWindow.loadTemplateRecords(this.afterLoadMajorSurgTemplate, this, this.dataEntryPanel.storeCollection, this.majorSurgTemplateId, this.majorSurgToLoad);
+ }
+ },
+
+ afterLoadMajorSurgTemplate: function(recMap){
+ delete this.majorSurgToLoad;
+ this.queueTemplateRecords(recMap);
+
+ this.finalize(true);
+ },
+
+ finalize: function(hasRecords){
+ this.close();
+ this.addQueuedTemplateRecords();
+
+ if (!this.applyStaffTemplate && !hasRecords){
+ Ext4.Msg.alert('No Records', 'There are no records to add');
+ }
+ }
+});
+
+EHR.DataEntryUtils.registerGridButton('ADDPROCEDUREDEFAULTS', function(config){
+ return Ext4.Object.merge({
+ text: 'Add Procedure Defaults',
+ xtype: 'button',
+ tooltip: 'Click to copy records from the encounters section',
+ handler: function(btn){
+ var grid = btn.up('grid');
+ LDK.Assert.assertNotEmpty('Unable to find grid in ADDPROCEDUREDEFAULTS button', grid);
+
+ var panel = grid.up('ehr-dataentrypanel');
+ LDK.Assert.assertNotEmpty('Unable to find dataEntryPanel in ADDPROCEDUREDEFAULTS button', panel);
+
+ var store = panel.storeCollection.getClientStoreByName('encounters');
+ LDK.Assert.assertNotEmpty('Unable to find encounters store in ADDPROCEDUREDEFAULTS button', store);
+
+ if (store){
+ Ext4.create('EHR.window.AddProcedureDefaultsWindow', {
+ dataEntryPanel: panel,
+ targetTabs: [grid],
+ encountersStore: store
+ }).show();
+ }
+ }
+ });
+});
+
+EHR.DataEntryUtils.registerDataEntryFormButton('APPLYENCOUNTERDEFAULTS', {
+ text: 'Add Procedure Defaults',
+ xtype: 'button',
+ tooltip: 'Click to copy records from the encounters section',
+ handler: function(btn){
+ var panel = btn.up('ehr-dataentrypanel');
+ LDK.Assert.assertNotEmpty('Unable to find dataEntryPanel in APPLYENCOUNTERDEFAULTS button', panel);
+
+ var store = panel.storeCollection.getClientStoreByName('encounters');
+ LDK.Assert.assertNotEmpty('Unable to find encounters store in APPLYENCOUNTERDEFAULTS button', store);
+
+ if (store){
+ Ext4.create('EHR.window.AddProcedureDefaultsWindow', {
+ dataEntryPanel: panel,
+ encountersStore: store
+ }).show();
+ }
+ }
+});
\ No newline at end of file
diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/SingleSurgeryFormType.java b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/SingleSurgeryFormType.java
index 495767b0b..d6cb8939b 100644
--- a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/SingleSurgeryFormType.java
+++ b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/SingleSurgeryFormType.java
@@ -46,7 +46,7 @@ public class SingleSurgeryFormType extends EncounterForm
public SingleSurgeryFormType(DataEntryFormContext ctx, Module owner)
{
super(ctx, owner, NAME, "Surgery", "Surgery", Arrays.asList(
- new NonStoreFormSection("Instructions", "Instructions", "ehr-surgeryinstructionspanel", Arrays.asList(ClientDependency.supplierFromPath("ehr/panel/SurgeryInstructionsPanel.js"))),
+ new NonStoreFormSection("Instructions", "Instructions", "onprc_ehr-surgeryinstructionspanel", Arrays.asList(ClientDependency.supplierFromPath("onprc_ehr/panel/SurgeryInstructionsPanel.js"))),
new TaskFormSection(),
new ClinicalEncountersFormPanelSection("Surgery"),
new ExtendedAnimalDetailsFormSection(),
diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/SurgeryFormType.java b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/SurgeryFormType.java
index 82e6c2144..a20b1847e 100644
--- a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/SurgeryFormType.java
+++ b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/SurgeryFormType.java
@@ -47,7 +47,7 @@ public class SurgeryFormType extends EncounterForm
public SurgeryFormType(DataEntryFormContext ctx, Module owner)
{
super(ctx, owner, NAME, "Surgeries", "Surgery", Arrays.asList(
- new NonStoreFormSection("Instructions", "Instructions", "ehr-surgeryinstructionspanel", Arrays.asList(ClientDependency.supplierFromPath("ehr/panel/SurgeryInstructionsPanel.js"))),
+ new NonStoreFormSection("Instructions", "Instructions", "onprc_ehr-surgeryinstructionspanel", Arrays.asList(ClientDependency.supplierFromPath("onprc_ehr/panel/SurgeryInstructionsPanel.js"))),
new TaskFormSection(),
new ClinicalEncountersFormSection(),
new ExtendedAnimalDetailsFormSection(),
From 1ebea6478dec101f6773d732d2380afc7b576a23 Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Fri, 24 Jan 2025 14:50:17 -0800
Subject: [PATCH 3/7] Modified Surgical Procedure default entries for blood.
---
.../panel/SurgeryInstructionsPanel.js | 39 +++++++++++++++++++
1 file changed, 39 insertions(+)
create mode 100644 onprc_ehr/resources/web/onprc_ehr/panel/SurgeryInstructionsPanel.js
diff --git a/onprc_ehr/resources/web/onprc_ehr/panel/SurgeryInstructionsPanel.js b/onprc_ehr/resources/web/onprc_ehr/panel/SurgeryInstructionsPanel.js
new file mode 100644
index 000000000..d2e1bdb9a
--- /dev/null
+++ b/onprc_ehr/resources/web/onprc_ehr/panel/SurgeryInstructionsPanel.js
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2014-2019 LabKey Corporation
+ *
+ * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
+ */
+Ext4.define('ONPRC_EHR.panel.SurgeryInstructionsPanel', {
+ extend: 'Ext.panel.Panel',
+ alias: 'widget.ehr-surgeryinstructionspanel',
+
+ initComponent: function(){
+ var buttons = [];
+ LDK.Assert.assertNotEmpty('No data entry panel', this.dataEntryPanel);
+ var btnCfg = EHR.DataEntryUtils.getDataEntryFormButton('APPLYENCOUNTERDEFAULTSAMENDED');
+ if (btnCfg){
+ btnCfg = this.dataEntryPanel.configureButton(btnCfg);
+ if (btnCfg){
+ btnCfg.text = 'Add Procedure Defaults';
+ buttons.push(btnCfg);
+ }
+ }
+
+ Ext4.apply(this, {
+ defaults: {
+
+ },
+ bodyStyle: 'padding: 5px;',
+ title: 'Instructions',
+ items: [{
+ html: 'This form is designed for surgery entry. The top section contains basic information on the procedure(s). The bottom sections can be used to enter the narrative, medications, etc. Once you enter entered the animal(s) and procedures, use the bottom below to apply defaults to the other sections for those procedures.',
+ maxWidth: Ext4.getBody().getWidth() * 0.8,
+ style: 'padding-top: 10px;padding-bottom: 10px;',
+ border: false
+ },btnCfg]
+ });
+
+ this.callParent(arguments);
+ }
+
+});
\ No newline at end of file
From 9f7ac82e4d0ee76082741ba3ff3c2efe5e70bd0e Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Fri, 24 Jan 2025 15:07:27 -0800
Subject: [PATCH 4/7] Modified Surgical Procedure default entries for blood.
---
.../web/onprc_ehr/window/AddProcedureDefaultsWindow.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js b/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
index 126afe429..5297cf870 100644
--- a/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
+++ b/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
@@ -503,19 +503,19 @@ EHR.DataEntryUtils.registerGridButton('ADDPROCEDUREDEFAULTS', function(config){
});
});
-EHR.DataEntryUtils.registerDataEntryFormButton('APPLYENCOUNTERDEFAULTS', {
+EHR.DataEntryUtils.registerDataEntryFormButton('PPLYENCOUNTERDEFAULTSAMENDED', {
text: 'Add Procedure Defaults',
xtype: 'button',
tooltip: 'Click to copy records from the encounters section',
handler: function(btn){
var panel = btn.up('ehr-dataentrypanel');
- LDK.Assert.assertNotEmpty('Unable to find dataEntryPanel in APPLYENCOUNTERDEFAULTS button', panel);
+ LDK.Assert.assertNotEmpty('Unable to find dataEntryPanel in PPLYENCOUNTERDEFAULTSAMENDED button', panel);
var store = panel.storeCollection.getClientStoreByName('encounters');
- LDK.Assert.assertNotEmpty('Unable to find encounters store in APPLYENCOUNTERDEFAULTS button', store);
+ LDK.Assert.assertNotEmpty('Unable to find encounters store in PPLYENCOUNTERDEFAULTSAMENDEDS button', store);
if (store){
- Ext4.create('EHR.window.AddProcedureDefaultsWindow', {
+ Ext4.create('ONPRC_EHR.window.AddProcedureDefaultsWindow', {
dataEntryPanel: panel,
encountersStore: store
}).show();
From 0aaf0e1ca1f9e65279931f9aad90c9cd3d8b64d8 Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Fri, 24 Jan 2025 15:15:40 -0800
Subject: [PATCH 5/7] Modified Surgical Procedure default entries for blood.
---
.../resources/web/onprc_ehr/panel/SurgeryInstructionsPanel.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/onprc_ehr/resources/web/onprc_ehr/panel/SurgeryInstructionsPanel.js b/onprc_ehr/resources/web/onprc_ehr/panel/SurgeryInstructionsPanel.js
index d2e1bdb9a..d5b230780 100644
--- a/onprc_ehr/resources/web/onprc_ehr/panel/SurgeryInstructionsPanel.js
+++ b/onprc_ehr/resources/web/onprc_ehr/panel/SurgeryInstructionsPanel.js
@@ -5,7 +5,7 @@
*/
Ext4.define('ONPRC_EHR.panel.SurgeryInstructionsPanel', {
extend: 'Ext.panel.Panel',
- alias: 'widget.ehr-surgeryinstructionspanel',
+ alias: 'widget.onprc_ehr-surgeryinstructionspanel',
initComponent: function(){
var buttons = [];
From df9a4ec10ef4a5431fe299342477a7a22197263a Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Fri, 24 Jan 2025 15:21:50 -0800
Subject: [PATCH 6/7] Modified Surgical Procedure default entries for blood.
---
.../web/onprc_ehr/window/AddProcedureDefaultsWindow.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js b/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
index 5297cf870..9dcf09da5 100644
--- a/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
+++ b/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
@@ -503,16 +503,16 @@ EHR.DataEntryUtils.registerGridButton('ADDPROCEDUREDEFAULTS', function(config){
});
});
-EHR.DataEntryUtils.registerDataEntryFormButton('PPLYENCOUNTERDEFAULTSAMENDED', {
+EHR.DataEntryUtils.registerDataEntryFormButton('APPLYENCOUNTERDEFAULTSAMENDED', {
text: 'Add Procedure Defaults',
xtype: 'button',
tooltip: 'Click to copy records from the encounters section',
handler: function(btn){
var panel = btn.up('ehr-dataentrypanel');
- LDK.Assert.assertNotEmpty('Unable to find dataEntryPanel in PPLYENCOUNTERDEFAULTSAMENDED button', panel);
+ LDK.Assert.assertNotEmpty('Unable to find dataEntryPanel in APPLYENCOUNTERDEFAULTSAMENDED button', panel);
var store = panel.storeCollection.getClientStoreByName('encounters');
- LDK.Assert.assertNotEmpty('Unable to find encounters store in PPLYENCOUNTERDEFAULTSAMENDEDS button', store);
+ LDK.Assert.assertNotEmpty('Unable to find encounters store in APPLYENCOUNTERDEFAULTSAMENDEDS button', store);
if (store){
Ext4.create('ONPRC_EHR.window.AddProcedureDefaultsWindow', {
From 60d87094a254f1ec5a22b3f42c90db77187e010f Mon Sep 17 00:00:00 2001
From: Ohsudev <76500320+Ohsudev@users.noreply.github.com>
Date: Fri, 24 Jan 2025 15:39:30 -0800
Subject: [PATCH 7/7] Modified Surgical Procedure default entries for blood.
---
.../web/onprc_ehr/window/AddProcedureDefaultsWindow.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js b/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
index 9dcf09da5..a59007c8c 100644
--- a/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
+++ b/onprc_ehr/resources/web/onprc_ehr/window/AddProcedureDefaultsWindow.js
@@ -493,7 +493,7 @@ EHR.DataEntryUtils.registerGridButton('ADDPROCEDUREDEFAULTS', function(config){
LDK.Assert.assertNotEmpty('Unable to find encounters store in ADDPROCEDUREDEFAULTS button', store);
if (store){
- Ext4.create('EHR.window.AddProcedureDefaultsWindow', {
+ Ext4.create('ONPRC_EHR.window.AddProcedureDefaultsWindow', {
dataEntryPanel: panel,
targetTabs: [grid],
encountersStore: store