2017-01-16 18:30:54 +01:00
|
|
|
import { getWADORSImageId } from './getWADORSImageId';
|
2017-01-10 19:09:43 +01:00
|
|
|
|
2017-05-23 22:20:23 +02:00
|
|
|
// https://stackoverflow.com/a/6021027/3895126
|
|
|
|
|
function updateQueryStringParameter(uri, key, value) {
|
2017-07-20 22:37:57 +02:00
|
|
|
const regex = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');
|
|
|
|
|
const separator = uri.indexOf('?') !== -1 ? '&' : '?';
|
|
|
|
|
if (uri.match(regex)) {
|
|
|
|
|
return uri.replace(regex, '$1' + key + '=' + value + '$2');
|
|
|
|
|
} else {
|
|
|
|
|
return uri + separator + key + '=' + value;
|
2017-05-23 22:20:23 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-11-16 17:49:35 +01:00
|
|
|
/**
|
|
|
|
|
* Obtain an imageId for Cornerstone from an image instance
|
|
|
|
|
*
|
|
|
|
|
* @param instance
|
2017-01-20 00:42:03 +01:00
|
|
|
* @param frame
|
2017-10-27 11:30:25 +02:00
|
|
|
* @param thumbnail
|
2015-11-16 17:49:35 +01:00
|
|
|
* @returns {string} The imageId to be used by Cornerstone
|
|
|
|
|
*/
|
2017-10-27 11:30:25 +02:00
|
|
|
export function getImageId(instance, frame, thumbnail=false) {
|
2015-10-13 14:14:50 +02:00
|
|
|
if (!instance) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2015-11-26 10:36:34 +01:00
|
|
|
|
2017-07-20 22:37:57 +02:00
|
|
|
if (typeof instance.getImageId === 'function') {
|
|
|
|
|
return instance.getImageId();
|
|
|
|
|
}
|
|
|
|
|
|
2016-04-14 19:30:18 +02:00
|
|
|
if (instance.url) {
|
2017-05-23 22:20:23 +02:00
|
|
|
if (frame !== undefined) {
|
|
|
|
|
instance.url = updateQueryStringParameter(instance.url, 'frame', frame);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return instance.url;
|
2016-04-14 19:30:18 +02:00
|
|
|
}
|
|
|
|
|
|
2017-01-20 00:42:03 +01:00
|
|
|
const renderingAttr = thumbnail ? 'thumbnailRendering' : 'imageRendering';
|
|
|
|
|
|
2017-02-21 04:09:45 +01:00
|
|
|
if (!instance[renderingAttr] || instance[renderingAttr] === 'wadouri' || !instance.wadorsuri) {
|
2017-07-20 22:37:57 +02:00
|
|
|
let imageId = 'dicomweb:' + instance.wadouri;
|
2015-11-26 10:36:34 +01:00
|
|
|
if (frame !== undefined) {
|
|
|
|
|
imageId += '&frame=' + frame;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return imageId;
|
2015-10-13 14:14:50 +02:00
|
|
|
} else {
|
2017-01-20 00:42:03 +01:00
|
|
|
return getWADORSImageId(instance, frame, thumbnail); // WADO-RS Retrieve Frame
|
2015-10-13 14:14:50 +02:00
|
|
|
}
|
2017-01-16 18:30:54 +01:00
|
|
|
}
|