Browse Source

优化关联医嘱操作,优化作废医嘱操作。

xiaochan 2 years ago
parent
commit
9ea40ff4d7

+ 1 - 0
src/App.vue

@@ -267,6 +267,7 @@ ul, li {
 .el-dialog__header {
   border-bottom: 1px solid #ebeef5;
   background-color: #f8f8f8;
+  margin-right: 0 !important;
   border-radius: 4px;
 }
 

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

@@ -58,15 +58,6 @@ export function deleteMultipleOrders(data) {
 }
 
 
-export function voidOrders(orderNo, reasonForCancellation) {
-    return request({
-        url: url + '/voidOrders',
-        method: 'get',
-        params: {orderNo, reasonForCancellation}
-    })
-}
-
-
 export function confirmOrders(data) {
     return request({
         url: url + '/confirmOrders',

+ 13 - 6
src/components/zhu-yuan-yi-sheng/YzTag.vue

@@ -15,8 +15,8 @@
 <script setup name="YzTag">
 import {
   frequCodeEnum,
-  queryParam,
-  youWuXuanZheHuanZhe
+  queryParam, tempYzData,
+  youWuXuanZheHuanZhe, yzData, yzMitt
 } from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
 import {getDrgIntelligentGrouping} from "@/api/zhu-yuan-yi-sheng/emr-patient";
 import router from "@/router";
@@ -32,11 +32,18 @@ const props = defineProps({
 /**
  * 医嘱筛选
  *
- * @param flag  {@link frequCodeEnum}
+ * @param flag
  */
-const yzSift = (flag) => {
-  queryParam.value.frequCode = flag
-  router.push('/inpatient/zhuYuanYiSheng/yiZhuLuRu')
+const yzSift = async (flag) => {
+  await router.push('/inpatient/zhuYuanYiSheng/yiZhuLuRu');
+  await nextTick();
+  queryParam.value.frequCode = flag;
+  if (flag === frequCodeEnum.temporary) {
+    queryParam.value.displayRange = 0;
+    yzMitt.emit('tableScroll', tempYzData.value.length);
+  } else {
+    yzMitt.emit('tableScroll', 0);
+  }
 }
 
 let pathList = $ref([

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

@@ -276,7 +276,7 @@ import {
   frequCodeEnum,
   yaoPinPingLvData,
   geiYaoFangShiData,
-  yzMitt, huanZheXinXi, frequencyConfig, addTempOrderNo, yiZhuDataInit, setYzOrderGroup
+  yzMitt, huanZheXinXi, frequencyConfig, addTempOrderNo, yiZhuDataInit, setYzOrderGroup, setOrderDataAndTwinkle
 } from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
 import {ElMessageBox} from "element-plus";
 import YzDialog from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/dialog/YzDialog";
@@ -288,6 +288,7 @@ import DoctorAuthorization
   from "@/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/components/DoctorAuthorization.vue";
 import sleep from "@/utils/sleep";
 import XEUtils from 'xe-utils'
+import res from "@babel/standalone";
 
 const props = defineProps({
   patientInfo: {
@@ -645,36 +646,7 @@ const toAddAnOrder = async () => {
     // 数据完全没问题
     if (res != null && res.code && res.code === 200) {
       errorMessageData.value = {}
-      let temp = res.data
-      let tempMap = new Map()
-      XEUtils.arrayEach(temp, (item) => {
-        tempMap.set(item.actOrderNo, item)
-      })
-
-      for (let i = yzData.value.length - 1; i >= 0; i--) {
-        let item = yzData.value[i];
-        if (item.statusFlag !== '1') {
-          continue;
-        }
-        let orderNo = item.actOrderNo;
-        if (tempMap.has(orderNo)) {
-          yzData.value[i] = tempMap.get(orderNo)
-          tempMap.delete(orderNo)
-        }
-        if (tempMap.size === 0) {
-          break;
-        }
-      }
-
-      if (tempMap.size > 0) {
-        let list = Array.from(tempMap.values());
-        yzData.value.push(...list);
-      }
-
-      await nextTick()
-      setYzOrderGroup()
-      // 设置高亮
-      yzMitt.emit('setOrderNoTwinkle', yiZhuData.value.actOrderNo);
+      await setOrderDataAndTwinkle(yiZhuData.value.actOrderNo, res.data)
     }
     setTheTemporaryVariableMedicalOrder()
   } catch (e) {
@@ -683,7 +655,6 @@ const toAddAnOrder = async () => {
   return true
 }
 
-
 /**
  * 点击了确认医嘱
  */

+ 3 - 3
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/yz-header/YzQueryCondition.vue

@@ -225,7 +225,7 @@ import {
   associateOrders, clearAssociate, confirmLoading,
   errorMsg, huanZheXinXi,
   isCydy,
-  queryParam, yiZhuData, yiZhuDataInit, youWuXuanZheHuanZhe,
+  queryParam, setOrderDataAndTwinkle, yiZhuData, yiZhuDataInit, youWuXuanZheHuanZhe,
   yzData, yzMitt
 } from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
 import {BizException, ExceptionEnum} from "@/utils/BizException";
@@ -421,9 +421,9 @@ const confirmAssociationClick = () => {
   ElMessageBox.confirm('请确认是否要关联这些医嘱。', '提示', {
     type: 'warning'
   }).then(() => {
-    associateOrdersApi(associateOrders.value).then((res) => {
+    associateOrdersApi(associateOrders.value).then(async (res) => {
       clearAssociate()
-      yzMitt.emit('queryYz')
+      await setOrderDataAndTwinkle(res[0].actOrderNo, res)
     })
   }).catch(() => {
   })

+ 40 - 6
src/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng.ts

@@ -386,18 +386,19 @@ export function yzDataToTree(data: yzType[]): yzType[] {
         }
         setSerialName(item);
         trimString(item);
+        item.orderGroup = "";
     })
 
     XEUtils.arrayEach(children, (item) => {
         // 子节点的 key 值
-        let key: number = item.actOrderNo
-        noParent.delete(key)
+        let key: number = item.actOrderNo;
         if (tempMap.has(item.parentNo)) {
-            let parent = tempMap.get(item.parentNo)
+            noParent.delete(key);
+            let parent = tempMap.get(item.parentNo);
             parent.orderGroup = "┌";
-            parent.children = parent.children || []
-            parent.children.push(item)
-            item.orderGroup = "丨"
+            parent.children = parent.children || [];
+            parent.children.push(item);
+            item.orderGroup = "丨";
         }
     })
     // 判断 noParent 不为空
@@ -426,6 +427,39 @@ export function yzDataToTree(data: yzType[]): yzType[] {
     return list
 }
 
+export const setOrderDataAndTwinkle = async (order, data: yzType[]) => {
+    let temp = data
+    let tempMap = new Map()
+    XEUtils.arrayEach(temp, (item) => {
+        tempMap.set(item.actOrderNo, item)
+    })
+
+    for (let i = yzData.value.length - 1; i >= 0; i--) {
+        let item = yzData.value[i];
+        if (item.statusFlag !== '1') {
+            continue;
+        }
+        let orderNo = item.actOrderNo;
+        if (tempMap.has(orderNo)) {
+            yzData.value[i] = tempMap.get(orderNo)
+            tempMap.delete(orderNo)
+        }
+        if (tempMap.size === 0) {
+            break;
+        }
+    }
+
+    if (tempMap.size > 0) {
+        let list = Array.from(tempMap.values());
+        yzData.value.push(...list);
+    }
+
+    await nextTick()
+    setYzOrderGroup()
+    // 设置高亮
+    yzMitt.emit('setOrderNoTwinkle', order);
+}
+
 // 设置项目名称
 function getSerial(val: string): string {
     val = XEUtils.trim(val)

+ 13 - 10
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/YiZhuLuRu.vue

@@ -59,7 +59,7 @@ import {
   clickOnThePatient,
   drugManual,
   associateOrders,
-  youWuXuanZheHuanZhe, yzData, errorMsg, yzMitt, geiYaoFangShiData, yaoPinPingLvData, confirmLoading
+  youWuXuanZheHuanZhe, yzData, errorMsg, yzMitt, geiYaoFangShiData, yaoPinPingLvData, confirmLoading, setYzOrderGroup
 } from '../public-js/zhu-yuan-yi-sheng'
 import store from '@/store'
 import {stringIsBlank, stringNotBlank} from '@/utils/blank-utils'
@@ -158,7 +158,7 @@ const rowClick = (val) => {
 
 }
 
-const orderQuash = (val) => {
+const orderQuash = async (val) => {
   if (val.statusFlag === '2') {
     BizException(ExceptionEnum.LOGICAL_ERROR, "确认医嘱无需撤销删除即可。");
   }
@@ -171,7 +171,7 @@ const orderQuash = (val) => {
     confirmButtonText: '确定',
     cancelButtonText: '取消',
     inputValidator: (val) => {
-      val = val.trim()
+      val = val.trim();
       if (val === null || val.length < 1 || val.length > 50) {
         return false;
       }
@@ -180,17 +180,20 @@ const orderQuash = (val) => {
     inputErrorMessage: '作废原因,不能为空,最多可输入20个字。',
     closeOnPressEscape: false,
     closeOnClickModal: false
-  }).then(({value}) => {
-    applicationForRevocation({
+  }).then(async ({value}) => {
+    let res = await applicationForRevocation({
       actOrderNo: val.actOrderNo,
       reqRemark: value,
       patNo: val.inpatientNo,
       times: val.admissTimes
-    }).then(res => {
-      if (res === 1) {
-        yzMitt.emit('queryYz')
-      }
-    })
+    });
+    // res === 1的意思是这个医嘱被删除了
+    if (res === 1) {
+      XEUtils.remove(yzData.value, (item) => {
+        return item.actOrderNo === val.actOrderNo;
+      })
+      setYzOrderGroup();
+    }
   })
 }