多帧图像保存病灶更改及关键帧渲染更改
continuous-integration/drone/push Build is passing Details

uat
caiyiling 2025-04-25 15:02:13 +08:00
parent a6b5d0b196
commit 0a428bf954
5 changed files with 93 additions and 85 deletions

View File

@ -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() {

View File

@ -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 : '',

View File

@ -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

View File

@ -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)

View File

@ -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 : '',