diff --git a/extensions/default/src/DicomWebDataSource/qido.js b/extensions/default/src/DicomWebDataSource/qido.js index 1c188de66..cd894ed0e 100644 --- a/extensions/default/src/DicomWebDataSource/qido.js +++ b/extensions/default/src/DicomWebDataSource/qido.js @@ -83,6 +83,7 @@ export function processSeriesResults(qidoSeries) { seriesInstanceUid: getString(qidoSeries['0020000E']), modality: getString(qidoSeries['00080060']), seriesNumber: getString(qidoSeries['00200011']), + seriesDate: utils.formatDate(getString(qidoSeries['00080021'])), numSeriesInstances: Number(getString(qidoSeries['00201209'])), description: getString(qidoSeries['0008103E']), }) @@ -123,9 +124,9 @@ async function search( export function seriesInStudy(dicomWebClient, studyInstanceUID) { // Series Description // Already included? - const commaSeparatedFields = ['0008103E'].join(','); + const commaSeparatedFields = ['0008103E', '00080021'].join(','); const queryParams = { - // includefield: commaSeparatedFields, + includefield: commaSeparatedFields, }; return dicomWebClient.searchForSeries({ studyInstanceUID, queryParams }); diff --git a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.jsx b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.jsx index 9acb0dd99..65390acf5 100644 --- a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.jsx +++ b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.jsx @@ -443,21 +443,9 @@ function _createStudyBrowserTabs( const allStudies = []; studyDisplayList.forEach(study => { - const displaySetsForStudy = displaySets.filter( + const displaySetsForStudy = utils.sortBySeriesDate(displaySets.filter( ds => ds.StudyInstanceUID === study.studyInstanceUid - ); - - displaySetsForStudy.sort((a, b) => { - if (a.seriesNumber !== b.seriesNumber) { - return a.seriesNumber - b.seriesNumber; - } - - const seriesDateA = Date.parse(a.seriesDate); - const seriesDateB = Date.parse(b.seriesDate); - - return seriesDateA - seriesDateB; - }); - + )); const tabStudy = Object.assign({}, study, { displaySets: displaySetsForStudy, }); diff --git a/platform/core/src/utils/index.js b/platform/core/src/utils/index.js index da42d9220..4fa21a67e 100644 --- a/platform/core/src/utils/index.js +++ b/platform/core/src/utils/index.js @@ -4,6 +4,7 @@ import absoluteUrl from './absoluteUrl'; import addServers from './addServers'; import guid from './guid'; import sortBy from './sortBy.js'; +import sortBySeriesDate from './sortBySeriesDate.js'; import studyMetadataManager from './studyMetadataManager'; import writeScript from './writeScript.js'; import DicomLoaderService from './dicomLoaderService.js'; @@ -28,6 +29,7 @@ const utils = { absoluteUrl, addServers, sortBy, + sortBySeriesDate, writeScript, formatDate, formatPN, diff --git a/platform/core/src/utils/sortBySeriesDate.js b/platform/core/src/utils/sortBySeriesDate.js new file mode 100644 index 000000000..684a85e0e --- /dev/null +++ b/platform/core/src/utils/sortBySeriesDate.js @@ -0,0 +1,16 @@ +/* + * Sorting function + * Sorts an array by seriesDate and seriesNumber if equal + */ +const sortBySeriesDate = array => array.sort((a, b) => { + if (a.seriesNumber !== b.seriesNumber) { + return a.seriesNumber - b.seriesNumber; + } + + const seriesDateA = Date.parse(a.seriesDate); + const seriesDateB = Date.parse(b.seriesDate); + + return seriesDateA - seriesDateB; +}); + +export default sortBySeriesDate; diff --git a/platform/viewer/src/routes/WorkList/WorkList.jsx b/platform/viewer/src/routes/WorkList/WorkList.jsx index 14484b10f..440b1a75d 100644 --- a/platform/viewer/src/routes/WorkList/WorkList.jsx +++ b/platform/viewer/src/routes/WorkList/WorkList.jsx @@ -5,10 +5,11 @@ import { Link } from 'react-router-dom'; import moment from 'moment'; import qs from 'query-string'; import isEqual from 'lodash.isequal'; -// + import filtersMeta from './filtersMeta.js'; import { useAppConfig } from '@state'; import { useDebounce, useQuery } from '@hooks'; +import { utils } from '@ohif/core'; import PreferencesDropdown from '../../components/PreferencesDropdown'; @@ -166,9 +167,8 @@ function WorkList({ history, data: studies, isLoadingData, dataSource }) { useEffect(() => { const fetchSeries = async studyInstanceUid => { try { - const result = await dataSource.query.series.search(studyInstanceUid); - - seriesInStudiesMap.set(studyInstanceUid, result); + const series = await dataSource.query.series.search(studyInstanceUid); + seriesInStudiesMap.set(studyInstanceUid, utils.sortBySeriesDate(series)); setStudiesWithSeriesData([...studiesWithSeriesData, studyInstanceUid]); } catch (ex) { // TODO: UI Notification Service