seriesInStudy method
This commit is contained in:
parent
c532d94025
commit
4dccefb21f
@ -1,5 +1,11 @@
|
|||||||
import { api } from 'dicomweb-client';
|
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 { dicomMetadataStore, IWebApiDataSource, utils } from '@ohif/core';
|
||||||
import * as dcmjs from 'dcmjs';
|
import * as dcmjs from 'dcmjs';
|
||||||
import exampleInstances from './exampleInstances.js';
|
import exampleInstances from './exampleInstances.js';
|
||||||
@ -7,7 +13,6 @@ import exampleInstances from './exampleInstances.js';
|
|||||||
|
|
||||||
const { urlUtil } = utils;
|
const { urlUtil } = utils;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {string} name - Data source name
|
* @param {string} name - Data source name
|
||||||
@ -57,18 +62,13 @@ function createDicomWebApi(dicomWebConfig) {
|
|||||||
},
|
},
|
||||||
series: {
|
series: {
|
||||||
// mapParams: mapParams.bind(),
|
// mapParams: mapParams.bind(),
|
||||||
search: async function(origParams) {
|
search: async function(studyInstanceUid) {
|
||||||
const { studyInstanceUid, seriesInstanceUid, ...mappedParams } =
|
const results = await seriesInStudy(
|
||||||
mapParams(origParams) || {};
|
|
||||||
|
|
||||||
const results = await qidoSearch(
|
|
||||||
qidoDicomWebClient,
|
qidoDicomWebClient,
|
||||||
studyInstanceUid,
|
studyInstanceUid
|
||||||
undefined,
|
|
||||||
mappedParams
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return processResults(results);
|
return processSeriesResults(results);
|
||||||
},
|
},
|
||||||
// processResults: processResults.bind(),
|
// processResults: processResults.bind(),
|
||||||
},
|
},
|
||||||
|
|||||||
@ -63,6 +63,35 @@ function processResults(qidoStudies) {
|
|||||||
return studies;
|
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
|
* @param {object} dicomWebClient - Client similar to what's provided by `dicomweb-client` library
|
||||||
@ -78,18 +107,29 @@ function search(
|
|||||||
seriesInstanceUid,
|
seriesInstanceUid,
|
||||||
queryParamaters
|
queryParamaters
|
||||||
) {
|
) {
|
||||||
// const requestFn = studyInstanceUid
|
// Studies
|
||||||
// ? dicomWebClient.searchForInstances
|
|
||||||
// : dicomWebClient.searchForStudies;
|
|
||||||
|
|
||||||
// TODO: Current version does not apply query Params for `searchForInstances` call?
|
|
||||||
// Just sets `studyInstanceUid` in options...
|
|
||||||
return dicomWebClient.searchForStudies({
|
return dicomWebClient.searchForStudies({
|
||||||
studyInstanceUid,
|
studyInstanceUid: undefined,
|
||||||
queryParams: queryParamaters,
|
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) {
|
export default function searchStudies(server, filter) {
|
||||||
const queryParams = getQIDOQueryParams(
|
const queryParams = getQIDOQueryParams(
|
||||||
filter,
|
filter,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user