fix: load 3dsr (#5335)

This commit is contained in:
Bill Wallace 2025-08-15 14:12:34 -04:00 committed by GitHub
parent 730de56a5f
commit becba7861f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 19 additions and 8 deletions

View File

@ -86,7 +86,7 @@ function OHIFCornerstoneSRMeasurementViewport(props) {
const { presentationIds } = viewportOptions; const { presentationIds } = viewportOptions;
const measurement = srDisplaySet.measurements[newMeasurementSelected]; const measurement = srDisplaySet.measurements[newMeasurementSelected];
setPositionPresentation(presentationIds.positionPresentationId, { setPositionPresentation(presentationIds.positionPresentationId, {
viewReference: { viewReference: measurement.viewReference || {
referencedImageId: measurement.imageId, referencedImageId: measurement.imageId,
}, },
}); });

View File

@ -35,6 +35,7 @@ const sopClassUids = [
sopClassDictionary.BasicTextSR, sopClassDictionary.BasicTextSR,
sopClassDictionary.EnhancedSR, sopClassDictionary.EnhancedSR,
sopClassDictionary.ComprehensiveSR, sopClassDictionary.ComprehensiveSR,
sopClassDictionary.Comprehensive3DSR,
]; ];
const validateSameStudyUID = (uid: string, instances): void => { 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 * @param instances is a list of instances from THIS series that are not
* in this DICOM SR Display Set already. * in this DICOM SR Display Set already.
*/ */
function addInstances(instances: InstanceMetadata[], displaySetService: DisplaySetService) { function addInstances(instances: InstanceMetadata[], _displaySetService: DisplaySetService) {
this.instances.push(...instances); this.instances.push(...instances);
utils.sortStudyInstances(this.instances); utils.sortStudyInstances(this.instances);
// The last instance is the newest one, so is the one most interesting. // The last instance is the newest one, so is the one most interesting.
@ -288,6 +289,8 @@ function _checkIfCanAddMeasurementsToDisplaySet(
is3DMeasurement && is3DMeasurement &&
_measurementBelongsToDisplaySet({ measurement, displaySet: newDisplaySet }) _measurementBelongsToDisplaySet({ measurement, displaySet: newDisplaySet })
) { ) {
_measurementBelongsToDisplaySet({ measurement, displaySet: newDisplaySet })
addSRAnnotation(measurement, null, null); addSRAnnotation(measurement, null, null);
measurement.loaded = true; measurement.loaded = true;
measurement.displaySetInstanceUID = newDisplaySet.displaySetInstanceUID; measurement.displaySetInstanceUID = newDisplaySet.displaySetInstanceUID;

View File

@ -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. */ /** TODO: Read the tool name from the DICOM SR identification type in the future. */
let frameOfReferenceUID = null; let frameOfReferenceUID = null;
let planeRestriction = null;
if (imageId) { if (imageId) {
const imagePlaneModule = metaData.get('imagePlaneModule', imageId); const imagePlaneModule = metaData.get('imagePlaneModule', imageId);
@ -37,8 +38,20 @@ export default function addSRAnnotation(measurement, imageId, frameNumber) {
// get the ReferencedFrameOfReferenceUID from the measurement // get the ReferencedFrameOfReferenceUID from the measurement
frameOfReferenceUID = measurement.coords[0].ReferencedFrameOfReferenceSequence; 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 = { const SRAnnotation: Types.Annotation = {
annotationUID: TrackingUniqueIdentifier, annotationUID: TrackingUniqueIdentifier,
highlighted: false, highlighted: false,
@ -46,6 +59,7 @@ export default function addSRAnnotation(measurement, imageId, frameNumber) {
invalidated: false, invalidated: false,
metadata: { metadata: {
toolName, toolName,
planeRestriction,
valueType, valueType,
graphicType, graphicType,
FrameOfReferenceUID: frameOfReferenceUID, FrameOfReferenceUID: frameOfReferenceUID,

View File

@ -87,9 +87,6 @@ function initDefaultToolGroup(extensionManager, toolGroupService, commandsManage
enabled: [ enabled: [
{ toolName: toolNames.ImageOverlayViewer }, { toolName: toolNames.ImageOverlayViewer },
{ toolName: toolNames.ReferenceLines }, { toolName: toolNames.ReferenceLines },
{
toolName: SRToolNames.SRSCOORD3DPoint,
},
], ],
disabled: [ disabled: [
{ {

View File

@ -88,9 +88,6 @@ function initDefaultToolGroup(extensionManager, toolGroupService, commandsManage
enabled: [ enabled: [
{ toolName: toolNames.ImageOverlayViewer }, { toolName: toolNames.ImageOverlayViewer },
{ toolName: toolNames.ReferenceLines }, { toolName: toolNames.ReferenceLines },
{
toolName: SRToolNames.SRSCOORD3DPoint,
},
], ],
disabled: [ disabled: [
{ {