diff --git a/Packages/ohif-lesiontracker/both/configuration/configuration.js b/Packages/ohif-lesiontracker/both/configuration/configuration.js index f7189d0a7..afda123d0 100644 --- a/Packages/ohif-lesiontracker/both/configuration/configuration.js +++ b/Packages/ohif-lesiontracker/both/configuration/configuration.js @@ -1,7 +1,7 @@ import { OHIF } from 'meteor/ohif:core'; import { measurementTools } from './measurementTools'; -import { retrieveMeasurements, storeMeasurements, retrieveTimepoints, storeTimepoints, removeTimepoint, updateTimepoint } from './dataExchange'; +import { retrieveMeasurements, storeMeasurements, retrieveTimepoints, storeTimepoints, removeTimepoint, updateTimepoint, disassociateStudy } from './dataExchange'; import { validateMeasurements } from './dataValidation'; console.log('OHIF-LesionTracker: Defining Configuration for Measurements'); @@ -28,6 +28,7 @@ OHIF.measurements.TimepointApi.setConfiguration({ retrieve: retrieveTimepoints, store: storeTimepoints, remove: removeTimepoint, - update: updateTimepoint + update: updateTimepoint, + disassociate: disassociateStudy } }); diff --git a/Packages/ohif-lesiontracker/both/configuration/dataExchange.js b/Packages/ohif-lesiontracker/both/configuration/dataExchange.js index 51e655f08..97c649fbd 100644 --- a/Packages/ohif-lesiontracker/both/configuration/dataExchange.js +++ b/Packages/ohif-lesiontracker/both/configuration/dataExchange.js @@ -95,3 +95,19 @@ export const removeTimepoint = timepointData => { }); }); }; + +export const disassociateStudy = (timepointIds, studyInstanceUid) => { + console.log('disassociateStudy'); + console.log(timepointIds); + console.log(studyInstanceUid); + + return new Promise((resolve, reject) => { + Meteor.call('disassociateStudy', timepointIds, studyInstanceUid, (error, response) => { + if (error) { + reject(error); + } else { + resolve(response); + } + }); + }); +}; diff --git a/Packages/ohif-lesiontracker/server/methods.js b/Packages/ohif-lesiontracker/server/methods.js index 6005b7a85..4b5286c91 100644 --- a/Packages/ohif-lesiontracker/server/methods.js +++ b/Packages/ohif-lesiontracker/server/methods.js @@ -37,8 +37,50 @@ Meteor.methods({ }); }, + disassociateStudy(timepointIds, studyInstanceUid) { + OHIF.log.info('Disassociating Study from Timepoints'); + timepointIds.forEach(timepointId => { + const timepoint = Timepoints.findOne({timepointId}); + if (!timepoint) { + return; + } + + // Find the index of the current studyInstanceUid in the array + // of reference studyInstanceUids + const index = timepoint.studyInstanceUids.indexOf(studyInstanceUid); + if (index < 0) { + return; + } + + // Remove the specified studyInstanceUid from the array of associated studyInstanceUids + timepoint.studyInstanceUids.splice(index, 1); + + let updated = []; + let removed = []; + if (timepoint.studyInstanceUids.length) { + Timepoints.update(timepoint._id, { + $set: { + studyInstanceUids: timepoint.studyInstanceUids + } + }); + } else { + Timepoints.remove(timepoint._id); + } + + // Remove all Measurement Data for this timepoint and study + measurementTools.forEach(tool => { + const filter = { + studyInstanceUid: studyInstanceUid, + timepointId: timepointId + }; + + MeasurementCollections[tool.id].remove(filter) + }); + }); + }, + removeTimepoint(timepointData) { - OHIF.log.info('Removing Timepoint off the Server'); + OHIF.log.info('Removing Timepoint from the Server'); OHIF.log.info(JSON.stringify(timepointData, null, 2)); Timepoints.remove(timepointData); }, diff --git a/Packages/ohif-measurements/both/configuration/measurements.js b/Packages/ohif-measurements/both/configuration/measurements.js index 4a94c1373..f979e3d43 100644 --- a/Packages/ohif-measurements/both/configuration/measurements.js +++ b/Packages/ohif-measurements/both/configuration/measurements.js @@ -119,7 +119,7 @@ class MeasurementApi { } }); - // Update the measurement numbers for the remaning measurements + // Update the measurement numbers for the remaining measurements const updateFilter = _.clone(filter); updateFilter.measurementNumber = { $gt: measurementNumber diff --git a/Packages/ohif-measurements/both/configuration/timepoints.js b/Packages/ohif-measurements/both/configuration/timepoints.js index dd325c873..a12dda0c1 100644 --- a/Packages/ohif-measurements/both/configuration/timepoints.js +++ b/Packages/ohif-measurements/both/configuration/timepoints.js @@ -20,13 +20,13 @@ class TimepointApi { if (currentTimepointId) { this.currentTimepointId = currentTimepointId; } - } - retrieveTimepoints(filter) { this.timepoints = new Mongo.Collection(null); this.timepoints.attachSchema(TimepointSchema); this.timepoints._debugName = 'Timepoints'; + } + retrieveTimepoints(filter) { const retrievalFn = configuration.dataExchange.retrieve; if (!_.isFunction(retrievalFn)) { return; @@ -59,6 +59,16 @@ class TimepointApi { storeFn(timepointData).then(() => OHIF.log.info('Timepoint storage completed')); } + disassociateStudy(timepointIds, studyInstanceUid) { + const disassociateFn = configuration.dataExchange.disassociate; + disassociateFn(timepointIds, studyInstanceUid).then(() => { + OHIF.log.info('Disassociation completed') + + this.timepoints.remove({}); + this.retrieveTimepoints(); + }); + } + removeTimepoint(timepointId) { const removeFn = configuration.dataExchange.remove; if (!_.isFunction(removeFn)) { diff --git a/Packages/ohif-measurements/client/components/association/confirmRemoveTimepointAssociation/confirmRemoveTimepointAssociation.html b/Packages/ohif-measurements/client/components/association/confirmRemoveTimepointAssociation/confirmRemoveTimepointAssociation.html index 15bcec29c..2aa06b4e7 100644 --- a/Packages/ohif-measurements/client/components/association/confirmRemoveTimepointAssociation/confirmRemoveTimepointAssociation.html +++ b/Packages/ohif-measurements/client/components/association/confirmRemoveTimepointAssociation/confirmRemoveTimepointAssociation.html @@ -10,10 +10,12 @@ Measurements related to this Study and Timepoint will be erased. Do you really want to delete this association?
diff --git a/Packages/ohif-measurements/client/components/longitudinal/longitudinalStudyListContextMenu/longitudinalStudyListContextMenu.html b/Packages/ohif-measurements/client/components/longitudinal/longitudinalStudyListContextMenu/longitudinalStudyListContextMenu.html index b02e1d3ef..318ae510a 100644 --- a/Packages/ohif-measurements/client/components/longitudinal/longitudinalStudyListContextMenu/longitudinalStudyListContextMenu.html +++ b/Packages/ohif-measurements/client/components/longitudinal/longitudinalStudyListContextMenu/longitudinalStudyListContextMenu.html @@ -2,15 +2,22 @@ {{#dropdownForm}}