postdischarge-ui/src/views/manage/patientInfo/index.vue
2024-04-18 16:37:52 +08:00

389 lines
16 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="80px">
<el-form-item label="患者姓名" prop="patientName">
<el-input v-model="queryParams.patientName" placeholder="请输入患者姓名" clearable @keyup.enter.native="handleQuery"
style="width:200px" />
</el-form-item>
<el-form-item label="患者电话" prop="patientPhone">
<el-input v-model="queryParams.patientPhone" placeholder="请输入患者电话" clearable @keyup.enter.native="handleQuery"
style="width:200px" />
</el-form-item>
<el-form-item label="就诊时间" prop="visitDateStart">
<el-date-picker v-model="visitDate" type="daterange" range-separator="至" start-placeholder="开始日期"
style="width:300px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="诊断" prop="mainDiagnosis">
<el-input v-model="queryParams.mainDiagnosis" placeholder="请选择诊断" clearable style="width:200px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="医院" prop="hospitalAgencyId">
<el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width:200px" clearable
@clear="clearhospitalAgency" @change="changehospitalAgency">
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="院区" prop="campusAgencyId" v-if="queryParams.hospitalAgencyId">
<el-select v-model="queryParams.campusAgencyId" filterable placeholder="请选择院区" style="width:200px" clearable
@clear="clearcampusAgency" @change="changecampusAgency">
<el-option v-for="item in campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="科室" prop="departmentId" v-if="queryParams.hospitalAgencyId">
<el-select v-model="queryParams.departmentId" filterable placeholder="请选择科室" style="width:200px" clearable
@clear="cleardepartment" @change="changedepartment">
<el-option v-for="item in departmentlist" :key="item.id" :label="item.departmentName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="病区" prop="wardId" v-if="queryParams.hospitalAgencyId">
<el-select v-model="queryParams.wardId" filterable placeholder="请选择病区" style="width:200px" clearable>
<el-option v-for="item in wardlist" :key="item.id" :label="item.departmentName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="门诊号" prop="outpatientNumber">
<el-input v-model="queryParams.outpatientNumber" placeholder="请输入门诊号" clearable style="width:200px"
@keyup.enter.native="handleQuery" />
</el-form-item> -->
<!-- <el-form-item label="出生日期" prop="birthDate">
<el-date-picker clearable v-model="queryParams.birthDate" type="date" value-format="yyyy-MM-dd"
style="width:200px" placeholder="请选择出生日期">
</el-date-picker>
</el-form-item> -->
<!-- 预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT签约患者CONTRACTED_PATIENT -->
<!-- <el-form-item label="患者类型" prop="patientType">
<el-select v-model="queryParams.patientType" placeholder="请选择患者类型" clearable style="width:200px">
<el-option v-for="dict in dict.type.patient_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item> -->
<el-form-item label="主治医生" prop="attendingPhysicianId" v-if="queryParams.hospitalAgencyId">
<el-select v-model="queryParams.attendingPhysicianId" style="width:200px" filterable placeholder="请选择主治医生"
clearable>
<el-option v-for="item in attendingPhysicianlist" :key="item.userId" :label="item.nickName"
:value="item.userId">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="手术名称" prop="surgicalName">
<el-input v-model="queryParams.surgicalName" placeholder="请输入手术名称" clearable @keyup.enter.native="handleQuery"
style="width:200px" />
</el-form-item> -->
<!-- 微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END -->
<el-form-item label="患者来源" prop="patientSource">
<el-select v-model="queryParams.patientSource" placeholder="请选择患者来源" clearable style="width:200px">
<el-option v-for="dict in dict.type.patient_source" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="就诊方式" prop="visitMethod">
<el-select v-model="queryParams.visitMethod" placeholder="请选择就诊方式" clearable style="width:200px">
<el-option v-for="dict in dict.type.visit_method" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<!-- <el-form-item label="入院时间" prop="admissionTimeStart">
<el-date-picker v-model="admissionTime" type="daterange" range-separator="至" start-placeholder="开始日期"
style="width:300px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
</el-date-picker>
</el-form-item> -->
<!-- 门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL -->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="patientInfoList">
<el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column label="患者姓名" align="center" prop="patientName" />
<el-table-column label="患者电话" align="center" prop="patientPhone" width='120' />
<el-table-column label="性别" align="center" prop="sex">
<template slot-scope="scope">
{{ scope.row.sex == 'MALE' ? '男' : '' }}
{{ scope.row.sex == 'FEMALE' ? '女' : '' }}
</template>
</el-table-column>
<el-table-column label="年龄" align="center" prop="age" />
<el-table-column label="出生日期" align="center" prop="birthDate" width='130' />
<!-- <el-table-column label="签约状态" align="center" prop="signStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.sign_status" :value="scope.row.signStatus" />
</template>
</el-table-column>
<el-table-column label="签约时间" align="center" prop="signTime" width='130'>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.signTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column> -->
<!-- <el-table-column label="开证医生" align="center" prop="certificateIssuingDoctor" /> -->
<el-table-column label="就诊时间" align="center" prop="visitDate" width='130'>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.visitDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="诊断" align="center" prop="mainDiagnosis" />
<!-- <el-table-column label="入院时间" align="center" prop="admissionTime" width='130' /> -->
<el-table-column label="医院" align="center" prop="hospitalAgencyName" width='130' />
<el-table-column label="院区" align="center" prop="campusAgencyName" width='130' />
<el-table-column label="科室名称" align="center" prop="departmentName" width='130' />
<el-table-column label="病区名称" align="center" prop="wardName" width='130' />
<el-table-column label="住院/门诊号" align="center" prop="inHospitalNumber" width='130' />
<el-table-column label="主治医生" align="center" prop="attendingPhysicianName" />
<el-table-column label="就诊方式" align="center" prop="visitMethod">
<template slot-scope="scope">
<dict-tag :options="dict.type.visit_method" :value="scope.row.visitMethod" />
</template>
</el-table-column>
<!-- <el-table-column label="出院方式" align="center" prop="dischargeMethod" /> -->
<el-table-column label="患者来源" align="center" prop="patientSource">
<template slot-scope="scope">
<dict-tag :options="dict.type.patient_source" :value="scope.row.patientSource" />
</template>
</el-table-column>
<el-table-column label="住址" align="center" prop="address" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
<template slot-scope="scope">
<!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:patientInfo:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:patientInfo:remove']">删除</el-button> -->
<el-button size="mini" type="text" @click="handleAuthRole(scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
</template>
<script>
import { listPatientInfo } from "@/api/manage/patientInfo";
import { getAge } from "@/utils/age";
import { selectAgencyList, getDepartmentList, getAgencyList } from "@/api/manage/selectAgencyList";
import { usergetList } from "@/api/unitconfig/patientConfiguration";
export default {
name: "PatientInfo",
dicts: ['patient_type', 'visit_method', 'sign_status', 'patient_source'],
data() {
return {
attendingPhysicianlist: [],
// 遮罩层
loading: true,
// 总条数
total: 0,
// 患者信息表格数据
patientInfoList: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
patientName: null,
patientPhone: null,
birthDate: null,
patientType: null,
visitMethod: null,
mainDiagnosis: null,
attendingPhysicianId: null,
hospitalAgencyId: null,
hospitalAgencyName: null,
campusAgencyId: null,
campusAgencyName: null,
departmentId: null,
departmentName: null,
wardId: null,
wardName: null,
surgicalName: null,
admissionTimeStart: null,
admissionTimeEnd: null,
outpatientNumber: null,
visitDateStart: null,
visitDateEnd: null,
dischargeMethod: null,
patientSource: null,
},
visitDate: [],
admissionTime: [],
//医院list
hospitalAgencylist: [],
// 院区list
campusAgencylist: [],
//科室list
departmentlist: [],
//病区list
wardlist: [],
};
},
created() {
this.getList();
this.selectAgencyinfo();
},
methods: {
//主治医生
usergetListinfo() {
usergetList({
agencyId: this.queryParams.hospitalAgencyId,
postName: 'DOCTOR'
}).then(res => {
this.attendingPhysicianlist = res.data
})
},
/** 详情操作 */
handleAuthRole(row) {
this.$router.push({
path: "/patient/patientdetails",
query: {
patientId: row.id,
cardNo: row.cardNo,
patientName: row.patientName,
patientPhone: row.patientPhone,
sex: row.sex,
birthDate: row.birthDate,
familyMemberPhone: row.familyMemberPhone,
address: row.address,
patientSource: row.patientSource,
createTime: row.createTime,
age: row.birthDate ? getAge(row.birthDate) : ''
},
});
},
/** 查询患者信息列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
listPatientInfo(this.queryParams).then(response => {
response.rows.forEach(e => {
e.birthDate ? e.age = getAge(e.birthDate) : ''
})
this.patientInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
if (this.visitDate?.length > 0) {
this.queryParams.visitDateStart = this.visitDate[0]
this.queryParams.visitDateEnd = this.visitDate[1]
} else {
this.queryParams.visitDateStart = null
this.queryParams.visitDateEnd = null
}
if (this.admissionTime?.length > 0) {
this.queryParams.admissionTimeStart = this.admissionTime[0]
this.queryParams.admissionTimeEnd = this.admissionTime[1]
} else {
this.queryParams.admissionTimeStart = null
this.queryParams.admissionTimeEnd = null
}
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.admissionTime = [];
this.queryParams.admissionTimeStart = null
this.queryParams.admissionTimeEnd = null
this.visitDate = []
this.queryParams.visitDateStart = null
this.queryParams.visitDateEnd = null
this.resetForm("queryForm");
this.handleQuery();
},
selectAgencyinfo() {
let query = {
agencyStatus: 'ON',
nodeType: 'HOSPITAL',
}
selectAgencyList(query).then(res => {
this.hospitalAgencylist = res.data
})
},
//获取下级单位
getAgencyListinfo(nodeType, id) {
let query = {
nodeType: nodeType,
}
if (nodeType == 'HOSPITAL') {
query.hospitalId = id
} else if (nodeType == 'CAMPUS') {
query.campusId = id
} else if (nodeType == 'DEPARTMENT') {
query.departmentId = id
}
getAgencyList(query).then(res => {
if (nodeType == 'HOSPITAL') {
this.campusAgencylist = res.data.campusList
this.departmentlist = res.data.departmentList
} else if (nodeType == 'CAMPUS') {
this.departmentlist = res.data.departmentList
}
this.wardlist = res.data.wardList
})
},
//选中医院获取院区
changehospitalAgency(id) {
this.getAgencyListinfo('HOSPITAL', id)
// let query = {
// agencyStatus: 'ON',
// nodeType: 'CAMPUS',
// parentId: id,
// }
// selectAgencyList(query).then(res => {
// this.campusAgencylist = res.data
this.queryParams.campusAgencyId = null
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.queryParams.attendingPhysicianId = null
// })
//医生
this.usergetListinfo();
},
//选中院区获取科室
changecampusAgency(id) {
this.getAgencyListinfo('CAMPUS', id)
// let query = {
// nodeType: 'DEPARTMENT',
// agencyId: id,
// }
// getDepartmentList(query).then(res => {
// this.departmentlist = res.data
this.queryParams.departmentId = null
this.queryParams.wardId = null
// })
},
//选中科室获取病区
changedepartment(id) {
this.getAgencyListinfo('DEPARTMENT', id)
// let query = {
// nodeType: 'WARD',
// parentDepartmentId: id,
// }
// getDepartmentList(query).then(res => {
// this.wardlist = res.data
this.queryParams.wardId = null
// })
},
//清空医院
clearhospitalAgency() {
this.queryParams.campusAgencyId = null
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.queryParams.attendingPhysicianId = null
},
//清空院区
clearcampusAgency() {
this.queryParams.departmentId = null
this.queryParams.wardId = null
this.getAgencyListinfo('HOSPITAL', this.queryParams.hospitalAgencyId)
},
//清空科室
cleardepartment() {
this.queryParams.wardId = null
this.getAgencyListinfo('CAMPUS', this.queryParams.campusAgencyId)
},
}
};
</script>