From 7dc9b3549f7d4c83d06fe737a9bd25bec64c045e Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Thu, 3 Nov 2022 16:57:32 -0400 Subject: [PATCH] fix(viewer): View two or more specified studies (#2815) --- extensions/default/src/DicomWebDataSource/index.js | 5 +++-- .../default/src/Panels/PanelStudyBrowser.tsx | 14 +++++++++++++- .../PanelStudyBrowserTracking.tsx | 14 +++++++++++++- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/extensions/default/src/DicomWebDataSource/index.js b/extensions/default/src/DicomWebDataSource/index.js index 1db6782ee..d18a13f87 100644 --- a/extensions/default/src/DicomWebDataSource/index.js +++ b/extensions/default/src/DicomWebDataSource/index.js @@ -89,10 +89,11 @@ function createDicomWebApi(dicomWebConfig, UserAuthenticationService) { const implementation = { initialize: ({ params, query }) => { const { StudyInstanceUIDs: paramsStudyInstanceUIDs } = params; - const queryStudyInstanceUIDs = query.get('StudyInstanceUIDs'); + const queryStudyInstanceUIDs = query.getAll('StudyInstanceUIDs'); const StudyInstanceUIDs = - queryStudyInstanceUIDs || paramsStudyInstanceUIDs; + queryStudyInstanceUIDs.length && queryStudyInstanceUIDs || + paramsStudyInstanceUIDs; const StudyInstanceUIDsAsArray = StudyInstanceUIDs && Array.isArray(StudyInstanceUIDs) ? StudyInstanceUIDs diff --git a/extensions/default/src/Panels/PanelStudyBrowser.tsx b/extensions/default/src/Panels/PanelStudyBrowser.tsx index 72fed50ea..3d97f90d4 100644 --- a/extensions/default/src/Panels/PanelStudyBrowser.tsx +++ b/extensions/default/src/Panels/PanelStudyBrowser.tsx @@ -61,7 +61,19 @@ function PanelStudyBrowser({ }; }); if (isMounted.current) { - setStudyDisplayList(actuallyMappedStudies); + setStudyDisplayList(prevArray => { + const ret = [...prevArray]; + for (const study of actuallyMappedStudies) { + if ( + !prevArray.find( + it => it.studyInstanceUid === study.studyInstanceUid + ) + ) { + ret.push(study); + } + } + return ret; + }); } } diff --git a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx index 655e238b2..9f7cde53d 100644 --- a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx +++ b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx @@ -109,7 +109,19 @@ function PanelStudyBrowserTracking({ }; }); - setStudyDisplayList(actuallyMappedStudies); + setStudyDisplayList(prevArray => { + const ret = [...prevArray]; + for (const study of actuallyMappedStudies) { + if ( + !prevArray.find( + it => it.studyInstanceUid === study.studyInstanceUid + ) + ) { + ret.push(study); + } + } + return ret; + }); } StudyInstanceUIDs.forEach(sid => fetchStudiesForPatient(sid));