[OHIF-235] Lazy processing of DICOM SR for viewport. (#1849)

* Only process SR on consumption of viewport.

* remove debugger

Co-authored-by: Danny Brown <danny.ri.brown@gmail.com>
This commit is contained in:
James PettsandDanny Brown authored and GitHub committed 2020-07-02 10:17:04 -04:00
1 parent f24f0bb11d
commit c36f853a38
4 files changed
+32 -15

No files matched your search

@@ -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;
@@ -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(
@@ -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)
);