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
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

var console = require("console");
var LABKEY = require("labkey");
var ldkUtils = require("ldk/Utils").LDK.Server.Utils;

var helper = org.labkey.ldk.query.LookupValidationHelper.create(LABKEY.Security.currentContainer.id, LABKEY.Security.currentUser.id, 'ehr_compliancedb', 'completiondates');

Expand All @@ -27,17 +28,5 @@ function beforeUpdate(row, oldRow, errors){
}

function beforeUpsert(row, errors){
var lookupFields = ['employeeid', 'requirementname'];
for (var i=0;i<lookupFields.length;i++){
var f = lookupFields[i];
var val = row[f];
if (!LABKEY.ExtAdapter.isEmpty(val)){
var normalizedVal = helper.getLookupValue(val, f);

if (LABKEY.ExtAdapter.isEmpty(normalizedVal))
errors[f] = 'Unknown value for field: ' + f + '. Value was: ' + val;
else
row[f] = normalizedVal; //cache value for purpose of normalizing case
}
}
ldkUtils.normalizeLookupFields(helper, row, errors, ['employeeid', 'requirementname']);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ function afterUpdate(row, oldRow, errors){
helper.cascadeUpdate('ehr_compliancedb', 'employees', 'category', row[fieldName], oldRow[fieldName]);
helper.cascadeUpdate('ehr_compliancedb', 'requirementspercategory', 'category', row[fieldName], oldRow[fieldName]);
helper.cascadeUpdate('ehr_compliancedb', 'sopbycategory', 'category', row[fieldName], oldRow[fieldName]);
helper.cascadeUpdate('ehr_compliancedb', 'employeeperunit', 'category', row[fieldName], oldRow[fieldName]);
}
}
}
Expand All @@ -35,6 +36,10 @@ function beforeDelete(row, errors){
if (helper.verifyNotUsed('ehr_compliancedb', 'sopbycategory', 'category', row[fieldName], 'employeecategory')){
addError(errors, fieldName, 'Cannot delete row with value: ' + row[fieldName] + ' because it is referenced by the sopbycategory table');
}

if (helper.verifyNotUsed('ehr_compliancedb', 'employeeperunit', 'category', row[fieldName], 'employeecategory')){

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verifyNotUsed() method name is so confusing given that it actually returns true when value is used!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Forgot to respond. It is weird naming but would require a larger set of PRs to refactor which is out of scope for this PR.

addError(errors, fieldName, 'Cannot delete row with value: ' + row[fieldName] + ' because it is referenced by the employeeperunit table');
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright (c) 2026 LabKey Corporation
*
* Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
*/

var LABKEY = require("labkey");
var ldkUtils = require("ldk/Utils").LDK.Server.Utils;

var helper = org.labkey.ldk.query.LookupValidationHelper.create(LABKEY.Security.currentContainer.id, LABKEY.Security.currentUser.id, 'ehr_compliancedb', 'employeeperunit');

function beforeInsert(row, errors){
beforeUpsert(row, errors);
}

function beforeUpdate(row, oldRow, errors){
//NOTE: this is designed to merge the old row into the new one.
for (var prop in oldRow){
if(!row.hasOwnProperty(prop) && LABKEY.ExtAdapter.isDefined(oldRow[prop])){
row[prop] = oldRow[prop];
}
}

beforeUpsert(row, errors);
}

function beforeUpsert(row, errors){
ldkUtils.normalizeLookupFields(helper, row, errors, ['employeeid', 'unit', 'category']);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

var console = require("console");
var LABKEY = require("labkey");
var ldkUtils = require("ldk/Utils").LDK.Server.Utils;

var helper = org.labkey.ldk.query.LookupValidationHelper.create(LABKEY.Security.currentContainer.id, LABKEY.Security.currentUser.id, 'ehr_compliancedb', 'employeerequirementexemptions');

Expand All @@ -27,17 +28,5 @@ function beforeUpdate(row, oldRow, errors){
}

function beforeUpsert(row, errors){
var lookupFields = ['employeeid', 'requirementname'];
for (var i=0;i<lookupFields.length;i++){
var f = lookupFields[i];
var val = row[f];
if (!LABKEY.ExtAdapter.isEmpty(val)){
var normalizedVal = helper.getLookupValue(val, f);

if (LABKEY.ExtAdapter.isEmpty(normalizedVal))
errors[f] = 'Unknown value for field: ' + f + '. Value was: ' + val;
else
row[f] = normalizedVal; //cache value for purpose of normalizing case
}
}
ldkUtils.normalizeLookupFields(helper, row, errors, ['employeeid', 'requirementname']);
}
18 changes: 4 additions & 14 deletions EHR_ComplianceDB/resources/queries/ehr_compliancedb/employees.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

var console = require("console");
var LABKEY = require("labkey");
var ldkUtils = require("ldk/Utils").LDK.Server.Utils;

var helper = org.labkey.ldk.query.LookupValidationHelper.create(LABKEY.Security.currentContainer.id, LABKEY.Security.currentUser.id, 'ehr_compliancedb', 'employees');

Expand All @@ -27,19 +28,7 @@ function beforeUpdate(row, oldRow, errors){
}

function beforeUpsert(row, errors){
var lookupFields = ['type', 'title', 'category', 'unit', 'location'];
for (var i=0;i<lookupFields.length;i++){
var f = lookupFields[i];
var val = row[f];
if (!LABKEY.ExtAdapter.isEmpty(val)){
var normalizedVal = helper.getLookupValue(val, f);

if (LABKEY.ExtAdapter.isEmpty(normalizedVal))
errors[f] = 'Unknown value for field: ' + f + '. Value was: ' + val;
else
row[f] = normalizedVal; //cache value for purpose of normalizing case
}
}
ldkUtils.normalizeLookupFields(helper, row, errors, ['type', 'title', 'category', 'unit', 'location']);
}

function afterUpdate(row, oldRow, errors){
Expand All @@ -48,6 +37,7 @@ function afterUpdate(row, oldRow, errors){
fieldName = fields[i];
if (row[fieldName] && oldRow[fieldName] && row[fieldName] != oldRow[fieldName]){
helper.cascadeUpdate('ehr_compliancedb', 'employeerequirementexemptions', 'employeeid', row[fieldName], oldRow[fieldName]);
helper.cascadeUpdate('ehr_compliancedb', 'employeeperunit', 'employeeid', row[fieldName], oldRow[fieldName]);
helper.cascadeUpdate('ehr_compliancedb', 'requirementsperemployee', 'employeeid', row[fieldName], oldRow[fieldName]);
helper.cascadeUpdate('ehr_compliancedb', 'sopdates', 'employeeid', row[fieldName], oldRow[fieldName]);
helper.cascadeUpdate('ehr_compliancedb', 'completiondates', 'employeeid', row[fieldName], oldRow[fieldName]);
Expand All @@ -57,7 +47,7 @@ function afterUpdate(row, oldRow, errors){
}

function beforeDelete(row, errors){
var queries = ['employeerequirementexemptions', 'requirementsperemployee', 'sopdates', 'completiondates'], query;
var queries = ['employeerequirementexemptions', 'employeeperunit', 'requirementsperemployee', 'sopdates', 'completiondates'], query;
var fields = ['employeeid'], fieldName;
for (var j=0;j<queries.length;j++){
query = queries[j];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

var console = require("console");
var LABKEY = require("labkey");
var ldkUtils = require("ldk/Utils").LDK.Server.Utils;

var helper = org.labkey.ldk.query.LookupValidationHelper.create(LABKEY.Security.currentContainer.id, LABKEY.Security.currentUser.id, 'ehr_compliancedb', 'requirements');

Expand All @@ -27,19 +28,7 @@ function beforeUpdate(row, oldRow, errors){
}

function beforeUpsert(row, errors){
var lookupFields = ['type'];
for (var i=0;i<lookupFields.length;i++){
var f = lookupFields[i];
var val = row[f];
if (!LABKEY.ExtAdapter.isEmpty(val)){
var normalizedVal = helper.getLookupValue(val, f);

if (LABKEY.ExtAdapter.isEmpty(normalizedVal))
errors[f] = 'Unknown value for field: ' + f + '. Value was: ' + val;
else
row[f] = normalizedVal; //cache value for purpose of normalizing case
}
}
ldkUtils.normalizeLookupFields(helper, row, errors, ['type']);
}

function afterUpdate(row, oldRow, errors){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

var console = require("console");
var LABKEY = require("labkey");
var ldkUtils = require("ldk/Utils").LDK.Server.Utils;

var helper = org.labkey.ldk.query.LookupValidationHelper.create(LABKEY.Security.currentContainer.id, LABKEY.Security.currentUser.id, 'ehr_compliancedb', 'requirementspercategory');

Expand All @@ -27,17 +28,5 @@ function beforeUpdate(row, oldRow, errors){
}

function beforeUpsert(row, errors){
var lookupFields = ['requirementname', 'category', 'unit'];
for (var i=0;i<lookupFields.length;i++){
var f = lookupFields[i];
var val = row[f];
if (!LABKEY.ExtAdapter.isEmpty(val)){
var normalizedVal = helper.getLookupValue(val, f);

if (LABKEY.ExtAdapter.isEmpty(normalizedVal))
errors[f] = 'Unknown value for field: ' + f + '. Value was: ' + val;
else
row[f] = normalizedVal; //cache value for purpose of normalizing case
}
}
ldkUtils.normalizeLookupFields(helper, row, errors, ['requirementname', 'category', 'unit']);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

var console = require("console");
var LABKEY = require("labkey");
var ldkUtils = require("ldk/Utils").LDK.Server.Utils;

var helper = org.labkey.ldk.query.LookupValidationHelper.create(LABKEY.Security.currentContainer.id, LABKEY.Security.currentUser.id, 'ehr_compliancedb', 'requirementsperemployee');

Expand All @@ -27,17 +28,5 @@ function beforeUpdate(row, oldRow, errors){
}

function beforeUpsert(row, errors){
var lookupFields = ['employeeid', 'requirementname'];
for (var i=0;i<lookupFields.length;i++){
var f = lookupFields[i];
var val = row[f];
if (!LABKEY.ExtAdapter.isEmpty(val)){
var normalizedVal = helper.getLookupValue(val, f);

if (LABKEY.ExtAdapter.isEmpty(normalizedVal))
errors[f] = 'Unknown value for field: ' + f + '. Value was: ' + val;
else
row[f] = normalizedVal; //cache value for purpose of normalizing case
}
}
ldkUtils.normalizeLookupFields(helper, row, errors, ['employeeid', 'requirementname']);
}
30 changes: 30 additions & 0 deletions EHR_ComplianceDB/resources/queries/ehr_compliancedb/sopdates.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Copyright (c) 2026 LabKey Corporation
*
* Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
*/

var LABKEY = require("labkey");
var ldkUtils = require("ldk/Utils").LDK.Server.Utils;

var helper = org.labkey.ldk.query.LookupValidationHelper.create(LABKEY.Security.currentContainer.id, LABKEY.Security.currentUser.id, 'ehr_compliancedb', 'sopdates');

function beforeInsert(row, errors){
beforeUpsert(row, errors);
}

function beforeUpdate(row, oldRow, errors){
//NOTE: this is designed to merge the old row into the new one.
for (var prop in oldRow){
if(!row.hasOwnProperty(prop) && LABKEY.ExtAdapter.isDefined(oldRow[prop])){
row[prop] = oldRow[prop];
}
}

beforeUpsert(row, errors);
}

function beforeUpsert(row, errors){
//sopid is omitted deliberately: its fk to sops is commented out in ehr_compliancedb.xml, so getLookupValue would return null and reject every row
ldkUtils.normalizeLookupFields(helper, row, errors, ['employeeid']);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ function afterUpdate(row, oldRow, errors){
if (row[fieldName] && oldRow[fieldName] && row[fieldName] != oldRow[fieldName]){
helper.cascadeUpdate('ehr_compliancedb', 'requirementspercategory', 'unit', row[fieldName], oldRow[fieldName]);
helper.cascadeUpdate('ehr_compliancedb', 'employees', 'unit', row[fieldName], oldRow[fieldName]);
helper.cascadeUpdate('ehr_compliancedb', 'employeeperunit', 'unit', row[fieldName], oldRow[fieldName]);
}
}
}

function beforeDelete(row, errors){
var queries = ['requirementspercategory', 'employees'], query;
var queries = ['requirementspercategory', 'employees', 'employeeperunit'], query;
var fields = ['unit'], fieldName;
for (var j=0;j<queries.length;j++){
query = queries[j];
Expand Down