LT-275: Migrating ohif:lesiontracker to the new import structure

This commit is contained in:
Bruno Alves de Faria 2016-10-17 21:17:31 +01:00 committed by Erik Ziegler
parent a49fca71d2
commit 826bf9bf16
26 changed files with 142 additions and 151 deletions

View File

@ -17,7 +17,7 @@ Template.viewer.onCreated(() => {
const contentId = instance.data.contentId; const contentId = instance.data.contentId;
OHIF.viewer.functionList = $.extend(OHIF.viewer.functionList, { OHIF.viewer.functionList = $.extend(OHIF.viewer.functionList, {
toggleLesionTrackerTools: toggleLesionTrackerTools, toggleLesionTrackerTools: OHIF.lesiontracker.toggleLesionTrackerTools,
clearTools: clearTools, clearTools: clearTools,
bidirectional: () => { bidirectional: () => {
// Used for hotkeys // Used for hotkeys
@ -49,7 +49,7 @@ Template.viewer.onCreated(() => {
Session.set('activeViewport', ViewerData[contentId].activeViewport || false); Session.set('activeViewport', ViewerData[contentId].activeViewport || false);
// Set lesion tool buttons as disabled if pixel spacing is not available for active element // Set lesion tool buttons as disabled if pixel spacing is not available for active element
instance.autorun(pixelSpacingAutorunCheck); instance.autorun(OHIF.lesiontracker.pixelSpacingAutorunCheck);
// Update the ViewerStudies collection with the loaded studies // Update the ViewerStudies collection with the loaded studies
ViewerStudies.remove({}); ViewerStudies.remove({});

View File

@ -46,7 +46,7 @@ Router.route('/viewer/timepoints/:_id', {
var timepointId = this.params._id; var timepointId = this.params._id;
this.render('app', routerOptions); this.render('app', routerOptions);
openNewTabWithTimepoint(timepointId); OHIF.lesiontracker.openNewTabWithTimepoint(timepointId);
} }
}); });

View File

@ -40,7 +40,7 @@ Router.route('/viewer/timepoints/:_id', {
var timepointId = this.params._id; var timepointId = this.params._id;
this.render('app', routerOptions); this.render('app', routerOptions);
openNewTabWithTimepoint(timepointId); OHIF.lesiontracker.openNewTabWithTimepoint(timepointId);
} }
}); });

View File

@ -0,0 +1,3 @@
import { OHIF } from 'meteor/ohif:core';
OHIF.lesiontracker = {};

View File

@ -60,7 +60,7 @@ function displayFunction(data) {
return criteria.id; return criteria.id;
}); });
const currentConstraints = getTrialCriteriaConstraints(criteriaTypes, data.imageId); const currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes, data.imageId);
if (data.shortestDiameter) { if (data.shortestDiameter) {
// TODO: Make this check criteria again to see if we should display // TODO: Make this check criteria again to see if we should display
@ -81,6 +81,6 @@ export const bidirectional = {
measurementTableOptions: { measurementTableOptions: {
displayFunction: displayFunction displayFunction: displayFunction
}, },
includeInCaseProgress: true, includeInCaseProgress: true,
}, },
} }

View File

@ -0,0 +1,7 @@
import './nonTarget.js';
import './ellipse.js';
import './length.js';
import './measurementTools.js';
import './dataExchange.js';
import './dataValidation.js';
import './configuration.js';

View File

@ -0,0 +1,2 @@
import './base.js';
import './configuration';

View File

@ -0,0 +1,2 @@
import './LesionLocations.js';
import './LocationResponses.js';

View File

@ -0,0 +1,5 @@
import './bidirectionalTool.js';
import './nonTargetTool.js';
import './scaleOverlayTool.js';
import './deleteLesionKeyboardTool.js';
import './qualitativeTargetTools.js';

View File

