脾脏评估和PET 5PS评估逻辑修改

uat_us
caiyiling 2024-04-24 12:57:45 +08:00
parent 0e33b60681
commit 1825ac34e1
3 changed files with 149 additions and 100 deletions

View File

@ -159,6 +159,7 @@ export default {
this.loading = true this.loading = true
var res = await getReadingCalculationData({ visitTaskId: this.visitTaskId }) var res = await getReadingCalculationData({ visitTaskId: this.visitTaskId })
this.baseLinePET5PS = res.Result.BaseLinePET5PS this.baseLinePET5PS = res.Result.BaseLinePET5PS
this.calculatePet5PS = res.Result.CalculatePET5PS
this.loading = false this.loading = false
} }
this.initList(true) this.initList(true)
@ -184,7 +185,6 @@ export default {
} }
}) })
this.questions = questions this.questions = questions
this.calculatePet5PS = this.setpet5PS()
this.setPet5PSCommentDisplay() this.setPet5PSCommentDisplay()
this.measurements = [] this.measurements = []
res.OtherInfo.QuestionMarkInfoList.forEach(i => { 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')) this.$alert(this.$t('trials:lugano:message:saveWarning1'), this.$t('trials:lugano:fusionDialog:warning'))
return return
} }
// SUVmax this.saveQuestionsForm()
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)) {
// 'SUVmaxSUVmax'
this.$confirm(this.$t('trials:lugano:message:validLung'), this.$t('trials:lugano:fusionDialog:warning'), {
type: 'warning'
}).then(() => {
this.saveQuestionsForm()
}).catch(() => {
})
} else {
this.saveQuestionsForm()
}
// else if (pet5PS > 1 && (!liverSUVmax || !lungSUVmax)) { // else if (pet5PS > 1 && (!liverSUVmax || !lungSUVmax)) {
// this.$alert('pet 5ps1XNE', '', { // this.$alert('pet 5ps1XNE', '', {
// // confirmButtonText: '', // // confirmButtonText: '',
@ -344,11 +328,11 @@ export default {
var idx = this.measurements.findIndex(i => i.QuestionId === Id) var idx = this.measurements.findIndex(i => i.QuestionId === Id)
if (idx === -1) return if (idx === -1) return
this.$set(this.questionForm, Id, '') this.$set(this.questionForm, Id, '')
var pet5PS = this.setpet5PS() // var pet5PS = this.setpet5PS()
this.questionForm[this.pet5PSId] = pet5PS // this.questionForm[this.pet5PSId] = pet5PS
this.calculatePet5PS = pet5PS // this.calculatePet5PS = pet5PS
this.setPet5PSCommentDisplay() // this.setPet5PSCommentDisplay()
this.setUptakeFormBaseline() // this.setUptakeFormBaseline()
FusionEvent.$emit('removeAnnotation', { otherMeasureData: this.measurements[idx].OtherMeasureData, type: 'clear' }) FusionEvent.$emit('removeAnnotation', { otherMeasureData: this.measurements[idx].OtherMeasureData, type: 'clear' })
var remark = this.measurements[idx].OtherMeasureData.data.remark var remark = this.measurements[idx].OtherMeasureData.data.remark
remark === 'Liver' ? this.liverIsInsideVolume = true : remark === 'Mediastinum' ? this.lungIsInsideVolume = true : '' remark === 'Liver' ? this.liverIsInsideVolume = true : remark === 'Mediastinum' ? this.lungIsInsideVolume = true : ''
@ -373,8 +357,26 @@ export default {
}) })
return 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)) {
// 'SUVmaxSUVmax'
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 answers = []
var questionMarkInfoList = [] var questionMarkInfoList = []
@ -414,6 +416,7 @@ export default {
window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location) window.opener.postMessage({ type: 'petctLesionUpdate' }, window.location)
loading.close() loading.close()
this.$message({ message: this.$t('common:message:savedSuccessfully'), type: 'success', duration: 2000 }) this.$message({ message: this.$t('common:message:savedSuccessfully'), type: 'success', duration: 2000 })
this.resetSuvQuestions(1)
}).catch(() => { }).catch(() => {
loading.close() loading.close()
}) })
@ -454,17 +457,20 @@ export default {
OrderMarkName: remark OrderMarkName: remark
} }
if (measurement.type === 'CircleROI') { if (measurement.type === 'CircleROI') {
const suvMax = measurement.suvMax this.$set(this.questionForm, obj.QuestionId, measurement.suvMax || null)
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()
}
} }
// 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 }) FusionEvent.$emit('addOrUpdateAnnotations', { data })
this.questionFormChangeState = true this.questionFormChangeState = true
if (obj.QuestionType === 51 && !this.liverRender) { if (obj.QuestionType === 51 && !this.liverRender) {
@ -519,13 +525,16 @@ export default {
OrderMarkName: remark OrderMarkName: remark
} }
if (measurement.type === 'CircleROI') { if (measurement.type === 'CircleROI') {
this.setPet5PSCommentDisplay()
this.$set(this.questionForm, obj.QuestionId, null) 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 }) FusionEvent.$emit('addOrUpdateAnnotations', { data })
this.questionFormChangeState = true this.questionFormChangeState = true
this.setQuestionStatus(this.questions, this.measurements[idx].QuestionType) this.setQuestionStatus(this.questions, this.measurements[idx].QuestionType)
@ -534,11 +543,11 @@ export default {
var idx = this.measurements.findIndex(i => i.OrderMarkName === remark) var idx = this.measurements.findIndex(i => i.OrderMarkName === remark)
if (idx === -1) return if (idx === -1) return
this.$set(this.questionForm, this.measurements[idx].QuestionId, '') this.$set(this.questionForm, this.measurements[idx].QuestionId, '')
var pet5PS = this.setpet5PS() // var pet5PS = this.setpet5PS()
this.questionForm[this.pet5PSId] = pet5PS // this.questionForm[this.pet5PSId] = pet5PS
this.calculatePet5PS = pet5PS // this.calculatePet5PS = pet5PS
this.setPet5PSCommentDisplay() // this.setPet5PSCommentDisplay()
this.setUptakeFormBaseline() // this.setUptakeFormBaseline()
this.measurements[idx].OtherMeasureData = '' this.measurements[idx].OtherMeasureData = ''
this.currentQsId = this.measurements[idx].QuestionId this.currentQsId = this.measurements[idx].QuestionId
// const { QuestionId, QuestionType } = this.measurements[idx] // const { QuestionId, QuestionType } = this.measurements[idx]
@ -575,7 +584,7 @@ export default {
setUptakeFormBaseline() { setUptakeFormBaseline() {
// 线 // 线
if (!this.isBaseLineTask) { 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) { if (this.questionForm[this.pet5PSId] > 0) {
// 访PET 5ps线PET 5ps // 访PET 5ps线PET 5ps
// 访PET 5ps线PET 5ps // 访PET 5ps线PET 5ps
@ -619,7 +628,7 @@ export default {
return '' return ''
} }
}, },
resetSuvQuestions() { resetSuvQuestions(type = 0) {
this.loading = true this.loading = true
var params = { var params = {
trialId: this.trialId, trialId: this.trialId,
@ -634,40 +643,41 @@ export default {
// this.$set(this.questionForm, v.Id, v.Answer ? v.Answer : null) // this.$set(this.questionForm, v.Id, v.Answer ? v.Answer : null)
// } // }
if (v.Childrens.length > 0) { if (v.Childrens.length > 0) {
this.setSuvChild(v.Childrens) this.setSuvChild(v.Childrens, type)
} }
var pet5PS = this.setpet5PS() // var pet5PS = this.setpet5PS()
this.questionForm[this.pet5PSId] = pet5PS // this.questionForm[this.pet5PSId] = pet5PS
this.calculatePet5PS = pet5PS // this.calculatePet5PS = pet5PS
this.setPet5PSCommentDisplay() // this.setPet5PSCommentDisplay()
this.setUptakeFormBaseline() // this.setUptakeFormBaseline()
this.questionFormChangeState = true this.questionFormChangeState = true
}) })
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}, },
setSuvChild(obj) { setSuvChild(obj, type) {
obj.forEach(i => { obj.forEach(i => {
if (i.QuestionType === 53) { if (i.QuestionType === 53 && !type) {
// SUVmax; // SUVmax;
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null) this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
} }
if (i.QuestionType === 54) { if (i.QuestionType === 54 && !type) {
// SUVmax; // SUVmax;
this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null) this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
} }
// if (i.QuestionType === 55) { if (i.QuestionType === 55) {
// // PET 5PS; // PET 5PS;
// this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null) this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
// } this.calculatePet5PS = i.Answer
// if (i.QuestionType === 56) { }
// // 线; if (i.QuestionType === 56) {
// this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null) // 线;
// } this.$set(this.questionForm, i.Id, i.Answer ? i.Answer : null)
}
if (i.Childrens && i.Childrens.length > 0) { if (i.Childrens && i.Childrens.length > 0) {
this.setSuvChild(i.Childrens) this.setSuvChild(i.Childrens, type)
} }
}) })
}, },

