Fix Bug #476: 住院医生工作-检查申请单界面缺失核心临床字段(紧急程度、过敏史、检查目的等)

在检查申请单开立界面新增5个核心临床字段(依次放在发往科室之后):
1. 紧急程度:el-select下拉选择(普通/急诊),区分急诊和普通检查
2. 过敏史:textarea输入,提示造影剂过敏风险
3. 检查目的:textarea输入,让执行科室医生了解临床背景
4. 病史摘要:textarea输入,补充患者病史信息
5. 期望检查时间:datetime选择器,实现精准调度

同步更新:
- medicalExaminations.vue: 表单模板 + form reactive对象新增字段
- examineApplication.vue: labelMap映射 + 详情弹窗紧急程度转换 + 修改弹窗新增字段 + 编辑/保存逻辑覆盖新字段
This commit is contained in:
关羽
2026-05-11 08:44:58 +08:00
committed by 赵云
parent abc995523b
commit 10b2c58a3e
2 changed files with 102 additions and 0 deletions

View File

@@ -227,6 +227,47 @@
<el-form-item label="申请单名称"> <el-form-item label="申请单名称">
<el-input v-model="editForm.name" /> <el-input v-model="editForm.name" />
</el-form-item> </el-form-item>
<el-form-item label="发往科室">
<el-tree-select
clearable
style="width: 100%"
v-model="editForm.targetDepartment"
filterable
:data="orgOptions"
:props="{
value: 'id',
label: 'name',
children: 'children',
}"
value-key="id"
check-strictly
placeholder="请选择科室"
/>
</el-form-item>
<el-form-item label="紧急程度">
<el-select v-model="editForm.urgencyLevel" placeholder="请选择紧急程度" clearable style="width: 100%">
<el-option label="普通" value="routine" />
<el-option label="急诊" value="emergency" />
</el-select>
</el-form-item>
<el-form-item label="过敏史">
<el-input v-model="editForm.allergyHistory" type="textarea" :rows="2" />
</el-form-item>
<el-form-item label="检查目的">
<el-input v-model="editForm.examinationPurpose" type="textarea" :rows="2" />
</el-form-item>
<el-form-item label="病史摘要">
<el-input v-model="editForm.medicalHistorySummary" type="textarea" :rows="2" />
</el-form-item>
<el-form-item label="期望检查时间">
<el-date-picker
v-model="editForm.expectedExaminationTime"
type="datetime"
placeholder="请选择期望检查时间"
style="width: 100%"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
<el-form-item label="临床诊断"> <el-form-item label="临床诊断">
<el-input v-model="editForm.clinicalDiagnosis" type="textarea" :rows="2" /> <el-input v-model="editForm.clinicalDiagnosis" type="textarea" :rows="2" />
</el-form-item> </el-form-item>
@@ -428,6 +469,11 @@ const buildItemNames = (row) => {
const labelMap = { const labelMap = {
categoryType: '项目类别', categoryType: '项目类别',
targetDepartment: '发往科室', targetDepartment: '发往科室',
urgencyLevel: '紧急程度',
allergyHistory: '过敏史',
examinationPurpose: '检查目的',
medicalHistorySummary: '病史摘要',
expectedExaminationTime: '期望检查时间',
symptom: '症状', symptom: '症状',
sign: '体征', sign: '体征',
clinicalDiagnosis: '临床诊断', clinicalDiagnosis: '临床诊断',
@@ -493,6 +539,11 @@ const handleViewDetail = (row) => {
const deptName = recursionFun(obj.targetDepartment); const deptName = recursionFun(obj.targetDepartment);
obj.targetDepartment = deptName || obj.targetDepartment; obj.targetDepartment = deptName || obj.targetDepartment;
} }
// 紧急程度转换为显示文本
const urgencyMap = { routine: '普通', emergency: '急诊' };
if (obj.urgencyLevel) {
obj.urgencyLevel = urgencyMap[obj.urgencyLevel] || obj.urgencyLevel;
}
descJsonData.value = obj; descJsonData.value = obj;
} catch (e) { } catch (e) {
console.error('解析 descJson 失败:', e); console.error('解析 descJson 失败:', e);
@@ -514,6 +565,12 @@ const handleEdit = (row) => {
if (row.descJson) { if (row.descJson) {
try { try {
const desc = JSON.parse(row.descJson); const desc = JSON.parse(row.descJson);
form.targetDepartment = desc.targetDepartment || '';
form.urgencyLevel = desc.urgencyLevel || '';
form.allergyHistory = desc.allergyHistory || '';
form.examinationPurpose = desc.examinationPurpose || '';
form.medicalHistorySummary = desc.medicalHistorySummary || '';
form.expectedExaminationTime = desc.expectedExaminationTime || '';
form.clinicalDiagnosis = desc.clinicalDiagnosis || ''; form.clinicalDiagnosis = desc.clinicalDiagnosis || '';
form.attention = desc.attention || ''; form.attention = desc.attention || '';
form.symptom = desc.symptom || ''; form.symptom = desc.symptom || '';
@@ -544,6 +601,12 @@ const handleSaveEdit = async () => {
name: editForm.value.name, name: editForm.value.name,
organizationId: editDetail.value.inHospitalOrgId || patientInfo.value?.inHospitalOrgId, organizationId: editDetail.value.inHospitalOrgId || patientInfo.value?.inHospitalOrgId,
descJson: JSON.stringify({ descJson: JSON.stringify({
targetDepartment: editForm.value.targetDepartment,
urgencyLevel: editForm.value.urgencyLevel,
allergyHistory: editForm.value.allergyHistory,
examinationPurpose: editForm.value.examinationPurpose,
medicalHistorySummary: editForm.value.medicalHistorySummary,
expectedExaminationTime: editForm.value.expectedExaminationTime,
clinicalDiagnosis: editForm.value.clinicalDiagnosis, clinicalDiagnosis: editForm.value.clinicalDiagnosis,
attention: editForm.value.attention, attention: editForm.value.attention,
symptom: editForm.value.symptom, symptom: editForm.value.symptom,

View File

@@ -42,6 +42,40 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="紧急程度" prop="urgencyLevel" style="width: 100%">
<el-select v-model="form.urgencyLevel" placeholder="请选择紧急程度" clearable style="width: 100%">
<el-option label="普通" value="routine" />
<el-option label="急诊" value="emergency" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="过敏史" prop="allergyHistory" style="width: 100%">
<el-input v-model="form.allergyHistory" autocomplete="off" type="textarea" placeholder="如:造影剂过敏史等" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检查目的" prop="examinationPurpose" style="width: 100%">
<el-input v-model="form.examinationPurpose" autocomplete="off" type="textarea" placeholder="请说明检查目的" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="病史摘要" prop="medicalHistorySummary" style="width: 100%">
<el-input v-model="form.medicalHistorySummary" autocomplete="off" type="textarea" placeholder="请简要描述患者病史" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="期望检查时间" prop="expectedExaminationTime" style="width: 100%">
<el-date-picker
v-model="form.expectedExaminationTime"
type="datetime"
placeholder="请选择期望检查时间"
style="width: 100%"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="症状" prop="symptom" style="width: 100%"> <el-form-item label="症状" prop="symptom" style="width: 100%">
<el-input v-model="form.symptom" autocomplete="off" type="textarea" /> <el-input v-model="form.symptom" autocomplete="off" type="textarea" />
@@ -145,6 +179,11 @@ const transferValue = ref([]);
const form = reactive({ const form = reactive({
// categoryType: '', // 项目类别 // categoryType: '', // 项目类别
targetDepartment: '', // 发往科室 targetDepartment: '', // 发往科室
urgencyLevel: '', // 紧急程度
allergyHistory: '', // 过敏史
examinationPurpose: '', // 检查目的
medicalHistorySummary: '', // 病史摘要
expectedExaminationTime: '', // 期望检查时间
symptom: '', // 症状 symptom: '', // 症状
sign: '', // 体征 sign: '', // 体征
clinicalDiagnosis: '', // 临床诊断 clinicalDiagnosis: '', // 临床诊断