From 5605133517e4dc4bfadd7fe7eabcfb718319c7cd Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Thu, 12 Jan 2017 12:02:31 -0200 Subject: [PATCH] LT-92: Adding validation to RecistApi --- .../client/components/viewer/viewer.js | 3 +- .../both/configuration/index.js | 1 - .../both/configuration/measurements.js | 17 ++++- .../both/configuration/recist.js | 22 ------- .../ohif-measurements/client/api/index.js | 1 + .../ohif-measurements/client/api/recist.js | 64 +++++++++++++++++++ Packages/ohif-measurements/client/index.js | 1 + 7 files changed, 84 insertions(+), 25 deletions(-) delete mode 100644 Packages/ohif-measurements/both/configuration/recist.js create mode 100644 Packages/ohif-measurements/client/api/index.js create mode 100644 Packages/ohif-measurements/client/api/recist.js diff --git a/LesionTracker/client/components/viewer/viewer.js b/LesionTracker/client/components/viewer/viewer.js index 427229b85..333ed618d 100644 --- a/LesionTracker/client/components/viewer/viewer.js +++ b/LesionTracker/client/components/viewer/viewer.js @@ -101,8 +101,9 @@ Template.viewer.onCreated(() => { const timepointIds = timepoints.map(t => t.timepointId); instance.data.measurementApi = new OHIF.measurements.MeasurementApi(instance.data.timepointApi); - console.warn('>>>>REMOVE THE LINE BELOW'); + console.warn('>>>>REMOVE THE LINES BELOW'); window.measurementApi = instance.data.measurementApi; + window.recistApi = new OHIF.measurements.RecistApi(window.measurementApi); const measurementsPromise = instance.data.measurementApi.retrieveMeasurements(patientId, timepointIds); measurementsPromise.then(() => { Session.set('MeasurementsReady', true); diff --git a/Packages/ohif-measurements/both/configuration/index.js b/Packages/ohif-measurements/both/configuration/index.js index 7a35f4d70..9f5d9c258 100644 --- a/Packages/ohif-measurements/both/configuration/index.js +++ b/Packages/ohif-measurements/both/configuration/index.js @@ -1,3 +1,2 @@ import './measurements.js'; -import './recist.js'; import './timepoints.js'; diff --git a/Packages/ohif-measurements/both/configuration/measurements.js b/Packages/ohif-measurements/both/configuration/measurements.js index c5a0b9de5..42fc1ba94 100644 --- a/Packages/ohif-measurements/both/configuration/measurements.js +++ b/Packages/ohif-measurements/both/configuration/measurements.js @@ -326,6 +326,21 @@ class MeasurementApi { }); } + getMeasurementById(measurementId) { + let foundGroup; + _.find(this.toolGroups, toolGroup => { + foundGroup = toolGroup.findOne({ toolItemId: measurementId }); + return !!foundGroup; + }); + + // Stop here if no group was found or if the record is a placeholder + if (!foundGroup || !foundGroup.toolId) { + return; + } + + return this.tools[foundGroup.toolId].findOne(measurementId); + } + fetch(toolGroupId, selector, options) { if (!this.toolGroups[toolGroupId]) { throw 'MeasurementApi: No Collection with the id: ' + toolGroupId; @@ -336,7 +351,7 @@ class MeasurementApi { const result = []; const items = this.toolGroups[toolGroupId].find(selector, options).fetch(); items.forEach(item => { - if(item.toolId) { + if (item.toolId) { result.push(this.tools[item.toolId].findOne(item.toolItemId)); } else { result.push({ measurementNumber: item.measurementNumber }); diff --git a/Packages/ohif-measurements/both/configuration/recist.js b/Packages/ohif-measurements/both/configuration/recist.js deleted file mode 100644 index ecad6e255..000000000 --- a/Packages/ohif-measurements/both/configuration/recist.js +++ /dev/null @@ -1,22 +0,0 @@ -import { OHIF } from 'meteor/ohif:core'; - -class RecistApi { - - constructor(measurementApi) { - if (measurementApi) { - this.measurementApi = measurementApi; - } - this.warnings = {}; - } - - validate() { - - } - - getModalities() { - - } - -} - -OHIF.measurements.RecistApi = RecistApi; diff --git a/Packages/ohif-measurements/client/api/index.js b/Packages/ohif-measurements/client/api/index.js new file mode 100644 index 000000000..34d396b2b --- /dev/null +++ b/Packages/ohif-measurements/client/api/index.js @@ -0,0 +1 @@ +import './recist'; diff --git a/Packages/ohif-measurements/client/api/recist.js b/Packages/ohif-measurements/client/api/recist.js new file mode 100644 index 000000000..cc86b8de8 --- /dev/null +++ b/Packages/ohif-measurements/client/api/recist.js @@ -0,0 +1,64 @@ +import { OHIF } from 'meteor/ohif:core'; +import { _ } from 'meteor/underscore'; + +class RecistApi { + + constructor(measurementApi) { + if (measurementApi) { + this.measurementApi = measurementApi; + } + + this.warnings = {}; + } + + validate() { + const measurements = this.getMeasurements(); + + measurements.targets.forEach(measurement => { + const image = this.getImageById(measurement.studyInstanceUid, measurement.imageId); + console.warn('>>>>modality', image, image.modality); + }); + } + + getMeasurements() { + const targets = this.measurementApi.fetch('targets'); + const nonTargets = this.measurementApi.fetch('nonTargets'); + return { + targets, + nonTargets + }; + } + + getModalities() { + + } + + getImageById(studyInstanceUid, imageId) { + const study = ViewerStudies.findOne({ studyInstanceUid }); + + // Stop here if the study was not found + if (!study) { + return; + } + + let foundImage; + _.each(study.displaySets, displaySet => { + if (foundImage) { + return; + } + + _.each(displaySet.images, image => { + if (foundImage) { + return; + } else if (getImageId(image) === imageId) { + foundImage = image; + } + }); + }); + + return foundImage; + } + +} + +OHIF.measurements.RecistApi = RecistApi; diff --git a/Packages/ohif-measurements/client/index.js b/Packages/ohif-measurements/client/index.js index 70c85d5fd..ef45b52ad 100644 --- a/Packages/ohif-measurements/client/index.js +++ b/Packages/ohif-measurements/client/index.js @@ -1,3 +1,4 @@ +import './api'; import './lib'; import './helpers'; import './components';