@@ -163,7 +163,8 @@
-
{{ $t("trials:reading:Segmentations:button:save") }}
@@ -253,7 +254,8 @@
-
+
{{ $t("trials:reading:Segmentations:button:saveAll") }}
@@ -1537,7 +1539,7 @@ export default {
segmentGroup.segUrl = this.$getObjectName(result.url)
DicomEvent.$emit("IsBeSegment", { StudyId: this.series.StudyId, Id: this.series.Id, IsBeSegment: true })
} else {
- segmentGroup.segUrl = null
+ return this.$confirm(this.$t("segment:saveSegmention:notSEG"))
}
this.addOrUpdateSegmentation({ name: segmentGroup.name, id: segmentGroup.segmentationId, url: segmentGroup.segUrl })
diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/helpers/segmentations.js b/src/views/trials/trials-panel/reading/dicoms3D/components/helpers/segmentations.js
index 6a33e468..9208de86 100644
--- a/src/views/trials/trials-panel/reading/dicoms3D/components/helpers/segmentations.js
+++ b/src/views/trials/trials-panel/reading/dicoms3D/components/helpers/segmentations.js
@@ -112,6 +112,7 @@ async function loadSegmentation(arrayBuffer, series, segmentationId) {
})
const megmentGroup =
segmentation.state.getSegmentation(segmentationId);
+ if (!megmentGroup) return false
const { imageIds } = megmentGroup.representationData.Labelmap;
const derivedSegmentationImages = imageIds.map(imageId =>
cache.getImage(imageId)
@@ -226,10 +227,11 @@ async function readingSegmentByConfig(series, visitInfo, viewportId, segmentatio
)
}
function selectSegmentation(viewportId, segmentationId) {
+ if (!segmentation.state.getSegmentation(segmentationId)) return false
segmentation.activeSegmentation.setActiveSegmentation(viewportId, segmentationId)
}
function selectSegment(viewportId, segmentationId, segmentIndex) {
- if (!segmentIndex || !segmentationId) return false
+ if (!segmentIndex || !segmentationId || !segmentation.state.getSegmentation(segmentationId)) return false
selectSegmentation(viewportId, segmentationId)
segmentation.segmentIndex.setActiveSegmentIndex(segmentationId, segmentIndex);
}
@@ -354,63 +356,66 @@ async function renderSegmentation(series, visitInfo, viewportId, SegmentConfig,
PageSize: 9999,
PageIndex: 1,
}
- let res = await getSegmentationList(data);
- if (res.IsSuccess) {
- let list = res.Result.CurrentPageData;
- for (let i = 0; i < list.length; i++) {
- let item = list[i]
- if (!segmentationId) segmentationId = item.Id
- await createSegmentation(viewportId, series.SeriesInstanceUid, item.Id)
- if (item.SEGUrl) await readSegmentation(item.SEGUrl, series, item.Id)
- createSegmentationRepresentation(viewportId, item.Id)
- if (!viewportInfo[viewportId]) {
- viewportInfo[viewportId] = [item.Id]
- } else {
- viewportInfo[viewportId].push(item.Id)
- }
- let params = {
- SegmentationId: item.Id,
- PageSize: 9999,
- PageIndex: 1,
- }
- let r = await getSegmentList(params)
- if (r.IsSuccess) {
- let segments = r.Result.CurrentPageData
- segments.forEach(s => {
- if (!segmentIndex) segmentIndex = s.SegmentNumber
- let SegmentJson = s.SegmentJson ? JSON.parse(s.SegmentJson) : {};
- segmentation.segmentIndex.setActiveSegmentIndex(s.SegmentationId, s.SegmentNumber);
- segmentation.config.color.setSegmentIndexColor(viewportId, s.SegmentationId, s.SegmentNumber, hex2Rgb(s.ColorRgb))
- segmentation.segmentLocking.setSegmentIndexLocked(s.SegmentationId, s.SegmentNumber, s.IsLock)
- if (SegmentJson.bidirectional) {
- let an = annotation.state.getAllAnnotations().find(i => i.metadata.segmentationId === s.SegmentationId && i.metadata.segmentIndex === SegmentJson.bidirectional.segmentIndex && i.metadata.toolName === "SegmentBidirectional");
- if (!an) {
- let { majorAxis, minorAxis } = SegmentJson.bidirectional
- // createSegmentConfiguration(s.SegmentNumber, s.SegmentationId, viewportId, actionConfiguration)
- SegmentBidirectionalTool.hydrate(viewportId, [majorAxis, minorAxis], {
- segmentIndex: s.SegmentNumber,
- segmentationId: s.SegmentationId,
- })
+ setTimeout(async () => {
+ let res = await getSegmentationList(data);
+ if (res.IsSuccess) {
+ let list = res.Result.CurrentPageData;
+ for (let i = 0; i < list.length; i++) {
+ let item = list[i]
+ if (!segmentationId) segmentationId = item.Id
+ await createSegmentation(viewportId, series.SeriesInstanceUid, item.Id)
+ if (item.SEGUrl) await readSegmentation(item.SEGUrl, series, item.Id)
+ createSegmentationRepresentation(viewportId, item.Id)
+ if (!viewportInfo[viewportId]) {
+ viewportInfo[viewportId] = [item.Id]
+ } else {
+ viewportInfo[viewportId].push(item.Id)
+ }
+ let params = {
+ SegmentationId: item.Id,
+ PageSize: 9999,
+ PageIndex: 1,
+ }
+ let r = await getSegmentList(params)
+ if (r.IsSuccess) {
+ let segments = r.Result.CurrentPageData
+ segments.forEach(s => {
+ if (!segmentIndex) segmentIndex = s.SegmentNumber
+ let SegmentJson = s.SegmentJson ? JSON.parse(s.SegmentJson) : {};
+ segmentation.segmentIndex.setActiveSegmentIndex(s.SegmentationId, s.SegmentNumber);
+ segmentation.config.color.setSegmentIndexColor(viewportId, s.SegmentationId, s.SegmentNumber, hex2Rgb(s.ColorRgb))
+ segmentation.segmentLocking.setSegmentIndexLocked(s.SegmentationId, s.SegmentNumber, s.IsLock)
+ if (SegmentJson.bidirectional) {
+ let an = annotation.state.getAllAnnotations().find(i => i.metadata.segmentationId === s.SegmentationId && i.metadata.segmentIndex === SegmentJson.bidirectional.segmentIndex && i.metadata.toolName === "SegmentBidirectional");
+ if (!an) {
+ let { majorAxis, minorAxis } = SegmentJson.bidirectional
+ // createSegmentConfiguration(s.SegmentNumber, s.SegmentationId, viewportId, actionConfiguration)
+ SegmentBidirectionalTool.hydrate(viewportId, [majorAxis, minorAxis], {
+ segmentIndex: s.SegmentNumber,
+ segmentationId: s.SegmentationId,
+ })
+ }
+ an = annotation.state.getAllAnnotations().find(i => i.metadata.segmentationId === s.SegmentationId && i.metadata.segmentIndex === SegmentJson.bidirectional.segmentIndex && i.metadata.toolName === "SegmentBidirectional");
+ if (an) {
+ annotation.locking.setAnnotationLocked(an.annotationUID, true)
+ annotation.visibility.setAnnotationVisibility(an.annotationUID, true)
+ }
}
- an = annotation.state.getAllAnnotations().find(i => i.metadata.segmentationId === s.SegmentationId && i.metadata.segmentIndex === SegmentJson.bidirectional.segmentIndex && i.metadata.toolName === "SegmentBidirectional");
- if (an) {
- annotation.locking.setAnnotationLocked(an.annotationUID, true)
- annotation.visibility.setAnnotationVisibility(an.annotationUID, true)
- }
- }
- })
- }
- if (segmentationId && segmentIndex) {
- selectSegment(viewportId, segmentationId, segmentIndex)
- }
+ })
+ }
+ if (segmentationId && segmentIndex) {
+ selectSegment(viewportId, segmentationId, segmentIndex)
+ }
- if (Segment) {
- jumpBidirectional(Segment, viewportId, series.SeriesInstanceUid)
+ if (Segment) {
+ jumpBidirectional(Segment, viewportId, series.SeriesInstanceUid)
+ }
}
}
- }
- readingSegmentByConfig(series, visitInfo, viewportId, segmentationId, SegmentConfig)
+ readingSegmentByConfig(series, visitInfo, viewportId, segmentationId, SegmentConfig)
+ }, 500)
+
} catch (err) {
console.log(err)
}