Files
his/md/手术室管理添加类型和所属科室字段说明.md
chenqi cb268fe26d feat(operating-room): 添加手术室类型和所属科室字段
- 新增手术室类型字段支持急诊、择期、日间、复合手术室四种类型
- 添加所属科室字段实现科室级别资源管理
- 前端列表页面新增类型和所属科室显示列
- 新增类型选择器和科室选择器组件
- 后端实体类和服务类添加对应字段处理逻辑
- 数据库添加room_type_enum字段和相关索引
- 创建手术室类型字典数据和字典项配置
- 生成手术室管理功能说明文档
2026-01-13 10:03:57 +08:00

6.7 KiB
Raw Blame History

手术室管理添加类型和所属科室字段功能说明

概述

本次更新为手术室管理模块添加了"类型"和"所属科室"字段,优化了手术室信息的分类管理。

数据库类型PostgreSQL

功能特点

1. 手术室类型

支持四种手术室类型:

  • 急诊手术室:用于急诊手术的手术室
  • 择期手术室:用于择期手术的手术室(默认类型)
  • 日间手术室:用于日间手术的手术室
  • 复合手术室:用于复合手术的手术室

2. 所属科室

每个手术室可以关联到具体的科室,便于科室级别的资源管理。

修改内容

前端修改Vue3

1. 手术室列表页面 (operatingroom/index.vue)

列表表格新增列

  • 类型列:显示手术室类型(急诊手术室、择期手术室等)
  • 所属科室列:显示手术室所属的科室名称

新增/修改对话框新增字段

  • 类型选择器:下拉选择手术室类型
  • 所属科室选择器:可搜索的科室下拉框

查询表单保持原样

  • 仍支持按手术室名称和状态查询

查看对话框新增显示

  • 类型信息
  • 所属科室信息

2. 表单数据结构

const form = ref({
  id: undefined,
  busNo: undefined,
  name: undefined,
  roomTypeEnum: undefined,        // 新增:手术室类型
  organizationId: undefined,      // 已有所属科室ID
  organizationName: undefined,     // 已有:所属科室名称
  locationDescription: undefined,
  equipmentConfig: undefined,
  capacity: 1,
  statusEnum: 1,
  displayOrder: 0,
  remark: undefined
})

3. 类型选项配置

const roomTypeOptions = ref([
  { value: 1, label: '急诊手术室' },
  { value: 2, label: '择期手术室' },
  { value: 3, label: '日间手术室' },
  { value: 4, label: '复合手术室' }
])

后端修改Java

1. 实体类 (OperatingRoom.java)

新增字段

/** 手术室类型 */
@Dict(dictCode = "operating_room_type")
private Integer roomTypeEnum;
private String roomTypeEnum_dictText;

/** 所属机构ID */
private Long organizationId;

/** 所属机构名称 */
private String organizationName;

2. DTO类 (OperatingRoomDto.java)

新增字段

/** 手术室类型 */
@Dict(dictCode = "operating_room_type")
private Integer roomTypeEnum;
private String roomTypeEnum_dictText;

/** 所属机构ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long organizationId;

/** 机构名称 */
private String organizationName;

3. Service实现类 (OperatingRoomAppServiceImpl.java)

查询列表方法优化

  • 添加类型字段的枚举值转换逻辑
  • 根据类型编码设置对应的中文描述

详情查询方法优化

  • 添加类型字段的枚举值转换
  • 查询所属科室的名称并回显

数据库修改

SQL脚本文件add_operating_room_type_fields.sqlPostgreSQL版本

1. 添加字段

ALTER TABLE public.adm_operating_room
ADD COLUMN room_type_enum INTEGER DEFAULT 2;

COMMENT ON COLUMN public.adm_operating_room.room_type_enum IS
    '手术室类型1-急诊手术室2-择期手术室3-日间手术室4-复合手术室';

2. 更新现有数据

UPDATE public.adm_operating_room
SET room_type_enum = 2
WHERE room_type_enum IS NULL;

3. 添加索引

CREATE INDEX idx_room_type ON public.adm_operating_room(room_type_enum);
CREATE INDEX idx_org_id ON public.adm_operating_room(organization_id);

4. 字典数据

  • 新增字典类型:operating_room_type(手术室类型)
  • 新增字典项:
    • 急诊手术室1
    • 择期手术室2
    • 日间手术室3
    • 复合手术室4

PostgreSQL特定语法说明

  • 使用 public.adm_operating_room 替代 `adm_operating_room`
  • 使用 COMMENT ON COLUMN 替代 COMMENTALTER TABLE
  • 使用 nextval() 和序列来生成字典类型ID
  • 使用 information_schema.columns 获取列信息
  • 使用 CASE WHEN 语句进行条件判断

部署步骤

1. 数据库部署

执行SQL脚本PostgreSQL

psql -U postgres -d his_database -f add_operating_room_type_fields.sql

或者使用 pgAdmin 等图形化工具执行SQL脚本。

2. 后端部署

重启后端服务,使新的代码生效。

3. 前端部署

重新编译并部署前端代码:

npm run build

使用说明

新增手术室

  1. 进入手术室管理页面
  2. 点击"新增手术室"按钮
  3. 填写手术室信息:
    • 手术室名称(必填)
    • 类型(可选,默认为择期手术室)
    • 所属科室(必填)
    • 位置描述
    • 设备配置
    • 容纳人数
    • 状态(默认为启用)
    • 显示顺序
    • 备注
  4. 点击"确定"保存

修改手术室

  1. 在手术室列表中找到要修改的记录
  2. 点击"编辑"按钮
  3. 修改相关信息(包括类型和所属科室)
  4. 点击"确定"保存

查看手术室详情

  1. 在手术室列表中点击"查看"按钮
  2. 查看完整的手术室信息,包括类型和所属科室

查询手术室

  • 按手术室名称模糊查询
  • 按状态筛选(启用/停用)

注意事项

  1. 数据迁移:现有手术室的类型默认设置为"择期手术室"2可以根据实际需要调整。

  2. 科室关联:所属科室是必填字段,需要在科室管理中先配置好科室信息。

  3. 类型字典:手术室类型字典已自动创建,可以在系统字典管理中进行维护。

  4. 索引优化:已为类型和科室字段添加索引,提升查询性能。

  5. 兼容性:此次修改保持了向后兼容性,不影响现有功能。

验证清单

  • 数据库字段添加成功
  • 字典数据创建成功
  • 前端列表正确显示类型和所属科室
  • 新增手术室时可选择类型和所属科室
  • 修改手术室时可更新类型和所属科室
  • 查看手术室详情时正确显示类型和所属科室
  • 类型下拉选项显示正确
  • 所属科室选择器可正常搜索和选择
  • 查询功能正常工作
  • 没有语法错误和运行时错误

回滚方案

如需撤销本次修改请执行SQL脚本中的回滚语句PostgreSQL

DROP INDEX idx_room_type ON public.adm_operating_room;
DROP INDEX idx_org_id ON public.adm_operating_room;
DELETE FROM public.sys_dict_data WHERE dict_type = 'operating_room_type';
DELETE FROM public.sys_dict_type WHERE dict_type = 'operating_room_type';
ALTER TABLE public.adm_operating_room DROP COLUMN room_type_enum;

技术支持

如有问题,请联系技术支持团队。