@ -0,0 +1,22 @@
import './optionsModal/optionsModal.html';
import './optionsModal/optionsModal.styl';
import './optionsModal/optionsModal.js';
import './optionsModal/recistDescription/recistDescription.html';
import './optionsModal/irRCDescription/irRCDescription.html';
import './measurementLocationDialog/measurementLocationDialog.html';
import './measurementLocationDialog/measurementLocationDialog.js';
import './measurementLocationDialog/measurementLocationDialog.styl';
import './nonTargetLesionDialog/nonTargetLesionDialog.html';
import './nonTargetLesionDialog/nonTargetLesionDialog.styl';
import './nonTargetLesionDialog/nonTargetLesionDialog.js';
import './nonTargetResponseDialog/nonTargetResponseDialog.html';
import './nonTargetResponseDialog/nonTargetResponseDialog.styl';
import './nonTargetResponseDialog/nonTargetResponseDialog.js';
import './measureFlow/measureFlow.html';
import './measureFlow/measureFlow.styl';
import './measureFlow/measureFlow.js';

View File

@ -268,7 +268,7 @@ Template.measurementLocationDialog.events({
const instance = Template.instance(); const instance = Template.instance();
const measurementApi = instance.data.measurementApi; const measurementApi = instance.data.measurementApi;
convertToNonTarget(measurementApi, measurementData); OHIF.lesiontracker.convertToNonTarget(measurementApi, measurementData);
closeHandler(dialog); closeHandler(dialog);
}, },

View File

@ -0,0 +1,12 @@
// Client-side collections
import './collections';
// Additional Custom Cornerstone Tools for Lesion Tracker
import './compatibility';
import './tools.js';
// UI Components
import './components';
import './lib';

View File

@ -223,7 +223,7 @@ function validateSingleMeasurement(measurementData) {
}).map(function(criteria) { }).map(function(criteria) {
return criteria.id; return criteria.id;
}); });
var currentConstraints = getTrialCriteriaConstraints(criteriaTypes, measurementData.imageId); var currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes, measurementData.imageId);
// If we have no relevant constraints, stop here // If we have no relevant constraints, stop here
if (!currentConstraints) { if (!currentConstraints) {
@ -275,7 +275,7 @@ function validateGroups() {
}); });
// Criteria for the specific image are retrieved from the general set of criteria. // Criteria for the specific image are retrieved from the general set of criteria.
var currentConstraints = getTrialCriteriaConstraints(criteriaTypes); var currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes);
if (!currentConstraints) { if (!currentConstraints) {
return; return;
} }
@ -320,7 +320,7 @@ function validateAll() {
currentMeasurement._id = measurement._id; currentMeasurement._id = measurement._id;
// Criteria for the specific image are retrieved from the general set of criteria. // Criteria for the specific image are retrieved from the general set of criteria.
var currentConstraints = getTrialCriteriaConstraints(criteriaTypes, currentMeasurement.imageId); var currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes, currentMeasurement.imageId);
if (!currentConstraints) { if (!currentConstraints) {
return; return;
} }

View File

