Browse Source

工伤接口基本对接完成。

lighter 3 years ago
parent
commit
0e17098890

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

@@ -15,3 +15,59 @@ export function admissRegistration(data) {
     data,
   })
 }
+
+export function uploadInjuryFees(data) {
+  return request({
+    url: '/siInjury/uploadFees',
+    method: 'post',
+    data,
+  })
+}
+
+export function cancelInjuryRegister(data) {
+  return request({
+    url: '/siInjury/cancelRegister',
+    method: 'post',
+    data,
+  })
+}
+
+export function getInjuryRegisterInfo(data) {
+  return request({
+    url: '/siInjury/getRegisterInfo',
+    method: 'post',
+    data,
+  })
+}
+
+export function cancelInjuryFee(data) {
+  return request({
+    url: '/siInjury/cancelUploadFee',
+    method: 'post',
+    data,
+  })
+}
+
+export function injuryPrecal(data) {
+  return request({
+    url: '/siInjury/preCalculateCost',
+    method: 'post',
+    data,
+  })
+}
+
+export function injurySettlement(data) {
+  return request({
+    url: '/siInjury/calculateCost',
+    method: 'post',
+    data,
+  })
+}
+
+export function revokeInjurySettlement(data) {
+  return request({
+    url: '/siInjury/cancelCalculate',
+    method: 'post',
+    data,
+  })
+}

+ 17 - 5
src/views/medical-insurance/inpatient/AdmRegistration.vue

@@ -271,6 +271,7 @@ import { prepareReadCard } from '@/utils/readcard'
 import { formatDatetime, getDatetime } from '@/utils/date'
 import { getGreatestRole } from '@/utils/permission'
 import { clone } from '@/utils/clone'
+import { cancelInjuryRegister } from '@/api/medical-insurance/si-injury'
 import { getDiagTypes, getMedTypesByFlag, getMatnTypes } from '@/api/medical-insurance/si-dict'
 import { baseinfo } from '@/data/inpatient'
 import Xmlr from '@/components/inpatient/XiangMuLuRu.vue'
@@ -530,12 +531,15 @@ export default {
       patient.value.referPhysicianName = item.name
     }
 
