Commit 4b7416bc by Licx

添加patientinfo

parent 6044ad44
...@@ -5,67 +5,74 @@ ...@@ -5,67 +5,74 @@
* @LastEditTime: 2023-01-09 13:55:06 * @LastEditTime: 2023-01-09 13:55:06
* @Description: * @Description:
*/ */
import Vue from "vue"; import Vue from 'vue'
import Router from "vue-router"; import Router from 'vue-router'
import store from "@/store"; import store from '@/store'
import { getItem, clear } from "@/utils/auth"; import { getItem, clear } from '@/utils/auth'
import outseeQualityControl from "@/views/outseeQualityControl.vue"; import outseeQualityControl from '@/views/outseeQualityControl.vue'
import outpatientDetails from "@/views/outpatientDetails.vue"; import outpatientDetails from '@/views/outpatientDetails.vue'
import outHistorygrouping from "@/views/outHistorygrouping.vue"; import outHistorygrouping from '@/views/outHistorygrouping.vue'
Vue.use(Router); Vue.use(Router)
// const baseUrl = '/his/' // const baseUrl = '/his/'
const router = new Router({ const router = new Router({
// mode: baseUrl, // mode: baseUrl,
routes: [ routes: [
{ {
path: "*", path: '*',
component: (resolve) => require(["@/components/404.vue"], resolve), component: (resolve) => require(['@/components/404.vue'], resolve)
}, },
// 查看质控 // 查看质控
{ {
path: "/outseeQualityControl", path: '/outseeQualityControl',
name: "outseeQualityControl", name: 'outseeQualityControl',
component: outseeQualityControl, component: outseeQualityControl
}, },
// 患者详情 // 患者详情
{ {
path: "/outpatientDetails", path: '/outpatientDetails',
name: "outpatientDetails", name: 'outpatientDetails',
component: outpatientDetails, component: outpatientDetails
}, },
// 智能分组 // 智能分组
{ {
path: "/outHistorygrouping", path: '/outHistorygrouping',
name: "outHistorygrouping", name: 'outHistorygrouping',
component: outHistorygrouping, component: outHistorygrouping
}, },
//临床路径外放页面 //临床路径外放页面
{ {
path: "/medicalRecordImport", path: '/medicalRecordImport',
name: "medicalRecordImport", name: 'medicalRecordImport',
component: (resolve) => require(["@/views/medicalRecordImport.vue"], resolve), component: (resolve) =>
require(['@/views/medicalRecordImport.vue'], resolve)
}, },
{ {
path: "/outpatientDetails_pingguo", path: '/outpatientDetails_pingguo',
name: "outpatientDetails_pingguo", name: 'outpatientDetails_pingguo',
component: (resolve) => require(["@/views/outpatientDetails_pingguo.vue"], resolve), component: (resolve) =>
require(['@/views/outpatientDetails_pingguo.vue'], resolve)
}, },
{ {
path: "/seeSettlementList", path: '/seeSettlementList',
name: "seeSettlementList", name: 'seeSettlementList',
component: (resolve) => require(["@/views/seeSettlementList.vue"], resolve), component: (resolve) =>
require(['@/views/seeSettlementList.vue'], resolve)
}, },
], {
path: '/patientinfo',
component: (resolve) => require(['@/views/patientinfo.vue'], resolve)
}
]
// mode: 'history' /*hash*/ /*不显示路由中的#*/ // mode: 'history' /*hash*/ /*不显示路由中的#*/
}); })
//路由跳转前判断(登录权限) //路由跳转前判断(登录权限)
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
next(); next()
}); })
export default router; export default router
<template>
<div class="patientinfo">
<div style="height: 30px; background-color: #0283bb"></div>
<div class="main">
<div class="">
<div class="flex-start-center">
<div class="flex-start-center mar-right-10" v-for="(value, key, index) in obj" :key="index">
<span class="mar-right-10" style="width: 12px; height: 12px" :style="{ background: value }"></span>
<span class="color-666 font-14">{{ key }}</span>
</div>
</div>
<div class="flex-between mar-top-15">
<div>
<div class="mar-bottom-10">
<el-input
size="mini"
class="mar-right-10"
v-model.trim="a48"
style="width: 160px"
placeholder="请输入病案号/住院号"
clearable
@clear="search"
@keyup.enter.native="search"
>
</el-input>
<el-input
size="mini"
class="mar-right-10"
v-model.trim="a11"
style="width: 160px"
placeholder="请输入患者姓名"
clearable
@clear="search"
@keyup.enter.native="search"
>
</el-input>
<el-select
size="mini"
class="mar-right-10"
v-model.trim="b16C"
filterable
style="width: 160px"
placeholder="当前科室"
clearable
@clear="search"
>
<el-option v-for="item in deptList" :key="item.deptCode" :label="item.deptName" :value="item.deptCode"> </el-option>
</el-select>
<el-select v-model="isout" placeholder="是否出院" size="mini" class="mar-right-10" clearable style="width: 160px" @clear="search">
<el-option label="未出院" :value="0"> </el-option>
<el-option label="已出院" :value="1"> </el-option>
<el-option label="已结算" :value="2"> </el-option>
</el-select>
<el-select
v-model="insuranceType"
placeholder="支付类型"
size="mini"
class="mar-right-10"
clearable
style="width: 160px"
@clear="search"
>
<el-option label="本地职工" :value="1"> </el-option>
<el-option label="异地职工" :value="2"> </el-option>
<el-option label="本地居民" :value="3"> </el-option>
<el-option label="异地居民" :value="4"> </el-option>
<el-option label="自费" :value="5"> </el-option>
<el-option label="未填写" :value="0"> </el-option>
</el-select>
<span class="font-14 color-999">入院时间:</span>
<el-select
v-model="currentDate"
placeholder="当前年月"
size="mini"
class="mar-right-10"
clearable
style="width: 100px"
@change="handleCurrentDateChange"
>
<el-option label="当前年" :value="1"> </el-option>
<el-option label="当前月" :value="2"> </el-option>
</el-select>
<el-date-picker
v-model="time"
size="mini"
style="width: 210px"
type="daterange"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
class="mar-right-10"
@change="search"
range-separator="至"
start-placeholder="入院日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
<div>
<el-input
size="mini"
class="mar-right-10"
v-model.trim="doctorName"
style="width: 160px"
placeholder="请输入主治医生"
clearable
@clear="search"
@keyup.enter.native="search"
>
</el-input>
<el-input
size="mini"
class="mar-right-10"
v-model.trim="codeName"
style="width: 160px"
placeholder="请输入分组编码/分组名称"
clearable
@clear="search"
@keyup.enter.native="search"
>
</el-input>
<el-select
v-model="dis_type"
placeholder="请选择倍率"
size="mini"
class="mar-right-10"
clearable
style="width: 160px"
@clear="search"
>
<el-option label="高倍率病例" value="高倍率病例"> </el-option>
<el-option label="正常病例" value="正常病例"> </el-option>
<el-option label="低倍率病例" value="低倍率病例"> </el-option>
</el-select>
<el-select v-model="isjoin" placeholder="分组状态" size="mini" class="mar-right-10" clearable style="width: 160px" @clear="search">
<el-option label="已分组" :value="1"> </el-option>
<el-option label="未分组" :value="0"> </el-option>
</el-select>
<el-select v-model="shzt" placeholder="审核状态" size="mini" class="mar-right-10" clearable style="width: 160px" @clear="search">
<el-option label="已审核" value="已审"> </el-option>
<el-option label="未审核" value="未审"> </el-option>
</el-select>
<span class="font-14 color-999">结算时间:</span>
<el-select
v-model="currentDate1"
placeholder="当前年月"
size="mini"
class="mar-right-10"
clearable
style="width: 100px"
@change="handleCurrentDateChange1"
>
<el-option label="当前年" :value="1"> </el-option>
<el-option label="当前月" :value="2"> </el-option>
</el-select>
<el-date-picker
v-model="time1"
size="mini"
style="width: 210px"
type="daterange"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
class="mar-right-10"
@change="search"
range-separator="至"
start-placeholder="结算日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</div>
<div>
<el-button
type="primary"
style="background: rgb(2, 131, 187); border-color: rgb(2, 131, 187)"
size="mini"
slot="append"
icon="el-icon-search"
@click="search"
>查询</el-button
>
<el-button
type="primary"
style="background: rgb(2, 131, 187); border-color: rgb(2, 131, 187)"
size="mini"
slot="append"
icon="el-icon-download"
@click="downLoad"
>下载</el-button
>
<el-button
v-if="link"
type="primary"
style="background: rgb(2, 131, 187); border-color: rgb(2, 131, 187)"
size="mini"
slot="append"
icon="el-icon-link"
@click="openLink"
>更多报表</el-button
>
</div>
</div>
</div>
<div class="table flex-1 mar-top-15">
<el-table border ref="tableRef" height="93%" :data="tableData" size="mini" :highlight-current-row="true" :cell-class-name="cellName">
<el-table-column align="center" type="index" width="50" fixed="left"></el-table-column>
<el-table-column label="同步更新" align="center" min-width="80" show-overflow-tooltip fixed="left">
<template #default="scope">
<i class="el-icon-refresh font-16 cursor" @click.stop="SetInjoinAgain(scope.row.id)"></i>
</template>
</el-table-column>
<el-table-column
prop="fee_consume"
label="费用消耗比例"
sortable
align="center"
min-width="120"
show-overflow-tooltip
fixed="left"
></el-table-column>
<el-table-column prop="regcode" label="病案号" sortable align="center" min-width="120" show-overflow-tooltip fixed="left">
<template #default="scope">
<!-- 正常病例 低倍率病例 高倍率病例 dis_type-->
<div class="flex-center-center">
<span class="mar-right-10" style="width: 12px; height: 12px" :style="{ background: obj[scope.row.dis_type] }"></span>
<span>{{ scope.row.regcode }}</span>
</div>
</template>
</el-table-column>
<el-table-column prop="a48C" label="住院号" sortable align="center" min-width="120" show-overflow-tooltip fixed="left"> </el-table-column>
<el-table-column prop="name" label="姓名" sortable align="center" min-width="120" show-overflow-tooltip fixed="left"></el-table-column>
<el-table-column prop="inhostime" label="入院日期" sortable align="center" min-width="120" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row.inhostime ? formatYMD(scope.row.inhostime) : "" }}</span>
</template>
</el-table-column>
<el-table-column prop="outhostime" label="出院日期" sortable align="center" min-width="120" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row.outhostime ? formatYMD(scope.row.outhostime) : "" }}</span>
</template>
</el-table-column>
<el-table-column prop="indeptname" label="当前科室" sortable align="center" min-width="120" show-overflow-tooltip> </el-table-column>
<el-table-column prop="doctorname" label="主治医生" sortable align="center" min-width="120" show-overflow-tooltip> </el-table-column>
<el-table-column prop="inhosdays" label="住院天数" sortable align="center" min-width="120" show-overflow-tooltip> </el-table-column>
<el-table-column prop="isjoin" label="是否出院" sortable align="center" min-width="120" show-overflow-tooltip> </el-table-column>
<el-table-column prop="isbasiclevel" label="是否基层病种" sortable align="center" min-width="120" show-overflow-tooltip> </el-table-column>
<el-table-column prop="total_fee" label="住院总费用" sortable align="center" min-width="120" show-overflow-tooltip>
<template #default="scope">
<span>{{ decimal(scope.row.total_fee) }}</span>
</template>
</el-table-column>
<el-table-column prop="self_payment" label="结算后自付费用" sortable align="center" min-width="130" show-overflow-tooltip>
<template #default="scope">
<span>{{ decimal(scope.row.self_payment) }}</span>
</template>
</el-table-column>
<el-table-column prop="self_payment_proportion" label="自付占比" sortable align="center" min-width="120" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="medical_payment" label="医保类型" sortable align="center" min-width="120" show-overflow-tooltip></el-table-column>
<el-table-column prop="discode" label="分组编码" sortable align="center" width="250" show-overflow-tooltip> </el-table-column>
<el-table-column prop="disname" label="分组名称" sortable align="center" min-width="180" show-overflow-tooltip> </el-table-column>
<el-table-column prop="rw" label="实际分值" sortable align="center" min-width="120" show-overflow-tooltip></el-table-column>
<el-table-column prop="standardrw" label="标准分值" sortable align="center" min-width="120" show-overflow-tooltip> </el-table-column>
<el-table-column label="二级医院标准分值" sortable align="center" min-width="160" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row.isbasiclevel == "是" ? scope.row.standardrw : decimal(scope.row.standardrw * 0.8) }}</span>
</template>
</el-table-column>
<el-table-column prop="medactalfee" label="预计DIP支付费用" sortable align="center" min-width="140" show-overflow-tooltip>
<template #default="scope">
<span>{{ decimal(scope.row.medactalfee) }}</span>
</template>
</el-table-column>
<el-table-column prop="medical_insurance_balance" label="预计DIP结余" sortable align="center" min-width="120" show-overflow-tooltip>
<template #default="scope">
<span>{{ decimal(scope.row.medical_insurance_balance) }}</span>
</template>
</el-table-column>
<el-table-column prop="dis_type" label="病例类型" sortable align="center" min-width="120" show-overflow-tooltip></el-table-column>
<el-table-column prop="county_Medicine_Fee" label="县级药品费用" sortable align="center" min-width="120" show-overflow-tooltip>
<template #default="scope">
<span>{{ decimal(scope.row.county_Medicine_Fee) }}</span>
</template>
</el-table-column>
<el-table-column prop="medicine_Fee" label="药品费用" sortable align="center" min-width="120" show-overflow-tooltip>
<template #default="scope">
<span>{{ decimal(scope.row.medicine_Fee) }}</span>
</template>
</el-table-column>
<el-table-column prop="drug_proportion" label="药品" sortable align="center" min-width="120" show-overflow-tooltip> </el-table-column>
<el-table-column
prop="county_Material_Fee"
label="县级耗材费用"
sortable
align="center"
min-width="120"
show-overflow-tooltip
></el-table-column>
<el-table-column prop="material_Fee" label="耗材费用" sortable align="center" min-width="120" show-overflow-tooltip></el-table-column>
<el-table-column prop="consumables_proportion" label="耗材" sortable align="center" min-width="120" show-overflow-tooltip></el-table-column>
<el-table-column prop="laboratory_proportion" label="检验检查" sortable align="center" min-width="120" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="medical_proportion" label="医务性收入" sortable align="center" min-width="120" show-overflow-tooltip>
</el-table-column>
<el-table-column prop="jssj" label="结算日期" sortable align="center" min-width="120" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row.jssj ? formatYMD(scope.row.jssj) : "" }}</span>
</template>
</el-table-column>
<el-table-column prop="shzt" label="审核状态" sortable align="center" min-width="120" show-overflow-tooltip> </el-table-column>
</el-table>
</div>
<div class="flex-end mar-top-20">
<el-pagination
background
layout="total, sizes, prev, pager, next, jumper"
:hide-on-single-page="false"
:total="totalCount"
:page-size="pageSize"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
>
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import http from "../utils/http";
import { setItem, getItem } from "../utils/auth";
import { decimal } from "../utils/decimal";
import dayjs from "dayjs";
import { Message, Loading, MessageBox } from "element-ui";
export default {
name: "patientinfo",
data() {
return {
time: "",
time1: "",
pageNumber: 1,
pageSize: 100,
a48: "",
a11: "",
b16C: "",
isjoin: null,
currentDate: null,
currentDate1: null,
isout: null,
insuranceType: null,
doctorName: "",
codeName: "",
dis_type: "",
shzt: "",
obj: {
正常病例: "#22d016",
低倍率病例: "#e9c622",
高倍率病例: "#ff7e00",
},
tableData: [],
totalCount: 0,
deptList: [],
};
},
beforeMount() {},
mounted() {
this.time = [
`${dayjs().format("YYYY-MM")}-01`,
`${dayjs().format("YYYY-MM")}-${this.getDayNumByYearMonth(dayjs().format("YYYY"), dayjs().format("MM"))}`,
];
this.GetDeptList();
},
computed: {
link() {
return window.webConfig.diseLink;
},
},
methods: {
decimal,
formatYMD(t) {
return dayjs(t).format("YYYY-MM-DD");
},
getDayNumByYearMonth(year, month) {
switch (month) {
case "01":
case "03":
case "05":
case "07":
case "08":
case "10":
case "12":
return 31;
break;
case "04":
case "06":
case "09":
case "11":
return 30;
break;
case "02":
return this.isLeapYear(year) ? 29 : 28;
break;
}
},
isLeapYear(year) {
if (year / 4 == 0 && year / 100 != 0) {
return true;
} else if (year / 400 == 0) {
return true;
} else {
return false;
}
},
cellName({ row, column, rowIndex, columnIndex }) {
if (row.medicine_Fee > row.county_Medicine_Fee && columnIndex == 26) {
return "medicine";
}
if (row.material_Fee > row.county_Material_Fee && columnIndex == 29) {
return "medicine";
}
},
downLoad() {
let parmar = {
pageNumber: this.pageNumber,
pageSize: this.pageSize,
a48: this.a48,
a11: this.a11,
b16C: this.b16C,
beginDate: this.time ? this.time[0] : "",
endDate: this.time ? this.time[1] : "",
isjoin: this.isjoin,
isout: this.isout,
doctorName: this.doctorName,
codeName: this.codeName,
dis_type: this.dis_type,
insuranceType: this.insuranceType,
jssjBeginDate: this.time1 ? this.time1[0] : "",
jssjEndDate: this.time1 ? this.time1[1] : "",
shzt: this.shzt,
};
http.post(`/screen/hos/GetHistoryListExcelDownload`, parmar, {
responseType: "blob",
}).then((data) => {
const link = document.createElement("a");
const blob = new Blob([data], { type: "application/vnd.ms-excel" });
link.style.display = "none";
link.href = URL.createObjectURL(blob);
link.setAttribute("download", `病案数据详情.xlsx`);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
});
},
openLink() {
http.post(`/account/reporter`, {}).then((data) => {
var url = this.link + "?key=" + data;
window.open(url, "_blank");
});
},
//查询
search() {
this.pageSize = 100;
this.pageNumber = 1;
this.getList();
},
//获取频率,频率的下拉数据
getList() {
let parmar = {
pageNumber: this.pageNumber,
pageSize: this.pageSize,
a48: this.a48,
a11: this.a11,
b16C: this.b16C,
beginDate: this.time ? this.time[0] : "",
endDate: this.time ? this.time[1] : "",
isjoin: this.isjoin,
isout: this.isout,
doctorName: this.doctorName,
codeName: this.codeName,
dis_type: this.dis_type,
insuranceType: this.insuranceType,
jssjBeginDate: this.time1 ? this.time1[0] : "",
jssjEndDate: this.time1 ? this.time1[1] : "",
shzt: this.shzt,
};
http.post(`/screen/hos/GetHistoryList`, parmar)
.then((data) => {
this.tableData = data.list;
this.totalCount = data.totalCount;
this.$nextTick(() => {
this.$refs.tableRef.doLayout();
});
})
.catch((error) => {});
},
GetDeptList() {
http.get(`/screen/hos/GetDeptList`, {})
.then((data) => {
this.deptList = data;
this.deptList.map((item) => {
if (item.deptCode == this.$route.query.ApplyDept) {
this.b16C = this.$route.query.ApplyDept || "";
}
});
this.getList();
})
.catch((error) => {
this.getList();
});
},
SetInjoinAgain(id) {
http.post(`/screen/screen/SetInjoinAgain?id=${id}`, {})
.then((data) => {
Message.success("同步成功");
this.getList();
})
.catch((error) => {
this.getList();
});
},
handleCurrentChange(val) {
this.pageNumber = val;
this.getList();
},
handleSizeChange(val) {
this.pageSize = val;
this.getList();
},
handleCurrentDateChange() {
if (this.currentDate === 1) {
this.time = [`${dayjs().format("YYYY")}-01-01`, `${dayjs().format("YYYY")}-12-31`];
} else if (this.currentDate === 2) {
this.time = [
`${dayjs().format("YYYY-MM")}-01`,
`${dayjs().format("YYYY-MM")}-${this.getDayNumByYearMonth(dayjs().format("YYYY"), dayjs().format("MM"))}`,
];
}
this.search();
},
handleCurrentDateChange1() {
if (this.currentDate1 === 1) {
this.time1 = [`${dayjs().format("YYYY")}-01-01`, `${dayjs().format("YYYY")}-12-31`];
} else if (this.currentDate1 === 2) {
this.time1 = [
`${dayjs().format("YYYY-MM")}-01`,
`${dayjs().format("YYYY-MM")}-${this.getDayNumByYearMonth(dayjs().format("YYYY"), dayjs().format("MM"))}`,
];
}
this.search();
},
},
};
</script>
<style lang="scss">
.patientinfo {
height: 100%;
display: flex;
flex-flow: column;
background-color: white;
overflow: hidden;
position: relative;
.main {
flex: 1;
padding: 20px;
display: flex;
flex-flow: column;
.el-table__body tr.current-row > td.el-table__cell {
background-color: rgb(2, 131, 187);
color: #fff;
}
.el-table {
color: #333;
}
.medicine {
background-color: #f56c6c;
color: #fff;
}
.el-table__body tr.hover-row > td.el-table__cell {
background-color: #f5f7fa;
color: #333;
}
.el-table__body tr.hover-row > td.medicine {
background-color: #f56c6c;
color: #fff;
}
.el-table__body tr.current-row > td.medicine {
background-color: #f56c6c;
color: #fff;
}
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment