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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | import { IWebApiDataSource } from '@ohif/core'; import { createDicomWebApi } from '../DicomWebDataSource/index'; /** * This datasource is initialized with a url that returns a JSON object with a * dicomWeb datasource configuration array present in a "servers" object. * * Only the first array item is parsed, if there are multiple items in the * dicomWeb configuration array * */ function createDicomWebProxyApi(dicomWebProxyConfig, servicesManager: AppTypes.ServicesManager) { const { name } = dicomWebProxyConfig; let dicomWebDelegate = undefined; const implementation = { initialize: async ({ params, query }) => { const url = query.get('url'); if (!url) { throw new Error(`No url for '${name}'`); } else { const response = await fetch(url); const data = await response.json(); Iif (!data.servers?.dicomWeb?.[0]) { throw new Error('Invalid configuration returned by url'); } dicomWebDelegate = createDicomWebApi( data.servers.dicomWeb[0].configuration || data.servers.dicomWeb[0], servicesManager ); dicomWebDelegate.initialize({ params, query }); } }, query: { studies: { search: params => dicomWebDelegate.query.studies.search(params), }, series: { search: (...args) => dicomWebDelegate.query.series.search(...args), }, instances: { search: (studyInstanceUid, queryParameters) => dicomWebDelegate.query.instances.search(studyInstanceUid, queryParameters), }, }, retrieve: { directURL: (...args) => dicomWebDelegate.retrieve.directURL(...args), series: { metadata: async (...args) => dicomWebDelegate.retrieve.series.metadata(...args), }, }, store: { dicom: (...args) => dicomWebDelegate.store(...args), }, deleteStudyMetadataPromise: (...args) => dicomWebDelegate.deleteStudyMetadataPromise(...args), getImageIdsForDisplaySet: (...args) => dicomWebDelegate.getImageIdsForDisplaySet(...args), getImageIdsForInstance: (...args) => dicomWebDelegate.getImageIdsForInstance(...args), getStudyInstanceUIDs({ params, query }) { let studyInstanceUIDs = []; // there seem to be a couple of variations of the case for this parameter const queryStudyInstanceUIDs = query.get('studyInstanceUIDs') || query.get('studyInstanceUids'); Iif (!queryStudyInstanceUIDs) { throw new Error(`No studyInstanceUids in request for '${name}'`); } studyInstanceUIDs = queryStudyInstanceUIDs.split(';'); return studyInstanceUIDs; }, }; return IWebApiDataSource.create(implementation); } export { createDicomWebProxyApi }; |