Files
ohif-viewer/Packages/ohif-measurements/client/lib/isNewLesionsMeasurement.js
T

38 lines
1.7 KiB
JavaScript

import { OHIF } from 'meteor/ohif:core';
import { _ } from 'meteor/underscore';
/**
* Check if the given measurement is a new lesion
*
* @param measurementData Measurement that will be checked
* @returns {Boolean} Boolean value telling if the given measurement is a new lesion or not
*/
OHIF.measurements.isNewLesionsMeasurement = measurementData => {
if (!measurementData) return;
const toolConfig = OHIF.measurements.getToolConfiguration(measurementData.toolType);
const toolType = toolConfig.tool.parentTool || measurementData.toolType;
const { timepointApi, measurementApi } = OHIF.viewer;
const currentMeasurement = measurementApi.tools[toolType].findOne(measurementData._id);
const { timepointId, measurementNumber } = currentMeasurement;
// Stop here if the needed information is not set
if (!measurementApi || !timepointApi || !timepointId || !toolConfig) return;
const { toolGroupId } = toolConfig;
const current = timepointApi.timepoints.findOne({ timepointId });
const baseline = timepointApi.baseline();
// Stop here if there's no current or baseline timepoints, or if the current is the baseline
if (!current || !baseline || current.timepointType === 'baseline') return false;
// Retrieve all the data for the given tool group (e.g. 'targets')
const atBaseline = measurementApi.fetch(toolGroupId, { timepointId: baseline.timepointId });
// Obtain a list of the Measurement Numbers from the measurements which have baseline data
const numbers = atBaseline.map(m => m.measurementNumber);
// Return true if the measurement number from follow-up is not present at baseline
return !_.contains(numbers, measurementNumber);
};