fix(DicomJSONDataSource): Fix series filtering (#4092)
This commit is contained in:
parent
e341ebe9d6
commit
2de102c73c
@ -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,
|
||||||
|
|||||||
@ -239,18 +239,15 @@ 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);
|
return {
|
||||||
return {
|
...acc,
|
||||||
...acc,
|
seriesInstanceUID: seriesUIDs,
|
||||||
seriesInstanceUID: seriesUIDs,
|
};
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return { ...acc, [val]: getSplitParam(lowerVal, query) };
|
|
||||||
}
|
}
|
||||||
|
return { ...acc, [val]: getSplitParam(lowerVal, query) };
|
||||||
}, {}) ?? {};
|
}, {}) ?? {};
|
||||||
|
|
||||||
let unsubs;
|
let unsubs;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user