Procházet zdrojové kódy

急诊登记功能

lighter před 7 měsíci
rodič
revize
85e93d3758
2 změnil soubory, kde provedl 236 přidání a 3 odebrání
  1. 24 0
      src/api/triage/triage.js
  2. 212 3
      src/views/clinic/triage/AllTriages.vue

+ 24 - 0
src/api/triage/triage.js

@@ -238,4 +238,28 @@ export function queryCardInfo(data) {
     method: 'post',
     data,
   })
+}
+
+export function getEmergencyRegInfo(patientId, times) {
+  return request({
+    url: '/triage/getEmergencyRegInfo',
+    method: 'get',
+    params: { patientId, times },
+  })
+}
+
+export function saveEmergencyRegInfo(data) {
+  return request({
+    url: '/triage/saveEmergencyRegInfo',
+    method: 'post',
+    data,
+  })
+}
+
+export function getEmrRegExportData(start, end) {
+  return request({
+    url: '/triage/getEmrRegExportData',
+    method: 'get',
+    params: { start, end },
+  })
 }

+ 212 - 3
src/views/clinic/triage/AllTriages.vue

@@ -1,5 +1,4 @@
 <template>
-
   <div class="layout_container">
     <header>
       &nbsp;&nbsp;检索依据:
@@ -10,6 +9,7 @@
       <el-input v-model="searchContent" style="width: 160px" clearable placeholder="请输入检索内容"></el-input>
       <el-divider direction="vertical"></el-divider>
       <el-button type="primary" icon="Search" @click="fetchAllPatients">检索</el-button>
+      <el-button type="primary" icon="Download" @click="beforeExportEmrReg">导出急诊登记</el-button>
     </header>
     <div class="layout_main layout_el-table">
       <el-table :data="patients" stripe highlight-current-row>
@@ -41,6 +41,11 @@
             {{ statusFlagFilter(scope.row.statusFlag) }}
           </template>
         </el-table-column>
+        <el-table-column label="操作">
+          <template #default="{row}">
+            <el-button icon="Edit" @click="emergencyReg(row)">登记</el-button>
+          </template>
+        </el-table-column>
       </el-table>
       <el-pagination
           @size-change="handleSizeChange"
@@ -52,14 +57,146 @@
           :total="totalSize"
       ></el-pagination>
     </div>
+    <el-drawer
+        v-model="showRegEdit"
+        title="急诊登记"
+        :close-on-click-modal="false"
+        :close-on-press-escape="false"
+    >
+      <el-form :model="reginfo">
+        <el-form-item label="登记时间:" label-width="100px">
+          <el-input v-model="reginfo.createTime" disabled />
+        </el-form-item>
+        <el-form-item label="挂号时间:" label-width="100px">
+          <el-input v-model="reginfo.regTime" disabled />
+        </el-form-item>
+        <el-form-item label="门诊ID号:" label-width="100px">
+          <el-input v-model="reginfo.patientId" disabled />
+        </el-form-item>
+        <el-form-item label="姓名:" label-width="100px">
+          <el-input v-model="reginfo.patientName" disabled />
+        </el-form-item>
+        <el-form-item label="性别:" label-width="100px">
+          <el-input v-model="reginfo.gender" disabled />
+        </el-form-item>
+        <el-form-item label="年龄:" label-width="100px">
+          <el-input v-model="reginfo.age" disabled />
+        </el-form-item>
+        <el-form-item label="级别:" label-width="100px">
+          <el-select v-model="reginfo.level">
+            <el-option label="一级" value="一级" />
+            <el-option label="二级" value="二级" />
+            <el-option label="三级" value="三级" />
+            <el-option label="四级" value="四级" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="脉搏:" label-width="100px">
+          <el-input v-model="reginfo.pulse" />
+        </el-form-item>
+        <el-form-item label="血压:" label-width="100px">
+          <el-input v-model="reginfo.bloodPressure" />
+        </el-form-item>
+        <el-form-item label="体温:" label-width="100px">
+          <el-input v-model="reginfo.temperature" />
+        </el-form-item>
+        <el-form-item label="类别:" label-width="100px">
+          <el-select v-model="reginfo.type" clearable>
+            <el-option label="胸痛" value="胸痛" />
+            <el-option label="卒中" value="卒中" />
+            <el-option label="高危孕产妇" value="高危孕产妇" />
+            <el-option label="创伤" value="创伤" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="意识:" label-width="100px">
+          <el-select v-model="reginfo.consciousness" clearable>
+            <el-option label="清醒" value="清醒" />
+            <el-option label="嗜睡" value="嗜睡" />
+            <el-option label="昏睡" value="昏睡" />
+            <el-option label="昏迷" value="昏迷" />
+            <el-option label="意识模糊" value="意识模糊" />
+            <el-option label="谵妄" value="谵妄" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="诊断:" label-width="100px">
+          <el-input v-model="reginfo.icdName" readonly @click="openSearch(1)" />
+        </el-form-item>
+        <el-form-item label="五大中心诊断:" label-width="100px">
+          <el-input v-model="reginfo.icdName5c" readonly @click="openSearch(2)" />
+        </el-form-item>
+        <el-form-item label="科室:" label-width="100px">
+          <el-select v-model="reginfo.deptClass" clearable>
+            <el-option label="内科" value="内科" />
+            <el-option label="外科" value="外科" />
+            <el-option label="其他" value="其他" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="住址:" label-width="100px">
+          <el-input v-model="reginfo.liveAddress" />
+        </el-form-item>
+        <el-form-item label="联系方式:" label-width="100px">
+          <el-input v-model="reginfo.phone" />
+        </el-form-item>
+        <el-form-item label="登记者:" label-width="100px">
+          <el-input v-model="reginfo.createStaffName" disabled/>
+        </el-form-item>
+        <el-form-item label="去向:" label-width="100px">
+          <el-input v-model="reginfo.dest" />
+        </el-form-item>
+        <el-form-item label="住院:" label-width="100px">
+          <el-input v-model="reginfo.hospitalization" />
+        </el-form-item>
+        <el-form-item label="备注:" label-width="100px">
+          <el-input v-model="reginfo.remark" type="textarea" />
+        </el-form-item>
+        <el-button
+            style="width: 100%; margin-top: 10px"
+            type="primary"
+            size="large"
+            @click="submitEmrReginfo"
+        >
+          提交
+        </el-button>
+      </el-form>
+    </el-drawer>
+    <Search
+        v-if="showSearch"
+        med-type="01"
+        target="icd10"
+        title="诊断搜索(ICD-10)"
+        @close="showSearch = false"
+        @click-item="handleClickSearchItem"
+    />
+    <el-dialog
+      title="导出急诊登记数据"
+      v-model="showExport"
+      width="300px"
+    >
+      <CyDateRange style="width: 100%" size="large" />
+      <el-button
+          type="success"
+          size="large"
+          style="width: 100%; margin-top: 20px"
+          icon="Download"
+          @click="executeExport"
+      >
+        导出EXCEL
+      </el-button>
+    </el-dialog>
   </div>
