fix(orthanc): Correct bulkdata URL handling and add configuration example PDF (#4262)
This commit is contained in:
parent
bea56d4f66
commit
fdf883ada8
@ -20,26 +20,36 @@ function fixBulkDataURI(value, instance, dicomWebConfig) {
|
|||||||
// in case of the relative path, make it absolute. The current DICOM standard says
|
// in case of the relative path, make it absolute. The current DICOM standard says
|
||||||
// the bulkdataURI is relative to the series. However, there are situations where
|
// the bulkdataURI is relative to the series. However, there are situations where
|
||||||
// it can be relative to the study too
|
// it can be relative to the study too
|
||||||
const { BulkDataURI } = value;
|
let { BulkDataURI } = value;
|
||||||
|
const { bulkDataURI: uriConfig = {} } = dicomWebConfig;
|
||||||
|
|
||||||
|
// Handle incorrectly prefixed origins
|
||||||
|
const { startsWith, prefixWith = '' } = uriConfig;
|
||||||
|
if (startsWith && BulkDataURI.startsWith(startsWith)) {
|
||||||
|
BulkDataURI = prefixWith + BulkDataURI.substring(startsWith.length);
|
||||||
|
value.BulkDataURI = BulkDataURI;
|
||||||
|
}
|
||||||
|
|
||||||
if (!BulkDataURI.startsWith('http') && !value.BulkDataURI.startsWith('/')) {
|
if (!BulkDataURI.startsWith('http') && !value.BulkDataURI.startsWith('/')) {
|
||||||
const { StudyInstanceUID, SeriesInstanceUID } = instance;
|
const { StudyInstanceUID, SeriesInstanceUID } = instance;
|
||||||
const isInstanceStart = BulkDataURI.startsWith('instances/') || BulkDataURI.startsWith('../');
|
const isInstanceStart = BulkDataURI.startsWith('instances/') || BulkDataURI.startsWith('../');
|
||||||
if (
|
if (
|
||||||
BulkDataURI.startsWith('series/') ||
|
BulkDataURI.startsWith('series/') ||
|
||||||
BulkDataURI.startsWith('bulkdata/') ||
|
BulkDataURI.startsWith('bulkdata/') ||
|
||||||
(dicomWebConfig.bulkDataURI?.relativeResolution === 'studies' && isInstanceStart)
|
(uriConfig.relativeResolution === 'studies' && isInstanceStart)
|
||||||
) {
|
) {
|
||||||
value.BulkDataURI = `${dicomWebConfig.wadoRoot}/studies/${StudyInstanceUID}/${BulkDataURI}`;
|
value.BulkDataURI = `${dicomWebConfig.wadoRoot}/studies/${StudyInstanceUID}/${BulkDataURI}`;
|
||||||
} else if (
|
} else if (
|
||||||
isInstanceStart ||
|
isInstanceStart ||
|
||||||
dicomWebConfig.bulkDataURI?.relativeResolution === 'series' ||
|
uriConfig.relativeResolution === 'series' ||
|
||||||
!dicomWebConfig.bulkDataURI?.relativeResolution
|
!uriConfig.relativeResolution
|
||||||
) {
|
) {
|
||||||
value.BulkDataURI = `${dicomWebConfig.wadoRoot}/studies/${StudyInstanceUID}/series/${SeriesInstanceUID}/${BulkDataURI}`;
|
value.BulkDataURI = `${dicomWebConfig.wadoRoot}/studies/${StudyInstanceUID}/series/${SeriesInstanceUID}/${BulkDataURI}`;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// in case it is relative path but starts at the server (e.g., /bulk/1e, note the missing http
|
// in case it is relative path but starts at the server (e.g., /bulk/1e, note the missing http
|
||||||
// in the beginning and the first character is /) There are two scenarios, whether the wado root
|
// in the beginning and the first character is /) There are two scenarios, whether the wado root
|
||||||
// is absolute or relative. In case of absolute, we need to prepend the wado root to the bulkdata
|
// is absolute or relative. In case of absolute, we need to prepend the wado root to the bulkdata
|
||||||
|
|||||||
@ -14,11 +14,11 @@ window.config = {
|
|||||||
showCPUFallbackMessage: true,
|
showCPUFallbackMessage: true,
|
||||||
strictZSpacingForVolumeViewport: true,
|
strictZSpacingForVolumeViewport: true,
|
||||||
// filterQueryParam: false,
|
// filterQueryParam: false,
|
||||||
defaultDataSourceName: 'dicomweb',
|
defaultDataSourceName: 'orthanc',
|
||||||
dataSources: [
|
dataSources: [
|
||||||
{
|
{
|
||||||
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
|
namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
|
||||||
sourceName: 'dicomweb',
|
sourceName: 'orthanc',
|
||||||
configuration: {
|
configuration: {
|
||||||
friendlyName: 'local Orthanc DICOMWeb Server',
|
friendlyName: 'local Orthanc DICOMWeb Server',
|
||||||
name: 'DCM4CHEE',
|
name: 'DCM4CHEE',
|
||||||
@ -37,6 +37,17 @@ window.config = {
|
|||||||
omitQuotationForMultipartRequest: true,
|
omitQuotationForMultipartRequest: true,
|
||||||
bulkDataURI: {
|
bulkDataURI: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
|
// This is an example config that can be used to fix the retrieve URL
|
||||||
|
// where it has the wrong prefix (eg a canned prefix). It is better to
|
||||||
|
// just use the correct prefix out of the box, but that is sometimes hard
|
||||||
|
// when URLs go through several systems.
|
||||||
|
// Example URLS are:
|
||||||
|
// "BulkDataURI" : "http://localhost/dicom-web/studies/1.2.276.0.7230010.3.1.2.2344313775.14992.1458058363.6979/series/1.2.276.0.7230010.3.1.3.1901948703.36080.1484835349.617/instances/1.2.276.0.7230010.3.1.4.1901948703.36080.1484835349.618/bulk/00420011",
|
||||||
|
// when running on http://localhost:3003 with no server running on localhost. This can be corrected to:
|
||||||
|
// /orthanc/dicom-web/studies/1.2.276.0.7230010.3.1.2.2344313775.14992.1458058363.6979/series/1.2.276.0.7230010.3.1.3.1901948703.36080.1484835349.617/instances/1.2.276.0.7230010.3.1.4.1901948703.36080.1484835349.618/bulk/00420011
|
||||||
|
// which is a valid relative URL, and will result in using the http://localhost:3003/orthanc/.... path
|
||||||
|
// startsWith: 'http://localhost/',
|
||||||
|
// prefixWith: '/orthanc/',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user