# 手术管理模块开发说明 ## 模块概述 手术管理模块是一个完整的医疗手术管理系统,涵盖从手术排期、执行到记录的全流程管理。本模块基于经典的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) - 初始版本发布 - 实现手术基本管理功能 - 实现手术状态流转 - 实现手术团队管理 ## 联系方式 如有问题或建议,请联系开发团队。