From ceaf09af74f5727205e5d5869c97114b2c283ae5 Mon Sep 17 00:00:00 2001 From: Davide Punzo Date: Mon, 4 Apr 2022 17:32:24 +0200 Subject: [PATCH] fix: Re IDC #2761 fix loading of segmentations (#258) --- .../adapters/Cornerstone/Segmentation_4X.js | 64 ++++++++++++++----- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/packages/adapters/src/adapters/Cornerstone/Segmentation_4X.js b/packages/adapters/src/adapters/Cornerstone/Segmentation_4X.js index 45f120d337..1837ac323f 100644 --- a/packages/adapters/src/adapters/Cornerstone/Segmentation_4X.js +++ b/packages/adapters/src/adapters/Cornerstone/Segmentation_4X.js @@ -610,37 +610,67 @@ function findReferenceSourceImageId( metadataProvider, tolerance ) { + let imageId = undefined; + + if (!multiframe) { + return imageId; + } + const { FrameOfReferenceUID, PerFrameFunctionalGroupsSequence, SourceImageSequence, ReferencedSeriesSequence } = multiframe; + + if ( + !PerFrameFunctionalGroupsSequence || + PerFrameFunctionalGroupsSequence.length === 0 + ) { + return imageId; + } + const PerFrameFunctionalGroup = PerFrameFunctionalGroupsSequence[frameSegment]; - let imageId = undefined; - let sourceImageSequence; - if (SourceImageSequence) { - sourceImageSequence = multiframe.SourceImageSequence[frameSegment]; + if (!PerFrameFunctionalGroup) { + return imageId; + } + + let frameSourceImageSequence = undefined; + if (SourceImageSequence && SourceImageSequence.length !== 0) { + frameSourceImageSequence = SourceImageSequence[frameSegment]; } else if (PerFrameFunctionalGroup.DerivationImageSequence) { let DerivationImageSequence = PerFrameFunctionalGroup.DerivationImageSequence; - DerivationImageSequence = Array.isArray(DerivationImageSequence) - ? DerivationImageSequence[0] - : DerivationImageSequence; - - sourceImageSequence = DerivationImageSequence.SourceImageSequence; - sourceImageSequence = Array.isArray(sourceImageSequence) - ? sourceImageSequence[0] - : sourceImageSequence; + if (Array.isArray(DerivationImageSequence)) { + if (DerivationImageSequence.length !== 0) { + DerivationImageSequence = DerivationImageSequence[0]; + } else { + DerivationImageSequence = undefined; + } + } + + if (DerivationImageSequence) { + frameSourceImageSequence = + DerivationImageSequence.SourceImageSequence; + if (Array.isArray(frameSourceImageSequence)) { + if (frameSourceImageSequence.length !== 0) { + frameSourceImageSequence = frameSourceImageSequence[0]; + } else { + frameSourceImageSequence = undefined; + } + } + } } - imageId = getImageIdOfSourceImagebySourceImageSequence( - sourceImageSequence, - imageIds, - metadataProvider - ); + if (frameSourceImageSequence) { + imageId = getImageIdOfSourceImagebySourceImageSequence( + frameSourceImageSequence, + imageIds, + metadataProvider + ); + } if (imageId === undefined && ReferencedSeriesSequence) { const referencedSeriesSequence = Array.isArray(ReferencedSeriesSequence)