IDC2361: fix seg combobox filling
This commit is contained in:
parent
d2e75b0f20
commit
e41ba2bfde
@ -298,7 +298,7 @@ const SegmentationPanel = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const filteredReferencedSegDisplaysets = referencedSegDisplaysets.filter(
|
const filteredReferencedSegDisplaysets = referencedSegDisplaysets.filter(
|
||||||
(segDisplay => segDisplay.loadError !== true && segDisplay.isLoaded));
|
(segDisplay => segDisplay.loadError !== true));
|
||||||
|
|
||||||
return filteredReferencedSegDisplaysets.map((displaySet, index) => {
|
return filteredReferencedSegDisplaysets.map((displaySet, index) => {
|
||||||
const {
|
const {
|
||||||
|
|||||||
@ -55,6 +55,7 @@ export default function getSopClassHandlerModule({ servicesManager }) {
|
|||||||
referencedDisplaySetUID: null, // Assigned when loaded.
|
referencedDisplaySetUID: null, // Assigned when loaded.
|
||||||
labelmapIndex: null, // Assigned when loaded.
|
labelmapIndex: null, // Assigned when loaded.
|
||||||
isLoaded: false,
|
isLoaded: false,
|
||||||
|
loadError: false,
|
||||||
hasOverlapping: false,
|
hasOverlapping: false,
|
||||||
SeriesDate,
|
SeriesDate,
|
||||||
SeriesTime,
|
SeriesTime,
|
||||||
@ -68,7 +69,6 @@ export default function getSopClassHandlerModule({ servicesManager }) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
segDisplaySet.load = async function(referencedDisplaySet, studies) {
|
segDisplaySet.load = async function(referencedDisplaySet, studies) {
|
||||||
segDisplaySet.isLoading = true;
|
|
||||||
segDisplaySet.isLoaded = true;
|
segDisplaySet.isLoaded = true;
|
||||||
const { StudyInstanceUID } = referencedDisplaySet;
|
const { StudyInstanceUID } = referencedDisplaySet;
|
||||||
const segArrayBuffer = await DicomLoaderService.findDicomDataPromise(
|
const segArrayBuffer = await DicomLoaderService.findDicomDataPromise(
|
||||||
@ -129,7 +129,6 @@ export default function getSopClassHandlerModule({ servicesManager }) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
segDisplaySet.isLoading = false;
|
|
||||||
return segDisplaySet;
|
return segDisplaySet;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@ -36,14 +36,32 @@ const _getReferencedDisplaySet = (segDisplaySet, studies) => {
|
|||||||
referencedSeriesInstanceUIDs = ReferencedSeriesSequence.map(
|
referencedSeriesInstanceUIDs = ReferencedSeriesSequence.map(
|
||||||
ReferencedSeries => ReferencedSeries.SeriesInstanceUID
|
ReferencedSeries => ReferencedSeries.SeriesInstanceUID
|
||||||
);
|
);
|
||||||
} else {
|
}
|
||||||
const { PerFrameFunctionalGroupsSequence } = metadata;
|
|
||||||
|
|
||||||
|
if (metadata.ReferencedImageSequence &&
|
||||||
|
(!referencedSeriesInstanceUIDs || referencedSeriesInstanceUIDs.length === 0)) {
|
||||||
|
const referencedImageArray = _toArray(metadata.ReferencedImageSequence);
|
||||||
|
for (let i = 0; i < referencedImageArray.length; i++) {
|
||||||
|
const { ReferencedSOPInstanceUID } = referencedImageArray[i];
|
||||||
|
|
||||||
|
referencedSeriesInstanceUIDs = _findReferencedSeriesInstanceUIDsFromSOPInstanceUID(
|
||||||
|
otherDisplaySets,
|
||||||
|
ReferencedSOPInstanceUID
|
||||||
|
);
|
||||||
|
|
||||||
|
if (referencedSeriesInstanceUIDs && referencedSeriesInstanceUIDs.length !== 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!referencedSeriesInstanceUIDs || referencedSeriesInstanceUIDs.length === 0) {
|
||||||
let SourceImageSequence;
|
let SourceImageSequence;
|
||||||
|
|
||||||
if (metadata.SourceImageSequence) {
|
if (metadata.SourceImageSequence) {
|
||||||
SourceImageSequence = metadata.SourceImageSequence;
|
SourceImageSequence = metadata.SourceImageSequence;
|
||||||
} else {
|
} else {
|
||||||
|
const { PerFrameFunctionalGroupsSequence } = metadata;
|
||||||
const firstFunctionalGroups = _toArray(
|
const firstFunctionalGroups = _toArray(
|
||||||
PerFrameFunctionalGroupsSequence
|
PerFrameFunctionalGroupsSequence
|
||||||
)[0];
|
)[0];
|
||||||
@ -52,14 +70,23 @@ const _getReferencedDisplaySet = (segDisplaySet, studies) => {
|
|||||||
SourceImageSequence = DerivationImageSequence;
|
SourceImageSequence = DerivationImageSequence;
|
||||||
}
|
}
|
||||||
|
|
||||||
const firstSourceImage = _toArray(SourceImageSequence)[0];
|
const sourceImageArray = _toArray(SourceImageSequence);
|
||||||
|
for (let i = 0; i < sourceImageArray.length; i++) {
|
||||||
|
const { ReferencedSOPInstanceUID } = sourceImageArray[i];
|
||||||
|
|
||||||
const { ReferencedSOPInstanceUID } = firstSourceImage;
|
referencedSeriesInstanceUIDs = _findReferencedSeriesInstanceUIDsFromSOPInstanceUID(
|
||||||
|
otherDisplaySets,
|
||||||
|
ReferencedSOPInstanceUID
|
||||||
|
);
|
||||||
|
|
||||||
referencedSeriesInstanceUIDs = _findReferencedSeriesInstanceUIDsFromSOPInstanceUID(
|
if (referencedSeriesInstanceUIDs && referencedSeriesInstanceUIDs.length !== 0) {
|
||||||
otherDisplaySets,
|
break;
|
||||||
ReferencedSOPInstanceUID
|
}
|
||||||
);
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!referencedSeriesInstanceUIDs || referencedSeriesInstanceUIDs.length === 0) {
|
||||||
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
const referencedDisplaySet = otherDisplaySets.find(ds =>
|
const referencedDisplaySet = otherDisplaySets.find(ds =>
|
||||||
|
|||||||
@ -47,16 +47,11 @@ export default async function setActiveLabelmap(
|
|||||||
return labelmapIndex;
|
return labelmapIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (displaySet.isLoading) {
|
|
||||||
return activeLabelmapIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!displaySet.isLoaded) {
|
if (!displaySet.isLoaded) {
|
||||||
try {
|
try {
|
||||||
await displaySet.load(referencedDisplaySet, studies);
|
await displaySet.load(referencedDisplaySet, studies);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
displaySet.isLoaded = false;
|
displaySet.isLoaded = false;
|
||||||
displaySet.isLoading = false;
|
|
||||||
displaySet.loadError = true;
|
displaySet.loadError = true;
|
||||||
onDisplaySetLoadFailure(error);
|
onDisplaySetLoadFailure(error);
|
||||||
|
|
||||||
@ -74,8 +69,11 @@ export default async function setActiveLabelmap(
|
|||||||
|
|
||||||
// This might have just been created, so need to use the non-cached value.
|
// This might have just been created, so need to use the non-cached value.
|
||||||
state = cornerstoneTools.getModule('segmentation').state;
|
state = cornerstoneTools.getModule('segmentation').state;
|
||||||
|
|
||||||
brushStackState = state.series[firstImageId];
|
brushStackState = state.series[firstImageId];
|
||||||
brushStackState.activeLabelmapIndex = labelmapIndex;
|
if (brushStackState) {
|
||||||
|
brushStackState.activeLabelmapIndex = labelmapIndex;
|
||||||
|
}
|
||||||
|
|
||||||
refreshViewports();
|
refreshViewports();
|
||||||
callback();
|
callback();
|
||||||
|
|||||||
@ -241,6 +241,7 @@ export class StudyMetadata extends Metadata {
|
|||||||
referencedFrameOfReferenceUID,
|
referencedFrameOfReferenceUID,
|
||||||
} = filter;
|
} = filter;
|
||||||
|
|
||||||
|
let tempReferencedFrameOfReferenceUID = referencedFrameOfReferenceUID;
|
||||||
let filteredDerivedDisplaySets = this._derivedDisplaySets;
|
let filteredDerivedDisplaySets = this._derivedDisplaySets;
|
||||||
|
|
||||||
if (Modality) {
|
if (Modality) {
|
||||||
@ -249,8 +250,9 @@ export class StudyMetadata extends Metadata {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let finalDerivedDisplaySets;
|
||||||
if (referencedSeriesInstanceUID) {
|
if (referencedSeriesInstanceUID) {
|
||||||
filteredDerivedDisplaySets = filteredDerivedDisplaySets.filter(
|
finalDerivedDisplaySets = filteredDerivedDisplaySets.filter(
|
||||||
displaySet => {
|
displaySet => {
|
||||||
if (!displaySet.metadata.ReferencedSeriesSequence) {
|
if (!displaySet.metadata.ReferencedSeriesSequence) {
|
||||||
return false;
|
return false;
|
||||||
@ -270,15 +272,28 @@ export class StudyMetadata extends Metadata {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (referencedFrameOfReferenceUID) {
|
if ((!finalDerivedDisplaySets || finalDerivedDisplaySets.length === 0)
|
||||||
filteredDerivedDisplaySets = filteredDerivedDisplaySets.filter(
|
&& !tempReferencedFrameOfReferenceUID) {
|
||||||
|
const referencedDisplaySets = this._displaySets.filter(
|
||||||
displaySet =>
|
displaySet =>
|
||||||
displaySet.ReferencedFrameOfReferenceUID ===
|
displaySet.SeriesInstanceUID ===
|
||||||
referencedFrameOfReferenceUID
|
referencedSeriesInstanceUID
|
||||||
|
);
|
||||||
|
|
||||||
|
if (referencedDisplaySets[0]) {
|
||||||
|
tempReferencedFrameOfReferenceUID = referencedDisplaySets[0].images[0]._study.FrameOfReferenceUID
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tempReferencedFrameOfReferenceUID) {
|
||||||
|
finalDerivedDisplaySets = filteredDerivedDisplaySets.filter(
|
||||||
|
displaySet =>
|
||||||
|
displaySet.FrameOfReferenceUID ===
|
||||||
|
tempReferencedFrameOfReferenceUID
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return filteredDerivedDisplaySets;
|
return finalDerivedDisplaySets;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -106,11 +106,11 @@ async function loadAndCacheDerivedDisplaySets(referencedDisplaySet, studies, log
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
recentDisplaySet.isLoading = true;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await recentDisplaySet.load(referencedDisplaySet, studies);
|
await recentDisplaySet.load(referencedDisplaySet, studies);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
recentDisplaySet.isLoaded = false;
|
||||||
|
recentDisplaySet.loadError = true;
|
||||||
logger.error({ error, message: error.message });
|
logger.error({ error, message: error.message });
|
||||||
snackbar.show({
|
snackbar.show({
|
||||||
title: 'Error loading derived display set:',
|
title: 'Error loading derived display set:',
|
||||||
|
|||||||
@ -434,6 +434,10 @@ const _checkForSeriesInconsistencesWarnings = async function (displaySet, studie
|
|||||||
}
|
}
|
||||||
|
|
||||||
const sourceDisplaySet = displaySet.getSourceDisplaySet(studies, false);
|
const sourceDisplaySet = displaySet.getSourceDisplaySet(studies, false);
|
||||||
|
if (!sourceDisplaySet) {
|
||||||
|
return warningsList;
|
||||||
|
}
|
||||||
|
|
||||||
const imageIds = sourceDisplaySet.images.map(image => image.getImageId());
|
const imageIds = sourceDisplaySet.images.map(image => image.getImageId());
|
||||||
if (!imageIds || imageIds.length === 0) {
|
if (!imageIds || imageIds.length === 0) {
|
||||||
return warningsList;
|
return warningsList;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user