89 lines
3.1 KiB
JavaScript
89 lines
3.1 KiB
JavaScript
var metaDataLookup = {};
|
|
|
|
addMetaData = function(imageId, data) {
|
|
var instanceMetaData = data.instance;
|
|
var seriesMetaData = data.series;
|
|
var studyMetaData = data.study;
|
|
var imageIndex = data.imageIndex;
|
|
var numImages = data.numImages;
|
|
|
|
var metaData = {};
|
|
|
|
metaData.study = {
|
|
instanceUid: studyMetaData.studyInstanceUid,
|
|
date: studyMetaData.studyDate,
|
|
time: studyMetaData.studyTime,
|
|
description: studyMetaData.studyDescription
|
|
};
|
|
|
|
metaData.series = {
|
|
description: seriesMetaData.seriesDescription,
|
|
number: seriesMetaData.seriesNumber,
|
|
modality: seriesMetaData.modality,
|
|
instanceUid: seriesMetaData.seriesInstanceUid,
|
|
numImages: numImages
|
|
};
|
|
|
|
metaData.instance = {
|
|
wadouri: instanceMetaData.wadouri,
|
|
imageType: instanceMetaData.imageType,
|
|
photometricInterpretation: instanceMetaData.photometricInterpretation,
|
|
sopInstanceUid: instanceMetaData.sopInstanceUid,
|
|
sopClassUid: instanceMetaData.sopClassUid,
|
|
number: instanceMetaData.instanceNumber,
|
|
index: imageIndex
|
|
};
|
|
|
|
metaData.patient = {
|
|
name: studyMetaData.patientName,
|
|
id: studyMetaData.patientId
|
|
};
|
|
|
|
// If there is sufficient information, populate
|
|
// the imagePlane object for easier use in the Viewer
|
|
if (instanceMetaData.frameOfReferenceUID &&
|
|
instanceMetaData.imageOrientationPatient &&
|
|
instanceMetaData.imagePositionPatient) {
|
|
|
|
var imageOrientation = instanceMetaData.imageOrientationPatient.split('\\');
|
|
var imagePosition = instanceMetaData.imagePositionPatient.split('\\');
|
|
|
|
var columnPixelSpacing = 1.0;
|
|
var rowPixelSpacing = 1.0;
|
|
if (instanceMetaData.pixelSpacing) {
|
|
var split = instanceMetaData.pixelSpacing.split('\\');
|
|
rowPixelSpacing = parseFloat(split[0]);
|
|
columnPixelSpacing = parseFloat(split[1]);
|
|
}
|
|
|
|
metaData.imagePlane = {
|
|
frameOfReferenceUID: instanceMetaData.frameOfReferenceUID,
|
|
rows: instanceMetaData.rows,
|
|
columns: instanceMetaData.columns,
|
|
rowCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[0]), parseFloat(imageOrientation[1]), parseFloat(imageOrientation[2])),
|
|
columnCosines: new cornerstoneMath.Vector3(parseFloat(imageOrientation[3]), parseFloat(imageOrientation[4]), parseFloat(imageOrientation[5])),
|
|
imagePositionPatient: new cornerstoneMath.Vector3(parseFloat(imagePosition[0]), parseFloat(imagePosition[1]), parseFloat(imagePosition[2])),
|
|
rowPixelSpacing: rowPixelSpacing,
|
|
columnPixelSpacing: columnPixelSpacing,
|
|
};
|
|
}
|
|
|
|
// Add the metaData to the imageId lookup object
|
|
metaDataLookup[imageId] = metaData;
|
|
};
|
|
|
|
function provider(type, imageId) {
|
|
var imageMetaData = metaDataLookup[imageId];
|
|
if (!imageMetaData) {
|
|
return;
|
|
}
|
|
|
|
if (imageMetaData.hasOwnProperty(type)) {
|
|
return imageMetaData[type];
|
|
}
|
|
}
|
|
|
|
Meteor.startup(function() {
|
|
cornerstoneTools.metaData.addProvider(provider);
|
|
});
|