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 {
|
export class BaseChecker {
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.criterias = [];
|
this.criteria = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
check(data) {
|
check(data) {
|
||||||
const nonconformity = [];
|
const nonconformity = [];
|
||||||
this.criterias.forEach(criteria => {
|
this.criteria.forEach(criterion => {
|
||||||
const criteriaResult = criteria.check(data);
|
const criterionResult = criterion.evaluate(data);
|
||||||
if (!criteriaResult.passed) {
|
if (!criterionResult.passed) {
|
||||||
nonconformity.push(criteriaResult);
|
nonconformity.push(criterionResult);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return nonconformity;
|
return nonconformity;
|
||||||
|
|||||||
@ -1,36 +1,36 @@
|
|||||||
import { BaseChecker } from './BaseChecker';
|
import { BaseChecker } from './BaseChecker';
|
||||||
import { MaxTargetPerOrganCriteria } from '../criterias/MaxTargetPerOrganCriteria';
|
import { MaxTargetPerOrganCriterion } from '../criteria/MaxTargetPerOrgan';
|
||||||
import { MaxTargetsCriteria } from '../criterias/MaxTargetsCriteria';
|
import { MaxTargetsCriterion } from '../criteria/MaxTargets';
|
||||||
import { MeasurementsLengthCriteria } from '../criterias/MeasurementsLengthCriteria';
|
import { MeasurementsLengthCriterion } from '../criteria/MeasurementsLength';
|
||||||
import { ModalityCriteria } from '../criterias/ModalityCriteria';
|
import { ModalityCriterion } from '../criteria/Modality';
|
||||||
import { NonTargetResponseCriteria } from '../criterias/NonTargetResponseCriteria';
|
import { NonTargetResponseCriterion } from '../criteria/NonTargetResponse';
|
||||||
import { TargetTypeCriteria } from '../criterias/TargetTypeCriteria';
|
import { TargetTypeCriterion } from '../criteria/TargetType';
|
||||||
|
|
||||||
export class RecistChecker extends BaseChecker {
|
export class RecistChecker extends BaseChecker {
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
const addCriteria = criteria => this.criterias.push(criteria);
|
const addCriterion = criterion => this.criteria.push(criterion);
|
||||||
|
|
||||||
addCriteria(new MaxTargetsCriteria(5));
|
addCriterion(new MaxTargetsCriterion(5));
|
||||||
addCriteria(new MaxTargetPerOrganCriteria(2));
|
addCriterion(new MaxTargetPerOrganCriterion(2));
|
||||||
addCriteria(new ModalityCriteria(this.getModalityCriteriaOptions()));
|
addCriterion(new ModalityCriterion(this.getModalityOptions()));
|
||||||
addCriteria(new NonTargetResponseCriteria());
|
addCriterion(new NonTargetResponseCriterion());
|
||||||
addCriteria(new TargetTypeCriteria());
|
addCriterion(new TargetTypeCriterion());
|
||||||
addCriteria(new MeasurementsLengthCriteria(this.getExtranodalLengthCriteriaOptions()));
|
addCriterion(new MeasurementsLengthCriterion(this.getExtranodalLengthOptions()));
|
||||||
addCriteria(new MeasurementsLengthCriteria(this.getExtranodalXrayLengthCriteriaOptions()));
|
addCriterion(new MeasurementsLengthCriterion(this.getExtranodalXrayLengthOptions()));
|
||||||
addCriteria(new MeasurementsLengthCriteria(this.getNodalLengthCriteriaOptions()));
|
addCriterion(new MeasurementsLengthCriterion(this.getNodalLengthOptions()));
|
||||||
}
|
}
|
||||||
|
|
||||||
getModalityCriteriaOptions() {
|
getModalityOptions() {
|
||||||
return {
|
return {
|
||||||
method: 'restrict',
|
method: 'restrict',
|
||||||
modalities: ['US']
|
modalities: ['US']
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
getExtranodalLengthCriteriaOptions() {
|
getExtranodalLengthOptions() {
|
||||||
return {
|
return {
|
||||||
longAxis: 10,
|
longAxis: 10,
|
||||||
longAxisSliceThicknessMultiplier: 2,
|
longAxisSliceThicknessMultiplier: 2,
|
||||||
@ -41,7 +41,7 @@ export class RecistChecker extends BaseChecker {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
getExtranodalXrayLengthCriteriaOptions() {
|
getExtranodalXrayLengthOptions() {
|
||||||
return {
|
return {
|
||||||
shortAxis: 20,
|
shortAxis: 20,
|
||||||
longAxis: 20,
|
longAxis: 20,
|
||||||
@ -52,7 +52,7 @@ export class RecistChecker extends BaseChecker {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
getNodalLengthCriteriaOptions() {
|
getNodalLengthOptions() {
|
||||||
return {
|
return {
|
||||||
shortAxis: 15,
|
shortAxis: 15,
|
||||||
shortAxisSliceThicknessMultiplier: 2,
|
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) {
|
constructor(targetsLimit) {
|
||||||
super();
|
super();
|
||||||
this.targetsLimit = targetsLimit;
|
this.targetsLimit = targetsLimit;
|
||||||
}
|
}
|
||||||
|
|
||||||
check(data) {
|
evaluate(data) {
|
||||||
const targetsPerOrgan = {};
|
const targetsPerOrgan = {};
|
||||||
let message;
|
let message;
|
||||||
let measurements = [];
|
let measurements = [];
|
||||||
@ -29,7 +29,7 @@ export class MaxTargetPerOrganCriteria extends BaseCriteria {
|
|||||||
message = `Each organ should not have more than ${this.targetsLimit} targets.`;
|
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';
|
import { _ } from 'meteor/underscore';
|
||||||
|
|
||||||
export class MaxTargetsCriteria extends BaseCriteria {
|
export class MaxTargetsCriterion extends BaseCriterion {
|
||||||
|
|
||||||
constructor(targetsLimit) {
|
constructor(targetsLimit) {
|
||||||
super();
|
super();
|
||||||
this.targetsLimit = targetsLimit;
|
this.targetsLimit = targetsLimit;
|
||||||
}
|
}
|
||||||
|
|
||||||
check(data) {
|
evaluate(data) {
|
||||||
const measurementNumbers = _.uniq(_.map(data.targets, target => {
|
const measurementNumbers = _.uniq(_.map(data.targets, target => {
|
||||||
return target.measurement.measurementNumber;
|
return target.measurement.measurementNumber;
|
||||||
}));
|
}));
|
||||||
@ -18,7 +18,7 @@ export class MaxTargetsCriteria extends BaseCriteria {
|
|||||||
message = `The study should not have more than ${this.targetsLimit} targets.`;
|
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) {
|
constructor(options) {
|
||||||
super();
|
super();
|
||||||
this.options = options;
|
this.options = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
check(data) {
|
evaluate(data) {
|
||||||
let message;
|
let message;
|
||||||
let measurements = [];
|
let measurements = [];
|
||||||
const { options } = this;
|
const { options } = this;
|
||||||
@ -49,7 +49,7 @@ export class MeasurementsLengthCriteria extends BaseCriteria {
|
|||||||
message = options.message;
|
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';
|
import { _ } from 'meteor/underscore';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -8,14 +8,14 @@ import { _ } from 'meteor/underscore';
|
|||||||
* method (string): allow, restrict
|
* method (string): allow, restrict
|
||||||
* modalities (string[]): list of allowed/restricted modalities
|
* modalities (string[]): list of allowed/restricted modalities
|
||||||
*/
|
*/
|
||||||
export class ModalityCriteria extends BaseCriteria {
|
export class ModalityCriterion extends BaseCriterion {
|
||||||
|
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
super();
|
super();
|
||||||
this.options = options;
|
this.options = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
check(data) {
|
evaluate(data) {
|
||||||
const measurementTypes = this.options.measurementTypes || ['targets'];
|
const measurementTypes = this.options.measurementTypes || ['targets'];
|
||||||
const modalitiesSet = new Set(this.options.modalities);
|
const modalitiesSet = new Set(this.options.modalities);
|
||||||
const validationMethod = this.options.method;
|
const validationMethod = this.options.method;
|
||||||
@ -47,7 +47,7 @@ export class ModalityCriteria extends BaseCriteria {
|
|||||||
message = `The ${modalityText} ${uniqueModalitiesText} should not be used as a method of measurement`;
|
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() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
check(data) {
|
evaluate(data) {
|
||||||
const items = data.nonTargets;
|
const items = data.nonTargets;
|
||||||
const measurements = [];
|
const measurements = [];
|
||||||
let message;
|
let message;
|
||||||
@ -26,7 +26,7 @@ export class NonTargetResponseCriteria extends BaseCriteria {
|
|||||||
message = 'Non-targets can only be assessed as "present"';
|
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() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
check(data) {
|
evaluate(data) {
|
||||||
const items = data.targets;
|
const items = data.targets;
|
||||||
const measurements = [];
|
const measurements = [];
|
||||||
let message;
|
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)';
|
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