Skip to content

Commit f275d0d

Browse files
Viewer rebase changes
1 parent 4e76f00 commit f275d0d

File tree

3 files changed

+43
-18
lines changed

3 files changed

+43
-18
lines changed

extensions/ohif-gradienthealth-extension/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
useViewportGrid,
88
Dialog,
99
} from '@ohif/ui';
10+
import { useNavigate } from 'react-router-dom';
1011

1112
const { formatDate } = utils;
1213

@@ -20,7 +21,7 @@ function PanelStudyBrowserTracking({
2021
UIDialogService,
2122
UINotificationService,
2223
getImageSrc,
23-
getStudiesForPatientByStudyInstanceUID,
24+
getStudiesForPatientByMRN,
2425
requestDisplaySetCreationForStudy,
2526
dataSource,
2627
}) {
@@ -32,6 +33,7 @@ function PanelStudyBrowserTracking({
3233
{ activeViewportId, viewports, numCols, numRows },
3334
viewportGridService,
3435
] = useViewportGrid();
36+
const navigate=useNavigate()
3537

3638
const [activeTabName, setActiveTabName] = useState('primary');
3739
const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = useState([
@@ -50,7 +52,7 @@ function PanelStudyBrowserTracking({
5052
};
5153

5254
const activeViewportDisplaySetInstanceUIDs =
53-
viewports[activeViewportId]?.displaySetInstanceUIDs;
55+
viewports.get(activeViewportId)?.displaySetInstanceUIDs;
5456

5557
const isSingleViewport = numCols === 1 && numRows === 1;
5658

@@ -81,9 +83,26 @@ function PanelStudyBrowserTracking({
8183
useEffect(() => {
8284
// Fetch all studies for the patient in each primary study
8385
async function fetchStudiesForPatient(StudyInstanceUID) {
84-
const qidoStudiesForPatient =
85-
(await getStudiesForPatientByStudyInstanceUID(StudyInstanceUID)) || [];
86-
// TODO: This should be "naturalized DICOM JSON" studies
86+
// current study qido
87+
const qidoForStudyUID = await dataSource.query.studies.search({
88+
studyInstanceUid: StudyInstanceUID,
89+
});
90+
91+
if (!qidoForStudyUID?.length) {
92+
navigate('/notfoundstudy', '_self');
93+
throw new Error('Invalid study URL');
94+
}
95+
96+
let qidoStudiesForPatient = qidoForStudyUID;
97+
98+
// try to fetch the prior studies based on the patientID if the
99+
// server can respond.
100+
try {
101+
qidoStudiesForPatient = await getStudiesForPatientByMRN(qidoForStudyUID);
102+
} catch (error) {
103+
console.warn(error);
104+
}
105+
87106
const mappedStudies = _mapDataSourceStudies(qidoStudiesForPatient);
88107
const actuallyMappedStudies = mappedStudies.map(qidoStudy => {
89108
return {
@@ -92,16 +111,22 @@ function PanelStudyBrowserTracking({
92111
description: qidoStudy.StudyDescription,
93112
modalities: qidoStudy.ModalitiesInStudy,
94113
numInstances: qidoStudy.NumInstances,
95-
// displaySets: []
96114
};
97115
});
98116

99-
setStudyDisplayList(actuallyMappedStudies);
117+
setStudyDisplayList(prevArray => {
118+
const ret = [...prevArray];
119+
for (const study of actuallyMappedStudies) {
120+
if (!prevArray.find(it => it.studyInstanceUid === study.studyInstanceUid)) {
121+
ret.push(study);
122+
}
123+
}
124+
return ret;
125+
});
100126
}
101127

102128
StudyInstanceUIDs.forEach(sid => fetchStudiesForPatient(sid));
103-
// eslint-disable-next-line react-hooks/exhaustive-deps
104-
}, [StudyInstanceUIDs, getStudiesForPatientByStudyInstanceUID]);
129+
}, [StudyInstanceUIDs, dataSource, getStudiesForPatientByMRN, navigate]);
105130

106131
// ~~ Initial Thumbnails
107132
useEffect(() => {
@@ -328,7 +353,7 @@ PanelStudyBrowserTracking.propTypes = {
328353
getImageIdsForDisplaySet: PropTypes.func.isRequired,
329354
}).isRequired,
330355
getImageSrc: PropTypes.func.isRequired,
331-
getStudiesForPatientByStudyInstanceUID: PropTypes.func.isRequired,
356+
getStudiesForPatientByMRN: PropTypes.func.isRequired,
332357
requestDisplaySetCreationForStudy: PropTypes.func.isRequired,
333358
};
334359

@@ -373,7 +398,7 @@ function _mapDisplaySets(
373398
const componentType = _getComponentType(ds.Modality);
374399
const viewportIdentificator = isSingleViewport
375400
? []
376-
: viewports.reduce((acc, viewportData, index) => {
401+
: Object.values(viewports).reduce((acc, viewportData, index) => {
377402
if (
378403
viewportData?.displaySetInstanceUIDs?.includes(
379404
ds.displaySetInstanceUID

extensions/ohif-gradienthealth-extension/src/panels/PanelStudyBrowserTracking/getImageSrcFromImageId.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ function getImageSrcFromImageId(cornerstone, imageId) {
66
return new Promise((resolve, reject) => {
77
const canvas = document.createElement('canvas');
88
cornerstone.utilities
9-
.loadImageToCanvas(canvas, imageId)
9+
.loadImageToCanvas({canvas, imageId})
1010
.then(imageId => {
1111
resolve(canvas.toDataURL());
1212
})

extensions/ohif-gradienthealth-extension/src/panels/PanelStudyBrowserTracking/index.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ function _getStudyForPatientUtility(extensionManager) {
1010
'@ohif/extension-default.utilityModule.common'
1111
);
1212

13-
const { getStudiesForPatientByStudyInstanceUID } = utilityModule.exports;
14-
return getStudiesForPatientByStudyInstanceUID;
13+
const { getStudiesForPatientByMRN } = utilityModule.exports;
14+
return getStudiesForPatientByMRN;
1515
}
1616

1717
/**
@@ -28,10 +28,10 @@ function WrappedPanelStudyBrowserTracking({
2828
}) {
2929
const dataSource = extensionManager.getActiveDataSource()[0];
3030

31-
const getStudiesForPatientByStudyInstanceUID = _getStudyForPatientUtility(
31+
const getStudiesForPatientByMRN = _getStudyForPatientUtility(
3232
extensionManager
3333
);
34-
const _getStudiesForPatientByStudyInstanceUID = getStudiesForPatientByStudyInstanceUID.bind(
34+
const _getStudiesForPatientByMRN = getStudiesForPatientByMRN.bind(
3535
null,
3636
dataSource
3737
);
@@ -51,8 +51,8 @@ function WrappedPanelStudyBrowserTracking({
5151
UINotificationService={servicesManager.services.UINotificationService}
5252
dataSource={dataSource}
5353
getImageSrc={_getImageSrcFromImageId}
54-
getStudiesForPatientByStudyInstanceUID={
55-
_getStudiesForPatientByStudyInstanceUID
54+
getStudiesForPatientByMRN={
55+
_getStudiesForPatientByMRN
5656
}
5757
requestDisplaySetCreationForStudy={_requestDisplaySetCreationForStudy}
5858
/>

0 commit comments

Comments
 (0)