|
@@ -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>
|