温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!

 1. 项目背景与意义

随着我国人口老龄化进程不断加快,养老服务的需求日益增长。传统养老院在人员管理、健康监测、服务调度、家属沟通等方面普遍存在信息孤岛、响应滞后、管理效率低等问题。如何借助信息化手段提升养老机构的综合服务能力,已成为养老服务行业转型升级的重要课题。

本课题基于 SpringBoot 技术栈,设计并实现一套养老院综合服务智能体系,旨在整合老人档案管理、健康数据监测、护理任务派发、床位与费用管理、家属互动等核心业务模块,构建一个统一、高效、可扩展的数字化管理平台。该系统的落地应用,有助于降低养老院运营成本、提升护理服务质量、增强老人与家属的满意度,具有较强的现实意义和应用价值。

2. 技术栈选型

本系统采用前后端分离的开发模式,后端以 SpringBoot 为核心框架,前端采用 Vue 生态,数据库选用 MySQL,并辅以 Redis 缓存和 WebSocket 实时通信,整体技术选型如下:

层次技术选型说明
后端框架SpringBoot 2.7.x快速构建 RESTful 服务,简化配置与部署
持久层MyBatis-Plus简化 CRUD 操作,内置分页与条件构造器
数据库MySQL 8.0存储业务核心数据,支持事务与索引优化
缓存Redis缓存热点数据,如登录会话、健康预警状态
实时通信WebSocket实现健康异常告警、护理任务提醒的实时推送
前端框架Vue 3 + Element Plus构建管理后台界面,组件化开发
权限认证Spring Security + JWT实现基于角色的接口访问控制
接口文档Knife4j(Swagger)自动生成在线接口调试文档

3. 系统总体设计

3.1 系统角色划分

系统面向养老院实际业务场景,设计了四类核心角色:

  • 系统管理员:负责员工账号管理、角色权限配置、基础数据维护。
  • 护理人员:接收护理任务、填写护理记录、上报老人健康异常。
  • 老人家属:查看老人健康档案、接收异常告警、在线留言互动。
  • 值班医生:查看健康监测数据、处理健康预警、给出诊疗建议。

3.2 功能模块划分

系统整体划分为以下核心功能模块:

  • 老人档案管理:维护老人基本信息、入住信息、家属联系方式、既往病史等。
  • 健康监测管理:对接智能手环等设备,采集心率、血压、血氧等体征数据。
  • 护理任务管理:支持护理任务创建、派发、执行、完成的全流程跟踪。
  • 床位与费用管理:管理床位分配、入住费用、缴费记录与账单查询。
  • 告警中心:对异常体征数据实时预警,并推送至护理人员与家属。
  • 家属互动平台:提供留言、探视预约、健康报告查看等功能。
  • 系统管理:包含用户管理、角色管理、菜单权限、操作日志等。

3.3 数据库设计

系统核心数据表包括老人信息表、员工表、健康监测记录表、护理任务表、床位表、费用账单表、告警记录表等。以下为老人信息表与健康监测记录表的核心字段设计:

