已加入项目列表、检查列表接口对接调试

main
wangxiaoshuang 2024-03-27 11:14:15 +08:00
parent 36746ac4b6
commit 7f66a22760
5 changed files with 212 additions and 60 deletions

View File

@ -45,3 +45,21 @@ export function addSubjectPatientBinding(data) {
data data
}) })
} }
// 患者与受试者移除绑定关系
export function deleteSubjectPatientBinding(params) {
return request({
url: '/Patient/deleteSubjectPatientBinding',
method: 'delete',
params
})
}
// 获取患者检查列表
export function getPatientStudyList(data) {
return request({
url: '/Patient/getPatientStudyList',
method: 'post',
data
})
}

View File

@ -324,7 +324,6 @@ export default {
Object.keys(this.searchData).forEach((key) => { Object.keys(this.searchData).forEach((key) => {
data[key] = this.searchData[key]; data[key] = this.searchData[key];
}); });
console.log(this.Patient);
data.PatientId = this.Patient.PatientId; data.PatientId = this.Patient.PatientId;
try { try {
this.loading = true; this.loading = true;

View File

@ -9,13 +9,13 @@
<div class="top"> <div class="top">
<p> <p>
<span <span
>{{ >{{ $t("trials:uploadDicomList:table:patientInfo") }}{{
$t("trials:uploadDicomList:table:patientInfo") Patient.PatientIdStr
}}T0001132ZhangSan</span }}{{ Patient.PatientName }}</span
>|<span> >|<span>
{{ {{
$t("trials:inspection:research-trials-list:table:joinTrialsNumber") $t("trials:inspection:research-trials-list:table:joinTrialsNumber")
}}2</span }}{{ total }}</span
> >
</p> </p>
<el-button type="primary" @click="addTrials"> <el-button type="primary" @click="addTrials">
@ -31,80 +31,79 @@
stripe stripe
height="100" height="100"
> >
<!--项目编号--> <!--受试者编号-->
<el-table-column <el-table-column
prop="IsUrgent" prop="Code"
:label="$t('trials:trials-list:table:trialId')" :label="$t('trials:crcQuestion:table:subjectId')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
></el-table-column> ></el-table-column>
<!--研究方案号--> <!--研究方案号-->
<el-table-column <el-table-column
prop="IsUrgent" prop="ResearchProgramNo"
:label="$t('trials:trials-list:table:researchNumber')" :label="$t('trials:trials-list:table:researchNumber')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
></el-table-column> ></el-table-column>
<!--试验名称--> <!--试验名称-->
<el-table-column <el-table-column
prop="IsUrgent" prop="ExperimentName"
:label="$t('trials:trials-list:table:experimentName')" :label="$t('trials:trials-list:table:experimentName')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
></el-table-column> ></el-table-column>
<!--申办方--> <!--申办方-->
<el-table-column <el-table-column
prop="IsUrgent" prop="SponsorName"
:label="$t('trials:trials-list:table:sponsor')" :label="$t('trials:trials-list:table:sponsor')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
></el-table-column> ></el-table-column>
<!--状态--> <!--状态-->
<el-table-column <el-table-column
prop="IsUrgent" prop="TrialStatusStr"
:label="$t('trials:trials-list:table:status')" :label="$t('trials:trials-list:table:status')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
></el-table-column> ></el-table-column>
<!--创建日期--> <!--创建日期-->
<el-table-column <el-table-column
prop="IsUrgent" prop="CreateTime"
:label="$t('trials:trials-list:table:createDate')" :label="$t('trials:trials-list:table:createDate')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
></el-table-column> ></el-table-column>
<!--最新接收时间--> <!--操作-->
<el-table-column :label="$t('common:action:action')" width="250"> <el-table-column :label="$t('common:action:action')" width="250">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 详情 --> <!-- 详情 -->
<el-button <el-button type="text" @click.stop="detail(scope.row)">{{
circle $t("trials:trials-list:action:panel")
icon="el-icon-info" }}</el-button>
:title="$t('trials:trials-list:action:panel')"
@click.stop="detail(scope.row)"
/>
<!-- 移除项目 --> <!-- 移除项目 -->
<el-button <el-button type="text" @click.stop="remove(scope.row)">{{
circle $t("common:button:remove")
icon="el-icon-delete" }}</el-button>
:title="$t('common:button:remove')"
/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination <!-- <pagination
class="page" class="page"
:total="total" :total="total"
:page.sync="searchData.PageIndex" :page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize" :limit.sync="searchData.PageSize"
@pagination="getList" @pagination="getList"
/> /> -->
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import Pagination from "@/components/Pagination"; import Pagination from "@/components/Pagination";
import {
getPatientJoinedTrialList,
deleteSubjectPatientBinding,
} from "@/api/inspection.js";
export default { export default {
name: "researchTrialsList", name: "researchTrialsList",
components: { Pagination }, components: { Pagination },
@ -113,15 +112,26 @@ export default {
require: true, require: true,
default: false, default: false,
}, },
Patient: {
require: true,
default: () => {
return {};
},
},
},
watch: {
visible() {
if (this.visible) {
this.getList();
}
},
}, },
data() { data() {
return { return {
//
searchData: {},
// //
total: 0, total: 0,
loading: false, loading: false,
list: [{ key: 1, VisitName: "123" }], list: [],
}; };
}, },
methods: { methods: {
@ -132,12 +142,66 @@ export default {
// //
addTrials() { addTrials() {
this.$emit("update:visible", false); this.$emit("update:visible", false);
this.$emit("handleOpenDialog", {}, "add"); this.$emit("handleOpenDialog", this.Patient, "add");
}, },
// //
getList() {}, async getList() {
let data = {
PatientId: this.Patient.PatientId,
};
try {
this.loading = true;
let res = await getPatientJoinedTrialList(data);
this.loading = false;
if (res.IsSuccess) {
this.list = res.Result.data;
this.total = this.list.length;
}
} catch (err) {
console.log(err);
}
},
// //
detail(item) {}, detail(item) {
this.$emit("update:visible", false);
let query = {
trialId: item.TrialId,
trialCode: item.Code,
researchProgramNo: item.ResearchProgramNo,
};
this.$router.push({
path: "/trials/trials-panel/subject/subject-list",
query,
});
},
//
async remove(item) {
try {
let confirm = await this.$confirm(
this.$t("trials:sitesList:message:removeSite"),
{
type: "warning",
distinguishCancelAndClose: true,
confirmButtonText: this.$t("common:button:confirm"),
cancelButtonText: this.$t("recompose:button:cancel"),
}
);
if (confirm !== "confirm") return;
let params = {
PatientId: this.Patient.PatientId,
SubjectId: item,
};
this.loading = true;
let res = await deleteSubjectPatientBinding(params);
this.loading = false;
if (res.IsSuccess) {
this.getList();
this.$message.success(this.$t("common:message:removedSuccessfully"));
}
} catch (err) {
console.log(err);
}
},
}, },
}; };
</script> </script>

View File

@ -9,27 +9,37 @@
<span slot="title" <span slot="title"
>{{ $t("trials:inspection:message:viewStudy") }}{{ >{{ $t("trials:inspection:message:viewStudy") }}{{
$t("trials:uploadDicomList:table:patientInfo") $t("trials:uploadDicomList:table:patientInfo")
}}T0001132ZhangSan</span }}{{ Patient.PatientIdStr }}{{ Patient.PatientName }}</span
> >
<div class="search"> <div class="search">
<el-form :inline="true" class="base-search-form"> <el-form :inline="true" class="base-search-form">
<!-- 检查类型 --> <!-- 检查类型 -->
<el-form-item :label="$t('trials:audit:table:modality')"> <el-form-item :label="$t('trials:audit:table:modality')">
<el-select <el-select
v-model="searchData.VisitPlanArray" v-model="searchData.Modalities"
clearable clearable
multiple
style="width: 140px" style="width: 140px"
> >
<el-option <el-option
v-for="(item, index) of modalityList" v-for="item of $d.modalType"
:key="index" :key="item.id"
:label="item.VisitName" :label="item.label"
:value="item.VisitNum" :value="item.label"
> >
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 检查日期 -->
<el-form-item :label="$t('trials:uploadedDicoms:table:studyDate')">
<el-date-picker
v-model="dateValue"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item> <el-form-item>
<!-- 查询 --> <!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch"> <el-button type="primary" icon="el-icon-search" @click="handleSearch">
@ -58,7 +68,7 @@
<!--检查描述--> <!--检查描述-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="Description"
:label="$t('trials:inspection:table:studyDescription')" :label="$t('trials:inspection:table:studyDescription')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
@ -66,7 +76,7 @@
<!--检查类型--> <!--检查类型-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="Modalities"
:label="$t('trials:audit:table:modality')" :label="$t('trials:audit:table:modality')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
@ -74,7 +84,7 @@
<!--序列数--> <!--序列数-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="SeriesCount"
:label="$t('trials:audit:table:seriesCount')" :label="$t('trials:audit:table:seriesCount')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
@ -82,7 +92,7 @@
<!--检查日期--> <!--检查日期-->
<el-table-column <el-table-column
align="center" align="center"
prop="IsUrgent" prop="StudyTime"
:label="$t('trials:audit:table:studyDate')" :label="$t('trials:audit:table:studyDate')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
@ -103,17 +113,19 @@
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination <!-- <pagination
class="page" class="page"
:total="total" :total="total"
:page.sync="searchData.PageIndex" :page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize" :limit.sync="searchData.PageSize"
@pagination="getList" @pagination="getList"
/> /> -->
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import Pagination from "@/components/Pagination"; import Pagination from "@/components/Pagination";
import { getPatientStudyList } from "@/api/inspection.js";
import { getToken } from "@/utils/auth";
export default { export default {
name: "viewStudyList", name: "viewStudyList",
components: { Pagination }, components: { Pagination },
@ -122,34 +134,89 @@ export default {
require: true, require: true,
default: false, default: false,
}, },
Patient: {
require: true,
default: () => {
return {};
},
},
}, },
data() { data() {
return { return {
// //
searchData: {}, searchData: {
modalityList: [], Modalities: null,
EarliestStudyTime: null,
LatestStudyTime: null,
PatientId: null,
Asc: true,
SortField: null,
},
dateValue: [],
// //
total: 0,
loading: false, loading: false,
list: [{ key: 1, IsUrgent: "123" }], list: [],
//
submitMessage: {},
options: [],
}; };
}, },
watch: {
visible() {
if (this.visible) {
this.getList();
}
},
},
methods: { methods: {
// //
beforeCloseStudyDig() { beforeCloseStudyDig() {
this.$emit("update:visible", false); this.$emit("update:visible", false);
}, },
// //
getList() {}, async getList() {
let data = {};
Object.keys(this.searchData).forEach((key) => {
data[key] = this.searchData[key];
});
data.PatientId = this.Patient.PatientId;
if (this.dateValue[0] && this.dateValue[1]) {
data.EarliestStudyTime = this.dateValue[0].toISOString();
data.LatestStudyTime = this.dateValue[1].toISOString();
} else {
data.EarliestStudyTime = null;
data.LatestStudyTime = null;
}
try {
this.loading = true;
let res = await getPatientStudyList(data);
this.loading = false;
if (res.IsSuccess) {
this.list = res.Result;
}
} catch (err) {
console.log(err);
}
},
// //
handleSearch() {}, handleSearch() {
this.getList();
},
// //
handleReset() {}, handleReset() {
Object.keys(this.searchData).forEach((key) => {
this.searchData[key] = null;
});
this.searchData.Asc = true;
this.dateValue = [];
this.getList();
},
// //
image() {}, image(item) {
let token = getToken();
const routeData = this.$router.resolve({
path: `/showdicom?studyId=${item.SCPStudyId}&TokenKey=${token}&type=Study`,
});
window.open(routeData.href, "_blank");
},
// //
report() {}, report() {},
}, },

