基于SpringBoot2+vue2的社区医院管理系统
温馨提示:
本文最后更新于 2026年05月28日,已超过 13 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
1. 提示
浏览全文获取资源
2. 项目简介
本项目为社区医院管理系统(项目名:shequyiyuan),基于 Spring Boot + MyBatis-Plus + Vue 框架开发。系统面向社区医疗机构,提供多角色(管理员、用户、医生、前台)协同工作平台,实现病例管理、健康档案管理、就诊挂号、药品管理、家庭医生管理等功能,旨在提升社区卫生服务的信息化水平。
3. 技术栈
| 层级 | 技术选型 |
|---|---|
| 后端框架 | Spring Boot 2.2.2.RELEASE |
| ORM | MyBatis-Plus 2.3 |
| 安全控制 | Apache Shiro 1.3.2 + Token 拦截器 |
| 数据库 | MySQL 5.7.32 |
| 前端框架 | Vue 2.x + Element UI |
| HTTP 请求 | Axios |
| 图表 | ECharts |
| 工具库 | Hutool、FastJson、POI(Excel导入导出)、百度AI(人脸比对) |
| 构建工具 | Maven |
4. 详细介绍
系统共包含 四种角色:管理员、用户、医生、前台。各角色拥有不同的功能权限。
4.1 核心功能模块
| 模块 | 功能说明 | 对应数据库表 |
|---|---|---|
| 用户管理 | 用户注册、登录、个人信息维护、假删除 | yonghu |
| 医生管理 | 医生信息维护(工号、姓名、科室、联系方式等)、密码重置 | yisheng |
| 前台管理 | 前台工作人员账号管理 | qiantai |
| 家庭医生管理 | 家庭医生负责人信息维护 | jiatingyisheng |
| 病例信息管理 | 记录病例编号、名称、病情、检查项目/结果、药单、附件、主治医生等 | bingli |
| 健康档案管理 | 按档案单位(家庭/个人/特殊人群)记录用户健康状况、其他成员 | jiuankangdangan |
| 就诊信息管理 | 用户挂号(选择科室、填写备注、费用)、生成就诊号 | jiuzhen |
| 药品管理 | 药品编号、名称、价格、库存、药效、副作用、详情维护 | yaopin |
| 字典表管理 | 维护系统下拉选项(科室、性别、档案单位等) | dictionary |
| 管理员管理 | 后台管理员账号管理 | users |
| Token认证 | 基于 JWT 风格 Token 的登录鉴权,支持自动过期 | token |
4.2 数据库设计
数据库名为 shequyiyuan,包含以下主要数据表:
bingli:病例信息jiatingyisheng:家庭医生jiuankangdangan:健康档案jiuzhen:就诊信息qiantai:前台yaopin:药品yisheng:医生yonghu:用户dictionary:字典表token:登录令牌users:管理员config:系统配置
所有表均采用 UTF-8 编码,主键自增,并包含 create_time 等审计字段。
4.3 角色权限(基于 menu.js 配置)
| 角色 | 可访问模块 |
|---|---|
| 管理员 | 管理员管理、病例信息、基础数据(档案单位/科室)、家庭医生、健康档案、就诊信息、前台、药品、医生、用户(完整增删改查) |
| 用户 | 病例信息(只读)、家庭医生(只读)、健康档案(增删改查)、就诊信息(只读)、药品(只读) |
| 医生 | 病例信息(增删改查)、健康档案(只读)、就诊信息(只读)、药品(只读) |
| 前台 | 病例信息(只读)、健康档案(只读)、就诊信息(增删改查)、药品(只读) |
4.4 系统接口风格
- 采用 RESTful 风格,统一返回
R对象(code/msg/data)。 - 支持分页查询(
/page接口),支持多条件模糊搜索、排序。 - 支持 Excel 批量导入(通过
/batchInsert接口)。 - 文件上传下载统一由
/file/upload和/file/download处理。 - 使用
@IgnoreAuth注解标记无需登录验证的接口(如登录、注册)。
5. 部分代码
5.1 后端 Controller 示例(病例信息)
// BingliController.java
@RestController
@RequestMapping("/bingli")
public class BingliController {
@Autowired
private BingliService bingliService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
// 角色权限控制:用户/医生只能看到自己的数据
String role = String.valueOf(request.getSession().getAttribute("role"));
if("用户".equals(role))
params.put("yonghuId", request.getSession().getAttribute("userId"));
else if("医生".equals(role))
params.put("yishengId", request.getSession().getAttribute("userId"));
PageUtils page = bingliService.queryPage(params);
// 字典值转换
List<BingliView> list = (List<BingliView>)page.getList();
for(BingliView c: list){
dictionaryService.dictionaryConvert(c, request);
}
return R.ok().put("data", page);
}
@RequestMapping("/save")
public R save(@RequestBody BingliEntity bingli, HttpServletRequest request){
// 自动填充用户/医生id
String role = String.valueOf(request.getSession().getAttribute("role"));
if("用户".equals(role)) bingli.setYonghuId(...);
else if("医生".equals(role)) bingli.setYishengId(...);
// 防重校验
Wrapper<BingliEntity> queryWrapper = new EntityWrapper<BingliEntity>()
.eq("bingli_uuid_number", bingli.getBingliUuidNumber())
.eq("bingli_name", bingli.getBingliName());
if(bingliService.selectOne(queryWrapper) == null){
bingli.setCreateTime(new Date());
bingliService.insert(bingli);
return R.ok();
}
return R.error(511, "表中有相同数据");
}
}
5.2 MyBatis-Plus Mapper XML 示例(就诊信息联表查询)
<!-- JiuzhenDao.xml -->
<select id="selectListView" parameterType="map" resultType="com.entity.view.JiuzhenView">
SELECT
a.id, a.yonghu_id, a.jiuzhen_jiuzhen, a.jiuzhen_feiyong,
a.keshi_types, a.insert_time, a.jiuzhen_text, a.jiuzhen_content,
yonghu.yonghu_name, yonghu.yonghu_photo, yonghu.yonghu_phone
FROM jiuzhen a
LEFT JOIN yonghu ON a.yonghu_id = yonghu.id
<where>
<if test="params.yonghuId != null">
and a.yonghu_id = #{params.yonghuId}
</if>
<if test="params.jiuzhenJiuzhen != null and params.jiuzhenJiuzhen != ''">
and a.jiuzhen_jiuzhen like CONCAT('%',#{params.jiuzhenJiuzhen},'%')
</if>
</where>
order by a.${params.orderBy} desc
</select>
5.3 配置文件 application.yml
server:
port: 8080
servlet:
context-path: /shequyiyuan
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/shequyiyuan?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
username: root
password: 123456
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
typeAliasesPackage: com.entity
global-config:
id-type: 1
field-strategy: 2
db-column-underline: true
logic-delete-value: -1
logic-not-delete-value: 0
5.4 前端路由配置片段(router-static.js)
const routes = [{
path: '/index',
component: Index,
children: [
{ path: '/bingli', name: '病例信息', component: bingli },
{ path: '/jiuzhen', name: '就诊信息', component: jiuzhen },
{ path: '/yaopin', name: '药品', component: yaopin }
]
}, {
path: '/login',
component: Login
}];
6. 部分截图






















7. 项目总结
本社区医院管理系统是一个功能完备、角色清晰的医疗信息化平台,具有以下特点:
- 多角色协同:管理员、医生、用户、前台各司其职,权限分离明确。
- 数据完整性:通过字典表统一管理下拉选项,支持假删除(逻辑删除)保护数据。
- 高效查询:MyBatis-Plus 结合自定义 XML 实现复杂联表分页查询。
- 安全机制:Token 拦截器统一鉴权,支持忽略验证注解,密码默认加密(示例中为明文,可扩展)。
- 扩展性强:预留了 Excel 批量导入、百度 AI 人脸比对、地图定位等接口。
- 前端现代化:基于 Vue + Element UI,提供响应式后台管理界面,支持图表统计(ECharts)。
系统可满足社区卫生服务中心的日常业务需求,并具备良好的可维护性和二次开发基础。
正文到此结束
- 本文标签: Java Spring Boot 毕业设计
- 本文链接: https://blog.xiaobias.com/article/24
- 版权声明: 本文由十五喵原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
