Browse Source

完善门诊补录

lighter 3 years ago
parent
commit
08213a0425

+ 2 - 2
src/api/medical-insurance/si-outpatient.js

@@ -24,11 +24,11 @@ export function getMzReceipts(data) {
   })
 }
 
-export function getHistoryMzReceipts(patNo) {
+export function getHistoryMzReceipts(patNo, start, end) {
   return request({
     url: '/siMz/getHistoryMzReceipts',
     method: 'get',
-    params: { patNo },
+    params: { patNo, start, end },
   })
 }
 

+ 7 - 0
src/api/medical-insurance/si-query.js

@@ -64,6 +64,13 @@ export function querySpecialChronicDiseasesAccreditation(data) {
   })
 }
 
+export function queryMzMatnDises() {
+  return request({
+    url: '/siQuery/queryMzMatnDises',
+    method: 'get',
+  })
+}
+
 export function querySpecialChronicDiseasesMedicalRecord(data) {
   return request({
     url: '/siQuery/querySpecialChronicDiseasesMedicalRecord',

+ 2 - 0
src/views/medical-insurance/inpatient/InHospFeeUpload.vue

@@ -297,6 +297,8 @@ export default {
           .catch(() => {
             showProgress.value = false
             percentage.value = 0
+            fetchProjectFees()
+            fetchMedicineFees()
           })
       } else {
         doSingleUpload()

+ 12 - 8
src/views/medical-insurance/inpatient/MedInsVerification.vue

@@ -49,17 +49,17 @@
             <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 }}
+            <template #label> 小科室 </template>
+            {{ patient.smallDeptName }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 入院医生 </template>
+            {{ patient.admissPhysicianName }}
           </el-descriptions-item>
           <el-descriptions-item>
             <template #label> 管床医生 </template>
@@ -70,8 +70,12 @@
             {{ patient.bedNo }}
           </el-descriptions-item>
           <el-descriptions-item>
-            <template #label> 小科室 </template>
-            {{ patient.smallDeptName }}
+            <template #label> 入院日期 </template>
+            {{ patient.admissDate }}
+          </el-descriptions-item>
+          <el-descriptions-item>
+            <template #label> 登记日期 </template>
+            {{ patient.ybRegisterDate }}
           </el-descriptions-item>
         </el-descriptions>
       </div>

+ 35 - 12
src/views/medical-insurance/outpatient/MzRegister.vue

@@ -16,7 +16,6 @@
           </el-dropdown-menu>
         </template>
       </el-dropdown>
-
       <el-dropdown trigger="click" @command="receiptsOpts" style="margin-left: 8px">
         <el-button type="primary">处方<i class="el-icon-arrow-down el-icon--right"></i> </el-button>
         <template #dropdown>
@@ -154,6 +153,14 @@
         <el-table-column property="enddate" label="失效日期"></el-table-column>
       </el-table>
     </el-dialog>
+    <el-dialog title="请选择生育诊断" v-model="showMatnDises" width="60%">
+      <el-table :data="matnDises" @row-click="uploadFees" stripe height="360">
+        <el-table-column property="code" label="病种编码"></el-table-column>
+        <el-table-column property="name" label="病种名称"></el-table-column>
+        <el-table-column property="insutype" label="险种类型"></el-table-column>
+        <el-table-column property="limitAmt" label="疾病限额"></el-table-column>
+      </el-table>
+    </el-dialog>
   </el-container>
 </template>
 
@@ -173,7 +180,7 @@ import {
 import { cptInsutype, cptPersType, cptYbState } from '@/utils/computed'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import store from '@/store'
-import { obtainBasicPersonInfo, querySpecialChronicDiseasesAccreditation } from '@/api/medical-insurance/si-query'
+import { obtainBasicPersonInfo, querySpecialChronicDiseasesAccreditation, queryMzMatnDises } from '@/api/medical-insurance/si-query'
 import { getMedTypesByFlag } from '@/api/medical-insurance/si-dict'
 export default {
   setup() {
@@ -202,6 +209,8 @@ export default {
     const currentOrder = ref({})
     const spcChrDiseAccts = ref([])
     const showSpcChrAccts = ref(false)
+    const matnDises = ref([])
+    const showMatnDises = ref(false)
 
     const nullPatientId = () => {
       if (!patientId.value) {
@@ -337,7 +346,12 @@ export default {
     }
 
     const qrySpcChrDiseAcct = (param) => {
-      if (medType.value === '14') {
+      if (medType.value === '51') {
+        queryMzMatnDises().then((res) => {
+          matnDises.value = res
+          showMatnDises.value = true
+        })
+      } else if (medType.value === '14') {
         querySpecialChronicDiseasesAccreditation(param).then((res) => {
           spcChrDiseAccts.value = res
           showSpcChrAccts.value = true
@@ -348,9 +362,16 @@ export default {
     }
 
     const uploadFees = (row) => {
+      if (medType.value === '51') {
+        row.patNo = patientId.value
+        row.times = times.value
+        row.opspDiseCode = row.code
+        row.opspDiseName = row.name
+      }
       uploadOutpatientFeeDetails(row).then((res) => {
         times.value = res.times
         showSpcChrAccts.value = false
+        showMatnDises.value = false
         mzPreSetl()
       })
     }
@@ -464,31 +485,33 @@ export default {
       cptInsutype,
       cptPersType,
       receiptBoxStyle,
-      registor,
-      receiptsOpts,
       tableHeight,
-      markMzFees,
-      unmarkMzFees,
       showInsuinfo,
       psnBaseinfo,
-      handleClickInsuinfo,
       mzPatient,
       mzVisit,
       receipts,
       orderNos,
-      colorStatus,
-      clickOrderNo,
       currentReceipts,
       totalFee,
       ordersTable,
       timesTable,
-      mzPreSetl,
       data,
-      clickTimes,
       spcChrDiseAccts,
       showSpcChrAccts,
+      matnDises,
+      showMatnDises,
+      mzPreSetl,
+      clickTimes,
+      colorStatus,
+      clickOrderNo,
+      handleClickInsuinfo,
       uploadFees,
       clearinfo,
+      markMzFees,
+      unmarkMzFees,
+      registor,
+      receiptsOpts,
     }
   },
 }

+ 199 - 60
src/views/medical-insurance/outpatient/SpcSpltryRcrd.vue

@@ -1,44 +1,80 @@
 <template>
   <el-container>
     <el-header style="height: 35px; margin-top: 10px">
-      <el-input v-model="patNo" style="width: 200px; margin-left: 2px" clearable placeholder="请输入">
-        <template #prepend>门诊id</template>
-      </el-input>
+      <el-input v-model="patNo" style="width: 120px; margin-left: 2px" clearable placeholder="门诊id"> </el-input>
+      <el-select v-model="medType" style="width: 120px" placeholder="医疗类别">
+        <el-option v-for="item in medTypes" :key="item.code" :value="item.code" :label="item.name"></el-option>
+      </el-select>
+      <el-date-picker
+        v-model="dateRange"
+        type="daterange"
+        :shortcuts="shortcuts"
+        range-separator="至"
+        start-placeholder="开始日期"
+        end-placeholder="结束日期"
+        style="width: 240px"
+      ></el-date-picker>
+      <el-divider direction="vertical"></el-divider>
       <el-button type="primary" @click="fetchHistoryReceipts">历史处方</el-button>
-      <el-button type="primary" @click="registor(1)">登记</el-button>
-      <el-button type="primary" @click="markMzFees">生成</el-button>
-      <el-button type="primary" @click="qrySpcChrDiseAcct">上传</el-button>
-      <el-button type="primary" @click="mzPreSetl">试算</el-button>
-      <el-button type="primary" @click="mzSettle">结算</el-button>
-      <el-button type="warning" @click="deleteMtFees">撤销处方</el-button>
-      <el-button type="warning" @click="registor(2)">取消登记</el-button>
-      <el-button type="warning" @click="revokeFees">取消上传</el-button>
-      <el-button type="warning" @click="revokeMzSettle">取消结算</el-button>
+
+      <el-dropdown trigger="click" @command="registor" style="margin-left: 8px">
+        <el-button type="primary">登记<i class="el-icon-arrow-down el-icon--right"></i> </el-button>
+        <template #dropdown>
+          <el-dropdown-menu>
+            <el-dropdown-item icon="el-icon-bank-card" command="execute">医保登记</el-dropdown-item>
+            <el-dropdown-item icon="el-icon-refresh-left" command="revoke">取消登记</el-dropdown-item>
+          </el-dropdown-menu>
+        </template>
+      </el-dropdown>
+
+      <el-dropdown trigger="click" @command="receiptsOpts" style="margin-left: 8px">
+        <el-button type="primary">处方<i class="el-icon-arrow-down el-icon--right"></i> </el-button>
+        <template #dropdown>
+          <el-dropdown-menu>
+            <el-dropdown-item icon="el-icon-document" command="insert">生成医保处方</el-dropdown-item>
+            <el-dropdown-item icon="el-icon-delete" command="delete">删除已生成处方</el-dropdown-item>
+            <el-dropdown-item icon="el-icon-upload" command="upload">医保处方上传</el-dropdown-item>
+            <el-dropdown-item icon="el-icon-refresh-left" command="retract">撤销医保上传</el-dropdown-item>
+          </el-dropdown-menu>
+        </template>
+      </el-dropdown>
+
+      <el-dropdown trigger="click" @command="settlement" style="margin-left: 8px">
+        <el-button type="primary">结算<i class="el-icon-arrow-down el-icon--right"></i> </el-button>
+        <template #dropdown>
+          <el-dropdown-menu>
+            <el-dropdown-item icon="el-icon-document" command="pre">试算</el-dropdown-item>
+            <el-dropdown-item icon="el-icon-document" command="fin">结算</el-dropdown-item>
+            <el-dropdown-item icon="el-icon-refresh-left" command="revoke">取消结算</el-dropdown-item>
+          </el-dropdown-menu>
+        </template>
+      </el-dropdown>
+      <el-button type="danger" icon="el-icon-refresh" @click="clearinfo" style="margin-left: 8px"> 重置 </el-button>
     </el-header>
     <el-container>
-      <el-aside width="400px">
+      <el-aside width="300px">
         <el-tag>历史处方目录</el-tag>
         <el-table :height="tableHeight" :data="historyReceipts" stripe highlight-current-row @row-click="fetchHistoryReceiptDetail">
-          <el-table-column property="patNo" label="Id号" width="70"></el-table-column>
-          <el-table-column property="times" label="就诊次数" width="60"></el-table-column>
-          <el-table-column property="chargeFee" label="金额" width="60"></el-table-column>
-          <el-table-column property="chargeDate" label="时间"></el-table-column>
-          <el-table-column label="状态" width="60">
+          <el-table-column property="patNo" label="Id号" width="70">
             <template #default="scope">
-              <span v-html="colorStatus(scope.row.status)"></span>
+              <span v-html="colorStatus(scope.row)"></span>
             </template>
           </el-table-column>
+          <el-table-column property="times" label="次数" width="40"></el-table-column>
+          <el-table-column property="chargeFee" label="金额" width="60"></el-table-column>
+          <el-table-column property="chargeDate" label="时间"></el-table-column>
         </el-table>
       </el-aside>
       <el-main>
         <el-tag>历史处方明细</el-tag>
         <div :style="receiptBoxStyle">
           <div v-for="(item, index) in currentReceipts" :key="index">
-            <div class="receipt-item">
-              <div class="w75">{{ index + 1 }}){{ item.drugName }}&nbsp;</div>
-              <div class="w25">&times;&nbsp;&nbsp;&nbsp;{{ item.quantity }}</div>
+            <div>
+              <el-checkbox v-model="item.checked"></el-checkbox>&nbsp;
+              <span style="color: rgb(94, 50, 50)"> {{ index + 1 }})【{{ item.chargeItemCode }}】{{ item.drugName }}&nbsp;&times;&nbsp;&nbsp;{{ item.quantity }} </span>
+              <span :style="{ color: item.nationalCode ? 'green' : 'red', fontWeight: 'bold' }"> &nbsp;&nbsp;【医保码:{{ item.nationalCode || '未匹配' }} 】</span>
             </div>
-            <div class="receipt-tips"></div>
+            <div style="margin-bottom: 16px"></div>
           </div>
         </div>
         <el-dialog title="个人参保信息" v-model="showInsuinfo" width="65%">
@@ -55,7 +91,6 @@
             <el-table-column property="empName" label="单位名称"></el-table-column>
           </el-table>
         </el-dialog>
-
         <el-dialog title="请选择(慢特病备案信息)" v-model="showSpcChrAccts" width="40%">
           <el-table :data="spcChrDiseAccts" @row-click="uploadFees">
             <el-table-column property="opspDiseCode" label="病种编码"></el-table-column>
@@ -64,6 +99,14 @@
             <el-table-column property="enddate" label="失效日期"></el-table-column>
           </el-table>
         </el-dialog>
+        <el-dialog title="请选择生育诊断" v-model="showMatnDises" width="60%">
+          <el-table :data="matnDises" @row-click="uploadFees" stripe height="360">
+            <el-table-column property="code" label="病种编码"></el-table-column>
+            <el-table-column property="name" label="病种名称"></el-table-column>
+            <el-table-column property="insutype" label="险种类型"></el-table-column>
+            <el-table-column property="limitAmt" label="疾病限额"></el-table-column>
+          </el-table>
+        </el-dialog>
       </el-main>
     </el-container>
   </el-container>
@@ -83,10 +126,13 @@ import {
   outpatientSettlement,
   revokeOutpatientSettlement,
 } from '@/api/medical-insurance/si-outpatient'
-import { obtainBasicPersonInfo, querySpecialChronicDiseasesAccreditation } from '@/api/medical-insurance/si-query'
-import { ref } from 'vue-demi'
+import { obtainBasicPersonInfo, querySpecialChronicDiseasesAccreditation, queryMzMatnDises } from '@/api/medical-insurance/si-query'
+import { onMounted, ref } from 'vue-demi'
 import store from '@/store'
 import { ElMessage, ElMessageBox } from 'element-plus'
+import { getMedTypesByFlag } from '@/api/medical-insurance/si-dict'
+import { shortcuts } from '@/data/shortcuts'
+import { getDateRangeFormatDate } from '@/utils/date'
 export default {
   setup() {
     const windowSize = store.state.app.windowSize
@@ -97,16 +143,60 @@ export default {
       overflowY: 'auto',
     }
     const patNo = ref('')
+    const medType = ref('')
+    const medTypes = ref([])
     const historyReceipts = ref([])
     const currentRow = ref({})
     const currentReceipts = ref([])
-    const colorStatus = (status) => {
-      return status > 0 ? '<span style="color: green">已生成</span>' : '<span style="color: red">未生成</span>'
+    const dateRange = ref(shortcuts[2].value)
+    const colorStatus = (row) => {
+      return row.status > 0 ? `<span style="color: green">${row.patNo}</span>` : `<span style="color: red">${row.patNo}</span>`
+    }
+    const nullPatNo = () => {
+      if (patNo.value) {
+        return false
+      }
+      ElMessage({
+        message: '请输入门诊ID!',
+        type: 'warning',
+        duration: 2500,
+        showClose: true,
+      })
+      return true
     }
+    const nullMedtype = () => {
+      if (medType.value) {
+        return false
+      }
+      ElMessage({
+        message: '请选择医疗类别!',
+        type: 'warning',
+        duration: 2500,
+        showClose: true,
+      })
+      return true
+    }
+
     const fetchHistoryReceipts = () => {
+      if (nullPatNo()) {
+        return
+      }
+      if (nullMedtype()) {
+        return
+      }
+      if (!dateRange.value) {
+        ElMessage({
+          message: '请选择日期范围!',
+          type: 'warning',
+          duration: 2500,
+          showClose: true,
+        })
+        return
+      }
       historyReceipts.value = []
       currentRow.value = {}
-      getHistoryMzReceipts(patNo.value).then((res) => {
+      const dates = getDateRangeFormatDate(dateRange.value)
+      getHistoryMzReceipts(patNo.value, dates.startTime, dates.endTime).then((res) => {
         historyReceipts.value = res
       })
     }
@@ -119,7 +209,7 @@ export default {
 
     const insuinfo = ref([])
     const showInsuinfo = ref(false)
-    const registor = (flag) => {
+    const registor = (command) => {
       if (!currentRow.value.times) {
         ElMessage({
           message: '请先选择历史处方。',
@@ -131,11 +221,11 @@ export default {
       }
       const param = {
         patNo: patNo.value,
-        medType: '14',
+        medType: medType.value,
         times: currentRow.value.times,
         needSaving: 1,
       }
-      if (flag === 1) {
+      if (command === 'execute') {
         obtainBasicPersonInfo(param).then((res) => {
           insuinfo.value = res.insuinfo
           showInsuinfo.value = true
@@ -172,6 +262,23 @@ export default {
       })
     }
 
+    const receiptsOpts = (command) => {
+      switch (command) {
+        case 'insert':
+          markMzFees()
+          break
+        case 'delete':
+          deleteMtFees()
+          break
+        case 'upload':
+          qrySpcChrDiseAcct()
+          break
+        case 'retract':
+          revokeFees()
+          break
+      }
+    }
+
     const markMzFees = () => {
       if (currentReceipts.value.length === 0) {
         ElMessage({
@@ -182,7 +289,7 @@ export default {
         })
         return
       }
-      ElMessageBox.confirm('是否将选中处方生成门特费用?', '提示', {
+      ElMessageBox.confirm('是否将选中处方生成医保处方?', '提示', {
         type: 'warning',
         confirmButtonText: '生成',
         cancelButtonText: '取消',
@@ -191,7 +298,7 @@ export default {
           insertSiMzFees(currentReceipts.value).then(() => {
             currentRow.value.status = '1'
             ElMessage({
-              message: '已成功生成门特处方。',
+              message: '已成功生成医保处方。',
               type: 'success',
               duration: 2500,
               showClose: true,
@@ -201,6 +308,8 @@ export default {
         .catch(() => {})
     }
 
+    const matnDises = ref([])
+    const showMatnDises = ref(false)
     const spcChrDiseAccts = ref([])
     const showSpcChrAccts = ref(false)
     const qrySpcChrDiseAcct = () => {
@@ -217,14 +326,28 @@ export default {
         patNo: patNo.value,
         times: currentRow.value.times,
       }
-      querySpecialChronicDiseasesAccreditation(param).then((res) => {
-        spcChrDiseAccts.value = res
-        showSpcChrAccts.value = true
-      })
+      if (medType.value === '51') {
+        queryMzMatnDises().then((res) => {
+          matnDises.value = res
+          showMatnDises.value = true
+        })
+      } else {
+        querySpecialChronicDiseasesAccreditation(param).then((res) => {
+          spcChrDiseAccts.value = res
+          showSpcChrAccts.value = true
+        })
+      }
     }
 
     const uploadFees = (row) => {
+      if (medType.value === '51') {
+        row.patNo = patNo.value
+        row.times = currentRow.value.times
+        row.opspDiseCode = row.code
+        row.opspDiseName = row.name
+      }
       uploadOutpatientFeeDetails(row).then((res) => {
+        showMatnDises.value = false
         showSpcChrAccts.value = false
         mzPreSetl()
       })
@@ -299,6 +422,7 @@ export default {
           duration: 2000,
           showClose: true,
         })
+        currentReceipts.value = []
         fetchHistoryReceipts()
       })
     }
@@ -348,43 +472,58 @@ export default {
       })
     }
 
+    const settlement = (command) => {
+      if (command === 'pre') {
+        mzPreSetl()
+      } else if (command == 'fin') {
+        mzSettle()
+      } else {
+        revokeMzSettle()
+      }
+    }
+
+    const clearinfo = () => {
+      patNo.value = ''
+      medType.value = ''
+      historyReceipts.value = []
+      currentRow.value = {}
+      currentReceipts.value = []
+    }
+
+    onMounted(() => {
+      getMedTypesByFlag('clinic').then((res) => {
+        medTypes.value = res
+      })
+    })
+
     return {
       patNo,
+      medType,
+      medTypes,
       tableHeight,
       receiptBoxStyle,
       historyReceipts,
       currentRow,
       currentReceipts,
+      matnDises,
+      showMatnDises,
+      insuinfo,
+      showInsuinfo,
+      spcChrDiseAccts,
+      showSpcChrAccts,
+      shortcuts,
+      dateRange,
       colorStatus,
       fetchHistoryReceipts,
       fetchHistoryReceiptDetail,
-      insuinfo,
-      showInsuinfo,
       registor,
       handleClickInsuinfo,
-      markMzFees,
-      spcChrDiseAccts,
-      showSpcChrAccts,
-      qrySpcChrDiseAcct,
+      receiptsOpts,
       uploadFees,
-      mzPreSetl,
-      revokeFees,
-      deleteMtFees,
-      mzSettle,
+      settlement,
       revokeMzSettle,
+      clearinfo,
     }
   },
 }
 </script>
-
-<style scoped>
-.receipt-item {
-  display: flex;
-}
-.receipt-tips {
-  margin: 0 0 10px 100px;
-}
-.receipt-tips > span {
-  margin-right: 15px;
-}
-</style>