+    const injuryMode = computed(() => {
+      return store.state.ptnt.injuryMode
+    })
     const searchDiag = (queryString, cb) => {
       if (queryString && queryString.length > 1) {
         const param = {
           method: searchMethod.value,
           content: queryString,
-          target: 'diag',
+          target: injuryMode.value ? 'injurydiag' : 'diag',
         }
         searchData(param).then((res) => {
           cb(res)
@@ -585,11 +589,19 @@ export default {
           const req = res[res.length - 1]
           if (req.statusFlag === 2) {
             // 审核通过
-            revokeAdmission(patient.value).then(() => {
-              ElMessageBox.alert('取消入院登记成功。', '提示', {
-                type: 'success',
+            if (injuryMode.value) {
+              cancelInjuryRegister(patient.value).then(() => {
+                ElMessageBox.alert('取消入院登记成功。', '提示', {
+                  type: 'success',
+                })
               })
-            })
+            } else {
+              revokeAdmission(patient.value).then(() => {
+                ElMessageBox.alert('取消入院登记成功。', '提示', {
+                  type: 'success',
+                })
+              })
+            }
           } else if (req.statusFlag === 1) {
             ElMessage({
               message: '医保科尚未处理您的请求,请耐心等待医保科审核结果。',

+ 42 - 19
src/views/medical-insurance/inpatient/DiscSettlement.vue

@@ -231,6 +231,7 @@ import { getSiPatInfo } from '@/api/medical-insurance/si-query'
 import { getDetailConventions, getRoughConventions, retractConventions } from '@/api/yibao/conventions'
 import { prepareReadCard } from '@/utils/readcard'
 import { getGreatestRole } from '@/utils/permission'
+import { injurySettlement, revokeInjurySettlement } from '@/api/medical-insurance/si-injury'
 import { baseinfo } from '@/data/inpatient'
 export default {
   setup() {
@@ -239,6 +240,9 @@ export default {
     const patient = computed(() => {
       return baseinfo()
     })
+    const injuryMode = computed(() => {
+      return store.state.ptnt.injuryMode
+    })
     const diags = initDiags()
     const fecthDisDiags = () => {
       getDisDiag(patient.value.inpatientNo, patient.value.admissTimes).then((res) => {
@@ -360,19 +364,27 @@ export default {
           showClose: true,
         })
       } else {
-        const param = {
-          patNo: patient.value.inpatientNo,
-          times: patient.value.admissTimes,
-          ledgerSn: patient.value.ledgerSn,
-        }
-        getSiPatInfo(param).then((res) => {
-          patient.value.medType = res.medType
-          if (res.mdtrtId) {
-            yibaoDismiss()
-          } else {
-            ziFeiDismiss()
+        if (injuryMode.value) {
+          injurySettlement(patient.value).then((res) => {
+            ElMessageBox.alert(dismissBtnText.value + '成功。', '提示', {
+              type: 'success',
+            })
+          })
+        } else {
+          const param = {
+            patNo: patient.value.inpatientNo,
+            times: patient.value.admissTimes,
+            ledgerSn: patient.value.ledgerSn,
           }
-        })
+          getSiPatInfo(param).then((res) => {
+            patient.value.medType = res.medType
+            if (res.mdtrtId) {
+              yibaoDismiss()
+            } else {
+              ziFeiDismiss()
+            }
+          })
+        }
       }
     }
     const ziFeiDismiss = () => {
@@ -476,14 +488,25 @@ export default {
         type: 'warning',
       })
         .then(() => {
-          revokeSettlement(patient.value).then(() => {
-            ElMessage({
-              message: '取消医保结算成功。',
-              type: 'success',
-              duration: 2500,
-              showClose: true,
+          if (injuryMode.value) {
+            revokeInjurySettlement(patient.value).then(() => {
+              ElMessage({
+                message: '取消医保结算成功。',
+                type: 'success',
+                duration: 2500,
+                showClose: true,
+              })
             })
-          })
+          } else {
+            revokeSettlement(patient.value).then(() => {
+              ElMessage({
+                message: '取消医保结算成功。',
+                type: 'success',
+                duration: 2500,
+                showClose: true,
+              })
+            })
+          }
         })
         .catch(() => {})
     }

+ 137 - 59
src/views/medical-insurance/inpatient/Home.vue

@@ -97,56 +97,122 @@
       </el-main>
     </el-container>
     <el-dialog v-model="showRegisterInfo" width="60%">
-      <el-descriptions title="患者医保在院信息" :column="3" size="small" border>
-        <el-descriptions-item>
-          <template #label> 姓名 </template>
-          {{ registerInfo.psnName }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 住院号 </template>
-          {{ registerInfo.iptOtpNo }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 性别 </template>
-          {{ cptSex(registerInfo.gend) }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 证件类型 </template>
-          {{ cptPsnCertType(registerInfo.psnCertType) }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 证件号码 </template>
-          {{ registerInfo.certno }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 出生日期 </template>
-          {{ registerInfo.brdy }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 险种类型 </template>
-          {{ cptInsutype(registerInfo.insutype) }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 医疗类别 </template>
-          {{ cptMedType(registerInfo.medType) }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 异地标志 </template>
-          {{ cptYesOrNo(registerInfo.outFlag) }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 开始日期 </template>
-          {{ registerInfo.begndate }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 就诊ID </template>
-          {{ registerInfo.mdtrtId }}
-        </el-descriptions-item>
-        <el-descriptions-item>
-          <template #label> 人员编号 </template>
-          {{ registerInfo.psnNo }}
-        </el-descriptions-item>
-      </el-descriptions>
+      <div v-if="injuryMode">
+        <el-descriptions title="工伤患者在院信息" :column="3" size="small" border>
+          <el-descriptions-item>
+            <template #label> 姓名 </template>
+            {{ registerInfo.name }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 住院号 </template>
+            {{ registerInfo.patient_id }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 个人电脑号 </template>
+            {{ registerInfo.indi_id }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 性别 </template>
+            {{ cptSex(registerInfo.sex) }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 身份证 </template>
+            {{ registerInfo.idcard }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 出生日期 </template>
+            {{ registerInfo.birthday }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 医疗类别 </template>
+            {{ registerInfo.treatment_name }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 入院科室 </template>
+            {{ registerInfo.out_dept_name }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 入院病房 </template>
+            {{ registerInfo.area_name }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 诊断编码 </template>
+            {{ registerInfo.in_diagnose }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 诊断名称 </template>
+            {{ registerInfo.in_disease_name }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 就诊登记号 </template>
+            {{ registerInfo.serial_no }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 工伤业务序号 </template>
+            {{ registerInfo.serial_bo_no }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 入院登记时间 </template>
+            {{ registerInfo.reg_date }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 单位名称 </template>
+            {{ registerInfo.corp_name }}
+          </el-descriptions-item>
+        </el-descriptions>
+      </div>
+      <div v-else>
+        <el-descriptions title="患者医保在院信息" :column="3" size="small" border>
+          <el-descriptions-item>
+            <template #label> 姓名 </template>
+            {{ registerInfo.psnName }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 住院号 </template>
+            {{ registerInfo.iptOtpNo }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 性别 </template>
+            {{ cptSex(registerInfo.gend) }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 证件类型 </template>
+            {{ cptPsnCertType(registerInfo.psnCertType) }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 证件号码 </template>
+            {{ registerInfo.certno }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 出生日期 </template>
+            {{ registerInfo.brdy }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 险种类型 </template>
+            {{ cptInsutype(registerInfo.insutype) }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 医疗类别 </template>
+            {{ cptMedType(registerInfo.medType) }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 异地标志 </template>
+            {{ cptYesOrNo(registerInfo.outFlag) }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 开始日期 </template>
+            {{ registerInfo.begndate }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 就诊ID </template>
+            {{ registerInfo.mdtrtId }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 人员编号 </template>
+            {{ registerInfo.psnNo }}
+          </el-descriptions-item>
+        </el-descriptions>
+      </div>
     </el-dialog>
   </el-container>
 </template>
@@ -166,6 +232,7 @@ import { getWards } from '@/api/login'
 import { queryInHospitalPatientsInfo } from '@/api/medical-insurance/si-query'
 import { cptSex, cptPsnCertType, cptInsutype, cptMedType, cptYesOrNo } from '@/utils/computed'
 import { baseinfo, setBaseinfo } from '@/data/inpatient'
+import { getInjuryRegisterInfo } from '@/api/medical-insurance/si-injury'
 export default {
   setup() {
     const ward = reactive({
@@ -256,21 +323,31 @@ export default {
       store.commit('SET_SELECTIONS', val)
     }
 
+    const injuryMode = computed(() => {
+      return store.state.ptnt.injuryMode
+    })
     const registerInfo = ref({})
     const showRegisterInfo = ref(false)
 
     const getRegInfo = () => {
       if (nullPatient()) return
-      const param = {
-        patNo: patient.value.inpatientNo,
-        times: patient.value.admissTimes,
-        ledgerSn: patient.value.ledgerSn,
-        begntime: patient.value.admissDate,
+      if (injuryMode.value) {
+        getInjuryRegisterInfo(patient.value).then((res) => {
+          registerInfo.value = res
+          showRegisterInfo.value = true
+        })
+      } else {
+        const param = {
+          patNo: patient.value.inpatientNo,
+          times: patient.value.admissTimes,
+          ledgerSn: patient.value.ledgerSn,
+          begntime: patient.value.admissDate,
+        }
+        queryInHospitalPatientsInfo(param).then((res) => {
+          registerInfo.value = res[0]
+          showRegisterInfo.value = true
+        })
       }
-      queryInHospitalPatientsInfo(param).then((res) => {
-        registerInfo.value = res[0]
-        showRegisterInfo.value = true
-      })
     }
 
     const currentPage = ref(1)
@@ -314,6 +391,7 @@ export default {
       ward,
       permission,
       tableHieght,
+      injuryMode,
       handleSelectSearchMehtod,
       currentMedType,
       medTypes,

+ 68 - 37
src/views/medical-insurance/inpatient/InHospFeeUpload.vue

@@ -103,21 +103,24 @@
 
 <script>
 import store from '@/store'
-import { computed, onActivated, onDeactivated, onMounted, reactive, ref, watch, watchEffect } from 'vue'
+import { computed, onActivated, onDeactivated, onMounted, reactive, ref, watch } from 'vue'
 import { fetchNotUploadedFees } from '@/api/yibao/patient'
 import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
 import { nullPatient } from '@/utils/validate'
 import { proofread, multipleUpload } from '@/api/yibao/yibao'
 import { hospitalizationPreSettlement, uploadFeeDetail, revokeUploadFees } from '@/api/medical-insurance/si-inpatient'
+import { uploadInjuryFees, cancelInjuryFee, injuryPrecal } from '@/api/medical-insurance/si-injury'
 import { setCallback } from '@/utils/websocket'
 import { getGreatestRole } from '@/utils/permission'
 import { baseinfo } from '@/data/inpatient'
-import { weiGuiFeiYongFenXi } from '@/api/yibao/xiang-mu-lu-ru'
-import WeiGuiFeiYongFenXi from '../../../components/inpatient/WeiGuiFeiYongFenXi.vue'
+import WeiGuiFeiYongFenXi from '@/components/inpatient/WeiGuiFeiYongFenXi.vue'
 export default {
   components: { WeiGuiFeiYongFenXi },
   setup() {
     const feeTableHeight = (store.state.app.windowSize.h - 200) / 2
+    const injuryMode = computed(() => {
+      return store.state.ptnt.injuryMode
+    })
     const isAdmin = getGreatestRole() < 10
     const patient = computed(() => {
       return baseinfo()
@@ -213,13 +216,23 @@ export default {
 
     const preCalculateCost = () => {
       if (nullPatient()) return
-      hospitalizationPreSettlement(patient.value).then((res) => {
-        patient.value.chargeYb = res.fundPay
-        ElMessageBox.alert(res, {
-          type: 'success',
-          confirmButtonText: '确定',
+      if (injuryMode.value) {
+        injuryPrecal(patient.value).then((res) => {
+          patient.value.chargeYb = res.fundPay
+          ElMessageBox.alert(res, {
+            type: 'success',
+            confirmButtonText: '确定',
+          })
         })
-      })
+      } else {
+        hospitalizationPreSettlement(patient.value).then((res) => {
+          patient.value.chargeYb = res.fundPay
+          ElMessageBox.alert(res, {
+            type: 'success',
+            confirmButtonText: '确定',
+          })
+        })
+      }
     }
 
     const patientIndex = ref(1)
@@ -264,8 +277,25 @@ export default {
         if (nullPatient()) return
       }
       showProgress.value = true
-      if (selections.value.length > 1) {
-        doMultipleUpload()
+      if (injuryMode.value) {
+        const sid = store.getters['user/sid']
+        patient.value.sid = sid
+        uploadInjuryFees(patient.value)
+          .then((res) => {
+            fetchProjectFees()
+            fetchMedicineFees()
+            showProgress.value = false
+            percentage.value = 0
+            patient.value.chargeYb = res.fundPay
+            ElMessageBox.alert(res, '成功', {
+              type: 'success',
+              confirmButtonText: '确定',
+            })
+          })
+          .catch(() => {
+            showProgress.value = false
+            percentage.value = 0
+          })
       } else {
         doSingleUpload()
       }
@@ -305,23 +335,11 @@ export default {
           fetchMedicineFees()
           showProgress.value = false
           percentage.value = 0
-          if (res && res.code === 2002) {
-            ElMessageBox.confirm(res.message + '是否进行校对?', '提示', {
-              type: 'warning',
-              confirmButtonText: '进行校对',
-              cancelButtonText: '暂不校对',
-            })
-              .then(() => {
-                startProofread()
-              })
-              .catch(() => {})
-          } else {
-            patient.value.chargeYb = res.fundPay
-            ElMessageBox.alert(res, '成功', {
-              type: 'success',
-              confirmButtonText: '确定',
-            })
-          }
+          patient.value.chargeYb = res.fundPay
+          ElMessageBox.alert(res, '成功', {
+            type: 'success',
+            confirmButtonText: '确定',
+          })
         })
         .catch(() => {
           fetchProjectFees()
@@ -365,16 +383,29 @@ export default {
         cancelButtonText: '放弃',
       })
         .then(() => {
-          revokeUploadFees(patient.value).then(() => {
-            ElMessage({
-              message: '操作成功。',
-              type: 'success',
-              duration: 2500,
-              showClose: true,
+          if (injuryMode.value) {
+            cancelInjuryFee(patient.value).then(() => {
+              ElMessage({
+                message: '操作成功。',
+                type: 'success',
+                duration: 2500,
+                showClose: true,
+              })
+              fetchProjectFees()
+              fetchMedicineFees()
             })
-            fetchProjectFees()
-            fetchMedicineFees()
-          })
+          } else {
+            revokeUploadFees(patient.value).then(() => {
+              ElMessage({
+                message: '操作成功。',
+                type: 'success',
+                duration: 2500,
+                showClose: true,
+              })
+              fetchProjectFees()
+              fetchMedicineFees()
+            })
+          }
         })
         .catch(() => {})
     }