yuwandanmian hace 1 año
padre
commit
a02f02993b

+ 11 - 1
src/api/excel.js

@@ -196,4 +196,14 @@ export function bmyDoctorRankingBlKfExport(data) {
     responseType: 'blob',
     data
   })
-}
+}
+
+// 编码员缺陷问题导出
+export function encoderProblemExport(data) {
+  return request_blob({
+    url: `/api/bmy/qualityExport`,
+    method: 'post',
+    responseType: 'blob',
+    data
+  })
+}

+ 1 - 1
src/styles/custom.scss

@@ -58,7 +58,7 @@
 // 卡片背景
 
 .bg-box {
-  padding: 13px;
+  padding: 0 13px 13px;
   width: 100%;
   .bg-card {
     padding: 20px;

+ 1 - 0
src/views/encoder/components/doctorBlKf/TableBox.vue

@@ -60,6 +60,7 @@
       <el-table-column
         prop="home_bmy_score"
         label="病历评分"
+        sortable
         align="center">
       </el-table-column>
       <el-table-column

+ 3 - 3
src/views/encoder/components/errors/SearchBox.vue

@@ -10,7 +10,7 @@
         <el-col :span="6">
           <el-form-item label="住院科室">
             <el-select v-model="data.AAC11C" filterable clearable placeholder="全部" style="width: 100%;">
-              <el-option v-for="(item, index) in departmentList" :key="index" :label="item.dep_name" :value="item.dep_id"></el-option>
+              <el-option v-for="item in departmentList" :key="'ks'+item.dep_id" :label="item.dep_name" :value="item.dep_id"></el-option>
             </el-select>
           </el-form-item>
         </el-col>
@@ -29,14 +29,14 @@
         <el-col :span="6">
           <el-form-item label="住院医师">
             <el-select v-model="data.AEE04_CODE" filterable clearable placeholder="全部" style="width: 100%;">
-              <el-option v-for="item of doctors" :key="item.id" :label="item.label" :value="item.id"></el-option>
+              <el-option v-for="item of doctors" :key="'ys'+item.id" :label="item.label" :value="item.id"></el-option>
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="6">
           <el-form-item label="编码员">
             <el-select v-model="data.AEE08_CODE" filterable clearable placeholder="全部" style="width: 100%;">
-              <el-option v-for="item of doctors" :key="item.id" :label="item.label" :value="item.id"></el-option>
+              <el-option v-for="item of doctors" :key="'bmy'+item.id" :label="item.label" :value="item.id"></el-option>
             </el-select>
           </el-form-item>
         </el-col>

+ 2 - 0
src/views/encoder/errors.vue

@@ -83,6 +83,7 @@ export default {
         bl_type: 2,
         is_export: 0,
         rule_id: this.$route.query.rule_id,
+        is_qx: this.$route.query.is_qx,
         page,
         page_size,
         ...this.formInline
@@ -128,6 +129,7 @@ export default {
         bl_type: 2,
         is_export: 1,
         rule_id: this.$route.query.rule_id,
+        is_qx: this.$route.query.is_qx,
         ...this.formInline
       }
       if (AAC01 && AAC01.length) {

+ 100 - 19
src/views/encoder/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="bg-box" style="padding-top: 0;">
+  <div class="bg-box">
     <!-- 搜索栏 -->
     <div class="bg-card" style="margin-bottom: 18px;">
       <el-form :inline="true" :model="formInline" class="demo-form-inline">
@@ -35,14 +35,16 @@
                   <div class="tongji-item">
                     <div class="title">首页总例数</div>
                     <div class="middle">日均例数:<span>{{ tongjiData.dayAvg }}</span></div>
-                    <div class="count">{{ tongjiData.blSum }}</div>
+                    <span class="count" @click="toErrorPage(1)" style="cursor: pointer;">
+                    {{ tongjiData.blSum }}
+                    </span>
                   </div>
                 </el-col>
                 <el-col :span="8">
                   <div class="tongji-item nth2">
                     <div class="title">缺陷总例数</div>
                     <div class="middle">缺陷占比:<span>{{ tongjiData.averageError }}%</span></div>
-                    <div class="count">{{ tongjiData.qxSum }}</div>
+                    <span class="count" @click="toErrorPage(2)" style="cursor: pointer;">{{ tongjiData.qxSum }}</span>
                   </div>
                 </el-col>
                 <el-col :span="8">
@@ -128,40 +130,58 @@
           fit="contain"
           @click="onToggleQuexianShow">
         </el-image>
+        <slot>
+          <el-button type="primary" class="export-btn" icon="el-icon-download" size="small" style="float: right;" @click="onBmyProblemExport">下载</el-button>
+        </slot>
       </CardTitle>
       <el-collapse-transition>
         <div v-show="quxian_show">
           <el-row :gutter="20">
-            <el-col :span="14">
-              <!-- <div class="mb20">
-                <el-radio-group v-model="qxxqData.radio" text-color="#185DA6" fill="#ffffff" @change="handleRadioChange">
-                  <el-radio-button :label="1">缺陷问题(前十)</el-radio-button>
-                  <el-radio-button :label="2">缺陷问题</el-radio-button>
-                </el-radio-group>
-              </div> -->
+            <el-col :span="24">
               <!-- 搜索栏 -->
               <el-form :inline="true" :model="qxxqData" class="demo-form-inline mb20">
-                <el-form-item label="缺陷分类" style="margin-bottom: 0">
+                <el-form-item label="缺陷归类">
                   <el-select v-model="qxxqData.type" clearable filterable placeholder="全部">
                     <el-option label="患者基本信息" :value="0"></el-option>
                     <el-option label="诊疗信息" :value="1"></el-option>
                     <el-option label="费用信息" :value="2"></el-option>
                   </el-select>
                 </el-form-item>
-                <el-form-item label="出院科室" style="margin-bottom: 0">
+                <el-form-item label="出院科室">
                   <el-select v-model="qxxqData.dep_id" clearable filterable placeholder="全部">
-                    <el-option v-for="(item, index) in departmentList" :label="item.dep_name" :value="item.dep_id" :key="index"></el-option>
+                    <el-option v-for="(item, index) in departmentList" :label="item.dep_name" :value="item.dep_id" :key="'dep'+index"></el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item label="缺陷分类">
+                  <el-select v-model="qxxqData.level" clearable filterable placeholder="全部">
+                    <el-option v-for="(item, index) in levels" :label="item.label" :value="item.value" :key="'dj'+index"></el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item label="缺陷字段">
+                  <el-select v-model="qxxqData.field" multiple collapse-tags clearable filterable placeholder="全部">
+                    <el-option v-for="(item, index) in fields" :label="item" :value="item" :key="'zd'+index"></el-option>
                   </el-select>
                 </el-form-item>
+                <el-form-item label="缺陷描述">
+                  <el-input v-model="qxxqData.desc" placeholder="请输入" clearable></el-input>
+                </el-form-item>
                 <el-form-item style="margin-bottom: 0">
                   <el-button type="primary" class="bg185DA6" @click="onQuexianSearch">查询</el-button>
                 </el-form-item>
               </el-form>
+            </el-col>
+            <el-col :span="14">
+              <!-- <div class="mb20">
+                <el-radio-group v-model="qxxqData.radio" text-color="#185DA6" fill="#ffffff" @change="handleRadioChange">
+                  <el-radio-button :label="1">缺陷问题(前十)</el-radio-button>
+                  <el-radio-button :label="2">缺陷问题</el-radio-button>
+                </el-radio-group>
+              </div> -->
               <!-- 表格 -->
               <el-table
                 :data="tableData"
                 class="mb20"
-                style="width: 100%">
+                style="width: 100%; margin-top: -20px;">
                 <el-table-column
                   type="index"
                   label="序号"
@@ -334,13 +354,24 @@
 
 <script>
 import DoctorRankVue from './components/index/DoctorRank.vue'
-import { bmyDoctorRanking } from '@/api/excel'
+import { bmyDoctorRanking, encoderProblemExport } from '@/api/excel'
   export default {
     components: {
       DoctorRankVue
     },
     data() {
       return {
+        levels: [
+          {
+            label: '强制',
+            value: 0
+          },
+          {
+            label: '建议',
+            value: 1
+          }
+        ],
+        fields: [],
         levelText: '优:≥97分;</br>' + '良:90~96分且不出现A类错误;</br>' + '中:75~89分且不出现A类错误;</br>' + '差:<75分。',
         formInline: {
           start_time: '',
@@ -373,7 +404,10 @@ import { bmyDoctorRanking } from '@/api/excel'
         qxxqData: {
           radio: 2,
           dep_id: '',
-          type: ''
+          type: '',
+          level: '',
+          desc: '',
+          field: []
         },
         qxPieDom: null,
         tableData: [],
@@ -517,12 +551,25 @@ import { bmyDoctorRanking } from '@/api/excel'
       this.qxxqPie()
       this.getQuexianData()
       this.getDoctorRank()
+      this.getFieldList()
     },
     methods: {
+      // 获取缺陷字段选项
+      getFieldList() {
+        this.$axios_new.post('/api/bmy/errorFieldList').then(res => {
+          this.fields = res.data
+        })
+      },
+      // 汇总统计跳转
+      toErrorPage(status) {
+        // status 1-总病历 2-缺陷病历
+        const { start_time, end_time } = this.formInline
+        this.$router.push({ name: 'EncoderErrors', query: { start_time, end_time, is_qx: status }})
+      },
       // 缺陷详情列表
       toPage(row) {
         const { start_time, end_time } = this.formInline
-        this.$router.push({ name: 'EncoderErrors', query: { rule_id: row.error_rule, start_time, end_time, ...this.qxxqData }})
+        this.$router.push({ name: 'EncoderErrors', query: { rule_id: row.error_rule, start_time, end_time, ...this.qxxqData, is_qx: 2 }})
       },
       // 全局筛选
       async onGobalSearch() {
@@ -534,11 +581,14 @@ import { bmyDoctorRanking } from '@/api/excel'
       },
       // 获取缺陷数据
       getQuexianData() {
-        const { dep_id, type } = this.qxxqData
+        const { dep_id, type, level, desc, field } = this.qxxqData
         const { page, size } = this.paginationData
         const params = {
           dep_id,
           type,
+          level,
+          desc,
+          field,
           page,
           page_size: size,
           ...this.formInline
@@ -546,7 +596,7 @@ import { bmyDoctorRanking } from '@/api/excel'
         this.$axios_new.post('/api/bmy/qualityData', params).then(res => {
           const { count } = res.data
           if (count < 10) {
-            for(let i=0; i<10 - count-1; i++) {
+            for(let i=0; i<10 - res.data.length-1; i++) {
               res.data.data.push({
                 error_rule: '',
                 count: '',
@@ -564,6 +614,37 @@ import { bmyDoctorRanking } from '@/api/excel'
           this.paginationData.total = res.data.count
         })
       },
+      onBmyProblemExport() {
+        const { dep_id, type, level, desc, field } = this.qxxqData
+        const params = {
+          is_ten: 0,
+          AAC11C: dep_id,
+          level,
+          type,
+          desc,
+          field,
+          ...this.formInline
+        }
+        encoderProblemExport(params).then(res => {
+          const content = res.data; // 后台返回二进制数据
+          const blob = new Blob([content]);
+          const fileName = `编码员-缺陷问题.csv`;
+          if ('download' in document.createElement('a')) {
+            // 非IE下载
+            const elink = document.createElement('a');
+            elink.download = fileName;
+            elink.style.display = 'none';
+            elink.href = URL.createObjectURL(blob);
+            document.body.appendChild(elink);
+            elink.click();
+            URL.revokeObjectURL(elink.href); // 释放URL 对象
+            document.body.removeChild(elink);
+          } else {
+            // IE10+下载
+            navigator.msSaveBlob(blob, fileName);
+          }
+        });
+      },
       // 获取部门集合
       getDepartmentData() {
         this.$axios.post('/bmy/getAllDepartment').then(res => {

+ 9 - 1
src/views/medicalRecord/index.vue

@@ -42,7 +42,15 @@
           <td colspan="3">
             <NoValueInputVue :data="blInfo.patient_address_info.AAA09 ? blInfo.patient_address_info.AAA09.replace('省', '') : ''" />(省)
             <NoValueInputVue :data="blInfo.patient_address_info.AAA10 ? blInfo.patient_address_info.AAA10.replace('市', '') : ''" />(市)
-            <NoValueInputVue :data="blInfo.patient_address_info.AAA10 ? blInfo.patient_address_info.AAA11.replace('区', '') : ''" />(市)
+            <span v-if="blInfo.patient_address_info.AAA11.includes('县')">
+              <NoValueInputVue :data="blInfo.patient_address_info.AAA11 ? blInfo.patient_address_info.AAA11.replace('县', '') : ''" />(县)
+            </span>
+            <span v-else-if="blInfo.patient_address_info.AAA11.includes('区')">
+              <NoValueInputVue :data="blInfo.patient_address_info.AAA11 ? blInfo.patient_address_info.AAA11.replace('区', '') : ''" />(区)
+            </span>
+            <span v-else>
+              <NoValueInputVue :data="blInfo.patient_address_info.AAA11" />
+            </span>
           </td>
           <td class="label">籍贯</td>
           <td colspan="3">