fix(DicomJSONDataSource): Fix series filtering (#4092)

This commit is contained in:
Igor Octaviano 2024-05-09 17:10:56 -03:00 committed by GitHub
parent e341ebe9d6
commit 2de102c73c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 12 deletions

View File

@ -169,7 +169,7 @@ function createDicomJSONApi(dicomJsonConfig) {
return getDirectURL(dicomJsonConfig, params); return getDirectURL(dicomJsonConfig, params);
}, },
series: { series: {
metadata: async ({ StudyInstanceUID, madeInClient = false, customSort } = {}) => { metadata: async ({ filters, StudyInstanceUID, madeInClient = false, customSort } = {}) => {
if (!StudyInstanceUID) { if (!StudyInstanceUID) {
throw new Error('Unable to query for SeriesMetadata without StudyInstanceUID'); throw new Error('Unable to query for SeriesMetadata without StudyInstanceUID');
} }
@ -183,6 +183,18 @@ function createDicomJSONApi(dicomJsonConfig) {
series = study.series; series = study.series;
} }
const seriesKeys = [
'SeriesInstanceUID',
'SeriesInstanceUIDs',
'seriesInstanceUID',
'seriesInstanceUIDs',
];
const seriesFilter = seriesKeys.find(key => filters[key]);
if (seriesFilter) {
const seriesUIDs = filters[seriesFilter];
series = series.filter(s => seriesUIDs.includes(s.SeriesInstanceUID));
}
const seriesSummaryMetadata = series.map(series => { const seriesSummaryMetadata = series.map(series => {
const seriesSummary = { const seriesSummary = {
StudyInstanceUID: study.StudyInstanceUID, StudyInstanceUID: study.StudyInstanceUID,

View File

@ -239,7 +239,6 @@ export default function ModeRoute({
const filters = const filters =
Array.from(query.keys()).reduce((acc: Record<string, string>, val: string) => { Array.from(query.keys()).reduce((acc: Record<string, string>, val: string) => {
const lowerVal = val.toLowerCase(); const lowerVal = val.toLowerCase();
if (lowerVal !== 'studyinstanceuids') {
// Not sure why the case matters here - it doesn't in the URL // Not sure why the case matters here - it doesn't in the URL
if (lowerVal === 'seriesinstanceuids') { if (lowerVal === 'seriesinstanceuids') {
const seriesUIDs = getSplitParam(lowerVal, query); const seriesUIDs = getSplitParam(lowerVal, query);
@ -248,9 +247,7 @@ export default function ModeRoute({
seriesInstanceUID: seriesUIDs, seriesInstanceUID: seriesUIDs,
}; };
} }
return { ...acc, [val]: getSplitParam(lowerVal, query) }; return { ...acc, [val]: getSplitParam(lowerVal, query) };
}
}, {}) ?? {}; }, {}) ?? {};
let unsubs; let unsubs;