|
@@ -122,7 +122,6 @@
|
|
|
<script setup lang="ts">
|
|
|
import {nextTick, onDeactivated, onMounted, provide, ref, watch} from "vue";
|
|
|
import {
|
|
|
- copyAsDataSource,
|
|
|
copyEnum,
|
|
|
delEmrCopy,
|
|
|
emrConfig,
|
|
@@ -135,7 +134,7 @@ import {
|
|
|
showIframe,
|
|
|
showIframeIsList
|
|
|
} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
|
|
|
-import {ElMessage, ElMessageBox} from "element-plus";
|
|
|
+import {ElMessage} from "element-plus";
|
|
|
import {BizException, ExceptionEnum} from "@/utils/BizException";
|
|
|
import {onBeforeRouteLeave} from "vue-router";
|
|
|
import {getServerDateApi, getUuid} from "@/api/public-api";
|
|
@@ -163,7 +162,14 @@ import {
|
|
|
} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/force-refresh-func";
|
|
|
import warning from '../../../../../assets/warning.png'
|
|
|
import {DataElements, EditorMode, EditType, Runtime} from "@/utils/emr/edit";
|
|
|
-import {componentClick, getBcjlUserInfo, useEmrInit, UseEmrInitReturn} from "@/utils/emr/emr-init-v2";
|
|
|
+import {
|
|
|
+ componentClick,
|
|
|
+ getBcjlUserInfo,
|
|
|
+ parsingFragmentDataElements,
|
|
|
+ RevisionShowMode,
|
|
|
+ useEmrInit,
|
|
|
+ UseEmrInitReturn
|
|
|
+} from "@/utils/emr/emr-init-v2";
|
|
|
import {reportQueryCenterApiByGet} from "@/api/base-data/report-center";
|
|
|
import type {PatientDiagnosisIsCrb} from "@/api/zhu-yuan-yi-sheng/infectious-diseasest";
|
|
|
import {infectiousDiseasesAreRequired,} from "@/api/zhu-yuan-yi-sheng/infectious-diseasest";
|
|
@@ -181,9 +187,6 @@ import {
|
|
|
useHistoricalData
|
|
|
} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/components/emr-function/useEmrFunction";
|
|
|
import PatientInfoView from "@/components/zhu-yuan-yi-sheng/public/PatientInfoView.vue";
|
|
|
-import {
|
|
|
- useEmrCache
|
|
|
-} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/useEmrCache/useEmrCache";
|
|
|
|
|
|
const EmrWebSocket = defineAsyncComponent(() =>
|
|
|
import("@/components/zhu-yuan-yi-sheng/emr/web-socket/EmrWebSocket.vue"))
|
|
@@ -281,6 +284,11 @@ let emrCodeEnum = {
|
|
|
courseRecord: 'shoucibingchengjilu'
|
|
|
}
|
|
|
|
|
|
+function setRevisionShowMode(val: RevisionShowMode = RevisionShowMode.嵌入) {
|
|
|
+ reviewMode.value = val;
|
|
|
+ editor!.setRevisionShowMode(val);
|
|
|
+}
|
|
|
+
|
|
|
const isCourse = () => {
|
|
|
return categoryCode.value === 'shoucibingchengjilu' || categoryCode.value === 'xinshengerjianhujilu';
|
|
|
}
|
|
@@ -368,12 +376,10 @@ const emrEvent = {
|
|
|
fragmentsCannotBeInserted = true
|
|
|
//插入的内容是区域片段
|
|
|
if (nodes.length > 0 && nodes[0].view && nodes[0].view.type === 'area') {
|
|
|
- let view = nodes[0].view
|
|
|
- let modelService = editor.ModelService;
|
|
|
- let node = view.model
|
|
|
- let walker = modelService.createTreeWalker(node);
|
|
|
- let values = modelService.getElementsDataFromWalker(walker, '编辑者');
|
|
|
- let newDate = await getServerDateApi()
|
|
|
+ const view = nodes[0].view
|
|
|
+ const node = view.model
|
|
|
+ const values = parsingFragmentDataElements(editor, node)
|
|
|
+ const newDate = await getServerDateApi()
|
|
|
// @ts-ignore
|
|
|
view.setAttribute('fragment', {
|
|
|
name: values['查房标题'].value,
|
|
@@ -388,14 +394,10 @@ const emrEvent = {
|
|
|
fragmentsCannotBeInserted = false
|
|
|
},
|
|
|
"areaFocus": (evt, view) => {
|
|
|
- let modelService = editor?.ModelService;
|
|
|
- let node = view.model
|
|
|
- let walker = modelService?.createTreeWalker(node);
|
|
|
- let values = modelService?.getElementsDataFromWalker(walker, '编辑者');
|
|
|
- let editorCode = getBcjlUserInfo(values).code;
|
|
|
- if (editorCode) {
|
|
|
- openTheTraceByUser(editorCode)
|
|
|
- }
|
|
|
+ const node = view.model
|
|
|
+ const values = parsingFragmentDataElements(editor, node)
|
|
|
+ const editorCode = getBcjlUserInfo(values).code;
|
|
|
+ openTheTraceByUser(editorCode)
|
|
|
},
|
|
|
"beforeCopy": (evt, data) => {
|
|
|
if (!copy) {
|
|
@@ -410,6 +412,20 @@ const emrEvent = {
|
|
|
return copy
|
|
|
},
|
|
|
"componentClick": (evt, comp) => componentClick(evt, comp, patientData.value),
|
|
|
+ "beforeRevisionAccept": (evt, data) => {
|
|
|
+ try {
|
|
|
+ return beforeRevisionAccept(evt, data)
|
|
|
+ } catch {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "beforeRevisionRefuse": (evt, data) => {
|
|
|
+ try {
|
|
|
+ return beforeRevisionAccept(evt, data)
|
|
|
+ } catch {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ },
|
|
|
}
|
|
|
|
|
|
const editJudgment = async () => {
|
|
@@ -918,10 +934,8 @@ const 入院病历 = 'ruyuanjiluzhuanyong'
|
|
|
function generalMedicalRecords() {
|
|
|
if (emrEditCreateLimit.isEdit(createId)) {
|
|
|
setEditorModel('free')
|
|
|
- editor?.setRevisionShowMode(1);
|
|
|
} else {
|
|
|
setEditorModel('readonly')
|
|
|
- editor?.setRevisionShowMode(2);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -968,15 +982,12 @@ const setEditorModeFun = () => {
|
|
|
const openTheTraceByUser = (editorCode) => {
|
|
|
if (readonlyPattern() || stringIsBlank(createId)) {
|
|
|
editor!.setRevisionMode('off')
|
|
|
- editor!.setRevisionShowMode(1);
|
|
|
return
|
|
|
}
|
|
|
if (editorCode === userInfo.code) {
|
|
|
editor!.setRevisionMode('off')
|
|
|
- editor!.setRevisionShowMode(1);
|
|
|
} else {
|
|
|
editor!.setRevisionMode('on')
|
|
|
- editor!.setRevisionShowMode(2);
|
|
|
xcMessage.warning('当前病历创建人不是您,你的操作将会留痕。')
|
|
|
}
|
|
|
}
|
|
@@ -1518,6 +1529,7 @@ const initEdit = () => {
|
|
|
popupFunc.setShortcutKey()
|
|
|
setEditor();
|
|
|
emrStore.cache.open();
|
|
|
+ setRevisionShowMode(RevisionShowMode.卡片)
|
|
|
})
|
|
|
}
|
|
|
|
|
@@ -1528,9 +1540,30 @@ const hisSaveEmrInit = () => {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-
|
|
|
let hisSaveEmr: UseEmrInitReturn | null = null
|
|
|
|
|
|
+function beforeRevisionAccept(evt, data) {
|
|
|
+ if (isCourse()) {
|
|
|
+ const el = editMain?.iframe.contentWindow!.document.getElementById(data.id);
|
|
|
+ const area = editor!.getViewByElType(el, 'area')
|
|
|
+ const values = parsingFragmentDataElements(editor, area.model);
|
|
|
+ const {code} = getBcjlUserInfo(values)
|
|
|
+ if (code === userInfo.code) {
|
|
|
+ return true
|
|
|
+ } else {
|
|
|
+ xcMessage.error('片段你创建的无法使用此功能。')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (createId === userInfo.code) {
|
|
|
+ return true
|
|
|
+ } else {
|
|
|
+ xcMessage.error('病历不是你创建的无法使用此功能。')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
doctorLevelFunc()
|
|
|
await queryingBasicPatientInformation()
|
|
@@ -1656,7 +1689,7 @@ const 循环病程返回数据元 = (callback) => {
|
|
|
} else {
|
|
|
modelService.setWalkerRoot(walker, node);
|
|
|
}
|
|
|
- values = modelService.getElementsDataFromWalker(walker, '编辑者');
|
|
|
+ values = modelService.getElementsDataFromWalker(walker);
|
|
|
callback(values, node)
|
|
|
}
|
|
|
}
|