71 lines
1.9 KiB
TypeScript
71 lines
1.9 KiB
TypeScript
|
|
async function _hydrateRTDisplaySet({
|
||
|
|
rtDisplaySet,
|
||
|
|
viewportIndex,
|
||
|
|
servicesManager,
|
||
|
|
}) {
|
||
|
|
const {
|
||
|
|
segmentationService,
|
||
|
|
hangingProtocolService,
|
||
|
|
viewportGridService,
|
||
|
|
} = servicesManager.services;
|
||
|
|
|
||
|
|
const displaySetInstanceUID = rtDisplaySet.referencedDisplaySetInstanceUID;
|
||
|
|
|
||
|
|
let segmentationId = null;
|
||
|
|
|
||
|
|
// We need the hydration to notify panels about the new segmentation added
|
||
|
|
const suppressEvents = false;
|
||
|
|
|
||
|
|
segmentationId = await segmentationService.createSegmentationForRTDisplaySet(
|
||
|
|
rtDisplaySet,
|
||
|
|
segmentationId,
|
||
|
|
suppressEvents
|
||
|
|
);
|
||
|
|
|
||
|
|
segmentationService.hydrateSegmentation(rtDisplaySet.displaySetInstanceUID);
|
||
|
|
|
||
|
|
const { viewports } = viewportGridService.getState();
|
||
|
|
|
||
|
|
const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
|
||
|
|
viewportIndex,
|
||
|
|
displaySetInstanceUID
|
||
|
|
);
|
||
|
|
|
||
|
|
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
||
|
|
|
||
|
|
// Todo: fix this after we have a better way for stack viewport segmentations
|
||
|
|
|
||
|
|
// check every viewport in the viewports to see if the displaySetInstanceUID
|
||
|
|
// is being displayed, if so we need to update the viewport to use volume viewport
|
||
|
|
// (if already is not using it) since Cornerstone3D currently only supports
|
||
|
|
// volume viewport for segmentation
|
||
|
|
viewports.forEach((viewport, index) => {
|
||
|
|
if (index === viewportIndex) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
const shouldDisplaySeg = segmentationService.shouldRenderSegmentation(
|
||
|
|
viewport.displaySetInstanceUIDs,
|
||
|
|
rtDisplaySet.displaySetInstanceUID
|
||
|
|
);
|
||
|
|
|
||
|
|
if (shouldDisplaySeg) {
|
||
|
|
updatedViewports.push({
|
||
|
|
viewportIndex: index,
|
||
|
|
displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
|
||
|
|
viewportOptions: {
|
||
|
|
initialImageOptions: {
|
||
|
|
preset: 'middle',
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// Do the entire update at once
|
||
|
|
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
export default _hydrateRTDisplaySet;
|