有pet影像但无法融合/无法测量的处理

uat_us
caiyiling 2024-04-11 13:38:42 +08:00
parent c29b60cbbe
commit c04aaf2db6
11 changed files with 89 additions and 21 deletions

View File

@ -2810,7 +2810,21 @@ export function saveImageQuality(param) {
data: param
})
}
export function getIsSuvMaxLesion(param) {
return request({
url: `/LuganoCalculate/getIsSuvMaxLesion`,
method: 'post',
data: param
})
}
export function getCanChooseNotMerge(param) {
return request({
url: `/LuganoCalculate/getCanChooseNotMerge`,
method: 'post',
data: param
})
}
export function saveTaskQuestion(saveQuestionType, param) {
return request({
url: `/SaveTaskQuestion/${saveQuestionType}`,

View File

@ -40,6 +40,7 @@ const getters = {
activeSeries: state => state.reading.activeSeries,
lastCanvasTaskId: state => state.reading.lastCanvasTaskId,
imageQuality: state => state.reading.imageQuality,
imageQualityIssues: state => state.reading.imageQualityIssues,
language: state => state.lang.language,
TotalNeedSignSystemDocCount: state => state.user.TotalNeedSignSystemDocCount,
TotalNeedSignTrialDocCount: state => state.user.TotalNeedSignTrialDocCount,

View File

@ -29,7 +29,8 @@ const getDefaultState = () => {
currentReadingTaskState: 2,
activeSeries: {},
lastCanvasTaskId: '',
imageQuality: null
imageQuality: null,
imageQualityIssues: null
}
}
function getQuestions(questions) {
@ -183,6 +184,7 @@ const actions = {
state.activeSeries = {}
state.lastCanvasTaskId = ''
state.imageQuality = null
state.imageQualityIssues = null
resolve()
})
},
@ -875,6 +877,9 @@ const actions = {
setImageQuality({ state }, imageQuality) {
state.imageQuality = isNaN(parseInt(imageQuality)) ? null : parseInt(imageQuality)
},
setImageQualityIssues({ state }, imageQualityIssues) {
state.imageQualityIssues = isNaN(parseInt(imageQualityIssues)) ? null : parseInt(imageQualityIssues)
},
addQuestionMeasuredData({ state }, obj) {
return new Promise(resolve => {
var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)

View File

@ -794,7 +794,7 @@ export default {
},
computed: {
...mapGetters(['visitTaskList', 'currentReadingTaskState', 'lastCanvasTaskId'])
...mapGetters(['visitTaskList', 'currentReadingTaskState', 'lastCanvasTaskId', 'imageQualityIssues'])
},
watch: {
currentReadingTaskState: {
@ -840,6 +840,10 @@ export default {
this.studyList = studyList
}
}
},
imageQualityIssues: {
immediate: true,
handler(v) {}
}
},
@ -961,6 +965,11 @@ export default {
this.petctWindow.close()
}
})
DicomEvent.$on('closePetct', () => {
if (this.petctWindow) {
this.petctWindow.close()
}
})
window.addEventListener('beforeunload', () => {
if (this.petctWindow) {
this.petctWindow.close()
@ -978,6 +987,7 @@ export default {
DicomEvent.$off('readingPageUpdate')
DicomEvent.$off('setReadingState')
DicomEvent.$off('reload')
DicomEvent.$off('closePetct')
if (this.petctWindow) {
this.petctWindow.close()
}
@ -1966,6 +1976,10 @@ export default {
this.$alert(this.$t('components:uploadvideo:message:xf4'))
return
}
if (this.imageQualityIssues && parseInt(this.imageQualityIssues) === 6) {
this.$alert(this.$t('trials:lugano:message:fusionWarn'))
return
}
const i = this.activeTaskInfo.visitTaskIndex
if (i < 0) return
if (this.studyList.length > 0) {

View File

@ -828,7 +828,7 @@ export default {
// 10mm2线
// 15mm2线
var picturePath = ''
if (val && otherMeasureData) {
if (val && otherMeasureData && this.questionForm.IsDicomReading) {
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
}
@ -842,6 +842,7 @@ export default {
}
}
var params = {
computationTrigger: -3,
questionId: this.parentQsId,
rowId: this.questionForm.RowId,
rowIndex: this.answers.RowIndex,

View File

@ -1962,7 +1962,7 @@ export default {
// 10mm2线
// 15mm2线
var picturePath = ''
if (val && measureData) {
if (val && measureData && this.questionForm.IsDicomReading) {
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
}

View File

@ -5,7 +5,7 @@
v-loading="loading"
:model="questionForm"
size="mini"
class="measurement-form"
class="measurement-form"
>
<div class="base-dialog-body">
<div style="display: flex;justify-content: space-between;">
@ -179,7 +179,7 @@
</el-radio-group>
<template v-if="qs.QuestionMark === 20">
<div style="display: flex;flex-direction: row;justify-content: flex-start;">
<el-input
v-if="qs.Type==='calculation'"
v-model="questionForm[qs.Id]"
@ -267,7 +267,7 @@
</el-form>
</template>
<script>
import { submitTableQuestion, deleteReadingRowAnswer } from '@/api/trials'
import { submitTableQuestion, deleteReadingRowAnswer, getIsSuvMaxLesion } from '@/api/trials'
// import { uploadPrintscreen } from '@/api/reading'
import DicomEvent from './../DicomEvent'
import store from '@/store'
@ -1654,18 +1654,12 @@ export default {
}
}
}
// DicomEvent.$emit('imageLocation', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionName, lesionType: this.lesionType }, () => {
// console.log(11111)
// })
// await DicomEvent.$emit('imageLocation', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionName, lesionType: this.lesionType })
// console.log(5555)
DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }, async val => {
// 0线
// 10mm2线
// 15mm2线
var picturePath = ''
if (val && measureData) {
if (val && measureData && this.questionForm.IsDicomReading) {
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
}
@ -1680,6 +1674,7 @@ export default {
}
var params = {
computationTrigger: -2,
questionId: this.parentQsId,
rowId: this.questionForm.RowId,
rowIndex: this.answers.RowIndex,
@ -1789,9 +1784,19 @@ export default {
})
.catch(() => {})
},
handleDelete() {
async handleDelete() {
let message = this.$t('trials:reading:warnning:msg48')
// suvmax
const suvMax = this.getQuestionVal(20)
if (this.questionForm.RowId && !!suvMax) {
const res = await getIsSuvMaxLesion({ visitTaskId: this.visitTaskId, rowId: this.questionForm.RowId })
if (res.IsSuccess && res.Result.IsSuvMaxLesion) {
message = this.$t('trials:reading:warnning:msg58')
}
}
//
this.$confirm(this.$t('trials:reading:warnning:msg48'), {
this.$confirm(message, {
type: 'warning',
distinguishCancelAndClose: true
})

View File

@ -73,6 +73,7 @@
v-else-if="question.Type==='input'"
v-model="questionForm[question.Id]"
:disabled="readingTaskState >= 2 || isFirstChangeTask"
@change="((val)=>{formItemChange(val, question)})"
/>
<!-- 多行文本输入框 -->
<el-input
@ -81,6 +82,7 @@
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:disabled="readingTaskState >= 2 || isFirstChangeTask"
@change="((val)=>{formItemChange(val, question)})"
/>
<!-- 下拉框 -->
<el-select

View File

@ -30,7 +30,7 @@
<script>
// import { uploadPrintscreen } from '@/api/reading'
import { saveTaskQuestion, getSplenicState, getSplenicVerify } from '@/api/trials'
import { saveTaskQuestion, getSplenicState, getSplenicVerify, getCanChooseNotMerge } from '@/api/trials'
import QuestionItem from './QuestionItem'
import DicomEvent from './DicomEvent'
import { mapGetters } from 'vuex'
@ -74,6 +74,7 @@ export default {
readingTaskState: 2,
visitTaskId: '',
imageQualityId: '',
imageQualityIssuesId: '',
measurements: [],
spleenStatusId: '',
spleenLengthId: '',
@ -180,6 +181,11 @@ export default {
this.imageQualityId = v.Id
// store.dispatch('reading/setImageQuality', v.Answer ? v.Answer : null)
}
if (v.QuestionType === 67) {
//
this.imageQualityIssuesId = v.Id
}
if (v.QuestionType === 49) {
//
this.spleenStatusId = v.Id
@ -208,7 +214,9 @@ export default {
}
// this.questions = questions
}
if (this.imageQualityIssuesId) {
store.dispatch('reading/setImageQualityIssues', this.questionForm[this.imageQualityIssuesId])
}
if (this.spleenLengthId && this.spleenInfo && this.readingTaskState < 2) {
this.calculateSpleenStatus = this.setSpleenStatus(this.questionForm[this.spleenLengthId])
this.setSpleenCommentDisplay()
@ -225,6 +233,10 @@ export default {
this.imageQualityId = i.Id
// store.dispatch('reading/setImageQuality', i.Answer ? i.Answer : null)
}
if (i.QuestionType === 67) {
//
this.imageQualityIssuesId = i.Id
}
if (i.QuestionType === 49) {
//
this.spleenStatusId = i.Id
@ -257,7 +269,6 @@ export default {
handleSave() {
this.$refs['questions'].validate(async(valid) => {
if (!valid) return
// lugano
if (this.criterionType === 2 && this.groupClassify === 3) {
//
@ -296,6 +307,15 @@ export default {
} else {
this.saveQuestionsList()
}
} else if (this.criterionType === 2 && this.groupClassify === 1 && this.questionForm[this.imageQualityIssuesId] && parseInt(this.questionForm[this.imageQualityIssuesId]) === 6) {
// PET-CT
const res = await getCanChooseNotMerge({ visitTaskId: this.visitTaskId })
if (res.IsSuccess && !res.Result.IsCanChooseNotMerge) {
this.$alert(this.$t('trials:lugano:saveQuestions:warning1'))
return
} else {
this.saveQuestionsList()
}
} else {
this.saveQuestionsList()
}
@ -330,6 +350,12 @@ export default {
// }
saveTaskQuestion(this.questionType, params).then(async res => {
if (this.imageQualityIssuesId) {
store.dispatch('reading/setImageQualityIssues', this.questionForm[this.imageQualityIssuesId])
if (this.questionForm[this.imageQualityIssuesId] && parseInt(this.questionForm[this.imageQualityIssuesId]) === 6) {
DicomEvent.$emit('closePetct')
}
}
this.$message.success(this.$t('common:message:savedSuccessfully'))
var trialId = this.$route.query.trialId
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: trialId, visitTaskId: this.visitTaskId })

View File

@ -1325,7 +1325,7 @@ export default {
// 15mm2线
var picturePath = ''
if (val && measureData) {
if (val && measureData && this.questionForm.IsDicomReading) {
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''

View File

@ -972,7 +972,7 @@ export default {
DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType }, async val => {
var picturePath = ''
if (val && measureData) {
if (val && measureData && this.questionForm.IsDicomReading) {
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
picturePath = pictureObj.isSuccess ? this.$getObjectName(pictureObj.result.url) : ''
}