diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue index f1bcdfaf..09310261 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/ReadPage.vue @@ -781,91 +781,98 @@ export default { }, // 加载检查及标注信息 async loadTaskDetails(taskInfo, taskIndex) { - try { - const sujectVisitId = taskInfo.VisitId - const taskId = taskInfo.VisitTaskId - // 获取检查信息 - const keyImages = [] - const res1 = await getReadingVisitStudyList(this.trialId, sujectVisitId, taskId) - let keyStudyIndex = -1 - let keySeriesIndex = -1 - // const arr = [res1.Result[0]] - const arr = res1.Result - arr.forEach((study, studyIndex) => { - study.SeriesList.forEach((series, seriesIndex) => { - const imageIds = [] - const stack = [] - series.InstanceInfoList.forEach((instance, instanceIndex) => { - if (study.IsCriticalSequence) { - keyStudyIndex = studyIndex - keySeriesIndex = seriesIndex - keyImages.push({ Id: instance.Id, Path: instance.Path, KeyFramesList: instance.KeyFramesList, KeyStudyIndex: studyIndex, KeySeriesIndex: seriesIndex }) - } else { - const i = keyImages.findIndex(k => k.Id === instance.Id) - if (i > -1) { - keyImages[i].StudyIndex = studyIndex - keyImages[i].SeriesIndex = seriesIndex - } - const nFrames = instance.NumberOfFrames || 0 - if (nFrames === 0) { - // 单帧 - stack.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${taskId}`) + return new Promise(async (resolve, reject)=>{ + try { + const sujectVisitId = taskInfo.VisitId + const taskId = taskInfo.VisitTaskId + // 获取检查信息 + const keyImages = [] + const res1 = await getReadingVisitStudyList(this.trialId, sujectVisitId, taskId) + let keyStudyIndex = -1 + let keySeriesIndex = -1 + const arr = res1.Result + arr.forEach((study, studyIndex) => { + study.SeriesList.forEach((series, seriesIndex) => { + const imageIds = [] + const stack = [] + series.InstanceInfoList.forEach((instance, instanceIndex) => { + if (study.IsCriticalSequence) { + keyStudyIndex = studyIndex + keySeriesIndex = seriesIndex + keyImages.push({ Id: instance.Id, Path: instance.Path, KeyFramesList: instance.KeyFramesList, KeyStudyIndex: studyIndex, KeySeriesIndex: seriesIndex }) } else { - // 多帧 - for (let i = 0; i < nFrames; i++) { - const newImageId = `wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}&frame=${i + 1}` - stack.push(newImageId) + const i = keyImages.findIndex(k => k.Id === instance.Id) + if (i > -1) { + keyImages[i].StudyIndex = studyIndex + keyImages[i].SeriesIndex = seriesIndex } + const nFrames = instance.NumberOfFrames || 0 + if (nFrames === 0) { + // 单帧 + stack.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}`) + } else { + // 多帧 + for (let i = 0; i < nFrames; i++) { + const newImageId = `wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}&frame=${i + 1}` + stack.push(newImageId) + } + } + imageIds.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}`) + this.instanceInfo[instance.Id] = { taskIndex, studyIndex, seriesIndex } } - imageIds.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}`) - this.instanceInfo[instance.Id] = { taskIndex, studyIndex, seriesIndex } - } - }) - series.Stack = stack - series.ImageIds = imageIds - series.SliceIndex = 0 - series.LoadedImageCount = 0 - series.LoadedImageProgress = 0 - series.TaskInfo = Object.assign({}, taskInfo) - series.StudyIndex = studyIndex - series.SeriesIndex = seriesIndex - }) - }) - if (keyStudyIndex > -1 && keySeriesIndex > -1 && keyImages.length > 0) { - const keyImageIds = [] - keyImages.forEach(instance => { - if (instance.KeyFramesList.length > 0) { - instance.KeyFramesList.map(i => { - keyImageIds.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${taskId}&frame=${i}`) }) - } else { - keyImageIds.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${taskId}`) - } + series.Stack = stack + series.ImageIds = imageIds + series.SliceIndex = 0 + series.LoadedImageCount = 0 + series.LoadedImageProgress = 0 + series.TaskInfo = Object.assign({}, taskInfo) + series.StudyIndex = studyIndex + series.SeriesIndex = seriesIndex + }) }) - res1.Result[keyStudyIndex].SeriesList[keySeriesIndex].ImageIds = keyImageIds - } - // 获取标注信息 - let res2 = null - if (this.criterionType === 0) { - res2 = await getCustomTag({ visitTaskId: taskId }) - } else { - res2 = await getTableAnswerRowInfoList(taskId) - } - const annotationUIDs = [] - const annotations = res2.Result.map(i => { - if (typeof i.MeasureData === 'string' && i.MeasureData) { - i.MeasureData = JSON.parse(i.MeasureData) - if (this.criterionType === 0) { - i.MeasureData.id = i.Id - } - annotationUIDs.push(i.MeasureData.annotationUID) + if (keyStudyIndex > -1 && keySeriesIndex > -1 && keyImages.length > 0) { + const keyImageIds = [] + const keyStack = [] + keyImages.forEach(instance => { + if (instance.KeyFramesList.length > 0) { + instance.KeyFramesList.map(i => { + keyStack.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}&frame=${i}`) + }) + } else { + keyStack.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}`) + } + keyImageIds.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}`) + }) + res1.Result[keyStudyIndex].SeriesList[keySeriesIndex].ImageIds = keyImageIds + res1.Result[keyStudyIndex].SeriesList[keySeriesIndex].Stack = keyStack } - return i - }) - return { studyList: arr, annotations: annotations, annotationUIDs, keyImages } - } catch (e) { - console.log(e) - } + // 获取标注信息 + let res2 = null + if (this.criterionType === 0) { + res2 = await getCustomTag({ visitTaskId: taskId }) + } else { + res2 = await getTableAnswerRowInfoList(taskId) + } + const annotationUIDs = [] + const annotations = res2.Result.map(i => { + if (typeof i.MeasureData === 'string' && i.MeasureData) { + i.MeasureData = JSON.parse(i.MeasureData) + if (this.criterionType === 0) { + i.MeasureData.id = i.Id + } + annotationUIDs.push(i.MeasureData.annotationUID) + } + return i + }) + // return { studyList: arr, annotations: annotations, annotationUIDs, keyImages } + resolve({ studyList: arr, annotations: annotations, annotationUIDs, keyImages }) + } catch (e) { + console.log(e) + reject(e) + } + }) + }, // 设置初始化序列信息 setInitSeries() { diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/Recist/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/Recist/QuestionList.vue index c268e36d..cd1a5e0e 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/Recist/QuestionList.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/Recist/QuestionList.vue @@ -1278,7 +1278,7 @@ export default { studyId: measureData ? measureData.studyId : '', seriesId: measureData ? measureData.seriesId : '', instanceId: measureData ? measureData.instanceId : '', - numberOfFrames: measureData ? measureData.frame : null, + numberOfFrames: measureData ? measureData.numberOfFrames : null, picturePath: picturePath, organInfoId: innerForm.OrganInfoId, markTool: measureData ? measureData.markTool : '', diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/StudyList.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/StudyList.vue index d4af2175..2820034e 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/StudyList.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/StudyList.vue @@ -190,15 +190,15 @@ export default { const stack = [] if (nFrames === 0) { // 单帧 - stack.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${taskId}`) + stack.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}`) } else { // 多帧 for (let i = 0; i < nFrames; i++) { - const newImageId = `wadouri:${this.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${taskId}&frame=${i + 1}` + const newImageId = `wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}&frame=${i + 1}` stack.push(newImageId) } } - imageIds.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?instanceId=${instance.Id}&visitTaskId=${taskId}`) + imageIds.push(`wadouri:${this.OSSclientConfig.basePath}${instance.Path}?visitTaskId=${taskId}&instanceId=${instance.Id}`) obj.Stack = stack obj.ImageIds = imageIds obj.SliceIndex = 0 diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/Viewport.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/Viewport.vue index b9be9636..8086632b 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/Viewport.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/Viewport.vue @@ -354,7 +354,8 @@ export default { if (this.series && obj.Id === this.series.Id && obj.Description === this.series.Description && !isLocate) { obj.SliceIndex = this.series.SliceIndex } - if (isLocate && obj.SliceIndex === this.series.SliceIndex) return + // if (isLocate && obj.SliceIndex === this.series.SliceIndex) return + if (this.series?.Stack && obj.Stack[obj.SliceIndex] === this.series.Stack[this.series.SliceIndex]) return this.series = { ...obj } const renderingEngine = getRenderingEngine(this.renderingEngineId) const viewport = renderingEngine.getViewport(this.viewportId) diff --git a/src/views/trials/trials-panel/reading/dicoms3D/components/mRecist/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms3D/components/mRecist/QuestionList.vue index 9a33c840..1cb9919f 100644 --- a/src/views/trials/trials-panel/reading/dicoms3D/components/mRecist/QuestionList.vue +++ b/src/views/trials/trials-panel/reading/dicoms3D/components/mRecist/QuestionList.vue @@ -1364,7 +1364,7 @@ export default { studyId: measureData ? measureData.studyId : '', seriesId: measureData ? measureData.seriesId : '', instanceId: measureData ? measureData.instanceId : '', - numberOfFrames: measureData ? measureData.frame : null, + numberOfFrames: measureData ? measureData.numberOfFrames : null, picturePath: picturePath, organInfoId: innerForm.OrganInfoId, markTool: measureData ? measureData.markTool : '',