Update measurement data in lesion table

This commit is contained in:
Aysel Afsar 2015-10-29 19:05:04 -04:00
parent 78faa2a8f9
commit 9fb5cc2953
3 changed files with 98 additions and 223 deletions

View File

@ -17,7 +17,6 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
var element = mouseEventData.element; var element = mouseEventData.element;
timepointID = getActiveTimepointID(element); timepointID = getActiveTimepointID(element);
var lesionNumber = measurementManagerDAL.getLesionNumber(timepointID); var lesionNumber = measurementManagerDAL.getLesionNumber(timepointID);
console.log(lesionNumber);
var lesionCounter = ""; var lesionCounter = "";
// Subscribe CornerstoneMouseup event, when mouse is up, call lesionDialog // Subscribe CornerstoneMouseup event, when mouse is up, call lesionDialog
@ -137,83 +136,15 @@ var cornerstoneTools = (function ($, cornerstone, cornerstoneMath, cornerstoneTo
function updateLesionCollection(lesionData, currentElement) { function updateLesionCollection(lesionData, currentElement) {
if (lesionData.active) { if (lesionData.active) {
if(lesionData.timepointID != undefined && lesionData.timepointID != "") {
// Update Measurements Collection
measurementManagerDAL.updateTimepointData(lesionData);
} else {
activeLesionMeasurementData = lesionData; activeLesionMeasurementData = lesionData;
} }
// TODO: Option1: Create a global variable like lesionMeasurementData
// TODO: Insert lesionData inside the lesionMeasurementData
// TODO: Send the lesionMeasurementData to lesionDialog by ShowLesionDialog event
/*if (lesionMeasurementData != undefined && lesionMeasurementData.lesionNumber === lesionData.index) {
lesionMeasurementData.timepoints.now.longestDiameter = lesionData.measurementText;
console.log(lesionMeasurementData.timepoints.now.longestDiameter);
} else {
lesionMeasurementData = {
lesionNumber: lesionData.index,
isTarget: true,
location: '',
timepoints: {
"now": {
imageId: "blah",
timepointUid: "timepointX",
date: 2010,
isDirty: true,
longestDiameter: lesionData.measurementText
},
"earlier": {
imageId: "blah2",
timepointUid: "timepointy",
date: 2010,
isDirty: true,
longestDiameter: 8
} }
} }
};
}*/
// TODO: Option2:
// Check collection has this lesionData
/*var isFound = Measurements.findOne({lesionNumber: lesionData.index});
// TODO: Decide which time point is changed
if (isFound) {
// Update measurement text
Measurements.update(
{ lesionNumber: lesionData.index },
{
$set: {
"timepoints.now.longestDiameter": lesionData.measurementText
}
}, {multi: true}
);
console.log(Measurements.find());
} else {
var lesionObject = {
lesionNumber: lesionData.index,
isTarget: true,
location: '',
isHidden: true,
timepoints: {
"now": {
imageId: "blah",
timepointUid: "timepointX",
date: 2010,
isDirty: true,
longestDiameter: lesionData.measurementText
},
"earlier": {
imageId: "blah2",
timepointUid: "timepointy",
date: 2010,
isDirty: true,
longestDiameter: 8
}
}
};
Measurements.insert(lesionObject);
}*/
}
function renderLesion(lesion, context, eventData){ function renderLesion(lesion, context, eventData){
context.save(); context.save();

View File

@ -2,50 +2,6 @@ var measurementManagerDAL = (function () {
var trialPatientLocations = []; var trialPatientLocations = [];
var timepoints = []; var timepoints = [];
// timepointID = tabId + activeViewportIndex
/*timepoints = [
{
timepointID: "tp0",
rois: [
{
UID: "345",
number: 1,
measurement: "22.34",
locationUID: 12345
},
{
UID: "245",
number: 2,
measurement: "22.34",
locationUID: 1745
}
]
},
{
timepointID: "tp1",
rois: [
{
UID: "243",
number: 1,
measurement: "22.34",
locationUID: 12345
}
]
},
{
timepointID: "tp2",
rois: [
{
UID: "253",
number: 1,
measurement: "0.34",
locationUID: 12345
}
]
}
];
*/
// Returns trialPatientLocations array // Returns trialPatientLocations array
function getPatientLocations () { function getPatientLocations () {
return trialPatientLocations; return trialPatientLocations;
@ -76,13 +32,6 @@ var measurementManagerDAL = (function () {
return locationUID; return locationUID;
} }
// Insert Measurements Collection
function insertDataToMeasurementCollection (lesionData) {
}
function getContentId () { function getContentId () {
return Session.get("activeContentId"); return Session.get("activeContentId");
} }
@ -93,35 +42,10 @@ var measurementManagerDAL = (function () {
return tabData[0].timepoints; return tabData[0].timepoints;
} }
// Adds new timepoint item to tiemepoints array // Add timepoint data to Measurements collection
function addLesionData (lesionData) { function addTimepointData(lesionData) {
var contentId = getContentId(); var contentId = getContentId();
var timepointID = lesionData.timepointID;
var tabMeasurements = Measurements.find({contentId: contentId, "lesionData.lesionNumber": lesionData.lesionNumber}).fetch();
var tabMeasurementsData = tabMeasurements[0];
if (tabMeasurements != undefined && tabMeasurements.length > 0) {
// Update timepoint
var timepointArr = tabMeasurementsData.lesionData.timepoints;
for(var i=0; i< timepointArr.length; i++) {
var timepoint = timepointArr[i];
if(timepoint[timepointID] != undefined) {
timepoint[timepointID].longestDiameter = lesionData.measurementText;
}
}
Measurements.update(
{ contentId: contentId, "lesionData.lesionNumber": lesionData.lesionNumber},
{
$set: {
"lesionData.timepoints": timepointArr
}
}, {multi: true}
);
} else {
// Add new measurement data
var timepointsOfTab = getTimepointsOfTab(); var timepointsOfTab = getTimepointsOfTab();
var timepointsArr = []; var timepointsArr = [];
for(var i=0; i< timepointsOfTab.length; i++) { for(var i=0; i< timepointsOfTab.length; i++) {
@ -145,6 +69,7 @@ var measurementManagerDAL = (function () {
var lesionDataCollectionObject = { var lesionDataCollectionObject = {
lesionNumber: lesionData.lesionNumber, lesionNumber: lesionData.lesionNumber,
isTarget: true, isTarget: true,
locationUID: lesionData.locationUID,
location: getLocationName(lesionData.locationUID), location: getLocationName(lesionData.locationUID),
timepoints: timepointsArr timepoints: timepointsArr
}; };
@ -152,6 +77,56 @@ var measurementManagerDAL = (function () {
Measurements.insert({contentId: contentId, lesionData: lesionDataCollectionObject}); Measurements.insert({contentId: contentId, lesionData: lesionDataCollectionObject});
} }
// Update timepoint data in Measurements collection
function updateTimepointData (lesionData) {
var contentId = getContentId();
var timepointID = lesionData.timepointID;
var tabMeasurements = Measurements.find({contentId: contentId, "lesionData.lesionNumber": lesionData.lesionNumber}).fetch();
var tabMeasurementsData = tabMeasurements[0];
if (tabMeasurements != undefined && tabMeasurements.length > 0) {
// Update timepoint
var timepointArr = tabMeasurementsData.lesionData.timepoints;
for(var i=0; i< timepointArr.length; i++) {
var timepoint = timepointArr[i];
if(timepoint[timepointID] != undefined) {
timepoint[timepointID].longestDiameter = lesionData.measurementText;
}
}
Measurements.update(
{ contentId: contentId, "lesionData.lesionNumber": lesionData.lesionNumber},
{
$set: {
"lesionData.timepoints": timepointArr
}
}, {multi: true}
);
}
}
// Check timepointData is found in Measurements collection
function timepointDataIsFound (lesionNumber) {
var contentId = getContentId();
var timepointData = Measurements.findOne({contentId: contentId, "lesionData.lesionNumber": lesionNumber});
if (timepointData != undefined) {
return true;
} else {
return false;
}
}
// Adds new timepoint item to tiemepoints array
function addLesionData (lesionData) {
if(timepointDataIsFound(lesionData)) {
// Update data
updateTimepointData(lesionData);
} else{
// Insert data
addTimepointData(lesionData);
}
// TODO: This code block will be removed
// Populate timepoints array // Populate timepoints array
var roi = { var roi = {
uid: lesionData.uid, uid: lesionData.uid,
@ -169,47 +144,48 @@ var measurementManagerDAL = (function () {
timepoints.push({timepointID: timepointID, rois: [roi]}); timepoints.push({timepointID: timepointID, rois: [roi]});
} }
insertDataToMeasurementCollection(lesionData);
} }
// Returns new lesion number according to timepointID // Returns new lesion number according to timepointID
function getNewLesionNumber (timepointID) { function getNewLesionNumber (timepointID) {
// Check timepoint is in timepoints array var contentId = getContentId();
for (var i=0; i< timepoints.length; i++) { var lesionNumberCounter = 0;
var timepoint = timepoints[i]; var timepointsData = Measurements.find({contentId: contentId}).fetch();
if(timepoint.timepointID === timepointID) { if(timepointsData.length > 0) {
return timepoint.rois.length + 1; for(var i=0; i< timepointsData.length; i++) {
} var timepointData = timepointsData[i];
} var timepoints = timepointData.lesionData.timepoints;
for(var j=0; j< timepoints.length; j++) {
var timepoint = timepoints[j];
var key = Object.keys(timepoint);
if(key == timepointID) {
if (timepoint[key].longestDiameter === "") {
return timepointData.lesionData.lesionNumber;
// Add new time point } else {
timepoints.push({timepointID: timepointID, rois: []}); lesionNumberCounter = lesionNumberCounter + 1;
}
}
}
}
console.log(lesionNumberCounter + 1);
return lesionNumberCounter + 1;
}
return 1; return 1;
} }
// If lesion number is added for any timepoint, returns lesion locationUID // If lesion number is added for any timepoint, returns lesion locationUID
function isLesionNumberAdded (lesionNumber) { function isLesionNumberAdded (lesionNumber) {
if (timepointDataIsFound(lesionNumber)){
var contentId = getContentId();
var timepointData = Measurements.find({contentId: contentId, "lesionData.lesionNumber": lesionNumber}).fetch();
return timepointData[0].lesionData.locationUID;
for (var i=0; i< timepoints.length; i++) { }
var timepoint = timepoints[i]; return null
var rois = timepoint.rois;
for(var j=0; j<rois.length; j++) {
var roi = rois[j];
if (roi.number === lesionNumber) {
return roi.locationUID;
}
}
}
return null;
}
// Adds lesion data to Measurements collection
function addLesionToMeasurementsCollection (lesionData){
Measurements.insert(lesionData);
} }
return { return {
@ -218,7 +194,8 @@ var measurementManagerDAL = (function () {
addLesionData: addLesionData, addLesionData: addLesionData,
getLesionNumber: getNewLesionNumber, getLesionNumber: getNewLesionNumber,
isLesionNumberAdded: isLesionNumberAdded, isLesionNumberAdded: isLesionNumberAdded,
getTimepoints: getTimepoints getTimepoints: getTimepoints,
updateTimepointData: updateTimepointData
}; };
})(); })();

View File

@ -7,7 +7,7 @@ Template.lesionDialog.onRendered(function () {
if(locationUID != null) { if(locationUID != null) {
activeLesionMeasurementData.locationUID = locationUID; activeLesionMeasurementData.locationUID = locationUID;
measurementManagerDAL.addLesionData(activeLesionMeasurementData); measurementManagerDAL.updateTimepointData(activeLesionMeasurementData);
}else{ }else{
// Show Dialog // Show Dialog
@ -23,36 +23,3 @@ Template.lesionDialog.onRendered(function () {
}); });
}); });
// Listen lesionMeaurementCreated Event and when this event is triggered, show lesionLocationDialog Box
/*
$(document).on("lesionMeasurementCreated",function(e,eventCaller,data){
console.log("Lesion measurement xreated");
var element = data.element;
var tabId = data.tabId;
var viewports = $("#content"+tabId).find(".imageViewerViewport");
var viewportIndex = $(viewports).index($(element));
data.viewportIndex = viewportIndex;
data.totalViewportCount = viewports.length;
//Set Lesion Table Data to insert into lesion table
setLesionTableData(data);
// Check popup will shown or not
var returnVal = lesionNumberIsAdded(data);
if(!returnVal.isFound) {
if( !Session.get("lesionLocationSelected") ) {
$("#modal-dialog-container").css({
"top": eventCaller.pageY,
"left": eventCaller.pageX
});
$("#lesionDialog").modal("show");
}
} else {
// If lesionNumber is added before:
data.rowIndex = returnVal.rowIndex;
$(document).trigger("addLesionToExistedRow",data);
}
});*/