瀏覽代碼

终末病历的高级查询

xiaochan 2 年之前
父節點
當前提交
a3d28e357a

+ 8 - 0
src/api/emr-control/emr-control.ts

@@ -40,3 +40,11 @@ export function saveEmr(data) {
         data
     });
 }
+
+export function finalControlAdvancedRetrieval(data) {
+    return request({
+        url: '/emrQualityControl/finalControlAdvancedRetrieval',
+        method: 'post',
+        data
+    })
+}

+ 8 - 0
src/api/zhu-yuan-yi-sheng/pat-info-query.js

@@ -30,3 +30,11 @@ export function employeeList(code) {
         params: {code}
     })
 }
+
+export function getSurgery(code) {
+    return request({
+        url: '/patInfo/getSurgery',
+        method: 'get',
+        params: {code}
+    })
+}

+ 4 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-query/EmrQueryDialog.vue

@@ -67,6 +67,10 @@ const inquire = () => {
         </el-select>
       </el-form-item>
 
+      <el-form-item label="">
+
+      </el-form-item>
+
     </el-form>
 
     <template #footer>

+ 13 - 3
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/final-quality-control/FinalQualityControl.vue

@@ -1,4 +1,4 @@
-<script setup>
+<script setup lang="ts">
 import {onMounted, ref} from "vue";
 import {currentAndAFewDaysAgo, dateRangeAddTime, getDateRangeFormatDate} from "@/utils/date";
 import {finalControl, obtainTheProportionOfMedicalRecords} from "@/api/emr-control/emr-control";
@@ -11,6 +11,8 @@ import {
   emrStateEnum,
   getEmrUrl
 } from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
+import AdvancedSearchFunction
+  from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/final-quality-control/comp/AdvancedSearchFunction.vue";
 
 const dateRange = ref([])
 const data = ref([])
@@ -37,6 +39,7 @@ const queryClick = () => {
 const proportion = ref('0%')
 const queryScale = async () => {
   let {startTime, endTime} = getDateRangeFormatDate(dateRange.value)
+  //@ts-ignore
   proportion.value = await obtainTheProportionOfMedicalRecords(startTime, endTime, 1)
 }
 
@@ -88,7 +91,9 @@ const toEmrClick = (row) => {
 }
 
 onMounted(async () => {
-  dateRange.value = await currentAndAFewDaysAgo()
+  currentAndAFewDaysAgo().then(res => {
+    dateRange.value = res as any
+  })
   openSocket()
   setCallback('FINAL_CONTROL', (data) => {
     progressBar.value = data
@@ -103,9 +108,14 @@ onMounted(async () => {
   <el-container>
     <el-header style="height: max-content">
       质控时间:
-      <el-date-picker style="width: 180px" v-model="dateRange" type="daterange" format="YYYY-MM-DD"
+      <el-date-picker style="width: 180px" v-model="dateRange"
+                      type="daterange"
+                      format="YYYY-MM-DD"
+                      :clearable="false"
                       value-format="YYYY-MM-DD"/>
       <el-divider direction="vertical"/>
+      <AdvancedSearchFunction v-model="dateRange"
+                              v-model:data="data"/>
       <el-button @click="queryClick">查询</el-button>
       <el-button @click="queryScale">
         {{ proportion }} 比例

+ 199 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/final-quality-control/comp/AdvancedSearchFunction.vue

@@ -0,0 +1,199 @@
+<script setup lang="ts">
+import {onMounted, ref} from "vue";
+import {isDev} from "@/utils/public";
+import XcElOption from "@/components/xiao-chan/xc-el-option/XcElOption.vue";
+import XcComboGridV2 from "@/components/xiao-chan/combo-grid/XcComboGridV2.vue";
+import {diagnosis, getSurgery, getHospWardAndDept, employeeList} from "@/api/zhu-yuan-yi-sheng/pat-info-query";
+import XcCheckbox from "@/components/xiao-chan/checkbox/XcCheckbox.vue";
+import {shortcuts} from '@/data/shortcuts'
+import {dateRangeAddTime} from '@/utils/date'
+import {finalControlAdvancedRetrieval} from "@/api/emr-control/emr-control";
+import {sid} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-func/emr-socket";
+import {useVModels} from "@vueuse/core";
+
+const props = defineProps<{
+  modelValue: any[];
+  data: any
+}>()
+
+const emits = defineEmits(["update:data", 'update:modelValue'])
+const {modelValue, data} = useVModels(props, emits)
+
+const dialog = ref(isDev)
+
+const param = ref<{
+  blfxChkbox: string[];
+  isDead: string;
+  sex: number;
+  diagnosis: string;
+  mainDiagnosis: boolean;
+  surgery: string;
+  qualityControlLevel: string;
+  disDept: string;
+  disDate: string[];
+  referPhysician: string;
+  start?: string;
+  end?: string;
+  socketId?: string
+}>({
+  blfxChkbox: [],
+  isDead: '',
+  sex: null,
+  diagnosis: '',
+  mainDiagnosis: false,
+  surgery: '',
+  qualityControlLevel: '',
+  disDept: '',
+  disDate: null,
+  referPhysician: '',
+  socketId: sid
+});
+
+const isOrNotOrAll = [
+  {code: '0', name: '否'},
+  {code: '1', name: '是'}
+];
+
+const sexList = [
+  {code: 1, name: '男'},
+  {code: 2, name: '女'},
+];
+
+const qualityControlLevelList = [
+  {code: '1', name: 'I'},
+  {code: '2', name: 'II'},
+  {code: '3', name: 'III'},
+  {code: '4', name: 'IV'},
+  {code: '5', name: 'V'},
+];
+
+const deptWardList = ref([])
+
+const shutDown = () => {
+
+};
+
+const inquire = () => {
+
+  if (param.value.disDate) {
+    let {start, end} = dateRangeAddTime(param.value.disDate)
+    param.value.disDate[0] = start
+    param.value.disDate[1] = end
+  } else {
+    param.value.disDate = null
+  }
+
+  let {start: s, end: e} = dateRangeAddTime(modelValue.value)
+
+  param.value.start = s
+  param.value.end = e
+
+  finalControlAdvancedRetrieval(param.value).then(res => {
+    data.value = res['patient']
+  })
+
+  dialog.value = false
+
+};
+
+onMounted(() => {
+  getHospWardAndDept().then(res => {
+    deptWardList.value = res as any[]
+  })
+})
+</script>
+
+<template>
+  <el-button @click="dialog = true">检索</el-button>
+  <el-dialog v-model="dialog" title="高级检索功能">
+    <el-form label-width="120px" label-position="right">
+
+      <el-form-item label="质控时间:">
+        <el-date-picker style="width: 180px"
+                        v-model="modelValue"
+                        type="daterange"
+                        format="YYYY-MM-DD"
+                        :clearable="false"
+                        value-format="YYYY-MM-DD"/>
+      </el-form-item>
+
+
+      <el-form-item label="病例分型:">
+        <el-checkbox-group v-model="param.blfxChkbox">
+          <el-checkbox label="1">A</el-checkbox>
+          <el-checkbox label="2">B</el-checkbox>
+          <el-checkbox label="3">C</el-checkbox>
+          <el-checkbox label="4">D</el-checkbox>
+        </el-checkbox-group>
+      </el-form-item>
+
+      <el-form-item label="是否死亡:">
+        <el-select v-model="param.isDead" style="width: 80px;" :clearable="true">
+          <XcElOption :data="isOrNotOrAll"/>
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="性别:">
+        <el-select v-model="param.sex" style="width: 80px;" :clearable="true">
+          <XcElOption :data="sexList"/>
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="诊断:">
+        <XcComboGridV2 :query-data-func="diagnosis" select v-model="param.diagnosis"/>
+        <el-divider direction="vertical"/>
+        <xcCheckbox v-model="param.mainDiagnosis" label="是否主要诊断"/>
+      </el-form-item>
+
+      <el-form-item label="手术">
+        <XcComboGridV2 :query-data-func="getSurgery"
+                       select
+                       v-model="param.surgery"/>
+      </el-form-item>
+
+      <el-form-item label="病历评级">
+        <el-select v-model="param.qualityControlLevel"
+                   :clearable="true">
+          <XcElOption :data="qualityControlLevelList"/>
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="出院科室">
+        <el-select v-model="param.disDept" :clearable="true">
+          <XcElOption :data="deptWardList"/>
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="出院时间">
+        <el-date-picker
+            style="max-width: 180px"
+            type="daterange"
+            :shortcuts="shortcuts"
+            v-model="param.disDate"
+        />
+      </el-form-item>
+
+      <el-form-item label="管床医生">
+        <XcComboGridV2 :query-data-func="employeeList"
+                       select
+                       v-model="param.referPhysician"/>
+      </el-form-item>
+
+    </el-form>
+
+    <template #footer>
+      <el-button @click="shutDown" type="danger">
+        关闭
+      </el-button>
+      <el-button @click="inquire" type="primary">
+        查询
+      </el-button>
+    </template>
+
+  </el-dialog>
+
+</template>
+
+<style scoped lang="scss">
+
+</style>

+ 0 - 2
src/views/settings/Test.vue

@@ -3,12 +3,10 @@
        v-title="'测试一下,我的title'">
     <div style="height: 200px;width: 200px;border: 1px solid #000"
          v-title="'测试一下,assdsa'">
-
     </div>
   </div>
 </template>
 
 <script setup lang="ts">
 
-
 </script>