diff --git a/extensions/dicom-sr/src/OHIFCornerstoneSRViewport.js b/extensions/dicom-sr/src/OHIFCornerstoneSRViewport.js index 5f71ce062..d936f87bb 100644 --- a/extensions/dicom-sr/src/OHIFCornerstoneSRViewport.js +++ b/extensions/dicom-sr/src/OHIFCornerstoneSRViewport.js @@ -106,6 +106,13 @@ function OHIFCornerstoneSRViewport({ setElement(targetElement); }; + useEffect(() => { + if (!displaySet.isLoaded) { + displaySet.load(); + setIsHydrated(displaySet.isHydrated); + } + }, [displaySet]); + const setTrackingUniqueIdentifiersForElement = useCallback(targetElement => { const { measurements } = displaySet; diff --git a/extensions/dicom-sr/src/getSopClassHandlerModule.js b/extensions/dicom-sr/src/getSopClassHandlerModule.js index 01ff35ecc..a2c8748d6 100644 --- a/extensions/dicom-sr/src/getSopClassHandlerModule.js +++ b/extensions/dicom-sr/src/getSopClassHandlerModule.js @@ -55,10 +55,6 @@ function _getDisplaySetsFromSeries( throw new Error('No instances were provided'); } - const { DisplaySetService, MeasurementService } = servicesManager.services; - const dataSources = extensionManager.getDataSources(); - const dataSource = dataSources[0]; - const instance = instances[0]; const { @@ -68,8 +64,8 @@ function _getDisplaySetsFromSeries( SeriesDescription, SeriesNumber, SeriesDate, + ConceptNameCodeSequence, } = instance; - const { ConceptNameCodeSequence, ContentSequence } = instance; if ( !ConceptNameCodeSequence || @@ -93,22 +89,36 @@ function _getDisplaySetsFromSeries( SeriesInstanceUID, StudyInstanceUID, SOPClassHandlerId: `${id}.sopClassHandlerModule.${sopClassHandlerName}`, - referencedImages: _getReferencedImagesList(ContentSequence), - measurements: _getMeasurements(ContentSequence), + referencedImages: null, + measurements: null, + isDerivedDisplaySet: true, + isLoaded: false, sopClassUids, + instance, }; + displaySet.load = () => _load(displaySet, servicesManager, extensionManager); + + return [displaySet]; +} + +function _load(displaySet, servicesManager, extensionManager) { + const { DisplaySetService, MeasurementService } = servicesManager.services; + const dataSources = extensionManager.getDataSources(); + const dataSource = dataSources[0]; + + const { ContentSequence } = displaySet.instance; + + displaySet.referencedImages = _getReferencedImagesList(ContentSequence); + displaySet.measurements = _getMeasurements(ContentSequence); + const mappings = MeasurementService.getSourceMappings( 'CornerstoneTools', '4' ); - if (isRehydratable(displaySet, mappings)) { - displaySet.isLocked = false; - displaySet.isHydrated = false; - } else { - displaySet.isLocked = true; - } + displaySet.isHydrated = false; + displaySet.isLocked = isRehydratable(displaySet, mappings) ? false : true; // Check currently added displaySets and add measurements if the sources exist. DisplaySetService.activeDisplaySets.forEach(activeDisplaySet => { @@ -135,8 +145,6 @@ function _getDisplaySetsFromSeries( }); } ); - - return [displaySet]; } function _checkIfCanAddMeasurementsToDisplaySet( diff --git a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.js b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.js index 9012361d2..24ae3deca 100644 --- a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.js +++ b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.js @@ -40,6 +40,7 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { trackedStudy === m.referenceStudyUID && trackedSeries.includes(m.referenceSeriesUID) ); + const mappedMeasurements = filteredMeasurements.map((m, index) => _mapMeasurementToDisplay(m, index, MeasurementService.VALUE_TYPES) ); diff --git a/platform/viewer/src/components/ViewportGrid.jsx b/platform/viewer/src/components/ViewportGrid.jsx index 7a92ce550..8617ce03a 100644 --- a/platform/viewer/src/components/ViewportGrid.jsx +++ b/platform/viewer/src/components/ViewportGrid.jsx @@ -110,6 +110,7 @@ function ViewerViewportGrid(props) { const displaySet = DisplaySetService.getDisplaySetByUID(displaySetInstanceUID) || {}; + const ViewportComponent = _getViewportComponent( displaySet.SOPClassHandlerId, viewportComponents