lugano病灶分裂

uat_us
caiyiling 2024-02-20 10:06:30 +08:00
parent 6778784111
commit ee8b630806
2 changed files with 111 additions and 18 deletions

View File

@ -340,7 +340,8 @@ export default {
pictureBaseStr: '',
currentMarkTool: '',
digitPlaces: 2,
stateDisabled: false
stateDisabled: false,
splitLesionTargetPDD: null
}
},
mounted() {
@ -363,10 +364,9 @@ export default {
})
},
previewImage() {
console.log(this.$refs.viewer[0])
this.$refs.viewer[0].$viewer.show()
},
async initForm() {
async initForm(params) {
const loading = this.$loading({ fullscreen: true })
this.questions.forEach(item => {
var val = this.answers[item.Id]
@ -448,6 +448,14 @@ export default {
const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
}
if (this.lesionType === 0 && params && params.splitLesionTargetPPD) {
// ppd
var ppd = this.getQuestionVal(12)
ppd = isNaN(parseFloat(ppd)) ? 0 : parseFloat(ppd)
this.splitLesionTargetPDD = ppd + params.splitLesionTargetPPD
}
//
var state = this.getQuestionVal(7)//
@ -458,9 +466,15 @@ export default {
pddIncrease = isNaN(parseFloat(pddIncrease)) ? 0 : parseFloat(pddIncrease)
var ldiIncrease = this.getQuestionVal(18)// PPDLDi
ldiIncrease = isNaN(parseFloat(ldiIncrease)) ? 0 : parseFloat(ldiIncrease)
var sdiIncrease = this.getQuestionVal(19)// PPDLDi
var sdiIncrease = this.getQuestionVal(19)// PPDSDi
sdiIncrease = isNaN(parseFloat(sdiIncrease)) ? 0 : parseFloat(sdiIncrease)
if (!this.isBaseLineTask && state === 4 && this.lesionType === 0 && ldi && pddIncrease && ldiIncrease && sdiIncrease) {
if (this.splitLesionTargetPDD) {
var minPPD = this.getQuestionVal(13)
minPPD = parseFloat(minPPD)
pddIncrease = ((((this.splitLesionTargetPDD - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces)
}
/**
* 15mm<当前靶病灶LDi20mm
* 相比最低点PPD增加百分比 50
@ -805,6 +819,9 @@ export default {
this.$set(this.questionForm, stateId, 0)
}
}
} else if (this.isCurrentTaskAdd === 'True' && !lesionState && measureData.type === 'Bidirectional') {
const stateId = this.getQuestionId(7)
this.$set(this.questionForm, stateId, 0)
}
if (this.lesionType === 0) {
this.calculatePPD()
@ -941,34 +958,56 @@ export default {
} else {
this.$set(this.questionForm, sdiIncreaseObj.Id, 'NA')
}
var pddIncreaseNum = null
if (this.splitLesionTargetPDD) {
pddIncreaseNum = ((((this.splitLesionTargetPDD - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces)
} else {
pddIncreaseNum = ((((ppd - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces)
}
/** 疾病进展* **/
if (!this.isBaseLineTask && ldi && pddIncrease && ldiIncrease && sdiIncrease) {
if (!this.isBaseLineTask && ldi && pddIncreaseNum && ldiIncrease && sdiIncrease && this.lesionType === 0 && this.isCurrentTaskAdd === 'False') {
/**
* 15mm<当前靶病灶LDi20mm
* 相比最低点PPD增加百分比 50
* 相比PPD最低点LDi增加值 5 mm 或者 相比PPD最低点SDi增加值5 mm
**/
if ((ldi > 15 && ldi <= 20) && (pddIncrease >= 50) && (ldiIncrease >= 5 || sdiIncrease >= 5)) {
if ((ldi > 15 && ldi <= 20) && (pddIncreaseNum >= 50) && (ldiIncrease >= 5 || sdiIncrease >= 5)) {
const stateId = this.getQuestionId(7)
console.log(stateId)
this.$set(this.questionForm, stateId, 4)
this.stateDisabled = true
} else if ((ldi > 20) && (pddIncrease >= 50) && (ldiIncrease >= 10 || sdiIncrease >= 10)) {
} else if ((ldi > 20) && (pddIncreaseNum >= 50) && (ldiIncrease >= 10 || sdiIncrease >= 10)) {
/**
* 当前靶病灶LDi>20 mm
* 相比最低点PPD增加百分比 50
* 相比PPD最低点LDi增加值 10 mm 或者 相比PPD最低点SDi增加值Sdi 10 mm
**/
const stateId = this.getQuestionId(7)
console.log(stateId)
this.$set(this.questionForm, stateId, 4)
this.stateDisabled = true
} else {
//
// const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
// if (lesionState === 4) {
// const stateId = this.getQuestionId(7)
// this.$set(this.questionForm, stateId, null)
// }
this.stateDisabled = false
}
} else {
//
// const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
// if (lesionState === 4) {
// const stateId = this.getQuestionId(7)
// this.$set(this.questionForm, stateId, null)
// }
this.stateDisabled = false
}
},
setSplitLesionTargetPPD(v) {
var ppd = this.getQuestionVal(12)
ppd = isNaN(parseFloat(ppd)) ? 0 : parseFloat(ppd)
this.splitLesionTargetPDD = ppd + v
},
returnFloat(num) {
if (num) return
var value = Math.round(parseFloat(num) * 100) / 100
@ -1622,12 +1661,12 @@ export default {
submitTableQuestion(params).then(async res => {
//
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.currentMarkTool = measureData ? measureData.type : ''
// saveTypeEnum 01访/2
this.$set(this.questionForm, 'saveTypeEnum', 2)
this.originalQuestionForm = { ...this.questionForm }
loading.close()
var isLymphLesion = this.getQuestionVal(2)
isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
var lesionOrgan = this.getQuestionVal(6)
@ -1642,6 +1681,10 @@ export default {
DicomEvent.$emit('readingPageUpdate', {})
DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('setMeasuredToolsPassive')
loading.close()
if (parseInt(this.answers.SplitOrMergeType) === 0) {
this.$emit('getReadingQuestionAndAnswer')
}
}).catch(() => { loading.close() })
})
})

View File

@ -87,10 +87,15 @@
</div>
</div>
<div v-if="((item.LesionType === 0 && parseInt(item.TableQuestions.Answers[i].lesionState) === 0) || (item.LesionType === 1 && [0,1].includes(parseInt(item.TableQuestions.Answers[i].lesionState))) || (item.LesionType === 2 && parseInt(item.TableQuestions.Answers[i].lesionState) === 0)) && item.TableQuestions.Answers[i].IsCurrentTaskAdd === 'False'" style="position: absolute;right: 5px;top: 2px;transform: rotateY(180deg);">
<div v-if="((item.LesionType === 0 && parseInt(item.TableQuestions.Answers[i].lesionState) === 0) || (item.LesionType === 1 && [0,1].includes(parseInt(item.TableQuestions.Answers[i].lesionState))) || (item.LesionType === 2 && parseInt(item.TableQuestions.Answers[i].lesionState) === 0)) && item.TableQuestions.Answers[i].IsCurrentTaskAdd === 'False'" style="position: absolute;right: 5px;top: 2px;">
<!-- 分裂 -->
<!-- <el-tooltip v-show="readingTaskState<2 && !!item.TableQuestions.Answers[i].RowId && !isBaseLineTask && item.TableQuestions.Answers[i].isDicomReading !== false" class="item" :content="$t('trials:reading:button:split')" placement="left">
<el-tooltip v-show="!!item.TableQuestions.Answers[i].RowId" class="item" :content="$t('trials:reading:button:split')" placement="bottom">
<i class="iconfont icon-24gl-split" style="color:#fff;font-size: 16px;" @click.stop="handleSplit(item.TableQuestions.Answers[i].RowId,item.Id)" />
</el-tooltip>
<!-- 融合 -->
<!-- <el-tooltip v-show="!!item.TableQuestions.Answers[i].RowId " class="item" :content="$t('trials:reading:button:merge')" placement="bottom">
<i class="iconfont icon-24gl-merge" style="color:#fff;font-size: 16px;" />
</el-tooltip> -->
</div>
@ -147,7 +152,7 @@
</div>
</template>
<script>
import { splitLesion } from '@/api/trials'
import { splitLesion, getSplitPPdSum } from '@/api/trials'
import DicomEvent from './../DicomEvent'
import store from '@/store'
import { mapGetters } from 'vuex'
@ -202,7 +207,9 @@ export default {
isFirstRender: false,
CriterionType: null,
subjectCode: '',
isNonTargetMeasurement: false
isNonTargetMeasurement: false,
splitTargetLesions: [],
lesionTypeQuestionId: ''
}
},
computed: {
@ -257,6 +264,19 @@ export default {
this.$refs['ecrf3'].getQuestions(this.visitTaskId)
})
})
DicomEvent.$on('refreshSplitTargetLesionPDD', async(callback) => {
this.splitTargetLesions = await this.getSplitTargetLesionPDD()
if (this.splitTargetLesions && this.splitTargetLesions.length > 0) {
this.splitTargetLesions.map(i => {
var refName = `${this.lesionTypeQuestionId}_${i.RowIndex}`
console.log(refName)
var params = {}
params.splitLesionTargetPPD = i.AllPPD
this.$refs[refName] && this.$refs[refName][0].initForm(params)
})
}
callback(true)
})
window.addEventListener('resize', this.setHeight)
},
@ -268,6 +288,7 @@ export default {
},
methods: {
async initList() {
console.log('initList')
var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.lastCanvasTaskId)
if (i > -1) {
this.visitTaskId = this.visitTaskList[i].VisitTaskId
@ -297,6 +318,9 @@ export default {
await store.dispatch('reading/setStatus', { visitTaskId: this.visitTaskList[i].VisitTaskId })
loading.close()
}
if (!this.isBaseLineTask) {
this.splitTargetLesions = await this.getSplitTargetLesionPDD()
}
this.questions = this.visitTaskList[i].ReadingQuestions
this.$nextTick(() => {
this.$refs['ecrf'].getQuestions(this.visitTaskId)
@ -306,7 +330,15 @@ export default {
this.tableQuestions.forEach(item => {
item.TableQuestions.Answers.forEach(i => {
var refName = `${item.Id}_${i.RowIndex}`
this.$refs[refName] && this.$refs[refName][0].initForm()
var params = {}
if (parseInt(i.LesionType) === 0) {
this.lesionTypeQuestionId = item.Id
var idx = this.splitTargetLesions.findIndex(v => v.RowId === i.RowId)
if (idx > -1) {
params.splitLesionTargetPPD = this.splitTargetLesions[idx].AllPPD
}
}
this.$refs[refName] && this.$refs[refName][0].initForm(params)
})
})
})
@ -415,7 +447,8 @@ export default {
return new Promise(async resolve => {
try {
const loading = this.$loading({ fullscreen: true })
await store.dispatch('reading/refreshReadingQuestionAndAnswer', { trialId: this.$router.currentRoute.query.trialId, visitTaskId: this.visitTaskId }).then(() => {
await store.dispatch('reading/refreshReadingQuestionAndAnswer', { trialId: this.$router.currentRoute.query.trialId, visitTaskId: this.visitTaskId }).then(async() => {
var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
if (idx > -1) {
if (this.visitTaskList[idx].ReadingQuestions.length > 0) {
@ -425,12 +458,22 @@ export default {
this.isBaseLineTask = this.visitTaskList[idx].IsBaseLineTask
this.isCurrentTask = this.visitTaskList[idx].IsCurrentTask
}
if (!this.isBaseLineTask) {
this.splitTargetLesions = await this.getSplitTargetLesionPDD()
}
this.getTableQuestions()
this.$nextTick(() => {
this.tableQuestions.forEach(item => {
item.TableQuestions.Answers.forEach(i => {
var refName = `${item.Id}_${i.RowIndex}`
this.$refs[refName] && this.$refs[refName][0].initForm()
var params = {}
if (parseInt(i.LesionType) === 0) {
var idx = this.splitTargetLesions.findIndex(v => v.RowId === i.RowId)
if (idx > -1) {
params.splitLesionTargetPPD = this.splitTargetLesions[idx].AllPPD
}
}
this.$refs[refName] && this.$refs[refName][0].initForm(params)
})
})
})
@ -442,6 +485,13 @@ export default {
} catch (e) { console.log(e) }
})
},
getSplitTargetLesionPDD() {
return new Promise(resolve => {
getSplitPPdSum({ visitTaskId: this.visitTaskId }).then(res => {
resolve(res.Result)
}).catch(() => { resolve() })
})
},
setHeight() {
this.height = window.innerHeight - 140
},