| 
					
				 | 
			
			
				@@ -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}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }) 
			 |