Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 31 additions & 8 deletions nirc_ehr/resources/queries/study/cases.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Even
triggerHelper.closeDailyClinicalObs(row.caseid, row.enddate);
}

var reopen = oldRow && oldRow.enddate && !row.enddate;
if (!helper.isValidateOnly() && (reopen || helper.getEvent() == 'insert') && row.caseid && row.Id && row.performedby && row.taskid && row.category == 'Clinical') {
if (!helper.isValidateOnly()) {
var qc;
if (row.QCStateLabel) {
qc = EHR.Server.Security.getQCStateByLabel(row.QCStateLabel);
Expand All @@ -42,13 +41,37 @@ EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Even
if (!qc) {
console.error('Unable to find QCState: ' + row.QCState + '/' + row.QCStateLabel);
}
else if ((qc.Label == 'Completed' || qc.Label == 'Review Required') && row.caseid && row.Id && row.performedby && row.taskid && qc) {
var ordersInTransaction = helper.getProperty('ordersInTransaction');
var oit = [];
if (ordersInTransaction && ordersInTransaction.length) {
oit = ordersInTransaction;

// Don't allow taking an existing non-draft case back to draft
if (oldRow && qc.Label == 'In Progress') {
var oldQc = EHR.Server.Security.getQCStateByLabel(oldRow.QCStateLabel);
if (oldQc.Label != 'In Progress') {
EHR.Server.Utils.addError(errors, null, 'Cannot save a draft copy of a case already opened or in review.', 'ERROR');
}
}
else {
var reopen = oldRow && oldRow.enddate && !row.enddate;
if ((reopen || helper.getEvent() == 'insert') && row.caseid && row.Id && row.performedby && row.taskid && row.category == 'Clinical') {
var qc;
if (row.QCStateLabel) {
qc = EHR.Server.Security.getQCStateByLabel(row.QCStateLabel);
}
else if (row.QCState) {
qc = EHR.Server.Security.getQCStateByRowId(row.QCState);
}

if (!qc) {
console.error('Unable to find QCState: ' + row.QCState + '/' + row.QCStateLabel);
}
else if ((qc.Label == 'Completed' || qc.Label == 'Review Required') && row.caseid && row.Id && row.performedby && row.taskid && qc) {
var ordersInTransaction = helper.getProperty('ordersInTransaction');
var oit = [];
if (ordersInTransaction && ordersInTransaction.length) {
oit = ordersInTransaction;
}
triggerHelper.ensureDailyClinicalObservationOrders(row.Id, row.caseid, row.date, row.performedby, qc.RowId, row.taskid, oit);
}
}
triggerHelper.ensureDailyClinicalObservationOrders(row.Id, row.caseid, row.date, row.performedby, qc.RowId, row.taskid, oit);
}
}
}
Expand Down
6 changes: 5 additions & 1 deletion nirc_ehr/resources/web/nirc_ehr/data/CaseStoreCollection.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,13 @@ Ext4.define('NIRC_EHR.data.CaseStoreCollection', {
cs.fireEvent('datachanged', cs);
}, this);
}
// Only validate once stores have loaded, otherwise can have perf issues when loading existing cases
else if( this.haveStoresLoaded ) {
// Validate across the sections, such as clin_remark not required if case close date entered
this.validateAll();
}

this._cachedKey = cacheKey;
this.validateAll();
},

getTaskId: function(){
Expand Down
1 change: 1 addition & 0 deletions nirc_ehr/src/org/labkey/nirc_ehr/NIRC_EHRModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ protected void doStartupAfterSpringConfig(ModuleContext moduleContext)

EHRService.get().unregisterMoreActionsButtons("study", "treatment_order");
EHRService.get().registerMoreActionsButton(new MarkCompletedButton(this, "study", "observation_order", "Set End Date"), "study", "observation_order");
EHRService.get().registerMoreActionsButton(new MarkCompletedButton(this, "study", "flags", "Set End Date"), "study", "flags");

registerDataEntry();
NotificationService.get().registerNotification(new NIRCDeathNotification());
Expand Down