- 新增手术室类型字段支持急诊、择期、日间、复合手术室四种类型 - 添加所属科室字段实现科室级别资源管理 - 前端列表页面新增类型和所属科室显示列 - 新增类型选择器和科室选择器组件 - 后端实体类和服务类添加对应字段处理逻辑 - 数据库添加room_type_enum字段和相关索引 - 创建手术室类型字典数据和字典项配置 - 生成手术室管理功能说明文档
257 lines
6.7 KiB
Markdown
257 lines
6.7 KiB
Markdown
# 手术室管理添加类型和所属科室字段功能说明
|
||
|
||
## 概述
|
||
|
||
本次更新为手术室管理模块添加了"类型"和"所属科室"字段,优化了手术室信息的分类管理。
|
||
|
||
**数据库类型**: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;
|
||
```
|
||
|
||
## 技术支持
|
||
|
||
如有问题,请联系技术支持团队。
|