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) {