lugano病灶分裂
parent
6778784111
commit
ee8b630806
|
@ -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)// 相比PPD最低点LDi增加值
|
||||
ldiIncrease = isNaN(parseFloat(ldiIncrease)) ? 0 : parseFloat(ldiIncrease)
|
||||
var sdiIncrease = this.getQuestionVal(19)// 相比PPD最低点LDi增加值
|
||||
var sdiIncrease = this.getQuestionVal(19)// 相比PPD最低点SDi增加值
|
||||
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<当前靶病灶LDi≤20mm
|
||||
* 相比最低点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<当前靶病灶LDi≤20mm
|
||||
* 相比最低点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 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断);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() })
|
||||
})
|
||||
})
|
||||
|
|
|
@ -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
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue