Przeglądaj źródła

查看医嘱费用和录入处置医嘱

DESKTOP-MINPJAU\Administrator 3 lat temu
rodzic
commit
82103f3d57

+ 8 - 0
src/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru.js

@@ -165,6 +165,14 @@ export function jiaoYan(data) {
     })
 }
 
+export function expensesForGettingADoctorSOrder(patNo, times) {
+    return request({
+        url: url + '/expensesForGettingADoctorSOrder',
+        method: 'get',
+        params: {patNo, times},
+    })
+}
+
 
 
 

+ 10 - 2
src/components/xc/xc-table/XcTable.vue

@@ -7,6 +7,7 @@
       @selection-change="selectionChange"
       @row-click="rowClick"
       highlight-current-row
+      @row-contextmenu="contextmenu"
       :row-key="props.rowKey"
       border
       @select-all="selectAll"
@@ -72,7 +73,8 @@ const emit = defineEmits([
   'currentChange',
   'sizeChange',
   'rowClick',
-  'selectionChange'
+  'selectionChange',
+  'rowContextmenu'
 ])
 
 const tableRef = ref(null)
@@ -148,6 +150,12 @@ const clearSelection = () => {
   ElMessage.success('清空成功。')
 }
 
+const contextmenu = (row, column, event) => {
+  event.returnValue = false
+  event.preventDefault()
+  emit('rowContextmenu', row)
+}
+
 const getSelectionRows = () => {
   let data = tableRef.value.getSelectionRows()
   if (data.length > 0) {
@@ -162,4 +170,4 @@ defineExpose({clearSelection, getSelectionRows})
 
 <style scoped>
 
-</style>
+</style>

+ 127 - 0
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/DoctorSOrderFee.vue

@@ -0,0 +1,127 @@
+<template>
+  <el-dialog v-model="dialog" title="患者费用信息"
+             width="90%"
+             @closed="emit('close')">
+    <el-tag>
+      总费用: {{ props.sum.sum }} 元
+    </el-tag>
+    <el-tag type="success">
+      数量: {{ props.sum.amount }} 条
+    </el-tag>
+    <div :style="{height: getWindowSize.h - 400 + 'px'}">
+      <el-auto-resizer class="table__v2">
+        <template #default="{ height, width }">
+          <el-table-v2 :columns="colums"
+                       :data="data"
+                       :sort-by="sortBy"
+                       :width="width"
+                       fixed
+                       @column-sort="onSort"
+                       :height="height"/>
+        </template>
+      </el-auto-resizer>
+    </div>
+  </el-dialog>
+
+</template>
+
+<script setup name='DoctorSOrderFee'>
+import {getWindowSize} from "@/utils/window-size";
+import {TableV2SortOrder} from "element-plus";
+import {clone} from "@/utils/clone";
+
+const props = defineProps({
+  data: {
+    type: Array,
+  },
+  sum: {
+    type: Object
+  }
+})
+
+const colums = [
+  {
+    key: 'chargeDate',
+    dataKey: 'chargeDate',
+    title: '日期',
+    width: 150,
+    fixed: true,
+    sortable: true
+  }, {
+    key: 'orderCode',
+    dataKey: 'orderCode',
+    title: '收费码',
+    width: 80,
+  }, {
+    key: 'chargeName',
+    dataKey: 'chargeName',
+    title: '名称',
+    width: 150,
+  }, {
+    key: 'drugSpecification',
+    dataKey: 'drugSpecification',
+    title: '规格',
+    width: 150,
+  }, {
+    key: 'chargeStatusName',
+    dataKey: 'chargeStatusName',
+    title: '上账',
+    width: 120,
+  }, {
+    key: 'chargeAmount',
+    dataKey: 'chargeAmount',
+    title: '数量',
+    width: 70,
+  }, {
+    key: 'chargeFee',
+    dataKey: 'chargeFee',
+    title: '金额',
+    width: 70,
+  }, {
+    key: 'orderName',
+    dataKey: 'orderName',
+    title: '药品单号',
+    width: 150,
+  }, {
+    key: 'execUnitName',
+    dataKey: 'execUnitName',
+    title: '执行科室',
+    width: 150,
+  }, {
+    key: 'deptCodeName',
+    dataKey: 'deptCodeName',
+    title: '病房',
+    width: 150
+  }
+]
+let sortBy = $ref({
+  key: 'chargeDate',
+  order: TableV2SortOrder.ASC,
+})
+
+const onSort = (_sortBy) => {
+  data = data.reverse()
+  sortBy = _sortBy
+}
+
+const emit = defineEmits(['close'])
+const dialog = true
+
+let data = $ref([])
+
+onMounted(() => {
+  data = clone(props.data)
+  data.sort((a, b) => {
+    return b.chargeDate.localeCompare(a.chargeDate)
+  })
+})
+
+</script>
+
+<style scoped lang="scss">
+.table__v2 {
+  :deep(.el-table-v2__main) {
+    font-size: 12px;
+  }
+}
+</style>

+ 225 - 224
src/utils/computed.js

@@ -1,277 +1,278 @@
 export function cptSex(val) {
-  if (val === 1 || val === '1') {
-    return '男'
-  } else if (val === 2 || val === '2') {
-    return '女'
-  } else {
-    return ''
-  }
+    if (val === 1 || val === '1') {
+        return '男'
+    } else if (val === 2 || val === '2') {
+        return '女'
+    } else {
+        return ''
+    }
 }
 
 export function cptOperation(val) {
-  switch (val) {
-    case '1':
-      return '传统手术'
-    case '2':
-      return '介入手术'
-    case '3':
-      return '微创手术'
-    case '4':
-      return '恶性肿瘤放射治疗'
-    case '5':
-      return '恶性肿瘤化学治疗'
-    case '6':
-      return '恶性肿瘤放疗加化疗'
-    case '7':
-      return '恶性肿瘤姑息治疗'
-    default:
-      return '非手术'
-  }
+    switch (val) {
+        case '1':
+            return '传统手术'
+        case '2':
+            return '介入手术'
+        case '3':
+            return '微创手术'
+        case '4':
+            return '恶性肿瘤放射治疗'
+        case '5':
+            return '恶性肿瘤化学治疗'
+        case '6':
+            return '恶性肿瘤放疗加化疗'
+        case '7':
+            return '恶性肿瘤姑息治疗'
+        default:
+            return '非手术'
+    }
 }
 
 export function cptDisDiagStatus(val) {
-  switch (val) {
-    case 0:
-      return '好转/治愈'
-    case 1:
-      return '未愈'
-    case 2:
-      return '转院(医院要求)'
-    case 3:
-      return '转院(病人要求)'
-    case 4:
-      return '转科'
-    case 5:
-      return '无效'
-    case 6:
-      return '死亡'
-    case 7:
-      return '双向转诊'
-    case 9:
-      return '其他'
-    default:
-      return '未填'
-  }
+    switch (val) {
+        case 0:
+            return '好转/治愈'
+        case 1:
+            return '未愈'
+        case 2:
+            return '转院(医院要求)'
+        case 3:
+            return '转院(病人要求)'
+        case 4:
+            return '转科'
+        case 5:
+            return '无效'
+        case 6:
+            return '死亡'
+        case 7:
+            return '双向转诊'
+        case 9:
+            return '其他'
+        default:
+            return '未填'
+    }
 }
 
 export function getResponceTypeName(val) {
-  switch (val) {
-    case '01':
-      return 'zifei'
-    case '02':
-    case '10':
-      return 'shengyb'
-    case '04':
-      return 'xnh'
-    case '03':
-    case '09':
-      return 'shiyb'
-  }
+    switch (val) {
+        case '01':
+            return 'zifei'
+        case '02':
+        case '10':
+            return 'shengyb'
+        case '04':
+            return 'xnh'
+        case '03':
+        case '09':
+            return 'shiyb'
+    }
 }
 
 export function cptInsutype(val) {
-  switch (val) {
-    case '310':
-      return '职工基本医疗保险'
-    case '320':
-      return '公务员医疗补助'
-    case '330':
-      return '大额医疗费用补助'
-    case '340':
-      return '离休人员医疗保障'
-    case '390':
-      return '城乡居民基本医疗保险'
-    case '392':
-      return '城乡居民大病医疗保险'
-    case '510':
-      return '生育保险'
-    default:
-      return ''
-  }
+    switch (val) {
+        case '310':
+            return '职工基本医疗保险'
+        case '320':
+            return '公务员医疗补助'
+        case '330':
+            return '大额医疗费用补助'
+        case '340':
+            return '离休人员医疗保障'
+        case '390':
+            return '城乡居民基本医疗保险'
+        case '392':
+            return '城乡居民大病医疗保险'
+        case '510':
+            return '生育保险'
+        default:
+            return ''
+    }
 }
 
 export function cptPersType(val) {
-  switch (val) {
-    case '11':
-      return '在职'
-    case '21':
-      return '退休'
-    case '31':
-      return '离休'
-    case '32':
-      return '老红军'
-    case '33':
-      return '一至六级残废军人'
-    case '34':
-      return '医疗照顾人员'
-    case '41':
-      return '学龄前儿童'
-    case '42':
-      return '中小学生'
-    case '43':
-      return '大学生'
-    case '50':
-      return '成年居民(非从业)'
-    case '60':
-      return '老年居民'
-    case '91':
-      return '其他人员'
-  }
+    switch (val) {
+        case '11':
+            return '在职'
+        case '21':
+            return '退休'
+        case '31':
+            return '离休'
+        case '32':
+            return '老红军'
+        case '33':
+            return '一至六级残废军人'
+        case '34':
+            return '医疗照顾人员'
+        case '41':
+            return '学龄前儿童'
+        case '42':
+            return '中小学生'
+        case '43':
+            return '大学生'
+        case '50':
+            return '成年居民(非从业)'
+        case '60':
+            return '老年居民'
+        case '91':
+            return '其他人员'
+    }
 }
 
 export function cptYbState(val) {
-  switch (val) {
-    case '0':
-      return '无效'
-    case '1':
-      return '正常参保'
-    case '2':
-      return '暂停参保'
-    case '3':
-      return '终止参保'
-  }
+    switch (val) {
+        case '0':
+            return '无效'
+        case '1':
+            return '正常参保'
+        case '2':
+            return '暂停参保'
+        case '3':
+            return '终止参保'
+    }
 }
 
 export function cptZyState(val) {
-  return val === '1' ? '在院' : '不在院'
+    return val === '1' ? '在院' : '不在院'
 }
 
 //获取医嘱审核状态
 export function yZauditStatus(val) {
-  switch (val) {
-    case 1:
-      return '<span style="color: orange;">待审核</span>'
-    case 2:
-      return '<span style="color: green;">已通过</span>'
-    case 3:
-      return '<span style="color: red;">已驳回</span>'
-    case 4:
-      return '<span style="color: blue;">数据撤回</span>'
-    default:
-      return '<span style="color:grey">未知</span>'
-  }
+    switch (val) {
+        case 1:
+            return '<span style="color: orange;">待审核</span>'
+        case 2:
+            return '<span style="color: green;">已通过</span>'
+        case 3:
+            return '<span style="color: red;">已驳回</span>'
+        case 4:
+            return '<span style="color: blue;">数据撤回</span>'
+        default:
+            return '<span style="color:grey">未知</span>'
+    }
 }
+
 //住院费用商品描述
 export function describe(val) {
-  switch (val) {
-    case '01':
-      return '药品(小)'
-    case '99':
-      return '药品(大)'
-    default:
-      return '项目'
-  }
+    switch (val) {
+        case '01':
+            return '药品(小)'
+        case '99':
+            return '药品(大)'
+        default:
+            return '项目'
+    }
 }
 
 //费用的状态
 export function costState(val) {
-  switch (val) {
-    case '1':
-      return '录入'
-    case '2':
-      return '上账'
-    default:
-      return '结算'
-  }
+    switch (val) {
+        case '1':
+            return '录入'
+        case '2':
+            return '上账'
+        default:
+            return '结算'
+    }
 }
 
 export function babyOrNot(val) {
-  switch (val) {
-    case '0':
-      return '否'
-    case '2':
-      return '是'
-    default:
-      return '未知'
-  }
+    switch (val) {
+        case '0':
+            return '否'
+        case '2':
+            return '是'
+        default:
+            return '未知'
+    }
 }
 
 export function aerYouSure(val) {
-  switch (val) {
-    case '0':
-      return '否'
-    case '2':
-      return '是'
-    default:
-      return '未知'
-  }
+    switch (val) {
+        case '0':
+            return '否'
+        case '2':
+            return '是'
+        default:
+            return '未知'
+    }
 }
 
 //查看新冠疫苗是否可以预约
 export function enableFlagToString(val) {
-  switch (val) {
-    case '1':
-      return '<span style="color: green;">是</span>'
-    case '0':
-      return '<span style="color: red;">否</span>'
-    case 1:
-      return '<span style="color: green;">是</span>'
-    case 0:
-      return '<span style="color: red;">否</span>'
-  }
+    switch (val) {
+        case '1':
+            return '<span style="color: green;">是</span>'
+        case '0':
+            return '<span style="color: red;">否</span>'
+        case 1:
+            return '<span style="color: green;">是</span>'
+        case 0:
+            return '<span style="color: red;">否</span>'
+    }
 }
 
 export function cptPsnCertType(val) {
-  switch (val) {
-    case '01':
-      return '居民身份证'
-    case '02':
-      return '居民户口簿'
-    case '03':
-      return '护照'
-    case '04':
-      return '军官证'
-    case '05':
-      return '驾驶证'
-    case '06':
-      return '港澳居民来往内地通行证'
-    case '07':
-      return '台湾居民来往内地通行证'
-    case '99':
-      return '其他身份证件'
-  }
+    switch (val) {
+        case '01':
+            return '居民身份证'
+        case '02':
+            return '居民户口簿'
+        case '03':
+            return '护照'
+        case '04':
+            return '军官证'
+        case '05':
+            return '驾驶证'
+        case '06':
+            return '港澳居民来往内地通行证'
+        case '07':
+            return '台湾居民来往内地通行证'
+        case '99':
+            return '其他身份证件'
+    }
 }
 
 export function cptMedType(val) {
-  switch (val) {
-    case '11':
-      return '普通门诊'
-    case '12':
-      return '门诊挂号'
-    case '13':
-      return '急诊'
-    case '14':
-      return '门诊慢特病'
-    case '2101':
-      return '普通住院'
-    case '22':
-      return '外伤住院'
-    case '23':
-      return '转外诊治住院'
-    case '24':
-      return '急诊转住院'
-    case '41':
-      return '定点药店购药'
-    case '51':
-      return '生育门诊'
-    case '52':
-      return '生育住院'
-    case '53':
-      return '计划生育手术费'
-    case '91':
-      return '其他门诊'
-    case '92':
-      return '其他住院'
-    case '93':
-      return '其他购药'
-    case '99':
-      return '地方扩展医疗类别'
-  }
+    switch (val) {
+        case '11':
+            return '普通门诊'
+        case '12':
+            return '门诊挂号'
+        case '13':
+            return '急诊'
+        case '14':
+            return '门诊慢特病'
+        case '2101':
+            return '普通住院'
+        case '22':
+            return '外伤住院'
+        case '23':
+            return '转外诊治住院'
+        case '24':
+            return '急诊转住院'
+        case '41':
+            return '定点药店购药'
+        case '51':
+            return '生育门诊'
+        case '52':
+            return '生育住院'
+        case '53':
+            return '计划生育手术费'
+        case '91':
+            return '其他门诊'
+        case '92':
+            return '其他住院'
+        case '93':
+            return '其他购药'
+        case '99':
+            return '地方扩展医疗类别'
+    }
 }
 
 export function cptYesOrNo(val) {
-  if (val === 1 || val === '1') {
-    return '是'
-  }
-  return '否'
+    if (val === 1 || val === '1') {
+        return '是'
+    }
+    return '否'
 }

+ 9 - 3
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/TianJiaYiZhu.vue

@@ -24,9 +24,12 @@
                        @close="HeLiYongYao.dialog = false"></yao-ping-xiang-qing>
   <el-form ref="yiZhuRef" v-model="yiZhuData" label-width="90px" size="small">
     <el-row>
-      <el-col :span="span" @click="yiZhuMingDialog = true">
+      <el-col :span="span">
         <el-form-item class="bi_tian" label="医嘱名称:" prop="orderName">
-          <div style="border-bottom: 1px solid #000; height: 29px">
+          <el-input v-model="yiZhuData.orderName" placeholder="placeholder"
+                    type="textarea"
+                    v-if="yiZhuData.orderCode === '06054'" :maxlength="50" show-word-limit></el-input>
+          <div style="border-bottom: 1px solid #000; height: 29px;width: 100%" v-else @click="yiZhuMingDialog = true">
             {{ yiZhuData.orderName }}
           </div>
         </el-form-item>
@@ -723,6 +726,7 @@ const baoCunYiZhuClick = () => {
 
 function baoCunYiZhu() {
   let list = yiZhuList.value.filter((item) => {
+
     return item.serial !== '00'
   })
   let data = {
@@ -821,9 +825,11 @@ const baoCunMuBanClick = () => {
         cuoWuXinXi.value = e
       })
 }
+
+
 // 医嘱限制时间不能在之前
 const disabledDate = (time) => {
-  return time.getTime() < Date.now() - 8.64e7
+  return time.getTime() < new Date(huanZheXinXi.value.admissDate).getTime() - 8.64e7
 }
 
 const xuanZhongShuJu = ref([])

+ 65 - 2
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/YiZhuLuRu.vue

@@ -20,6 +20,10 @@
           <span>{{ item.name }}</span>
         </el-option>
       </el-select>
+      医嘱号:
+      <el-input v-model="actOrderNo"
+                style="width: 120px"
+                onkeyup="this.value=this.value.replace(/[^\d]/g,'') "/>
       频率:
       <el-select v-model="pinLv" :disabled="zhuangTai === 8 || zhuangTai === 9" clearable filterable size="small"
                  style="width: 120px">
@@ -61,14 +65,18 @@
                 @currentChange="handleCurrentChange"
                 @sizeChange="handleSizeChange"
                 :height="windowSize.h / 1.5"
+                @rowContextmenu="clickToViewTheDoctorSOrderFee"
                 @selectionChange="huoQuXuanZhongDeShuJu"
                 ref="tableRef">
         <el-table-column fixed="left" type="selection"></el-table-column>
-        <el-table-column fixed="left" label="医嘱号" prop="actOrderNo" width="120">
+        <el-table-column fixed="left" label="医嘱号" prop="actOrderNo"
+                         width="120" show-overflow-tooltip>
           <template #default="scope">
             <el-tag :type="getYiZhuFlag(scope.row.statusFlag)" effect="dark">
               {{ scope.row.actOrderNo }}
             </el-tag>
+            <span v-html="getFeeInfor(scope.row.actOrderNo)">
+                  </span>
           </template>
         </el-table-column>
         <el-table-column fixed="left" width="20">
@@ -154,12 +162,17 @@
         </span>
       </template>
     </el-dialog>
+    <doctor-s-order-fee :data="chargeDetails.data"
+                        v-if="chargeDetails.dialog"
+                        :sum="chargeDetails.sum"
+                        @close="chargeDetails.dialog = false"/>
   </el-container>
 </template>
 
 <script name="YiZhuLuRuZhuJian" setup>
 import {shortcuts} from '@/data/shortcuts'
 import {
+  expensesForGettingADoctorSOrder,
   huoQuYiZhuMingCheng,
   huoQuYiZhuShuJu,
   piLiangXiuGaiTingZhiShiJian,
@@ -168,11 +181,13 @@ import {
 import {fuZhiYiZhu, huanZhePinLvData, huanZheXinXi, youWuXuanZheHuanZhe, zkList} from '../public-js/zhu-yuan-yi-sheng'
 import {getDateRangeFormatDate, getFormatDatetime} from '@/utils/date'
 import store from '@/store'
-import {stringIsBlank, stringNotBlank} from '@/utils/blank-utils'
+import {stringIsBlank} from '@/utils/blank-utils'
 import {getServerDateApi, getTheTransferList} from '@/api/public-api'
 import router from '@/router'
 import XcTable from "@/components/xc/xc-table/XcTable.vue";
 import sleep from "@/utils/sleep";
+import DoctorSOrderFee from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/DoctorSOrderFee.vue";
+import {BizException, ExceptionEnum} from "@/utils/BizException";
 
 const windowSize = computed(() => {
   return store.state.app.windowSize
@@ -192,6 +207,8 @@ const pinLv = ref('')
 let tableRef = $ref(null)
 // 状态
 const zhuangTai = ref(0)
+// 医嘱号
+let actOrderNo = $ref('')
 // 分页
 const yiZhuPage = ref({
   currentPage: 1,
@@ -243,6 +260,7 @@ const chaXunYiZhuClick = (total) => {
     frequCode: pinLv.value,
     orderName: orderName,
     zhuangTai: zhuangTai.value,
+    actOrderNo: actOrderNo
   }
   huoQuYiZhuShuJu(data)
       .then((res) => {
@@ -380,6 +398,46 @@ const dianJiFuZhuXuanZhongYiZhu = () => {
   fuZhiYiZhu.value = xuanZhongDeShuJu.value
 }
 
+/**
+ * 右键点击查看医嘱产生的费用
+ * @param val
+ */
+let doctorSOrderFee = $ref({
+  data: {},
+  problem: {},
+  totalCost: {}
+})
+let chargeDetails = $ref({
+  dialog: false,
+  data: [],
+  sum: {}
+})
+const clickToViewTheDoctorSOrderFee = (val) => {
+  chargeDetails.data = doctorSOrderFee.data[val.actOrderNoStr]
+  if (chargeDetails.data) {
+    chargeDetails.sum = doctorSOrderFee.totalCost[val.actOrderNoStr]
+    chargeDetails.dialog = true
+  } else {
+    BizException(ExceptionEnum.MESSAGE_ERROR, '该医嘱还没有产生费用')
+  }
+}
+const getFeeInfor = (actOrderNo) => {
+  try {
+    let problem = doctorSOrderFee.problem[actOrderNo]
+    if (typeof problem === 'undefined') {
+      problem = ''
+    } else {
+      problem = '有' + problem
+    }
+
+    return `<br>金额:${doctorSOrderFee.totalCost[actOrderNo].sum} 元,
+    ${doctorSOrderFee.totalCost[actOrderNo].amount}条,
+    <br/>${problem}`
+  } catch (e) {
+    return ""
+  }
+}
+
 onMounted(async () => {
   await sleep(200)
   // addYiZhuClick()
@@ -397,6 +455,11 @@ onActivated(() => {
 watch(
     () => huanZheXinXi.value,
     () => {
+      expensesForGettingADoctorSOrder(huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes).then((res) => {
+        // console.log(res)
+        doctorSOrderFee = res
+      })
+
       getServerDateApi().then((res) => {
         if (dateRange.value === null) {
           dateRange.value = []