View File

@ -135,8 +135,8 @@
> >
<span>{{ <span>{{
index === scope.row.TrialList.length - 1 index === scope.row.TrialList.length - 1
? `${item.experimentName}(${item.visitCount})` ? `${item.ExperimentName}${item.VisitCount}`
: `${item.experimentName}(${item.visitCount}),` : `${item.ExperimentName}${item.VisitCount}`
}}</span> }}</span>
</el-button> </el-button>
<!-- <span v-else>{{ scope.row.VisitName }}</span> --> <!-- <span v-else>{{ scope.row.VisitName }}</span> -->
@ -193,6 +193,7 @@
<!--研究项目列表--> <!--研究项目列表-->
<researchTrialsList <researchTrialsList
:visible.sync="researchTrialsVisible" :visible.sync="researchTrialsVisible"
:Patient="selectPatient"
@handleOpenDialog="handleOpenDialog" @handleOpenDialog="handleOpenDialog"
/> />
<!--可加入项目列表--> <!--可加入项目列表-->
@ -204,7 +205,10 @@
<!--确认访视列表--> <!--确认访视列表-->
<confirmVisitList :visible.sync="confirmTrialsVisible" /> <confirmVisitList :visible.sync="confirmTrialsVisible" />
<!--查看检查列表--> <!--查看检查列表-->
<viewStudyList :visible.sync="studyTrialsVisible" /> <viewStudyList
:visible.sync="studyTrialsVisible"
:Patient="selectPatient"
/>
</BaseContainer> </BaseContainer>
</template> </template>
<script> <script>