LT-92: Adjusting some inappropriate class and method names
This commit is contained in:
parent
e3b8dd001a
commit
b8c397a9b4
@ -1,15 +1,15 @@
|
||||
export class BaseChecker {
|
||||
|
||||
constructor() {
|
||||
this.criterias = [];
|
||||
this.criteria = [];
|
||||
}
|
||||
|
||||
check(data) {
|
||||
const nonconformity = [];
|
||||
this.criterias.forEach(criteria => {
|
||||
const criteriaResult = criteria.check(data);
|
||||
if (!criteriaResult.passed) {
|
||||
nonconformity.push(criteriaResult);
|
||||
this.criteria.forEach(criterion => {
|
||||
const criterionResult = criterion.evaluate(data);
|
||||
if (!criterionResult.passed) {
|
||||
nonconformity.push(criterionResult);
|
||||
}
|
||||
});
|
||||
return nonconformity;
|
||||
|
||||
@ -1,36 +1,36 @@
|
||||
import { BaseChecker } from './BaseChecker';
|
||||
import { MaxTargetPerOrganCriteria } from '../criterias/MaxTargetPerOrganCriteria';
|
||||
import { MaxTargetsCriteria } from '../criterias/MaxTargetsCriteria';
|
||||
import { MeasurementsLengthCriteria } from '../criterias/MeasurementsLengthCriteria';
|
||||
import { ModalityCriteria } from '../criterias/ModalityCriteria';
|
||||
import { NonTargetResponseCriteria } from '../criterias/NonTargetResponseCriteria';
|
||||
import { TargetTypeCriteria } from '../criterias/TargetTypeCriteria';
|
||||
import { MaxTargetPerOrganCriterion } from '../criteria/MaxTargetPerOrgan';
|
||||
import { MaxTargetsCriterion } from '../criteria/MaxTargets';
|
||||
import { MeasurementsLengthCriterion } from '../criteria/MeasurementsLength';
|
||||
import { ModalityCriterion } from '../criteria/Modality';
|
||||
import { NonTargetResponseCriterion } from '../criteria/NonTargetResponse';
|
||||
import { TargetTypeCriterion } from '../criteria/TargetType';
|
||||
|
||||
export class RecistChecker extends BaseChecker {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
const addCriteria = criteria => this.criterias.push(criteria);
|
||||
const addCriterion = criterion => this.criteria.push(criterion);
|
||||
|
||||
addCriteria(new MaxTargetsCriteria(5));
|
||||
addCriteria(new MaxTargetPerOrganCriteria(2));
|
||||
addCriteria(new ModalityCriteria(this.getModalityCriteriaOptions()));
|
||||
addCriteria(new NonTargetResponseCriteria());
|
||||
addCriteria(new TargetTypeCriteria());
|
||||
addCriteria(new MeasurementsLengthCriteria(this.getExtranodalLengthCriteriaOptions()));
|
||||
addCriteria(new MeasurementsLengthCriteria(this.getExtranodalXrayLengthCriteriaOptions()));
|
||||
addCriteria(new MeasurementsLengthCriteria(this.getNodalLengthCriteriaOptions()));
|
||||
addCriterion(new MaxTargetsCriterion(5));
|
||||
addCriterion(new MaxTargetPerOrganCriterion(2));
|
||||
addCriterion(new ModalityCriterion(this.getModalityOptions()));
|
||||
addCriterion(new NonTargetResponseCriterion());
|
||||
addCriterion(new TargetTypeCriterion());
|
||||
addCriterion(new MeasurementsLengthCriterion(this.getExtranodalLengthOptions()));
|
||||
addCriterion(new MeasurementsLengthCriterion(this.getExtranodalXrayLengthOptions()));
|
||||
addCriterion(new MeasurementsLengthCriterion(this.getNodalLengthOptions()));
|
||||
}
|
||||
|
||||
getModalityCriteriaOptions() {
|
||||
getModalityOptions() {
|
||||
return {
|
||||
method: 'restrict',
|
||||
modalities: ['US']
|
||||
};
|
||||
}
|
||||
|
||||
getExtranodalLengthCriteriaOptions() {
|
||||
getExtranodalLengthOptions() {
|
||||
return {
|
||||
longAxis: 10,
|
||||
longAxisSliceThicknessMultiplier: 2,
|
||||
@ -41,7 +41,7 @@ export class RecistChecker extends BaseChecker {
|
||||
};
|
||||
}
|
||||
|
||||
getExtranodalXrayLengthCriteriaOptions() {
|
||||
getExtranodalXrayLengthOptions() {
|
||||
return {
|
||||
shortAxis: 20,
|
||||
longAxis: 20,
|
||||
@ -52,7 +52,7 @@ export class RecistChecker extends BaseChecker {
|
||||
};
|
||||
}
|
||||
|
||||
getNodalLengthCriteriaOptions() {
|
||||
getNodalLengthOptions() {
|
||||
return {
|
||||
shortAxis: 15,
|
||||
shortAxisSliceThicknessMultiplier: 2,
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
export class BaseCriterion {
|
||||
|
||||
constructor() {}
|
||||
|
||||
generateResponse(message, measurements) {
|
||||
const passed = !message;
|
||||
return {
|
||||
passed,
|
||||
message,
|
||||
measurements
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,13 +1,13 @@
|
||||
import { BaseCriteria } from './BaseCriteria';
|
||||
import { BaseCriterion } from './BaseCriterion';
|
||||
|
||||
export class MaxTargetPerOrganCriteria extends BaseCriteria {
|
||||
export class MaxTargetPerOrganCriterion extends BaseCriterion {
|
||||
|
||||
constructor(targetsLimit) {
|
||||
super();
|
||||
this.targetsLimit = targetsLimit;
|
||||
}
|
||||
|
||||
check(data) {
|
||||
evaluate(data) {
|
||||
const targetsPerOrgan = {};
|
||||
let message;
|
||||
let measurements = [];
|
||||
@ -29,7 +29,7 @@ export class MaxTargetPerOrganCriteria extends BaseCriteria {
|
||||
message = `Each organ should not have more than ${this.targetsLimit} targets.`;
|
||||
}
|
||||
|
||||
return this.respond(message, measurements);
|
||||
return this.generateResponse(message, measurements);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,14 +1,14 @@
|
||||
import { BaseCriteria } from './BaseCriteria';
|
||||
import { BaseCriterion } from './BaseCriterion';
|
||||
import { _ } from 'meteor/underscore';
|
||||
|
||||
export class MaxTargetsCriteria extends BaseCriteria {
|
||||
export class MaxTargetsCriterion extends BaseCriterion {
|
||||
|
||||
constructor(targetsLimit) {
|
||||
super();
|
||||
this.targetsLimit = targetsLimit;
|
||||
}
|
||||
|
||||
check(data) {
|
||||
evaluate(data) {
|
||||
const measurementNumbers = _.uniq(_.map(data.targets, target => {
|
||||
return target.measurement.measurementNumber;
|
||||
}));
|
||||
@ -18,7 +18,7 @@ export class MaxTargetsCriteria extends BaseCriteria {
|
||||
message = `The study should not have more than ${this.targetsLimit} targets.`;
|
||||
}
|
||||
|
||||
return this.respond(message);
|
||||
return this.generateResponse(message);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,13 +1,13 @@
|
||||
import { BaseCriteria } from './BaseCriteria';
|
||||
import { BaseCriterion } from './BaseCriterion';
|
||||
|
||||
export class MeasurementsLengthCriteria extends BaseCriteria {
|
||||
export class MeasurementsLengthCriterion extends BaseCriterion {
|
||||
|
||||
constructor(options) {
|
||||
super();
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
check(data) {
|
||||
evaluate(data) {
|
||||
let message;
|
||||
let measurements = [];
|
||||
const { options } = this;
|
||||
@ -49,7 +49,7 @@ export class MeasurementsLengthCriteria extends BaseCriteria {
|
||||
message = options.message;
|
||||
}
|
||||
|
||||
return this.respond(message, measurements);
|
||||
return this.generateResponse(message, measurements);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
import { BaseCriteria } from './BaseCriteria';
|
||||
import { BaseCriterion } from './BaseCriterion';
|
||||
import { _ } from 'meteor/underscore';
|
||||
|
||||
/*
|
||||
@ -8,14 +8,14 @@ import { _ } from 'meteor/underscore';
|
||||
* method (string): allow, restrict
|
||||
* modalities (string[]): list of allowed/restricted modalities
|
||||
*/
|
||||
export class ModalityCriteria extends BaseCriteria {
|
||||
export class ModalityCriterion extends BaseCriterion {
|
||||
|
||||
constructor(options) {
|
||||
super();
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
check(data) {
|
||||
evaluate(data) {
|
||||
const measurementTypes = this.options.measurementTypes || ['targets'];
|
||||
const modalitiesSet = new Set(this.options.modalities);
|
||||
const validationMethod = this.options.method;
|
||||
@ -31,7 +31,7 @@ export class ModalityCriteria extends BaseCriteria {
|
||||
const metadata = item.metadata;
|
||||
const modality = metadata.modality.toUpperCase();
|
||||
|
||||
if (((validationMethod === 'allow') && !modalitiesSet.has(modality)) ||
|
||||
if (((validationMethod === 'allow') && !modalitiesSet.has(modality)) ||
|
||||
((validationMethod === 'restrict') && modalitiesSet.has(modality))) {
|
||||
measurements.push(measurement);
|
||||
invalidModalities.push(modality);
|
||||
@ -47,7 +47,7 @@ export class ModalityCriteria extends BaseCriteria {
|
||||
message = `The ${modalityText} ${uniqueModalitiesText} should not be used as a method of measurement`;
|
||||
}
|
||||
|
||||
return this.respond(message, measurements);
|
||||
return this.generateResponse(message, measurements);
|
||||
}
|
||||
|
||||
};
|
||||
@ -1,12 +1,12 @@
|
||||
import { BaseCriteria } from './BaseCriteria';
|
||||
import { BaseCriterion } from './BaseCriterion';
|
||||
|
||||
export class NonTargetResponseCriteria extends BaseCriteria {
|
||||
export class NonTargetResponseCriterion extends BaseCriterion {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
check(data) {
|
||||
evaluate(data) {
|
||||
const items = data.nonTargets;
|
||||
const measurements = [];
|
||||
let message;
|
||||
@ -26,7 +26,7 @@ export class NonTargetResponseCriteria extends BaseCriteria {
|
||||
message = 'Non-targets can only be assessed as "present"';
|
||||
}
|
||||
|
||||
return this.respond(message, measurements);
|
||||
return this.generateResponse(message, measurements);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,12 +1,12 @@
|
||||
import { BaseCriteria } from './BaseCriteria';
|
||||
import { BaseCriterion } from './BaseCriterion';
|
||||
|
||||
export class TargetTypeCriteria extends BaseCriteria {
|
||||
export class TargetTypeCriterion extends BaseCriterion {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
check(data) {
|
||||
evaluate(data) {
|
||||
const items = data.targets;
|
||||
const measurements = [];
|
||||
let message;
|
||||
@ -26,7 +26,7 @@ export class TargetTypeCriteria extends BaseCriteria {
|
||||
message = 'Target lesions must have measurements (cannot be assessed as CR, UN/NE, EX)';
|
||||
}
|
||||
|
||||
return this.respond(message, measurements);
|
||||
return this.generateResponse(message, measurements);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
export class BaseCriteria {
|
||||
|
||||
constructor() {}
|
||||
|
||||
respond(response, measurements) {
|
||||
const passed = !response;
|
||||
return {
|
||||
passed,
|
||||
message: response,
|
||||
measurements
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user