diff --git a/extensions/default/src/getSopClassHandlerModule.js b/extensions/default/src/getSopClassHandlerModule.js index 902e679a9..1355abd6a 100644 --- a/extensions/default/src/getSopClassHandlerModule.js +++ b/extensions/default/src/getSopClassHandlerModule.js @@ -4,6 +4,7 @@ import { id } from './id'; import getDisplaySetMessages from './getDisplaySetMessages'; import getDisplaySetsFromUnsupportedSeries from './getDisplaySetsFromUnsupportedSeries'; import { chartHandler } from './SOPClassHandlers/chartSOPClassHandler'; +import { metaData } from '@cornerstonejs/core'; const { isImage, @@ -50,11 +51,16 @@ function getDisplaySetInfo(instances) { const timePoint = timePoints[0]; const instancesMap = new Map(); - // O(n) to convert it into a map and O(1) to find each instance - instances.forEach(instance => instancesMap.set(instance.imageId, instance)); - - const firstTimePointInstances = timePoint.map(imageId => instancesMap.get(imageId)); + let firstTimePointInstances; + if (instances[0].NumberOfFrames > 1 && timePoints.length > 1) { + // handle multiframe dynamic volume + firstTimePointInstances = timePoints[0].map(imageId => metaData.get('instance', imageId)); + } else { + // O(n) to convert it into a map and O(1) to find each instance + instances.forEach(instance => instancesMap.set(instance.imageId, instance)); + firstTimePointInstances = timePoint.map(imageId => instancesMap.get(imageId)); + } displaySetInfo = isDisplaySetReconstructable(firstTimePointInstances, appConfig); } else { displaySetInfo = isDisplaySetReconstructable(instances, appConfig);