155 lines
4.4 KiB
JavaScript
155 lines
4.4 KiB
JavaScript
function getElementIfNotEmpty(viewportIndex) {
|
|
// Meteor template helpers run more often than expected
|
|
// They often seem to run just before the whole template is rendered
|
|
// This meant that the onRendered event hadn't fired yet, so the
|
|
// element wasn't enabled / set empty yet. The check here
|
|
// for canvases under the 'enabled' element div is to prevent
|
|
// 'undefined' errors from the helper functions
|
|
|
|
var imageViewerViewports = $('.imageViewerViewport'),
|
|
element = imageViewerViewports.get(viewportIndex),
|
|
canvases = imageViewerViewports.eq(viewportIndex).find('canvas');
|
|
|
|
if (!element || $(element).hasClass("empty") || canvases.length === 0) {
|
|
return;
|
|
}
|
|
|
|
// Check to make sure the element is enabled.
|
|
try {
|
|
var enabledElement = cornerstone.getEnabledElement(element);
|
|
} catch(error) {
|
|
return;
|
|
}
|
|
return element;
|
|
}
|
|
|
|
function getPatient(property) {
|
|
Session.get('CornerstoneNewImage' + this.viewportIndex);
|
|
if (!this.imageId) {
|
|
return false;
|
|
}
|
|
var patient = cornerstoneTools.metaData.get('patient', this.imageId);
|
|
if (!patient) {
|
|
return '';
|
|
}
|
|
return patient[property];
|
|
}
|
|
|
|
function getStudy(property) {
|
|
Session.get('CornerstoneNewImage' + this.viewportIndex);
|
|
if (!this.imageId) {
|
|
return false;
|
|
}
|
|
var study = cornerstoneTools.metaData.get('study', this.imageId);
|
|
if (!study) {
|
|
return '';
|
|
}
|
|
return study[property];
|
|
}
|
|
|
|
function getSeries(property) {
|
|
Session.get('CornerstoneNewImage' + this.viewportIndex);
|
|
if (!this.imageId) {
|
|
return false;
|
|
}
|
|
var series = cornerstoneTools.metaData.get('series', this.imageId);
|
|
if (!series) {
|
|
return '';
|
|
}
|
|
return series[property];
|
|
}
|
|
|
|
function getInstance(property) {
|
|
Session.get('CornerstoneNewImage' + this.viewportIndex);
|
|
if (!this.imageId) {
|
|
return false;
|
|
}
|
|
var instance = cornerstoneTools.metaData.get('instance', this.imageId);
|
|
if (!instance) {
|
|
return '';
|
|
}
|
|
return instance[property];
|
|
}
|
|
|
|
function getImage(viewportIndex) {
|
|
var element = getElementIfNotEmpty(viewportIndex);
|
|
if (!element) {
|
|
return false;
|
|
}
|
|
var enabledElement;
|
|
try {
|
|
enabledElement = cornerstone.getEnabledElement(element);
|
|
} catch(error) {
|
|
return false;
|
|
}
|
|
if (!enabledElement || !enabledElement.image) {
|
|
return false;
|
|
}
|
|
return enabledElement.image;
|
|
}
|
|
|
|
Template.viewportOverlay.helpers({
|
|
wwwc: function() {
|
|
Session.get('CornerstoneImageRendered' + this.viewportIndex);
|
|
var element = getElementIfNotEmpty(this.viewportIndex);
|
|
if (!element) {
|
|
return '';
|
|
}
|
|
var viewport = cornerstone.getViewport(element);
|
|
if (!viewport) {
|
|
return '';
|
|
}
|
|
return 'W ' + viewport.voi.windowWidth.toFixed(0) + ' L ' + viewport.voi.windowCenter.toFixed(0);
|
|
},
|
|
zoom: function() {
|
|
Session.get('CornerstoneImageRendered' + this.viewportIndex);
|
|
var element = getElementIfNotEmpty(this.viewportIndex);
|
|
if (!element) {
|
|
return '';
|
|
}
|
|
var viewport = cornerstone.getViewport(element);
|
|
if (!viewport) {
|
|
return '';
|
|
}
|
|
return (viewport.scale * 100.0);
|
|
},
|
|
imageDimensions: function() {
|
|
Session.get('CornerstoneNewImage' + this.viewportIndex);
|
|
|
|
var image = getImage(this.viewportIndex);
|
|
if (!image) {
|
|
return '';
|
|
}
|
|
return image.width + ' x ' + image.height;
|
|
},
|
|
patientName : function() {
|
|
return getPatient.call(this, 'name');
|
|
},
|
|
patientId : function() {
|
|
return getPatient.call(this, 'id');
|
|
},
|
|
studyDate : function() {
|
|
return getStudy.call(this, 'date');
|
|
},
|
|
studyTime : function() {
|
|
return getStudy.call(this, 'time');
|
|
},
|
|
studyDescription : function() {
|
|
return getStudy.call(this, 'description');
|
|
},
|
|
seriesDescription : function() {
|
|
return getSeries.call(this, 'description');
|
|
},
|
|
seriesNumber : function() {
|
|
return getSeries.call(this, 'number');
|
|
},
|
|
imageNumber : function() {
|
|
return getInstance.call(this, 'number');
|
|
},
|
|
imageIndex : function() {
|
|
return getInstance.call(this, 'index');
|
|
},
|
|
numImages : function() {
|
|
return getSeries.call(this, 'numImages');
|
|
}
|
|
}); |