访视相关
parent
df1d608c50
commit
bb04e1bc1d
|
@ -0,0 +1,11 @@
|
|||
// 阅片管理
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 任务列表
|
||||
export function getPatientVisitTaskList(data) {
|
||||
return request({
|
||||
url: '/Patient/getPatientVisitTaskList',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -304,3 +304,30 @@ export function getSubjectImageZipInfo(id) {
|
|||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 访视->修改检查->获取访视已绑定的检查
|
||||
export function getCurrentVisitPatientStudyList(data) {
|
||||
return request({
|
||||
url: `/Patient/getCurrentVisitPatientStudyList`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 访视->修改检查->获取访视可绑定的检查
|
||||
export function getPatientOtherStudyList(data) {
|
||||
return request({
|
||||
url: `/Patient/getPatientOtherStudyList`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 访视->修改检查->修改访视和检查绑定关系
|
||||
export function updateSubjectVisitStudyBinding(data) {
|
||||
return request({
|
||||
url: `/Patient/updateSubjectVisitStudyBinding`,
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -32,10 +32,9 @@
|
|||
<el-menu-item
|
||||
v-if="!hasPermi(['role:zys'])"
|
||||
index="2"
|
||||
:disabled="TotalNeedSignSystemDocCount !== 0"
|
||||
>
|
||||
<i class="el-icon-box" />
|
||||
<!-- 我的项目 -->
|
||||
<!-- 我的项目:disabled="TotalNeedSignSystemDocCount !== 0" -->
|
||||
<span slot="title">
|
||||
{{ $t("trials:tab:trials") }}
|
||||
</span>
|
||||
|
|
|
@ -212,7 +212,7 @@
|
|||
</el-form>
|
||||
</template>
|
||||
<script>
|
||||
import store from "@/store";
|
||||
// import store from "@/store";
|
||||
import { mapGetters, mapState } from "vuex";
|
||||
import { getTrialInfo, addOrUpdateTrialHir } from "@/api/trials";
|
||||
import { getBasicDataSelects } from "@/api/dictionary/dictionary";
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
<span slot="title"
|
||||
>{{ $t("trials:hirVisit:button:editStudy") }}({{
|
||||
$t("trials:globalReview:title:subject")
|
||||
}}T0001132,{{ $t("trials:studyList:table:visit") }}:ZhangSan)
|
||||
}}{{ data.SubjectCode }},{{ $t("trials:studyList:table:visit") }}:{{
|
||||
data.VisitName
|
||||
}})
|
||||
</span>
|
||||
<!--当前检查--->
|
||||
<div class="topTable">
|
||||
|
@ -36,35 +38,35 @@
|
|||
<!--检查编号-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="PatientIdStr"
|
||||
:label="$t('trials:audit:table:studyId')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<!--检查类型-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="Modalities"
|
||||
:label="$t('trials:audit:table:modality')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<!--序列数量-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="InstanceCount"
|
||||
:label="$t('trials:audit:table:seriesCount')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<!--检查日期-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="StudyTime"
|
||||
:label="$t('trials:audit:table:studyDate')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<!--所属访视-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="VisitName"
|
||||
:label="$t('trials:hirVisit:table:ownershipVisit')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
|
@ -99,7 +101,7 @@
|
|||
<!-- 检查日期 -->
|
||||
<el-form-item :label="$t('trials:uploadedDicoms:table:studyDate')">
|
||||
<el-date-picker
|
||||
v-model="searchData.date"
|
||||
v-model="dateValue"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
|
@ -143,35 +145,35 @@
|
|||
<!--检查编号-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="PatientIdStr"
|
||||
:label="$t('trials:audit:table:studyId')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<!--检查类型-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="Modalities"
|
||||
:label="$t('trials:audit:table:modality')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<!--序列数量-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="InstanceCount"
|
||||
:label="$t('trials:audit:table:seriesCount')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<!--检查日期-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="StudyTime"
|
||||
:label="$t('trials:audit:table:studyDate')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
<!--所属访视-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
prop="VisitName"
|
||||
:label="$t('trials:hirVisit:table:ownershipVisit')"
|
||||
show-overflow-tooltip
|
||||
></el-table-column>
|
||||
|
@ -197,27 +199,124 @@
|
|||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
getCurrentVisitPatientStudyList,
|
||||
getPatientOtherStudyList,
|
||||
updateSubjectVisitStudyBinding,
|
||||
} from "@/api/trials/visit.js";
|
||||
const defaultSearchData = () => {
|
||||
return {
|
||||
EarliestStudyTime: null,
|
||||
LatestStudyTime: null,
|
||||
};
|
||||
};
|
||||
export default {
|
||||
name: "editStudyList",
|
||||
props: {
|
||||
visible: {
|
||||
require: true,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
data: {
|
||||
required: true,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 可选检查查询
|
||||
searchData: {},
|
||||
searchData: defaultSearchData(),
|
||||
dateValue: [],
|
||||
// 可选检查列表
|
||||
bottomList: [{ IsUrgent: 2 }],
|
||||
bottomList: [],
|
||||
bottomLoading: false,
|
||||
// 当前检查列表
|
||||
topList: [{ IsUrgent: 1 }],
|
||||
topList: [],
|
||||
topLoading: false,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getTopList();
|
||||
this.getBottomList();
|
||||
},
|
||||
methods: {
|
||||
// 获取当前检查列表
|
||||
async getTopList() {
|
||||
try {
|
||||
let data = {
|
||||
SujectVisitId: this.data.SubjectVisitId,
|
||||
};
|
||||
this.topLoading = true;
|
||||
let res = await getCurrentVisitPatientStudyList(data);
|
||||
this.topLoading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.topList = res.Result;
|
||||
}
|
||||
} catch (err) {
|
||||
this.topLoading = false;
|
||||
console.log(err);
|
||||
}
|
||||
},
|
||||
// 获取可选检查列表
|
||||
async getBottomList() {
|
||||
let data = {};
|
||||
Object.keys(this.searchData).forEach((key) => {
|
||||
data[key] = this.searchData[key];
|
||||
});
|
||||
data.PatientId = this.data.PatientList[0].PatientId;
|
||||
data.SujectVisitId = this.data.SubjectVisitId;
|
||||
if (this.dateValue[0] && this.dateValue[1]) {
|
||||
data.EarliestStudyTime = this.dateValue[0].toISOString();
|
||||
data.LatestStudyTime = this.dateValue[0].toISOString();
|
||||
}
|
||||
try {
|
||||
this.bottomLoading = true;
|
||||
let res = await getPatientOtherStudyList(data);
|
||||
this.bottomLoading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.bottomList = res.Result;
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
this.bottomLoading = false;
|
||||
}
|
||||
},
|
||||
// 修改检查与访视绑定关系
|
||||
async setRelation(item, isAdd = true) {
|
||||
try {
|
||||
let confirmMessage = "trials:sitesList:message:removeSite";
|
||||
if (isAdd) {
|
||||
confirmMessage = "trials:customSite:message:add";
|
||||
}
|
||||
let confirm = await this.$confirm(this.$t(confirmMessage), {
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: this.$t("common:button:confirm"),
|
||||
cancelButtonText: this.$t("recompose:button:cancel"),
|
||||
});
|
||||
if (confirm !== "confirm") return;
|
||||
let data = {
|
||||
isAdd,
|
||||
SubjectId: this.data.SubjectId,
|
||||
SubjectVisitId: this.data.SubjectVisitId,
|
||||
ScpStudyId: item.SCPStudyId,
|
||||
};
|
||||
let res = await updateSubjectVisitStudyBinding(data);
|
||||
if (res.IsSuccess) {
|
||||
this.getTopList();
|
||||
this.getBottomList();
|
||||
let message = "common:message:addedSuccessfully";
|
||||
if (!isAdd) {
|
||||
message = "common:message:removedSuccessfully";
|
||||
}
|
||||
this.$message.success(this.$t(message));
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
},
|
||||
// 关闭弹框
|
||||
beforeCloseStudyDig() {
|
||||
this.$emit("update:visible", false);
|
||||
|
@ -229,15 +328,29 @@ export default {
|
|||
// 查看
|
||||
detail(item, key) {},
|
||||
// 当前检查移除
|
||||
remove(item) {},
|
||||
remove(item) {
|
||||
this.setRelation(item, false);
|
||||
},
|
||||
// 可选检查查询
|
||||
handleSearch() {},
|
||||
handleSearch() {
|
||||
this.getBottomList();
|
||||
},
|
||||
// 可选检查重置
|
||||
handleReset() {},
|
||||
handleReset() {
|
||||
this.reset();
|
||||
this.getBottomList();
|
||||
},
|
||||
// 初始化查询条件
|
||||
reset() {
|
||||
this.searchData = defaultSearchData();
|
||||
this.dateValue = [];
|
||||
},
|
||||
// 可选检查表格选择
|
||||
handleSelectChange() {},
|
||||
// 可选检查添加
|
||||
add(item) {},
|
||||
add(item) {
|
||||
this.setRelation(item, true);
|
||||
},
|
||||
addTrials() {},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -263,7 +263,11 @@
|
|||
/>
|
||||
</template>
|
||||
<!--修改检查-->
|
||||
<editStudyList :visible.sync="editStudyVisible" />
|
||||
<editStudyList
|
||||
:visible.sync="editStudyVisible"
|
||||
:data="editStudyData"
|
||||
v-if="editStudyVisible"
|
||||
/>
|
||||
</BaseContainer>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -274,6 +278,7 @@ import {
|
|||
getPatientSubejctVisitList,
|
||||
getSubjectImageZipInfo,
|
||||
} from "@/api/trials/visit.js";
|
||||
import { submitVisitStudyBinding } from "@/api/inspection.js";
|
||||
import JSZip from "jszip";
|
||||
import axios from "axios";
|
||||
import { saveAs } from "file-saver";
|
||||
|
@ -306,6 +311,7 @@ export default {
|
|||
total: 0,
|
||||
// 修改检查
|
||||
editStudyVisible: false,
|
||||
editStudyData: {},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
@ -351,10 +357,39 @@ export default {
|
|||
},
|
||||
// 修改检查
|
||||
editStudy(item) {
|
||||
this.editStudyData = item;
|
||||
this.editStudyVisible = true;
|
||||
},
|
||||
// 提交
|
||||
submit() {},
|
||||
async submit(item) {
|
||||
let confirm = await this.$confirm(
|
||||
this.$t("trials:adjustRecord:message:confirm"),
|
||||
{
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: this.$t("common:button:confirm"),
|
||||
cancelButtonText: this.$t("recompose:button:cancel"),
|
||||
}
|
||||
);
|
||||
if (confirm !== "confirm") return;
|
||||
let data = {
|
||||
TrialId: this.$route.query.trialId,
|
||||
SubjectVisitId: [item.SubjectVisitId],
|
||||
};
|
||||
try {
|
||||
this.loading = true;
|
||||
let res = await submitVisitStudyBinding(data);
|
||||
this.loading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.$message.success(
|
||||
this.$t("trials:crcUpload:message:submittedSuccessfully")
|
||||
);
|
||||
}
|
||||
} catch (err) {
|
||||
this.btnLoading2 = false;
|
||||
console.log(err);
|
||||
}
|
||||
},
|
||||
// 删除
|
||||
remove() {},
|
||||
// 评估结果
|
||||
|
|
|
@ -5,18 +5,18 @@
|
|||
<el-form :inline="true">
|
||||
<!-- 受试者编号 -->
|
||||
<el-form-item :label="$t('trials:crcQuestion:table:subjectId')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 140px" />
|
||||
<el-input v-model="searchData.SubjectCode" style="width: 140px" />
|
||||
</el-form-item>
|
||||
<!-- 患者编号 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<!-- <el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 140px" />
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<!-- 患者姓名 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<!-- <el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 140px" />
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<!-- 访视名称 -->
|
||||
<el-form-item :label="$t('trials:globalReview:table:visitName')">
|
||||
<!-- <el-form-item :label="$t('trials:globalReview:table:visitName')">
|
||||
<el-select
|
||||
v-model="searchData.SiteId"
|
||||
clearable
|
||||
|
@ -30,43 +30,43 @@
|
|||
:value="item.SiteId"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<!-- 任务状态 -->
|
||||
<el-form-item :label="$t('trials:readTask:table:taskState')">
|
||||
<el-select
|
||||
v-model="searchData.SiteId"
|
||||
v-model="searchData.taskState"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of visitOptions"
|
||||
:key="item.SiteId"
|
||||
:label="item.TrialSiteCode"
|
||||
:value="item.SiteId"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 阅片状态 -->
|
||||
<el-form-item :label="$t('trials:readTask:table:readingTaskState')">
|
||||
<el-select
|
||||
v-model="searchData.SiteId"
|
||||
v-model="searchData.ReadingTaskState"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 150px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of visitOptions"
|
||||
:key="item.SiteId"
|
||||
:label="item.TrialSiteCode"
|
||||
:value="item.SiteId"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 阅片完成时间 -->
|
||||
<el-form-item :label="$t('trials:reviewTrack:table:signTime')">
|
||||
<el-date-picker
|
||||
v-model="searchData.date"
|
||||
v-model="dateValue"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
|
@ -168,11 +168,11 @@
|
|||
<template slot-scope="scope">
|
||||
<!--阅片结果-->
|
||||
<el-button type="text" @click="readResult(scope.row)">{{
|
||||
$t("trials:hirVisit:button:editStudy")
|
||||
$t("trials:auditRecord:table:readingResult")
|
||||
}}</el-button>
|
||||
<!--下载报告-->
|
||||
<el-button type="text" @click="downloadReport(scope.row)">{{
|
||||
$t("common:button:submit")
|
||||
$t("trials:reading:button:uploadReport")
|
||||
}}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
@ -192,6 +192,21 @@
|
|||
<script>
|
||||
import BaseContainer from "@/components/BaseContainer";
|
||||
import Pagination from "@/components/Pagination";
|
||||
import { getPatientVisitTaskList } from "@/api/readManagenent.js";
|
||||
const defaultSearchData = () => {
|
||||
return {
|
||||
SubjectCode: null,
|
||||
ReadingCategory: 1,
|
||||
ReadingTaskState: 0,
|
||||
TaskState: 0,
|
||||
BeginSignTime: null,
|
||||
EndSignTime: null,
|
||||
PageIndex: 0,
|
||||
PageSize: 0,
|
||||
Asc: false,
|
||||
SortField: "CreateTime",
|
||||
};
|
||||
};
|
||||
export default {
|
||||
name: "readManagenent",
|
||||
components: { BaseContainer, Pagination },
|
||||
|
@ -220,7 +235,7 @@ export default {
|
|||
// 排序
|
||||
handleSortByColumn() {},
|
||||
// 获取列表
|
||||
getList() {},
|
||||
async getList() {},
|
||||
// 下载报告
|
||||
downloadReport() {},
|
||||
// 阅片结果
|
||||
|
|
Loading…
Reference in New Issue