多帧图像保存病灶更改及关键帧渲染更改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
a6b5d0b196
commit
0a428bf954
|
@ -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() {
|
||||
|
|
|
@ -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 : '',
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 : '',
|
||||
|
|
Loading…
Reference in New Issue