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) {
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: {

View File

@ -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;

View File

@ -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);
});