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

View File

@ -87,10 +87,15 @@
</div> </div>
</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)" /> <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> --> </el-tooltip> -->
</div> </div>
@ -147,7 +152,7 @@
</div> </div>
</template> </template>
<script> <script>
import { splitLesion } from '@/api/trials' import { splitLesion, getSplitPPdSum } from '@/api/trials'
import DicomEvent from './../DicomEvent' import DicomEvent from './../DicomEvent'
import store from '@/store' import store from '@/store'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
@ -202,7 +207,9 @@ export default {
isFirstRender: false, isFirstRender: false,
CriterionType: null, CriterionType: null,
subjectCode: '', subjectCode: '',
isNonTargetMeasurement: false isNonTargetMeasurement: false,
splitTargetLesions: [],
lesionTypeQuestionId: ''
} }
}, },
computed: { computed: {
@ -257,6 +264,19 @@ export default {
this.$refs['ecrf3'].getQuestions(this.visitTaskId) 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) window.addEventListener('resize', this.setHeight)
}, },
@ -268,6 +288,7 @@ export default {
}, },
methods: { methods: {
async initList() { async initList() {
console.log('initList')
var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.lastCanvasTaskId) var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.lastCanvasTaskId)
if (i > -1) { if (i > -1) {
this.visitTaskId = this.visitTaskList[i].VisitTaskId this.visitTaskId = this.visitTaskList[i].VisitTaskId
@ -297,6 +318,9 @@ export default {
await store.dispatch('reading/setStatus', { visitTaskId: this.visitTaskList[i].VisitTaskId }) await store.dispatch('reading/setStatus', { visitTaskId: this.visitTaskList[i].VisitTaskId })
loading.close() loading.close()
} }
if (!this.isBaseLineTask) {
this.splitTargetLesions = await this.getSplitTargetLesionPDD()
}
this.questions = this.visitTaskList[i].ReadingQuestions this.questions = this.visitTaskList[i].ReadingQuestions
this.$nextTick(() => { this.$nextTick(() => {
this.$refs['ecrf'].getQuestions(this.visitTaskId) this.$refs['ecrf'].getQuestions(this.visitTaskId)
@ -306,7 +330,15 @@ export default {
this.tableQuestions.forEach(item => { this.tableQuestions.forEach(item => {
item.TableQuestions.Answers.forEach(i => { item.TableQuestions.Answers.forEach(i => {
var refName = `${item.Id}_${i.RowIndex}` 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 => { return new Promise(async resolve => {
try { try {
const loading = this.$loading({ fullscreen: true }) 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) var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
if (idx > -1) { if (idx > -1) {
if (this.visitTaskList[idx].ReadingQuestions.length > 0) { if (this.visitTaskList[idx].ReadingQuestions.length > 0) {
@ -425,12 +458,22 @@ export default {
this.isBaseLineTask = this.visitTaskList[idx].IsBaseLineTask this.isBaseLineTask = this.visitTaskList[idx].IsBaseLineTask
this.isCurrentTask = this.visitTaskList[idx].IsCurrentTask this.isCurrentTask = this.visitTaskList[idx].IsCurrentTask
} }
if (!this.isBaseLineTask) {
this.splitTargetLesions = await this.getSplitTargetLesionPDD()
}
this.getTableQuestions() this.getTableQuestions()
this.$nextTick(() => { this.$nextTick(() => {
this.tableQuestions.forEach(item => { this.tableQuestions.forEach(item => {
item.TableQuestions.Answers.forEach(i => { item.TableQuestions.Answers.forEach(i => {
var refName = `${item.Id}_${i.RowIndex}` 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) } } catch (e) { console.log(e) }
}) })
}, },
getSplitTargetLesionPDD() {
return new Promise(resolve => {
getSplitPPdSum({ visitTaskId: this.visitTaskId }).then(res => {
resolve(res.Result)
}).catch(() => { resolve() })
})
},
setHeight() { setHeight() {
this.height = window.innerHeight - 140 this.height = window.innerHeight - 140
}, },