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:
parent
3267706b33
commit
e04f74499f
@ -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 });
|
||||
|
||||
@ -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,
|
||||
});
|
||||
|
||||
@ -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,
|
||||
|
||||
16
platform/core/src/utils/sortBySeriesDate.js
Normal file
16
platform/core/src/utils/sortBySeriesDate.js
Normal 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;
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user