60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
// import { api } from 'dicomweb-client';
|
|
// import DICOMWeb from '../../../DICOMWeb/';
|
|
import { createStudyFromSOPInstanceList } from './studyInstanceHelpers';
|
|
import RetrieveMetadataLoader from './retrieveMetadataLoader';
|
|
|
|
/**
|
|
* Class for sync load of study metadata.
|
|
* It inherits from RetrieveMetadataLoader
|
|
*
|
|
* A list of loaders (getLoaders) can be created so, it will be applied a fallback load strategy.
|
|
* I.e Retrieve metadata using all loaders possibilities.
|
|
*/
|
|
export default class RetrieveMetadataLoaderSync extends RetrieveMetadataLoader {
|
|
getOptions() {
|
|
const { studyInstanceUID, filters } = this;
|
|
|
|
const options = {
|
|
studyInstanceUID,
|
|
};
|
|
|
|
const { seriesInstanceUID } = filters;
|
|
if (seriesInstanceUID) {
|
|
options['seriesInstanceUID'] = seriesInstanceUID;
|
|
}
|
|
|
|
return options;
|
|
}
|
|
|
|
/**
|
|
* @returns {Array} Array of loaders. To be consumed as queue
|
|
*/
|
|
*getLoaders() {
|
|
const loaders = [];
|
|
const { studyInstanceUID, filters: { seriesInstanceUID } = {}, client } = this;
|
|
|
|
if (seriesInstanceUID) {
|
|
loaders.push(
|
|
client.retrieveSeriesMetadata.bind(client, {
|
|
studyInstanceUID,
|
|
seriesInstanceUID,
|
|
})
|
|
);
|
|
}
|
|
|
|
loaders.push(client.retrieveStudyMetadata.bind(client, { studyInstanceUID }));
|
|
|
|
yield* loaders;
|
|
}
|
|
|
|
async load(preLoadData) {
|
|
const loaders = this.getLoaders();
|
|
const result = this.runLoaders(loaders);
|
|
return result;
|
|
}
|
|
|
|
async posLoad(loadData) {
|
|
return loadData;
|
|
}
|
|
}
|