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