随访脾脏长度更新,自动计算脾脏状态
parent
1d1cb9617e
commit
2fdb103a3c
|
@ -3481,6 +3481,13 @@ export function getSplenicState(visitTaskId, spleenLength) {
|
||||||
method: 'post'
|
method: 'post'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getSplenicVerify(visitTaskId) {
|
||||||
|
return request({
|
||||||
|
url: `/LuganoCalculate/getSplenicVerify?visitTaskId=${visitTaskId}`,
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
export function uploadTrialSiteSurveyUser(trialId, baseUrl, routeUrl, param) {
|
export function uploadTrialSiteSurveyUser(trialId, baseUrl, routeUrl, param) {
|
||||||
return request({
|
return request({
|
||||||
url: `/TrialSiteSurvey/UploadTrialSiteSurveyUser?trialId=${trialId}&baseUrl=${baseUrl}&routeUrl=${routeUrl}`,
|
url: `/TrialSiteSurvey/UploadTrialSiteSurveyUser?trialId=${trialId}&baseUrl=${baseUrl}&routeUrl=${routeUrl}`,
|
||||||
|
|
|
@ -867,7 +867,7 @@ export default {
|
||||||
renderMeasuredData(e) {
|
renderMeasuredData(e) {
|
||||||
this.stack.frame = !isNaN(parseInt(this.stack.frame)) ? parseInt(this.stack.frame) : 0
|
this.stack.frame = !isNaN(parseInt(this.stack.frame)) ? parseInt(this.stack.frame) : 0
|
||||||
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId)
|
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.stack.visitTaskId)
|
||||||
if(idx === -1) return
|
if (idx === -1) return
|
||||||
this.measureData = this.visitTaskList[idx].MeasureData
|
this.measureData = this.visitTaskList[idx].MeasureData
|
||||||
const { element } = e.detail
|
const { element } = e.detail
|
||||||
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
const ToolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager
|
||||||
|
|
|
@ -697,11 +697,11 @@ export default {
|
||||||
this.onAnnotationModified(e)
|
this.onAnnotationModified(e)
|
||||||
} else {
|
} else {
|
||||||
// annotation.isInsideVolume = false
|
// annotation.isInsideVolume = false
|
||||||
console.log('异常标记:',annotation)
|
console.log('异常标记:', annotation)
|
||||||
const { remark } = annotation.data
|
const { remark } = annotation.data
|
||||||
if (remark === 'Liver' || remark === 'Mediastinum') {
|
if (remark === 'Liver' || remark === 'Mediastinum') {
|
||||||
this.$refs['questions'].setOutsideMeasuredData(annotation)
|
this.$refs['questions'].setOutsideMeasuredData(annotation)
|
||||||
}else{
|
} else {
|
||||||
this.$refs['tableQuestions'].setOutsideMeasuredData(annotation)
|
this.$refs['tableQuestions'].setOutsideMeasuredData(annotation)
|
||||||
}
|
}
|
||||||
// // 移除标记
|
// // 移除标记
|
||||||
|
|
|
@ -257,7 +257,7 @@ export default {
|
||||||
pictureBaseStr: '',
|
pictureBaseStr: '',
|
||||||
currentMarkTool: '',
|
currentMarkTool: '',
|
||||||
firstRenderAnnotation: true,
|
firstRenderAnnotation: true,
|
||||||
isInsideVolume:true
|
isInsideVolume: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -611,7 +611,7 @@ export default {
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
setOutsideMeasuredData(measureData){
|
setOutsideMeasuredData(measureData) {
|
||||||
this.isInsideVolume = false
|
this.isInsideVolume = false
|
||||||
var suvObj = this.questions.find(i => i.QuestionMark === 20)
|
var suvObj = this.questions.find(i => i.QuestionMark === 20)
|
||||||
this.$set(this.questionForm, suvObj.Id, '')
|
this.$set(this.questionForm, suvObj.Id, '')
|
||||||
|
@ -621,20 +621,20 @@ export default {
|
||||||
this.$set(this.questionForm, 'saveTypeEnum', 0)
|
this.$set(this.questionForm, 'saveTypeEnum', 0)
|
||||||
}
|
}
|
||||||
this.$set(this.questionForm, 'OtherMeasureData', measureData)
|
this.$set(this.questionForm, 'OtherMeasureData', measureData)
|
||||||
var isLymph = this.getQuestionVal(2)
|
var isLymph = this.getQuestionVal(2)
|
||||||
isLymph = !isNaN(parseInt(isLymph)) ? parseInt(isLymph) : null
|
isLymph = !isNaN(parseInt(isLymph)) ? parseInt(isLymph) : null
|
||||||
const lesionPart = this.getQuestionVal(8)
|
const lesionPart = this.getQuestionVal(8)
|
||||||
const lesionOrgan = this.getQuestionVal(6)
|
const lesionOrgan = this.getQuestionVal(6)
|
||||||
var suvMax = this.getQuestionVal(20)
|
var suvMax = this.getQuestionVal(20)
|
||||||
this.$emit('resetQuestions', { isLymphLesion: isLymph, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
|
this.$emit('resetQuestions', { isLymphLesion: isLymph, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
|
||||||
this.toolType = measureData.type
|
this.toolType = measureData.type
|
||||||
if (this.questionForm.MeasureData) {
|
if (this.questionForm.MeasureData) {
|
||||||
this.organList = []
|
this.organList = []
|
||||||
this.getOrganInfoList()
|
this.getOrganInfoList()
|
||||||
} else {
|
} else {
|
||||||
this.organList = []
|
this.organList = []
|
||||||
this.getOrganInfoList()
|
this.getOrganInfoList()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
returnFloat(num) {
|
returnFloat(num) {
|
||||||
if (num) return
|
if (num) return
|
||||||
|
@ -719,13 +719,13 @@ export default {
|
||||||
handleSave() {
|
handleSave() {
|
||||||
this.$refs.measurementForm.validate(async valid => {
|
this.$refs.measurementForm.validate(async valid => {
|
||||||
if (!valid) return
|
if (!valid) return
|
||||||
if(!this.isInsideVolume){
|
if (!this.isInsideVolume) {
|
||||||
this.$alert('当前标记在图像外,不允许保存!', '提示', {
|
this.$alert('当前标记在图像外,不允许保存!', '提示', {
|
||||||
callback: action => {
|
callback: action => {
|
||||||
this.$message({
|
this.$message({
|
||||||
type: 'info',
|
type: 'info',
|
||||||
message: `action: ${ action }`
|
message: `action: ${action}`
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
|
|
|
@ -749,7 +749,7 @@ export default {
|
||||||
this.$refs[refName][0].clearMeasurement()
|
this.$refs[refName][0].clearMeasurement()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setOutsideMeasuredData(annotation){
|
setOutsideMeasuredData(annotation) {
|
||||||
if (this.activeItem.activeCollapseId && this.activeItem.activeRowIndex && this.activeName) {
|
if (this.activeItem.activeCollapseId && this.activeItem.activeRowIndex && this.activeName) {
|
||||||
const refName = `${this.activeItem.activeCollapseId}_${this.activeItem.activeRowIndex}`
|
const refName = `${this.activeItem.activeCollapseId}_${this.activeItem.activeRowIndex}`
|
||||||
this.$refs[refName][0].setOutsideMeasuredData(annotation)
|
this.$refs[refName][0].setOutsideMeasuredData(annotation)
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// import { uploadPrintscreen } from '@/api/reading'
|
// import { uploadPrintscreen } from '@/api/reading'
|
||||||
import { saveImageQuality, getSplenicState } from '@/api/trials'
|
import { saveImageQuality, getSplenicState,getSplenicVerify } 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'
|
||||||
|
@ -77,7 +77,9 @@ export default {
|
||||||
spleenStatusId: '',
|
spleenStatusId: '',
|
||||||
spleenLengthId: '',
|
spleenLengthId: '',
|
||||||
isBaseLineTask: false,
|
isBaseLineTask: false,
|
||||||
criterionType: null
|
criterionType: null,
|
||||||
|
spleenInfo:null,
|
||||||
|
calculateSpleenStatus:''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -91,6 +93,14 @@ export default {
|
||||||
if(this.isQulityIssues){
|
if(this.isQulityIssues){
|
||||||
DicomEvent.$emit('questionFormChange', true)
|
DicomEvent.$emit('questionFormChange', true)
|
||||||
}
|
}
|
||||||
|
// if(this.criterionType === 2 && this.groupClassify === 3 && this.calculateSpleenStatus && this.calculateSpleenStatus !== this.questionForm[this.spleenStatusId]){
|
||||||
|
// for (let i = 0; i < this.questions[0].Childrens.length; i++) {
|
||||||
|
// if (this.questions[0].Childrens[i].QuestionType === 49) {
|
||||||
|
// this.questions[0].Childrens[i].ShowQuestion = 2
|
||||||
|
// break
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
currentReadingTaskState: {
|
currentReadingTaskState: {
|
||||||
|
@ -132,7 +142,12 @@ export default {
|
||||||
}
|
}
|
||||||
this.measurements.push(i)
|
this.measurements.push(i)
|
||||||
})
|
})
|
||||||
|
if(this.readingTaskState < 2 && !this.isBaseLineTask && !this.spleenInfo){
|
||||||
|
const { Result } = await getSplenicVerify(visitTaskId)
|
||||||
|
this.spleenInfo = Result
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < questions.length; i++) {
|
for (var i = 0; i < questions.length; i++) {
|
||||||
var v = questions[i]
|
var v = questions[i]
|
||||||
v.IsBaseLineTask = this.isBaseLineTask
|
v.IsBaseLineTask = this.isBaseLineTask
|
||||||
|
@ -151,6 +166,8 @@ export default {
|
||||||
if (v.QuestionType === 48) {
|
if (v.QuestionType === 48) {
|
||||||
// 脾脏长度
|
// 脾脏长度
|
||||||
this.spleenLengthId = v.Id
|
this.spleenLengthId = v.Id
|
||||||
|
this.calculateSpleenStatus = ''
|
||||||
|
this.setSpleenStatus(this.questionForm[this.spleenLengthId])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (v.Childrens.length > 0) {
|
if (v.Childrens.length > 0) {
|
||||||
|
@ -192,33 +209,22 @@ export default {
|
||||||
if (!valid) return
|
if (!valid) return
|
||||||
// lugano标准校验脾脏状态是否符合要求
|
// lugano标准校验脾脏状态是否符合要求
|
||||||
if (this.criterionType === 2 && this.groupClassify === 3) {
|
if (this.criterionType === 2 && this.groupClassify === 3) {
|
||||||
var res = await this.getSplenicState()
|
var currentSpleenStatus = this.questionForm[this.spleenStatusId]
|
||||||
if (res.isSuccess) {
|
var currentSpleenLength = this.questionForm[this.spleenLengthId]
|
||||||
var systemSpleenStatus = isNaN(parseInt(res.result)) ? null : parseInt(res.result)
|
currentSpleenStatus = isNaN(parseInt(currentSpleenStatus)) ? null : parseInt(currentSpleenStatus)
|
||||||
var currentSpleenStatus = this.questionForm[this.spleenStatusId]
|
var idx = this.measurements.findIndex(i => i.QuestionType === 48)
|
||||||
var currentSpleenLength = this.questionForm[this.spleenLengthId]
|
if (currentSpleenLength && currentSpleenStatus === 5) {
|
||||||
currentSpleenStatus = isNaN(parseInt(currentSpleenStatus)) ? null : parseInt(currentSpleenStatus)
|
// '脾脏状态为不可评估,不需要添加标记!'
|
||||||
if (currentSpleenLength && currentSpleenStatus === 5) {
|
this.$alert(this.$t('trials:lugano:message:validSpleen1'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||||
// '脾脏状态为不可评估,不需要添加标记!'
|
|
||||||
this.$alert(this.$t('trials:lugano:message:validSpleen1'), this.$t('trials:lugano:fusionDialog:warning'), {
|
|
||||||
callback: _ => {}
|
callback: _ => {}
|
||||||
})
|
})
|
||||||
} else {
|
}else if(currentSpleenLength === 5 && idx> -1 && this.measurements[idx].MeasureData){
|
||||||
if (systemSpleenStatus !== currentSpleenStatus) {
|
// 若有标记,状态不可为“无法评估”
|
||||||
// 系统自动计算的脾脏状态为:xxx,当前设置的脾脏状态为:yyy,是否继续保存?
|
this.$alert(this.$t('trials:lugano:message:validSpleen1'), this.$t('trials:lugano:fusionDialog:warning'), {
|
||||||
var message = this.$t('trials:lugano:message:validSpleen2').replace('xxx', this.$fd('SpleenState', systemSpleenStatus))
|
callback: _ => {}
|
||||||
message = message.replace('yyy', this.$fd('SpleenState', currentSpleenStatus))
|
})
|
||||||
this.$confirm(message, this.$t('trials:lugano:fusionDialog:warning'), {
|
}else{
|
||||||
type: 'warning'
|
this.saveQuestionsList()
|
||||||
}).then(() => {
|
|
||||||
this.saveQuestionsList()
|
|
||||||
}).catch(() => {
|
|
||||||
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
this.saveQuestionsList()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.saveQuestionsList()
|
this.saveQuestionsList()
|
||||||
|
@ -297,7 +303,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 上传截图
|
// 上传截图
|
||||||
async uploadScreenshot() {
|
async uploadScreenshot() {
|
||||||
for (let i = 0; i < this.measurements.length; i++) {
|
for (let i = 0; i < this.measurements.length; i++) {
|
||||||
if (this.measurements[i].pictureBaseStr) {
|
if (this.measurements[i].pictureBaseStr) {
|
||||||
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, this.measurements[i].pictureBaseStr)
|
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, this.measurements[i].pictureBaseStr)
|
||||||
|
@ -364,6 +370,9 @@ 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 (this.measurements[idx].QuestionType === 48){
|
||||||
|
this.$set(this.questionForm, this.spleenStatusId, '')
|
||||||
|
}
|
||||||
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')
|
||||||
|
@ -414,20 +423,85 @@ export default {
|
||||||
if (measurement.type === 'Length') {
|
if (measurement.type === 'Length') {
|
||||||
const length = measurement.data.length ? measurement.data.length : null
|
const length = measurement.data.length ? measurement.data.length : null
|
||||||
this.$set(this.questionForm, this.measurements[idx].QuestionId, length || null)
|
this.$set(this.questionForm, this.measurements[idx].QuestionId, length || null)
|
||||||
if (this.measurements[idx].QuestionType === 48 && length <= 130 && this.isBaseLineTask) {
|
if (this.measurements[idx].QuestionType === 48){
|
||||||
// 脾脏状态设置默认值为正常
|
this.calculateSpleenStatus = ''
|
||||||
this.$set(this.questionForm, this.spleenStatusId, '1')
|
this.setSpleenStatus(length)
|
||||||
}
|
|
||||||
if (this.measurements[idx].QuestionType === 48 && length > 130 && this.isBaseLineTask) {
|
|
||||||
// 脾脏状态设置默认值为肿大
|
|
||||||
this.$set(this.questionForm, this.spleenStatusId, '6')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if (this.measurements[idx].QuestionType === 48 && length <= 130 && this.isBaseLineTask) {
|
||||||
|
// // 脾脏状态设置默认值为正常
|
||||||
|
// this.$set(this.questionForm, this.spleenStatusId, '1')
|
||||||
|
// }
|
||||||
|
// if (this.measurements[idx].QuestionType === 48 && length > 130 && this.isBaseLineTask) {
|
||||||
|
// // 脾脏状态设置默认值为肿大
|
||||||
|
// this.$set(this.questionForm, this.spleenStatusId, '6')
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
store.dispatch('reading/addOrUpdateNonTargetMeasuredData', { visitTaskId: this.visitTaskId, data: data })
|
store.dispatch('reading/addOrUpdateNonTargetMeasuredData', { visitTaskId: this.visitTaskId, data: data })
|
||||||
if(this.isQulityIssues){
|
if(this.isQulityIssues){
|
||||||
DicomEvent.$emit('questionFormChange', true)
|
DicomEvent.$emit('questionFormChange', true)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
setSpleenStatus(length){
|
||||||
|
if(length){
|
||||||
|
if(this.isBaseLineTask){
|
||||||
|
// 直径≤130mm时,系统默认脾脏状态为“正常”
|
||||||
|
if(length <= 130){
|
||||||
|
this.$set(this.questionForm, this.spleenStatusId, '1')
|
||||||
|
this.calculateSpleenStatus = '1'
|
||||||
|
}
|
||||||
|
// 直径>130mm时,系统默认脾脏状态为“肿大”
|
||||||
|
if(length > 130){
|
||||||
|
this.$set(this.questionForm, this.spleenStatusId, '6')
|
||||||
|
this.calculateSpleenStatus = '6'
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
// 与基线相比脾垂直径变化值
|
||||||
|
var diffFromBaseline = length - this.spleenInfo.BaseLineSpleenLength
|
||||||
|
var percentFormBaseline = 0
|
||||||
|
if(this.spleenInfo.BaseLineSpleenLength){
|
||||||
|
percentFormBaseline = length * 100 / (this.spleenInfo.BaseLineSpleenLength - 130)
|
||||||
|
}
|
||||||
|
if(this.spleenInfo.BaseLineSpleenLength > 130 && diffFromBaseline >= 10 && percentFormBaseline > 50){
|
||||||
|
// 1、基线 垂直径>130 mm
|
||||||
|
// 2、与基线相比脾垂直径变化值≥10 mm
|
||||||
|
// 3、与基线相比脾肿大增加的百分比>50%
|
||||||
|
// 系统默认脾脏状态为“显著增大”
|
||||||
|
this.$set(this.questionForm, this.spleenStatusId, '4')
|
||||||
|
this.calculateSpleenStatus = '4'
|
||||||
|
}else if( this.spleenInfo.BaseLineSpleenLength <= 130 && diffFromBaseline >= 20 && length > 130){
|
||||||
|
// 1、基线垂直径≤130mm
|
||||||
|
// 2、与基线相比脾垂直径变化值≥20 mm
|
||||||
|
// 3、当前垂直径>130 mm
|
||||||
|
// 系统默认脾脏状态为“显著增大”
|
||||||
|
this.$set(this.questionForm, this.spleenStatusId, '4')
|
||||||
|
this.calculateSpleenStatus = '4'
|
||||||
|
}else if( this.spleenInfo.BaseLineSpleenLength > 130 && this.spleenInfo.LowSpleenLength <= 130 && diffFromBaseline >= 20 && length > 130){
|
||||||
|
// 1、基线 垂直径>130 mm
|
||||||
|
// 2、当前访视的前面访视中 存在垂直径≤130mm
|
||||||
|
// 3、与最低点相比脾脏垂直径的增加值≥20 mm
|
||||||
|
// 4、当前垂直径>130 mm
|
||||||
|
// 系统默认脾脏状态为“显著增大”
|
||||||
|
this.$set(this.questionForm, this.spleenStatusId, '4')
|
||||||
|
this.calculateSpleenStatus = '4'
|
||||||
|
}else if(length < 130){
|
||||||
|
// 当前访视的垂直径≤130mm
|
||||||
|
// 系统默认脾脏状态为“正常”
|
||||||
|
this.$set(this.questionForm, this.spleenStatusId, '1')
|
||||||
|
this.calculateSpleenStatus = '1'
|
||||||
|
}else if(this.spleenInfo.BaseLineState === '6' && percentFormBaseline < -50){
|
||||||
|
// 1、基线期 状态为“肿大”
|
||||||
|
// 2、与基线相比脾肿大增加的百分比小于-50%
|
||||||
|
// 系统默认脾脏状态为“部分缓解”
|
||||||
|
this.$set(this.questionForm, this.spleenStatusId, '2')
|
||||||
|
this.calculateSpleenStatus = '2'
|
||||||
|
}else{
|
||||||
|
this.$set(this.questionForm, this.spleenStatusId, '3')
|
||||||
|
this.calculateSpleenStatus = '3'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
resetFormItemData(v) {
|
resetFormItemData(v) {
|
||||||
this.questionForm[v] = null
|
this.questionForm[v] = null
|
||||||
if (v === this.spleenLengthId) {
|
if (v === this.spleenLengthId) {
|
||||||
|
|
Loading…
Reference in New Issue