基于 Spring Boot + Vue3 的智能体检报告管理平台设计与实现
温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系名片!
一、项目背景与意义
随着健康管理意识的提升,体检已成为个人和企事业单位健康管理的重要环节。传统体检报告多以纸质或 PDF 形式发放,存在报告分散、查询困难、指标难以对比、异常项容易被忽视等问题。体检机构在报告录入、归档、统计和随访方面也面临大量重复性人工工作。
本项目基于 Spring Boot + Vue3 构建一套智能体检报告管理平台,面向体检机构与个人用户,提供报告数字化管理、指标结构化存储、异常项智能提示、历史趋势分析等能力,帮助机构提升运营效率,帮助用户更直观地理解自身健康状况。
二、系统目标与核心功能
平台围绕“报告录入—结构化解析—智能分析—可视化展示—健康随访”的闭环进行设计,主要功能模块如下:
- 用户与权限管理:支持管理员、体检医生、普通用户三类角色,基于 RBAC 模型进行菜单与接口级权限控制。
- 体检报告管理:支持报告新增、编辑、批量导入、归档与检索,报告与体检人、体检套餐、体检时间关联。
- 指标结构化解析:将报告中的检验项目拆分为结构化指标(项目名称、结果值、单位、参考区间、异常标识),便于统计与对比。
- 智能异常提示:依据参考区间自动判定偏高、偏低、危急值,并生成异常项汇总与健康建议。
- 历史趋势分析:对同一用户多次体检的同类指标进行折线趋势展示,辅助观察指标变化。
- 统计报表:按套餐、科室、时间段统计体检量、异常率等数据,支持图表展示与导出。
- 健康随访:对异常项用户生成随访任务,记录随访结果与建议。
三、技术选型
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 前端框架 | Vue3 + Vite | 组合式 API,构建速度快,开发体验好 |
| UI 组件库 | Element Plus | 提供表格、表单、弹窗等后台常用组件 |
| 状态与路由 | Pinia + Vue Router | 统一管理登录态与动态路由 |
| 图表可视化 | ECharts | 指标趋势折线图、统计柱状图与饼图 |
| 后端框架 | Spring Boot 3.x | 快速构建 RESTful 接口 |
| 持久层 | MyBatis-Plus | 简化单表 CRUD 与分页查询 |
| 数据库 | MySQL 8.0 | 存储用户、报告、指标等业务数据 |
| 缓存 | Redis | 缓存登录令牌与字典数据 |
| 鉴权 | Spring Security + JWT | 无状态认证与接口权限校验 |
| 文档 | Knife4j | 在线接口文档与调试 |
四、系统架构设计
系统采用前后端分离架构,前端通过 HTTP 调用后端 RESTful 接口,后端按 Controller、Service、Mapper 分层组织代码,整体结构清晰、便于扩展。
flowchart TD
A[Vue3 前端应用] -->|HTTP/JSON| B[Spring Boot 后端]
B --> C[Controller 层]
C --> D[Service 业务层]
D --> E[Mapper 持久层]
E --> F[(MySQL)]
D --> G[(Redis 缓存)]
B --> H[JWT 鉴权过滤器]
D --> I[智能分析模块]
I --> J[异常判定与健康建议]
其中智能分析模块独立封装,负责参考区间比对、异常等级判定与建议生成,后续可平滑替换为规则引擎或模型服务。
五、数据库设计
核心数据表设计如下,围绕“用户—体检记录—报告—指标”的主线组织:
| 表名 | 说明 | 关键字段 |
|---|---|---|
| sys_user | 系统用户表 | id、username、password、role、status |
| exam_person | 体检人信息表 | id、name、gender、age、phone、id_card |
| exam_record | 体检记录表 | id、person_id、package_id、exam_date、status |
| exam_report | 体检报告表 | id、record_id、summary、doctor_id、create_time |
| exam_indicator | 体检指标表 | id、report_id、item_name、result_value、unit、ref_range、abnormal_flag |
| follow_up | 随访任务表 | id、person_id、indicator_id、content、status、follow_time |
指标表通过 abnormal_flag 字段标记异常状态(0 正常、1 偏高、2 偏低、3 危急),便于快速筛选与统计。
六、核心功能实现
6.1 后端接口示例
以报告分页查询接口为例,Controller 层负责参数接收与统一响应封装:
@RestController
@RequestMapping("/api/report")
public class ExamReportController {
private final ExamReportService reportService;
public ExamReportController(ExamReportService reportService) {
this.reportService = reportService;
}
@GetMapping("/page")
public Result<Page<ExamReportVO>> page(ReportQuery query) {
return Result.success(reportService.pageQuery(query));
}
@GetMapping("/{id}")
public Result<ReportDetailVO> detail(@PathVariable Long id) {
return Result.success(reportService.getDetail(id));
}
}
6.2 异常指标判定逻辑
服务层根据指标结果值与参考区间进行比对,输出异常标识与提示信息:
public AbnormalResult judge(BigDecimal value, BigDecimal low, BigDecimal high) {
if (value == null) {
return AbnormalResult.normal();
}
if (low != null && value.compareTo(low) < 0) {
return AbnormalResult.of(2, "指标偏低,建议复查并咨询医生");
}
if (high != null && value.compareTo(high) > 0) {
return AbnormalResult.of(1, "指标偏高,建议结合临床进一步检查");
}
return AbnormalResult.normal();
}
6.3 前端报告列表页
前端使用 Vue3 组合式 API 与 Element Plus 表格组件实现报告列表,支持分页与条件筛选:
<template>
<el-table :data="reportList" v-loading="loading">
<el-table-column prop="personName" label="体检人" />
<el-table-column prop="examDate" label="体检日期" />
<el-table-column prop="abnormalCount" label="异常项数" />
<el-table-column label="操作">
<template #default="{ row }">
<el-button type="primary" link @click="viewDetail(row.id)">查看</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { getReportPage } from '@/api/report'
const reportList = ref([])
const loading = ref(false)
const loadData = async () => {
loading.value = true
try {
const res = await getReportPage({ pageNum: 1, pageSize: 10 })
reportList.value = res.data.records
} finally {
loading.value = false
}
}
onMounted(loadData)
</script>
七、关键难点与解决方案
- 报告数据非结构化:通过指标字典与解析规则,将报告文本拆分为结构化指标,保证后续统计与趋势分析可用。
- 参考区间差异:不同医院、不同性别年龄的参考区间不同,设计指标字典表按条件匹配参考区间,避免硬编码。
- 权限粒度控制:采用 RBAC 模型,结合 JWT 中的角色信息与后端注解校验,实现接口级权限控制。
- 大数据量查询:对体检日期、体检人姓名等常用查询字段建立索引,并对统计接口增加缓存。










八、总结与展望
本文围绕 Spring Boot + Vue3 技术栈,完成了智能体检报告管理平台的整体设计与核心功能实现,涵盖报告管理、指标结构化、异常判定、趋势分析与随访管理等模块。后续可进一步引入规则引擎实现更灵活的健康风险评估,并结合大模型能力生成个性化健康解读,提升平台的智能化水平。
更多推荐
所有评论(0)