diff --git a/Packages/lesiontracker/client/components/lesionLocationDialog/lesionLocationDialog.html b/Packages/lesiontracker/client/components/lesionLocationDialog/lesionLocationDialog.html
index c4288714a..32de9ec10 100644
--- a/Packages/lesiontracker/client/components/lesionLocationDialog/lesionLocationDialog.html
+++ b/Packages/lesiontracker/client/components/lesionLocationDialog/lesionLocationDialog.html
@@ -32,6 +32,7 @@
+
\ No newline at end of file
diff --git a/Packages/lesiontracker/client/components/lesionLocationDialog/lesionLocationDialog.js b/Packages/lesiontracker/client/components/lesionLocationDialog/lesionLocationDialog.js
index 5a1058972..1e0789eab 100644
--- a/Packages/lesiontracker/client/components/lesionLocationDialog/lesionLocationDialog.js
+++ b/Packages/lesiontracker/client/components/lesionLocationDialog/lesionLocationDialog.js
@@ -258,6 +258,14 @@ Template.lesionLocationDialog.events({
closeHandler(dialog);
},
+ 'click #convertToNonTarget': function() {
+ var measurementData = Template.lesionLocationDialog.measurementData;
+ var dialog = Template.lesionLocationDialog.dialog;
+
+ convertToNonTarget(measurementData);
+
+ closeHandler(dialog);
+ },
'click #btnCloseLesionPopup': function() {
var dialog = Template.lesionLocationDialog.dialog;
closeHandler(dialog);
diff --git a/Packages/lesiontracker/lib/convertToNonTarget.js b/Packages/lesiontracker/lib/convertToNonTarget.js
new file mode 100644
index 000000000..4d574e8be
--- /dev/null
+++ b/Packages/lesiontracker/lib/convertToNonTarget.js
@@ -0,0 +1,86 @@
+convertToNonTarget = function(measurementData) {
+ if (measurementData.isTarget === false) {
+ return;
+ }
+
+ var measurement = Measurements.findOne(measurementData.id);
+
+ var timepoint = Timepoints.findOne({
+ timepointId: measurementData.timepointId
+ });
+
+ // Next, update the measurementData and add it to the new tool type
+ var toolType = 'nonTarget';
+ var newMeasurement = {
+ id: 'notready',
+ lesionNumber: LesionManager.getNewLesionNumber(measurementData.timepointId, false),
+ visible: true,
+ active: true,
+ imageId: measurementData.imageId,
+ seriesInstanceUid: measurementData.seriesInstanceUid,
+ studyInstanceUid: measurementData.studyInstanceUid,
+ patientId: measurementData.patientId,
+ isTarget: false,
+ measurementType: toolType
+ };
+
+ if (timepoint && timepoint.timepointType === 'baseline') {
+ newMeasurement.response = 'NM';
+ } else if (timepoint && timepoint.timepointType === 'followup') {
+ newMeasurement.response = 'Present';
+ } else {
+ newMeasurement.response = '';
+ }
+
+ newMeasurement.handles = {
+ start: {
+ x: (measurementData.handles.start.x + measurementData.handles.end.x) / 2,
+ y: (measurementData.handles.start.y + measurementData.handles.end.y) / 2,
+ highlight: true,
+ active: false
+ },
+ end: {
+ x: Math.min(measurementData.handles.start.x, measurementData.handles.end.x),
+ y: Math.min(measurementData.handles.start.y, measurementData.handles.end.y),
+ highlight: true,
+ active: false
+ },
+ textBox: {
+ x: measurementData.handles.textBox.x,
+ y: measurementData.handles.textBox.y,
+ active: false,
+ movesIndependently: false,
+ drawnIndependently: true,
+ allowedOutsideImage: true,
+ hasBoundingBox: true
+ }
+ };
+
+ // Adds lesion data to timepoints array
+ LesionManager.updateLesionData(newMeasurement);
+
+ // Set the new Measurement to have the same location as the old one
+ if (measurement.location && measurement.locationId) {
+ var existingMeasurement = Measurements.findOne({
+ lesionNumber: newMeasurement.lesionNumber,
+ isTarget: newMeasurement.isTarget
+ });
+
+ if (!existingMeasurement) {
+ return;
+ }
+
+ Measurements.update(existingMeasurement._id, {
+ $set: {
+ location: measurement.location,
+ locationId: measurement.locationId
+ }
+ });
+ }
+
+ if (measurement) {
+ // Remove the timepointData from this Measurement and update it
+ // in the database, if it is already in the database
+ clearMeasurementTimepointData(measurement._id, measurementData.timepointId);
+ }
+};
diff --git a/Packages/lesiontracker/package.js b/Packages/lesiontracker/package.js
index c67a6aaf1..420c50ce8 100644
--- a/Packages/lesiontracker/package.js
+++ b/Packages/lesiontracker/package.js
@@ -144,6 +144,7 @@ Package.onUse(function(api) {
api.addFiles('lib/deactivateAllToolData.js', 'client');
api.addFiles('lib/clearTools.js', 'client');
api.addFiles('lib/calculateTotalLesionBurden.js', 'client');
+ api.addFiles('lib/convertToNonTarget.js', 'client');
api.addFiles('lib/syncMeasurementAndToolData.js', 'client');
api.addFiles('lib/syncImageMeasurementAndToolData.js', 'client');
@@ -174,6 +175,7 @@ Package.onUse(function(api) {
api.export('getTimepointName', 'client');
api.export('getTrialCriteriaConstraints', 'client');
api.export('calculateTotalLesionBurden', 'client');
+ api.export('convertToNonTarget', 'client');
// Export global objects
api.export('TrialResponseCriteria', 'client');