diff --git a/extensions/default/src/DicomWebDataSource/qido.js b/extensions/default/src/DicomWebDataSource/qido.js index 00a390424..c6fddf307 100644 --- a/extensions/default/src/DicomWebDataSource/qido.js +++ b/extensions/default/src/DicomWebDataSource/qido.js @@ -101,17 +101,18 @@ export function processSeriesResults(qidoSeries) { * @param {string} [queryParamaters] * @returns {Promise} - Promise that resolves results */ -function search( +async function search( dicomWebClient, studyInstanceUid, seriesInstanceUid, queryParameters ) { - // Studies - return dicomWebClient.searchForStudies({ + let searchResult = await dicomWebClient.searchForStudies({ studyInstanceUid: undefined, queryParams: queryParameters, }); + + return searchResult; } /** diff --git a/platform/viewer/src/routes/DataSourceWrapper.jsx b/platform/viewer/src/routes/DataSourceWrapper.jsx index 158594128..1c9b30907 100644 --- a/platform/viewer/src/routes/DataSourceWrapper.jsx +++ b/platform/viewer/src/routes/DataSourceWrapper.jsx @@ -100,9 +100,7 @@ function _getQueryFilterValues(query) { patientId: query.get('mrn'), patientName: query.get('patientName'), studyDescription: query.get('description'), - modalitiesInStudy: query.get('modalities') - ? query.get('modalities').split(',') - : [], + modalitiesInStudy: query.get('modalities') && query.get('modalities').split(','), accessionNumber: query.get('accession'), // startDate: query.get('startDate'), diff --git a/platform/viewer/src/routes/WorkList/WorkList.jsx b/platform/viewer/src/routes/WorkList/WorkList.jsx index f7edc664d..b98a3d82b 100644 --- a/platform/viewer/src/routes/WorkList/WorkList.jsx +++ b/platform/viewer/src/routes/WorkList/WorkList.jsx @@ -48,7 +48,12 @@ function WorkList({ history, data: studies, isLoadingData, dataSource }) { .sort((s1, s2) => { const noSortApplied = sortBy === '' || !sortBy; const sortModifier = sortDirection === 'descending' ? 1 : -1; - if (noSortApplied) { + + if (noSortApplied && studies.length < 101) { + const ascendingSortModifier = -1; + + return _sortStringDates(s1, s2, ascendingSortModifier); + } else if (noSortApplied) { return 0; } @@ -64,20 +69,7 @@ function WorkList({ history, data: studies, isLoadingData, dataSource }) { } else if (!s2Prop && s1Prop) { return 1 * sortModifier; } else if (sortBy === 'studyDate') { - // TODO: Delimiters are non-standard. Should we support them? - const s1Date = moment(s1.date, ['YYYYMMDD', 'YYYY.MM.DD'], true); - const s2Date = moment(s2.date, ['YYYYMMDD', 'YYYY.MM.DD'], true); - - if (s1Date.isValid() && s2Date.isValid()) { - return ( - (s1Date.toISOString() > s2Date.toISOString() ? 1 : -1) * - sortModifier - ); - } else if (s1Date.isValid()) { - return sortModifier; - } else if (s2Date.isValid()) { - return -1 * sortModifier; - } + return _sortStringDates(s1, s2, sortModifier); } return 0; @@ -176,13 +168,12 @@ function WorkList({ history, data: studies, isLoadingData, dataSource }) { // Note: expanded rows index begins at 1 for (let z = 0; z < expandedRows.length; z++) { const expandedRowIndex = expandedRows[z] - 1; - console.log(sortedStudies[expandedRowIndex]); const studyInstanceUid = sortedStudies[expandedRowIndex].studyInstanceUid; + if (studiesWithSeriesData.includes(studyInstanceUid)) { continue; } - console.log(`fetching for ${expandedRowIndex}`); fetchSeries(studyInstanceUid); } // eslint-disable-next-line react-hooks/exhaustive-deps @@ -470,4 +461,20 @@ function _getQueryFilterValues(query) { } } +function _sortStringDates(s1, s2, sortModifier) { + // TODO: Delimiters are non-standard. Should we support them? + const s1Date = moment(s1.date, ['YYYYMMDD', 'YYYY.MM.DD'], true); + const s2Date = moment(s2.date, ['YYYYMMDD', 'YYYY.MM.DD'], true); + + if (s1Date.isValid() && s2Date.isValid()) { + return ( + (s1Date.toISOString() > s2Date.toISOString() ? 1 : -1) * sortModifier + ); + } else if (s1Date.isValid()) { + return sortModifier; + } else if (s2Date.isValid()) { + return -1 * sortModifier; + } +} + export default WorkList; diff --git a/platform/viewer/src/routes/index.js b/platform/viewer/src/routes/index.js index 2a1eb8087..061b36dbe 100644 --- a/platform/viewer/src/routes/index.js +++ b/platform/viewer/src/routes/index.js @@ -26,31 +26,22 @@ const createRoutes = ({ dataSources, extensionManager, servicesManager, - hotkeysManager + hotkeysManager, }) => { - const routes = buildModeRoutes({ - modes, - dataSources, - extensionManager, - servicesManager, - hotkeysManager - }) || []; + const routes = + buildModeRoutes({ + modes, + dataSources, + extensionManager, + servicesManager, + hotkeysManager, + }) || []; const allRoutes = [...routes, ...bakedInRoutes]; - console.log( - 'Creating Routes:', - modes, - dataSources, - routes, - bakedInRoutes, - allRoutes - ); - return ( {allRoutes.map((route, i) => { - console.log(route); return (