PCWG标准更改

uat_us
caiyiling 2024-07-17 18:11:00 +08:00
parent 39a0c8163f
commit af586a1187
3 changed files with 319 additions and 179 deletions

View File

@ -484,8 +484,8 @@ export default {
const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6)
const lesionState = Number(this.getQuestionVal(7))
const lesionNum = Number(this.getQuestionVal(11))
const lesionState = this.getQuestionVal(7)
const lesionNum = this.getQuestionVal(11)
this.$emit('resetQuestions', { lesionPart, lesionOrgan, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionNum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
},
@ -547,8 +547,8 @@ export default {
this.$set(this.questionForm, 'MeasureData', measureData)
const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6)
const lesionState = Number(this.getQuestionVal(7))
const lesionNum = Number(this.getQuestionVal(11))
const lesionState = this.getQuestionVal(7)
const lesionNum = this.getQuestionVal(11)
this.$emit('resetQuestions', { lesionPart, lesionOrgan, lesionState, lesionNum, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
this.toolType = measureData.type
@ -572,10 +572,15 @@ export default {
}
},
getQuestionVal(questionMark) {
var idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
const idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
if (idx > -1) {
var questionId = this.questions[idx].Id
return this.questionForm[questionId]
const questionId = this.questions[idx].Id
const answer = this.questionForm[questionId]
if (isNaN(parseFloat(answer))) {
return answer
} else {
return parseFloat(answer)
}
} else {
return ''
}
@ -619,78 +624,79 @@ export default {
// Blob
return new Blob([bytesCode], { type: imgtype })
},
handleSave() {
this.$refs.measurementForm.validate(async valid => {
if (!valid) return
var lesionState = this.getQuestionVal(7)
var measureData = this.questionForm.MeasureData
// 线
if (!this.isBaseLineTask) {
// 2
// 使2
if (this.lesionType === 2 && lesionState === 2) {
if (!(measureData && measureData.type === 'ArrowAnnotate')) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg2'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
}
// 3
// 使2
if (this.lesionType === 3 && lesionState === 2) {
if (!(measureData && measureData.type === 'ArrowAnnotate')) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg3'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
}
// 使3
if (this.lesionType === 3 && lesionState === 3) {
if (!(measureData && measureData.type === 'ArrowAnnotate')) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg4'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
}
// 使1
if (this.lesionType === 3 && lesionState === 1) {
if (!(measureData && measureData.type === 'ArrowAnnotate')) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg5'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
}
// 4
if (this.lesionType === 3 && lesionState === 4) {
if (measureData) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg6'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
async handleSave() {
const valid = await this.$refs.measurementForm.validate()
if (!valid) return
var lesionState = this.getQuestionVal(7)
var measureData = this.questionForm.MeasureData
// 线
if (!this.isBaseLineTask) {
// 2
// 使2
if (this.lesionType === 2 && lesionState === 2) {
if (!(measureData && measureData.type === 'ArrowAnnotate')) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg2'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
}
const loading = this.$loading({ fullscreen: true })
DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType, isMarked: !!measureData }, async val => {
// 3
// 使2
if (this.lesionType === 3 && lesionState === 2) {
if (!(measureData && measureData.type === 'ArrowAnnotate')) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg3'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
}
// 使3
if (this.lesionType === 3 && lesionState === 3) {
if (!(measureData && measureData.type === 'ArrowAnnotate')) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg4'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
}
// 使1
if (this.lesionType === 3 && lesionState === 1) {
if (!(measureData && measureData.type === 'ArrowAnnotate')) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg5'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
}
// 4
if (this.lesionType === 3 && lesionState === 4) {
if (measureData) {
this.$confirm(this.$t('trials:readingPGWC:warnning:msg6'), {
type: 'warning',
showCancelButton: false,
callback: action => {}
})
loading.close()
return
}
}
}
const loading = this.$loading({ fullscreen: true })
DicomEvent.$emit('getScreenshots', { questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, visitTaskId: this.visitTaskId, lesionName: this.lesionMark, lesionType: this.lesionType, isMarked: !!measureData }, async val => {
try {
var picturePath = ''
if (val && measureData) {
var pictureObj = await this.uploadScreenshots(`${new Date().getTime()}`, val)
@ -724,106 +730,115 @@ export default {
organInfoId: this.questionForm.OrganInfoId,
markTool: measureData ? measureData.type : ''
}
submitTableQuestion(params).then(async res => {
try {
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.currentMarkTool = measureData ? measureData.type : ''
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)
this.$set(this.questionForm, 'RowId', res.Result.RowId)
const lesionPart = this.getQuestionVal(8)
const lesionState = Number(this.getQuestionVal(7))
const lesionNum = Number(this.getQuestionVal(11))
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, saveTypeEnum: this.questionForm.saveTypeEnum, lesionState, lesionNum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
DicomEvent.$emit('getMeasureData')
this.$emit('close')
DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('setMeasuredToolsPassive')
} catch (e) {
console.log(e)
}
}).catch(() => { loading.close() })
})
})
},
handleDeleteMeasureData() {
this.$confirm(this.$t('trials:reading:warnning:msg47'), {
type: 'warning',
distinguishCancelAndClose: true
})
.then(async() => {
if (this.questionForm.RowId) {
this.$set(this.questionForm, 'saveTypeEnum', 1)
} else {
this.$set(this.questionForm, 'saveTypeEnum', 0)
}
var remark = this.getLesionName(this.orderMark, this.questionForm.RowIndex)
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, orderMarkName: remark })
DicomEvent.$emit('getMeasureData')
const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6)
const lesionState = Number(this.getQuestionVal(7))
const lesionNum = Number(this.getQuestionVal(11))
const res = await submitTableQuestion(params)
if (res.IsSuccess) {
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.currentMarkTool = measureData ? measureData.type : ''
this.$set(this.questionForm, 'saveTypeEnum', 2)
this.originalQuestionForm = { ...this.questionForm }
this.$set(this.questionForm, 'MeasureData', '')
let anwsers = null
if (this.answers.measureObj) {
anwsers = Object.assign({ measureObj: '' }, this.questionForm)
} else {
anwsers = Object.assign({}, this.questionForm)
}
this.$emit('resetQuestions', { lesionPart, lesionOrgan, lesionState, lesionNum, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers })
DicomEvent.$emit('refreshStudyListMeasureData')
})
.catch(() => {})
},
handleDelete() {
this.$confirm(this.$t('trials:reading:warnning:msg48'), {
type: 'warning',
distinguishCancelAndClose: true
})
.then(async() => {
if (this.questionForm.RowId) {
const loading = this.$loading({ fullscreen: true })
var param = {
visitTaskId: this.visitTaskId,
questionId: this.parentQsId,
rowId: this.questionForm.RowId
}
deleteReadingRowAnswer(param)
.then(async res => {
loading.close()
if (res.IsSuccess) {
if (this.questionForm.MeasureData) {
var remark = this.getLesionName(this.orderMark, this.questionForm.RowIndex)
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, orderMarkName: remark })
}
DicomEvent.$emit('getMeasureData')
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
DicomEvent.$emit('getReportInfo', true)
this.$message.success(this.$t('common:message:deletedSuccessfully'))
loading.close()
}
}).catch(() => { loading.close() })
} else {
const loading = this.$loading({ fullscreen: true })
//
if (this.questionForm.MeasureData) {
var remark = this.getLesionName(this.orderMark, this.questionForm.RowIndex)
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, orderMarkName: remark })
}
var isLymphLesion = this.getQuestionVal(2)
isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
var lesionOrgan = this.getQuestionVal(6)
this.$set(this.questionForm, 'RowId', res.Result.RowId)
const lesionPart = this.getQuestionVal(8)
const lesionState = this.getQuestionVal(7)
const lesionNum = this.getQuestionVal(11)
this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, saveTypeEnum: this.questionForm.saveTypeEnum, lesionState, lesionNum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
DicomEvent.$emit('getMeasureData')
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
DicomEvent.$emit('refreshStudyListMeasureData')
this.$emit('close')
DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('setMeasuredToolsPassive')
loading.close()
}
})
} catch (e) {
console.log(e)
loading.close()
}
})
},
async handleDeleteMeasureData() {
//
const confirm = await this.$confirm(
this.$t('trials:reading:warnning:msg47'),
{
type: 'warning',
distinguishCancelAndClose: true
}
)
if (confirm !== 'confirm') return
if (this.questionForm.RowId) {
this.$set(this.questionForm, 'saveTypeEnum', 1)
} else {
this.$set(this.questionForm, 'saveTypeEnum', 0)
}
var remark = this.getLesionName(this.orderMark, this.questionForm.RowIndex)
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, orderMarkName: remark })
DicomEvent.$emit('getMeasureData')
const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6)
const lesionState = this.getQuestionVal(7)
const lesionNum = this.getQuestionVal(11)
this.$set(this.questionForm, 'MeasureData', '')
let anwsers = null
if (this.answers.measureObj) {
anwsers = Object.assign({ measureObj: '' }, this.questionForm)
} else {
anwsers = Object.assign({}, this.questionForm)
}
this.$emit('resetQuestions', { lesionPart, lesionOrgan, lesionState, lesionNum, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers })
DicomEvent.$emit('refreshStudyListMeasureData')
},
async handleDelete() {
//
const loading = this.$loading({ fullscreen: true })
try {
const confirm = await this.$confirm(
this.$t('trials:reading:warnning:msg48'),
{
type: 'warning',
distinguishCancelAndClose: true
}
)
if (confirm !== 'confirm') return
if (this.questionForm.RowId) {
var param = {
visitTaskId: this.visitTaskId,
questionId: this.parentQsId,
rowId: this.questionForm.RowId
}
const res = await deleteReadingRowAnswer(param)
if (res.IsSuccess) {
if (this.questionForm.MeasureData) {
const remark = this.getLesionName(this.orderMark, this.questionForm.RowIndex)
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, orderMarkName: remark })
}
DicomEvent.$emit('getMeasureData')
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
DicomEvent.$emit('getReportInfo', true)
this.$message.success(this.$t('common:message:deletedSuccessfully'))
}
loading.close()
} else {
//
if (this.questionForm.MeasureData) {
const remark = this.getLesionName(this.orderMark, this.questionForm.RowIndex)
await store.dispatch('reading/removeMeasuredData', { visitTaskId: this.visitTaskId, measureData: this.questionForm.MeasureData, questionId: this.parentQsId, rowIndex: this.questionForm.RowIndex, orderMarkName: remark })
}
DicomEvent.$emit('getMeasureData')
this.$emit('close', { lesionType: this.lesionType, rowIndex: this.rowIndex, visitTaskId: this.visitTaskId })
DicomEvent.$emit('refreshStudyListMeasureData')
loading.close()
}
} catch (e) {
console.log(e)
loading.close()
}
},
handleClose() {
if (!this.questionForm.RowId) {
@ -866,7 +881,7 @@ export default {
this.$set(this.questionForm, stateId, 4)
const lesionPart = this.getQuestionVal(8)
const lesionOrgan = this.getQuestionVal(6)
const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : ''
const lesionState = this.getQuestionVal(7)
this.$emit('resetQuestions', { lesionPart, lesionOrgan, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm })
}
}

View File

@ -2,10 +2,20 @@
<div class="measurement-wrapper" :style="{'height':height+10+'px'}">
<div class="container" :style="{'height':height+'px'}">
<h3 v-if="isReadingShowSubjectInfo" style="color: #ddd;padding: 5px 0px;margin: 0;">
<span v-if="subjectCode">{{ subjectCode }} </span>
<span style="margin-left:5px;">{{ taskBlindName }}</span>
</h3>
<div class="basic-info">
<h3 v-if="isReadingShowSubjectInfo">
<span v-if="subjectCode">{{ subjectCode }} </span>
<span style="margin-left:5px;">{{ taskBlindName }}</span>
</h3>
<div v-if="readingTaskState < 2">
<el-tooltip class="item" effect="dark" :content="$t('trials:dicomReading:message:confirmReset')" placement="bottom">
<i
class="el-icon-refresh-left"
@click="resetMeasuredData"
/>
</el-tooltip>
</div>
</div>
<!-- 非测量问题 -->
<div class="lesions">
<Questions
@ -101,6 +111,7 @@
</template>
<script>
import { resetReadingTask } from '@/api/reading'
import DicomEvent from './../DicomEvent'
import Questions from './../Questions'
import QuestionForm from './QuestionForm'
@ -688,6 +699,99 @@ export default {
this.activeItem.activeRowIndex = null
this.activeItem.activeCollapseId = null
this.activeName = ''
},
getECRFQuestions(obj) {
this.$refs['ecrf'].getQuestions(obj.visitTaskId)
},
async resetMeasuredData() {
try {
const confirm = await this.$confirm(
this.$t('trials:dicomReading:message:confirmReset1'),
this.$t('trials:dicomReading:message:confirmReset2'),
{
type: 'warning',
distinguishCancelAndClose: true
}
)
if (confirm !== 'confirm') return
this.loading = true
const res = await resetReadingTask({ visitTaskId: this.visitTaskId })
this.loading = false
if (res.IsSuccess) {
//
this.activeName = ''
this.activeItem.activeRowIndex = null
this.activeItem.activeCollapseId = null
await this.getReadingQuestionAndAnswer(this.visitTaskId)
this.$refs['ecrf'].resetQSForm()
DicomEvent.$emit('getMeasureData')
DicomEvent.$emit('getReportInfo', true)
DicomEvent.$emit('refreshStudyListMeasureData')
}
} catch (e) {
this.loading = false
console.log(e)
}
},
receiveMsg(event) {
if (event.data.type === 'isCanActiveNoneDicomTool') {
this.getUnSaveTarget()
var obj = {}
if (this.unSaveTargets.length > 0) {
var rowIndex = String(this.unSaveTargets[0].rowIndex)
var questionId = this.unSaveTargets[0].questionId
const refName = `${this.activeItem.activeCollapseId}_${this.activeItem.activeRowIndex}`
if (rowIndex === this.activeItem.activeRowIndex && questionId === this.activeItem.activeCollapseId && !this.$refs[refName][0].questionForm.MeasureData) {
//
// questions.findIndex(i => i.QuestionMark === questionMark)
var lesionType = this.$refs[refName][0].questionForm.LesionType
if (lesionType === 0) {
// ''
obj = { isCanActiveTool: false, lesionName: '', reason: this.$t('trials:reading:warnning:msg18') }
} else {
obj = { isCanActiveTool: true, lesionName: this.$refs[refName][0].lesionMark, reason: '', toolName: event.data.toolName }
}
} else {
let msg = this.$t('trials:reading:warnning:msg5')
msg = msg.replace('xxx', this.unSaveTargets[0].lessionName)
obj = { isCanActiveTool: false, lesionName: '', reason: msg }
}
} else {
if (this.activeItem.activeCollapseId) {
//
const refName = `${this.activeItem.activeCollapseId}_${this.activeItem.activeRowIndex}`
const lesionType = this.$refs[refName][0].questionForm.LesionType
if (lesionType === 0) {
//
obj = { isCanActiveTool: false, lesionName: '', reason: this.$t('trials:reading:warnning:msg18') }
} else {
obj = { isCanActiveTool: true, lesionName: this.$refs[refName][0].lesionMark, reason: '', toolName: event.data.toolName }
}
} else {
// /
var qsObj = null
var lesionName = ''
if (this.isBaseLineTask) {
const idx = this.tableQuestions.findIndex(item => item.LesionType === 1)
if (idx > -1) {
qsObj = this.tableQuestions[idx]
}
} else {
const idx = this.tableQuestions.findIndex(item => item.LesionType === 2)
if (idx > -1) {
qsObj = this.tableQuestions[idx]
}
}
var maxIndex = this.getMaxRowIndex(qsObj.TableQuestions.Answers)
lesionName = `${qsObj.OrderMark}${String(maxIndex + 1).padStart(2, '0')}`
obj = { isCanActiveTool: true, lesionName: lesionName, reason: '', toolName: event.data.toolName }
}
}
DicomEvent.$emit('isCanActiveNoneDicomTool', obj)
} else if (event.data.type === 'setMeasurement') {
this.setMeasuredData(event.data.data)
}
}
}
}
@ -700,6 +804,22 @@ export default {
.container{
padding: 10px;
.basic-info{
display: flex;
justify-content: space-between;
align-items: center;
h3{
color: #ddd;
padding: 5px 0px;
margin: 0;
}
i{
color: #fff;
font-size: 22px;
font-weight: bold;
cursor: pointer;
}
}
}
.title{
padding: 5px;

View File

@ -672,10 +672,15 @@ export default {
}
},
getQuestionVal(questionMark) {
var idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
const idx = this.questions.findIndex(i => i.QuestionMark === questionMark)
if (idx > -1) {
var questionId = this.questions[idx].Id
return this.questionForm[questionId]
const questionId = this.questions[idx].Id
const answer = this.questionForm[questionId]
if (isNaN(parseFloat(answer))) {
return answer
} else {
return parseFloat(answer)
}
} else {
return ''
}