有pet影像但无法融合/无法测量的处理
parent
c29b60cbbe
commit
c04aaf2db6
|
@ -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}`,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -828,7 +828,7 @@ export default {
|
|||
// 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
|
||||
// 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
|
||||
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,
|
||||
|
|
|
@ -1962,7 +1962,7 @@ export default {
|
|||
// 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
|
||||
// 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
|
||||
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) : ''
|
||||
}
|
||||
|
|
|
@ -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(存在)时,一定存在长径或者长短径(长径、十字线 )
|
||||
// 普通靶病灶:长径大于10mm且不小于2倍层厚(基线校验)
|
||||
// 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
|
||||
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
|
||||
})
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 })
|
||||
|
|
|
@ -1325,7 +1325,7 @@ export default {
|
|||
// 淋巴结靶病灶:短径大于15mm且不小于2倍层厚(基线校验)
|
||||
|
||||
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) : ''
|
||||
|
|
|
@ -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) : ''
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue