Skip to content

Commit f4bcbea

Browse files
Handle rearrivals (#660)
* Fix data type issue on performedby default values * Add rearrival form. * Update triggers to prevent reusing Id on arrival but not rearrival * Update assignment triggers
1 parent a886812 commit f4bcbea

13 files changed

Lines changed: 179 additions & 32 deletions

File tree

nirc_ehr/resources/queries/study/arrival.js

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,14 @@ require("ehr/triggers").initScript(this);
22

33
var triggerHelper = new org.labkey.nirc_ehr.query.NIRC_EHRTriggerHelper(LABKEY.Security.currentUser.id, LABKEY.Security.currentContainer.id);
44

5-
function onInit(event, helper){
6-
helper.setScriptOptions({
7-
allowAnyId: true,
8-
requiresStatusRecalc: true,
9-
allowDatesInDistantPast: true,
10-
skipAssignmentCheck: true,
11-
});
12-
}
13-
145
EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.BEFORE_UPSERT, 'study', 'Arrival', function(helper, scriptErrors, row, oldRow) {
156

7+
if(!row.rearrival){
8+
helper.setScriptOptions({requiresStatusRecalc: true});
9+
}
10+
1611
// Due to order of operation, this needs to be done in upsert instead of insert
17-
if (helper.getEvent() == 'insert' && row.Id && triggerHelper.animalIdExists(row.Id)) {
12+
if (!row.rearrival && helper.getEvent() == 'insert' && row.Id && triggerHelper.animalIdExists(row.Id)) {
1813
EHR.Server.Utils.addError(scriptErrors, 'Id', 'Animal Id ' + row.Id + ' is already in use. Please use a different Id.', 'ERROR');
1914
}
2015

@@ -25,7 +20,7 @@ EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Even
2520
helper.registerArrival(row.Id, row.date);
2621

2722
//Insert or update demographic and birth records
28-
if (!helper.isETL() && !helper.isGeneratedByServer() && !helper.isValidateOnly()) {
23+
if (!row.rearrival && !helper.isETL() && !helper.isGeneratedByServer() && !helper.isValidateOnly()) {
2924

3025
// this allows demographic records in qcstates other than completed
3126
var extraDemographicsFieldMappings = {

nirc_ehr/resources/queries/study/arrival.query.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@
6969
<fkColumnName>meaning</fkColumnName>
7070
</fk>
7171
</column>
72+
<column columnName="rearrival">
73+
<columnTitle>Rearrival</columnTitle>
74+
</column>
7275
</columns>
7376
</table>
7477
</tables>

nirc_ehr/resources/queries/study/arrival/.qview.xml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
<columns>
66
<column name="Id"/>
77
<column name="date"/>
8-
<column name="gender"/>
9-
<column name="species"/>
8+
<column name="Id/Demographics/gender"/>
9+
<column name="Id/Demographics/species"/>
1010
<column name="Id/Demographics/dam"/>
1111
<column name="Id/Demographics/sire"/>
1212
<column name="sourceFacility"/>
1313
<column name="acquisitionType"/>
1414
<column name="performedBy"/>
1515
<column name="history"/>
16-
<column name="lab"/>
1716
<column name="attachmentFile"/>
1817
</columns>
1918
</customView>

nirc_ehr/resources/queries/study/protocolAssignment.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ var prevDate;
66
var missing = [];
77

88
var count = 0;
9-
let animalIds = [];
109

1110
var triggerHelper = new org.labkey.nirc_ehr.query.NIRC_EHRTriggerHelper(LABKEY.Security.currentUser.id, LABKEY.Security.currentContainer.id);
1211

@@ -31,12 +30,7 @@ function getLastAssignment(id){
3130
}
3231

3332
function onInit(event, helper){
34-
35-
helper.setScriptOptions({
36-
allowAnyId: false,
37-
requiresStatusRecalc: true,
38-
allowDatesInDistantPast: true
39-
});
33+
4034
if (helper.isETL()) {
4135
LABKEY.Query.selectRows({
4236
schemaName: 'ehr',

nirc_ehr/resources/referenceStudy/study/datasets/datasets_metadata.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@
108108
<column columnName="arrivalType">
109109
<datatype>varchar</datatype>
110110
</column>
111+
<column columnName="rearrival">
112+
<datatype>boolean</datatype>
113+
</column>
111114
</columns>
112115
</table>
113116
<table tableName="assignment" tableDbType="TABLE">

nirc_ehr/resources/scripts/nirc_triggers.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,27 @@ exports.init = function (EHR) {
2626
});
2727
});
2828

29+
EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.INIT, 'study', 'arrival', function(event, helper) {
30+
helper.setScriptOptions({
31+
allowAnyId: true,
32+
requiresStatusRecalc: false, // set in upsert to handle rearrival
33+
allowDatesInDistantPast: true,
34+
skipAssignmentCheck: true,
35+
});
36+
});
37+
38+
EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.INIT, 'study', 'protocolAssignment', function(event, helper) {
39+
helper.setScriptOptions({
40+
allowAnyId: false,
41+
requiresStatusRecalc: false,
42+
allowDatesInDistantPast: true
43+
});
44+
});
45+
2946
EHR.Server.TriggerManager.registerHandlerForQuery(EHR.Server.TriggerManager.Events.INIT, 'study', 'assignment', function(event, helper) {
3047
helper.setScriptOptions({
3148
allowAnyId: false,
32-
requiresStatusRecalc: true,
49+
requiresStatusRecalc: false,
3350
allowDatesInDistantPast: true,
3451
skipAssignmentCheck: true,
3552
removeTimeFromDate: false,

nirc_ehr/resources/web/nirc_ehr/model/sources/Arrival.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ EHR.model.DataModelManager.registerMetadata('Arrival', {
9797
columnConfig: {
9898
width: 200
9999
}
100+
},
101+
rearrival: {
102+
allowBlank: true,
103+
hidden: true,
104+
showInGrid: false
100105
}
101106
}
102107
}

nirc_ehr/resources/web/nirc_ehr/model/sources/NIRCDefault.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ EHR.model.DataModelManager.registerMetadata('Default', {
1414
allowBlank: true,
1515
defaultValue: LABKEY.Security.currentUser.id,
1616
getInitialValue: function (v, rec) {
17-
if (Number.isInteger(v)){
17+
if (Number.isInteger(Number(v))){
1818
return v;
1919
}
2020

@@ -140,7 +140,7 @@ EHR.model.DataModelManager.registerMetadata('Default', {
140140
sort: 'Type,DisplayName'
141141
},
142142
getInitialValue: function (v, rec) {
143-
if (Number.isInteger(v)){
143+
if (Number.isInteger(Number(v))){
144144
return v;
145145
}
146146

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
EHR.model.DataModelManager.registerMetadata('Rearrival', {
3+
4+
byQuery: {
5+
'study.arrival': {
6+
rearrival: {
7+
getInitialValue: function (v, rec) {
8+
return true
9+
},
10+
editable: false,
11+
hidden: true,
12+
columnConfig: {
13+
editable: false
14+
}
15+
},
16+
performedby: {
17+
hidden: true,
18+
showInGrid: false
19+
},
20+
sourceFacility: {
21+
allowBlank: false,
22+
columnConfig: {
23+
fixed: true,
24+
width: 150
25+
},
26+
},
27+
acquisitionType: {
28+
allowBlank: false,
29+
columnConfig: {
30+
fixed: true,
31+
width: 150
32+
},
33+
},
34+
arrivalType: {
35+
allowBlank: false,
36+
columnConfig: {
37+
width: 200
38+
}
39+
},
40+
'cage': {
41+
allowBlank: true,
42+
hidden: true,
43+
showInGrid: false
44+
},
45+
project: {
46+
allowBlank: true,
47+
hidden: true,
48+
showInGrid: false
49+
},
50+
arrivalProtocol: {
51+
allowBlank: true,
52+
hidden: true,
53+
showInGrid: false
54+
},
55+
}
56+
}
57+
});

nirc_ehr/src/org/labkey/nirc_ehr/NIRC_EHRModule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ private void registerDataEntry()
236236
EHRService.get().registerFormType(new DefaultDataEntryFormFactory(NIRCBehaviorRoundsFormType.class, this));
237237
EHRService.get().registerFormType(new DefaultDataEntryFormFactory(NIRCChemistryImportFormType.class, this));
238238
EHRService.get().registerFormType(new DefaultDataEntryFormFactory(NIRCSerologyImportFormType.class, this));
239+
EHRService.get().registerFormType(new DefaultDataEntryFormFactory(NIRCRearrivalFormType.class, this));
239240
}
240241

241242
@Override

0 commit comments

Comments
 (0)