56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import { SegmentationRepresentations } from '@cornerstonejs/tools/enums';
|
|
|
|
const commandsModule = ({ commandsManager, servicesManager }: withAppTypes) => {
|
|
const services = servicesManager.services;
|
|
const { displaySetService, viewportGridService } = services;
|
|
|
|
const actions = {
|
|
hydrateRTSDisplaySet: ({ displaySet, viewportId }) => {
|
|
if (displaySet.Modality !== 'RTSTRUCT') {
|
|
throw new Error('Display set is not an RTSTRUCT');
|
|
}
|
|
|
|
const referencedDisplaySet = displaySetService.getDisplaySetByUID(
|
|
displaySet.referencedDisplaySetInstanceUID
|
|
);
|
|
|
|
// update the previously stored segmentationPresentation with the new viewportId
|
|
// presentation so that when we put the referencedDisplaySet back in the viewport
|
|
// it will have the correct segmentation representation hydrated
|
|
commandsManager.runCommand('updateStoredSegmentationPresentation', {
|
|
displaySet: displaySet,
|
|
type: SegmentationRepresentations.Contour,
|
|
});
|
|
|
|
// update the previously stored positionPresentation with the new viewportId
|
|
// presentation so that when we put the referencedDisplaySet back in the viewport
|
|
// it will be in the correct position zoom and pan
|
|
commandsManager.runCommand('updateStoredPositionPresentation', {
|
|
viewportId,
|
|
displaySetInstanceUID: referencedDisplaySet.displaySetInstanceUID,
|
|
});
|
|
|
|
viewportGridService.setDisplaySetsForViewport({
|
|
viewportId,
|
|
displaySetInstanceUIDs: [referencedDisplaySet.displaySetInstanceUID],
|
|
});
|
|
},
|
|
};
|
|
|
|
const definitions = {
|
|
hydrateRTSDisplaySet: {
|
|
commandFn: actions.hydrateRTSDisplaySet,
|
|
storeContexts: [],
|
|
options: {},
|
|
},
|
|
};
|
|
|
|
return {
|
|
actions,
|
|
definitions,
|
|
defaultContext: 'cornerstone-dicom-rt',
|
|
};
|
|
};
|
|
|
|
export default commandsModule;
|