Start adding StudyBrowser
This commit is contained in:
parent
3b5764aea7
commit
d131489aa3
@ -1,34 +1,128 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {
|
import { StudyBrowser } from '@ohif/ui';
|
||||||
HelloWorldContext,
|
|
||||||
AnotherHelloWorldContext,
|
|
||||||
} from './getContextModule';
|
|
||||||
|
|
||||||
import { useViewModel, displaySetManager } from '@ohif/core';
|
import { useViewModel, displaySetManager } from '@ohif/core';
|
||||||
|
|
||||||
function helloWorldComponent({}) {
|
function displaySetsToStudyPanelInfo(displaySets) {
|
||||||
|
console.log(displaySets);
|
||||||
|
|
||||||
|
const studies = {};
|
||||||
|
displaySets.forEach(displaySet => {
|
||||||
|
// TODO
|
||||||
|
displaySet.componentType = 'thumbnailTracked';
|
||||||
|
displaySet.viewportIdentificator = 'A';
|
||||||
|
displaySet.isTracked = true;
|
||||||
|
displaySet.seriesNumber = displaySet.SeriesNumber;
|
||||||
|
displaySet.numInstances = displaySet.numImageFrames;
|
||||||
|
displaySet.description = displaySet.SeriesDescription;
|
||||||
|
|
||||||
|
if (!Object.keys(studies).includes(displaySet.StudyInstanceUID)) {
|
||||||
|
studies[displaySet.StudyInstanceUID] = {
|
||||||
|
date: displaySet.StudyDate,
|
||||||
|
description: 'TEST',
|
||||||
|
modalities: 'TEST---TEST',
|
||||||
|
date: '01-Jan-1999',
|
||||||
|
displaySets: [],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
studies[displaySet.StudyInstanceUID].displaySets.push(displaySet);
|
||||||
|
studies[displaySet.StudyInstanceUID].numInstances +=
|
||||||
|
displaySet.numImageFrames;
|
||||||
|
});
|
||||||
|
|
||||||
|
const allStudies = Object.keys(studies).map(StudyInstanceUID => {
|
||||||
|
const study = studies[StudyInstanceUID];
|
||||||
|
return {
|
||||||
|
studyInstanceUid: StudyInstanceUID,
|
||||||
|
...study,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const primary = allStudies.find(study => {
|
||||||
|
return true; // TODO: check study.StudyInstanceUID matches queryparam?
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(primary);
|
||||||
|
|
||||||
|
const recentStudies = allStudies.filter(study => {
|
||||||
|
return true; // TODO: check study.date
|
||||||
|
});
|
||||||
|
|
||||||
|
/*const primary = {
|
||||||
|
studyInstanceUid: '1',
|
||||||
|
date: '07-Sept-2010',
|
||||||
|
description: 'CHEST/ABD/PELVIS W/CONTRAST',
|
||||||
|
numInstances: 902,
|
||||||
|
modalities: 'CT,SR',
|
||||||
|
displaySets: [
|
||||||
|
{
|
||||||
|
displaySetInstanceUid: 'f69f6asdasd48c-223e-db7f-c4af-b8906641a66e',
|
||||||
|
description: 'Multiple line image series description lorem sit',
|
||||||
|
seriesNumber: 1,
|
||||||
|
numInstances: 68,
|
||||||
|
componentType: 'thumbnailTracked',
|
||||||
|
viewportIdentificator: 'A',
|
||||||
|
isTracked: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};*/
|
||||||
|
|
||||||
|
const tabs = [
|
||||||
|
{
|
||||||
|
name: 'primary',
|
||||||
|
label: 'Primary',
|
||||||
|
studies: [primary],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'recent',
|
||||||
|
label: 'Recent',
|
||||||
|
studies: recentStudies,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'all',
|
||||||
|
label: 'All',
|
||||||
|
studies: allStudies,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
return tabs;
|
||||||
|
}
|
||||||
|
|
||||||
|
function StudyBrowserPanel({}) {
|
||||||
const viewModel = useViewModel();
|
const viewModel = useViewModel();
|
||||||
|
|
||||||
console.log(viewModel);
|
console.log(viewModel);
|
||||||
|
|
||||||
viewModel.displaySetInstanceUids.forEach(uid => {
|
const displaySets = viewModel.displaySetInstanceUids.map(
|
||||||
console.log(displaySetManager.getDisplaySetByUID(uid));
|
displaySetManager.getDisplaySetByUID
|
||||||
});
|
|
||||||
|
|
||||||
debugger;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<HelloWorldContext.Consumer>
|
|
||||||
{value => (
|
|
||||||
<div>
|
|
||||||
<h2 style={{ color: 'white' }}>
|
|
||||||
{'Hello world. Context value:'}
|
|
||||||
{JSON.stringify(value)}
|
|
||||||
</h2>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</HelloWorldContext.Consumer>
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let tabs;
|
||||||
|
|
||||||
|
if (displaySets.length) {
|
||||||
|
tabs = displaySetsToStudyPanelInfo(displaySets);
|
||||||
|
} else {
|
||||||
|
tabs = [
|
||||||
|
{
|
||||||
|
name: 'primary',
|
||||||
|
label: 'Primary',
|
||||||
|
studies: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'recent',
|
||||||
|
label: 'Recent',
|
||||||
|
studies: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'all',
|
||||||
|
label: 'All',
|
||||||
|
studies: [],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return <StudyBrowser tabs={tabs} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPanelModule() {
|
function getPanelModule() {
|
||||||
@ -38,14 +132,14 @@ function getPanelModule() {
|
|||||||
iconName: 'group-layers',
|
iconName: 'group-layers',
|
||||||
iconLabel: 'Studies',
|
iconLabel: 'Studies',
|
||||||
label: 'Studies',
|
label: 'Studies',
|
||||||
component: helloWorldComponent,
|
component: StudyBrowserPanel,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'measure',
|
name: 'measure',
|
||||||
iconName: 'list-bullets',
|
iconName: 'list-bullets',
|
||||||
iconLabel: 'Measure',
|
iconLabel: 'Measure',
|
||||||
label: 'Measurements',
|
label: 'Measurements',
|
||||||
component: helloWorldComponent,
|
component: StudyBrowserPanel,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,7 @@ const makeDisplaySet = instances => {
|
|||||||
FrameRate: instance.FrameTime,
|
FrameRate: instance.FrameTime,
|
||||||
Modality: instance.Modality,
|
Modality: instance.Modality,
|
||||||
isMultiFrame: isMultiFrame(instance),
|
isMultiFrame: isMultiFrame(instance),
|
||||||
mumImageFrames: instances.length,
|
numImageFrames: instances.length,
|
||||||
SOPClassHandlerId: `${id}.sopClassHandlerModule.${sopClassHandlerName}`,
|
SOPClassHandlerId: `${id}.sopClassHandlerModule.${sopClassHandlerName}`,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -33,17 +33,17 @@ class DisplaySetManager {
|
|||||||
return addedDisplaySetUids;
|
return addedDisplaySetUids;
|
||||||
}
|
}
|
||||||
|
|
||||||
getDisplaySetsForSeries(SeriesInstanceUID) {
|
getDisplaySetsForSeries = SeriesInstanceUID => {
|
||||||
return this.displaySets.filter(
|
return this.displaySets.filter(
|
||||||
displaySet => displaySet.SeriesInstanceUID === SeriesInstanceUID
|
displaySet => displaySet.SeriesInstanceUID === SeriesInstanceUID
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
getDisplaySetByUID(displaySetInstanceUid) {
|
getDisplaySetByUID = displaySetInstanceUid => {
|
||||||
return this.displaySets.find(
|
return this.displaySets.find(
|
||||||
displaySet => displaySet.displaySetInstanceUid === displaySetInstanceUid
|
displaySet => displaySet.displaySetInstanceUid === displaySetInstanceUid
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
makeDisplaySets = instances => {
|
makeDisplaySets = instances => {
|
||||||
if (!instances || !instances.length) {
|
if (!instances || !instances.length) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user