import { volumeLoader } from '@cornerstonejs/core'; import { cornerstoneStreamingImageVolumeLoader, cornerstoneStreamingDynamicImageVolumeLoader, } from '@cornerstonejs/core/loaders'; import dicomImageLoader from '@cornerstonejs/dicom-image-loader'; import { errorHandler, utils } from '@ohif/core'; const { registerVolumeLoader } = volumeLoader; export default function initWADOImageLoader( userAuthenticationService, appConfig, extensionManager ) { registerVolumeLoader('cornerstoneStreamingImageVolume', cornerstoneStreamingImageVolumeLoader); registerVolumeLoader( 'cornerstoneStreamingDynamicImageVolume', cornerstoneStreamingDynamicImageVolumeLoader ); dicomImageLoader.init({ maxWebWorkers: Math.min( Math.max(navigator.hardwareConcurrency - 1, 1), appConfig.maxNumberOfWebWorkers ), beforeSend: function (xhr) { //TODO should be removed in the future and request emitted by DicomWebDataSource const sourceConfig = extensionManager.getActiveDataSource()?.[0].getConfig() ?? {}; const headers = userAuthenticationService.getAuthorizationHeader(); const acceptHeader = utils.generateAcceptHeader( sourceConfig.acceptHeader, sourceConfig.requestTransferSyntaxUID, sourceConfig.omitQuotationForMultipartRequest ); const xhrRequestHeaders = { Accept: acceptHeader, }; if (headers) { Object.assign(xhrRequestHeaders, headers); } return xhrRequestHeaders; }, errorInterceptor: error => { errorHandler.getHTTPErrorHandler(error); }, }); } export function destroy() { console.debug('Destroying WADO Image Loader'); }