|
@@ -1,38 +1,21 @@
|
|
|
<template>
|
|
|
- <el-popover width="220">
|
|
|
+ <el-popover :width="0">
|
|
|
<template #reference>
|
|
|
<el-button :id="emrTutorialGetId('tools')">
|
|
|
辅助工具
|
|
|
</el-button>
|
|
|
</template>
|
|
|
<template #default>
|
|
|
- <el-button-group>
|
|
|
- <el-button @click="open(0)" type="success">医嘱</el-button>
|
|
|
- <el-button @click="open(1)" type="primary">护理</el-button>
|
|
|
- <el-button @click="open(2)" type="warning">检验</el-button>
|
|
|
- <el-button @click="open(3)" type="info">检查</el-button>
|
|
|
- </el-button-group>
|
|
|
- <hr/>
|
|
|
- <el-button-group>
|
|
|
- <el-button @click="open(4)" text type="success" plain>会诊</el-button>
|
|
|
- <el-button @click="open(5)" text type="primary" plain>手术</el-button>
|
|
|
- <el-button @click="open(6)" text type="warning" plain>检验</el-button>
|
|
|
- <el-button @click="open(7)" text type="info" plain>草药</el-button>
|
|
|
- </el-button-group>
|
|
|
- <hr/>
|
|
|
- <el-button-group>
|
|
|
- <el-button @click="emrChannelClick(emrChannelEnum.firstPageOfMedicalRecord)" type="success" round>首页
|
|
|
- </el-button>
|
|
|
- <el-button @click="emrChannelClick(emrChannelEnum.medicalAdvice)" type="primary" round>医嘱</el-button>
|
|
|
- <el-button @click="open(8)" type="warning" round>心电</el-button>
|
|
|
- <el-button @click="open(9)" type="info" round>血糖</el-button>
|
|
|
- </el-button-group>
|
|
|
- <hr>
|
|
|
- <el-button-group>
|
|
|
- <el-button @click="open(10)" type="success">病理</el-button>
|
|
|
- <el-button @click="open(11)" type="primary">荧光</el-button>
|
|
|
- <el-button @click="openWindow " type="warning">影像</el-button>
|
|
|
- </el-button-group>
|
|
|
+ <template v-for="(value , key) in drawerRange">
|
|
|
+ <el-divider>
|
|
|
+ {{ key }}
|
|
|
+ </el-divider>
|
|
|
+ <div class="div_container">
|
|
|
+ <div v-for="item in value" @click="handelClick(item)">
|
|
|
+ {{ item.name }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
</template>
|
|
|
</el-popover>
|
|
|
<el-drawer v-model="drawer"
|
|
@@ -40,6 +23,7 @@
|
|
|
append-to-body
|
|
|
@opened="handleDrawerOpened"
|
|
|
modal-class="change_padding"
|
|
|
+ @closed="currentComp = null"
|
|
|
destroy-on-close
|
|
|
size="100%"
|
|
|
:with-header="false">
|
|
@@ -50,53 +34,14 @@
|
|
|
@click="drawer =false">
|
|
|
关闭
|
|
|
</el-button>
|
|
|
- <emr-order-list v-if="index === 0"
|
|
|
- :pat-no="patInfo.inpatientNo"
|
|
|
- :times="patInfo.admissTimes"/>
|
|
|
- <emr-yz-temperature v-if="index === 1"
|
|
|
- :pat-no="patInfo.inpatientNo"
|
|
|
- :times="patInfo.admissTimes"/>
|
|
|
- <inspection-report-index
|
|
|
- style="font-size: 12px;height: 100%"
|
|
|
- v-if="index === 2"
|
|
|
- :pat-no="patInfo.inpatientNo"
|
|
|
- :start="start"
|
|
|
- :end="end"/>
|
|
|
- <emr-inspect v-if="index === 3"
|
|
|
- @close="close"
|
|
|
- :pat-no="patInfo.inpatientNo"
|
|
|
- :times="patInfo.admissTimes"/>
|
|
|
- <emr-group-consultation v-if="index === 4"/>
|
|
|
- <emr-operation v-if="index === 5"
|
|
|
- :pat-no="patInfo.inpatientNo"
|
|
|
- :times="patInfo.admissTimes"
|
|
|
- @to-fill-in-data="toFillInData"/>
|
|
|
- <EmrTestV2 :pat-no="patInfo.inpatientNo"
|
|
|
- v-if="index === 6"
|
|
|
- is-emr
|
|
|
- @close="close"/>
|
|
|
- <emr-herbs v-if="index === 7"
|
|
|
- @close="close"
|
|
|
- :pat-no="patInfo.inpatientNo"
|
|
|
- :times="patInfo.admissTimes"/>
|
|
|
- <emr-electrocardiogram v-if="index === 8"
|
|
|
- :pat-no="patInfo.inpatientNo"/>
|
|
|
- <BloodSugarQuery v-if="index === 9" :pat-no="patInfo.inpatientNo"
|
|
|
- :times="patInfo.admissTimes"/>
|
|
|
- <pims-web-view v-if="index === 10" :pat-no="patInfo.inpatientNo"/>
|
|
|
- <div style="width: 100%;height: 100%" v-if="index === 11">
|
|
|
- <fluorescence-test show-copy :pat-no="patInfo.inpatientNo" :times="patInfo.admissTimes"/>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- <IframeInspectImage :pat-no="patInfo.inpatientNo"/>-->
|
|
|
|
|
|
+ <Component :is="currentComp"/>
|
|
|
</el-drawer>
|
|
|
-
|
|
|
</template>
|
|
|
|
|
|
-<script setup name='EmrAuxiliaryTools'>
|
|
|
+<script setup lang="ts">
|
|
|
import EmrOrderList from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrOrderList.vue";
|
|
|
-import {defineProps, onMounted, ref, h} from 'vue'
|
|
|
+import {defineProps, onMounted, ref, h, computed} from 'vue'
|
|
|
import EmrYzTemperature from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrYzTemperature.vue";
|
|
|
import {patInfo} from './emr-tools-store'
|
|
|
import EmrInspect from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrInspect.vue";
|
|
@@ -107,7 +52,6 @@ import EmrGroupConsultation from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-t
|
|
|
import EmrOperation from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrOperation.vue";
|
|
|
import EmrHerbs from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrHerbs.vue";
|
|
|
import {
|
|
|
- emrChannelEnum,
|
|
|
emrMitt
|
|
|
} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
|
|
|
import {xcMessage} from "@/utils/xiaochan-element-plus";
|
|
@@ -132,7 +76,6 @@ const props = defineProps({
|
|
|
}
|
|
|
})
|
|
|
|
|
|
-
|
|
|
const emits = defineEmits(['toFillInData'])
|
|
|
|
|
|
const end = ref('')
|
|
@@ -181,6 +124,112 @@ function openWindow() {
|
|
|
openPatientImage(patInfo.value.inpatientNo)
|
|
|
}
|
|
|
|
|
|
+const propsPatientInfo = computed(() => {
|
|
|
+ return {
|
|
|
+ patNo: patInfo.value.inpatientNo,
|
|
|
+ times: patInfo.value.admissTimes
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+const drawerRange: {
|
|
|
+ [key: string]: {
|
|
|
+ name: string,
|
|
|
+ comp?: () => any,
|
|
|
+ click?: () => any
|
|
|
+ }[]
|
|
|
+} = {
|
|
|
+ "查询": [
|
|
|
+ {
|
|
|
+ name: '检验',
|
|
|
+ comp: () => {
|
|
|
+ return h(InspectionReportIndex, {...propsPatientInfo.value, start: start.value, end: end.value})
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '病理',
|
|
|
+ comp: () => {
|
|
|
+ return h(PimsWebView, {...propsPatientInfo.value})
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ name: '荧光',
|
|
|
+ comp: () => {
|
|
|
+ return h('div', {style: {width: '100%', height: '100%'}},
|
|
|
+ h(FluorescenceTest, {
|
|
|
+ ...propsPatientInfo.value,
|
|
|
+ showCopy: true
|
|
|
+ }))
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ name: '影像',
|
|
|
+ click: () => {
|
|
|
+ openWindow()
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ name: '草药',
|
|
|
+ comp: () => {
|
|
|
+ return h(EmrHerbs, {...propsPatientInfo.value})
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ name: '心电',
|
|
|
+ comp: () => {
|
|
|
+ return h(EmrElectrocardiogram, {...propsPatientInfo.value})
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ name: '血糖',
|
|
|
+ comp: () => {
|
|
|
+ return h(BloodSugarQuery, {...propsPatientInfo.value})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "引用": [
|
|
|
+ {
|
|
|
+ name: '医嘱',
|
|
|
+ comp: () => {
|
|
|
+ return h(EmrOrderList, {...propsPatientInfo.value})
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '检查',
|
|
|
+ comp: () => {
|
|
|
+ return h(EmrInspect, {...propsPatientInfo.value, onClose: close})
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ name: '检验',
|
|
|
+ comp: () => {
|
|
|
+ return h(EmrTestV2, {...propsPatientInfo.value, onClose: close, isEmr: true})
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '护理',
|
|
|
+ comp: () => h(EmrYzTemperature, {...propsPatientInfo.value})
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '会诊',
|
|
|
+ comp: () => h(EmrGroupConsultation, {...propsPatientInfo.value})
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '手术',
|
|
|
+ comp: () => h(EmrOperation, {...propsPatientInfo.value, onToFillInData: toFillInData})
|
|
|
+ }
|
|
|
+ ],
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+function handelClick(item) {
|
|
|
+ if (item.click) {
|
|
|
+ item.click()
|
|
|
+ } else {
|
|
|
+ setComp(item.comp)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const currentComp = ref(null)
|
|
|
+
|
|
|
+const setComp = (comp) => {
|
|
|
+ currentComp.value = comp
|
|
|
+ drawer.value = true
|
|
|
+}
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
patInfo.value = props.patInfo
|
|
|
end.value = formatDate(await getServerDateApi())
|
|
@@ -204,4 +253,22 @@ onMounted(async () => {
|
|
|
top: 0.13rem;
|
|
|
right: 0.07rem;
|
|
|
}
|
|
|
+
|
|
|
+.div_container {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: 1fr 1fr 1fr 1fr;
|
|
|
+ grid-gap: 10px;
|
|
|
+ width: max-content;
|
|
|
+
|
|
|
+ div {
|
|
|
+ width: 50px;
|
|
|
+ border: 1px solid #000;
|
|
|
+ border-radius: 5px;
|
|
|
+ line-height: 30px;
|
|
|
+ text-align: center;
|
|
|
+ user-select: none;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
</style>
|