-
 </template>
 
 <script setup>
 import { ref } from 'vue'
-import { getAllPatients } from '@/api/triage/triage'
+import {
+  getAllPatients,
+  getEmergencyRegInfo, getEmrRegExportData,
+  saveEmergencyRegInfo
+} from '@/api/triage/triage'
 import { onActivated } from 'vue'
+import Search from "@/components/search/Index.vue";
+import {xcMessage} from "@/utils/xiaochan-element-plus";
+import useDateRange from "@/utils/cy-use/useDateRange";
+import {Export} from "@/utils/ExportExcel.js";
 
 const patients = ref([])
 const totalSize = ref(0)
@@ -84,6 +221,78 @@ const fetchAllPatients = () => {
   })
 }
 
+const showSearch = ref(false)
+const showRegEdit = ref(false)
+const diagType = ref(1)
+const reginfo = ref({})
+function emergencyReg(row) {
+  getEmergencyRegInfo(row.patientId, row.times).then(res => {
+    reginfo.value = res
+    showRegEdit.value = true
+  })
+}
+
+function openSearch(flag) {
+  diagType.value = flag
+  showSearch.value = true
+}
+
+function handleClickSearchItem(item) {
+  if (diagType.value === 1) {
+    reginfo.value.icdCode = item.code
+    reginfo.value.icdName = item.name
+  } else {
+    reginfo.value.icdCode5c = item.code
+    reginfo.value.icdName5c = item.name
+  }
+  showSearch.value = false
+}
+
+function submitEmrReginfo() {
+  saveEmergencyRegInfo(reginfo.value).then(res => {
+    reginfo.value.id = res
+    xcMessage.success('保存成功。')
+  })
+}
+
+const {CyDateRange, dateRange} = useDateRange({shortcutsIndex: 2, clearable: false})
+const showExport = ref(false)
+function beforeExportEmrReg() {
+  showExport.value = true
+}
+
+const field = {
+  createTime: "登记时间",
+  regTime: "挂号时间",
+  patientId: "门诊ID号",
+  patientName: "姓名",
+  gender: "性别",
+  age: "年龄",
+  level: "级别",
+  pulse: "脉搏",
+  bloodPressure: "血压",
+  temperature: "体温",
+  type: "类别",
+  consciousness: "意识",
+  icdCode: "诊断编码",
+  icdName: "诊断名称",
+  icdCode5c: "五大中心诊断编码",
+  icdName5c: "五大中心诊断名称",
+  deptClass: "科室",
+  liveAddress: "住址",
+  phone: "联系方式",
+  createStaffName: "登记者",
+  dest: "去向",
+  hospitalization: "住院",
+  remark: "备注",
+}
+function executeExport() {
+  getEmrRegExportData(dateRange.value.start, dateRange.value.end).then(res => {
+    Export(res, field, '急诊登记数据')
+    showExport.value = false
+  })
+}
+
 onActivated(() => {
   fetchAllPatients()
 })