- 新增手术室类型字段支持急诊、择期、日间、复合手术室四种类型 - 添加所属科室字段实现科室级别资源管理 - 前端列表页面新增类型和所属科室显示列 - 新增类型选择器和科室选择器组件 - 后端实体类和服务类添加对应字段处理逻辑 - 数据库添加room_type_enum字段和相关索引 - 创建手术室类型字典数据和字典项配置 - 生成手术室管理功能说明文档
352 lines
9.6 KiB
Markdown
352 lines
9.6 KiB
Markdown
# 手术管理模块开发说明
|
||
|
||
## 模块概述
|
||
|
||
手术管理模块是一个完整的医疗手术管理系统,涵盖从手术排期、执行到记录的全流程管理。本模块基于经典的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)
|
||
- 初始版本发布
|
||
- 实现手术基本管理功能
|
||
- 实现手术状态流转
|
||
- 实现手术团队管理
|
||
|
||
## 联系方式
|
||
|
||
如有问题或建议,请联系开发团队。
|