From 13b083d2df5f41d6b1611d5857d5b91fa18e6ad4 Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Fri, 28 Jun 2024 15:39:30 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=85=E7=89=87=E9=A1=B5=E9=9D=A2=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=A4=9A=E5=B8=A7=E5=BD=B1=E5=83=8F=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reading/dicoms/components/DicomCanvas.vue | 25 +++++++++---------- .../reading/dicoms/components/DicomViewer.vue | 4 ++- .../reading/dicoms/components/ReadPage.vue | 5 +++- .../reading/dicoms/components/StudyList.vue | 12 +++++---- .../dicoms/customize/CustomizeDicomCanvas.vue | 20 +++++++-------- .../dicoms/customize/CustomizeDicomViewer.vue | 9 ++++--- .../dicoms/customize/CustomizeReadPage.vue | 9 ++++--- .../dicoms/customize/CustomizeStudyList.vue | 16 +++++++----- 8 files changed, 58 insertions(+), 42 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue index 1661966c..2543ece3 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue @@ -222,7 +222,8 @@ export default { taskBlindName: '', frame: null, imageRendered: false, - isExistsClinicalData: false + isExistsClinicalData: false, + isExistMutiFrames: false // preventCache: true }, dicomInfo: { @@ -758,7 +759,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager for (var m = 0; m < this.measuredTools.length; m++) { var toolType = this.measuredTools[m] @@ -880,7 +881,6 @@ export default { return seriesList[seriesIdx].loadStatus ? 1 : 0 }, renderMeasuredData(e) { - this.stack.frame = !isNaN(parseInt(this.stack.frame)) ? parseInt(this.stack.frame) : 0 var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId) if (idx === -1) return this.measureData = this.visitTaskList[idx].MeasureData @@ -899,9 +899,7 @@ export default { } else { cornerstoneTools.setToolEnabledForElement(element, data.MeasureData.type, { mouseButtonMask: 1 }) } - // console.log('renderMeasuredData', this.stack.frame) - - if (this.stack.instanceId.includes(data.InstanceId) && ((data.NumberOfFrames === this.stack.frame) || !data.NumberOfFrames) && data.MeasureData) { + if (this.stack.instanceId.includes(data.InstanceId) && ((this.stack.isExistMutiFrames && data.MeasureData.frame === this.stack.frame) || !data.MeasureData.frame) && data.MeasureData) { const toolState = ToolStateManager.getImageIdToolState(e.detail.image.imageId, data.MeasureData.type) if (toolState && toolState.data.length > 0) { var idx = toolState.data.findIndex(item => item.uuid === data.MeasureData.data.uuid) @@ -988,7 +986,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager for (let t = 0; t < this.measuredTools.length; t++) { var toolType = this.measuredTools[t] @@ -1067,6 +1065,7 @@ export default { this.stack.sliceThickness = dicomSeries.sliceThickness this.stack.instanceCount = dicomSeries.instanceCount this.stack.isExistsClinicalData = dicomSeries.isExistsClinicalData + this.stack.isExistMutiFrames = dicomSeries.isExistMutiFrames // this.measuredData = dicomSeries.measuredData var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === dicomSeries.visitTaskId) this.stack.visitTaskNum = this.visitTaskList[idx].VisitTaskNum @@ -1087,7 +1086,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null this.stack.instanceId = instanceId const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager ToolStateManager.clearImageIdToolState(dicomSeries.imageIds) @@ -1201,7 +1200,7 @@ export default { const imageInfo = this.getInstanceInfo(image.imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null this.stack.instanceId = instanceId this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1) this.resetWwwc() @@ -1276,7 +1275,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null if (this.imageId !== instanceId) { this.getOrientationMarker(e.detail.element) // 初次加载时,如果该影像存在标记,则以标记的窗宽窗位为初始化默认值,否则以序列的窗宽窗位为初始化默认值 @@ -1335,13 +1334,13 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null if (e.detail.toolName === 'Length' || e.detail.toolName === 'ArrowAnnotate' || e.detail.toolName === 'RectangleRoi') { const measureData = {} measureData.studyId = this.stack.studyId measureData.seriesId = this.stack.seriesId measureData.instanceId = instanceId - measureData.frame = this.stack.frame ? this.stack.frame : 0 + measureData.frame = this.stack.frame measureData.data = e.detail.measurementData measureData.type = e.detail.toolName measureData.thick = this.dicomInfo.thick @@ -1455,7 +1454,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null var uuid = measurementData.uuid var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue index 3eeac316..0d7be29a 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue @@ -1582,7 +1582,9 @@ export default { var seriesIdx = studyList[studyIdx].SeriesList.findIndex(s => s.seriesId === seriesId) if (seriesIdx > -1) { var series = studyList[studyIdx].SeriesList[seriesIdx] - var instanceIdx = series.instanceList.findIndex(imageId => !!~imageId.indexOf(instanceId)) + let frame = this.visitTaskList[index].MeasureData[idx].MeasureData.frame + let filterStr = series.isExistMutiFrames ? `frame=${frame}&instanceId=${instanceId}` : `instanceId=${instanceId}` + var instanceIdx = series.imageIds.findIndex(imageId => imageId.includes(filterStr)) if (instanceIdx > -1) { series.imageIdIndex = instanceIdx seriesInfo = series diff --git a/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue b/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue index a406553f..6fcef3b7 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue @@ -464,7 +464,10 @@ export default { var seriesIdx = studyList[studyIdx].SeriesList.findIndex(s => s.seriesId === seriesId) if (seriesIdx > -1) { var series = studyList[studyIdx].SeriesList[seriesIdx] - var instanceIdx = series.instanceList.findIndex(imageId => !!~imageId.indexOf(instanceId)) + // var instanceIdx = series.instanceList.findIndex(imageId => !!~imageId.indexOf(instanceId)) + let frame = this.visitTaskList[index].MeasureData[idx].MeasureData.frame + let filterStr = series.isExistMutiFrames ? `frame=${frame}&instanceId=${instanceId}` : `instanceId=${instanceId}` + var instanceIdx = series.imageIds.findIndex(imageId => imageId.includes(filterStr)) if (instanceIdx > -1) { series.imageIdIndex = instanceIdx // series.studyIndex = studyIdx diff --git a/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue index 48b25480..5c72e181 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue @@ -440,9 +440,10 @@ export default { const sdIndx = studyList.findIndex(sd => sd.StudyId === measureDatas[i].StudyId) const seriesList = studyList[sdIndx].SeriesList const srIdx = seriesList.findIndex(sr => sr.seriesId === measureDatas[i].SeriesId) - // const instanceList = seriesList[srIdx].imageIds - const instanceList = seriesList[srIdx].instanceList - const isIdx = instanceList.findIndex(is => is.includes(measureDatas[i].InstanceId)) + // const instanceList = seriesList[srIdx].instanceList + const imageIds = seriesList[srIdx].imageIds + let filterStr = seriesList[srIdx].isExistMutiFrames ? `frame=${measureDatas[i].MeasureData.frame}&instanceId=${measureDatas[i].InstanceId}` : `instanceId=${measureDatas[i].InstanceId}` + const isIdx = imageIds.findIndex(is => is.includes(filterStr)) const series = seriesList[srIdx] series.imageIdIndex = isIdx @@ -513,8 +514,9 @@ export default { const seriesList = studyList[sdIndx].SeriesList const srIdx = seriesList.findIndex(sr => sr.seriesId === measureDatas[mIdx].SeriesId) // const instanceList = seriesList[srIdx].imageIds - const instanceList = seriesList[srIdx].instanceList - const isIdx = instanceList.findIndex(is => is.includes(measureDatas[mIdx].InstanceId)) + const imageIds = seriesList[srIdx].imageIds + let filterStr = seriesList[srIdx].isExistMutiFrames ? `frame=${measureDatas[mIdx].MeasureData.frame}&instanceId=${measureDatas[mIdx].InstanceId}` : `instanceId=${measureDatas[mIdx].InstanceId}` + const isIdx = imageIds.findIndex(is => is.includes(filterStr)) const series = seriesList[srIdx] series.imageIdIndex = isIdx diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue index 0b68d916..59cde247 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue @@ -221,7 +221,8 @@ export default { taskBlindName: '', frame: null, imageRendered: false, - isExistsClinicalData: false + isExistsClinicalData: false, + isExistMutiFrames: false // preventCache: true }, dicomInfo: { @@ -743,7 +744,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager for (var m = 0; m < this.measuredTools.length; m++) { var toolType = this.measuredTools[m] @@ -865,7 +866,6 @@ export default { return seriesList[seriesIdx].loadStatus ? 1 : 0 }, renderMeasuredData(e) { - this.stack.frame = !isNaN(parseInt(this.stack.frame)) ? parseInt(this.stack.frame) : 0 var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId) if (idx === -1) return this.measureData = this.visitTaskList[idx].MeasureData @@ -886,7 +886,7 @@ export default { } // console.log('renderMeasuredData', this.stack.frame) - if (this.stack.instanceId.includes(data.InstanceId) && ((data.NumberOfFrames === this.stack.frame) || !data.NumberOfFrames) && data.MeasureData) { + if (this.stack.instanceId.includes(data.InstanceId) && ((this.stack.isExistMutiFrames && data.MeasureData.frame === this.stack.frame) || !data.MeasureData.frame) && data.MeasureData) { const toolState = ToolStateManager.getImageIdToolState(e.detail.image.imageId, data.MeasureData.type) if (toolState && toolState.data.length > 0) { var idx = toolState.data.findIndex(item => item.uuid === data.MeasureData.data.uuid) @@ -973,7 +973,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager for (let t = 0; t < this.measuredTools.length; t++) { var toolType = this.measuredTools[t] @@ -1062,7 +1062,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null this.stack.instanceId = instanceId const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager ToolStateManager.clearImageIdToolState(dicomSeries.imageIds) @@ -1176,7 +1176,7 @@ export default { const imageInfo = this.getInstanceInfo(image.imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null this.stack.instanceId = instanceId this.height = (this.stack.currentImageIdIndex) * 100 / (this.stack.imageIds.length - 1) this.resetWwwc() @@ -1251,7 +1251,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null if (this.imageId !== instanceId) { this.getOrientationMarker(e.detail.element) // 初次加载时,如果该影像存在标记,则以标记的窗宽窗位为初始化默认值,否则以序列的窗宽窗位为初始化默认值 @@ -1310,7 +1310,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null if (e.detail.toolName === 'Length' || e.detail.toolName === 'ArrowAnnotate' || e.detail.toolName === 'RectangleRoi') { const measureData = {} measureData.studyId = this.stack.studyId @@ -1430,7 +1430,7 @@ export default { const imageInfo = this.getInstanceInfo(imageId) var instanceId = imageInfo.instanceId var frame = imageInfo.frame - this.stack.frame = !isNaN(parseInt(frame)) ? parseInt(frame) : 0 + this.stack.frame = this.stack.isExistMutiFrames ? parseInt(frame) : null var uuid = measurementData.uuid var idx = this.measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid) diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue index 9856780e..597b513d 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue @@ -1700,9 +1700,12 @@ export default { ); if (seriesIdx > -1) { var series = studyList[studyIdx].SeriesList[seriesIdx]; - var instanceIdx = series.instanceList.findIndex( - (imageId) => !!~imageId.indexOf(instanceId) - ); + let frame = this.visitTaskList[index].MeasureData[idx].MeasureData.frame + let filterStr = series.isExistMutiFrames ? `frame=${frame}&instanceId=${instanceId}` : `instanceId=${instanceId}` + var instanceIdx = series.imageIds.findIndex(imageId => imageId.includes(filterStr)) + // var instanceIdx = series.instanceList.findIndex( + // (imageId) => !!~imageId.indexOf(instanceId) + // ); if (instanceIdx > -1) { series.imageIdIndex = instanceIdx; seriesInfo = series; diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReadPage.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReadPage.vue index 7fb2f8ba..a5ad37d8 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReadPage.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReadPage.vue @@ -607,9 +607,12 @@ export default { ); if (seriesIdx > -1) { var series = studyList[studyIdx].SeriesList[seriesIdx]; - var instanceIdx = series.instanceList.findIndex( - (imageId) => !!~imageId.indexOf(instanceId) - ); + // var instanceIdx = series.instanceList.findIndex( + // (imageId) => !!~imageId.indexOf(instanceId) + // ); + let frame = this.visitTaskList[index].MeasureData[idx].MeasureData.frame + let filterStr = series.isExistMutiFrames ? `frame=${frame}&instanceId=${instanceId}` : `instanceId=${instanceId}` + var instanceIdx = series.imageIds.findIndex(imageId => imageId.includes(filterStr)) if (instanceIdx > -1) { series.imageIdIndex = instanceIdx; // series.studyIndex = studyIdx diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue index 657eb4db..a001807a 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue @@ -415,9 +415,11 @@ export default { const sdIndx = studyList.findIndex(sd => sd.StudyId === measureDatas[i].StudyId) const seriesList = studyList[sdIndx].SeriesList const srIdx = seriesList.findIndex(sr => sr.seriesId === measureDatas[i].SeriesId) - // const instanceList = seriesList[srIdx].imageIds - const instanceList = seriesList[srIdx].instanceList - const isIdx = instanceList.findIndex(is => is.includes(measureDatas[i].InstanceId)) + // const instanceList = seriesList[srIdx].instanceList + // const isIdx = instanceList.findIndex(is => is.includes(measureDatas[i].InstanceId)) + const imageIds = seriesList[srIdx].imageIds + let filterStr = seriesList[srIdx].isExistMutiFrames ? `frame=${measureDatas[i].MeasureData.frame}&instanceId=${measureDatas[i].InstanceId}` : `instanceId=${measureDatas[i].InstanceId}` + const isIdx = imageIds.findIndex(is => is.includes(filterStr)) const series = seriesList[srIdx] series.imageIdIndex = isIdx @@ -487,9 +489,11 @@ export default { if (sdIndx > -1) { const seriesList = studyList[sdIndx].SeriesList const srIdx = seriesList.findIndex(sr => sr.seriesId === measureDatas[mIdx].SeriesId) - // const instanceList = seriesList[srIdx].imageIds - const instanceList = seriesList[srIdx].instanceList - const isIdx = instanceList.findIndex(is => is.includes(measureDatas[mIdx].InstanceId)) + // const instanceList = seriesList[srIdx].instanceList + // const isIdx = instanceList.findIndex(is => is.includes(measureDatas[mIdx].InstanceId)) + const imageIds = seriesList[srIdx].imageIds + let filterStr = seriesList[srIdx].isExistMutiFrames ? `frame=${measureDatas[mIdx].MeasureData.frame}&instanceId=${measureDatas[mIdx].InstanceId}` : `instanceId=${measureDatas[mIdx].InstanceId}` + const isIdx = imageIds.findIndex(is => is.includes(filterStr)) const series = seriesList[srIdx] series.imageIdIndex = isIdx