From b776e5f41130cea89d5da200813a2996af44a4e0 Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Fri, 30 Dec 2016 11:01:42 -0200 Subject: [PATCH] LT-115: Removing the old code for calculating Measurement Numbers --- .../client/compatibility/bidirectionalTool.js | 22 +--------- .../compatibility/qualitativeTargetTools.js | 23 +--------- .../measurementLocationDialog.js | 32 -------------- .../both/configuration/measurements.js | 14 +++---- .../client/lib/MeasurementHandlers.js | 42 +++---------------- .../client/lib/MeasurementManager.js | 27 +----------- 6 files changed, 18 insertions(+), 142 deletions(-) diff --git a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js index 53e0c6429..715a4f40e 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js +++ b/Packages/ohif-lesiontracker/client/compatibility/bidirectionalTool.js @@ -10,7 +10,6 @@ import { OHIF } from 'meteor/ohif:core'; const shadowConfig = toolManager.getToolDefaultStates().shadowConfig; var configuration = { - setMeasurementNumberCallback: setMeasurementNumberCallback, getMeasurementLocationCallback: getMeasurementLocationCallback, changeMeasurementLocationCallback: changeMeasurementLocationCallback, ...shadowConfig @@ -24,13 +23,6 @@ import { OHIF } from 'meteor/ohif:core'; // The distance between the mouse and the tool to make it active var distanceThreshold = 7; - // Set lesion number - // Get Target lesions on image - function setMeasurementNumberCallback(measurementData, eventData, doneCallback) { - var measurementNumber = 1; - doneCallback(measurementNumber); - } - // Define a callback to get your text annotation // This could be used, e.g. to open a modal function getMeasurementLocationCallback(measurementData, eventData, doneCallback) { @@ -111,8 +103,7 @@ import { OHIF } from 'meteor/ohif:core'; return; } - function doneCallback(measurementNumber) { - measurementData.measurementNumber = measurementNumber; + function doneCallback() { measurementData.active = false; cornerstone.updateImage(element); } @@ -124,11 +115,7 @@ import { OHIF } from 'meteor/ohif:core'; mouseButtonMask: mouseEventData.which }; - // Set lesion number and lesion name var config = cornerstoneTools.bidirectional.getConfiguration(); - if (measurementData.measurementNumber === undefined) { - config.setMeasurementNumberCallback(measurementData, mouseEventData, doneCallback); - } // associate this data with this imageId so we can render it and manipulate it cornerstoneTools.addToolState(element, toolType, measurementData); @@ -190,19 +177,14 @@ import { OHIF } from 'meteor/ohif:core'; return; } - function doneCallback(measurementNumber) { - measurementData.measurementNumber = measurementNumber; + function doneCallback() { measurementData.active = false; cornerstone.updateImage(element); } var measurementData = createNewMeasurement(touchEventData); - // Set lesion number and lesion name var config = cornerstoneTools.bidirectional.getConfiguration(); - if (measurementData.measurementNumber === undefined) { - config.setMeasurementNumberCallback(measurementData, mouseEventData, doneCallback); - } // associate this data with this imageId so we can render it and manipulate it cornerstoneTools.addToolState(element, toolType, measurementData); diff --git a/Packages/ohif-lesiontracker/client/compatibility/qualitativeTargetTools.js b/Packages/ohif-lesiontracker/client/compatibility/qualitativeTargetTools.js index 2c8b73911..f24c30607 100644 --- a/Packages/ohif-lesiontracker/client/compatibility/qualitativeTargetTools.js +++ b/Packages/ohif-lesiontracker/client/compatibility/qualitativeTargetTools.js @@ -13,7 +13,6 @@ }]; var configuration = { - setMeasurementNumberCallback: setMeasurementNumberCallback, getMeasurementLocationCallback: getMeasurementLocationCallback, changeMeasurementLocationCallback: changeMeasurementLocationCallback, drawHandles: false, @@ -26,12 +25,6 @@ ESC: 27 }; - // Set lesion number - // Get Non-Target lesions on image - function setMeasurementNumberCallback(measurementData, eventData, doneCallback) { - var measurementNumber = 1; - doneCallback(measurementNumber); - } // Define a callback to get your text annotation // This could be used, e.g. to open a modal function getMeasurementLocationCallback(measurementData, eventData, doneCallback) { @@ -61,8 +54,7 @@ function addNewMeasurement(mouseEventData) { var element = mouseEventData.element; - function doneCallback(measurementNumber) { - measurementData.measurementNumber = measurementNumber; + function doneCallback() { measurementData.active = true; cornerstone.updateImage(element); } @@ -75,11 +67,6 @@ var config = cornerstoneTools[toolType].getConfiguration(); - // Set lesion number and lesion name - if (measurementData.measurementNumber === undefined) { - config.setMeasurementNumberCallback(measurementData, mouseEventData, doneCallback); - } - // associate this data with this imageId so we can render it and manipulate it cornerstoneTools.addToolState(mouseEventData.element, toolType, measurementData); @@ -317,8 +304,7 @@ function addNewMeasurementTouch(touchEventData) { var element = touchEventData.element; - function doneCallback(measurementNumber) { - measurementData.measurementNumber = measurementNumber; + function doneCallback() { measurementData.active = true; cornerstone.updateImage(element); } @@ -330,11 +316,6 @@ $(element).off('CornerstoneToolsTap', cornerstoneTools[toolType + "Touch"].tapCallback); var config = cornerstoneTools[toolType].getConfiguration(); - // Set lesion number and lesion name - if (measurementData.lesionName === undefined) { - config.setMeasurementNumberCallback(measurementData, touchEventData, doneCallback); - } - cornerstone.updateImage(element); cornerstoneTools.moveNewHandleTouch(touchEventData, toolType, measurementData, measurementData.handles.end, function() { diff --git a/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js b/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js index 7c414216a..50213abb3 100644 --- a/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js +++ b/Packages/ohif-lesiontracker/client/components/measurementLocationDialog/measurementLocationDialog.js @@ -2,37 +2,6 @@ // is in the process of being moved into another location import { OHIF } from 'meteor/ohif:core'; -// This event sets measurement number for new measurement -function getSetMeasurementNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi) { - return (measurementData, eventData, doneCallback) => { - // Get the current element's timepointId from the study date metadata - var element = eventData.element; - var enabledElement = cornerstone.getEnabledElement(element); - var imageId = enabledElement.image.imageId; - - var study = cornerstoneTools.metaData.get('study', imageId); - if (!timepointApi) { - return; - } - - // Find the relevant timepoint given the current study - var timepoint = timepointApi.study(study.studyInstanceUid)[0]; - if (!timepoint) { - return; - } - - // Get a measurement number for this measurement, depending on whether or not the same measurement previously - // exists at a different timepoint - const timepointId = timepoint.timepointId; - const collection = measurementApi.tools[measurementTypeId]; - const measurementNumber = OHIF.measurements.MeasurementManager.getNewMeasurementNumber(timepointId, collection, timepointApi); - measurementData.measurementNumber = measurementNumber; - - // Set measurement number - doneCallback(measurementNumber); - }; -} - Template.measurementLocationDialog.onCreated(() => { const instance = Template.instance(); const measurementTypeId = 'bidirectional'; @@ -67,7 +36,6 @@ Template.measurementLocationDialog.onCreated(() => { }; const callbackConfig = { - setMeasurementNumberCallback: getSetMeasurementNumberCallbackFunction(measurementTypeId, measurementApi, timepointApi), // TODO: Check the position for these, the Add Label button position seems very awkward getMeasurementLocationCallback: toggleLabel, changeMeasurementLocationCallback: toggleLabel, diff --git a/Packages/ohif-measurements/both/configuration/measurements.js b/Packages/ohif-measurements/both/configuration/measurements.js index 0ec390b86..0e70e9eb9 100644 --- a/Packages/ohif-measurements/both/configuration/measurements.js +++ b/Packages/ohif-measurements/both/configuration/measurements.js @@ -36,26 +36,26 @@ class MeasurementApi { collection.find().observe({ added: measurement => { + const timepoint = this.timepointApi.timepoints.findOne({ + studyInstanceUids: measurement.studyInstanceUid + }); groupCollection.insert({ toolId: tool.id, toolItemId: measurement._id, - timepointId: measurement.timepointId, + timepointId: timepoint.timepointId, studyInstanceUid: measurement.studyInstanceUid, createdAt: measurement.createdAt }); - const timepoint = this.timepointApi.timepoints.findOne({ - timepointId: measurement.timepointId - }); - const measurementCount = groupCollection.find({ + const measurementNumber = groupCollection.find({ studyInstanceUid: { $in: timepoint.studyInstanceUids } }).count(); - + measurement.measurementNumber = measurementNumber; collection.update(measurement._id, { $set: { - measurementNumber: measurementCount + measurementNumber } }); }, diff --git a/Packages/ohif-measurements/client/lib/MeasurementHandlers.js b/Packages/ohif-measurements/client/lib/MeasurementHandlers.js index e0b8e37d3..392af2319 100644 --- a/Packages/ohif-measurements/client/lib/MeasurementHandlers.js +++ b/Packages/ohif-measurements/client/lib/MeasurementHandlers.js @@ -44,21 +44,6 @@ class MeasurementHandlers { imageId: imageId // TODO: In the future we should consider removing this }, measurementData); - const timepointApi = instance.data.timepointApi; - if (timepointApi) { - const timepoint = timepointApi.study(studyInstanceUid)[0]; - if (timepoint) { - const timepointId = timepoint.timepointId; - measurement.timepointId = timepointId; - measurement.measurementNumber = OHIF.measurements.MeasurementManager.getNewMeasurementNumber(timepointId, Collection, timepointApi); - } - } else { - const numCurrentMeasurementsInStudy = Collection.find({ - studyInstanceUid: study.studyInstanceUid - }).count(); - measurement.measurementNumber = numCurrentMeasurementsInStudy + 1; - } - // Get the related timepoint by the measurement number and use its location if defined const relatedTimepoint = Collection.findOne({ measurementNumber: measurement.measurementNumber, @@ -77,18 +62,14 @@ class MeasurementHandlers { // Insert the new measurement into the collection measurementData._id = Collection.insert(measurement); + // Get the update the measurement number after inserting + Meteor.defer(() => { + measurementData.measurementNumber = Collection.findOne(measurementData._id).measurementNumber; + cornerstone.updateImage(getActiveViewportElement()); + }); + // Signal unsaved changes OHIF.ui.unsavedChanges.set('viewer.studyViewer.measurements.' + eventData.toolType); - - // Update the Overall Measurement Numbers for all Measurements - if (timepointApi) { - const baseline = timepointApi.baseline(); - - // TODO: Fix this it is a terrible workaround but we have a demo to do - if (baseline) { - measurementApi.sortMeasurements(baseline.timepointId); - } - } } static onModified(e, instance, eventData) { @@ -136,17 +117,6 @@ class MeasurementHandlers { // Signal unsaved changes OHIF.ui.unsavedChanges.set('viewer.studyViewer.measurements.' + eventData.toolType); - - // Update the Overall Measurement Numbers for all Measurements - const timepointApi = instance.data.timepointApi; - if (timepointApi) { - const baseline = timepointApi.baseline(); - - // TODO: Fix this it is a terrible workaround but we have a demo to do - if (baseline) { - measurementApi.sortMeasurements(baseline.timepointId); - } - } } } diff --git a/Packages/ohif-measurements/client/lib/MeasurementManager.js b/Packages/ohif-measurements/client/lib/MeasurementManager.js index 79d7bb048..738b95b92 100644 --- a/Packages/ohif-measurements/client/lib/MeasurementManager.js +++ b/Packages/ohif-measurements/client/lib/MeasurementManager.js @@ -2,31 +2,6 @@ import { OHIF } from 'meteor/ohif:core'; class MeasurementManager { - /** - * Returns new measurement number given a timepointId - */ - static getNewMeasurementNumber(timepointId, collection, timepointApi) { - // Get all current lesion measurements - const numMeasurements = collection.find().count(); - - // If no measurements exist yet, start at 1 - if (!numMeasurements) { - return 1; - } - - const timepoint = timepointApi.timepoints.findOne({ - timepointId: timepointId - }); - - const numMeasurementsAtTimepoint = collection.find({ - studyInstanceUid: { - $in: timepoint.studyInstanceUids - } - }).count(); - - return numMeasurementsAtTimepoint + 1; - } - /** * If the current Measurements Number already exists * for any other timepoint, returns lesion locationUID @@ -47,4 +22,4 @@ class MeasurementManager { } -OHIF.measurements.MeasurementManager = MeasurementManager; \ No newline at end of file +OHIF.measurements.MeasurementManager = MeasurementManager;