seriesInStudy method
This commit is contained in:
parent
c532d94025
commit
4dccefb21f
@ -1,5 +1,11 @@
|
||||
import { api } from 'dicomweb-client';
|
||||
import { mapParams, search as qidoSearch, processResults } from './qido.js';
|
||||
import {
|
||||
mapParams,
|
||||
search as qidoSearch,
|
||||
seriesInStudy,
|
||||
processResults,
|
||||
processSeriesResults,
|
||||
} from './qido.js';
|
||||
import { dicomMetadataStore, IWebApiDataSource, utils } from '@ohif/core';
|
||||
import * as dcmjs from 'dcmjs';
|
||||
import exampleInstances from './exampleInstances.js';
|
||||
@ -7,7 +13,6 @@ import exampleInstances from './exampleInstances.js';
|
||||
|
||||
const { urlUtil } = utils;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} name - Data source name
|
||||
@ -57,18 +62,13 @@ function createDicomWebApi(dicomWebConfig) {
|
||||
},
|
||||
series: {
|
||||
// mapParams: mapParams.bind(),
|
||||
search: async function(origParams) {
|
||||
const { studyInstanceUid, seriesInstanceUid, ...mappedParams } =
|
||||
mapParams(origParams) || {};
|
||||
|
||||
const results = await qidoSearch(
|
||||
search: async function(studyInstanceUid) {
|
||||
const results = await seriesInStudy(
|
||||
qidoDicomWebClient,
|
||||
studyInstanceUid,
|
||||
undefined,
|
||||
mappedParams
|
||||
studyInstanceUid
|
||||
);
|
||||
|
||||
return processResults(results);
|
||||
return processSeriesResults(results);
|
||||
},
|
||||
// processResults: processResults.bind(),
|
||||
},
|
||||
|
||||
@ -63,6 +63,35 @@ function processResults(qidoStudies) {
|
||||
return studies;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses resulting data from a QIDO call into a set of Study MetaData
|
||||
*
|
||||
* @param {Array} qidoSeries - An array of study objects. Each object contains a keys for DICOM tags.
|
||||
* @param {object} qidoSeries[0].qidoSeries - An object where each key is the DICOM Tag group+element
|
||||
* @param {object} qidoSeries[0].qidoSeries[dicomTag] - Optional object that represents DICOM Tag
|
||||
* @param {string} qidoSeries[0].qidoSeries[dicomTag].vr - Value Representation
|
||||
* @param {string[]} qidoSeries[0].qidoSeries[dicomTag].Value - Optional string array representation of the DICOM Tag's value
|
||||
* @returns {Array} An array of Study MetaData objects
|
||||
*/
|
||||
export function processSeriesResults(qidoSeries) {
|
||||
const series = [];
|
||||
|
||||
if (qidoSeries && qidoSeries.length) {
|
||||
qidoSeries.forEach(qidoSeries =>
|
||||
series.push({
|
||||
studyInstanceUid: getString(qidoSeries['0020000D']),
|
||||
seriesInstanceUid: getString(qidoSeries['0020000E']),
|
||||
modality: getString(qidoSeries['00080060']),
|
||||
seriesNumber: getString(qidoSeries['00200011']),
|
||||
numSeriesInstances: Number(getString(qidoSeries['00201209'])),
|
||||
description: getString(qidoSeries['0008103E']),
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
return series;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {object} dicomWebClient - Client similar to what's provided by `dicomweb-client` library
|
||||
@ -78,18 +107,29 @@ function search(
|
||||
seriesInstanceUid,
|
||||
queryParamaters
|
||||
) {
|
||||
// const requestFn = studyInstanceUid
|
||||
// ? dicomWebClient.searchForInstances
|
||||
// : dicomWebClient.searchForStudies;
|
||||
|
||||
// TODO: Current version does not apply query Params for `searchForInstances` call?
|
||||
// Just sets `studyInstanceUid` in options...
|
||||
// Studies
|
||||
return dicomWebClient.searchForStudies({
|
||||
studyInstanceUid,
|
||||
studyInstanceUid: undefined,
|
||||
queryParams: queryParamaters,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} studyInstanceUID - ID of study to return a list of series for
|
||||
* @returns {Promise} - Resolves SeriesMetadata[] in study
|
||||
*/
|
||||
export function seriesInStudy(dicomWebClient, studyInstanceUID) {
|
||||
// Series Description
|
||||
// Already included?
|
||||
const commaSeparatedFields = ['0008103E'].join(',');
|
||||
const queryParams = {
|
||||
// includefield: commaSeparatedFields,
|
||||
};
|
||||
|
||||
return dicomWebClient.searchForSeries({ studyInstanceUID, queryParams });
|
||||
}
|
||||
|
||||
export default function searchStudies(server, filter) {
|
||||
const queryParams = getQIDOQueryParams(
|
||||
filter,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user