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/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);