脾脏评估和PET 5PS评估逻辑修改
parent
0e33b60681
commit
1825ac34e1
|
@ -159,6 +159,7 @@ export default {
|
|||
this.loading = true
|
||||
var res = await getReadingCalculationData({ visitTaskId: this.visitTaskId })
|
||||
this.baseLinePET5PS = res.Result.BaseLinePET5PS
|
||||
this.calculatePet5PS = res.Result.CalculatePET5PS
|
||||
this.loading = false
|
||||
}
|
||||
this.initList(true)
|
||||
|
@ -184,7 +185,6 @@ export default {
|
|||
}
|
||||
})
|
||||
this.questions = questions
|
||||
this.calculatePet5PS = this.setpet5PS()
|
||||
this.setPet5PSCommentDisplay()
|
||||
this.measurements = []
|
||||
res.OtherInfo.QuestionMarkInfoList.forEach(i => {
|
||||
|
@ -249,23 +249,7 @@ export default {
|
|||
this.$alert(this.$t('trials:lugano:message:saveWarning1'), this.$t('trials:lugano:fusionDialog:warning'))
|
||||
return
|
||||
}
|
||||
// 肝脏血池SUVmax
|
||||
const liverSUVmax = !isNaN(parseFloat(this.questionForm[this.liverSuvmaxId])) ? parseFloat(this.questionForm[this.liverSuvmaxId]) : 0
|
||||
// 纵膈血池SUVmax
|
||||
const lungSUVmax = !isNaN(parseFloat(this.questionForm[this.lungSuvmaxId])) ? parseFloat(this.questionForm[this.lungSuvmaxId]) : 0
|
||||
// const pet5PS = !isNaN(parseInt(this.questionForm[this.pet5PSId])) ? parseInt(this.questionForm[this.pet5PSId]) : 0
|
||||
if (liverSUVmax && lungSUVmax && (liverSUVmax <= lungSUVmax)) {
|
||||
// '当前肝脏血池SUVmax≤纵隔血池血池SUVmax,请确认!'
|
||||
this.$confirm(this.$t('trials:lugano:message:validLung'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.saveQuestionsForm()
|
||||
}).catch(() => {
|
||||
|
||||
})
|
||||
} else {
|
||||
this.saveQuestionsForm()
|
||||
}
|
||||
this.saveQuestionsForm()
|
||||
// else if (pet5PS > 1 && (!liverSUVmax || !lungSUVmax)) {
|
||||
// this.$alert('pet 5ps评分不为1,X或者NE,需要进行标记!', '提示', {
|
||||
// // confirmButtonText: '确定',
|
||||
|
@ -344,11 +328,11 @@ export default {
|
|||
var idx = this.measurements.findIndex(i => i.QuestionId === Id)
|
||||
if (idx === -1) return
|
||||
this.$set(this.questionForm, Id, '')
|
||||
var pet5PS = this.setpet5PS()
|
||||
this.questionForm[this.pet5PSId] = pet5PS
|
||||
this.calculatePet5PS = pet5PS
|
||||
this.setPet5PSCommentDisplay()
|
||||
this.setUptakeFormBaseline()
|
||||
// var pet5PS = this.setpet5PS()
|
||||
// this.questionForm[this.pet5PSId] = pet5PS
|
||||
// this.calculatePet5PS = pet5PS
|
||||
// this.setPet5PSCommentDisplay()
|
||||
// this.setUptakeFormBaseline()
|
||||
FusionEvent.$emit('removeAnnotation', { otherMeasureData: this.measurements[idx].OtherMeasureData, type: 'clear' })
|
||||
var remark = this.measurements[idx].OtherMeasureData.data.remark
|
||||
remark === 'Liver' ? this.liverIsInsideVolume = true : remark === 'Mediastinum' ? this.lungIsInsideVolume = true : ''
|
||||
|
@ -373,8 +357,26 @@ export default {
|
|||
})
|
||||
return
|
||||
}
|
||||
const loading = this.$loading({ fullscreen: true })
|
||||
// 肝脏血池SUVmax
|
||||
const liverSUVmax = !isNaN(parseFloat(this.questionForm[this.liverSuvmaxId])) ? parseFloat(this.questionForm[this.liverSuvmaxId]) : 0
|
||||
// 纵膈血池SUVmax
|
||||
const lungSUVmax = !isNaN(parseFloat(this.questionForm[this.lungSuvmaxId])) ? parseFloat(this.questionForm[this.lungSuvmaxId]) : 0
|
||||
// const pet5PS = !isNaN(parseInt(this.questionForm[this.pet5PSId])) ? parseInt(this.questionForm[this.pet5PSId]) : 0
|
||||
if (liverSUVmax && lungSUVmax && (liverSUVmax <= lungSUVmax)) {
|
||||
// '当前肝脏血池SUVmax≤纵隔血池血池SUVmax,请确认!'
|
||||
this.$confirm(this.$t('trials:lugano:message:validLung'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.handleSaveAnnotation(question)
|
||||
}).catch(() => {
|
||||
|
||||
})
|
||||
} else {
|
||||
this.handleSaveAnnotation(question)
|
||||
}
|
||||
},
|
||||
handleSaveAnnotation(question) {
|
||||
const loading = this.$loading({ fullscreen: true })
|
||||
// 获取截图
|
||||
var answers = []
|
||||
var questionMarkInfoList = []
|
||||
|
@ -414,6 +416,7 @@ export default {
|
|||
window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location)
|
||||
loading.close()
|
||||
this.$message({ message: this.$t('common:message:savedSuccessfully'), type: 'success', duration: 2000 })
|
||||
this.resetSuvQuestions(1)
|
||||
}).catch(() => {
|
||||
loading.close()
|
||||
})
|
||||
|
@ -454,17 +457,20 @@ export default {
|
|||
OrderMarkName: remark
|
||||
}
|
||||
if (measurement.type === 'CircleROI') {
|
||||
const suvMax = measurement.suvMax
|
||||
|
||||
if (this.questionForm[obj.QuestionId] !== suvMax) {
|
||||
this.setPet5PSCommentDisplay()
|
||||
this.$set(this.questionForm, obj.QuestionId, suvMax || null)
|
||||
var pet5PS = this.setpet5PS()
|
||||
this.questionForm[this.pet5PSId] = pet5PS
|
||||
this.calculatePet5PS = pet5PS
|
||||
this.setUptakeFormBaseline()
|
||||
}
|
||||
this.$set(this.questionForm, obj.QuestionId, measurement.suvMax || null)
|
||||
}
|
||||
// if (measurement.type === 'CircleROI') {
|
||||
// const suvMax = measurement.suvMax
|
||||
|
||||
// if (this.questionForm[obj.QuestionId] !== suvMax) {
|
||||
// this.setPet5PSCommentDisplay()
|
||||
// this.$set(this.questionForm, obj.QuestionId, suvMax || null)
|
||||
// var pet5PS = this.setpet5PS()
|
||||
// this.questionForm[this.pet5PSId] = pet5PS
|
||||
// this.calculatePet5PS = pet5PS
|
||||
// this.setUptakeFormBaseline()
|
||||
// }
|
||||
// }
|
||||
FusionEvent.$emit('addOrUpdateAnnotations', { data })
|
||||
this.questionFormChangeState = true
|
||||
if (obj.QuestionType === 51 && !this.liverRender) {
|
||||
|
@ -519,13 +525,16 @@ export default {
|
|||
OrderMarkName: remark
|
||||
}
|
||||
if (measurement.type === 'CircleROI') {
|
||||
this.setPet5PSCommentDisplay()
|
||||
this.$set(this.questionForm, obj.QuestionId, null)
|
||||
var pet5PS = this.setpet5PS()
|
||||
this.questionForm[this.pet5PSId] = pet5PS
|
||||
this.calculatePet5PS = pet5PS
|
||||
this.setUptakeFormBaseline()
|
||||
}
|
||||
// if (measurement.type === 'CircleROI') {
|
||||
// this.setPet5PSCommentDisplay()
|
||||
// this.$set(this.questionForm, obj.QuestionId, null)
|
||||
// var pet5PS = this.setpet5PS()
|
||||
// this.questionForm[this.pet5PSId] = pet5PS
|
||||
// this.calculatePet5PS = pet5PS
|
||||
// this.setUptakeFormBaseline()
|
||||
// }
|
||||
FusionEvent.$emit('addOrUpdateAnnotations', { data })
|
||||
this.questionFormChangeState = true
|
||||
this.setQuestionStatus(this.questions, this.measurements[idx].QuestionType)
|
||||
|
@ -534,11 +543,11 @@ export default {
|
|||
var idx = this.measurements.findIndex(i => i.OrderMarkName === remark)
|
||||
if (idx === -1) return
|
||||
this.$set(this.questionForm, this.measurements[idx].QuestionId, '')
|
||||
var pet5PS = this.setpet5PS()
|
||||
this.questionForm[this.pet5PSId] = pet5PS
|
||||
this.calculatePet5PS = pet5PS
|
||||
this.setPet5PSCommentDisplay()
|
||||
this.setUptakeFormBaseline()
|
||||
// var pet5PS = this.setpet5PS()
|
||||
// this.questionForm[this.pet5PSId] = pet5PS
|
||||
// this.calculatePet5PS = pet5PS
|
||||
// this.setPet5PSCommentDisplay()
|
||||
// this.setUptakeFormBaseline()
|
||||
this.measurements[idx].OtherMeasureData = ''
|
||||
this.currentQsId = this.measurements[idx].QuestionId
|
||||
// const { QuestionId, QuestionType } = this.measurements[idx]
|
||||
|
@ -575,7 +584,7 @@ export default {
|
|||
setUptakeFormBaseline() {
|
||||
// 自动计算与基线相比摄取值变化
|
||||
if (!this.isBaseLineTask) {
|
||||
console.log('setUptakeFormBaseline: ',this.questionForm[this.pet5PSId],this.baseLinePET5PS)
|
||||
console.log('setUptakeFormBaseline: ', this.questionForm[this.pet5PSId], this.baseLinePET5PS)
|
||||
if (this.questionForm[this.pet5PSId] > 0) {
|
||||
// 当前访视的PET 5ps评分大于基线的PET 5ps评分 增大
|
||||
// 当前访视的PET 5ps评分小于基线的PET 5ps评分 减小
|
||||
|
@ -619,7 +628,7 @@ export default {
|
|||
return ''
|
||||
}
|
||||
},
|
||||
resetSuvQuestions() {
|
||||
resetSuvQuestions(type = 0) {
|
||||
this.loading = true
|
||||
var params = {
|
||||
trialId: this.trialId,
|
||||
|
@ -634,40 +643,41 @@ export default {
|
|||
// this.$set(this.questionForm, v.Id, v.Answer ? v.Answer : null)
|
||||
// }
|
||||
if (v.Childrens.length > 0) {
|
||||
this.setSuvChild(v.Childrens)
|
||||
this.setSuvChild(v.Childrens, type)
|
||||
}
|
||||
var pet5PS = this.setpet5PS()
|
||||
this.questionForm[this.pet5PSId] = pet5PS
|
||||
this.calculatePet5PS = pet5PS
|
||||
this.setPet5PSCommentDisplay()
|
||||
this.setUptakeFormBaseline()
|
||||
// var pet5PS = this.setpet5PS()
|
||||
// this.questionForm[this.pet5PSId] = pet5PS
|
||||
// this.calculatePet5PS = pet5PS
|
||||
// this.setPet5PSCommentDisplay()
|
||||
// this.setUptakeFormBaseline()
|
||||
this.questionFormChangeState = true
|
||||
})
|
||||
|
||||
this.loading = false
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
setSuvChild(obj) {
|
||||
setSuvChild(obj, type) {
|
||||
obj.forEach(i => {
|
||||
if (i.QuestionType === 53) {
|
||||
if (i.QuestionType === 53 && !type) {
|
||||
// SUVmax;
|
||||
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
|
||||
}
|
||||
if (i.QuestionType === 54) {
|
||||
if (i.QuestionType === 54 && !type) {
|
||||
// SUVmax所在病灶;
|
||||
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
|
||||
}
|
||||
// if (i.QuestionType === 55) {
|
||||
// // PET 5PS评分;
|
||||
// this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
|
||||
// }
|
||||
// if (i.QuestionType === 56) {
|
||||
// // 与基线相比摄取值变化;
|
||||
// this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
|
||||
// }
|
||||
if (i.QuestionType === 55) {
|
||||
// PET 5PS评分;
|
||||
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
|
||||
this.calculatePet5PS = i.Answer
|
||||
}
|
||||
if (i.QuestionType === 56) {
|
||||
// 与基线相比摄取值变化;
|
||||
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
|
||||
}
|
||||
|
||||
if (i.Childrens && i.Childrens.length > 0) {
|
||||
this.setSuvChild(i.Childrens)
|
||||
this.setSuvChild(i.Childrens, type)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
<script>
|
||||
// import { uploadPrintscreen } from '@/api/reading'
|
||||
import { saveTaskQuestion, getSplenicState, getSplenicVerify, getCanChooseNotMerge } from '@/api/trials'
|
||||
import { saveTaskQuestion, getSplenicState, getSplenicVerify, getCanChooseNotMerge, getDicomReadingQuestionAnswer } from '@/api/trials'
|
||||
import QuestionItem from './QuestionItem'
|
||||
import DicomEvent from './DicomEvent'
|
||||
import { mapGetters } from 'vuex'
|
||||
|
@ -146,12 +146,12 @@ export default {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
async getQuestions(visitTaskId) {
|
||||
async getQuestions(visitTaskId, isRefresh = false) {
|
||||
var isChangeVisitTask = this.visitTaskId !== visitTaskId
|
||||
this.visitTaskId = visitTaskId
|
||||
// const loading = this.$loading({ fullscreen: true })
|
||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
|
||||
this.questions = []
|
||||
var qs = []
|
||||
if (idx > -1) {
|
||||
this.isBaseLineTask = this.visitTaskList[idx].IsBaseLineTask
|
||||
this.readingTaskState = this.visitTaskList[idx].ReadingTaskState
|
||||
|
@ -164,7 +164,7 @@ export default {
|
|||
}
|
||||
this.measurements.push(i)
|
||||
})
|
||||
if (isChangeVisitTask) {
|
||||
if (isChangeVisitTask || isRefresh) {
|
||||
const { Result } = await getSplenicVerify(visitTaskId)
|
||||
this.spleenInfo = Result
|
||||
}
|
||||
|
@ -210,15 +210,15 @@ export default {
|
|||
if (v.Childrens.length > 0) {
|
||||
this.setChild(v.Childrens)
|
||||
}
|
||||
this.questions.push(v)
|
||||
qs.push(v)
|
||||
}
|
||||
// this.questions = questions
|
||||
this.questions = Object.assign([], qs)
|
||||
}
|
||||
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.calculateSpleenStatus = this.spleenInfo.SplenicStatus
|
||||
this.setSpleenCommentDisplay()
|
||||
}
|
||||
// loading.close()
|
||||
|
@ -370,7 +370,7 @@ export default {
|
|||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
var trialId = this.$route.query.trialId
|
||||
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: trialId, visitTaskId: this.visitTaskId })
|
||||
this.getQuestions(this.visitTaskId)
|
||||
this.getQuestions(this.visitTaskId, true)
|
||||
this.loading = false
|
||||
if (this.isQulityIssues) {
|
||||
DicomEvent.$emit('questionFormChange', false)
|
||||
|
@ -505,15 +505,15 @@ export default {
|
|||
var idx = this.measurements.findIndex(i => i.QuestionId === Id)
|
||||
if (idx === -1) return
|
||||
this.$set(this.questionForm, Id, '')
|
||||
if (obj.QuestionType === 60 || obj.QuestionType === 61) {
|
||||
this.$set(this.questionForm, this.spleenStatusId, '')
|
||||
this.$set(this.questionForm, this.spleenLengthId, '')
|
||||
}
|
||||
// if (obj.QuestionType === 60 || obj.QuestionType === 61) {
|
||||
// this.$set(this.questionForm, this.spleenStatusId, '')
|
||||
// this.$set(this.questionForm, this.spleenLengthId, '')
|
||||
// }
|
||||
await store.dispatch('reading/removeNonTargetMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.measurements[idx].MeasureData, questionId: Id })
|
||||
this.measurements.splice(idx, 1)
|
||||
DicomEvent.$emit('getMeasureData')
|
||||
this.calculateSpleenStatus = ''
|
||||
this.setSpleenCommentDisplay()
|
||||
// this.calculateSpleenStatus = ''
|
||||
// this.setSpleenCommentDisplay()
|
||||
this.formChanged = true
|
||||
},
|
||||
saveAnnotation(question) {
|
||||
|
@ -551,6 +551,7 @@ export default {
|
|||
const qsType = question.QuestionType === 60 ? 4 : question.QuestionType === 61 ? 5 : null
|
||||
saveTaskQuestion(qsType, params).then(async res => {
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
await this.setQuestions()
|
||||
this.loading = false
|
||||
this.$set(question, 'SaveEnum', 0)
|
||||
DicomEvent.$emit('getReportInfo', true)
|
||||
|
@ -633,13 +634,13 @@ export default {
|
|||
if (measurement.type === 'ArrowAnnotate') {
|
||||
const location = measurement.location ? Number(measurement.location).toFixed(this.digitPlaces) : null
|
||||
this.$set(this.questionForm, this.measurements[idx].QuestionId, location || null)
|
||||
if (this.measurements[idx].QuestionType === 60 || this.measurements[idx].QuestionType === 61) {
|
||||
var length = this.getSpleenL()
|
||||
this.$set(this.questionForm, this.spleenLengthId, length)
|
||||
var status = this.setSpleenStatus(length)
|
||||
this.$set(this.questionForm, this.spleenStatusId, status)
|
||||
this.calculateSpleenStatus = status
|
||||
}
|
||||
// if (this.measurements[idx].QuestionType === 60 || this.measurements[idx].QuestionType === 61) {
|
||||
// var length = this.getSpleenL()
|
||||
// this.$set(this.questionForm, this.spleenLengthId, length)
|
||||
// var status = this.setSpleenStatus(length)
|
||||
// this.$set(this.questionForm, this.spleenStatusId, status)
|
||||
// this.calculateSpleenStatus = status
|
||||
// }
|
||||
|
||||
// if (this.measurements[idx].QuestionType === 48 && length <= 130 && this.isBaseLineTask) {
|
||||
// // 脾脏状态设置默认值为正常
|
||||
|
@ -744,13 +745,13 @@ export default {
|
|||
},
|
||||
resetFormItemData(v) {
|
||||
this.questionForm[v] = null
|
||||
if (v === this.spleenLengthId) {
|
||||
var spleenStatus = this.questionForm[this.spleenStatusId]
|
||||
spleenStatus = isNaN(parseInt(spleenStatus)) ? null : parseInt(spleenStatus)
|
||||
if (spleenStatus === 5) {
|
||||
this.removeAnnotation({ Id: this.spleenLengthId })
|
||||
}
|
||||
}
|
||||
// if (v === this.spleenLengthId) {
|
||||
// var spleenStatus = this.questionForm[this.spleenStatusId]
|
||||
// spleenStatus = isNaN(parseInt(spleenStatus)) ? null : parseInt(spleenStatus)
|
||||
// if (spleenStatus === 5) {
|
||||
// this.removeAnnotation({ Id: this.spleenLengthId })
|
||||
// }
|
||||
// }
|
||||
this.formChanged = true
|
||||
},
|
||||
setFormItemData(obj) {
|
||||
|
@ -760,6 +761,45 @@ export default {
|
|||
}
|
||||
this.formChanged = true
|
||||
},
|
||||
setQuestions() {
|
||||
return new Promise(resolve => {
|
||||
var params = {
|
||||
trialId: this.$route.query.trialId,
|
||||
visitTaskId: this.visitTaskId
|
||||
}
|
||||
getDicomReadingQuestionAnswer(params).then(res => {
|
||||
var questions = []
|
||||
for (var i = 0; i < res.Result.length; i++) {
|
||||
var v = res.Result[i]
|
||||
if (v.Type === 'group' && v.GroupClassify !== this.groupClassify) continue
|
||||
questions.push(v)
|
||||
}
|
||||
questions.map((v) => {
|
||||
if (v.Type === 'group' && v.Childrens.length === 0) return
|
||||
if (v.Childrens.length > 0) {
|
||||
this.setQSChild(v.Childrens)
|
||||
}
|
||||
})
|
||||
resolve()
|
||||
})
|
||||
})
|
||||
},
|
||||
setQSChild(obj) {
|
||||
obj.forEach(i => {
|
||||
if (i.QuestionType === 49) {
|
||||
// 脾脏状态;
|
||||
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
|
||||
this.calculateSpleenStatus = i.Answer
|
||||
}
|
||||
if (i.QuestionType === 48) {
|
||||
// 脾脏长度;
|
||||
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
|
||||
}
|
||||
if (i.Childrens && i.Childrens.length > 0) {
|
||||
this.setQSChild(i.Childrens)
|
||||
}
|
||||
})
|
||||
},
|
||||
isJSONString(str) {
|
||||
try {
|
||||
JSON.stringify(JSON.parse(str))
|
||||
|
|
|
@ -75,8 +75,12 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<!-- 文件类型 -->
|
||||
<el-form-item v-if="form.Type === 'upload'" :label="$t('trials:readingUnit:qsList:title:FileType')"
|
||||
prop="FileType">
|
||||
<el-form-item
|
||||
v-if="form.Type === 'upload'"
|
||||
:label="$t('trials:readingUnit:qsList:title:FileType')"
|
||||
prop="FileType"
|
||||
:rules="[{ type: 'array', required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change'] }]"
|
||||
>
|
||||
<el-checkbox-group
|
||||
v-model="form.FileType"
|
||||
@change="(v) => {
|
||||
|
@ -803,12 +807,7 @@ export default {
|
|||
trigger: ['blur', 'change']
|
||||
}],
|
||||
GroupName: [{required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']},
|
||||
{max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50`}],
|
||||
FileType: [{
|
||||
required: true,
|
||||
message: this.$t('common:ruleMessage:select'),
|
||||
trigger: ['blur', 'change']
|
||||
}]
|
||||
{max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50`}]
|
||||
},
|
||||
loading: false,
|
||||
dicList: [],
|
||||
|
|
Loading…
Reference in New Issue