diff --git a/onprc_ehr/resources/web/onprc_ehr/data/sources/ClinicalEncountersClientStore.js b/onprc_ehr/resources/web/onprc_ehr/data/sources/ClinicalEncountersClientStore.js new file mode 100644 index 000000000..9c6d90360 --- /dev/null +++ b/onprc_ehr/resources/web/onprc_ehr/data/sources/ClinicalEncountersClientStore.js @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2013-2019 LabKey Corporation + * + * Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 + */ +Ext4.define('ONPRC_EHR.data.ClinicalEncountersClientStore', { + extend: 'EHR.data.DataEntryClientStore', + + constructor: function(){ + this.callParent(arguments); + + this.on('add', this.onAddRecord, this); + }, + + onAddRecord: function(store, records){ + Ext4.each(records, function(record){ + this.onRecordUpdate(record, ['procedureid']); + }, this); + }, + + afterEdit: function(record, modifiedFieldNames){ + this.onRecordUpdate(record, modifiedFieldNames); + + this.callParent(arguments); + }, + + onRecordUpdate: function(record, modifiedFieldNames){ + if (record.get('procedureid')){ + modifiedFieldNames = modifiedFieldNames || []; + + var lookupRec = this.getProcedureRecord(record.get('procedureid')); + if (!lookupRec) + return; + + if (lookupRec.get('remark')&& record.get('remark')== null){ + record.beginEdit(); + record.set('remark', lookupRec.get('remark')); + record.endEdit(true); + } + + if (lookupRec.get('name')&& lookupRec.get('name')== 'TMB breeding'){ + record.beginEdit(); + record.set('chargetype', 'TMB'); + record.endEdit(true); + } + } + + if (modifiedFieldNames && (modifiedFieldNames.indexOf('Id') > -1 || modifiedFieldNames.indexOf('project') > -1 || modifiedFieldNames.indexOf('chargetype') > -1)){ + if (record.get('objectid')){ + var toApply = { + Id: record.get('Id'), + project: record.get('project'), + chargetype: record.get('chargetype') + }; + + this.storeCollection.clientStores.each(function(cs){ + if (cs.storeId == this.storeCollection.collectionId + '-' + 'encounters'){ + return; + } + + var projectField = cs.getFields().get('project'); + var chargeTypeField = cs.getFields().get('chargetype'); + var hasChanges = false; + + if (cs.getFields().get('parentid')){ + if (cs.getFields().get('Id') || cs.getFields().get('project')){ + cs.each(function(r){ + if (r.get('parentid') === record.get('objectid')){ + var obj = {}; + + if (projectField){ + if (!r.get('project') || (projectField.inheritFromParent && r.get('project') !== record.get('project'))){ + obj.project = record.get('project'); + } + } + + if (chargeTypeField){ + if (!r.get('chargetype') || (chargeTypeField.inheritFromParent && r.get('chargetype') !== record.get('chargetype'))){ + obj.chargetype = record.get('chargetype'); + } + } + + if (r.get('Id') !== record.get('Id')){ + obj.Id = record.get('Id'); + } + + if (!Ext4.Object.isEmpty(obj)){ + r.beginEdit(); + r.set(obj); + r.endEdit(true); + hasChanges = true; + } + } + }, this); + } + } + + if (hasChanges){ + cs.fireEvent('datachanged', cs); + } + }, this); + } + } + }, + + getProcedureRecord: function(procedureId){ + var procedureStore = EHR.DataEntryUtils.getProceduresStore(); + LDK.Assert.assertNotEmpty('Unable to find procedureStore from ClinicalEncountersClientStore', procedureStore); + + // If the store is not loaded this will call again. No need to do a load callback here just return undefined if not loaded. + if (LABKEY.ext4.Util.hasStoreLoaded(procedureStore)) { + var procRecIdx = procedureStore.findExact('rowid', procedureId); + LDK.Assert.assertTrue('Unable to find procedure record in ClinicalEncountersClientStore for procedureId: [' + procedureId + ']', procRecIdx > -1); + + var procedureRec = procedureStore.getAt(procRecIdx); + LDK.Assert.assertNotEmpty('Unable to find procedure record from ClinicalEncountersClientStore. ProcedureId was: [' + procedureId + ']', procedureRec); + + return procedureRec; + } + return undefined; + } +}); \ No newline at end of file diff --git a/onprc_ehr/resources/web/onprc_ehr/model/sources/ASB_Services.js b/onprc_ehr/resources/web/onprc_ehr/model/sources/ASB_Services.js index 45ff89712..b4bdc0be1 100644 --- a/onprc_ehr/resources/web/onprc_ehr/model/sources/ASB_Services.js +++ b/onprc_ehr/resources/web/onprc_ehr/model/sources/ASB_Services.js @@ -29,7 +29,7 @@ EHR.model.DataModelManager.registerMetadata('ASB_Services', { 'study.encounters': { chargetype: { defaultValue: 'DCM: ASB Services', - hidden: true + hidden: false }, date: { xtype: 'xdatetime', @@ -89,7 +89,7 @@ EHR.model.DataModelManager.registerMetadata('ASB_Services', { 'study.blood': { chargetype: { defaultValue: 'DCM: ASB Services', - hidden: true + hidden: false }, performedby: { //defaultValue: LABKEY.Security.currentUser.displayName, @@ -105,7 +105,7 @@ EHR.model.DataModelManager.registerMetadata('ASB_Services', { 'study.drug': { chargetype: { defaultValue: 'DCM: ASB Services', - hidden: true + hidden: false }, date: { xtype: 'xdatetime', @@ -147,33 +147,6 @@ EHR.model.DataModelManager.registerMetadata('ASB_Services', { } } - // Modified: 7-27-2017 R.Blasa not needed for this version - //'study.treatment_order': { - // chargetype: { - // defaultValue: 'DCM: ASB Services', - // hidden: true - // }, - // date: { - // defaultValue: new Date() - // }, - // Billable: { - // defaultValue: 'Yes', - // hidden: true - // }, - // code: { - // header: 'Agent', - // editorConfig: { - // defaultSubset: 'Research' - // } - // }, - // category: { - // defaultValue: 'Research', - // hidden: true - // }, - // remark: { - // header: 'Special Instructions', - // hidden: false - // } - //} + } }); \ No newline at end of file diff --git a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/ClinicalEncountersFormSection.java b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/ClinicalEncountersFormSection.java index 90dafd050..98246d927 100644 --- a/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/ClinicalEncountersFormSection.java +++ b/onprc_ehr/src/org/labkey/onprc_ehr/dataentry/ClinicalEncountersFormSection.java @@ -33,8 +33,8 @@ public ClinicalEncountersFormSection() { super("study", "encounters", "Procedures", "ehr-gridpanel", EHRService.FORM_SECTION_LOCATION.Body); addClientDependency(ClientDependency.supplierFromPath("ehr/buttons/encounterButtons.js")); - addClientDependency(ClientDependency.supplierFromPath("ehr/data/ClinicalEncountersClientStore.js")); - setClientStoreClass("EHR.data.ClinicalEncountersClientStore"); + addClientDependency(ClientDependency.supplierFromPath("onprc_ehr/data/sources/ClinicalEncountersClientStore.js")); + setClientStoreClass("ONPRC_EHR.data.ClinicalEncountersClientStore"); //Modified 8-24-2015 Blasa Shows Template menus // setTemplateMode(TEMPLATE_MODE.NONE);