View File

@ -30,7 +30,7 @@
<script> <script>
// import { uploadPrintscreen } from '@/api/reading' // 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 QuestionItem from './QuestionItem'
import DicomEvent from './DicomEvent' import DicomEvent from './DicomEvent'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
@ -146,12 +146,12 @@ export default {
} }
}, },
methods: { methods: {
async getQuestions(visitTaskId) { async getQuestions(visitTaskId, isRefresh = false) {
var isChangeVisitTask = this.visitTaskId !== visitTaskId var isChangeVisitTask = this.visitTaskId !== visitTaskId
this.visitTaskId = visitTaskId this.visitTaskId = visitTaskId
// const loading = this.$loading({ fullscreen: true }) // const loading = this.$loading({ fullscreen: true })
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId) var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
this.questions = [] var qs = []
if (idx > -1) { if (idx > -1) {
this.isBaseLineTask = this.visitTaskList[idx].IsBaseLineTask this.isBaseLineTask = this.visitTaskList[idx].IsBaseLineTask
this.readingTaskState = this.visitTaskList[idx].ReadingTaskState this.readingTaskState = this.visitTaskList[idx].ReadingTaskState
@ -164,7 +164,7 @@ export default {
} }
this.measurements.push(i) this.measurements.push(i)
}) })
if (isChangeVisitTask) { if (isChangeVisitTask || isRefresh) {
const { Result } = await getSplenicVerify(visitTaskId) const { Result } = await getSplenicVerify(visitTaskId)
this.spleenInfo = Result this.spleenInfo = Result
} }
@ -210,15 +210,15 @@ export default {
if (v.Childrens.length > 0) { if (v.Childrens.length > 0) {
this.setChild(v.Childrens) this.setChild(v.Childrens)
} }
this.questions.push(v) qs.push(v)
} }
// this.questions = questions this.questions = Object.assign([], qs)
} }
if (this.imageQualityIssuesId) { if (this.imageQualityIssuesId) {
store.dispatch('reading/setImageQualityIssues', this.questionForm[this.imageQualityIssuesId]) store.dispatch('reading/setImageQualityIssues', this.questionForm[this.imageQualityIssuesId])
} }
if (this.spleenLengthId && this.spleenInfo && this.readingTaskState < 2) { if (this.spleenLengthId && this.spleenInfo && this.readingTaskState < 2) {
this.calculateSpleenStatus = this.setSpleenStatus(this.questionForm[this.spleenLengthId]) this.calculateSpleenStatus = this.spleenInfo.SplenicStatus
this.setSpleenCommentDisplay() this.setSpleenCommentDisplay()
} }
// loading.close() // loading.close()
@ -370,7 +370,7 @@ export default {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
var trialId = this.$route.query.trialId var trialId = this.$route.query.trialId
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: trialId, visitTaskId: this.visitTaskId }) await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: trialId, visitTaskId: this.visitTaskId })
this.getQuestions(this.visitTaskId) this.getQuestions(this.visitTaskId, true)
this.loading = false this.loading = false
if (this.isQulityIssues) { if (this.isQulityIssues) {
DicomEvent.$emit('questionFormChange', false) DicomEvent.$emit('questionFormChange', false)
@ -505,15 +505,15 @@ export default {
var idx = this.measurements.findIndex(i => i.QuestionId === Id) var idx = this.measurements.findIndex(i => i.QuestionId === Id)
if (idx === -1) return if (idx === -1) return
this.$set(this.questionForm, Id, '') this.$set(this.questionForm, Id, '')
if (obj.QuestionType === 60 || obj.QuestionType === 61) { // if (obj.QuestionType === 60 || obj.QuestionType === 61) {
this.$set(this.questionForm, this.spleenStatusId, '') // this.$set(this.questionForm, this.spleenStatusId, '')
this.$set(this.questionForm, this.spleenLengthId, '') // this.$set(this.questionForm, this.spleenLengthId, '')
} // }
await store.dispatch('reading/removeNonTargetMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.measurements[idx].MeasureData, questionId: Id }) await store.dispatch('reading/removeNonTargetMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.measurements[idx].MeasureData, questionId: Id })
this.measurements.splice(idx, 1) this.measurements.splice(idx, 1)
DicomEvent.$emit('getMeasureData') DicomEvent.$emit('getMeasureData')
this.calculateSpleenStatus = '' // this.calculateSpleenStatus = ''
this.setSpleenCommentDisplay() // this.setSpleenCommentDisplay()
this.formChanged = true this.formChanged = true
}, },
saveAnnotation(question) { saveAnnotation(question) {
@ -551,6 +551,7 @@ export default {
const qsType = question.QuestionType === 60 ? 4 : question.QuestionType === 61 ? 5 : null const qsType = question.QuestionType === 60 ? 4 : question.QuestionType === 61 ? 5 : null
saveTaskQuestion(qsType, params).then(async res => { saveTaskQuestion(qsType, params).then(async res => {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:savedSuccessfully'))
await this.setQuestions()
this.loading = false this.loading = false
this.$set(question, 'SaveEnum', 0) this.$set(question, 'SaveEnum', 0)
DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('getReportInfo', true)
@ -633,13 +634,13 @@ export default {
if (measurement.type === 'ArrowAnnotate') { if (measurement.type === 'ArrowAnnotate') {
const location = measurement.location ? Number(measurement.location).toFixed(this.digitPlaces) : null const location = measurement.location ? Number(measurement.location).toFixed(this.digitPlaces) : null
this.$set(this.questionForm, this.measurements[idx].QuestionId, location || null) this.$set(this.questionForm, this.measurements[idx].QuestionId, location || null)
if (this.measurements[idx].QuestionType === 60 || this.measurements[idx].QuestionType === 61) { // if (this.measurements[idx].QuestionType === 60 || this.measurements[idx].QuestionType === 61) {
var length = this.getSpleenL() // var length = this.getSpleenL()
this.$set(this.questionForm, this.spleenLengthId, length) // this.$set(this.questionForm, this.spleenLengthId, length)
var status = this.setSpleenStatus(length) // var status = this.setSpleenStatus(length)
this.$set(this.questionForm, this.spleenStatusId, status) // this.$set(this.questionForm, this.spleenStatusId, status)
this.calculateSpleenStatus = status // this.calculateSpleenStatus = status
} // }
// if (this.measurements[idx].QuestionType === 48 && length <= 130 && this.isBaseLineTask) { // if (this.measurements[idx].QuestionType === 48 && length <= 130 && this.isBaseLineTask) {
// // // //
@ -744,13 +745,13 @@ export default {
}, },
resetFormItemData(v) { resetFormItemData(v) {
this.questionForm[v] = null this.questionForm[v] = null
if (v === this.spleenLengthId) { // if (v === this.spleenLengthId) {
var spleenStatus = this.questionForm[this.spleenStatusId] // var spleenStatus = this.questionForm[this.spleenStatusId]
spleenStatus = isNaN(parseInt(spleenStatus)) ? null : parseInt(spleenStatus) // spleenStatus = isNaN(parseInt(spleenStatus)) ? null : parseInt(spleenStatus)
if (spleenStatus === 5) { // if (spleenStatus === 5) {
this.removeAnnotation({ Id: this.spleenLengthId }) // this.removeAnnotation({ Id: this.spleenLengthId })
} // }
} // }
this.formChanged = true this.formChanged = true
}, },
setFormItemData(obj) { setFormItemData(obj) {
@ -760,6 +761,45 @@ export default {
} }
this.formChanged = true 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) { isJSONString(str) {
try { try {
JSON.stringify(JSON.parse(str)) JSON.stringify(JSON.parse(str))

View File

@ -75,8 +75,12 @@
/> />
</el-form-item> </el-form-item>
<!-- 文件类型 --> <!-- 文件类型 -->
<el-form-item v-if="form.Type === 'upload'" :label="$t('trials:readingUnit:qsList:title:FileType')" <el-form-item
prop="FileType"> 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 <el-checkbox-group
v-model="form.FileType" v-model="form.FileType"
@change="(v) => { @change="(v) => {
@ -803,12 +807,7 @@ export default {
trigger: ['blur', 'change'] trigger: ['blur', 'change']
}], }],
GroupName: [{required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']}, GroupName: [{required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change']},
{max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50`}], {max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50`}]
FileType: [{
required: true,
message: this.$t('common:ruleMessage:select'),
trigger: ['blur', 'change']
}]
}, },
loading: false, loading: false,
dicList: [], dicList: [],