OHIF-301: Add sorting to worklist series (#1960)

* ohif-301: add sorting to work list series

* ohif-301: clearadd series date to qido

* ohif-301: add series date to qido

* Update qido.js

Co-authored-by: Erik Ziegler <erik.sweed@gmail.com>
This commit is contained in:
Igor Octaviano 2020-08-11 22:01:48 -03:00 committed by GitHub
parent 3267706b33
commit e04f74499f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 20 deletions

View File

@ -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 });

View File

@ -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,
});

View File

@ -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,

View File

@ -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;

View File

@ -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