소스 검색

初步对接工伤

lighter 3 년 전
부모
커밋
99738e527e

+ 17 - 0
src/api/medical-insurance/si-injury.js

@@ -0,0 +1,17 @@
+import request from '../../utils/request'
+
+export function getPersonBaseinfo(data) {
+  return request({
+    url: '/siInjury/getPersonBaseinfo',
+    method: 'post',
+    data,
+  })
+}
+
+export function admissRegistration(data) {
+  return request({
+    url: '/siInjury/admissRegistration',
+    method: 'post',
+    data,
+  })
+}

+ 2 - 0
src/data/inpatient.js

@@ -1,4 +1,5 @@
 import { ref } from 'vue'
+import store from '@/store'
 
 let info = ref({})
 
@@ -7,5 +8,6 @@ export function baseinfo() {
 }
 
 export function setBaseinfo(val) {
+  store.commit('ptnt/setInjuryMode', val.medType === '42')
   info.value = val
 }

+ 2 - 2
src/router/index.js

@@ -3,7 +3,7 @@
  * @params hideMenu: 是否隐藏当前路由结点不在导航中展示
  * @params alwayShow: 只有一个子路由时是否总是展示菜单,默认false
  */
-import { createRouter, createWebHashHistory } from 'vue-router'
+import { createRouter, createWebHistory } from 'vue-router'
 import store from '@/store'
 import NProgress from '@/utils/system/nprogress'
 import { changeTitle } from '@/utils/system/title'
@@ -19,7 +19,7 @@ let modules = [...Dashboard]
 const routes = modules
 
 const router = createRouter({
-  history: createWebHashHistory(),
+  history: createWebHistory(),
   routes,
 })
 

+ 4 - 0
src/store/modules/ptnt.js

