Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 115x | /**
* Generates a URL that can be used for direct retrieve of the bulkdata.
*
* @param {object} config - The configuration object.
* @param {object} params - The parameters object.
* @param {string} params.tag - The tag name of the URL to retrieve.
* @param {string} params.defaultPath - The path for the pixel data URL.
* @param {object} params.instance - The instance object that the tag is in.
* @param {string} params.defaultType - The mime type of the response.
* @param {string} params.singlepart - The type of the part to retrieve.
* @param {string} params.fetchPart - Unknown.
* @returns {string|Promise<string>} - An absolute URL to the resource, if the absolute URL can be retrieved as singlepart,
* or is already retrieved, or a promise to a URL for such use if a BulkDataURI.
*/
const getBulkdataValue = (config, params) => {
const {
instance,
tag = 'PixelData',
defaultPath = '/pixeldata',
defaultType = 'video/mp4',
} = params;
const value = instance[tag];
const { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID } = instance;
const BulkDataURI =
(value && value.BulkDataURI) ||
`series/${SeriesInstanceUID}/instances/${SOPInstanceUID}${defaultPath}`;
const hasQuery = BulkDataURI.indexOf('?') !== -1;
const hasAccept = BulkDataURI.indexOf('accept=') !== -1;
const acceptUri =
BulkDataURI + (hasAccept ? '' : (hasQuery ? '&' : '?') + `accept=${defaultType}`);
Iif (acceptUri.startsWith('series/')) {
const { wadoRoot } = config;
return `${wadoRoot}/studies/${StudyInstanceUID}/${acceptUri}`;
}
// The DICOMweb standard states that the default is multipart related, and then
// separately states that the accept parameter is the URL parameter equivalent of the accept header.
return acceptUri;
};
export default getBulkdataValue;
|