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

352 lines
9.6 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.

# 手术管理模块开发说明
## 模块概述
手术管理模块是一个完整的医疗手术管理系统涵盖从手术排期、执行到记录的全流程管理。本模块基于经典的Spring Boot + Vue3前后端分离架构开发。
## 功能特性
### 1. 手术信息管理
- 手术基本信息录入(手术名称、编码、类型、等级)
- 患者信息关联
- 就诊信息关联
- 手术部位描述
### 2. 手术团队管理
- 主刀医生选择
- 麻醉医生选择
- 助手1/助手2选择
- 巡回护士选择
- 麻醉方式选择
### 3. 手术状态管理
- 待排期
- 已排期
- 手术中
- 已完成
- 已取消
- 暂停
### 4. 手术时间管理
- 计划手术时间
- 实际开始时间
- 实际结束时间
### 5. 诊断信息管理
- 术前诊断
- 术后诊断
- 手术经过描述
- 术后医嘱
- 并发症描述
### 6. 手术费用管理
- 手术费用
- 麻醉费用
- 总费用自动计算
### 7. 手术切口管理
- 切口等级I级、II级、III级、IV级
- 愈合等级(甲级、乙级、丙级)
## 技术架构
### 后端技术栈
- Spring Boot 2.x
- MyBatis Plus
- PostgreSQL 12+
- JDK 1.8+
### 前端技术栈
- Vue 3.x
- Element Plus
- Axios
- Vite
## 目录结构
```
openh-is/
├── openhis-server-new/ # 后端项目
│ ├── openhis-domain/ # 领域层
│ │ └── src/main/java/com/openhis/
│ │ ├── clinical/
│ │ │ ├── domain/
│ │ │ │ └── Surgery.java # 手术实体类
│ │ │ ├── mapper/
│ │ │ │ └── SurgeryMapper.java # 手术Mapper接口
│ │ │ └── service/
│ │ │ ├── ISurgeryService.java # 手术Service接口
│ │ │ └── impl/
│ │ │ └── SurgeryServiceImpl.java # 手术Service实现
│ │ └── common/ # 公共模块
│ │ └── src/main/java/com/openhis/common/
│ │ └── enums/ # 枚举类
│ │ ├── SurgeryTypeEnum.java # 手术类型枚举
│ │ ├── SurgeryStatusEnum.java # 手术状态枚举
│ │ ├── SurgeryLevelEnum.java # 手术等级枚举
│ │ ├── AnesthesiaTypeEnum.java # 麻醉方式枚举
│ │ ├── IncisionLevelEnum.java # 切口等级枚举
│ │ └── HealingLevelEnum.java # 愈合等级枚举
│ │
│ ├── openhis-application/ # 应用层
│ │ └── src/main/java/com/openhis/web/clinicalmanage/
│ │ ├── controller/
│ │ │ └── SurgeryController.java # 手术控制器
│ │ ├── dto/
│ │ │ └── SurgeryDto.java # 手术数据传输对象
│ │ ├── appservice/
│ │ │ ├── ISurgeryAppService.java # 手术应用服务接口
│ │ │ └── impl/
│ │ │ └── SurgeryAppServiceImpl.java # 手术应用服务实现
│ │ └── mapper/
│ │ └── SurgeryAppMapper.java # 手术应用Mapper
│ │
│ └── src/main/resources/mapper/
│ ├── clinical/
│ │ └── SurgeryMapper.xml # 手术Mapper XML
│ └── clinicalmanage/
│ └── SurgeryMapper.xml # 手术应用Mapper XML
├── openhis-ui-vue3/ # 前端项目
│ └── src/
│ ├── api/
│ │ └── surgerymanage.js # 手术API接口
│ └── views/
│ └── surgerymanage/
│ └── index.vue # 手术管理页面
└── surgery_manage_init.sql # 数据库初始化脚本
```
## 数据库设计
### 主表cli_surgery手术管理表
| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | bigint | 主键ID |
| surgery_no | varchar(50) | 手术编号(唯一) |
| patient_id | bigint | 患者ID |
| patient_name | varchar(100) | 患者姓名 |
| encounter_id | bigint | 就诊ID |
| surgery_name | varchar(200) | 手术名称 |
| surgery_code | varchar(100) | 手术编码 |
| surgery_type_enum | int2 | 手术类型 |
| surgery_level | int2 | 手术等级 |
| status_enum | int2 | 手术状态 |
| planned_time | timestamp | 计划手术时间 |
| actual_start_time | timestamp | 实际开始时间 |
| actual_end_time | timestamp | 实际结束时间 |
| main_surgeon_id | bigint | 主刀医生ID |
| main_surgeon_name | varchar(100) | 主刀医生姓名 |
| anesthetist_id | bigint | 麻醉医生ID |
| anesthetist_name | varchar(100) | 麻醉医生姓名 |
| anesthesia_type_enum | int2 | 麻醉方式 |
| body_site | varchar(200) | 手术部位 |
| preoperative_diagnosis | text | 术前诊断 |
| postoperative_diagnosis | text | 术后诊断 |
| surgery_fee | numeric(10,2) | 手术费用 |
| anesthesia_fee | numeric(10,2) | 麻醉费用 |
| total_fee | numeric(10,2) | 总费用 |
### 字典表
手术管理模块包含以下字典类型:
- surgery_status手术状态
- surgery_type手术类型
- surgery_level手术等级
- anesthesia_type麻醉方式
- incision_level切口等级
- healing_level愈合等级
## 安装部署
### 1. 数据库初始化
执行SQL脚本初始化数据库表和字典数据
```bash
psql -U postgres -d his_database -f surgery_manage_init.sql
```
或者使用psql客户端执行
```sql
\i /path/to/surgery_manage_init.sql
```
### 2. 后端配置
1. 将后端代码复制到对应目录
2. 修改数据库连接配置application.yml
3. 启动Spring Boot应用
### 3. 前端配置
1. 将前端代码复制到对应目录
2. 配置API接口地址.env.development
3. 启动前端开发服务器
```bash
npm install
npm run dev
```
## API接口说明
### 1. 分页查询手术列表
**接口地址:** `GET /clinical-manage/surgery/surgery-page`
**请求参数:**
```json
{
"pageNo": 1,
"pageSize": 10,
"surgeryNo": "SS20251230001",
"surgeryName": "阑尾切除术",
"patientName": "张三",
"statusEnum": 1,
"surgeryTypeEnum": 2
}
```
### 2. 查询手术详情
**接口地址:** `GET /clinical-manage/surgery/surgery-detail`
**请求参数:**
```
id: 手术ID
```
### 3. 新增手术
**接口地址:** `POST /clinical-manage/surgery/surgery`
**请求参数:**
```json
{
"patientId": 1,
"surgeryName": "阑尾切除术",
"surgeryCode": "ICD-9-CM:47.09",
"surgeryTypeEnum": 2,
"surgeryLevel": 2,
"plannedTime": "2025-12-31 09:00:00",
"mainSurgeonId": 10,
"anesthetistId": 11,
"anesthesiaTypeEnum": 3,
"bodySite": "腹部"
}
```
### 4. 修改手术
**接口地址:** `PUT /clinical-manage/surgery/surgery`
**请求参数:** 同新增手术需包含id
### 5. 删除手术
**接口地址:** `DELETE /clinical-manage/surgery/surgery`
**请求参数:**
```
id: 手术ID
```
### 6. 更新手术状态
**接口地址:** `PUT /clinical-manage/surgery/surgery-status`
**请求参数:**
```
id: 手术ID
statusEnum: 状态值
```
## 前端页面功能
### 1. 查询功能
- 支持按手术编号、手术名称、患者姓名模糊查询
- 支持按手术状态、手术类型精确查询
- 支持按计划时间范围查询
### 2. 新增功能
- 完整的手术信息录入表单
- 患者下拉选择
- 医生/护士下拉选择
- 费用自动计算
### 3. 编辑功能
- 仅待排期和已排期状态的手术可编辑
- 手术中或已完成的手术不可编辑
### 4. 状态流转
- 已排期 → 手术中
- 手术中 → 已完成
- 待排期/已排期 → 已取消
### 5. 删除功能
- 仅待排期和已排期状态的手术可删除
- 已完成的手术不能删除
## 扩展开发建议
### 1. 手术排期管理
- 可增加手术排期日历视图
- 手术室资源冲突检测
- 手术排队优先级管理
### 2. 手术统计报表
- 手术量统计
- 手术类型分布
- 手术成功率统计
- 手术费用统计
### 3. 手术文档管理
- 手术知情同意书
- 手术安全核查表
- 手术记录单
- 麻醉记录单
### 4. 手术质控管理
- 手术质量评估
- 并发症统计
- 术后恢复跟踪
- 手术质量指标管理
## 注意事项
1. **手术编号生成**手术编号采用自动生成机制格式为SS + 10位数字
2. **权限控制**:需要配置相应的菜单权限和操作权限
3. **数据校验**:新增手术时必须选择患者和主刀医生
4. **状态流转**:手术状态的流转需要符合业务逻辑
5. **费用计算**:总费用自动计算,不允许手动修改
## 常见问题
### Q1: 手术编号重复怎么办?
A: 手术编号是系统自动生成的唯一编号不会重复。如果需要自定义编号需要修改SurgeryServiceImpl中的生成逻辑。
### Q2: 如何添加新的手术类型?
A: 在数据库sys_dict_data表中添加新的surgery_type字典数据即可。
### Q3: 手术开始后还能修改信息吗?
A: 根据业务规则,手术开始后不允许修改基本信息,但可以补充术后诊断等信息。
### Q4: 如何实现手术室资源管理?
A: 可以新增手术室管理模块,建立手术排期与手术室的关联关系,实现资源冲突检测。
## 版本历史
- v1.0.0 (2025-12-30)
- 初始版本发布
- 实现手术基本管理功能
- 实现手术状态流转
- 实现手术团队管理
## 联系方式
如有问题或建议,请联系开发团队。