ohif-viewer/Packages/ohif-measurements/client/lib/exportPdf.js

70 lines
2.5 KiB
JavaScript
Raw Normal View History

import { OHIF } from 'meteor/ohif:core';
import { MeasurementReport } from 'meteor/ohif:measurements/client/reports/measurement';
OHIF.measurements.exportPdf = (measurementApi, timepointApi) => {
const currentTimepoint = timepointApi.current();
const { timepointId } = currentTimepoint;
const study = OHIF.viewer.Studies.findBy({
studyInstanceUid: currentTimepoint.studyInstanceUids[0]
});
const report = new MeasurementReport({
header: {
trial: 'RECIST 1.1',
patientName: OHIF.viewerbase.helpers.formatPN(study.patientName),
mrn: study.patientId,
timepoint: timepointApi.name(currentTimepoint)
}
});
const printMeasurement = (measurement, callback) => {
OHIF.measurements.getImageDataUrl({ measurement }).then(imageDataUrl => {
const imageId = OHIF.viewerbase.getImageIdForImagePath(measurement.imagePath);
const series = cornerstone.metaData.get('series', imageId);
const instance = cornerstone.metaData.get('instance', imageId);
2017-01-24 04:37:41 +01:00
let info = measurement.response;
if (!info) {
info = measurement.longestDiameter;
if (measurement.shortestDiameter) {
info += ` × ${measurement.shortestDiameter}`;
}
info += ' mm';
}
info += ` (S:${series.seriesNumber}, I:${instance.instanceNumber})`;
let type = measurementApi.toolsGroupsMap[measurement.toolType];
type = type === 'targets' ? 'Target' : 'Non-target';
report.printMeasurement({
type,
number: measurement.measurementNumber,
location: OHIF.measurements.getLocationLabel(measurement.location) || '',
info,
image: imageDataUrl
});
processMeasurements(callback);
});
};
2017-01-24 04:37:41 +01:00
const processMeasurements = callback => {
const current = iterator.next();
if (current.done) {
callback();
return;
}
const measurement = current.value;
printMeasurement(measurement, callback);
};
const targets = measurementApi.fetch('targets', { timepointId });
const nonTargets = measurementApi.fetch('nonTargets', { timepointId });
const measurements = targets.concat(nonTargets);
const iterator = measurements[Symbol.iterator]();
processMeasurements(() => report.save('measurements.pdf'));
2017-01-24 04:37:41 +01:00
};