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 // Override
getImageId(frame) { getImageId(frame, thumbnail) {
// If _imageID is not cached, create it // If _imageID is not cached, create it
if (this._imageId === null) { if (this._imageId === null) {
this._imageId = Viewerbase.getImageId(this.getData(), frame); this._imageId = Viewerbase.getImageId(this.getData(), frame, thumbnail);
} }
return this._imageId; return this._imageId;

View File

@ -48,6 +48,37 @@ function buildUrl(server, studyInstanceUid) {
return server.wadoRoot + '/studies/' + studyInstanceUid + '/metadata'; 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 * Parses the SourceImageSequence, if it exists, in order
* to return a ReferenceSOPInstanceUID. The ReferenceSOPInstanceUID * to return a ReferenceSOPInstanceUID. The ReferenceSOPInstanceUID
@ -174,6 +205,10 @@ function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
var sopInstanceUid = DICOMWeb.getString(instance['00080018']); 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 = { var instanceSummary = {
imageType: DICOMWeb.getString(instance['00080008']), imageType: DICOMWeb.getString(instance['00080008']),
sopClassUid: DICOMWeb.getString(instance['00080016']), sopClassUid: DICOMWeb.getString(instance['00080016']),
@ -217,7 +252,11 @@ function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
lossyImageCompressionMethod: DICOMWeb.getString(instance['00282114']), lossyImageCompressionMethod: DICOMWeb.getString(instance['00282114']),
echoNumber: DICOMWeb.getString(instance['00180086']), echoNumber: DICOMWeb.getString(instance['00180086']),
contrastBolusAgent: DICOMWeb.getString(instance['00180010']), 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 // 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); series.instances.push(instanceSummary);
}); });

View File

@ -24,7 +24,7 @@ Template.imageThumbnail.onCreated(() => {
imageIndex = 0; 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 * Obtain an imageId for Cornerstone from an image instance
* *
* @param instance * @param instance
* @param frame
* #param thumbnail
* @returns {string} The imageId to be used by Cornerstone * @returns {string} The imageId to be used by Cornerstone
*/ */
export function getImageId(instance, frame) { export function getImageId(instance, frame, thumbnail) {
if (!instance) { if (!instance) {
return; return;
} }
@ -16,15 +17,17 @@ export function getImageId(instance, frame) {
return instance.url; return instance.url;
} }
if (instance.wadouri) { const renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';
if (instance[renderingAttr] === 'wadouri') {
var imageId = 'dicomweb:' + instance.wadouri; var imageId = 'dicomweb:' + instance.wadouri;
if (frame !== undefined) { if (frame !== undefined) {
imageId += '&frame=' + frame; imageId += '&frame=' + frame;
} }
return imageId; return imageId;
} else { } else {
// TODO= Check multiframe image support with WADO-RS return getWADORSImageId(instance, frame, thumbnail); // WADO-RS Retrieve Frame
return getWADORSImageId(instance, frame); // 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 // We need to sum 1 because WADO-RS frame number is 1-based
frame = (frame || 0) + 1; frame = (frame || 0) + 1;
@ -61,7 +61,7 @@ formatWADOREImageUrl = function(wadorsuri, frame) {
* @returns {string} The imageId to be used by Cornerstone * @returns {string} The imageId to be used by Cornerstone
*/ */
export function getWADORSImageId(instance, frame) { export function getWADORSImageId(instance, frame) {
const uri = formatWADOREImageUrl(instance.wadorsuri, frame); const uri = formatWADORSImageUrl(instance.wadorsuri, frame);
const imageId = `wadors:${uri}`; const imageId = `wadors:${uri}`;
const imageMetadata = new ImageMetadataBuilder() const imageMetadata = new ImageMetadataBuilder()

View File

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