Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | 34x 4x 4x 4x 4x 133x 133x 4x 133x 133x 4x 4x 3x 34x 34x 61x 61x 61x 61x 2734x 61x 61x 61x 2209x 2209x 61x 61x 61x 34x | import * as cornerstoneTools from '@cornerstonejs/tools'; import { updateSegmentationStats } from './updateSegmentationStats'; /** * Sets up the handler for segmentation data modification events */ export function setupSegmentationDataModifiedHandler({ segmentationService, customizationService, commandsManager, }) { const { unsubscribe } = segmentationService.subscribeDebounced( segmentationService.EVENTS.SEGMENTATION_DATA_MODIFIED, async ({ segmentationId }) => { const segmentation = segmentationService.getSegmentation(segmentationId); Iif (!segmentation) { return; } const readableText = customizationService.getCustomization('panelSegmentation.readableText'); // Check for segments with bidirectional measurements and update them const segmentIndices = Object.keys(segmentation.segments) .map(index => parseInt(index)) .filter(index => index > 0); for (const segmentIndex of segmentIndices) { const segment = segmentation.segments[segmentIndex]; Iif (segment?.cachedStats?.namedStats?.bidirectional) { // Run the command to update the bidirectional measurement commandsManager.runCommand('runSegmentBidirectional', { segmentationId, segmentIndex, }); } } const updatedSegmentation = await updateSegmentationStats({ segmentation, segmentationId, readableText, }); if (updatedSegmentation) { segmentationService.addOrUpdateSegmentation({ segmentationId, segments: updatedSegmentation.segments, }); } }, 1000 ); return { unsubscribe }; } /** * Sets up the handler for segmentation modification events */ export function setupSegmentationModifiedHandler({ segmentationService }) { const { unsubscribe } = segmentationService.subscribe( segmentationService.EVENTS.SEGMENTATION_MODIFIED, async ({ segmentationId }) => { const segmentation = segmentationService.getSegmentation(segmentationId); Iif (!segmentation) { return; } const annotationState = cornerstoneTools.annotation.state.getAllAnnotations(); const bidirectionalAnnotations = annotationState.filter( annotation => annotation.metadata.toolName === cornerstoneTools.SegmentBidirectionalTool.toolName ); let toRemoveUIDs = []; Iif (!segmentation) { toRemoveUIDs = bidirectionalAnnotations.map( annotation => annotation.metadata.segmentationId === segmentationId ); return; } else { const segmentIndices = Object.keys(segmentation.segments) .map(index => parseInt(index)) .filter(index => index > 0); // check if there is a bidirectional data that exists but the segment // does not exists anymore we need to remove the bidirectional data const bidirectionalAnnotationsToRemove = bidirectionalAnnotations.filter( annotation => annotation.metadata.segmentationId === segmentationId && !segmentIndices.includes(annotation.metadata.segmentIndex) ); toRemoveUIDs = bidirectionalAnnotationsToRemove.map(annotation => annotation.annotationUID); } toRemoveUIDs.forEach(uid => { cornerstoneTools.annotation.state.removeAnnotation(uid); }); } ); return { unsubscribe }; } |