Bringing series into viewport ( work-in-progress)

This commit is contained in:
Evren Ozkan 2015-11-19 23:44:07 -05:00
parent 652144932f
commit b28e84076f
3 changed files with 61 additions and 9 deletions

View File

@ -10,9 +10,6 @@ var measurementManagerDAL = (function() {
function addTimepointData(lesionData) { function addTimepointData(lesionData) {
var timepoints = Timepoints.find().fetch(); var timepoints = Timepoints.find().fetch();
var study = cornerstoneTools.metaData.get('study', lesionData.imageId);
var series = cornerstoneTools.metaData.get('study', lesionData.imageId);
var timepointsObject = {}; var timepointsObject = {};
for (var i = 0; i < timepoints.length; i++) { for (var i = 0; i < timepoints.length; i++) {
@ -25,14 +22,17 @@ var measurementManagerDAL = (function() {
timepointObject = { timepointObject = {
longestDiameter: lesionData.measurementText, longestDiameter: lesionData.measurementText,
imageId: lesionData.imageId, imageId: lesionData.imageId,
studyInstanceUid: study.instanceUid, seriesInstanceUid: lesionData.seriesInstanceUid,
seriesInstanceUid: series.instanceUid studyInstanceUid: lesionData.studyInstanceUid
}; };
} else { } else {
// Add null measurement // Add null measurement
timepointObject = { timepointObject = {
longestDiameter: "", longestDiameter: "",
imageId: "" imageId: "",
seriesInstanceUid: "",
studyInstanceUid: ""
}; };
} }
timepointsObject[timepointId] = timepointObject; timepointsObject[timepointId] = timepointObject;
@ -71,6 +71,8 @@ var measurementManagerDAL = (function() {
var timepoints = measurement.timepoints; var timepoints = measurement.timepoints;
timepoints[timepointID].longestDiameter = lesionData.measurementText; timepoints[timepointID].longestDiameter = lesionData.measurementText;
timepoints[timepointID].imageId = lesionData.imageId; timepoints[timepointID].imageId = lesionData.imageId;
timepoints[timepointID].seriesInstanceUid = lesionData.seriesInstanceUid;
timepoints[timepointID].studyInstanceUid = lesionData.studyInstanceUid;
Measurements.update(measurement._id, { Measurements.update(measurement._id, {
$set: { $set: {

View File

@ -83,6 +83,11 @@
} }
function createNewMeasurement(mouseEventData) { 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 // create the measurement data for this tool with the end handle activated
var measurementData = { var measurementData = {
visible: true, visible: true,
@ -110,6 +115,8 @@
} }
}, },
imageId: mouseEventData.image.imageId, imageId: mouseEventData.image.imageId,
seriesInstanceUid: seriesInstanceUid,
studyInstanceUid: studyInstanceUid,
measurementText: '', measurementText: '',
isTarget: false, isTarget: false,
uid: uuid.v4() uid: uuid.v4()
@ -372,6 +379,8 @@
var enabledElement = eventObject.enabledElement; var enabledElement = eventObject.enabledElement;
var isTarget = eventObject.lesionData.isTarget; var isTarget = eventObject.lesionData.isTarget;
var lesionNumber = eventObject.lesionData.lesionNumber; var lesionNumber = eventObject.lesionData.lesionNumber;
var seriesInstanceUid = eventObject.lesionData.seriesInstanceUid;
var studyInstanceUid = eventObject.lesionData.studyInstanceUid;
var type = eventObject.type; var type = eventObject.type;
// if we have no toolData for this element, return immediately as there is nothing to do // 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]; var data = toolData.data[i];
//When click a row of table measurements, measurement will be active and color will be green //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; data.visible = false;
deletedDataIndex = i; deletedDataIndex = i;
} }
@ -401,7 +415,12 @@
for (var i = 0; i < toolData.data.length; i++) { for (var i = 0; i < toolData.data.length; i++) {
var data = toolData.data[i]; var data = toolData.data[i];
//When click a row of table measurements, measurement will be active and color will be green //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; data.active = true;
} else { } else {
data.active = false; data.active = false;

View File

@ -4,6 +4,8 @@ function updateLesions(e) {
var lesionNumber = parseInt($(e.currentTarget).attr("id"), 10); var lesionNumber = parseInt($(e.currentTarget).attr("id"), 10);
// TODO= Clarify this // 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; var isTarget = $(e.currentTarget).find('td').eq(2).html().trim() === 'N'?false:true;
// Find data for specific lesion // Find data for specific lesion
@ -23,7 +25,12 @@ function updateLesions(e) {
// from the DOM itself. This will be changed later when a // from the DOM itself. This will be changed later when a
// real association between viewports and timepoints is created. // real association between viewports and timepoints is created.
var enabledElement = cornerstone.getEnabledElement(element); var enabledElement = cornerstone.getEnabledElement(element);
if (!enabledElement) {
return;
}
var study = cornerstoneTools.metaData.get('study', enabledElement.image.imageId); 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}); var timepoint = Timepoints.findOne({timepointName: study.date});
if (!timepoint) { if (!timepoint) {
return; return;
@ -32,21 +39,40 @@ function updateLesions(e) {
var timepointObject = timepoints[timepointID]; 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 // Defines event data
var eventData = { var eventData = {
enabledElement: cornerstone.getEnabledElement(element), enabledElement: cornerstone.getEnabledElement(element),
lesionData: { lesionData: {
isTarget: isTarget, isTarget: isTarget,
lesionNumber: lesionNumber, lesionNumber: lesionNumber,
imageId: timepointObject.imageId imageId: timepointObject.imageId,
seriesInstanceUid: timepointObject.seriesInstanceUid,
studyInstanceUid: timepointObject.studyInstanceUid
}, },
type: "active" type: "active"
}; };
// When measurement column is null, deactivate other measurements in the enabledElement
if (timepointObject.longestDiameter === "") { if (timepointObject.longestDiameter === "") {
eventData.type = "inactive"; 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) { if (!isTarget) {
$(element).trigger("NonTargetToolSelected", eventData); $(element).trigger("NonTargetToolSelected", eventData);
@ -55,10 +81,15 @@ function updateLesions(e) {
$(element).trigger("LesionToolSelected", eventData); $(element).trigger("LesionToolSelected", eventData);
return; return;
} }
// Trigger event for target measurements
$(element).trigger("LesionToolSelected", eventData); $(element).trigger("LesionToolSelected", eventData);
// Deactivate nonTarget tool measurements // Deactivate nonTarget tool measurements
eventData.type = "inactive"; eventData.type = "inactive";
// Triggger event for nonTarget measurements
// Inactivate all nonTarget measurements if any measurement is active
$(element).trigger("NonTargetToolSelected", eventData); $(element).trigger("NonTargetToolSelected", eventData);
}); });