From 6e2dfacd3af5d100af11e19e2e45037a7d3a92ee Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Wed, 21 Jun 2017 08:32:56 -0300 Subject: [PATCH] Improving response criteria mechanism --- .../client/conformance/ConformanceCriteria.js | 7 ++-- .../client/conformance/CriteriaEvaluator.js | 4 ++ .../client/conformance/criteria/MaxTargets.js | 38 ++++++++++++++++--- .../criteria/MaxTargetsPerOrgan.js | 2 +- .../client/conformance/criteria/Modality.js | 2 +- .../client/conformance/evaluations/index.js | 2 +- 6 files changed, 43 insertions(+), 12 deletions(-) diff --git a/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js b/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js index 56df8a267..902bd1206 100644 --- a/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js +++ b/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js @@ -156,9 +156,6 @@ class ConformanceCriteria { const promise = OHIF.studylist.retrieveStudyMetadata(studyInstanceUid); promise.then(study => { - cornerstone.loadImage(imageId).then(image => { - console.warn('>>>>LOADED', image); - }); const metadata = OHIF.viewer.metadataProvider.getMetadata(imageId); data[measurementType].push({ measurement, @@ -179,6 +176,10 @@ class ConformanceCriteria { }); } + static setEvaluationDefinitions(evaluationKey, evaluationDefinitions) { + evaluations[evaluationKey] = evaluationDefinitions; + } + } OHIF.measurements.ConformanceCriteria = ConformanceCriteria; diff --git a/Packages/ohif-measurements/client/conformance/CriteriaEvaluator.js b/Packages/ohif-measurements/client/conformance/CriteriaEvaluator.js index 24280d6a6..eff47f41f 100644 --- a/Packages/ohif-measurements/client/conformance/CriteriaEvaluator.js +++ b/Packages/ohif-measurements/client/conformance/CriteriaEvaluator.js @@ -79,4 +79,8 @@ export class CriteriaEvaluator { return nonconformities; } + static setCriterion(criterionKey, criterionDefinitions) { + Criteria[criterionKey] = criterionDefinitions; + } + } diff --git a/Packages/ohif-measurements/client/conformance/criteria/MaxTargets.js b/Packages/ohif-measurements/client/conformance/criteria/MaxTargets.js index 1e26e5a79..57738d400 100644 --- a/Packages/ohif-measurements/client/conformance/criteria/MaxTargets.js +++ b/Packages/ohif-measurements/client/conformance/criteria/MaxTargets.js @@ -10,13 +10,34 @@ export const MaxTargetsSchema = { minimum: 1 } }, + locationIn: { + label: 'Filter to evaluate only measurements with the specified locations', + type: 'array', + items: { + type: 'string' + }, + minItems: 1, + uniqueItems: true + }, + locationNotIn: { + label: 'Filter to evaluate only measurements without the specified locations', + type: 'array', + items: { + type: 'string' + }, + minItems: 1, + uniqueItems: true + }, required: ['limit'] }; /* MaxTargetsCriterion * Check if the number of target measurements exceeded the limit allowed - * Options + * Options: * limit: Max targets allowed in study + * locationIn: Filter to evaluate only measurements with the specified locations + * locationNotIn: Filter to evaluate only measurements without the specified locations + * message: Message to be displayed in case of nonconformity */ export class MaxTargetsCriterion extends BaseCriterion { @@ -25,12 +46,17 @@ export class MaxTargetsCriterion extends BaseCriterion { } evaluate(data) { - const measurementNumbers = _.uniq(_.map(data.targets, target => { - return target.measurement.measurementNumber; - })); + const { options } = this; + const measurementNumbers = []; + _.each(data.targets, target => { + const { location } = target.measurement; + if (options.locationIn && options.locationIn.indexOf(location) === -1) return; + if (options.locationNotIn && options.locationNotIn.indexOf(location) > -1) return; + measurementNumbers.push(target.measurement.measurementNumber); + }); - let message; - if (measurementNumbers.length > this.options.limit) { + let message = options.message; + if (!message && measurementNumbers.length > this.options.limit) { message = `The study should not have more than ${this.options.limit} targets.`; } diff --git a/Packages/ohif-measurements/client/conformance/criteria/MaxTargetsPerOrgan.js b/Packages/ohif-measurements/client/conformance/criteria/MaxTargetsPerOrgan.js index 311acdfac..73646d265 100644 --- a/Packages/ohif-measurements/client/conformance/criteria/MaxTargetsPerOrgan.js +++ b/Packages/ohif-measurements/client/conformance/criteria/MaxTargetsPerOrgan.js @@ -15,7 +15,7 @@ export const MaxTargetsPerOrganSchema = { /* * MaxTargetsPerOrganCriterion * Check if the number of target measurements per organ exceeded the limit allowed - * Options + * Options: * limit: Max targets allowed in study */ export class MaxTargetsPerOrganCriterion extends BaseCriterion { diff --git a/Packages/ohif-measurements/client/conformance/criteria/Modality.js b/Packages/ohif-measurements/client/conformance/criteria/Modality.js index c605072e4..9761d072d 100644 --- a/Packages/ohif-measurements/client/conformance/criteria/Modality.js +++ b/Packages/ohif-measurements/client/conformance/criteria/Modality.js @@ -80,4 +80,4 @@ export class ModalityCriterion extends BaseCriterion { return this.generateResponse(message, measurements); } -}; +} diff --git a/Packages/ohif-measurements/client/conformance/evaluations/index.js b/Packages/ohif-measurements/client/conformance/evaluations/index.js index e138e28e0..502ef29dd 100644 --- a/Packages/ohif-measurements/client/conformance/evaluations/index.js +++ b/Packages/ohif-measurements/client/conformance/evaluations/index.js @@ -1,3 +1,3 @@ import * as recistEvaluation from './recist.json'; -export const recist = recistEvaluation; \ No newline at end of file +export const recist = recistEvaluation;