66 lines
1.6 KiB
JavaScript
66 lines
1.6 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) {
|
||
|
|
const { server } = this;
|
||
|
|
return createStudyFromSOPInstanceList(server, loadData);
|
||
|
|
}
|
||
|
|
}
|