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

257 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 手术室管理添加类型和所属科室字段功能说明
## 概述
本次更新为手术室管理模块添加了"类型"和"所属科室"字段,优化了手术室信息的分类管理。
**数据库类型**PostgreSQL
## 功能特点
### 1. 手术室类型
支持四种手术室类型:
- **急诊手术室**:用于急诊手术的手术室
- **择期手术室**:用于择期手术的手术室(默认类型)
- **日间手术室**:用于日间手术的手术室
- **复合手术室**:用于复合手术的手术室
### 2. 所属科室
每个手术室可以关联到具体的科室,便于科室级别的资源管理。
## 修改内容
### 前端修改Vue3
#### 1. 手术室列表页面 (`operatingroom/index.vue`)
**列表表格新增列**
- 类型列:显示手术室类型(急诊手术室、择期手术室等)
- 所属科室列:显示手术室所属的科室名称
**新增/修改对话框新增字段**
- 类型选择器:下拉选择手术室类型
- 所属科室选择器:可搜索的科室下拉框
**查询表单保持原样**
- 仍支持按手术室名称和状态查询
**查看对话框新增显示**
- 类型信息
- 所属科室信息
#### 2. 表单数据结构
```javascript
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. 类型选项配置
```javascript
const roomTypeOptions = ref([
{ value: 1, label: '急诊手术室' },
{ value: 2, label: '择期手术室' },
{ value: 3, label: '日间手术室' },
{ value: 4, label: '复合手术室' }
])
```
### 后端修改Java
#### 1. 实体类 (`OperatingRoom.java`)
**新增字段**
```java
/** 手术室类型 */
@Dict(dictCode = "operating_room_type")
private Integer roomTypeEnum;
private String roomTypeEnum_dictText;
/** 所属机构ID */
private Long organizationId;
/** 所属机构名称 */
private String organizationName;
```
#### 2. DTO类 (`OperatingRoomDto.java`)
**新增字段**
```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.sql`PostgreSQL版本
**1. 添加字段**
```sql
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. 更新现有数据**
```sql
UPDATE public.adm_operating_room
SET room_type_enum = 2
WHERE room_type_enum IS NULL;
```
**3. 添加索引**
```sql
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` 替代 `COMMENT``ALTER TABLE`
- 使用 `nextval()` 和序列来生成字典类型ID
- 使用 `information_schema.columns` 获取列信息
- 使用 `CASE WHEN` 语句进行条件判断
## 部署步骤
### 1. 数据库部署
执行SQL脚本PostgreSQL
```bash
psql -U postgres -d his_database -f add_operating_room_type_fields.sql
```
或者使用 pgAdmin 等图形化工具执行SQL脚本。
### 2. 后端部署
重启后端服务,使新的代码生效。
### 3. 前端部署
重新编译并部署前端代码:
```bash
npm run build
```
## 使用说明
### 新增手术室
1. 进入手术室管理页面
2. 点击"新增手术室"按钮
3. 填写手术室信息:
- 手术室名称(必填)
- 类型(可选,默认为择期手术室)
- 所属科室(必填)
- 位置描述
- 设备配置
- 容纳人数
- 状态(默认为启用)
- 显示顺序
- 备注
4. 点击"确定"保存
### 修改手术室
1. 在手术室列表中找到要修改的记录
2. 点击"编辑"按钮
3. 修改相关信息(包括类型和所属科室)
4. 点击"确定"保存
### 查看手术室详情
1. 在手术室列表中点击"查看"按钮
2. 查看完整的手术室信息,包括类型和所属科室
### 查询手术室
- 按手术室名称模糊查询
- 按状态筛选(启用/停用)
## 注意事项
1. **数据迁移**:现有手术室的类型默认设置为"择期手术室"2可以根据实际需要调整。
2. **科室关联**:所属科室是必填字段,需要在科室管理中先配置好科室信息。
3. **类型字典**:手术室类型字典已自动创建,可以在系统字典管理中进行维护。
4. **索引优化**:已为类型和科室字段添加索引,提升查询性能。
5. **兼容性**:此次修改保持了向后兼容性,不影响现有功能。
## 验证清单
- [ ] 数据库字段添加成功
- [ ] 字典数据创建成功
- [ ] 前端列表正确显示类型和所属科室
- [ ] 新增手术室时可选择类型和所属科室
- [ ] 修改手术室时可更新类型和所属科室
- [ ] 查看手术室详情时正确显示类型和所属科室
- [ ] 类型下拉选项显示正确
- [ ] 所属科室选择器可正常搜索和选择
- [ ] 查询功能正常工作
- [ ] 没有语法错误和运行时错误
## 回滚方案
如需撤销本次修改请执行SQL脚本中的回滚语句PostgreSQL
```sql
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;
```
## 技术支持
如有问题,请联系技术支持团队。