Build WADO logic to fetch + build displaysets + generate imageIds based on prefs.
This commit is contained in:
1 parent
d5c83bf596
commit
289d3f5703
6 files changed
+164
-15
No files matched your search
@@ -0,0 +1,51 @@
|
||||
import getWADORSImageId from './getWADORSImageId';
|
||||
|
||||
function buildInstanceWadoUrl(config, instance) {
|
||||
const { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID } = instance;
|
||||
const params = [];
|
||||
|
||||
params.push('requestType=WADO');
|
||||
params.push(`studyUID=${StudyInstanceUID}`);
|
||||
params.push(`seriesUID=${SeriesInstanceUID}`);
|
||||
params.push(`objectUID=${SOPInstanceUID}`);
|
||||
params.push('contentType=application/dicom');
|
||||
params.push('transferSyntax=*');
|
||||
|
||||
const paramString = params.join('&');
|
||||
|
||||
return `${config.wadoUriRoot}?${paramString}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 default function getImageId({
|
||||
instance,
|
||||
frame,
|
||||
config,
|
||||
thumbnail = false,
|
||||
}) {
|
||||
if (!instance) {
|
||||
return;
|
||||
}
|
||||
|
||||
const renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';
|
||||
|
||||
if (!config[renderingAttr] || config[renderingAttr] === 'wadouri') {
|
||||
const wadouri = buildInstanceWadoUrl(config, instance);
|
||||
|
||||
let imageId = 'dicomweb:' + wadouri;
|
||||
if (frame !== undefined) {
|
||||
imageId += '&frame=' + frame;
|
||||
}
|
||||
|
||||
return imageId;
|
||||
} else {
|
||||
return getWADORSImageId(instance, config, frame); // WADO-RS Retrieve Frame
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
function buildInstanceWadoRsUri(instance, config) {
|
||||
const { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID } = instance;
|
||||
return `${config.wadoRoot}/studies/${StudyInstanceUID}/series/${SeriesInstanceUID}/instances/${SOPInstanceUID}`;
|
||||
}
|
||||
|
||||
function buildInstanceFrameWadoRsUri(instance, config, frame) {
|
||||
const baseWadoRsUri = buildInstanceWadoRsUri(instance, config);
|
||||
|
||||
frame = frame != null || 1;
|
||||
|
||||
return `${baseWadoRsUri}/frames/${frame}`;
|
||||
}
|
||||
|
||||
// function getWADORSImageUrl(instance, frame) {
|
||||
// const wadorsuri = buildInstanceFrameWadoRsUri(instance, config, frame);
|
||||
|
||||
// if (!wadorsuri) {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // Use null to obtain an imageId which represents the instance
|
||||
// if (frame === null) {
|
||||
// wadorsuri = wadorsuri.replace(/frames\/(\d+)/, '');
|
||||
// } else {
|
||||
// // We need to sum 1 because WADO-RS frame number is 1-based
|
||||
// frame = frame ? parseInt(frame) + 1 : 1;
|
||||
|
||||
// // Replaces /frame/1 by /frame/{frame}
|
||||
// wadorsuri = wadorsuri.replace(/frames\/(\d+)/, `frames/${frame}`);
|
||||
// }
|
||||
|
||||
// return wadorsuri;
|
||||
// }
|
||||
|
||||
/**
|
||||
* Obtain an imageId for Cornerstone based on the WADO-RS scheme
|
||||
*
|
||||
* @param {object} instanceMetada metadata object (InstanceMetadata)
|
||||
* @param {(string\|number)} [frame] the frame number
|
||||
* @returns {string} The imageId to be used by Cornerstone
|
||||
*/
|
||||
export default function getWADORSImageId(instance, config, frame) {
|
||||
//const uri = getWADORSImageUrl(instance, frame);
|
||||
const uri = buildInstanceFrameWadoRsUri(instance, config, frame);
|
||||
|
||||
if (!uri) {
|
||||
return;
|
||||
}
|
||||
|
||||
return `wadors:${uri}`;
|
||||
}
|
||||
Reference in new issue
Block a user