-- 老人信息表
CREATE TABLE elder_info (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL COMMENT '老人姓名',
    gender TINYINT COMMENT '性别 0-女 1-男',
    age INT COMMENT '年龄',
    id_card VARCHAR(18) COMMENT '身份证号',
    phone VARCHAR(20) COMMENT '联系电话',
    bed_id BIGINT COMMENT '床位ID',
    health_status VARCHAR(255) COMMENT '健康状态描述',
    emergency_contact VARCHAR(50) COMMENT '紧急联系人',
    emergency_phone VARCHAR(20) COMMENT '紧急联系电话',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 健康监测记录表
CREATE TABLE health_record (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
elder_id BIGINT NOT NULL COMMENT '老人ID',
heart_rate INT COMMENT '心率',
blood_pressure_high INT COMMENT '收缩压',
blood_pressure_low INT COMMENT '舒张压',
blood_oxygen INT COMMENT '血氧饱和度',
temperature DECIMAL(4,1) COMMENT '体温',
record_time DATETIME COMMENT '采集时间',
is_abnormal TINYINT DEFAULT 0 COMMENT '是否异常 0-正常 1-异常'
);

4. 核心功能实现

4.1 健康数据采集与异常预警

健康监测模块通过定时任务或设备上报接口接收体征数据,并调用预警规则引擎判断数据是否异常。以下为健康数据接收与预警判断的核心代码:

@RestController
@RequestMapping("/api/health")
public class HealthRecordController {
@Resource
private HealthRecordService healthRecordService;
@Resource
private AlertService alertService;
/**
接收智能设备上报的健康监测数据
*/
@PostMapping("/report")
public Result<Boolean> report(@RequestBody HealthRecordDTO dto) {
HealthRecord record = new HealthRecord();
BeanUtils.copyProperties(dto, record);
record.setRecordTime(LocalDateTime.now());
// 保存体征数据
healthRecordService.save(record);
// 判断是否触发预警
boolean abnormal = alertService.checkAndAlert(record);
return Result.success(abnormal);
}
}

预警规则引擎根据体征阈值判断异常,并异步推送告警消息至护理人员与家属端:

@Service
public class AlertServiceImpl implements AlertService {
@Resource
private ElderInfoMapper elderInfoMapper;
@Resource
private WebSocketService webSocketService;
@Override
public boolean checkAndAlert(HealthRecord record) {
boolean abnormal = false;
// 心率异常判断
if (record.getHeartRate() != null
        && (record.getHeartRate() > 120 || record.getHeartRate() < 50)) {
    abnormal = true;
}

// 血压异常判断
if (record.getBloodPressureHigh() != null
        && record.getBloodPressureHigh() > 160) {
    abnormal = true;
}

// 血氧异常判断
if (record.getBloodOxygen() != null && record.getBloodOxygen() < 90) {
    abnormal = true;
}

if (abnormal) {
    // 查询老人及家属信息
    ElderInfo elder = elderInfoMapper.selectById(record.getElderId());
    // 构建告警消息并通过 WebSocket 推送
    String message = String.format("老人【%s】体征异常,请及时查看!", elder.getName());
    webSocketService.pushAlert(elder.getId(), message);
}
return abnormal;
}
}

4.2 护理任务派发与跟踪

护理任务模块支持管理员创建任务并指派给指定护理人员,护理人员可在移动端或管理后台查看待办任务并更新执行状态。以下为任务派发接口的核心实现:

@Service
public class CareTaskServiceImpl implements CareTaskService {
@Resource
private CareTaskMapper careTaskMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void assignTask(CareTask task) {
// 校验任务参数
if (task.getElderId() == null || task.getNurseId() == null) {
throw new BusinessException("老人和护理人员不能为空");
}
task.setStatus(TaskStatus.PENDING.getCode());
task.setCreateTime(LocalDateTime.now());
careTaskMapper.insert(task);

// 记录操作日志
log.info("护理任务已派发:任务ID={},护理人员ID={}", task.getId(), task.getNurseId());
}
@Override
public void completeTask(Long taskId, String remark) {
CareTask task = careTaskMapper.selectById(taskId);
if (task == null) {
throw new BusinessException("任务不存在");
}
task.setStatus(TaskStatus.COMPLETED.getCode());
task.setRemark(remark);
task.setFinishTime(LocalDateTime.now());
careTaskMapper.updateById(task);
}
}

4.3 基于 JWT 的登录认证

系统采用 Spring Security 与 JWT 实现无状态认证。用户登录成功后签发 Token,后续请求通过拦截器校验 Token 并解析用户身份。以下为 JWT 工具类核心代码:

@Component
public class JwtUtil {
@Value("${jwt.secret}")
private String secret;
@Value("${jwt.expire}")
private Long expire;
/**
生成 Token
*/
public String generateToken(Long userId, String username, String role) {
return Jwts.builder()
.setSubject(username)
.claim("userId", userId)
.claim("role", role)
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + expire))
.signWith(SignatureAlgorithm.HS256, secret)
.compact();
}
/**
解析 Token
*/
public Claims parseToken(String token) {
return Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody();
}
/**
校验 Token 是否有效
*/
public boolean validateToken(String token) {
try {
parseToken(token);
return true;
} catch (Exception e) {
return false;
}
}
}

4.4 WebSocket 实时告警推送

系统通过 WebSocket 实现健康异常告警的实时推送,护理人员与家属端无需刷新页面即可收到最新告警信息。以下为 WebSocket 服务端核心实现:

@Component
public class WebSocketService {
private static final Map<Long, Session> SESSION_MAP = new ConcurrentHashMap<>();
/**
建立连接
*/
@OnOpen
public void onOpen(Session session, @PathParam("userId") Long userId) {
SESSION_MAP.put(userId, session);
log.info("用户连接成功:userId={}", userId);
}
/**
关闭连接
*/
@OnClose
public void onClose(@PathParam("userId") Long userId) {
SESSION_MAP.remove(userId);
log.info("用户断开连接:userId={}", userId);
}
/**
推送告警消息
*/
public void pushAlert(Long userId, String message) {
Session session = SESSION_MAP.get(userId);
if (session != null && session.isOpen()) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
log.error("WebSocket 推送失败", e);
}
}
}
}

5. 系统测试与总结

本系统完成了养老院综合服务智能体系的核心功能开发,涵盖老人档案管理、健康监测、护理任务、告警推送、家属互动等模块。通过接口测试与功能验证,系统各模块运行稳定,健康数据采集与异常预警能够实时响应,护理任务流转顺畅,达到了预期的设计目标。

后续可从以下方向继续优化:一是引入机器学习算法对健康数据进行趋势预测,实现更智能的疾病风险预警;二是开发移动端小程序,方便护理人员与家属随时随地使用;三是完善数据可视化大屏,为养老院管理层提供更直观的运营决策支持。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