From 5f338c6711c724b9eca241d8c16b12f6bead6e11 Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Wed, 18 Jan 2017 10:59:09 -0200 Subject: [PATCH] LT-92: Adding max targets label again --- .../measurementTableHeaderRow.html | 2 +- .../measurementTableHeaderRow.js | 57 +++---------------- .../client/conformance/ConformanceCriteria.js | 7 +++ .../client/conformance/CriteriaEvaluator.js | 17 +++++- 4 files changed, 30 insertions(+), 53 deletions(-) diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.html b/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.html index 6b0092625..9cdc53d7e 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.html +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.html @@ -9,7 +9,7 @@ {{/if}}
{{measurementType.name}}
- {{#if maxNumMeasurements}} + {{#if and maxNumMeasurements (eq measurementType.id 'targets')}}

Max {{maxNumMeasurements}}

{{/if}}
diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js index f16d082ea..deaff5c2c 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableHeaderRow/measurementTableHeaderRow.js @@ -1,48 +1,5 @@ -Template.measurementTableHeaderRow.onCreated(() => { - const instance = Template.instance(); - instance.maxNumMeasurements = new ReactiveVar(); - - if (!instance.data.timepointApi) { - return; - } - - // Get the current timepoint - const current = instance.data.timepointApi.current(); - - // Stop here if no timepoint was found - if (!current) { - console.warn('No current timepoint found?'); - return; - } - - const timepointType = current.timepointType; - - // TODO: Check if we have criteria where maximum limits are applied to - // Non-Targets and/or New Lesions - if (timepointType === 'baseline' && instance.data.id === 'target') { - instance.autorun(() => { - // Identify which Trial Conformance Criteria are currently being used - // Note that there may be more than one. - const criteriaTypes = TrialCriteriaTypes.find({ - selected: true - }).map(function(criteria) { - return criteria.id; - }); - - const currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes); - if (!currentConstraints) { - return; - } - - // TODO: Fix Trial Conformance Criteria, it appears that totalNumberOfLesions - // is applied to both Targets and Non-Targets, when it should typically only be - // for Targets - const criteria = currentConstraints[timepointType]; - const maxNumMeasurements = criteria.group.totalNumberOfLesions.numericality.lessThanOrEqualTo; - instance.maxNumMeasurements.set(maxNumMeasurements); - }); - } -}); +import { Template } from 'meteor/templating'; +import { OHIF } from 'meteor/ohif:core'; Template.measurementTableHeaderRow.helpers({ numberOfMeasurements() { @@ -50,15 +7,17 @@ Template.measurementTableHeaderRow.helpers({ if (!instance.data.measurements) { return; } + return instance.data.measurements.length; }, maxNumMeasurements() { const instance = Template.instance(); - if (!instance.data.measurements) { + if (!instance.data.conformanceCriteria) { return; } - return instance.maxNumMeasurements.get(); + + return instance.data.conformanceCriteria.maxTargets.get(); }, anyUnmarkedLesionsLeft() { @@ -75,8 +34,8 @@ Template.measurementTableHeaderRow.helpers({ } const timepointApi = instance.data.timepointApi; - const current = instance.data.timepointApi.current(); - const prior = instance.data.timepointApi.prior(); + const current = timepointApi.current(); + const prior = timepointApi.prior(); if (!prior) { return true; } diff --git a/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js b/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js index 2dc232231..93c7c918e 100644 --- a/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js +++ b/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js @@ -12,6 +12,7 @@ class ConformanceCriteria { this.timepointApi = timepointApi; this.nonconformities = new ReactiveVar(); this.groupedNonConformities = new ReactiveVar(); + this.maxTargets = new ReactiveVar(null); const validate = _.debounce(trialCriteriaType => { this.validate(trialCriteriaType); @@ -32,6 +33,7 @@ class ConformanceCriteria { mergedData.targets = mergedData.targets.concat(followupData.targets); mergedData.nonTargets = mergedData.nonTargets.concat(followupData.nonTargets); + this.maxTargets.set(null); const resultBoth = this.validateTimepoint('both', trialCriteriaType, mergedData); const resultBaseline = this.validateTimepoint('baseline', trialCriteriaType, baselineData); const resultFollowup = this.validateTimepoint('followup', trialCriteriaType, followupData); @@ -86,6 +88,11 @@ class ConformanceCriteria { let nonconformities = []; evaluators.forEach(evaluator => { + const maxTargets = evaluator.getMaxTargets(); + if (maxTargets) { + this.maxTargets.set(maxTargets); + } + const result = evaluator.evaluate(data); nonconformities = nonconformities.concat(result); }); diff --git a/Packages/ohif-measurements/client/conformance/CriteriaEvaluator.js b/Packages/ohif-measurements/client/conformance/CriteriaEvaluator.js index 58ddebf40..24280d6a6 100644 --- a/Packages/ohif-measurements/client/conformance/CriteriaEvaluator.js +++ b/Packages/ohif-measurements/client/conformance/CriteriaEvaluator.js @@ -24,8 +24,18 @@ export class CriteriaEvaluator { }); } + getMaxTargets() { + let result; + _.each(this.criteria, criterion => { + if (criterion instanceof Criteria.MaxTargetsCriterion) { + result = criterion.options.limit; + } + }); + return result; + } + getCriteriaValidator() { - if(CriteriaEvaluator.criteriaValidator) { + if (CriteriaEvaluator.criteriaValidator) { return CriteriaEvaluator.criteriaValidator; } @@ -53,8 +63,9 @@ export class CriteriaEvaluator { }; } }); - - return CriteriaEvaluator.criteriaValidator = new Ajv().compile(schema); + + CriteriaEvaluator.criteriaValidator = new Ajv().compile(schema); + return CriteriaEvaluator.criteriaValidator; } evaluate(data) {