From becba7861f99ae4e190caddea8b663e60a9883f5 Mon Sep 17 00:00:00 2001 From: Bill Wallace Date: Fri, 15 Aug 2025 14:12:34 -0400 Subject: [PATCH] fix: load 3dsr (#5335) --- .../OHIFCornerstoneSRMeasurementViewport.tsx | 2 +- .../src/getSopClassHandlerModule.ts | 5 ++++- .../src/utils/addSRAnnotation.ts | 14 ++++++++++++++ modes/longitudinal/src/initToolGroups.js | 3 --- modes/usAnnotation/src/initToolGroups.js | 3 --- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/extensions/cornerstone-dicom-sr/src/components/OHIFCornerstoneSRMeasurementViewport.tsx b/extensions/cornerstone-dicom-sr/src/components/OHIFCornerstoneSRMeasurementViewport.tsx index 740ae90da..9d6b8f213 100644 --- a/extensions/cornerstone-dicom-sr/src/components/OHIFCornerstoneSRMeasurementViewport.tsx +++ b/extensions/cornerstone-dicom-sr/src/components/OHIFCornerstoneSRMeasurementViewport.tsx @@ -86,7 +86,7 @@ function OHIFCornerstoneSRMeasurementViewport(props) { const { presentationIds } = viewportOptions; const measurement = srDisplaySet.measurements[newMeasurementSelected]; setPositionPresentation(presentationIds.positionPresentationId, { - viewReference: { + viewReference: measurement.viewReference || { referencedImageId: measurement.imageId, }, }); diff --git a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.ts b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.ts index 2143ca549..0fc3d3fb9 100644 --- a/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.ts +++ b/extensions/cornerstone-dicom-sr/src/getSopClassHandlerModule.ts @@ -35,6 +35,7 @@ const sopClassUids = [ sopClassDictionary.BasicTextSR, sopClassDictionary.EnhancedSR, sopClassDictionary.ComprehensiveSR, + sopClassDictionary.Comprehensive3DSR, ]; const validateSameStudyUID = (uid: string, instances): void => { @@ -53,7 +54,7 @@ const validateSameStudyUID = (uid: string, instances): void => { * @param instances is a list of instances from THIS series that are not * in this DICOM SR Display Set already. */ -function addInstances(instances: InstanceMetadata[], displaySetService: DisplaySetService) { +function addInstances(instances: InstanceMetadata[], _displaySetService: DisplaySetService) { this.instances.push(...instances); utils.sortStudyInstances(this.instances); // The last instance is the newest one, so is the one most interesting. @@ -288,6 +289,8 @@ function _checkIfCanAddMeasurementsToDisplaySet( is3DMeasurement && _measurementBelongsToDisplaySet({ measurement, displaySet: newDisplaySet }) ) { + _measurementBelongsToDisplaySet({ measurement, displaySet: newDisplaySet }) + addSRAnnotation(measurement, null, null); measurement.loaded = true; measurement.displaySetInstanceUID = newDisplaySet.displaySetInstanceUID; diff --git a/extensions/cornerstone-dicom-sr/src/utils/addSRAnnotation.ts b/extensions/cornerstone-dicom-sr/src/utils/addSRAnnotation.ts index 03b53b226..52b1425d1 100644 --- a/extensions/cornerstone-dicom-sr/src/utils/addSRAnnotation.ts +++ b/extensions/cornerstone-dicom-sr/src/utils/addSRAnnotation.ts @@ -21,6 +21,7 @@ export default function addSRAnnotation(measurement, imageId, frameNumber) { /** TODO: Read the tool name from the DICOM SR identification type in the future. */ let frameOfReferenceUID = null; + let planeRestriction = null; if (imageId) { const imagePlaneModule = metaData.get('imagePlaneModule', imageId); @@ -37,8 +38,20 @@ export default function addSRAnnotation(measurement, imageId, frameNumber) { // get the ReferencedFrameOfReferenceUID from the measurement frameOfReferenceUID = measurement.coords[0].ReferencedFrameOfReferenceSequence; + + planeRestriction = { + FrameOfReferenceUID: frameOfReferenceUID, + point: graphicTypePoints[0][0], + }; } + // Store the view reference for use in initial navigation + measurement.viewReference = { + planeRestriction, + FrameOfReferenceUID: frameOfReferenceUID, + referencedImageId: imageId, + }; + const SRAnnotation: Types.Annotation = { annotationUID: TrackingUniqueIdentifier, highlighted: false, @@ -46,6 +59,7 @@ export default function addSRAnnotation(measurement, imageId, frameNumber) { invalidated: false, metadata: { toolName, + planeRestriction, valueType, graphicType, FrameOfReferenceUID: frameOfReferenceUID, diff --git a/modes/longitudinal/src/initToolGroups.js b/modes/longitudinal/src/initToolGroups.js index 110f5bdd0..6bc48719b 100644 --- a/modes/longitudinal/src/initToolGroups.js +++ b/modes/longitudinal/src/initToolGroups.js @@ -87,9 +87,6 @@ function initDefaultToolGroup(extensionManager, toolGroupService, commandsManage enabled: [ { toolName: toolNames.ImageOverlayViewer }, { toolName: toolNames.ReferenceLines }, - { - toolName: SRToolNames.SRSCOORD3DPoint, - }, ], disabled: [ { diff --git a/modes/usAnnotation/src/initToolGroups.js b/modes/usAnnotation/src/initToolGroups.js index 5f1c9396d..aebe67961 100644 --- a/modes/usAnnotation/src/initToolGroups.js +++ b/modes/usAnnotation/src/initToolGroups.js @@ -88,9 +88,6 @@ function initDefaultToolGroup(extensionManager, toolGroupService, commandsManage enabled: [ { toolName: toolNames.ImageOverlayViewer }, { toolName: toolNames.ReferenceLines }, - { - toolName: SRToolNames.SRSCOORD3DPoint, - }, ], disabled: [ {