|
@@ -1,11 +1,11 @@
|
|
|
<template>
|
|
|
<div class="pages">
|
|
|
<div class="bg-card" style="margin-bottom: 16px;">
|
|
|
- <el-form :model="formData" label-width="80px">
|
|
|
+ <el-form :model="formData" label-width="80px" ref="filterFormRef">
|
|
|
<el-row>
|
|
|
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="所属院区">
|
|
|
+ <el-col :span="7">
|
|
|
+ <el-form-item label="所属院区" prop="YQ_CODE">
|
|
|
<el-select style="width: 94%;" placeholder="请选择所属院区" v-model="formData.YQ_CODE" multiple collapse-tags
|
|
|
clearable filterable @change="yqChange">
|
|
|
<el-option v-for="(item, index) in searchOptions.yqArray" :key="index" :label="item.dep_name"
|
|
@@ -15,7 +15,7 @@
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="出院科室">
|
|
|
+ <el-form-item label="出院科室" prop="KS_CODE">
|
|
|
<el-cascader style="width: 94%;" placeholder="请选择科室" v-model="formData.KS_CODE"
|
|
|
:options="searchOptions.ksArray" filterable :props="searchOptions.cascaderProps" clearable collapse-tags
|
|
|
@change="ksChange">
|
|
@@ -24,7 +24,7 @@
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="出院病区">
|
|
|
+ <el-form-item label="出院病区" prop="BQ_CODE">
|
|
|
<el-cascader style="width: 94%;" placeholder="请选择病区" v-model="formData.BQ_CODE"
|
|
|
:options="searchOptions.bqArray" filterable :props="searchOptions.cascaderProps" clearable
|
|
|
collapse-tags>
|
|
@@ -32,30 +32,34 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
- <el-col :span="6">
|
|
|
- <el-form-item label="病案号">
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-form-item label="病案号" prop="AAA28">
|
|
|
<el-input style="width: 94%" placeholder="请输入病案编号" v-model="formData.AAA28" clearable></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :span="6">
|
|
|
+ <el-col :span="7">
|
|
|
<el-form-item label="出院日期">
|
|
|
<div style="width: 94%;display:flex;gap:5px">
|
|
|
+ <el-form-item prop="startTime">
|
|
|
<el-date-picker style="width: 100%" v-model="formData.startTime" type="date" placeholder="出院开始日期"
|
|
|
- :picker-options="pickerOptions1" value-format="yyyyMMdd" format="yyyy年MM月dd日">
|
|
|
+ :picker-options="pickerOptions" value-format="yyyyMMdd" format="yyyy年MM月dd日">
|
|
|
</el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="endTime">
|
|
|
<!-- <el-col :span="11">
|
|
|
<div style="width: 100%;"/>
|
|
|
</el-col> -->
|
|
|
<el-date-picker style="width: 100%" v-model="formData.endTime" type="date" placeholder="出院结束日期"
|
|
|
:picker-options="[]" value-format="yyyyMMdd" format="yyyy年MM月dd日" @onClick="onClickEndTime">
|
|
|
</el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="6" :offset="12">
|
|
|
+ <el-col :span="5" :offset="12">
|
|
|
<el-form-item>
|
|
|
<div style="width:94%;display:flex;justify-content:flex-end">
|
|
|
<el-button class="btn1" type="primary" @click="funQuery">查询</el-button>
|
|
@@ -150,7 +154,7 @@
|
|
|
<el-card class="summary-card" shadow="hover">
|
|
|
<div slot="header" class="clearfix">
|
|
|
<span class="summary-card-title">问题数量</span>
|
|
|
- <el-button style="float: right;padding: 0; " type="text">
|
|
|
+ <el-button style="float: right;padding: 0; " type="text" @click="urlGoto('/defectNumber?','from=ZMBLZK_WTSL')">
|
|
|
<i class="el-icon-s-marketing summary-icon"></i>
|
|
|
</el-button>
|
|
|
</div>
|
|
@@ -332,7 +336,7 @@ export default {
|
|
|
const that = this
|
|
|
return {
|
|
|
//region 顶部搜索
|
|
|
- search: { year: 0, quarter: 0 },
|
|
|
+ // search: { year: 0, quarter: 0 },
|
|
|
searchOptions: {
|
|
|
yqArray: [],//院区options
|
|
|
ksArray: [],//科室options
|
|
@@ -385,25 +389,21 @@ export default {
|
|
|
//endregion
|
|
|
doctor_rank: [],
|
|
|
formData: {
|
|
|
- rangeDate: [],
|
|
|
- chooseDate: '',
|
|
|
- startTime: '',
|
|
|
- endTime: '',
|
|
|
- quarter: {
|
|
|
- name: '',
|
|
|
- },
|
|
|
- problem: 'all',
|
|
|
- defectFelg: 'all',
|
|
|
- type: '1',
|
|
|
- },
|
|
|
- homeData: {},
|
|
|
- quarterList: [],
|
|
|
- monthList: [],
|
|
|
- yearList: [],
|
|
|
- countsData: {
|
|
|
- case_total: 0,
|
|
|
- defect_case_total: 0,
|
|
|
+ YQ_CODE: [],
|
|
|
+ KS_CODE: [],
|
|
|
+ BQ_CODE: [],
|
|
|
+ AAA28: '',
|
|
|
+ startTime: moment().startOf('year').format('YYYYMMDD'),
|
|
|
+ endTime: moment().format('YYYYMMDD')
|
|
|
},
|
|
|
+ // homeData: {},
|
|
|
+ // quarterList: [],
|
|
|
+ // monthList: [],
|
|
|
+ // yearList: [],
|
|
|
+ // countsData: {
|
|
|
+ // case_total: 0,
|
|
|
+ // defect_case_total: 0,
|
|
|
+ // },
|
|
|
summaryData: {
|
|
|
case_total: 0, // 病案数量
|
|
|
case_quality_total: 0, // 缺陷病历数量
|
|
@@ -411,13 +411,13 @@ export default {
|
|
|
question_total: 1, // 问题数量
|
|
|
case_calibre: {} // 病案质量
|
|
|
},
|
|
|
- caseSearchData: {
|
|
|
- department: ''
|
|
|
- },
|
|
|
- caseList: [],
|
|
|
- departmentList: [],
|
|
|
- doctorList: [], // 医生列表
|
|
|
- doctor_name: '',
|
|
|
+ // caseSearchData: {
|
|
|
+ // department: ''
|
|
|
+ // },
|
|
|
+ caseList: [], // 缺陷问题
|
|
|
+ // departmentList: [],
|
|
|
+ // doctorList: [], // 医生列表
|
|
|
+ // doctor_name: '',
|
|
|
quxian_show: true,
|
|
|
// 医师排名
|
|
|
doctor_show: true,
|
|
@@ -428,7 +428,7 @@ export default {
|
|
|
size: 10,
|
|
|
total: 0
|
|
|
},
|
|
|
- pickerOptions1: {
|
|
|
+ pickerOptions: {
|
|
|
disabledDate: (time) => {
|
|
|
if (this.formData.endTime != "") {
|
|
|
return time.getTime() > Date.now();
|
|
@@ -496,63 +496,6 @@ export default {
|
|
|
}
|
|
|
}]
|
|
|
},
|
|
|
- pickerOptions2: {
|
|
|
- disabledDate: (time) => {
|
|
|
- let dateString = this.formData.startTime;
|
|
|
- const year = parseInt(dateString.substr(0, 4)); // 2024
|
|
|
- const month = parseInt(dateString.substr(4, 2)) - 1; // 月份从0开始计算(2月→1)
|
|
|
- const day = parseInt(dateString.substr(6, 2)); // 01
|
|
|
- return time.getTime() < new Date(year, month, day).getTime();
|
|
|
- },
|
|
|
- shortcuts: [{
|
|
|
- text: '今天',
|
|
|
- onClick(picker) {
|
|
|
- picker.$emit('pick', new Date());
|
|
|
- }
|
|
|
- }, {
|
|
|
- text: '昨天',
|
|
|
- onClick(picker) {
|
|
|
- const date = new Date();
|
|
|
- date.setTime(date.getTime() - 3600 * 1000 * 24);
|
|
|
- picker.$emit('pick', date);
|
|
|
- }
|
|
|
- }, {
|
|
|
- text: '一周前',
|
|
|
- onClick(picker) {
|
|
|
- const date = new Date();
|
|
|
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
|
|
|
- picker.$emit('pick', date);
|
|
|
- }
|
|
|
- }, {
|
|
|
- text: '一月前',
|
|
|
- onClick(picker) {
|
|
|
- const date = new Date();
|
|
|
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 30);
|
|
|
- picker.$emit('pick', date);
|
|
|
- }
|
|
|
- }, {
|
|
|
- text: '三月前',
|
|
|
- onClick(picker) {
|
|
|
- const date = new Date();
|
|
|
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 90);
|
|
|
- picker.$emit('pick', date);
|
|
|
- }
|
|
|
- }, {
|
|
|
- text: '半年前',
|
|
|
- onClick(picker) {
|
|
|
- const date = new Date();
|
|
|
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 180);
|
|
|
- picker.$emit('pick', date);
|
|
|
- }
|
|
|
- }, {
|
|
|
- text: '一年前',
|
|
|
- onClick(picker) {
|
|
|
- const date = new Date();
|
|
|
- date.setTime(date.getTime() - 3600 * 1000 * 24 * 365);
|
|
|
- picker.$emit('pick', date);
|
|
|
- }
|
|
|
- }]
|
|
|
- }
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
@@ -587,7 +530,6 @@ export default {
|
|
|
|
|
|
},
|
|
|
mounted() {
|
|
|
- this.getAAC01Date();
|
|
|
this.getSearchOptions();
|
|
|
this.doctor_rank = JSON.parse(JSON.stringify(this.doctor_tableData)).slice(0, 10)
|
|
|
|
|
@@ -600,9 +542,9 @@ export default {
|
|
|
this.storageRemove('homeFrom');
|
|
|
}
|
|
|
*/
|
|
|
- this.getDepartmentList()
|
|
|
+ // this.getDepartmentList()
|
|
|
this.funQuery();
|
|
|
- this.selectInfo();
|
|
|
+ // this.selectInfo();
|
|
|
// this.getDepartmentTableList();
|
|
|
},
|
|
|
beforeRouteEnter(to, from, next) {
|
|
@@ -630,19 +572,7 @@ export default {
|
|
|
},
|
|
|
//重置头部搜索条件
|
|
|
reset() {
|
|
|
- this.formData = {
|
|
|
- rangeDate: [],
|
|
|
- chooseDate: '',
|
|
|
- startTime: '',
|
|
|
- endTime: '',
|
|
|
- quarter: {
|
|
|
- name: '',
|
|
|
- },
|
|
|
- problem: 'all',
|
|
|
- defectFelg: 'all',
|
|
|
- type: '1',
|
|
|
- };
|
|
|
- // this.getAAC01Date();
|
|
|
+ this.$refs.filterFormRef.resetFields();
|
|
|
},
|
|
|
//院区change事件
|
|
|
yqChange() {
|
|
@@ -688,14 +618,6 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- //头部默认出院日期
|
|
|
- getAAC01Date() {
|
|
|
- this.formData.startTime = moment().format('YYYY0101');
|
|
|
- this.formData.endTime = moment().format('YYYYMMDD');
|
|
|
- },
|
|
|
-
|
|
|
onClickEndTime(e) {
|
|
|
console.log(e)
|
|
|
},
|
|
@@ -818,17 +740,17 @@ export default {
|
|
|
this.quxian_show = !this.quxian_show
|
|
|
},
|
|
|
// 获取医生列表
|
|
|
- getDoctorList() {
|
|
|
- this.$axios2.post('/case-quality/doctor_list').then(res => {
|
|
|
- this.doctorList = res.data;
|
|
|
- });
|
|
|
- },
|
|
|
+ // getDoctorList() {
|
|
|
+ // this.$axios2.post('/case-quality/doctor_list').then(res => {
|
|
|
+ // this.doctorList = res.data;
|
|
|
+ // });
|
|
|
+ // },
|
|
|
// 缺陷病例统计
|
|
|
- getAnalysis() {
|
|
|
- this.$axios2.post('/case-quality/analysis').then(res => {
|
|
|
+ // getAnalysis() {
|
|
|
+ // this.$axios2.post('/case-quality/analysis').then(res => {
|
|
|
|
|
|
- });
|
|
|
- },
|
|
|
+ // });
|
|
|
+ // },
|
|
|
|
|
|
// 甲乙病级病例
|
|
|
getMedicalRecordLevel() {
|
|
@@ -837,17 +759,18 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
// 获取部门集合
|
|
|
- getDepartmentList() {
|
|
|
- this.$axios.post('/get_omr_department_list').then(res => {
|
|
|
- this.departmentList = res.data;
|
|
|
- });
|
|
|
- },
|
|
|
+ // getDepartmentList() {
|
|
|
+ // this.$axios.post('/get_omr_department_list').then(res => {
|
|
|
+ // this.departmentList = res.data;
|
|
|
+ // });
|
|
|
+ // },
|
|
|
// 获取缺陷问题
|
|
|
getCaseList() {
|
|
|
let pramse = {
|
|
|
- start_time: this.formData.startTime,
|
|
|
- end_time: this.formData.endTime,
|
|
|
- department: this.caseSearchData.department
|
|
|
+ // start_time: this.formData.startTime,
|
|
|
+ // end_time: this.formData.endTime,
|
|
|
+ // department: this.caseSearchData.department,
|
|
|
+ ...this.formData
|
|
|
};
|
|
|
this.$axios.post('/case-quality/defect_issues', pramse).then(res => {
|
|
|
this.caseList = res.data.list
|
|
@@ -871,40 +794,41 @@ export default {
|
|
|
const params = {
|
|
|
page,
|
|
|
page_size: size,
|
|
|
- start_time: this.formData.startTime,
|
|
|
- end_time: this.formData.endTime,
|
|
|
- is_export: 0
|
|
|
+ // start_time: this.formData.startTime,
|
|
|
+ // end_time: this.formData.endTime,
|
|
|
+ // is_export: 0,
|
|
|
+ ...this.formData
|
|
|
};
|
|
|
this.$axios2.post('/case-quality/medical_record_doctor', params).then(res => {
|
|
|
- const { count } = res.data
|
|
|
- if (count < 10) {
|
|
|
- for (let i = 0; i < 10 - count - 1; i++) {
|
|
|
- res.data.list.push({
|
|
|
- "key": "",
|
|
|
- "doc_count": '',
|
|
|
- "defect_doc_count": '',
|
|
|
- "score": '',
|
|
|
- "svg_score": '',
|
|
|
- "proportion": "",
|
|
|
- "dep_name": '',
|
|
|
- "code": '',
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
+ // const { count } = res.data
|
|
|
+ // if (count < 10) {
|
|
|
+ // for (let i = 0; i < 10 - count - 1; i++) {
|
|
|
+ // res.data.list.push({
|
|
|
+ // "key": "",
|
|
|
+ // "doc_count": '',
|
|
|
+ // "defect_doc_count": '',
|
|
|
+ // "score": '',
|
|
|
+ // "svg_score": '',
|
|
|
+ // "proportion": "",
|
|
|
+ // "dep_name": '',
|
|
|
+ // "code": '',
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+ // }
|
|
|
this.doctor_tableData = res.data.list
|
|
|
this.paginationDataDoctor.total = res.data.count
|
|
|
this.doctor_rank = JSON.parse(JSON.stringify(res.data.list)).slice(0, 10)
|
|
|
})
|
|
|
},
|
|
|
- getCounts() {
|
|
|
- let pramse = {
|
|
|
- start_time: this.formData.startTime,
|
|
|
- end_time: this.formData.endTime,
|
|
|
- };
|
|
|
- this.$axios.post('/case-quality/analysis', pramse).then(res => {
|
|
|
- this.countsData = res.data;
|
|
|
- });
|
|
|
- },
|
|
|
+ // getCounts() {
|
|
|
+ // let pramse = {
|
|
|
+ // start_time: this.formData.startTime,
|
|
|
+ // end_time: this.formData.endTime,
|
|
|
+ // };
|
|
|
+ // this.$axios.post('/case-quality/analysis', pramse).then(res => {
|
|
|
+ // this.countsData = res.data;
|
|
|
+ // });
|
|
|
+ // },
|
|
|
|
|
|
getSummaryData() {
|
|
|
let params = Object.assign({}, this.formData);
|
|
@@ -967,21 +891,21 @@ export default {
|
|
|
|
|
|
|
|
|
|
|
|
- selectInfo() {
|
|
|
- // let pramse = {};
|
|
|
- this.$axios.post('/selectInfo').then(res => {
|
|
|
- //问题属性 level
|
|
|
- this.quarterList = res.data.quarter;
|
|
|
- // 季度
|
|
|
- this.monthList = res.data.month;
|
|
|
- //月
|
|
|
- this.yearList = res.data.year;
|
|
|
- });
|
|
|
- },
|
|
|
+ // selectInfo() {
|
|
|
+ // // let pramse = {};
|
|
|
+ // this.$axios.post('/selectInfo').then(res => {
|
|
|
+ // //问题属性 level
|
|
|
+ // this.quarterList = res.data.quarter;
|
|
|
+ // // 季度
|
|
|
+ // this.monthList = res.data.month;
|
|
|
+ // //月
|
|
|
+ // this.yearList = res.data.year;
|
|
|
+ // });
|
|
|
+ // },
|
|
|
// 选择时间段
|
|
|
- chooseTime(time) {
|
|
|
- this.formData.rangeDate = this.timesCalculation(time).slice(0, 2);
|
|
|
- },
|
|
|
+ // chooseTime(time) {
|
|
|
+ // this.formData.rangeDate = this.timesCalculation(time).slice(0, 2);
|
|
|
+ // },
|
|
|
|
|
|
// 医师排名导出
|
|
|
handleExport() {
|
|
@@ -1029,7 +953,7 @@ export default {
|
|
|
this.storageSet('end_time', this.formData.endTime);
|
|
|
this.storageSet('homeFrom', this.formData);
|
|
|
// this.initCharts1(pramse);
|
|
|
- this.getCounts();
|
|
|
+ // this.getCounts();
|
|
|
// 获取汇总的数据 同时渲染树状图
|
|
|
this.getSummaryData();
|
|
|
|
|
@@ -1037,9 +961,9 @@ export default {
|
|
|
// 获取医师排名
|
|
|
this.getDoctorRank();
|
|
|
// 缺陷病例统计
|
|
|
- this.getAnalysis();
|
|
|
+ // this.getAnalysis();
|
|
|
// 甲乙病级病例
|
|
|
- this.getMedicalRecordLevel();
|
|
|
+ // this.getMedicalRecordLevel();
|
|
|
//科室维度排名
|
|
|
this.getDepartmentTableList();
|
|
|
},
|