@@ -15,21 +15,29 @@ function onInit(event, helper) {
1515
1616EHR . Server . TriggerManager . registerHandlerForQuery ( EHR . Server . TriggerManager . Events . BEFORE_UPSERT , 'study' , 'cases' , function ( helper , errors , row , oldRow ) {
1717 if ( ! helper . isETL ( ) ) {
18+ var error = false ;
1819 if ( row . enddate ) {
1920 if ( ! row . closeRemark ) {
2021 EHR . Server . Utils . addError ( errors , 'closeRemark' , 'Close remark required when closing a case.' , 'ERROR' ) ;
22+ error = true ;
2123 }
2224
2325 if ( ! triggerHelper . canCloseCase ( row . category ) ) {
2426 EHR . Server . Utils . addError ( errors , 'enddate' , 'Veterinarian permission required to close a case.' , 'ERROR' ) ;
27+ error = true ;
2528 }
2629 }
2730
31+ if ( ! row . performedby ) {
32+ EHR . Server . Utils . addError ( errors , 'performedby' , 'Opened By is a required field.' , 'ERROR' ) ;
33+ error = true ;
34+ }
35+
2836 if ( ! helper . isValidateOnly ( ) && row . caseid && row . enddate && ( row . enddate != oldRow . enddate ) ) {
2937 triggerHelper . closeDailyClinicalObs ( row . caseid , row . enddate ) ;
3038 }
3139
32- if ( ! helper . isValidateOnly ( ) ) {
40+ if ( ! helper . isValidateOnly ( ) && ! error ) {
3341 var qc ;
3442 if ( row . QCStateLabel ) {
3543 qc = EHR . Server . Security . getQCStateByLabel ( row . QCStateLabel ) ;
@@ -41,36 +49,21 @@ EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Even
4149 if ( ! qc ) {
4250 console . error ( 'Unable to find QCState: ' + row . QCState + '/' + row . QCStateLabel ) ;
4351 }
44-
45- // Don't allow taking an existing non-draft case back to draft
46- if ( oldRow && qc . Label == 'In Progress' ) {
47- var oldQc = EHR . Server . Security . getQCStateByLabel ( oldRow . QCStateLabel ) ;
48- if ( oldQc . Label != 'In Progress' ) {
49- EHR . Server . Utils . addError ( errors , null , 'Cannot save a draft copy of a case already opened or in review.' , 'ERROR' ) ;
50- }
51- }
5252 else {
53- var reopen = oldRow && oldRow . enddate && ! row . enddate ;
54- if ( ( reopen || helper . getEvent ( ) == 'insert' ) && row . caseid && row . Id && row . performedby && row . taskid && row . category == 'Clinical' ) {
55- var qc ;
56- if ( row . QCStateLabel ) {
57- qc = EHR . Server . Security . getQCStateByLabel ( row . QCStateLabel ) ;
58- }
59- else if ( row . QCState ) {
60- qc = EHR . Server . Security . getQCStateByRowId ( row . QCState ) ;
61- }
6253
63- if ( ! qc ) {
64- console . error ( 'Unable to find QCState: ' + row . QCState + '/' + row . QCStateLabel ) ;
54+ // Don't allow taking an existing non-draft case back to draft
55+ if ( oldRow && qc . Label == 'In Progress' ) {
56+ var oldQc = EHR . Server . Security . getQCStateByLabel ( oldRow . QCStateLabel ) ;
57+ if ( oldQc . Label != 'In Progress' ) {
58+ EHR . Server . Utils . addError ( errors , null , 'Cannot save a draft copy of a case already opened or in review.' , 'ERROR' ) ;
6559 }
66- else if ( ( qc . Label == 'Completed' || qc . Label == 'Review Required' ) && row . caseid && row . Id && row . performedby && row . taskid && qc ) {
67- var ordersInTransaction = helper . getProperty ( 'ordersInTransaction' ) ;
68- var oit = [ ] ;
69- if ( ordersInTransaction && ordersInTransaction . length ) {
70- oit = ordersInTransaction ;
71- }
72- triggerHelper . ensureDailyClinicalObservationOrders ( row . Id , row . caseid , row . date , row . performedby , qc . RowId , row . taskid , oit ) ;
60+ } else if ( row . category == 'Clinical' && ( qc . Label == 'Completed' || qc . Label == 'Review Required' ) && row . caseid && row . Id && row . performedby && row . taskid ) {
61+ var ordersInTransaction = helper . getProperty ( 'ordersInTransaction' ) ;
62+ var oit = [ ] ;
63+ if ( ordersInTransaction && ordersInTransaction . length ) {
64+ oit = ordersInTransaction ;
7365 }
66+ triggerHelper . ensureDailyClinicalObservationOrders ( row . Id , row . caseid , row . date , row . performedby , qc . RowId , row . taskid , oit ) ;
7467 }
7568 }
7669 }
0 commit comments