OHIF-33: Adding thumbnailRendering config

This commit is contained in:
Leonardo Campos 2017-01-19 21:42:03 -02:00
parent fe6a1a9884
commit 1798a87d3f
6 changed files with 54 additions and 17 deletions

View File

@ -88,10 +88,10 @@ export class OHIFInstanceMetadata extends InstanceMetadata {
}
// Override
getImageId(frame) {
getImageId(frame, thumbnail) {
// If _imageID is not cached, create it
if (this._imageId === null) {
this._imageId = Viewerbase.getImageId(this.getData(), frame);
this._imageId = Viewerbase.getImageId(this.getData(), frame, thumbnail);
}
return this._imageId;

View File

@ -48,6 +48,37 @@ function buildUrl(server, studyInstanceUid) {
return server.wadoRoot + '/studies/' + studyInstanceUid + '/metadata';
}
/** Returns a WADO url for an instance
*
* @param studyInstanceUid
* @param seriesInstanceUid
* @param sopInstanceUid
* @returns {string}
*/
function buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {
const params = [];
params.push('requestType=WADO');
params.push(`studyUID=${studyInstanceUid}`);
params.push(`seriesUID=${seriesInstanceUid}`);
params.push(`objectUID=${sopInstanceUid}`);
params.push('contentType=application%2Fdicom');
params.push('transferSyntax=*');
return `${server.wadoUriRoot}?${params.join('&')}`;
}
function buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid) {
return `${server.wadoRoot}/studies/${studyInstanceUid}/series/${seriesInstanceUid}/instances/${sopInstanceUid}`
}
function buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid, frame) {
const baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);
frame = frame != null || 1;
return `${baseWadoRsUri}/frames/${frame}`
}
/**
* Parses the SourceImageSequence, if it exists, in order
* to return a ReferenceSOPInstanceUID. The ReferenceSOPInstanceUID
@ -174,6 +205,10 @@ function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
var sopInstanceUid = DICOMWeb.getString(instance['00080018']);
const wadouri = buildInstanceWadoUrl(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);
const baseWadoRsUri = buildInstanceWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);
const wadorsuri = buildInstanceFrameWadoRsUri(server, studyInstanceUid, seriesInstanceUid, sopInstanceUid);
var instanceSummary = {
imageType: DICOMWeb.getString(instance['00080008']),
sopClassUid: DICOMWeb.getString(instance['00080016']),
@ -217,7 +252,11 @@ function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
lossyImageCompressionMethod: DICOMWeb.getString(instance['00282114']),
echoNumber: DICOMWeb.getString(instance['00180086']),
contrastBolusAgent: DICOMWeb.getString(instance['00180010']),
baseWadoRsUri: server.wadoRoot + '/studies/' + studyInstanceUid + '/series/' + seriesInstanceUid + '/instances/' + sopInstanceUid
baseWadoRsUri: baseWadoRsUri,
wadouri: WADOProxy.convertURL(wadouri, server.requestOptions),
wadorsuri: WADOProxy.convertURL(wadorsuri),
imageRendering: server.imageRendering,
thumbnailRendering: server.thumbnailRendering,
};
// Get additional information if the instance uses "PALETTE COLOR" photometric interpretation
@ -236,12 +275,6 @@ function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
}
}
if (server.imageRendering === 'wadouri') {
instanceSummary.wadouri = WADOProxy.convertURL(server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + '&contentType=application%2Fdicom&transferSyntax=*', server.requestOptions);
} else {
instanceSummary.wadorsuri = WADOProxy.convertURL(server.wadoRoot + '/studies/' + studyInstanceUid + '/series/' + seriesInstanceUid + '/instances/' + sopInstanceUid + '/frames/1');
}
series.instances.push(instanceSummary);
});

View File

@ -24,7 +24,7 @@ Template.imageThumbnail.onCreated(() => {
imageIndex = 0;
}
return imageInstance.getImageId();
return imageInstance.getImageId(imageIndex, true);
};
});

View File

@ -4,10 +4,11 @@ import { getWADORSImageId } from './getWADORSImageId';
* Obtain an imageId for Cornerstone from an image instance
*
* @param instance
* @param frame
* #param thumbnail
* @returns {string} The imageId to be used by Cornerstone
*/
export function getImageId(instance, frame) {
export function getImageId(instance, frame, thumbnail) {
if (!instance) {
return;
}
@ -16,15 +17,17 @@ export function getImageId(instance, frame) {
return instance.url;
}
if (instance.wadouri) {
const renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';
if (instance[renderingAttr] === 'wadouri') {
var imageId = 'dicomweb:' + instance.wadouri;
if (frame !== undefined) {
imageId += '&frame=' + frame;
}
return imageId;
} else {
// TODO= Check multiframe image support with WADO-RS
return getWADORSImageId(instance, frame); // WADO-RS Retrieve Frame
return getWADORSImageId(instance, frame, thumbnail); // WADO-RS Retrieve Frame
}
}

View File

@ -42,7 +42,7 @@ class ImageMetadataBuilder {
}
}
formatWADOREImageUrl = function(wadorsuri, frame) {
formatWADORSImageUrl = function(wadorsuri, frame) {
// We need to sum 1 because WADO-RS frame number is 1-based
frame = (frame || 0) + 1;
@ -61,7 +61,7 @@ formatWADOREImageUrl = function(wadorsuri, frame) {
* @returns {string} The imageId to be used by Cornerstone
*/
export function getWADORSImageId(instance, frame) {
const uri = formatWADOREImageUrl(instance.wadorsuri, frame);
const uri = formatWADORSImageUrl(instance.wadorsuri, frame);
const imageId = `wadors:${uri}`;
const imageMetadata = new ImageMetadataBuilder()

View File

@ -8,6 +8,7 @@
"wadoRoot": "http://localhost:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
"qidoSupportsIncludeField": false,
"imageRendering": "wadors",
"thumbnailRendering": "wadors",
"requestOptions": {
"auth": "admin:admin",
"logRequests": true,