@@ -4,6 +4,7 @@ const state = () => ({
   baseinfo: {},
   searchMethod: 'alpha',
   selections: [],
+  injuryMode: false,
 })
 // mutations
 const mutations = {
@@ -22,6 +23,9 @@ const mutations = {
   setSelections(state, selections) {
     state.selections = selections
   },
+  setInjuryMode(state, injuryMode) {
+    state.injuryMode = injuryMode
+  },
 }
 
 const actions = {}

+ 24 - 71
src/views/medical-insurance/inpatient/AdmRegistration.vue

@@ -13,8 +13,7 @@
           </el-dropdown-menu>
         </template>
       </el-dropdown>
-      <el-button v-if="greatestRole < 3 || greatestRole === 8" style="margin-left: 10px" type="success" icon="el-icon-top" @click="beforeYbRegister(1)">医保入院登记 </el-button
-      >&nbsp;
+      &nbsp;
       <el-button type="success" icon="el-icon-bottom" @click="beforeCancelRegister">取消入院登记</el-button>
       <el-button type="success" icon="el-icon-s-claim" @click="xiangMuLuRuRouter">项目录入</el-button>
       <el-button type="danger" icon="el-icon-warning" @click="yiZhuTuiFeiClick" v-if="greatestRole < 8">医嘱退费</el-button>
@@ -84,7 +83,7 @@
           </el-col>
           <el-col :span="2" style="text-align: right">医疗类别:</el-col>
           <el-col :span="4">
-            <el-select v-model="patient.medType" placeholder="请选择">
+            <el-select v-model="patient.medType" placeholder="请选择" @change="handleSelectMedType">
               <el-option v-for="item in medTypes" :key="item.code" :label="item.name" :value="item.code" :disabled="item.disabled">
                 <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
                 <el-divider direction="vertical"></el-divider>
@@ -182,20 +181,6 @@
             <el-button type="primary" icon="el-icon-check" @click="pushSiZyInDiag">确定</el-button>
           </div>
         </el-dialog>
-        <el-dialog title="个人参保信息" v-model="showInsuinfo" width="65%">
-          <el-table :data="insuinfo" @row-click="doYbRegisterOrModify">
-            <el-table-column label="余额" prop="balc"></el-table-column>
-            <el-table-column label="险种类型" prop="insutypeName"></el-table-column>
-            <el-table-column label="人员类别" prop="psnTypeName"></el-table-column>
-            <el-table-column label="参保状态" prop="psnInsuStasName"></el-table-column>
-            <el-table-column label="个人参保日期" prop="psnInsuDate"></el-table-column>
-            <el-table-column label="暂停参保日期" prop="pausInsuDate"></el-table-column>
-            <el-table-column label="公务员标志" prop="cvlservFlagName"></el-table-column>
-            <el-table-column label="参保地医保区划" prop="insuplcAdmdvs"></el-table-column>
-            <el-table-column label="参保地名称" prop="insuplcAdmdvsName"></el-table-column>
-            <el-table-column label="单位名称" prop="empName"></el-table-column>
-          </el-table>
-        </el-dialog>
       </div>
     </el-main>
     <el-dialog v-model="openXmlr" title="项目录入" :fullscreen="true" @close="closeXiangMuLuRuDialog">
@@ -230,7 +215,7 @@
               <el-radio label="1">是</el-radio>
             </el-radio-group>
           </span>
-          <el-table :data="cptSpecialDiags" stripe highlight-current-row height="400">
+          <el-table :data="cptSpecialDiags.slice((currentPage - 1) * 10, currentPage * 10)" stripe highlight-current-row height="400">
             <el-table-column prop="oldCode" label="老系统编码"></el-table-column>
             <el-table-column prop="oldName" label="老系统名称"></el-table-column>
             <el-table-column prop="newCode" label="新系统编码"></el-table-column>
@@ -245,6 +230,14 @@
               </template>
             </el-table-column>
           </el-table>
+          <el-pagination
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            page-size="10"
+            layout="total, prev, pager, next, jumper"
+            :total="cptSpecialDiags.length"
+            style="margin-top: 5px"
+          ></el-pagination>
         </el-col>
         <el-col :span="6">
           <el-tag>已选诊断</el-tag>&nbsp;&nbsp;
@@ -273,8 +266,7 @@ import { cptSex } from '@/utils/computed'
 import { sexes, admdvs } from '@/data/index'
 import { nullPatient } from '@/utils/validate'
 import { ElMessage, ElMessageBox } from 'element-plus'
-import { revokeAdmission, admissRegister, modifyAdmissionInfo } from '@/api/medical-insurance/si-inpatient'
-import { obtainBasicPersonInfo } from '@/api/medical-insurance/si-query'
+import { revokeAdmission } from '@/api/medical-insurance/si-inpatient'
 import { prepareReadCard } from '@/utils/readcard'
 import { formatDatetime, getDatetime } from '@/utils/date'
 import { getGreatestRole } from '@/utils/permission'
@@ -474,6 +466,10 @@ export default {
       })
     }
 