@ -1,7 +1,8 @@
import { Template } from 'meteor/templating';
import { OHIF } from 'meteor/ohif:core'; import { OHIF } from 'meteor/ohif:core';
// Define the Trial Criteria Structure // Define the Trial Criteria Structure
TrialCriteriaConstraints = { OHIF.lesiontracker.TrialCriteriaConstraints = {
RECIST: RECIST, RECIST: RECIST,
irRC: irRC irRC: irRC
}; };
@ -331,41 +332,41 @@ function irRC(image) {
* @param imageId A Cornerstone Image ID * @param imageId A Cornerstone Image ID
* @returns {*} An Object of Trial Criteria that can be used to validate measurements' conformance * @returns {*} An Object of Trial Criteria that can be used to validate measurements' conformance
*/ */
getTrialCriteriaConstraints = function(criteriaTypes, imageId) { OHIF.lesiontracker.getTrialCriteriaConstraints = (criteriaTypes, imageId) => {
// TODO: update this when we allow multiple criteria // TODO: update this when we allow multiple criteria
var allCriteria = []; const allCriteria = [];
criteriaTypes.forEach(function(criteriaType) { criteriaTypes.forEach(function(criteriaType) {
if (!TrialCriteriaConstraints[criteriaType]) { if (!OHIF.lesiontracker.TrialCriteriaConstraints[criteriaType]) {
throw 'No such Trial Criteria defined: ' + criteriaType; throw 'No such Trial Criteria defined: ' + criteriaType;
} }
// If no imageId was specified, skip customization of the criteria // If no imageId was specified, skip customization of the criteria
// and return the requested criteria right away // and return the requested criteria right away
var criteria; let criteria;
if (!imageId) { if (!imageId) {
criteria = TrialCriteriaConstraints[criteriaType](); criteria = OHIF.lesiontracker.TrialCriteriaConstraints[criteriaType]();
allCriteria.push(criteria); allCriteria.push(criteria);
return; return;
} }
// Otherwise, retrieve the series metaData to identify the modality of the image // Otherwise, retrieve the series metaData to identify the modality of the image
var seriesMetaData = cornerstoneTools.metaData.get('series', imageId); const seriesMetaData = cornerstoneTools.metaData.get('series', imageId);
if (!seriesMetaData) { if (!seriesMetaData) {
return; return;
} }
// TODO: Get the rest of the metaData that has already been loaded by Cornerstone // TODO: Get the rest of the metaData that has already been loaded by Cornerstone
var image = {}; const image = {};
// If we are looking at an MR or CT image, we should pass the slice thickness // If we are looking at an MR or CT image, we should pass the slice thickness
// to the Trial Criteria functions so that they can customize the validation rules // to the Trial Criteria functions so that they can customize the validation rules
if (seriesMetaData.modality === 'MR' || seriesMetaData.modality === 'CT') { if (seriesMetaData.modality === 'MR' || seriesMetaData.modality === 'CT') {
var instanceMetaData = cornerstoneTools.metaData.get('instance', imageId); const instanceMetaData = cornerstoneTools.metaData.get('instance', imageId);
image.acquisitionSliceThickness = instanceMetaData.sliceThickness; image.acquisitionSliceThickness = instanceMetaData.sliceThickness;
} }
// Retrieve the study metaData in order to find the timepoint type // Retrieve the study metaData in order to find the timepoint type
var studyMetaData = cornerstoneTools.metaData.get('study', imageId); const studyMetaData = cornerstoneTools.metaData.get('study', imageId);
if (!studyMetaData) { if (!studyMetaData) {
return; return;
} }
@ -383,10 +384,10 @@ getTrialCriteriaConstraints = function(criteriaTypes, imageId) {
} }
// Retrieve the Timepoint's type (e.g. 'baseline' or 'followup') // Retrieve the Timepoint's type (e.g. 'baseline' or 'followup')
var timepointType = timepoint.timepointType; const timepointType = timepoint.timepointType;
// Obtain the customized trial criteria given the image metaData // Obtain the customized trial criteria given the image metaData
criteria = TrialCriteriaConstraints[criteriaType](image); criteria = OHIF.lesiontracker.TrialCriteriaConstraints[criteriaType](image);
// Return the relevant criteria given the current timepoint type // Return the relevant criteria given the current timepoint type
allCriteria.push(criteria[timepointType]); allCriteria.push(criteria[timepointType]);

View File

@ -1,38 +1,21 @@
import { OHIF } from 'meteor/ohif:core'; import { OHIF } from 'meteor/ohif:core';
clearMeasurementTimepointData = function(measurementId, timepointId) { const removeToolDataWithMeasurementId = (imageId, toolType, measurementId) => {
var data = Measurements.findOne(measurementId);
// Clear the Measurement data for this timepoint
var imageId = data.timepoints[timepointId].imageId;
var toolType = data.toolType;
removeToolDataWithMeasurementId(imageId, toolType, measurementId);
// Update any viewports that are currently displaying this imageId
var enabledElements = cornerstone.getEnabledElementsByImageId(imageId);
enabledElements.forEach(function(enabledElement) {
cornerstone.updateImage(enabledElement.element);
});
};
function removeToolDataWithMeasurementId(imageId, toolType, measurementId) {
OHIF.log.info('removeToolDataWithMeasurementId'); OHIF.log.info('removeToolDataWithMeasurementId');
var toolState = cornerstoneTools.globalImageIdSpecificToolStateManager.toolState; const toolState = cornerstoneTools.globalImageIdSpecificToolStateManager.toolState;
// Find any related toolData // Find any related toolData
if (!toolState[imageId] || !toolState[imageId][toolType]) { if (!toolState[imageId] || !toolState[imageId][toolType]) {
return; return;
} }
var toolData = toolState[imageId][toolType].data; const toolData = toolState[imageId][toolType].data;
if (!toolData.length) { if (!toolData.length) {
return; return;
} }
// Search toolData for entries linked to the specified Measurement // Search toolData for entries linked to the specified Measurement
var toRemove = []; const toRemove = [];
toolData.forEach(function(measurement, index) { toolData.forEach(function(measurement, index) {
if (measurement.id === measurementId || if (measurement.id === measurementId ||
measurement._id === measurementId) { measurement._id === measurementId) {
@ -50,3 +33,16 @@ function removeToolDataWithMeasurementId(imageId, toolType, measurementId) {
toolData.splice(index, 1); toolData.splice(index, 1);
}); });
}; };
OHIF.lesiontracker.clearMeasurementTimepointData = (measurementId, timepointId) => {
const data = Measurements.findOne(measurementId);
// Clear the Measurement data for this timepoint
const imageId = data.timepoints[timepointId].imageId;
const toolType = data.toolType;
removeToolDataWithMeasurementId(imageId, toolType, measurementId);
// Update any viewports that are currently displaying this imageId
const enabledElements = cornerstone.getEnabledElementsByImageId(imageId);
enabledElements.forEach(enabledElement => cornerstone.updateImage(enabledElement.element));
};

View File

@ -67,6 +67,6 @@ convertNonTarget = function(measurementApi, measurementData, newTooltype) {
if (measurement) { if (measurement) {
// Remove the timepointData from this Measurement and update it // Remove the timepointData from this Measurement and update it
// in the database, if it is already in the database // in the database, if it is already in the database
clearMeasurementTimepointData(measurement._id, measurementData.timepointId); OHIF.lesiontracker.clearMeasurementTimepointData(measurement._id, measurementData.timepointId);
} }
}; };

View File

@ -1,17 +1,19 @@
convertToNonTarget = function(measurementApi, measurementData) { import { OHIF } from 'meteor/ohif:core';
OHIF.lesiontracker.convertToNonTarget = (measurementApi, measurementData) => {
if (measurementData.isTarget === false) { if (measurementData.isTarget === false) {
return; return;
} }
var measurement = Measurements.findOne(measurementData.id); const measurement = Measurements.findOne(measurementData.id);
var timepoint = Timepoints.findOne({ const timepoint = Timepoints.findOne({
timepointId: measurementData.timepointId timepointId: measurementData.timepointId
}); });
// Next, update the measurementData and add it to the new tool type // Next, update the measurementData and add it to the new tool type
var toolType = 'nonTarget'; const toolType = 'nonTarget';
var newMeasurement = { const newMeasurement = {
id: 'notready', id: 'notready',
lesionNumber: LesionManager.getNewLesionNumber(measurementData.timepointId, false), lesionNumber: LesionManager.getNewLesionNumber(measurementData.timepointId, false),
visible: true, visible: true,
@ -23,7 +25,7 @@ convertToNonTarget = function(measurementApi, measurementData) {
isTarget: false, isTarget: false,
toolType: toolType toolType: toolType
}; };
if (timepoint && timepoint.timepointType === 'baseline') { if (timepoint && timepoint.timepointType === 'baseline') {
newMeasurement.response = 'Present'; newMeasurement.response = 'Present';
} else { } else {
@ -79,6 +81,6 @@ convertToNonTarget = function(measurementApi, measurementData) {
if (measurement) { if (measurement) {
// Remove the timepointData from this Measurement and update it // Remove the timepointData from this Measurement and update it
// in the database, if it is already in the database // in the database, if it is already in the database
clearMeasurementTimepointData(measurement._id, measurementData.timepointId); OHIF.lesiontracker.clearMeasurementTimepointData(measurement._id, measurementData.timepointId);
} }
}; };

View File

@ -0,0 +1,12 @@
// StudyList-related functions
import './studylist/openNewTabWithTimepoint.js';
import './studylist/studylistModification.js';
// Library functions
import './TrialCriteriaConstraints.js';
import './MeasurementValidation.js';
import './pixelSpacingAutorunCheck.js';
import './toggleLesionTrackerTools.js';
import './clearMeasurementTimepointData.js';
import './convertToNonTarget.js';
import './convertNonTarget.js';

View File

@ -1,24 +1,26 @@
import { Session } from 'meteor/session';
import { OHIF } from 'meteor/ohif:core'; import { OHIF } from 'meteor/ohif:core';
pixelSpacingAutorunCheck = function() { OHIF.lesiontracker.pixelSpacingAutorunCheck = () => {
OHIF.log.info('lesionTool button change autorun'); OHIF.log.info('lesionTool button change autorun');
// Get oncology tools // Get oncology tools
var oncologyTools = $('button#lesion, button#nonTarget'); const $oncologyTools = $('button#lesion, button#nonTarget');
// TODO: Set activeViewport for empty viewport element // TODO: Set activeViewport for empty viewport element
var activeViewportIndex = Session.get('activeViewport'); const activeViewportIndex = Session.get('activeViewport');
if (activeViewportIndex === undefined) { if (activeViewportIndex === undefined) {
return; return;
} }
var element = $('.imageViewerViewport').get(activeViewportIndex); const element = $('.imageViewerViewport').get(activeViewportIndex);
if (!element) { if (!element) {
return; return;
} }
let enabledElement;
try { try {
var enabledElement = cornerstone.getEnabledElement(element); enabledElement = cornerstone.getEnabledElement(element);
} catch(error) { } catch(error) {
return; return;
} }
@ -29,10 +31,10 @@ pixelSpacingAutorunCheck = function() {
!enabledElement.image.rowPixelSpacing || !enabledElement.image.rowPixelSpacing ||
!enabledElement.image.columnPixelSpacing) { !enabledElement.image.columnPixelSpacing) {
// Disable Lesion Buttons // Disable Lesion Buttons
oncologyTools.prop('disabled', true); $oncologyTools.prop('disabled', true);
} else { } else {
// Enable Lesion Buttons // Enable Lesion Buttons
oncologyTools.prop('disabled', false); $oncologyTools.prop('disabled', false);
} }
}; };

View File

@ -7,7 +7,7 @@ import { OHIF } from 'meteor/ohif:core';
* @param timepointId The UID of the Timepoint to be opened * @param timepointId The UID of the Timepoint to be opened
* @param title The title to be used for the tab heading * @param title The title to be used for the tab heading
*/ */
openNewTabWithTimepoint = function(timepointId, title) { OHIF.lesiontracker.openNewTabWithTimepoint = (timepointId, title) => {
const contentId = 'viewerTab'; const contentId = 'viewerTab';
const Timepoints = StudyList.timepointApi.timepoints; const Timepoints = StudyList.timepointApi.timepoints;

View File

@ -28,7 +28,7 @@ function dblClickOnStudy(data) {
if (timepoint) { if (timepoint) {
// Add the Timepoint name to the Patient name to create the tab title // Add the Timepoint name to the Patient name to create the tab title
title += ' ' + timepointApi.name(timepoint); title += ' ' + timepointApi.name(timepoint);
openNewTabWithTimepoint(timepoint.timepointId, title); OHIF.lesiontracker.openNewTabWithTimepoint(timepoint.timepointId, title);
} else { } else {
open(data.studyInstanceUid, title); open(data.studyInstanceUid, title);
} }

View File

@ -1,20 +1,22 @@
import { OHIF } from 'meteor/ohif:core';
/** /**
* Show / hide lesion tracker tools * Show / hide lesion tracker tools
*/ */
var previousStates; let previousStates;
var previousActiveTool; let previousActiveTool;
var toolsShown = true; let toolsShown = true;
toggleLesionTrackerTools = function() { OHIF.lesiontracker.toggleLesionTrackerTools = () => {
if (toolsShown === true) { if (toolsShown === true) {
// Save the current settings for later // Save the current settings for later
previousStates = toolManager.getToolDefaultStates(); previousStates = toolManager.getToolDefaultStates();
previousActiveTool = toolManager.getActiveTool(); previousActiveTool = toolManager.getActiveTool();
// Hide the tools (set them all to disabled) // Hide the tools (set them all to disabled)
var toolDefaultStates = { const toolDefaultStates = {
activate: [ 'deleteLesionKeyboardTool' ], activate: [ 'deleteLesionKeyboardTool' ],
deactivate: [], deactivate: [],
enable: [], enable: [],

View File

@ -25,89 +25,15 @@ Package.onUse(function(api) {
api.use('ohif:cornerstone'); api.use('ohif:cornerstone');
api.use('ohif:measurements'); api.use('ohif:measurements');
api.addFiles('both/configuration/bidirectional.js', [ 'client', 'server' ]); api.addFiles('both/index.js', [ 'client', 'server' ]);
api.addFiles('both/configuration/nonTarget.js', [ 'client', 'server' ]);
api.addFiles('both/configuration/ellipse.js', [ 'client', 'server' ]);
api.addFiles('both/configuration/length.js', [ 'client', 'server' ]);
api.addFiles('both/configuration/measurementTools.js', [ 'client', 'server' ]);
api.addFiles('both/configuration/dataExchange.js', [ 'client', 'server' ]); api.addFiles('server/index.js', 'server');
api.addFiles('both/configuration/dataValidation.js', [ 'client', 'server' ]);
api.addFiles('both/configuration/configuration.js', [ 'client', 'server' ]);
api.addFiles('client/index.js', 'client');
api.addFiles('server/methods.js', 'server');
// Client-side collections
api.addFiles('client/collections/LesionLocations.js', 'client');
api.addFiles('client/collections/LocationResponses.js', 'client');
// Additional Custom Cornerstone Tools for Lesion Tracker
api.addFiles([
'client/compatibility/bidirectionalTool.js',
'client/compatibility/nonTargetTool.js',
'client/compatibility/scaleOverlayTool.js',
'client/compatibility/deleteLesionKeyboardTool.js',
'client/compatibility/qualitativeTargetTools.js'
], 'client', {
bare: true
});
api.addFiles('client/tools.js', 'client');
// UI Components
api.addFiles('client/components/optionsModal/optionsModal.html', 'client');
api.addFiles('client/components/optionsModal/optionsModal.styl', 'client');
api.addFiles('client/components/optionsModal/optionsModal.js', 'client');
api.addFiles('client/components/optionsModal/recistDescription/recistDescription.html', 'client');
api.addFiles('client/components/optionsModal/irRCDescription/irRCDescription.html', 'client');
api.addFiles('client/components/measurementLocationDialog/measurementLocationDialog.html', 'client');
api.addFiles('client/components/measurementLocationDialog/measurementLocationDialog.js', 'client');
api.addFiles('client/components/measurementLocationDialog/measurementLocationDialog.styl', 'client');
api.addFiles('client/components/nonTargetLesionDialog/nonTargetLesionDialog.html', 'client');
api.addFiles('client/components/nonTargetLesionDialog/nonTargetLesionDialog.styl', 'client');
api.addFiles('client/components/nonTargetLesionDialog/nonTargetLesionDialog.js', 'client');
api.addFiles('client/components/nonTargetResponseDialog/nonTargetResponseDialog.html', 'client');
api.addFiles('client/components/nonTargetResponseDialog/nonTargetResponseDialog.styl', 'client');
api.addFiles('client/components/nonTargetResponseDialog/nonTargetResponseDialog.js', 'client');
api.addFiles('client/components/measureFlow/measureFlow.html', 'client');
api.addFiles('client/components/measureFlow/measureFlow.styl', 'client');
api.addFiles('client/components/measureFlow/measureFlow.js', 'client');
// StudyList-related functions
api.addFiles('lib/studylist/openNewTabWithTimepoint.js', 'client');
api.addFiles('lib/studylist/studylistModification.js', 'client');
// Library functions
api.addFiles('lib/TrialCriteriaConstraints.js', 'client');
api.addFiles('lib/MeasurementValidation.js', 'client');
api.addFiles('lib/pixelSpacingAutorunCheck.js', 'client');
api.addFiles('lib/toggleLesionTrackerTools.js', 'client');
api.addFiles('lib/clearMeasurementTimepointData.js', 'client');
api.addFiles('lib/convertToNonTarget.js', 'client');
api.addFiles('lib/convertNonTarget.js', 'client');
// Export global functions // Export global functions
api.export('pixelSpacingAutorunCheck', 'client');
api.export('syncImageMeasurementAndToolData', 'client');
api.export('openNewTabWithTimepoint', 'client');
api.export('toggleLesionTrackerTools', 'client');
api.export('clearMeasurementTimepointData', 'client');
api.export('getTrialCriteriaConstraints', 'client');
api.export('convertToNonTarget', 'client');
api.export('convertNonTarget', 'client'); api.export('convertNonTarget', 'client');
// Export global objects
api.export('MeasurementValidation', 'client');
api.export('TrialCriteriaConstraints', 'client');
// Export client-side collections // Export client-side collections
api.export('ValidationErrors', 'client'); api.export('ValidationErrors', 'client');
api.export('LesionLocations', 'client'); api.export('LesionLocations', 'client');
@ -116,9 +42,5 @@ Package.onUse(function(api) {
// Export collections spanning both client and server // Export collections spanning both client and server
api.export('AdditionalFindings', [ 'client', 'server' ]); api.export('AdditionalFindings', [ 'client', 'server' ]);
// Export utility classes
api.export('FormUtils', 'client');
api.export('Configuration', ['client', 'server']); api.export('Configuration', ['client', 'server']);
}); });

View File

@ -0,0 +1 @@
import './methods.js';

View File

@ -29,7 +29,7 @@ Template.measurementTableHeaderRow.onCreated(() => {
return criteria.id; return criteria.id;
}); });
const currentConstraints = getTrialCriteriaConstraints(criteriaTypes); const currentConstraints = OHIF.lesiontracker.getTrialCriteriaConstraints(criteriaTypes);
if (!currentConstraints) { if (!currentConstraints) {
return; return;
} }

View File

@ -44,7 +44,7 @@ function doneCallback(measurementData, deleteTool) {
// the specified Timepoint Cell // the specified Timepoint Cell
if (deleteTool === true) { if (deleteTool === true) {
OHIF.log.info('Confirm clicked!'); OHIF.log.info('Confirm clicked!');
clearMeasurementTimepointData(measurementData.id, measurementData.timepointId); OHIF.lesiontracker.clearMeasurementTimepointData(measurementData.id, measurementData.timepointId);
} }
} }
@ -80,7 +80,7 @@ Template.measurementTableTimepointCell.events({
if (currentMeasurement.isTarget) { if (currentMeasurement.isTarget) {
showConfirmDialog(function() { showConfirmDialog(function() {
clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID); OHIF.lesiontracker.clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID);
}); });
} else { } else {
changeNonTargetResponse(measurementData, null, doneCallback); changeNonTargetResponse(measurementData, null, doneCallback);
@ -94,7 +94,7 @@ Template.measurementTableTimepointCell.events({
const currentTimepointID = this.timepointId; const currentTimepointID = this.timepointId;
showConfirmDialog(function() { showConfirmDialog(function() {
clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID); OHIF.lesiontracker.clearMeasurementTimepointData(currentMeasurement._id, currentTimepointID);
}); });
} }
} }