diff --git a/extensions/default/src/DicomJSONDataSource/index.js b/extensions/default/src/DicomJSONDataSource/index.js index deb50e252..bf21a77e8 100644 --- a/extensions/default/src/DicomJSONDataSource/index.js +++ b/extensions/default/src/DicomJSONDataSource/index.js @@ -169,7 +169,7 @@ function createDicomJSONApi(dicomJsonConfig) { return getDirectURL(dicomJsonConfig, params); }, series: { - metadata: async ({ StudyInstanceUID, madeInClient = false, customSort } = {}) => { + metadata: async ({ filters, StudyInstanceUID, madeInClient = false, customSort } = {}) => { if (!StudyInstanceUID) { throw new Error('Unable to query for SeriesMetadata without StudyInstanceUID'); } @@ -183,6 +183,18 @@ function createDicomJSONApi(dicomJsonConfig) { 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 seriesSummary = { StudyInstanceUID: study.StudyInstanceUID, diff --git a/platform/app/src/routes/Mode/Mode.tsx b/platform/app/src/routes/Mode/Mode.tsx index 0e78c74be..783356dda 100644 --- a/platform/app/src/routes/Mode/Mode.tsx +++ b/platform/app/src/routes/Mode/Mode.tsx @@ -239,18 +239,15 @@ export default function ModeRoute({ const filters = Array.from(query.keys()).reduce((acc: Record, val: string) => { const lowerVal = val.toLowerCase(); - if (lowerVal !== 'studyinstanceuids') { - // Not sure why the case matters here - it doesn't in the URL - if (lowerVal === 'seriesinstanceuids') { - const seriesUIDs = getSplitParam(lowerVal, query); - return { - ...acc, - seriesInstanceUID: seriesUIDs, - }; - } - - return { ...acc, [val]: getSplitParam(lowerVal, query) }; + // Not sure why the case matters here - it doesn't in the URL + if (lowerVal === 'seriesinstanceuids') { + const seriesUIDs = getSplitParam(lowerVal, query); + return { + ...acc, + seriesInstanceUID: seriesUIDs, + }; } + return { ...acc, [val]: getSplitParam(lowerVal, query) }; }, {}) ?? {}; let unsubs;