diff --git a/Packages/ohif-measurements/client/conformance/checkers/RecistChecker.js b/Packages/ohif-measurements/client/conformance/checkers/RecistChecker.js index 95ed5903c..f4c0074ad 100644 --- a/Packages/ohif-measurements/client/conformance/checkers/RecistChecker.js +++ b/Packages/ohif-measurements/client/conformance/checkers/RecistChecker.js @@ -4,6 +4,7 @@ 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'; export class RecistChecker extends BaseChecker { @@ -15,6 +16,7 @@ export class RecistChecker extends BaseChecker { this.criterias.push(new MeasurementsLengthCriteria({})); this.criterias.push(new ModalityCriteria(this.getModalityCriteriaOptions())); this.criterias.push(new NonTargetResponseCriteria()); + this.criterias.push(new TargetTypeCriteria()); } check(data) { diff --git a/Packages/ohif-measurements/client/conformance/criterias/TargetTypeCriteria.js b/Packages/ohif-measurements/client/conformance/criterias/TargetTypeCriteria.js new file mode 100644 index 000000000..63c9457a4 --- /dev/null +++ b/Packages/ohif-measurements/client/conformance/criterias/TargetTypeCriteria.js @@ -0,0 +1,32 @@ +import { BaseCriteria } from './BaseCriteria'; + +export class TargetTypeCriteria extends BaseCriteria { + + constructor() { + super(); + } + + check(data) { + const items = data.targets; + const measurements = []; + let message; + + items.forEach(item => { + const measurement = item.measurement; + const toolType = measurement.toolType.toLowerCase(); + const timepoint = item.timepoint; + const timepointType = timepoint.timepointType.toLowerCase(); + + if ((timepointType === 'baseline') && (toolType !== 'bidirectional')) { + measurements.push(measurement); + } + }); + + if (measurements.length) { + message = 'Target lesions must have measurements (cannot be assessed as CR, UN/NE, EX)'; + } + + return this.respond(message, measurements); + } + +}