Skip to content

Commit 69cea2b

Browse files
committed
Incorporate performedby into workflow
1 parent db2ab65 commit 69cea2b

4 files changed

Lines changed: 54 additions & 13 deletions

File tree

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
</column>
3535
<column columnName="performedBy">
3636
<columnTitle>Performed By</columnTitle>
37-
<nullable>false</nullable>
3837
</column>
3938
<column columnName="scheduledDate">
4039
<columnTitle>Scheduled Date</columnTitle>

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@
4343
</fk>
4444
</column>
4545
<column columnName="remark"/>
46-
<column columnName="performedBy" />
46+
<column columnName="performedBy">
47+
</column>
4748
</columns>
4849
</table>
4950
</tables>

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

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ EHR.model.DataModelManager.registerMetadata('Default', {
1111
},
1212
performedby: {
1313
hidden: false,
14+
allowBlank: true,
1415
defaultValue: LABKEY.Security.currentUser.id,
1516
getInitialValue: function (v, rec) {
1617
return LABKEY.Security.currentUser.id;
@@ -112,15 +113,6 @@ EHR.model.DataModelManager.registerMetadata('Default', {
112113
'enddate': {
113114
hidden: true
114115
},
115-
performedby: {
116-
allowBlank: false,
117-
lookup: {
118-
schemaName: 'core',
119-
queryName: 'users',
120-
keyColumn: 'UserId',
121-
displayColumn: 'DisplayName',
122-
},
123-
},
124116
reason: {
125117
defaultValue: null,
126118
allowBlank: false,
@@ -131,6 +123,35 @@ EHR.model.DataModelManager.registerMetadata('Default', {
131123
filterArray: [LABKEY.Filter.create('date_disabled', null, LABKEY.Filter.Types.ISBLANK)]
132124
}
133125
},
126+
performedby: {
127+
hidden: false,
128+
allowBlank: true,
129+
defaultValue: LABKEY.Security.currentUser.id,
130+
lookup: {
131+
schemaName: 'core',
132+
queryName: 'users',
133+
keyColumn: 'UserId',
134+
displayColumn: 'DisplayName',
135+
columns: 'UserId,DisplayName,FirstName,LastName',
136+
sort: 'Type,DisplayName'
137+
},
138+
getInitialValue: function (v, rec) {
139+
return LABKEY.Security.currentUser.id;
140+
},
141+
editorConfig: {
142+
store: {
143+
type: 'labkey-store',
144+
schemaName: 'core',
145+
146+
// 'performedby' is a text field in the dataset and its lookup to the userid is an int field - this mismatch causes it to disappear
147+
// from the display when a value is selected from the dropdown even though the 'userid' value gets saved as a text (this behavior was only seen
148+
// in the form panel but not in the grid panel).
149+
// casting it as a varchar when loading the store fixes this issue.
150+
sql: "SELECT CAST (UserId AS VARCHAR) AS UserId,DisplayName,FirstName,LastName FROM core.PrincipalsWithoutAdmin WHERE active = TRUE AND Type = 'u'",
151+
autoLoad: true
152+
}
153+
}
154+
},
134155
},
135156
'study.arrival': {
136157
initialRoom: {
@@ -190,6 +211,9 @@ EHR.model.DataModelManager.registerMetadata('Default', {
190211
treatmentid: {
191212
hidden: true,
192213
nullable: true
214+
},
215+
performedby: {
216+
allowBlank: true,
193217
}
194218
},
195219
'study.observation_order': {

nirc_ehr/src/org/labkey/nirc_ehr/table/NIRC_EHRSharedDatasetTrigger.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111

1212
/**
1313
* Shared dataset trigger to add triggers to act on all the study datasets.
14-
* */
14+
*/
1515
public class NIRC_EHRSharedDatasetTrigger implements Trigger
1616
{
1717
private void transformAnimalIdToUpperCase(Map<String, Object> row)
1818
{
19-
if (row != null && row.containsKey("Id"))
19+
if (row != null && row.containsKey("Id") && row.get("Id") != null)
2020
{
2121
row.put("Id", ((String) row.get("Id")).toUpperCase());
2222
}
@@ -26,5 +26,22 @@ private void transformAnimalIdToUpperCase(Map<String, Object> row)
2626
public void beforeInsert(TableInfo table, Container c, User user, @Nullable Map<String, Object> newRow, ValidationException errors, Map<String, Object> extraContext) throws ValidationException
2727
{
2828
transformAnimalIdToUpperCase(newRow);
29+
if (newRow != null && newRow.containsKey("performedby") && newRow.get("performedby") == null)
30+
{
31+
if (newRow.containsKey("QCStateLabel") && newRow.get("QCStateLabel").equals("Completed"))
32+
errors.addFieldError("performedby", "Performed by must be entered in all " + table.getTitle() + " records before submitting final.");
33+
}
34+
}
35+
36+
@Override
37+
public void beforeUpdate(TableInfo table, Container c,
38+
User user, @Nullable Map<String, Object> newRow, @Nullable Map<String, Object> oldRow,
39+
ValidationException errors, Map<String, Object> extraContext) throws ValidationException
40+
{
41+
if (newRow != null && newRow.containsKey("performedby") && newRow.get("performedby") == null)
42+
{
43+
if (newRow.containsKey("QCStateLabel") && newRow.get("QCStateLabel").equals("Completed"))
44+
errors.addFieldError("performedby", "Performed by must be entered in all " + table.getTitle() + " records before submitting final.");
45+
}
2946
}
3047
}

0 commit comments

Comments
 (0)