From b28e84076fa5c1ce4ce644f7243a38c27a4a07cf Mon Sep 17 00:00:00 2001 From: Evren Ozkan Date: Thu, 19 Nov 2015 23:44:07 -0500 Subject: [PATCH] Bringing series into viewport ( work-in-progress) --- .../compatibility/measurementManagerDAL.js | 14 ++++---- .../compatibility/nonTargetTool.js | 23 +++++++++++-- .../components/lesionTable/lesionTable.js | 33 ++++++++++++++++++- 3 files changed, 61 insertions(+), 9 deletions(-) diff --git a/Packages/lesiontracker/compatibility/measurementManagerDAL.js b/Packages/lesiontracker/compatibility/measurementManagerDAL.js index 2db7afa6c..0d898b4fa 100644 --- a/Packages/lesiontracker/compatibility/measurementManagerDAL.js +++ b/Packages/lesiontracker/compatibility/measurementManagerDAL.js @@ -10,9 +10,6 @@ var measurementManagerDAL = (function() { function addTimepointData(lesionData) { var timepoints = Timepoints.find().fetch(); - var study = cornerstoneTools.metaData.get('study', lesionData.imageId); - var series = cornerstoneTools.metaData.get('study', lesionData.imageId); - var timepointsObject = {}; for (var i = 0; i < timepoints.length; i++) { @@ -25,14 +22,17 @@ var measurementManagerDAL = (function() { timepointObject = { longestDiameter: lesionData.measurementText, imageId: lesionData.imageId, - studyInstanceUid: study.instanceUid, - seriesInstanceUid: series.instanceUid + seriesInstanceUid: lesionData.seriesInstanceUid, + studyInstanceUid: lesionData.studyInstanceUid + }; } else { // Add null measurement timepointObject = { longestDiameter: "", - imageId: "" + imageId: "", + seriesInstanceUid: "", + studyInstanceUid: "" }; } timepointsObject[timepointId] = timepointObject; @@ -71,6 +71,8 @@ var measurementManagerDAL = (function() { var timepoints = measurement.timepoints; timepoints[timepointID].longestDiameter = lesionData.measurementText; timepoints[timepointID].imageId = lesionData.imageId; + timepoints[timepointID].seriesInstanceUid = lesionData.seriesInstanceUid; + timepoints[timepointID].studyInstanceUid = lesionData.studyInstanceUid; Measurements.update(measurement._id, { $set: { diff --git a/Packages/lesiontracker/compatibility/nonTargetTool.js b/Packages/lesiontracker/compatibility/nonTargetTool.js index b609b6a22..e08ba25f8 100644 --- a/Packages/lesiontracker/compatibility/nonTargetTool.js +++ b/Packages/lesiontracker/compatibility/nonTargetTool.js @@ -83,6 +83,11 @@ } function createNewMeasurement(mouseEventData) { + + // Get seriesInstanceUId & studyInstanceUId + var seriesInstanceUid = cornerstoneTools.metaData.get('series', mouseEventData.image.imageId).instanceUid; + var studyInstanceUid = cornerstoneTools.metaData.get('study', mouseEventData.image.imageId).instanceUid; + // create the measurement data for this tool with the end handle activated var measurementData = { visible: true, @@ -110,6 +115,8 @@ } }, imageId: mouseEventData.image.imageId, + seriesInstanceUid: seriesInstanceUid, + studyInstanceUid: studyInstanceUid, measurementText: '', isTarget: false, uid: uuid.v4() @@ -372,6 +379,8 @@ var enabledElement = eventObject.enabledElement; var isTarget = eventObject.lesionData.isTarget; var lesionNumber = eventObject.lesionData.lesionNumber; + var seriesInstanceUid = eventObject.lesionData.seriesInstanceUid; + var studyInstanceUid = eventObject.lesionData.studyInstanceUid; var type = eventObject.type; // if we have no toolData for this element, return immediately as there is nothing to do @@ -388,7 +397,12 @@ var data = toolData.data[i]; //When click a row of table measurements, measurement will be active and color will be green - if (data.lesionNumber === eventObject.lesionNumber && eventObject.type !== "active" && !isTarget) { + if (data.lesionNumber === lesionNumber + && eventObject.type !== "active" + && !isTarget + && data.seriesInstanceUid === seriesInstanceUid + && data.studyInstanceUid === studyInstanceUid) { + data.visible = false; deletedDataIndex = i; } @@ -401,7 +415,12 @@ for (var i = 0; i < toolData.data.length; i++) { var data = toolData.data[i]; //When click a row of table measurements, measurement will be active and color will be green - if (data.lesionNumber === eventObject.lesionData.lesionNumber && eventObject.type === "active" && !isTarget) { + if (data.lesionNumber === eventObject.lesionData.lesionNumber + && eventObject.type === "active" + && !isTarget + && data.seriesInstanceUid === seriesInstanceUid + && data.studyInstanceUid === studyInstanceUid) { + data.active = true; } else { data.active = false; diff --git a/Packages/lesiontracker/components/lesionTable/lesionTable.js b/Packages/lesiontracker/components/lesionTable/lesionTable.js index 5c1867382..1c65ff5b7 100644 --- a/Packages/lesiontracker/components/lesionTable/lesionTable.js +++ b/Packages/lesiontracker/components/lesionTable/lesionTable.js @@ -4,6 +4,8 @@ function updateLesions(e) { var lesionNumber = parseInt($(e.currentTarget).attr("id"), 10); // TODO= Clarify this + // Get Target column value + // Search and update data according to target type var isTarget = $(e.currentTarget).find('td').eq(2).html().trim() === 'N'?false:true; // Find data for specific lesion @@ -23,7 +25,12 @@ function updateLesions(e) { // from the DOM itself. This will be changed later when a // real association between viewports and timepoints is created. var enabledElement = cornerstone.getEnabledElement(element); + if (!enabledElement) { + return; + } var study = cornerstoneTools.metaData.get('study', enabledElement.image.imageId); + var series = cornerstoneTools.metaData.get('series', enabledElement.image.imageId); + var timepoint = Timepoints.findOne({timepointName: study.date}); if (!timepoint) { return; @@ -32,21 +39,40 @@ function updateLesions(e) { var timepointObject = timepoints[timepointID]; + // TODO: Bring series in correct imageViewport + + if (timepointObject.seriesInstanceUid !== series.instanceUid) { + console.log("not in same series"); + var newSeriesData = { + seriesInstanceUid: timepointObject.seriesInstanceUid, + studyInstanceUid: timepointObject.studyInstanceUid + }; + + // Rerender the viewport using the drag and drop data + rerenderViewportWithNewSeries(element, newSeriesData); + } + // Defines event data var eventData = { enabledElement: cornerstone.getEnabledElement(element), lesionData: { isTarget: isTarget, lesionNumber: lesionNumber, - imageId: timepointObject.imageId + imageId: timepointObject.imageId, + seriesInstanceUid: timepointObject.seriesInstanceUid, + studyInstanceUid: timepointObject.studyInstanceUid }, type: "active" }; + // When measurement column is null, deactivate other measurements in the enabledElement if (timepointObject.longestDiameter === "") { eventData.type = "inactive"; } + // If isTarget = false, this measurement is nonTarget measurement + // Activate related nonTarget measurement + // Deactivate all target measurements to activate only nonTarget measurement if (!isTarget) { $(element).trigger("NonTargetToolSelected", eventData); @@ -55,10 +81,15 @@ function updateLesions(e) { $(element).trigger("LesionToolSelected", eventData); return; } + + // Trigger event for target measurements $(element).trigger("LesionToolSelected", eventData); // Deactivate nonTarget tool measurements eventData.type = "inactive"; + + // Triggger event for nonTarget measurements + // Inactivate all nonTarget measurements if any measurement is active $(element).trigger("NonTargetToolSelected", eventData); });