- 在登录控制器中注入租户服务并获取租户名称信息 - 添加租户名称到登录响应结果中 - 更新样式变量定义侧边栏宽度和Logo高度 - 重构公告面板组件统一公告通知显示逻辑 - 简化公告类型图标和样式映射关系 - 更新侧边栏为垂直菜单布局并添加折叠功能 - 优化Logo组件显示租户名称和系统标题 - 调整导航栏布局结构和响应式样式 - 重构主应用容器样式和标签页显示逻辑
9.6 KiB
9.6 KiB
手术管理模块开发说明
模块概述
手术管理模块是一个完整的医疗手术管理系统,涵盖从手术排期、执行到记录的全流程管理。本模块基于经典的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脚本初始化数据库表和字典数据:
psql -U postgres -d his_database -f surgery_manage_init.sql
或者使用psql客户端执行:
\i /path/to/surgery_manage_init.sql
2. 后端配置
- 将后端代码复制到对应目录
- 修改数据库连接配置(application.yml)
- 启动Spring Boot应用
3. 前端配置
- 将前端代码复制到对应目录
- 配置API接口地址(.env.development)
- 启动前端开发服务器
npm install
npm run dev
API接口说明
1. 分页查询手术列表
接口地址: GET /clinical-manage/surgery/surgery-page
请求参数:
{
"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
请求参数:
{
"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. 手术质控管理
- 手术质量评估
- 并发症统计
- 术后恢复跟踪
- 手术质量指标管理
注意事项
- 手术编号生成:手术编号采用自动生成机制,格式为SS + 10位数字
- 权限控制:需要配置相应的菜单权限和操作权限
- 数据校验:新增手术时必须选择患者和主刀医生
- 状态流转:手术状态的流转需要符合业务逻辑
- 费用计算:总费用自动计算,不允许手动修改
常见问题
Q1: 手术编号重复怎么办?
A: 手术编号是系统自动生成的唯一编号,不会重复。如果需要自定义编号,需要修改SurgeryServiceImpl中的生成逻辑。
Q2: 如何添加新的手术类型?
A: 在数据库sys_dict_data表中添加新的surgery_type字典数据即可。
Q3: 手术开始后还能修改信息吗?
A: 根据业务规则,手术开始后不允许修改基本信息,但可以补充术后诊断等信息。
Q4: 如何实现手术室资源管理?
A: 可以新增手术室管理模块,建立手术排期与手术室的关联关系,实现资源冲突检测。
版本历史
- v1.0.0 (2025-12-30)
- 初始版本发布
- 实现手术基本管理功能
- 实现手术状态流转
- 实现手术团队管理
联系方式
如有问题或建议,请联系开发团队。