8.2 KiB
8.2 KiB
智慧医院管理系统 - 项目探索报告
生成日期:2026-07-22 项目路径:
E:\桌面\实训项目\smart-hospital
1. 项目概述
一个基于 Spring Boot 的教学/实训级 Web 应用,融合 AI 辅助诊断 概念,覆盖医院核心业务链条:
登录 → 患者管理 → 影像检查 + AI 诊断 → 电子病历 + AI 辅助决策
规模轻量:源码约 43 KB,共 23 个 Java 文件 + 5 个 Thymeleaf 页面。
⚠️ AI 部分为规则模拟实现——通过关键字匹配和随机结果生成,并非真实模型调用,属于教学演示性质。
2. 技术栈
后端
- 语言:Java 17
- 框架:Spring Boot 2.7.0(Spring MVC、Spring Data JPA、
@EnableAsync) - ORM:Hibernate(JPA 注解),
ddl-auto: update - 数据库:MySQL 8.0.33(
com.mysql.cj.jdbc.Driver) - 工具库:Lombok(
@Data)、Gson 2.9.0 - 构建:Maven(含
mvnw包装脚本) - 并发:
ExecutorService固定线程池(5 线程)+CompletableFuture
前端
- 模板引擎:Thymeleaf(服务端渲染)
- UI 框架:Bootstrap 5.3.0(CDN 引入)
- 交互:原生 JavaScript
fetch调用 REST 接口,轮询获取诊断结果
未使用
Spring Security、Redis、Swagger、MyBatis、Vue/React
3. 项目结构
smart-hospital/
├── smart——hospital.sql # 数据库初始化脚本
└── smart-hospital/ # Maven 项目根
├── pom.xml
├── mvnw, mvnw.cmd
├── src/main/java/com/hospital/
│ ├── SmartHospitalApplication.java # 启动类
│ ├── controller/ # 3 个 Controller
│ ├── service/ # 2 个 Service
│ ├── model/ # 11 个实体/DTO
│ └── repository/ # 6 个 JPA Repository
├── src/main/resources/
│ ├── application.yml
│ └── templates/ # 5 个 Thymeleaf 页面
└── src/test/java/com/hospital/
└── SmartHospitalApplicationTests.java
4. 核心模块 / 功能
页面模块(Thymeleaf)
| 路径 | 功能 |
|---|---|
/login |
登录/登出(测试账号 doctor1 / pass123) |
/dashboard |
仪表盘(患者/影像/病历计数) |
/patients |
患者列表(分页) |
/imaging |
影像检查记录 + AI 诊断触发 + 结果轮询 |
/emrs |
电子病历列表 |
业务模块
- 用户与权限:三种角色
DOCTOR / RADIOLOGIST / ADMIN,权限仅通过HttpSession判断登录状态 - 患者管理:CRUD 骨架(当前仅列表查询)
- 影像诊断(AI):异步任务
PENDING → ANALYZING → COMPLETED / ERROR,返回诊断文本 + 置信度(85%-99%) - 电子病历 + 决策支持:新建 EMR 时联动生成治疗方案、用药建议、风险评估、药物冲突提示
5. 数据库设计(6 张表)
数据库 smart_hospital(utf8mb4):
| 表名 | 用途 | 关键字段 |
|---|---|---|
users |
医护用户 | role(DOCTOR/RADIOLOGIST/ADMIN),username 唯一 |
patients |
患者 | gender、id_card 唯一 |
imaging_records |
影像检查记录 | study_type(X_RAY/CT/MRI/ULTRASOUND)、status、ai_diagnosis、ai_confidence |
ai_diagnosis_results |
AI 诊断结果 | diagnosis_text、confidence_score、findings、recommendations、model_version |
electronic_medical_records |
电子病历 | 主诉/现病史/查体/诊断/治疗方案/用药/随访/AI 建议 |
decision_support_records |
辅助决策记录 | query_text、ai_response、doctor_feedback |
关系简图
users ─┐
├─→ imaging_records → ai_diagnosis_results
patients ─┘
users ─┐
├─→ electronic_medical_records → decision_support_records
patients ─┘
6. API 接口
REST 接口(@RestController,均带 @CrossOrigin(origins = "*"))
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/ai-diagnosis/analyze/{recordId} |
提交某条影像记录的 AI 诊断任务(异步) |
| GET | /api/ai-diagnosis/result/{recordId} |
查询 AI 诊断结果 |
| POST | /api/emr/create |
创建电子病历 + 返回 AI 辅助决策 |
| GET | /api/emr/{emrId}/ai-suggestions |
获取指定病历的 AI 决策建议 |
页面路由
GET /login、POST /login、GET /logout、GET /dashboard、GET /patients、GET /imaging、GET /emrs(均支持 page、size 分页参数)
7. 配置说明
关键配置(application.yml):
- MySQL:
jdbc:mysql://localhost:3306/smart_hospital,root / 123456 - JPA:
ddl-auto: update,show-sql: false - Server 端口:
8080 - 自定义参数(目前代码中未被读取):
ai.diagnosis.enabled、max-concurrent-tasks: 5、timeout-seconds: 300、confidence-threshold: 0.85imaging.storage.path: ./uploads/images、max-file-size: 50MB
8. 构建与运行
先决条件:JDK 17、MySQL 8.x(默认 root / 123456)
步骤:
- 执行
smart——hospital.sql初始化数据库 - 在项目根下运行:
或打包后运行:
mvnw.cmd spring-boot:runmvnw.cmd package java -jar target/smart-hospital-1.0.0.jar - 打开
http://localhost:8080/login,账号doctor1 / pass123
缺失:无 README.md、无 Docker / CI 配置。
9. 代码规模
| 分类 | 数量 |
|---|---|
| Java 源文件 | 23(Application 1、Controller 3、Service 2、Model 11、Repository 6、Test 1) |
| Thymeleaf 模板 | 5 |
| 配置文件 | application.yml + pom.xml |
| SQL 脚本 | 1(约 100 行) |
| 源码总量 | 约 43 KB |
10. 技术亮点与潜在问题
✅ 亮点
- 分层清晰:Controller / Service / Repository / Model 四层结构标准
- 异步处理:AI 诊断走
@EnableAsync+CompletableFuture+ 独立线程池 - 前端轮询:
imaging.html用定时fetch轮询任务状态,交互思路完整 - 数据库设计合理:外键、枚举、时间戳完善
- Lombok 简化了实体样板代码
⚠️ 潜在问题
| 问题 | 说明 |
|---|---|
| AI 是伪实现 | 关键字 + Math.random() 生成结果;model_version 硬编码 "AI-DIAG-V2.1" |
| 安全性差 | 密码明文存储;未使用 Spring Security;@CrossOrigin(*) 全开 |
| 权限缺失 | 角色定义了,但业务代码不区分角色 |
| 登录效率低 | userRepository.findAll().stream() 全表遍历比对用户名 |
| 配置未落地 | ai.diagnosis.*、imaging.storage.* 无 @Value / @ConfigurationProperties 读取 |
| 线程池未托管 | 手动 new,未在应用关闭时优雅停止 |
| 缺少全局异常处理 | Controller 直接 throw RuntimeException |
| 业务功能不完整 | 只有列表查询页面,缺新增/编辑/删除、影像上传等 UI |
| 测试极简 | 仅一个空的 contextLoads() |
| 文件命名瑕疵 | SQL 文件名用了中文破折号 ——,跨平台易出错 |
target/ 已提交 |
编译产物被跟踪进版本控制 |
11. 关键文件路径速查
| 文件 | 路径 |
|---|---|
| 启动类 | smart-hospital\src\main\java\com\hospital\SmartHospitalApplication.java |
| 配置 | smart-hospital\src\main\resources\application.yml |
| 构建 | smart-hospital\pom.xml |
| 数据库脚本 | smart——hospital.sql |
| AI 诊断服务 | smart-hospital\src\main\java\com\hospital\service\AIDiagnosisService.java |
| 决策支持服务 | smart-hospital\src\main\java\com\hospital\service\DecisionSupportService.java |
| 页面控制器 | smart-hospital\src\main\java\com\hospital\controller\PageController.java |
12. 总体评价
一个结构规范、覆盖完整业务链条的教学演示项目。核心技术栈标准(Spring Boot + JPA + Thymeleaf + MySQL),业务模型设计得体,但在安全、权限、真实 AI 能力、异常处理和 CRUD 完整度方面都存在明显扩展空间。
非常适合作为二次开发或课程改造的起点。