|
|
@@ -71,13 +71,15 @@ import store from "@/store";
|
|
|
import {onBeforeRouteLeave} from "vue-router";
|
|
|
import {getUuid} from "@/api/public-api";
|
|
|
import {
|
|
|
- getDrgIntelligentGrouping, getExtractDataElement,
|
|
|
+ deletePatientEmrByDocumentId,
|
|
|
+ getDrgIntelligentGrouping, insertEmrData,
|
|
|
submitMedicalRecord
|
|
|
} from "@/api/zhu-yuan-yi-sheng/emr-patient";
|
|
|
import {useDocumentVisibility} from "@vueuse/core";
|
|
|
import EmrAssistant from "@/components/zhu-yuan-yi-sheng/emr/EmrAssistant.vue";
|
|
|
import XcDialogV2 from "@/components/xiao-chan/dialog/XcDialogV2.vue";
|
|
|
import {getWardsApi} from "@/api/login";
|
|
|
+import {xcMessage} from "@/utils/xiaochan-element-plus";
|
|
|
|
|
|
const props = defineProps({
|
|
|
huanZheXinXi: {
|
|
|
@@ -106,7 +108,8 @@ let openAssistant = $ref({
|
|
|
data: {},
|
|
|
dialog: false
|
|
|
})
|
|
|
-
|
|
|
+// 患者数据
|
|
|
+let patientData = {}
|
|
|
// 编辑器
|
|
|
let editor = null
|
|
|
// 侧边栏
|
|
|
@@ -117,8 +120,7 @@ const emrSnippetRef = ref(null)
|
|
|
let loaded = $ref(false)
|
|
|
// 是否 改变了数据
|
|
|
let isEditorChange = $ref(false)
|
|
|
-// 患者数据
|
|
|
-let patientData = {}
|
|
|
+
|
|
|
// 是否开启审阅模式
|
|
|
let reviewMode = $ref(false)
|
|
|
// 跳转定位
|
|
|
@@ -154,25 +156,33 @@ const clickSaveData = async () => {
|
|
|
inputErrorMessage: '长度为2 - 20 个,汉字',
|
|
|
inputPattern: /^\S{2,20}$/,
|
|
|
inputValue: templateName
|
|
|
- }).then(({value}) => {
|
|
|
+ }).then(async ({value}) => {
|
|
|
data.name = value
|
|
|
- currentEmr.value.saveDocument(data, async () => {
|
|
|
+ // 检验是否必填项目
|
|
|
+ let validator = editor.getValidator();
|
|
|
+ let valid = validator.valid();
|
|
|
+ if (valid) {
|
|
|
+ BizException(ExceptionEnum.MESSAGE_ERROR, "有必填项不能为空,请仔细检查,红色输入框.")
|
|
|
+ }
|
|
|
+ let res = await insertEmrData(data)
|
|
|
+ currentEmr.value.saveDocument(data).then(emrRes => {
|
|
|
+ // 把提取到的数据放到 patientData 中.
|
|
|
+ Object.assign(patientData, res)
|
|
|
isEditorChange = false
|
|
|
emrSidebarRef.value.queryData()
|
|
|
- // 跳转到空白页面
|
|
|
- caseHistoryUrl = `/emr/runtime/#/editor`
|
|
|
let temp = {
|
|
|
documentId: data.emrDocumentId,
|
|
|
categoryCode: data.emrCategoryCode,
|
|
|
name: data.name,
|
|
|
categoryId: data.categoryId
|
|
|
}
|
|
|
- await updateCaseHistoryUrl(temp)
|
|
|
- }, (err) => {
|
|
|
- documentId = err
|
|
|
- isEditorChange = true
|
|
|
+ updateCaseHistoryUrl(temp)
|
|
|
+ xcMessage.success('保存成功')
|
|
|
+ }).catch(() => {
|
|
|
+ xcMessage.error('保存失败请重新保存')
|
|
|
})
|
|
|
|
|
|
+
|
|
|
}).catch(() => {
|
|
|
|
|
|
})
|
|
|
@@ -235,12 +245,22 @@ const clickDelete = () => {
|
|
|
whetherThereIsAMedicalRecordId()
|
|
|
ElMessageBox.alert('是否要删除该模板。', '提示', {
|
|
|
type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- currentEmr.value.deleteDocument(documentId, function () {
|
|
|
- emrSidebarRef.value.queryData()
|
|
|
- emptyEditor()
|
|
|
- });
|
|
|
- }).catch(() => {
|
|
|
+ }).then(async () => {
|
|
|
+ // 本院删除
|
|
|
+ let res = await deletePatientEmrByDocumentId(documentId)
|
|
|
+ // 电子病历删除
|
|
|
+ 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]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ isEditorChange = false
|
|
|
+ emrSidebarRef.value.queryData()
|
|
|
+ emptyEditor()
|
|
|
|
|
|
})
|
|
|
}
|
|
|
@@ -342,7 +362,6 @@ const monitorPageRefresh = (event) => {
|
|
|
const clickSnippet = ({content, styles}) => {
|
|
|
if (!readonlyPattern()) {
|
|
|
currentEmr.value.callMethod('setCursor', 'AREA_END')
|
|
|
- console.log(patientData)
|
|
|
currentEmr.value.insertSnippet(content, styles, patientData)
|
|
|
}
|
|
|
}
|
|
|
@@ -378,14 +397,18 @@ const emrEvent = {
|
|
|
|
|
|
'contentchange': (event) => {
|
|
|
if (!readonlyPattern()) {
|
|
|
- // 判断内容是否改变
|
|
|
- isEditorChange = true
|
|
|
- emrSidebarRef.value.changeTemplateType(2)
|
|
|
+ // 如果是空的编辑器就不触发了
|
|
|
+ if (!emrRef.value.src.includes('/emr/runtime/#/editor')) {
|
|
|
+ // 判断内容是否改变
|
|
|
+ isEditorChange = true
|
|
|
+ emrSidebarRef.value.changeTemplateType(2)
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
-}
|
|
|
|
|
|
+}
|
|
|
|
|
|
+// 设置编辑器的模式
|
|
|
const setEditorModeFun = () => {
|
|
|
// 判断是不是编辑模式
|
|
|
if (emrConfig.value.editor) {
|
|
|
@@ -478,17 +501,14 @@ const deleteDataElement = () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * 重新查询患者信息
|
|
|
- */
|
|
|
+// 重新设置提取的数据, 这里是强制替换
|
|
|
const reQueryPatientInformation = () => {
|
|
|
// 如果是只读模式就不触发这个
|
|
|
if (!readonlyPattern()) {
|
|
|
- getExtractDataElement(props.huanZheXinXi.inpatientNo, props.huanZheXinXi.admissTimes).then((res) => {
|
|
|
- // getExtractDataElement('005959', 23).then((res) => {
|
|
|
- Object.assign(patientData, res)
|
|
|
- editor.setValues(res)
|
|
|
- })
|
|
|
+ // 如果没有文档 id 就说明是
|
|
|
+ if (documentId) {
|
|
|
+ editor.setValues(patientData)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|