- 数据库:在adm_charge_item表添加SourceBillNo字段 - 后端实体类:更新ChargeItem.java添加SourceBillNo字段 - 前端组件:创建手术计费界面(基于门诊划价界面) - 后端API:扩展PrePrePaymentDto支持手术计费标识 - 后端Service:扩展getChargeItems方法支持手术计费过滤 - 门诊手术安排界面:添加【计费】按钮 注意事项: - 需要手动执行SQL脚本:openhis-server-new/sql/add_source_bill_no_to_adm_charge_item.sql - 术后一站式结算功能待后续开发
4.2 KiB
4.2 KiB
OpenHIS - AI Agent Development Guide
项目概览
OpenHIS 是一个医院管理系统,采用 Java 17 + Spring Boot 后端和 Vue 3 + Vite 前端架构。
构建和运行命令
后端(Java/Spring Boot)
# 构建整个项目
cd openhis-server-new
mvn clean package -DskipTests
# 运行后端(开发模式)
cd openhis-server-new/openhis-application
mvn spring-boot:run
# 运行特定模块
cd openhis-server-new/[module-name]
mvn spring-boot:run
前端(Vue 3 + Vite)
# 安装依赖
cd openhis-ui-vue3
npm install
# 开发服务器
npm run dev
# 生产构建
npm run build:prod
# 测试环境构建
npm run build:test
# 预览构建结果
npm run preview
测试
项目当前没有配置正式的测试框架。如需添加测试:
- 后端:考虑使用 JUnit 5 + Mockito
- 前端:考虑使用 Vitest + Vue Test Utils
代码风格规范
Java 后端规范
- Java 版本: 17
- 框架: Spring Boot 2.5.15
- ORM: MyBatis Plus 3.5.5
- 数据库: PostgreSQL
- 包结构:
com.openhis- 业务逻辑com.core- 核心框架
- 命名约定:
- 类名:PascalCase(如
UserController) - 方法名:camelCase(如
getUserList) - 常量:SCREAMING_SNAKE_CASE
- 配置文件:kebab-case
- 类名:PascalCase(如
- 注解使用:
- 使用
@Slf4j替代手动声明 logger - 使用
@Data在实体类中 - 使用
@Service/@Controller/@Repository等 Spring 注解
- 使用
- 异常处理:
- 使用统一的异常处理机制
- 自定义业务异常继承
RuntimeException
Vue 前端规范
- 框架: Vue 3 + Composition API
- UI 库: Element Plus
- 状态管理: Pinia
- 路由: Vue Router 4
- 构建工具: Vite 5
- 组件命名: PascalCase
- 文件命名: kebab-case
- 变量命名: camelCase
- 常量命名: SCREAMING_SNAKE_CASE
- 函数命名:
- 事件处理:
handle前缀 - 数据获取:
get/load前缀 - 提交操作:
submit前缀
- 事件处理:
导入顺序
Java
java.*javax.*- 第三方库
com.core.*com.openhis.**.*(其他包)
JavaScript/Vue
vue相关- 第三方库
@/别名导入- 相对路径导入
代码格式
Java
- 缩进:4个空格
- 行长度:120字符
- 左大括号不换行
Vue/JavaScript
- 缩进:2个空格
- 字符串:优先使用单引号
- 行长度:100字符
关键配置文件
后端配置
- 主配置:
openhis-server-new/openhis-application/src/main/resources/application.yml - 环境配置:
application-{profile}.yml - Maven 父 POM:
openhis-server-new/pom.xml
前端配置
- Vite 配置:
openhis-ui-vue3/vite.config.js - 环境变量:
.env.*文件 - 路由配置:
openhis-ui-vue3/src/router/index.js
开发约定
API 设计
- RESTful API 风格
- 统一响应格式
- 使用 Swagger 文档
- 错误码统一管理
数据库
- 表名:snake_case
- 字段名:snake_case
- 主键:使用
id - 软删除:使用
valid_flag字段
前端组件
- 单一职责原则
- Props 使用 camelCase
- Events 使用 kebab-case
- 使用 Composition API
- 组件文档使用 JSDoc
状态管理
- 模块化设计
- 异步操作使用 actions
- 避免在组件中直接修改状态
环境变量
前端
VITE_APP_BASE_API: API 基础路径VITE_APP_ENV: 环境标识
后端
spring.profiles.active: 激活的配置文件core.name: 应用名称core.version: 应用版本
安全规范
- 所有 API 接口需要权限验证
- 敏感信息使用环境变量
- SQL 注入防护
- XSS 攻击防护
性能优化
- 后端使用连接池(Druid)
- 前端使用路由懒加载
- 图片使用 WebP 格式
- 大列表使用虚拟滚动
常用工具类
- 后端:
com.core.common.utils.* - 前端:
@/utils/*
注意事项
- 修改数据库结构需要同步 SQL 脚本
- 新增功能需要添加权限配置
- 前端路由需要在权限系统中注册
- 接口变更需要更新 Swagger 文档
- 遵循现有代码风格,避免不必要的变化
故障排除
- 后端端口:18080
- 前端端口:81
- API 前缀:
/openhis - Swagger UI:
/openhis/swagger-ui/index.html - Druid 监控:
/openhis/druid/login.html