Re IDC #2935: fix parsing of Instance-level qualitative annotations (#2940)

This commit is contained in:
Davide Punzo 2022-09-19 12:29:28 +02:00 committed by GitHub
parent 4546ede9bb
commit e2f4f95222
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 12 deletions

View File

@ -32,7 +32,6 @@ export default {
const ExtendedSegmentationPanel = props => { const ExtendedSegmentationPanel = props => {
const { activeContexts } = api.hooks.useAppContext(); const { activeContexts } = api.hooks.useAppContext();
const onDisplaySetLoadFailureHandler = error => { const onDisplaySetLoadFailureHandler = error => {
LoggerService.error({ error, message: error.message }); LoggerService.error({ error, message: error.message });
UINotificationService.show({ UINotificationService.show({

View File

@ -7,10 +7,12 @@ const getReferencedImagesList = ImagingMeasurementReportContentSequence => {
const ImageLibrary = ImagingMeasurementReportContentSequence.find( const ImageLibrary = ImagingMeasurementReportContentSequence.find(
item => item =>
item.ConceptNameCodeSequence.CodeValue === item.ConceptNameCodeSequence.CodeValue ===
CodeNameCodeSequenceValues.ImageLibrary CodeNameCodeSequenceValues.ImageLibrary ||
item.ConceptNameCodeSequence.CodeValue ===
CodeNameCodeSequenceValues.ImagingMeasurements
); );
if (!ImageLibrary.ContentSequence) { if (!ImageLibrary || !ImageLibrary.ContentSequence) {
return referencedImages; return referencedImages;
} }
@ -19,9 +21,15 @@ const getReferencedImagesList = ImagingMeasurementReportContentSequence => {
).find( ).find(
item => item =>
item.ConceptNameCodeSequence.CodeValue === item.ConceptNameCodeSequence.CodeValue ===
CodeNameCodeSequenceValues.ImageLibraryGroup CodeNameCodeSequenceValues.ImageLibraryGroup ||
item.ConceptNameCodeSequence.CodeValue ===
CodeNameCodeSequenceValues.MeasurementGroup
); );
if (!ImageLibraryGroup || !ImageLibraryGroup.ContentSequence) {
return referencedImages;
}
getSequenceAsArray(ImageLibraryGroup.ContentSequence).forEach(item => { getSequenceAsArray(ImageLibraryGroup.ContentSequence).forEach(item => {
const { ReferencedSOPSequence } = item; const { ReferencedSOPSequence } = item;
if (ReferencedSOPSequence) { if (ReferencedSOPSequence) {

View File

@ -21,16 +21,32 @@ const parseDicomStructuredReport = (
displaySets, displaySets,
external external
) => { ) => {
if (external && external.servicesManager) {
parseSCOORD3D({ servicesManager: external.servicesManager, displaySets });
}
// Get the dicom data as an Object // Get the dicom data as an Object
const dicomData = dcmjs.data.DicomMessage.readFile(part10SRArrayBuffer); const dicomData = dcmjs.data.DicomMessage.readFile(part10SRArrayBuffer);
const dataset = dcmjs.data.DicomMetaDictionary.naturalizeDataset( const dataset = dcmjs.data.DicomMetaDictionary.naturalizeDataset(
dicomData.dict dicomData.dict
); );
const {
LoggerService,
UINotificationService,
} = external.servicesManager.services;
if (external && external.servicesManager) {
try {
parseSCOORD3D({ servicesManager: external.servicesManager, displaySets });
} catch (error) {
const seriesDescription = dataset.SeriesDescription || '';
LoggerService.error({ error, message: error.message });
UINotificationService.show({
title: `Failed to parse ${seriesDescription} SR display set`,
message: error.message,
type: 'error',
autoClose: false,
});
return;
}
}
const { MeasurementReport } = dcmjs.adapters.Cornerstone; const { MeasurementReport } = dcmjs.adapters.Cornerstone;
let storedMeasurementByToolType; let storedMeasurementByToolType;
@ -38,11 +54,12 @@ const parseDicomStructuredReport = (
storedMeasurementByToolType = MeasurementReport.generateToolState(dataset); storedMeasurementByToolType = MeasurementReport.generateToolState(dataset);
} catch (error) { } catch (error) {
const seriesDescription = dataset.SeriesDescription || ''; const seriesDescription = dataset.SeriesDescription || '';
LogManager.publish(LogManager.EVENTS.OnLog, { LoggerService.error({ error, message: error.message });
UINotificationService.show({
title: `Failed to parse ${seriesDescription} measurement report`, title: `Failed to parse ${seriesDescription} measurement report`,
type: 'warning', message: error.message,
message: error.message || '', type: 'error',
notify: true, autoClose: false,
}); });
return; return;
} }