Browse Source

电子病历现在可以强制保存了

xiaochan 3 weeks ago
parent
commit
1b80a867d4

BIN
src/assets/why-emr-socket-cobbect/doctor-a.png


BIN
src/assets/why-emr-socket-cobbect/doctor-b.png


+ 44 - 6
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/EmrMain.vue

@@ -181,6 +181,7 @@ import { useSystemStore } from "@/pinia/system-store";
 import * as socket from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/socket/useEmrSocket";
 import env from "@/utils/setting";
 import { useDialog } from "@/components/cy/CyDialog/index";
+import WhySocketConnect from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/components/WhySocketConnect.vue";
 
 const EmrFirstPageOfMedicalRecord = defineAsyncComponent(
   () =>
@@ -535,6 +536,15 @@ declare type saveType = {
   documentData: any;
 };
 
+function openWhySocketConnect() {
+  useDialog(WhySocketConnect, {
+    dialogProps: {
+      fullscreen: true,
+      title: "为什么需要连接服务器",
+    },
+  });
+}
+
 // 点击保存病历
 const clickSaveData = async () => {
   if (!emrConfig.value.editor) return;
@@ -547,12 +557,31 @@ const clickSaveData = async () => {
   waitForLoadingToComplete();
   if (stringNotBlank(editor.documentData._id)) {
     if (emrStore.documentSocket.status() !== "OPEN") {
-      await CyMessageBox.alert({
-        message: "未连接上服务器,无法保存,请刷新页面,或重新打开病历。",
-        title: "无法保存",
-        type: "warning",
-      }).catch(() => {});
-      return;
+      await ElMessageBox.confirm(
+        <div>
+          <div>
+            是否强制保存病历,请注意强制保存,可能会导致其他医生书写的片段不见,主要是病程记录,务必确认在自己之前没有其他医生在书写病历
+          </div>
+          <div>
+            <span
+              class="emr_span-to-a"
+              onClick={() => {
+                openWhySocketConnect();
+              }}
+            >
+              查看为什么要这样做
+            </span>
+          </div>
+        </div>,
+        "未连接上服务器",
+        {
+          dangerouslyUseHTMLString: true,
+          type: "error",
+          confirmButtonText: "强制保存",
+        }
+      ).catch(() => {
+        throw new Error("取消保存");
+      });
     }
   }
   // 判断是否有必填项目
@@ -1962,4 +1991,13 @@ iframe {
     margin-left: 5px;
   }
 }
+
+.emr_span-to-a {
+  color: #0a84fd;
+  cursor: pointer;
+}
+
+.emr_span-to-a:hover {
+  text-decoration: underline;
+}
 </style>

+ 75 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/components/WhySocketConnect.vue

@@ -0,0 +1,75 @@
+<script setup lang="ts">
+import aimg from "@/assets/why-emr-socket-cobbect/doctor-a.png";
+import bimg from "@/assets/why-emr-socket-cobbect/doctor-b.png";
+</script>
+
+<template>
+  <div class="emr-socket_connect-content">
+    <div class="layout_container">
+      <header class="emr-socket_connect-doctor--header">A 医生</header>
+      <div>
+        A 医生写的病历如下:其中<span class="emr-socket_connect-redspan"
+          >副主任医师的查房记录</span
+        >为新写的片段
+        <img :src="aimg" alt="" />
+      </div>
+    </div>
+    <div
+      style="
+        width: 5px;
+        margin: 0 5px;
+        border: 1px solid var(--el-border-color);
+      "
+    ></div>
+    <div class="layout_container">
+      <header class="emr-socket_connect-doctor--header">B 医生</header>
+      <div>
+        <p>
+          B医生写的病历如下:其中<span class="emr-socket_connect-redspan">
+            日常病程记录 </span
+          >为B医生要新写的病历,但是因为B医生没有同步A医生的数据,所以B医生无法看到A医生写的,因为病历就相当于一个
+          word
+          文档,点击保存时会以最后一次点击保存的数据为准,此时如果B医生保存了病历那么就会导致A医生写的【副主任医师查房记录】给覆盖掉。
+        </p>
+        <p>
+          在B医生保存后,A医生又保存了病历,那么B医生写的【日常病程记录】就不见了,只有【副主任医师的查房记录】,所以这就是为什么一份病历只能一台机器在书写。
+        </p>
+        <p>
+          至于为什么有时会连接不到服务器,有可能是在更新系统也有可能是您的电脑有问题。
+        </p>
+        <p>
+          <span class="emr-socket_connect-redspan">
+            请一定要注意,如果提示了未连接服务器,无法保存电子病历,且您还想强制保存病历的话,务必确保在您之前没人编辑病历,不然没有及时更新病历的话会导致其他医生书写的病历被覆盖。
+          </span>
+        </p>
+        <img :src="bimg" alt="" />
+      </div>
+    </div>
+  </div>
+</template>
+
+<style lang="scss">
+.emr-socket_connect-content {
+  height: 100%;
+  display: flex;
+  width: 100%;
+
+  img {
+    width: 90%;
+  }
+
+  p {
+    text-indent: 2em;
+  }
+
+  .emr-socket_connect-doctor--header {
+    text-align: center;
+    font-size: 16px;
+    font-weight: 600;
+  }
+
+  .emr-socket_connect-redspan {
+    color: red;
+  }
+}
+</style>

+ 19 - 3
src/views/mz-emr/emr-v2/index.tsx

@@ -361,15 +361,31 @@ export const useMzEmrStore = () => {
       }
       return null;
     },
+    async unConnectDialog() {
+      if (editSocket.socket.status.value === "OPEN") {
+        return;
+      }
+      await ElMessageBox.confirm(
+        "未连接服务器无法保存,是否强制保存。",
+        "提示",
+        {
+          type: "error",
+        }
+      )
+        .then(() => {
+          return;
+        })
+        .catch(() => {
+          throw new Error("取消保存");
+        });
+    },
     async save() {
       if (store.isSave) return;
       try {
         if (store.currentEditParams.emrDocumentId === null) {
           BizException(ExceptionEnum.MESSAGE_ERROR, "请先选择病历");
         }
-        if (editSocket.socket.status.value !== "OPEN") {
-          BizException(ExceptionEnum.MESSAGE_ERROR, "未连接服务器无法保存");
-        }
+        await tmpEmrFun.unConnectDialog();
         store.isSave = true;
 
         try {