ohif-viewer/Packages/ohif-lesiontracker/server/methods.js

88 lines
2.7 KiB
JavaScript

import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
import { OHIF } from 'meteor/ohif:core';
import { measurementTools } from 'meteor/ohif:lesiontracker/both/configuration/measurementTools';
let MeasurementCollections = {};
measurementTools.forEach(tool => {
MeasurementCollections[tool.id] = new Mongo.Collection(tool.id);
});
const Timepoints = new Mongo.Collection('timepoints');
Timepoints.find().observe({
remove() {
console.warn('REMOVED');
}
});
// Drop our collections for testing purposes
Meteor.startup(() => {
Timepoints.remove({});
measurementTools.forEach(tool => {
MeasurementCollections[tool.id].remove({});
});
});
// TODO: Make storage use update instead of clearing the entire collection and
// re-inserting everything.
Meteor.methods({
storeTimepoints(timepoints) {
OHIF.log.info('Storing Timepoints on the Server');
OHIF.log.info(JSON.stringify(timepoints, null, 2));
Timepoints.remove({});
timepoints.forEach(timepoint => {
delete timepoint._id;
Timepoints.insert(timepoint);
});
},
removeTimepoint(timepointData) {
OHIF.log.info('Removing Timepoint off the Server');
OHIF.log.info(JSON.stringify(timepointData, null, 2));
Timepoints.remove(timepointData);
},
updateTimepoint(timepointData, query) {
OHIF.log.info('Updating Timepoint on the Server');
OHIF.log.info(JSON.stringify(timepointData, null, 2));
OHIF.log.info(JSON.stringify(query, null, 2));
Timepoints.update(timepointData, query);
},
retrieveTimepoints(filter) {
OHIF.log.info('Retrieving Timepoints from the Server');
return Timepoints.find(filter || {}).fetch();
},
storeMeasurements(measurementData) {
OHIF.log.info('Storing Measurements on the Server');
OHIF.log.info(JSON.stringify(measurementData, null, 2));
Object.keys(measurementData).forEach(toolId => {
if (!MeasurementCollections[toolId]) {
return;
}
MeasurementCollections[toolId].remove({});
const measurements = measurementData[toolId];
measurements.forEach(measurement => {
MeasurementCollections[toolId].insert(measurement);
});
});
},
retrieveMeasurements(filter = {}) {
OHIF.log.info('Retrieving Measurements from the Server');
let measurementData = {};
measurementTools.forEach(tool => {
measurementData[tool.id] = MeasurementCollections[tool.id].find(filter || {}).fetch();
});
return measurementData;
}
});