iRecist和Recist阅片标准更改
parent
b8b876c0c9
commit
663c78ef51
|
@ -187,3 +187,10 @@ export function setSkipReadingCache(param) {
|
||||||
data: param
|
data: param
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export function resetReadingTask(param) {
|
||||||
|
return request({
|
||||||
|
url: `/ReadingImageTask/resetReadingTask`,
|
||||||
|
method: 'post',
|
||||||
|
data: param
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
{{ language==='en'?question.GroupEnName:question.GroupName }}
|
{{ language==='en'?question.GroupEnName:question.GroupName }}
|
||||||
</h4>
|
</h4>
|
||||||
</div>
|
</div>
|
||||||
<template v-else-if="((question.QuestionType === 56 || question.QuestionType === 57) && question.IsBaseLineTask)" />
|
<template v-else-if="((question.QuestionType === 56) && question.IsBaseLineTask)" />
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-if="(question.ShowQuestion===1 && question.ParentTriggerValueList.includes(String(questionForm[question.ParentId]))) || question.ShowQuestion===0"
|
v-if="(question.ShowQuestion===1 && question.ParentTriggerValueList.includes(String(questionForm[question.ParentId]))) || question.ShowQuestion===0"
|
||||||
|
@ -286,7 +286,7 @@
|
||||||
:reading-task-state="readingTaskState"
|
:reading-task-state="readingTaskState"
|
||||||
:question-form="questionForm"
|
:question-form="questionForm"
|
||||||
:visit-task-id="visitTaskId"
|
:visit-task-id="visitTaskId"
|
||||||
:pet5PS="pet5PS"
|
:pet5p-s="pet5PS"
|
||||||
:lung-is-inside-volume="lungIsInsideVolume"
|
:lung-is-inside-volume="lungIsInsideVolume"
|
||||||
:liver-is-inside-volume="liverIsInsideVolume"
|
:liver-is-inside-volume="liverIsInsideVolume"
|
||||||
@setFormItemData="setFormItemData"
|
@setFormItemData="setFormItemData"
|
||||||
|
@ -333,7 +333,7 @@ export default {
|
||||||
pet5PS: {
|
pet5PS: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: ''
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,10 +2,20 @@
|
||||||
<div class="measurement-wrapper" :style="{'height':height+10+'px'}">
|
<div class="measurement-wrapper" :style="{'height':height+10+'px'}">
|
||||||
|
|
||||||
<div class="container" :style="{'height':height+'px'}">
|
<div class="container" :style="{'height':height+'px'}">
|
||||||
<h3 v-if="isReadingShowSubjectInfo" style="color: #ddd;padding: 5px 0px;margin: 0;">
|
<div class="basic-info">
|
||||||
<span v-if="subjectCode">{{ subjectCode }} </span>
|
<h3 v-if="isReadingShowSubjectInfo">
|
||||||
<span style="margin-left:5px;">{{ taskBlindName }}</span>
|
<span v-if="subjectCode">{{ subjectCode }} </span>
|
||||||
</h3>
|
<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">
|
<div class="lesions">
|
||||||
<Questions
|
<Questions
|
||||||
|
@ -157,6 +167,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { splitLesion } from '@/api/trials'
|
import { splitLesion } from '@/api/trials'
|
||||||
|
import { resetReadingTask } from '@/api/reading'
|
||||||
import DicomEvent from './../DicomEvent'
|
import DicomEvent from './../DicomEvent'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
|
@ -1068,6 +1079,36 @@ export default {
|
||||||
getECRFQuestions(obj) {
|
getECRFQuestions(obj) {
|
||||||
this.$refs['ecrf'].getQuestions(obj.visitTaskId)
|
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) {
|
receiveMsg(event) {
|
||||||
if (event.data.type === 'isCanActiveNoneDicomTool') {
|
if (event.data.type === 'isCanActiveNoneDicomTool') {
|
||||||
this.getUnSaveTarget()
|
this.getUnSaveTarget()
|
||||||
|
@ -1140,6 +1181,22 @@ export default {
|
||||||
|
|
||||||
.container{
|
.container{
|
||||||
padding: 10px;
|
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{
|
.title{
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
|
|
|
@ -390,6 +390,18 @@ export default {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
async resetQSForm() {
|
||||||
|
try {
|
||||||
|
this.loading = true
|
||||||
|
var trialId = this.$route.query.trialId
|
||||||
|
await store.dispatch('reading/refreshDicomReadingQuestionAnswer', { trialId: trialId, visitTaskId: this.visitTaskId })
|
||||||
|
this.getQuestions(this.visitTaskId, true)
|
||||||
|
this.loading = false
|
||||||
|
} catch(e) {
|
||||||
|
this.loading = false
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
checkAnnotationStatus(obj) {
|
checkAnnotationStatus(obj) {
|
||||||
for (let i = 0; i < obj.length; i++) {
|
for (let i = 0; i < obj.length; i++) {
|
||||||
if (obj[i].SaveEnum === 1) {
|
if (obj[i].SaveEnum === 1) {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,10 +2,21 @@
|
||||||
<div class="measurement-wrapper" :style="{'height':height+10+'px'}">
|
<div class="measurement-wrapper" :style="{'height':height+10+'px'}">
|
||||||
|
|
||||||
<div class="container" :style="{'height':height+'px'}">
|
<div class="container" :style="{'height':height+'px'}">
|
||||||
<h3 v-if="isReadingShowSubjectInfo" style="color: #ddd;padding: 5px 0px;margin: 0;">
|
<div class="basic-info">
|
||||||
<span v-if="subjectCode">{{ subjectCode }} </span>
|
<h3 v-if="isReadingShowSubjectInfo">
|
||||||
<span style="margin-left:5px;">{{ taskBlindName }}</span>
|
<span v-if="subjectCode">{{ subjectCode }} </span>
|
||||||
</h3>
|
<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">
|
<div class="lesions">
|
||||||
<Questions ref="ecrf" :question-form-change-state="questionFormChangeState" :question-form-change-num="questionFormChangeNum" />
|
<Questions ref="ecrf" :question-form-change-state="questionFormChangeState" :question-form-change-num="questionFormChangeNum" />
|
||||||
|
@ -122,6 +133,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { splitLesion } from '@/api/trials'
|
import { splitLesion } from '@/api/trials'
|
||||||
|
import { resetReadingTask } from '@/api/reading'
|
||||||
import DicomEvent from './../DicomEvent'
|
import DicomEvent from './../DicomEvent'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
|
@ -943,6 +955,36 @@ export default {
|
||||||
getECRFQuestions(obj) {
|
getECRFQuestions(obj) {
|
||||||
this.$refs['ecrf'].getQuestions(obj.visitTaskId)
|
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) {
|
receiveMsg(event) {
|
||||||
if (event.data.type === 'isCanActiveNoneDicomTool') {
|
if (event.data.type === 'isCanActiveNoneDicomTool') {
|
||||||
this.getUnSaveTarget()
|
this.getUnSaveTarget()
|
||||||
|
@ -1021,6 +1063,22 @@ export default {
|
||||||
|
|
||||||
.container{
|
.container{
|
||||||
padding: 10px;
|
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{
|
.title{
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
|
|
|
@ -110,34 +110,38 @@
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="qs.DictionaryCode && qs.QuestionMark === 7 && !isBaseLineTask">
|
<template v-else-if="qs.DictionaryCode && qs.QuestionMark === 7 && !isBaseLineTask">
|
||||||
<!-- 首次分裂的病灶只能选择存在 -->
|
<el-option-group
|
||||||
<template v-if="answers.IsFristAdd=== 'True' && answers.SplitOrMergeType === '0'">
|
:label="!isNaN(parseFloat(answers.LastTaskState)) ? `${$t('trials:dicomReading:tip:lastVisitStatus')} ${$fd(qs.DictionaryCode,parseFloat(answers.LastTaskState))}` : ''"
|
||||||
<el-option
|
>
|
||||||
v-for="item of $d[qs.DictionaryCode]"
|
<!-- 首次分裂的病灶只能选择存在 -->
|
||||||
v-show="item.value === 0"
|
<template v-if="answers.IsFristAdd=== 'True' && answers.SplitOrMergeType === '0'">
|
||||||
:key="item.id"
|
<el-option
|
||||||
:value="item.value"
|
v-for="item of $d[qs.DictionaryCode]"
|
||||||
:label="item.label"
|
v-show="item.value === 0"
|
||||||
/>
|
:key="item.id"
|
||||||
</template>
|
:value="item.value"
|
||||||
<!-- 首次添加的新病灶不能为无法评估和消失 -->
|
:label="item.label"
|
||||||
<template v-else-if="isCurrentTaskAdd=== 'True' && lesionType === 2">
|
/>
|
||||||
<el-option
|
</template>
|
||||||
v-for="item of $d[qs.DictionaryCode]"
|
<!-- 首次添加的新病灶不能为无法评估和消失 -->
|
||||||
v-show="item.value === 0 || item.value === 1"
|
<template v-else-if="isCurrentTaskAdd=== 'True' && lesionType === 2">
|
||||||
:key="item.id"
|
<el-option
|
||||||
:value="item.value"
|
v-for="item of $d[qs.DictionaryCode]"
|
||||||
:label="item.label"
|
v-show="item.value === 0 || item.value === 1"
|
||||||
/>
|
:key="item.id"
|
||||||
</template>
|
:value="item.value"
|
||||||
<template v-else>
|
:label="item.label"
|
||||||
<el-option
|
/>
|
||||||
v-for="item of filterState($d[qs.DictionaryCode])"
|
</template>
|
||||||
:key="item.id"
|
<template v-else>
|
||||||
:value="item.value"
|
<el-option
|
||||||
:label="item.label"
|
v-for="item of filterState($d[qs.DictionaryCode])"
|
||||||
/>
|
:key="item.id"
|
||||||
</template>
|
:value="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</el-option-group>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="qs.DictionaryCode && qs.QuestionMark !== 7">
|
<template v-else-if="qs.DictionaryCode && qs.QuestionMark !== 7">
|
||||||
<el-option
|
<el-option
|
||||||
|
|
|
@ -2,10 +2,20 @@
|
||||||
<div class="measurement-wrapper" :style="{'height':height+10+'px'}">
|
<div class="measurement-wrapper" :style="{'height':height+10+'px'}">
|
||||||
|
|
||||||
<div class="container" :style="{'height':height+'px'}">
|
<div class="container" :style="{'height':height+'px'}">
|
||||||
<h3 v-if="isReadingShowSubjectInfo" style="color: #ddd;padding: 5px 0px;margin: 0;">
|
<div class="basic-info">
|
||||||
<span v-if="subjectCode">{{ subjectCode }} </span>
|
<h3 v-if="isReadingShowSubjectInfo">
|
||||||
<span style="margin-left:5px;">{{ taskBlindName }}</span>
|
<span v-if="subjectCode">{{ subjectCode }} </span>
|
||||||
</h3>
|
<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">
|
<div class="lesions">
|
||||||
<Questions ref="ecrf" :question-form-change-state="questionFormChangeState" :question-form-change-num="questionFormChangeNum" />
|
<Questions ref="ecrf" :question-form-change-state="questionFormChangeState" :question-form-change-num="questionFormChangeNum" />
|
||||||
|
@ -118,6 +128,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { splitLesion } from '@/api/trials'
|
import { splitLesion } from '@/api/trials'
|
||||||
|
import { resetReadingTask } from '@/api/reading'
|
||||||
import DicomEvent from './../DicomEvent'
|
import DicomEvent from './../DicomEvent'
|
||||||
|
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
|
@ -880,6 +891,36 @@ export default {
|
||||||
getECRFQuestions(obj) {
|
getECRFQuestions(obj) {
|
||||||
this.$refs['ecrf'].getQuestions(obj.visitTaskId)
|
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) {
|
receiveMsg(event) {
|
||||||
if (event.data.type === 'isCanActiveNoneDicomTool') {
|
if (event.data.type === 'isCanActiveNoneDicomTool') {
|
||||||
this.getUnSaveTarget()
|
this.getUnSaveTarget()
|
||||||
|
|
Loading…
Reference in New Issue