1 项目介绍
1.1 摘要
当前我国正处理人口老龄化时期,根据人口迭代宏观仿真模型预测结果,我国于 2022 年进入深度老龄化社会,将于 2030 年迈入超级老龄化社会。党的二十大报告指出,要“实施积极应对人口老龄化国家战略,发展养老事业和养老产业”
。传统的养老产业主要依托人工实施,数据容易丢失并且效率低,随着信息化技术的发展通过互联网技术进行养老工作进行信息化管理不仅节约了人力成本,提供工作效率而且有效的保护了数据的安全。
本文设计和实现智慧健康养老系统,后端采用Java语言,框架采用目前流行的Spring Boot框架,安全框架采用的是Spring Security框架对用户密码进行加密以及对登录操作权限进行认证。
快速老龄化是当前我国人口结构的显著特点。根据人口迭代宏观仿真模型预
测结果,我国于 2022 年进入深度老龄化社会,将于 2030 年迈入超级老龄化社会。党的二十大报告指出,要“实施积极应对人口老龄化国家战略,发展养老事业和养老产业”[1]。我国老龄化持续加剧,同时出现基数大、高龄化、慢病化、失能多等特点,养老服务需求日益增加。据统计,2020 年我国失能老年人口为 4375 万人,预计到 2050 年将增加到 9140 万人。中国社会正面临着日益严重的老龄化趋势带来的巨大压力。随着国家计划生育基本政策和经济社会转型的发挥,家庭支撑功能不断减弱,而老年人对专业护理机构和社区的需求日益凸显[2]。中国老龄化社会形势严峻,老年慢性病管理、健康监测逐步成为大多数家庭时间、经济成本的主要负担,同时给医疗行业带来严峻挑战[3]。由国务院印发的《“十四五”国家老龄事业发展和养老服务体系规划》[4]中提出:在“十四五”时期,为了更好地应对当前的老龄化形势,整个社会应该积极构建新的养老模式,同时促进养老和产业的发展,建立快乐、安全和令人满意的养老体验,更好地改善养老体系和卫生系统,寻求高质量的合作模式[5,6]。该智慧健康养老服务管理系统的设计研究目的是为了提供全面、高效、个性化的养老服务,以满足老年人的健康和生活需求。具体来说,其研究目的包括以下几个方面:提高养老服务的质量和效率:通过智慧化的管理系统,可以实现养老服务的信息化、数字化和智能化,提高服务的质量和效率。系统可以自动化管理养老机构的各项工作,包括人员调度、健康监测、饮食管理等,减少人力资源的浪费,提高服务的响应速度和准确性。个性化的养老服务:智慧健康养老服务管理系统可以根据老年人的个体差异和需求,提供个性化的养老服务。系统可以根据老年人的健康状况和生活习惯,制定个性化的健康管理方案,并提供定制化的饮食、运动、医疗等服务,提高老年人的生活质量和幸福感。实现养老服务的智能化和远程化:智慧健康养老服务管理系统可以通过物联网、人工智能等技术,实现养老服务的智能化和远程化。老年人可以通过智能设备和手机应用,随时随地获取健康信息、咨询医生、预约服务等,方便快捷地享受养老服务[7]。
1.2 系统技术栈
Spring Security
Spring Boot
Maven
Shrio
MySQL
Vue
VueRout
ElementUI
Bootstrap
1.3 系统角色
管理员
用户
1.4系统功能框架图
智慧健康养老服务管理系统主要是为满足养老服务需要而设计的。因此该系统必须满足能够在浏览器上进行访问。通过采用B/S架构以及使用软件技术和各种方式达到支持智能化以及信息化的系统管理目的。
智慧健康养老服务管理系统,包括老人、医生以及管理员两个用户角色。平台注册的用户可以查看健康资讯、可以进行留言咨询以及电话咨询、查看体检信息,进行一键呼救等操作;医生可以管理老人的健康档案信息和医患进行交流以及对患者进行健康监测;管理者则可以通过登录后台系统查看健康档案信息、管理用户数据以及配置用户权限、管理医生信息、发布健康资讯。系统整体的功能图如下图4.1所示。
2 详细设计与实现
2.1 用户登录
管理员访问登录界面,在登录表单界面输入账号和密码点击登录系统发送请求登录系统。如图5.1所示。
管理员在输入账号和密码之后,页面会发送POST请求调用userController/loadUserByUserName接口将userName和passWord参数传到后台,后台调用selectList方法去数据库查询数据,如果该用户存在则将登录ip信息存到 Loginip表,然后返回登录成功信息。用户登录核心代码如下。
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
String loginFailFlag = LOGIN_FAIL_DISABLED_PRE + username;
String value = redisTemplate.opsForValue().get(loginFailFlag);
Long timeRest = redisTemplate.getExpire(loginFailFlag, TimeUnit.MINUTES);
if(!ZwzNullUtils.isNull(value)){
throw new BaseException("试错超限,请您在" + timeRest + "分钟后再登");
}
QueryWrapper<User> userQw = new QueryWrapper<>();
userQw.and(wrapper -> wrapper.eq("username", username).or().eq("mobile",username));
userQw.orderByDesc("create_time");
userQw.last("limit 1");
return new SecurityUserDetails(iUserService.getOne(userQw));
}
2.2 病历档案
管理员成功登录系统之后,点击病历档案页面,进入页面之后列表展示姓名、性别、手机号、病因、健康状态、诊断医生等信息。如图5.2所示。
管理员点击病历档案之后,页面发送请求调用BilingdanganController的 getMyPage接口。后端接受前端传的参数之后到数据库获取数据然后返回给前端展示,核心代码如下。
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询bingldanganxinxi")
public Result<IPage<Bilidanganxinxi>> getByPage(@ModelAttribute Bilidanganxinxi bilidanganxinxi ,@ModelAttribute PageVo page){
QueryWrapper<Bilidanganxinxi> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(bilidanganxinxi.getCreateBy())) {
}
IPage<Bilidanganxinxi> data = iBilidanganxinxiService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Bilidanganxinxi>>().setData(data);
}