|
@@ -12,73 +12,114 @@
|
|
|
<el-main>
|
|
|
<el-tag type="info">病人基本信息</el-tag>
|
|
|
<div style="height: 4px"></div>
|
|
|
- <el-row>
|
|
|
- <el-col :span="2" style="text-align: right">住院号:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.inpatientNo" disabled></el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">住院次数:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.admissTimes" disabled></el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">身份证号:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.socialNo"></el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">出生日期:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.birthDate" disabled></el-input>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <el-col :span="2" style="text-align: right">姓名:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.name"></el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">性别:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-select v-model="patient.sex" placeholder="请选择">
|
|
|
+
|
|
|
+ <el-descriptions :column="3" border>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 住院号 </template>
|
|
|
+ {{ patient.inpatientNo }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 住院次数 </template>
|
|
|
+ {{ patient.admissTimes }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 出生日期 </template>
|
|
|
+ {{ patient.birthDate }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>入院日期 </template>
|
|
|
+ {{ patient.admissDate }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 病区 </template>
|
|
|
+ {{ patient.admissWardName }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 入院诊断 </template>
|
|
|
+ <div style="width: 180px" class="ellipsis-text" :title="patient.admissDiagStr">{{ patient.admissDiagStr }}</div>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 小科室 </template>
|
|
|
+ {{ patient.smallDeptName }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 入院医生 </template>
|
|
|
+ {{ patient.admissPhysicianName }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label>身份证号 </template>
|
|
|
+ <el-input v-model="patient.socialNo" style="width: 180px" clearable></el-input>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 姓名 </template>
|
|
|
+ <el-input v-model="patient.name" style="width: 180px"></el-input>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 性别 </template>
|
|
|
+ <el-select v-model="patient.sex" placeholder=" " style="width: 180px">
|
|
|
<el-option v-for="item in sexes" :key="item.code" :label="item.name" :value="item.code"></el-option>
|
|
|
</el-select>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">联系电话:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.homeTel"></el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">入院日期:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.admissDate" disabled></el-input>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <el-col :span="2" style="text-align: right">管床医生:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.referPhysicianName" readonly @click="searchPhysician"></el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">病区:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.admissWardName" disabled></el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">入院医生:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.admissPhysicianName" disabled></el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">入院诊断:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.admissDiagStr" disabled></el-input>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <el-col :span="2" style="text-align: right">小科室:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-input v-model="patient.smallDeptName" disabled></el-input>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">登记日期:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-date-picker v-model="patient.ybRegisterDate" placeholder="选择日期时间" style="width: 172px" type="datetime" @change="formatYbRegisterDate"></el-date-picker>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">参保地区:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 联系电话 </template>
|
|
|
+ <el-input v-model="patient.homeTel" style="width: 180px"></el-input>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 管床医生 </template>
|
|
|
+ <el-input v-model="patient.referPhysicianName" readonly @click="searchPhysician(1)" style="width: 180px"></el-input>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 责任护士 </template>
|
|
|
+ <el-input v-model="patient.dutyNurseName" readonly @click="searchPhysician(2)" style="width: 180px"></el-input>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 国籍 </template>
|
|
|
+ <el-select v-model="patient.country" style="width: 180px" filterable>
|
|
|
+ <el-option v-for="item in countries" :key="item.code" :label="item.name" :value="item.code">
|
|
|
+ <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
|
|
|
+ <el-divider direction="vertical"></el-divider>
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 民族 </template>
|
|
|
+ <el-select v-model="patient.nation" style="width: 180px" filterable>
|
|
|
+ <el-option v-for="item in nations" :key="item.code" :label="item.name" :value="item.code">
|
|
|
+ <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
|
|
|
+ <el-divider direction="vertical"></el-divider>
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 联系人姓名 </template>
|
|
|
+ <el-input v-model="patient.contactName" style="width: 180px"></el-input>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 联系人关系 </template>
|
|
|
+ <el-select v-model="patient.contactRelation" style="width: 180px" filterable>
|
|
|
+ <el-option v-for="item in relations" :key="item.code" :label="item.name" :value="item.code">
|
|
|
+ <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
|
|
|
+ <el-divider direction="vertical"></el-divider>
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 联系人地址 </template>
|
|
|
+ <el-input v-model="patient.contactAddrName" style="width: 180px"></el-input>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 联系人电话 </template>
|
|
|
+ <el-input v-model="patient.contactPhone" style="width: 180px"></el-input>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 登记日期 </template>
|
|
|
+ <el-date-picker v-model="patient.ybRegisterDate" placeholder="选择日期时间" style="width: 180px" type="datetime" @change="formatYbRegisterDate"></el-date-picker>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 参保地区 </template>
|
|
|
<el-select v-if="injuryMode" v-model="patient.injuryArea" placeholder="工伤参保地" size="small">
|
|
|
<el-option v-for="item in injuryAreas" :key="item.code" :label="item.name" :value="item.code">
|
|
|
<span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
|
|
@@ -86,25 +127,26 @@
|
|
|
<span>{{ item.name }}</span>
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
- <el-select v-else v-model="patient.admdvs" clearable filterable placeholder="请选择">
|
|
|
+ <el-select v-else v-model="patient.admdvs" clearable filterable placeholder="请选择" style="width: 180px">
|
|
|
<el-option v-for="item in admdvs" :key="item.code" :label="item.name" :value="item.code">
|
|
|
<span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
|
|
|
<el-divider direction="vertical"></el-divider>
|
|
|
<span>{{ item.name }}</span>
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
- </el-col>
|
|
|
- <el-col :span="2" style="text-align: right">医疗类别:</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-select v-model="patient.medType" clearable placeholder="请选择" @change="handleSelectMedType">
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item>
|
|
|
+ <template #label> 医疗类别 </template>
|
|
|
+ <el-select v-model="patient.medType" clearable placeholder="请选择" @change="handleSelectMedType" style="width: 180px">
|
|
|
<el-option v-for="item in medTypes" :key="item.code" :disabled="item.disabled" :label="item.name" :value="item.code">
|
|
|
<span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
|
|
|
<el-divider direction="vertical"></el-divider>
|
|
|
<span>{{ item.name }}</span>
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
+ </el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+
|
|
|
<div style="margin-top: 16px">
|
|
|
<el-tag type="info"> 医保入院诊断(*自费患者无需填写*)</el-tag>
|
|
|
<el-button circle icon="Plus" title="添加入院诊断" type="primary" @click="openDiagDialog"></el-button>
|
|
@@ -260,6 +302,7 @@ import store from '@/store'
|
|
|
import { computed, onActivated, onDeactivated, onMounted, reactive, ref, watchEffect } from 'vue'
|
|
|
import { getZyInYbDiags, saveZyInYbDiags, submitSiPatientInfo } from '@/api/yibao/patient'
|
|
|
import { getAllSpecialDiags } from '@/api/yibao/dictionary'
|
|
|
+import { fetchCountryDictionary, fetchNationDictionary, fetchRelationDictionary } from '@/api/dictionary/fetch-dictionaries'
|
|
|
import { cptSex } from '@/utils/computed'
|
|
|
import { admdvs, diagTypes, sexes } from '@/data/index'
|
|
|
import { nullPatient } from '@/utils/validate'
|
|
@@ -324,6 +367,9 @@ export default {
|
|
|
})
|
|
|
|
|
|
const medTypes = ref([])
|
|
|
+ const countries = ref([])
|
|
|
+ const nations = ref([])
|
|
|
+ const relations = ref([])
|
|
|
const diagItem = ref({})
|
|
|
const showSearchSpecialDiag = ref(false)
|
|
|
const insuinfo = ref([])
|
|
@@ -478,16 +524,31 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- const searchPhysician = () => {
|
|
|
- searchParams.title = '管床医生'
|
|
|
+ const searchPhysician = (flag) => {
|
|
|
+ switch (flag) {
|
|
|
+ case 1:
|
|
|
+ searchParams.title = '管床医生'
|
|
|
+ break
|
|
|
+ case 2:
|
|
|
+ searchParams.title = '责任护士'
|
|
|
+ break
|
|
|
+ }
|
|
|
searchParams.target = 'physician'
|
|
|
searchParams.showSearch = true
|
|
|
}
|
|
|
|
|
|
const handleClickSearchItem = (item) => {
|
|
|
if (searchParams.target === 'physician') {
|
|
|
- patient.value.referPhysician = item.code
|
|
|
- patient.value.referPhysicianName = item.name
|
|
|
+ switch (searchParams.title) {
|
|
|
+ case '管床医生':
|
|
|
+ patient.value.referPhysician = item.code
|
|
|
+ patient.value.referPhysicianName = item.name
|
|
|
+ break
|
|
|
+ case '责任护士':
|
|
|
+ patient.value.dutyNurse = item.code
|
|
|
+ patient.value.dutyNurseName = item.name
|
|
|
+ break
|
|
|
+ }
|
|
|
} else if (searchParams.target === 'diag' || searchParams.target === 'injurydiag') {
|
|
|
diagItem.value.icdCode = item.icdCode
|
|
|
diagItem.value.icdText = item.icdText
|
|
@@ -783,6 +844,15 @@ export default {
|
|
|
getMedTypesByFlag('hospitalization').then((res) => {
|
|
|
medTypes.value = res
|
|
|
})
|
|
|
+ fetchCountryDictionary().then((res) => {
|
|
|
+ countries.value = res
|
|
|
+ })
|
|
|
+ fetchNationDictionary().then((res) => {
|
|
|
+ nations.value = res
|
|
|
+ })
|
|
|
+ fetchRelationDictionary().then((res) => {
|
|
|
+ relations.value = res
|
|
|
+ })
|
|
|
})
|
|
|
|
|
|
return {
|
|
@@ -791,6 +861,9 @@ export default {
|
|
|
sexes,
|
|
|
admdvs,
|
|
|
medTypes,
|
|
|
+ countries,
|
|
|
+ nations,
|
|
|
+ relations,
|
|
|
insuinfo,
|
|
|
zyInYbDiags,
|
|
|
showSearchSpecialDiag,
|