diff --git a/Packages/ohif-measurements/client/components/measurementTable/measurementTableRow/measurementTableRow.js b/Packages/ohif-measurements/client/components/measurementTable/measurementTableRow/measurementTableRow.js index 1e5691193..f5d9d7cca 100644 --- a/Packages/ohif-measurements/client/components/measurementTable/measurementTableRow/measurementTableRow.js +++ b/Packages/ohif-measurements/client/components/measurementTable/measurementTableRow/measurementTableRow.js @@ -13,7 +13,7 @@ Template.measurementTableRow.onCreated(() => { const nonconformitiesByMeasurementNumbers = nonconformitiesByMeasurementTypeId.measurementNumbers || {}; const nonconformitiesByMeasurementNumber = nonconformitiesByMeasurementNumbers[measurementNumber] || {}; - return nonconformitiesByMeasurementNumber.messages || []; + return _.uniq(nonconformitiesByMeasurementNumber.messages || []); }; }); diff --git a/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js b/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js index d7680ab51..a9a56c0ba 100644 --- a/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js +++ b/Packages/ohif-measurements/client/conformance/ConformanceCriteria.js @@ -17,7 +17,7 @@ class ConformanceCriteria { this.maxTargets = new ReactiveVar(null); const validate = _.debounce(trialCriteriaType => { - if (Session.get('MeasurementsReady')) return; + if (!Session.get('MeasurementsReady')) return; this.validate(trialCriteriaType); }, 300); @@ -31,9 +31,14 @@ class ConformanceCriteria { validate(trialCriteriaType) { const baselineData = this.getData('baseline'); const followupData = this.getData('followup'); - const mergedData = baselineData; + const mergedData = { + targets: [], + nonTargets: [] + }; + mergedData.targets = mergedData.targets.concat(baselineData.targets); mergedData.targets = mergedData.targets.concat(followupData.targets); + mergedData.nonTargets = mergedData.nonTargets.concat(baselineData.nonTargets); mergedData.nonTargets = mergedData.nonTargets.concat(followupData.nonTargets); this.maxTargets.set(null); @@ -135,9 +140,9 @@ class ConformanceCriteria { const { studyInstanceUid, imageId } = measurement; const metadata = this.getImageInstanceMetadata(studyInstanceUid, imageId); const timepointId = measurement.timepointId; - const timepoint = this.timepointApi.timepoints.findOne({ timepointId }); + const timepoint = timepointId && this.timepointApi.timepoints.findOne({ timepointId }); - if ((timepointType !== 'both') && (timepoint.timepointType !== timepointType)) { + if (!timepoint || ((timepointType !== 'both') && (timepoint.timepointType !== timepointType))) { return; } diff --git a/Packages/ohif-measurements/client/conformance/evaluations/recist.json b/Packages/ohif-measurements/client/conformance/evaluations/recist.json index feb9d9715..2dd5b988f 100644 --- a/Packages/ohif-measurements/client/conformance/evaluations/recist.json +++ b/Packages/ohif-measurements/client/conformance/evaluations/recist.json @@ -1,6 +1,9 @@ { "both": { - "Location": {}, + "Location": {} + }, + "baseline": { + "TargetType": {}, "MaxTargetsPerOrgan": { "limit": 2 }, @@ -27,8 +30,5 @@ "message": "Nodal lesions must be >= 15mm short axis AND >= double the acquisition slice thickness by CT and MR" }] }, - "baseline": { - "TargetType": {} - }, "followup": {} }