检查患者列表接口对接调试

main
wangxiaoshuang 2024-03-26 11:14:59 +08:00
parent 1949b1f662
commit 8491862a7f
4 changed files with 160 additions and 54 deletions

29
src/api/inspection.js Normal file
View File

@ -0,0 +1,29 @@
// 检查管理
import request from '@/utils/request'
// 检查->患者列表
export function getPatientList(data) {
return request({
url: '/Patient/getPatientList',
method: 'post',
data
})
}
// 检查->患者可加入项目列表
export function getPatientJoinTrialInitList(data) {
return request({
url: '/Patient/getPatientJoinTrialInitList',
method: 'post',
data
})
}
// 检查->患者已加入项目列表
export function getPatientJoinedTrialList(data) {
return request({
url: '/Patient/getPatientJoinedTrialList',
method: 'post',
data
})
}

View File

@ -174,7 +174,7 @@ export default {
this.searchData[key] = null; this.searchData[key] = null;
}); });
this.searchData.PageIndex = 1; this.searchData.PageIndex = 1;
this.searchData.PageIndex = 10; this.searchData.PageSize = 10;
this.getList(); this.getList();
}, },
// //

View File

@ -9,27 +9,27 @@
> >
<el-card class="Basic" shadow="never" size="small"> <el-card class="Basic" shadow="never" size="small">
<el-form-item label="医院名称: " prop="HospitalName"> <el-form-item label="医院名称: " prop="HospitalName">
<el-input v-model="hospital.HospitalName" /> <el-input v-model="hospital.HospitalName" :disabled="disabled" />
</el-form-item> </el-form-item>
<el-form-item label="医院别称: " prop="HospitalAliasName"> <el-form-item label="医院别称: " prop="HospitalAliasName">
<el-input v-model="hospital.HospitalAliasName" /> <el-input v-model="hospital.HospitalAliasName" :disabled="disabled" />
</el-form-item> </el-form-item>
<el-form-item label="国家: " prop="Country"> <el-form-item label="国家: " prop="Country">
<el-input v-model="hospital.Country" /> <el-input v-model="hospital.Country" :disabled="disabled" />
</el-form-item> </el-form-item>
<el-form-item label="省份: " prop="Province"> <el-form-item label="省份: " prop="Province">
<el-input v-model="hospital.Province" /> <el-input v-model="hospital.Province" :disabled="disabled" />
</el-form-item> </el-form-item>
<el-form-item label="城市: " prop="City"> <el-form-item label="城市: " prop="City">
<el-input v-model="hospital.City" /> <el-input v-model="hospital.City" :disabled="disabled" />
</el-form-item> </el-form-item>
<el-form-item label="地址: " prop="Address"> <el-form-item label="地址: " prop="Address">
<el-input v-model="hospital.Address" /> <el-input v-model="hospital.Address" :disabled="disabled" />
</el-form-item> </el-form-item>
<el-form-item label="联系方式: " prop="Phone"> <el-form-item label="联系方式: " prop="Phone">
<el-input v-model="hospital.Phone" /> <el-input v-model="hospital.Phone" :disabled="disabled" />
</el-form-item> </el-form-item>
<el-form-item label="是否可以连接互联网: "> <el-form-item label="是否可以连接互联网: ">
<el-switch <el-switch
@ -38,11 +38,12 @@
inactive-color="#ff4949" inactive-color="#ff4949"
active-text="是" active-text="是"
inactive-text="否" inactive-text="否"
:disabled="disabled"
> >
</el-switch> </el-switch>
</el-form-item> </el-form-item>
</el-card> </el-card>
<el-form-item> <el-form-item v-hasPermi="['system:hospital:edit']">
<el-button <el-button
type="primary" type="primary"
size="small" size="small"
@ -97,6 +98,11 @@ export default {
created() { created() {
this.getInfo(); this.getInfo();
}, },
computed: {
disabled() {
return !this.hasPermi(["system:hospital:edit"]);
},
},
methods: { methods: {
async handleSave() { async handleSave() {
if (this.btnLoading) return; if (this.btnLoading) return;

View File

@ -5,10 +5,18 @@
<el-form :inline="true" class="base-search-form"> <el-form :inline="true" class="base-search-form">
<!-- 患者ID/患者姓名 --> <!-- 患者ID/患者姓名 -->
<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: 100px" /> <el-input
v-model="searchData.PatientIdStr"
style="width: 100px"
clearable
/>
</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: 100px" /> <el-input
v-model="searchData.PatientName"
style="width: 100px"
clearable
/>
</el-form-item> </el-form-item>
<!-- DICOM AE --> <!-- DICOM AE -->
<el-form-item <el-form-item
@ -16,7 +24,7 @@
:label="$t('trials:inspection:table:DICOMAE')" :label="$t('trials:inspection:table:DICOMAE')"
> >
<el-select <el-select
v-model="searchData.VisitPlanArray" v-model="searchData.CalledAEList"
clearable clearable
multiple multiple
style="width: 140px" style="width: 140px"
@ -24,17 +32,19 @@
<el-option <el-option
v-for="(item, index) of dicomAeList" v-for="(item, index) of dicomAeList"
:key="index" :key="index"
:label="item.VisitName" :label="item"
:value="item.VisitNum" :value="item"
> >
<span style="float: left">{{ item.VisitName }}</span>
</el-option> </el-option>
<el-option key="Other" label="Out of Plan" value="1.11" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 研究名称 --> <!-- 研究名称 -->
<el-form-item :label="$t('trials:trials-list:table:researchName')"> <el-form-item :label="$t('trials:trials-list:table:researchName')">
<el-input v-model="searchData.SubjectInfo" style="width: 100px" /> <el-input
v-model="searchData.ExperimentName"
style="width: 100px"
clearable
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<!-- 查询 --> <!-- 查询 -->
@ -63,70 +73,78 @@
stripe stripe
height="100" height="100"
@sort-change="handleSortByColumn" @sort-change="handleSortByColumn"
@selection-change="handleSelectionChange"
> >
<el-table-column
type="selection"
align="left"
width="45"
:selectable="handleSelectTable"
/>
<!--患者ID--> <!--患者ID-->
<el-table-column <el-table-column
prop="IsUrgent" prop="PatientIdStr"
:label="$t('trials:uploadDicomList:table:pId')" :label="$t('trials:uploadDicomList:table:pId')"
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="PatientName"
:label="$t('trials:uploadDicomList:table:patientName')" :label="$t('trials:uploadDicomList:table:patientName')"
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="PatientBirthDate"
:label="$t('trials:inspection:table:birthdate')" :label="$t('trials:inspection:table:birthdate')"
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="PatientSex"
:label="$t('trials:trials-myinfo:form:gender')" :label="$t('trials:trials-myinfo:form:gender')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
></el-table-column> ></el-table-column>
<!--DICOM AE--> <!--DICOM AE-->
<el-table-column <el-table-column
prop="IsUrgent" prop="CalledAEList"
:label="$t('trials:inspection:table:DICOMAE')" :label="$t('trials:inspection:table:DICOMAE')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
></el-table-column> >
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.CalledAEList"
:key="`CalledAEList${index}`"
>{{
index === scope.row.CalledAEList.length - 1 ? item : `${item}`
}}</span
>
</template>
</el-table-column>
<!-- 研究名称 --> <!-- 研究名称 -->
<el-table-column <el-table-column
prop="VisitNum" prop="TrialList"
:label="$t('trials:trials-list:table:researchName')" :label="$t('trials:trials-list:table:researchName')"
show-overflow-tooltip show-overflow-tooltip
min-width="160" min-width="160"
sortable="custom"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
type="text" type="text"
@click="handleOpenDialog(scope.row, 'research')" @click="handleOpenDialog(scope.row, 'research')"
v-for="(item, index) in scope.row.TrialList"
:key="`TrialList${index}`"
> >
<span>{{ scope.row.VisitName }}</span> <span>{{
index === scope.row.TrialList.length - 1
? `${item.experimentName}(${item.visitCount})`
: `${item.experimentName}(${item.visitCount}),`
}}</span>
</el-button> </el-button>
<!-- <span v-else>{{ scope.row.VisitName }}</span> --> <!-- <span v-else>{{ scope.row.VisitName }}</span> -->
</template> </template>
</el-table-column> </el-table-column>
<!-- 检查数 --> <!-- 检查数 -->
<el-table-column <el-table-column
prop="VisitNum" prop="StudyCount"
:label="$t('trials:studyList:table:count')" :label="$t('trials:studyList:table:count')"
show-overflow-tooltip show-overflow-tooltip
min-width="160" min-width="160"
@ -134,25 +152,18 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
v-if="scope.row.key === 1" v-if="scope.row.StudyCount >= 1"
type="text" type="text"
@click="handleOpenDialog(scope.row, 'study')" @click="handleOpenDialog(scope.row, 'study')"
> >
<span>{{ scope.row.VisitName }}</span> <span>{{ scope.row.StudyCount }}</span>
</el-button> </el-button>
<span v-else>{{ scope.row.VisitName }}</span> <span v-else>{{ scope.row.StudyCount }}</span>
</template> </template>
</el-table-column> </el-table-column>
<!--访视数-->
<el-table-column
prop="IsUrgent"
:label="$t('trials:selftConsistencyAnalysis:table:visitNum')"
show-overflow-tooltip
min-width="140"
></el-table-column>
<!--最新接收时间--> <!--最新接收时间-->
<el-table-column <el-table-column
prop="IsUrgent" prop="LatestPushTime"
:label="$t('trials:inspection:table:latestReceiveTime')" :label="$t('trials:inspection:table:latestReceiveTime')"
show-overflow-tooltip show-overflow-tooltip
min-width="140" min-width="140"
@ -187,6 +198,7 @@
<!--可加入项目列表--> <!--可加入项目列表-->
<addTrialsList <addTrialsList
:visible.sync="addTrialsVisible" :visible.sync="addTrialsVisible"
:Patient="selectPatient"
@handleOpenDialog="handleOpenDialog" @handleOpenDialog="handleOpenDialog"
/> />
<!--确认访视列表--> <!--确认访视列表-->
@ -202,6 +214,8 @@ import researchTrialsList from "./components/research-trials-list";
import addTrialsList from "./components/add-trials-list"; import addTrialsList from "./components/add-trials-list";
import confirmVisitList from "./components/confirm-visit-list"; import confirmVisitList from "./components/confirm-visit-list";
import viewStudyList from "./components/view-study-list"; import viewStudyList from "./components/view-study-list";
import { getPatientList } from "@/api/inspection.js";
import { getDicomCalledAEList } from "@/api/dicomAE.js";
export default { export default {
name: "inspection", name: "inspection",
components: { components: {
@ -215,12 +229,23 @@ export default {
data() { data() {
return { return {
// //
searchData: {}, searchData: {
PatientIdStr: null,
PatientName: null,
CalledAEList: [],
ExperimentName: null,
Asc: true,
SortField: null,
PageIndex: 1,
PageSize: 10,
},
dicomAeList: [], dicomAeList: [],
// //
total: 0, total: 0,
loading: false, loading: false,
list: [{ key: 1, VisitName: "123" }], list: [{ key: 1, VisitName: "123" }],
//
selectPatient: {},
// //
researchTrialsVisible: false, researchTrialsVisible: false,
// //
@ -231,22 +256,68 @@ export default {
studyTrialsVisible: false, studyTrialsVisible: false,
}; };
}, },
created() {
this.getDicomCalledAEList();
this.getList();
},
methods: { methods: {
// dicomAE
async getDicomCalledAEList() {
try {
let res = await getDicomCalledAEList();
if (res.IsSuccess) {
this.dicomAeList = res.Result;
}
} catch (err) {
console.log(err);
}
},
// //
getList() {}, async getList() {
let data = {};
Object.keys(this.searchData).forEach((key) => {
data[key] = this.searchData[key];
});
try {
this.loading = true;
let res = await getPatientList(data);
this.loading = false;
if (res.IsSuccess) {
this.list = res.Result.CurrentPageData;
this.total = res.Result.TotalCount;
}
} catch (err) {
console.log(err);
}
},
// //
handleSearch() {}, handleSearch() {
this.getList();
},
// //
handleReset() {}, handleReset() {
// Object.keys(this.searchData).forEach((key) => {
handleSelectionChange() {}, this.searchData[key] = null;
// });
handleSelectTable() {}, this.searchData.PageIndex = 1;
this.searchData.PageSize = 10;
this.searchData.CalledAEList = [];
this.searchData.Asc = true;
this.$refs.inspectionList.clearSort();
this.getList();
},
// //
handleSortByColumn() {}, handleSortByColumn(sort) {
this.searchData.SortField = sort.prop;
if (sort.order === "ascending") this.searchData.Asc = true;
if (sort.order === "descending") this.searchData.Asc = false;
if (!sort.order) this.searchData.SortField = null;
this.getList();
},
// //
handleOpenDialog(item, key) { handleOpenDialog(item, key) {
this[`${key}TrialsVisible`] = true; this[`${key}TrialsVisible`] = true;
this.selectPatient = item;
}, },
}, },
}; };