ソースを参照

优化电子病历,和出院带药

DESKTOP-0GD05B0\Administrator 2 年 前
コミット
576d26adc3

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

@@ -280,3 +280,10 @@ export function copyTheDoctorSOrder(orderNo) {
     })
 }
 
+export function getFrequencyCount(code) {
+    return request({
+        url: url + '/getFrequencyCount',
+        method: 'get',
+        params: {code}
+    })
+}

+ 0 - 1
src/components/zhu-yuan-yi-sheng/emr/web-socket/EmrWebSocket.vue

@@ -224,7 +224,6 @@ onBeforeUnmount(() => {
   clearSocket()
 })
 
-
 defineExpose({
   medicalRecordSwitching,
   documentChange,

+ 11 - 0
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/report-of-infectious-diseases/DialogDiseases.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script setup name='DialogDiseases'>
+
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 21 - 0
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/report-of-infectious-diseases/ReportOfInfectiousDiseases.vue

@@ -0,0 +1,21 @@
+<template>
+  <button>传染病上报</button>
+  <dialog-diseases/>
+</template>
+
+<script setup name='ReportOfInfectiousDiseases'>
+import DialogDiseases from "./DialogDiseases.vue";
+
+const props = defineProps({
+  patInfo: {
+    type: Object,
+    default: {}
+  }
+})
+
+
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 50 - 5
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/yz-edit/YzEditor.vue

@@ -60,6 +60,7 @@
                            :controls="false"
                            ref="doseRef"
                            id="yz_dose"
+                           @keydown="keyDown"
                            :precision="dosePrecision"
                            style="width: 110px"
                            @change="jiSuanLingLiang"/>
@@ -74,7 +75,16 @@
         </div>
         <div>
           领量:
-          <span v-if="yiZhuData.serial === '00'">
+          <span v-if="currentPage === 'takeMedicine'">
+              <el-input-number
+                  style="width: 60px"
+                  v-model="yiZhuData.drugQuan"
+                  :min="1"
+                  :max="maxDose"
+                  :controls="false"/>
+            <span style="color: red">{{ maxDose + yiZhuData.miniUnitName }}</span>
+          </span>
+          <span v-else-if="yiZhuData.serial === '00'">
             <el-input-number
                 style="width: 60px"
                 v-model="yiZhuData.drugQuan"
@@ -247,7 +257,7 @@
 <script setup name='YzEditor'>
 import {
   confirmOrders, copyTheDoctorSOrder,
-  enterOrders, getCostFreeDosing,
+  enterOrders, getCostFreeDosing, getFrequencyCount,
   getOrderNo,
   getParentOrders,
   huoQuFeiYongXinXi,
@@ -283,6 +293,7 @@ import {ElMessageBox} from "element-plus";
 import YzDialog from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/dialog/YzDialog";
 import {logoutShortcut, xcHotKey} from "@/utils/xckeydown";
 import Dig from "@/utils/math";
+import {subtractTime} from "@/utils/date";
 
 
 const props = defineProps({
@@ -311,6 +322,7 @@ const searchOrders = (val) => {
 const tiShiBiaoTi = ref([])
 // 填充数据
 const xuanZhongFeiYong = async (row, laiyuan = 1) => {
+  maxDose = row.drugQuan
   if (row.serial === '0000' && row.groupNo === '0000') {
     props.openGroupOrderTemplate(row.orderCode);
     return;
@@ -465,6 +477,7 @@ const xuanZhongFeiYong = async (row, laiyuan = 1) => {
       orderName: yiZhuData.value.parentNoName,
     })
   }
+  await cydySetMaxDose()
 
   // 如果搜索了医嘱那么 这里就需要 重新赋值,不认表格就没办法变化了,把原来的换掉
   for (let i = 0, len = yzData.value.length; i < len; i++) {
@@ -489,8 +502,8 @@ const pinLvRemoteMethod = (val) => {
 }
 
 /*计算领量*/
-const jiSuanLingLiang = (val) => {
-  // 出院带药就不要计算领量了
+const jiSuanLingLiang = async (val) => {
+  // 出院带药
   if (yiZhuData.value.selfBuy === '4') {
     return;
   }
@@ -844,9 +857,41 @@ const dosePrecision = computed(() => {
 })
 
 // 频率点击
-const pingLvRowClick = (val) => {
+const pingLvRowClick = async (val) => {
   if (isCydy()) {
     yiZhuData.value.instruction = val.name;
+    await cydyDrugQuan()
+  }
+}
+
+let frequencyCount = {}
+let maxDose = $ref(1)
+const keyDown = async () => {
+  // 出院带药
+  if (yiZhuData.value.selfBuy === '4') {
+    await cydyDrugQuan()
+  }
+}
+const cydyDrugQuan = async (flag = true) => {
+  if (frequencyCount.code !== yiZhuData.value.frequCode) {
+    frequencyCount = await getFrequencyCount(yiZhuData.value.frequCode);
+  }
+  let end = yiZhuData.value.frequCode === 'ONCE' ? yiZhuData.value.startTime : yiZhuData.value.endTime
+  let day = subtractTime(end, yiZhuData.value.startTime)
+  if (day <= 0) {
+    // 最小一天
+    day = 1
+  }
+  let dose = Math.ceil(Dig.division(yiZhuData.value.dose, jiLiangValue.value));
+  maxDose = (day * frequencyCount.count) * dose
+  if (flag) {
+    yiZhuData.value.drugQuan = maxDose;
+  }
+}
+
+const cydySetMaxDose = async () => {
+  if (isCydy()) {
+    await cydyDrugQuan(false)
   }
 }
 

+ 3 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/YiZhuLuRu.vue

@@ -23,6 +23,7 @@
       <button @click="confirmAssociationClick" title="关联医嘱">关联</button>
       <button @click="openRationalDrugUse" title="进入到合理用药的页面">合理用药</button>
       <button @click="allergen.open()" title="患者过敏源信息维护">患者过敏源信息维护</button>
+      <report-of-infectious-diseases/>
     </div>
     <div style="height: 5px"/>
     <yz-editor :patient-info="huanZheXinXi"
@@ -117,6 +118,8 @@ import OrderProgress from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/OrderProg
 import {getEmrUrl} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
 import RationalDrugUseWindow from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/RationalDrugUseWindow.vue";
 import YzTableV2 from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/table/YzTableV2.vue";
+import ReportOfInfectiousDiseases
+  from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/report-of-infectious-diseases/ReportOfInfectiousDiseases.vue";
 
 const windowSize = computed(() => {
   return store.state.app.windowSize