Browse Source

优化数据提取和三级医生设置

xiaochan 2 years ago
parent
commit
1ce79fb920

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

@@ -239,14 +239,6 @@ export function piLiangXiuGaiTingZhiShiJian(data) {
     })
 }
 
-export function jiaoYan(data) {
-    return request({
-        url: '/RationalUse/jiaoYan',
-        method: 'post',
-        data,
-    })
-}
-
 export function expensesForGettingADoctorSOrder(patNo, times) {
     return request({
         url: url + '/expensesForGettingADoctorSOrder',

+ 1 - 1
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/DaYingJianCha.vue

@@ -73,7 +73,7 @@
           <div class="zhu-yao-ge-zi">
             <div class="zuo-ge-zi">
             <span>
-            病摘要<br>
+            病摘要<br>
             申请检查
             要求:
             </span>

+ 87 - 20
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/EmrMain.vue

@@ -22,7 +22,7 @@
 
       <emr-assistant :data="openAssistant" :to-fill-in-data="clickToFillInData"/>
       <el-switch v-model="reviewMode" active-color="#ff4949" active-text="关闭审阅" :active-value="false"
-                 inactive-color="#13ce66" inactive-text="开启审阅" :inactive-value="true"/>
+                 inactive-color="#13ce66" @change="isRevisionMode" inactive-text="开启审阅" :inactive-value="true"/>
 
     </el-header>
 
@@ -72,7 +72,7 @@ import {onBeforeRouteLeave} from "vue-router";
 import {getUuid} from "@/api/public-api";
 import {
   deletePatientEmrByDocumentId,
-  getDrgIntelligentGrouping, insertEmrData,
+  getDrgIntelligentGrouping, getExtractDataElement, insertEmrData,
   submitMedicalRecord
 } from "@/api/zhu-yuan-yi-sheng/emr-patient";
 import {useDocumentVisibility} from "@vueuse/core";
@@ -131,7 +131,9 @@ let jumpPositioning = {
 }
 let wardList = []
 // 创建人 id
-let createId = null
+let createId = null;
+// 获取提取到的数据。
+let extractData = {}
 
 // 点击保存病历
 const clickSaveData = async () => {
@@ -167,6 +169,7 @@ const clickSaveData = async () => {
     let res = await insertEmrData(data)
     currentEmr.value.saveDocument(data).then(emrRes => {
       // 把提取到的数据放到 patientData 中.
+      extractData = res
       Object.assign(patientData, res)
       isEditorChange = false
       emrSidebarRef.value.queryData()
@@ -251,11 +254,12 @@ const clickDelete = () => {
     // 电子病历删除
     await currentEmr.value.deleteDocument(documentId)
     if (res.length > 0) {
-      console.log('删除的数据', res)
       for (let i = 0; i < res.length; i++) {
         let item = res[i]
         // 删除提取到的数据源
         delete patientData[item]
+        // 删除提取到的数据
+        delete extractData[item]
       }
     }
     isEditorChange = false
@@ -414,13 +418,29 @@ const setEditorModeFun = () => {
   if (emrConfig.value.editor) {
     // 设置成编辑模式
     currentEmr.value.callMethod('setEditorMode', 'free')
-    if (categoryCode.includes('shoucibingchengjilu')) {
-      // 如果是病程记录就不用锁住,因为要根据片段锁住
-      currentEmr.value.callMethod('setEditorMode', 'free')
-    } else if (createId !== null && createId !== userData.code) {
+    // 如果不是首次病程记录就需要执行下面的代码
+    if (!categoryCode.includes('shoucibingchengjilu')) {
+      if (createId === null) {
+        return
+      }
       // 创建人不是自己就只能看
-      currentEmr.value.callMethod('setEditorMode', 'readonly')
+      if (doctorLevel === 1 && createId !== userData.code) {
+        currentEmr.value.callMethod('setEditorMode', 'readonly');
+      }
+      if (doctorLevel === 2) {
+        // 不能修改三级医生写的病历
+        if (createId === extractFields('主任医生编码')) {
+          currentEmr.value.callMethod('setEditorMode', 'readonly');
+        } else {
+          currentEmr.value.callMethod('setEditorMode', 'free');
+        }
+      }
+      // 医生等级 3 没有限制
+      if (doctorLevel === 3) {
+        currentEmr.value.callMethod('setEditorMode', 'free');
+      }
     }
+
   } else {
     currentEmr.value.callMethod('setEditorMode', 'readonly')
   }
@@ -468,20 +488,35 @@ const courseSegmentLocking = () => {
           emrCategoryCode: categoryCode,
           jump: true
         })
-        // select dept_director /* 主任医生*/,
-        // consult_physician /*主治医生*/
-        //     refer_physician /*管床医生*/,
-        // from zy_actpatient;
-        let editorCode = values['编辑者']?.value[0]?.code
-        if (editorCode) {
-          if (editorCode !== loginUserCode) {
-            node.view.setReadonly(true);
-            node.view.setDeletable(false);
+        emrSidebarRef.value.diseaseDurationRecordTime(documentId, courseTitles)
+        if (props.editor) {
+          let editorCode = values['编辑者']?.value[0]?.code;
+          if (editorCode) {
+            if (doctorLevel === 1) {
+              if (editorCode !== loginUserCode) {
+                node.view.setReadonly(true);
+                node.view.setDeletable(false);
+              }
+            }
+            if (doctorLevel === 2) {
+              if (editorCode === extractFields('主任医生编码')) {
+                currentEmr.value.callMethod('setEditorMode', 'readonly');
+              } else {
+                currentEmr.value.callMethod('setEditorMode', 'free');
+              }
+            }
+            if (doctorLevel === 3) {
+              currentEmr.value.callMethod('setEditorMode', 'free');
+            }
+
           }
+        } else {
+          node.view.setReadonly(true);
+          node.view.setDeletable(false);
         }
       }
     }
-    emrSidebarRef.value.diseaseDurationRecordTime(documentId, courseTitles)
+
   } else {
     for (let node of root.getChildren()) {
       if (node.view && node.type === 'area') {
@@ -503,11 +538,12 @@ const deleteDataElement = () => {
 
 // 重新设置提取的数据, 这里是强制替换
 const reQueryPatientInformation = () => {
+  console.log(extractData)
   // 如果是只读模式就不触发这个
   if (!readonlyPattern()) {
     // 如果没有文档 id 就说明是
     if (documentId) {
-      editor.setValues(patientData)
+      editor.setValues(extractData)
     }
   }
 }
@@ -570,7 +606,35 @@ const readonlyPattern = () => {
   return editor !== null && editor.getEditorMode() === 'readonly';
 }
 
+// 判断 一级 二级 三级医生
+let doctorLevel = 1;
+const doctorLevelFunc = () => {
+  if (extractFields('管床医生编码') === userData.code) {
+    doctorLevel = 1
+  } else if (extractFields('主治医生编码') === userData.code) {
+    doctorLevel = 2
+  } else if (extractFields('主任医生编码') === userData.code) {
+    doctorLevel = 3
+  }
+}
+
+// 提取字段
+const extractFields = (val) => {
+  if (patientData[val] === null) {
+    return ''
+  } else {
+    return patientData[val]
+  }
+}
+
+const isRevisionMode = () => {
+  editor.isRevisionMode(reviewMode)
+}
+
 onMounted(() => {
+  getExtractDataElement(props.huanZheXinXi.inpatientNo, props.huanZheXinXi.admissTimes).then((res) => {
+    extractData = res
+  })
   nextTick(async () => {
     emrSidebarRef.value.queryData()
     patientId = props.huanZheXinXi.inpatientNo
@@ -579,6 +643,9 @@ onMounted(() => {
     if (emrConfig.value.editor) {
       emrSnippetRef.value.setPatientData(patientData)
     }
+    doctorLevelFunc()
+
+    console.log(patientData)
     emrRef.value.parentElement.emr = currentEmr.value
     window.addEventListener('beforeunload', monitorPageRefresh, {capture: true})
   })