+    const handleSelectMedType = (val) => {
+      store.commit('ptnt/setInjuryMode', val === '42')
+    }
+
     const submitPatientInfo = () => {
       if (nullPatient()) return
       let message = null
@@ -581,56 +577,7 @@ export default {
     const formatYbRegisterDate = () => {
       patient.value.ybRegisterDate = formatDatetime(patient.value.ybRegisterDate)
     }
-    const admOrModfy = ref(1)
-    const beforeYbRegister = (flag) => {
-      admOrModfy.value = flag
-      if (nullPatient()) return
-      if (!patient.value.medType) {
-        ElMessage({
-          message: '请选择患者的医疗类别!',
-          type: 'warning',
-          duration: 2000,
-          showClose: true,
-        })
-        return
-      }
-      formatYbRegisterDate()
-      const param = {
-        patNo: patient.value.inpatientNo,
-        times: patient.value.admissTimes,
-        ledgerSn: patient.value.ledgerSn,
-        socialNo: patient.value.socialNo,
-        medType: patient.value.medType,
-        name: patient.value.name,
-        admdvs: patient.value.admdvs,
-        needSaving: 1,
-      }
-      obtainBasicPersonInfo(param).then((res) => {
-        patient.value.psnNo = res.psnNo
-        insuinfo.value = res.insuinfo
-        showInsuinfo.value = true
-      })
-    }
 
-    const doYbRegisterOrModify = (row) => {
-      if (nullPatient()) return
-      patient.value.insutype = row.insutype
-      patient.value.psnType = row.psnType
-      patient.value.insuplcAdmdvs = row.insuplcAdmdvs
-      patient.value.empName = row.empName
-      showInsuinfo.value = false
-      if (admOrModfy.value === 1) {
-        admissRegister(patient.value).then(() => {
-          showInsuinfo.value = false
-          ElMessageBox.alert('入院登记成功', '提示', { type: 'success' })
-        })
-      } else {
-        modifyAdmissionInfo(patient.value).then(() => {
-          showInsuinfo.value = false
-          ElMessageBox.alert('入院登记变更成功', '提示', { type: 'success' })
-        })
-      }
-    }
     const beforeCancelRegister = () => {
       if (nullPatient()) return
       getCancelRegisterRequests(patient.value.inpatientNo, patient.value.admissTimes, 1).then((res) => {
@@ -711,6 +658,11 @@ export default {
       openYiZhuTuiFei.value = true
     }
 
+    const currentPage = ref(1)
+    const handleCurrentChange = (val) => {
+      currentPage.value = val
+    }
+
     onMounted(() => {
       getMedTypesByFlag('hospitalization').then((res) => {
         medTypes.value = res
@@ -750,8 +702,6 @@ export default {
       submitPatientInfo,
       revoke,
       beforeReadCard,
-      beforeYbRegister,
-      doYbRegisterOrModify,
       beforeCancelRegister,
       formatYbRegisterDate,
       xiangMuLuRuRouter,
@@ -767,6 +717,9 @@ export default {
       specialDiagName,
       cptSpecialDiags,
       matnTypes,
+      currentPage,
+      handleCurrentChange,
+      handleSelectMedType,
     }
   },
 }

+ 163 - 98
src/views/medical-insurance/inpatient/MedInsVerification.vue

@@ -16,56 +16,64 @@
     <el-main>
       <div class="his-info">
         <el-tag>患者基本信息</el-tag>
-        <el-row style="height: 28px; line-height: 28px">
-          <el-col :span="2">住院号:</el-col>
-          <el-col :span="4">{{ patient.inpatientNo }}</el-col>
-          <el-col :span="2">住院次数:</el-col>
-          <el-col :span="4">{{ patient.admissTimes }}</el-col>
-          <el-col :span="2">病人类别:</el-col>
-          <el-col :span="4">{{ patient.visitTypeName }}</el-col>
-          <el-col :span="2">身份证号:</el-col>
-          <el-col :span="4">{{ patient.socialNo }}</el-col>
-        </el-row>
-        <el-row style="height: 28px; line-height: 28px">
-          <el-col :span="2">姓名:</el-col>
-          <el-col :span="4">{{ patient.name }}</el-col>
-          <el-col :span="2">性别:</el-col>
-          <el-col :span="4">{{ cptSex(patient.sex) }}</el-col>
-          <el-col :span="2">出生日期:</el-col>
-          <el-col :span="4">{{ patient.birthDate }}</el-col>
-          <el-col :span="2">联系电话:</el-col>
-          <el-col :span="4">{{ patient.homeTel }}</el-col>
-        </el-row>
-        <el-row style="height: 28px; line-height: 28px">
-          <el-col :span="2">入院医生:</el-col>
-          <el-col :span="4">{{ patient.admissPhysicianName }}</el-col>
-          <el-col :span="2">入院诊断:</el-col>
-          <el-col :span="4">{{ patient.admissDiagStr }}</el-col>
-          <el-col :span="2">门诊诊断:</el-col>
-          <el-col :span="4">{{ patient.clinicDiagStr }}</el-col>
-          <el-col :span="2">病区:</el-col>
-          <el-col :span="4">{{ patient.admissWardName }}</el-col>
-        </el-row>
-        <el-row style="height: 28px; line-height: 28px">
-          <el-col :span="2">入院日期:</el-col>
-          <el-col :span="4">{{ patient.admissDate }}</el-col>
-          <el-col :span="2">小科室:</el-col>
-          <el-col :span="4">{{ patient.smallDeptName }}</el-col>
-          <el-col :span="2">床位:</el-col>
-          <el-col :span="4">{{ patient.bedNo }}</el-col>
-          <el-col :span="2">管床医生:</el-col>
-          <el-col :span="4">{{ patient.referPhysicianName }}</el-col>
-        </el-row>
-        <el-row style="height: 28px; line-height: 28px">
-          <el-col :span="2">医保身份:</el-col>
-          <el-col :span="4">{{ patient.responceTypeName }}</el-col>
-          <el-col :span="2">是否转诊:</el-col>
-          <el-col :span="4">{{ filterYesOrNo(patient.xnhHasreferral) }}</el-col>
-          <el-col :span="2">转诊单号:</el-col>
-          <el-col :span="4">{{ patient.xnhReferralno }}</el-col>
-          <el-col :span="2">参保区划:</el-col>
-          <el-col :span="4">{{ patient.admdvs }}</el-col>
-        </el-row>
+        <el-descriptions :column="4" border>
+          <el-descriptions-item>
+            <template #label> 住院号 </template>
+            {{ patient.inpatientNo }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 住院次数 </template>
+            {{ patient.admissTimes }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 身份证号 </template>
+            {{ patient.socialNo }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 出生日期 </template>
+            {{ patient.birthDate }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 姓名 </template>
+            {{ patient.name }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 性别 </template>
+            {{ patient.sex }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 参保区划 </template>
+            {{ patient.admdvs }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 联系电话 </template>
+            {{ patient.homeTel }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 入院医生 </template>
+            {{ patient.admissPhysicianName }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 病区 </template>
+            {{ patient.admissWardName }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 入院日期 </template>
+            {{ patient.admissDate }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 管床医生 </template>
+            {{ patient.referPhysicianName }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 床位 </template>
+            {{ patient.bedNo }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 小科室 </template>
+            {{ patient.smallDeptName }}
+          </el-descriptions-item>
+        </el-descriptions>
       </div>
       <div style="height: 8px"></div>
       <el-tag>医保入院诊断</el-tag>
@@ -121,28 +129,42 @@
         </div>
       </el-drawer>
       <el-dialog title="人员信息" v-model="showPsnInsuinfo" width="65%">
-        <el-tag>参保信息</el-tag>
-        <el-table :data="psnBaseinfo.insuinfo" @row-click="handleClickInsuinfo" stripe height="180">
-          <el-table-column label="余额" prop="balc"></el-table-column>
-          <el-table-column label="险种类型" prop="insutypeName"></el-table-column>
-          <el-table-column label="人员类别" prop="psnTypeName"></el-table-column>
-          <el-table-column label="参保状态" prop="psnInsuStasName"></el-table-column>
-          <el-table-column label="个人参保日期" prop="psnInsuDate"></el-table-column>
-          <el-table-column label="暂停参保日期" prop="pausInsuDate"></el-table-column>
-          <el-table-column label="公务员标志" prop="cvlservFlagName"></el-table-column>
-          <el-table-column label="参保地医保区划" prop="insuplcAdmdvs"></el-table-column>
-          <el-table-column label="参保地名称" prop="insuplcAdmdvsName"></el-table-column>
-          <el-table-column label="单位名称" prop="empName"></el-table-column>
-        </el-table>
-        <div style="height: 16px"></div>
-        <el-tag>身份信息</el-tag>
-        <el-table :data="psnBaseinfo.idetinfo" stripe height="180">
-          <el-table-column label="人员身份类别" prop="psnIdetTypeName"></el-table-column>
-          <el-table-column label="人员类别等级" prop="psnTypeLv"></el-table-column>
-          <el-table-column label="备注" prop="memo"></el-table-column>
-          <el-table-column label="开始时间" prop="begntime"></el-table-column>
-          <el-table-column label="结束时间" prop="endtime"></el-table-column>
-        </el-table>
+        <el-tag>{{ injuryMode ? '工伤信息' : '参保信息' }}</el-tag>
+        <div v-if="injuryMode">
+          <el-table :data="injuryinfo" @row-click="handleClickInjuryinfo" stripe height="180">
+            <el-table-column label="电脑号" prop="indiId"></el-table-column>
+            <el-table-column label="工伤个人业务序号" prop="serialPers"></el-table-column>
+            <el-table-column label="工伤认定号" prop="identifyCode"></el-table-column>
+            <el-table-column label="认定申请时间" prop="identyDate"></el-table-column>
+            <el-table-column label="受伤部位" prop="injuryPart"></el-table-column>
+            <el-table-column label="报告时间" prop="reportDate"></el-table-column>
+            <el-table-column label="事故发生时间" prop="accidentDate"></el-table-column>
+            <el-table-column label="事故详细情况" prop="accidentDetail"></el-table-column>
+          </el-table>
+        </div>
+        <div v-else>
+          <el-table :data="psnBaseinfo.insuinfo" @row-click="handleClickInsuinfo" stripe height="180">
+            <el-table-column label="余额" prop="balc"></el-table-column>
+            <el-table-column label="险种类型" prop="insutypeName"></el-table-column>
+            <el-table-column label="人员类别" prop="psnTypeName"></el-table-column>
+            <el-table-column label="参保状态" prop="psnInsuStasName"></el-table-column>
+            <el-table-column label="个人参保日期" prop="psnInsuDate"></el-table-column>
+            <el-table-column label="暂停参保日期" prop="pausInsuDate"></el-table-column>
+            <el-table-column label="公务员标志" prop="cvlservFlagName"></el-table-column>
+            <el-table-column label="参保地医保区划" prop="insuplcAdmdvs"></el-table-column>
+            <el-table-column label="参保地名称" prop="insuplcAdmdvsName"></el-table-column>
+            <el-table-column label="单位名称" prop="empName"></el-table-column>
+          </el-table>
+          <div style="height: 16px"></div>
+          <el-tag>身份信息</el-tag>
+          <el-table :data="psnBaseinfo.idetinfo" stripe height="180">
+            <el-table-column label="人员身份类别" prop="psnIdetTypeName"></el-table-column>
+            <el-table-column label="人员类别等级" prop="psnTypeLv"></el-table-column>
+            <el-table-column label="备注" prop="memo"></el-table-column>
+            <el-table-column label="开始时间" prop="begntime"></el-table-column>
+            <el-table-column label="结束时间" prop="endtime"></el-table-column>
+          </el-table>
+        </div>
       </el-dialog>
       <el-dialog title="人员待遇信息" v-model="showTrtInfos" width="65%">
         <el-table :data="trtInfos" stripe>
@@ -182,6 +204,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'
 import { nullPatient } from '@/utils/validate'
 import { getBizAppyTypes, getMedTypesByFlag, getDiagTypes } from '@/api/medical-insurance/si-dict'
 import { checkPersonTreatment, obtainBasicPersonInfo, queryPersonnelAssignmentInfo } from '@/api/medical-insurance/si-query'
+import { getPersonBaseinfo, admissRegistration } from '@/api/medical-insurance/si-injury'
 import { admissRegister } from '@/api/medical-insurance/si-inpatient'
 import { getZyInYbDiags } from '@/api/yibao/patient'
 import { baseinfo } from '@/data/inpatient'
@@ -205,6 +228,9 @@ export default {
     const insuRowClickFlag = ref(null)
     const zyInYbDiags = ref([])
     const medTypes = ref([])
+    const injuryMode = computed(() => {
+      return store.state.ptnt.injuryMode
+    })
 
     const actived = ref(false)
     onActivated(() => {
@@ -227,6 +253,8 @@ export default {
       }
     })
 
+    const injuryinfo = ref([])
+
     const getPsnInsuinfo = (flag) => {
       if (nullPatient()) {
         return
@@ -249,35 +277,69 @@ export default {
           return
         }
       }
-      insuRowClickFlag.value = flag
-      const param = {
-        medType: patient.value.medType,
-        patNo: patient.value.inpatientNo,
-        times: patient.value.admissTimes,
-        ledgerSn: patient.value.ledgerSn,
-        socialNo: patient.value.socialNo,
-        name: patient.value.name,
-        admdvs: patient.value.admdvs,
-        needSaving: 1,
+
+      if (injuryMode.value) {
+        getPersonBaseinfo(patient.value).then((res) => {
+          injuryinfo.value = res
+          showPsnInsuinfo.value = true
+        })
+      } else {
+        insuRowClickFlag.value = flag
+        const param = {
+          medType: patient.value.medType,
+          patNo: patient.value.inpatientNo,
+          times: patient.value.admissTimes,
+          ledgerSn: patient.value.ledgerSn,
+          socialNo: patient.value.socialNo,
+          name: patient.value.name,
+          admdvs: patient.value.admdvs,
+          needSaving: 1,
+        }
+        obtainBasicPersonInfo(param).then((res) => {
+          if (flag === 0) {
+            const param = {
+              patNo: patient.value.inpatientNo,
+              times: patient.value.admissTimes,
+              psnNo: res.psnNo,
+              bizAppyType: bizAppyType.value,
+            }
+            queryPersonnelAssignmentInfo(param).then((res) => {
+              fixMedins.value = res
+              showFixMedins.value = true
+            })
+          } else {
+            patient.value.psnNo = res.psnNo
+            psnBaseinfo.value = res
+            showPsnInsuinfo.value = true
+          }
+        })
       }
-      obtainBasicPersonInfo(param).then((res) => {
-        if (flag === 0) {
+    }
+
+    const handleClickInjuryinfo = (row) => {
+      ElMessageBox.confirm('审核通过将直接进行医保入院登记,确定审核通过?', '提示', {
+        type: 'warning',
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+      })
+        .then(() => {
           const param = {
-            patNo: patient.value.inpatientNo,
-            times: patient.value.admissTimes,
-            psnNo: res.psnNo,
-            bizAppyType: bizAppyType.value,
+            baseinfo: patient.value,
+            injuryinfo: row,
           }
-          queryPersonnelAssignmentInfo(param).then((res) => {
-            fixMedins.value = res
-            showFixMedins.value = true
+          admissRegistration(param).then((res) => {
+            approveYbsf(patient.value).then(() => {
+              ElMessage({
+                message: '审核已通过,医保入院登记成功。',
+                type: 'success',
+                duration: 2500,
+                showClose: true,
+              })
+              showPsnInsuinfo.value = false
+            })
           })
-        } else {
-          patient.value.psnNo = res.psnNo
-          psnBaseinfo.value = res
-          showPsnInsuinfo.value = true
-        }
-      })
+        })
+        .catch(() => {})
     }
 
     const handleClickInsuinfo = (row) => {
@@ -419,7 +481,8 @@ export default {
       zyInYbDiags,
       tableHeight,
       drawerVisible,
-      getDiagTypeName,
+      injuryMode,
+      injuryinfo,
       cancelData,
       maleIcon,
       femaleIcon,
@@ -434,9 +497,11 @@ export default {
       trtInfos,
       showTrtInfos,
       cptSex,
+      getDiagTypeName,
       filterYesOrNo,
       getPsnInsuinfo,
       handleClickInsuinfo,
+      handleClickInjuryinfo,
       reject,
       showDrawer,
       handleClickRow,