叶汪洋,丁柯军,张晨曦,胡涵宁,陈 萌

(宁波工程学院 网络空间安全学院(计算机学院),浙江 宁波 315211)

心血管疾病是一种严重威胁人类健康的常见病,常见于50岁以上的中老年人群体,具有高患病率、高致残率和高死亡率的特点[1]。在最近几年的调查和研究中发现,心血管疾病已逐渐向低龄化发展。在年轻人群中,从事非体力劳动者的都市白领患病最为常见,其患病概率是普通人群的2~3倍。同时,年轻人群因心血管能力不足而出现猝死的极端现象越来越多[2]。

大学生正处于人生中生长发育的重要阶段,但同时也长期面临着学习、就业等各方面压力。不仅如此,失眠、网络成瘾等影响身体健康的问题在大学人群中也是屡见不鲜[3],在各种因素的综合作用下,近年来大学生在运动中发生猝死的极端现象频频发生。为了使青年学生在选择适合自己的运动方式,提高运动安全性的同时,有效提升心血管能力,减少大学生心血管疾病的患病率,本文基于团队自构建的心电数据库,使用前后端分离、统计分析等技术设计并实现了1个大学生心血管机能评估系统[4]。

1 系统总体设计

1.1 主要技术栈

随着程序设计技术的不断发展,人们对软件开发的步骤、分工趋向于专业化、细致化,同时,对系统的效率、性能的要求也越来越高[5]。在这种情况下,前后端分离的开发技术应运而生,这种技术让前端与后端的开发相对独立、互不干扰,提高程序的设计效率。

本文采用基于前后端分离的B/S架构进行开发。前端基于Vue框架进行设计,通过Vue路由和Axios进行请求,使用ElementUⅠ进行页面美化,提升用户使用体验。后端使用SpringBoot框架进行开发。在小程序的开发中,使用微信小程序官方封装的请求应用程序编程接口(APⅠ),提升接口的可读性和安全性。

1.2 系统架构

基于微信小程序、PC网页端和前后端分离技术,结合心电信号数据采集方式和运动评估特点,并充分考虑了师生和工作人员的使用需求,如图1所示,本文采用分层思想将系统架构从上到下共分为4个层次:用户层、业务层、数据库和运行环境。

图1 系统架构图

用户层:位于分层架构的顶层,用户可以直接访问。本文中,用户层包含微信小程序和PC网页端2部分,学生主要通过微信小程序访问系统,管理员主要通过PC网页端访问系统。

业务层:逻辑层,对具体事件进行处理,主要进行逻辑判断与执行操作,连接用户层和数据库,实现两层间的数据处理和指令传达。本文在此处划分了2个子系统——学生端和管理端。

数据库:按照数据结构来组织、存储和管理数据的仓库。本文建立了MySQL主库、MySQL从库和Redis缓存3个数据库。

运行环境:系统运行所依靠的机器设备、操作系统和虚拟环境等。本文使用腾讯云服务器+Docker(PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎)技术进行部署。

1.3 系统流程

本系统中最主要的一项功能——心血管机能评估的主要流程如图2所示,首先通过手环或心电监护仪采集大量运动前后的心电信号、血压和血氧等数据,将数据进行结构化处理后用于机器学习,最终获得心血管机能评估模型。之后,系统再次通过手环或心电监护仪采集学生的相关心电数据,并将其传入心血管机能评估模型,最终得到评估结果及建议,学生可通过小程序查询自己的心血管机能评估结果,并参考系统给出的建议。

图2 心血管机能评估流程图

2 主要功能模块实现

2.1 心血管机能评估模型

本文研究团队自2019年以来,建立了大学生健康群体,长时间跨度的心电信号(ECG)数据库。该数据库的ECG信号采集对象为18~22周岁的大学生志愿者,采集的时间间隔为首次、1个月后、3个月后和6个月后这4个时间点。

数据采集使用迈瑞N12监护仪,设备采集频率设置为500 Hz,将4个电极置于采集部位RA、RL、LA和LL,心脏跳动信号经过人体组织传导到体表,通过监护仪的电极接收信号并将其标注在时间轴上形成心电图[6]。

在数据预处理过程中,由原始的ECG信号数据处理得到R-R间隔、全部窦性心搏RR间期的标准差(SDNN)、平均心率和RR间隔均方根等基础数据。大学生体质检测包含很多项目,挑选容易产生猝死问题的长跑与处理后的ECG基础数据,通过皮尔森相关系数(Pearson)进行相关性分析[7]。

分析公式如下所示

式中:变量X,Y分别为平均心率和长跑体测成绩;N为样本数量;Σ为求和符号;cov为协方差计算,通过计算得出X,Y,XY,X2,Y2的数学期望(平均值),再使用公式求出的相关性系数ρx,y记为r值。r的取值总是在-1.0~1.0,接近0的变量被称为无相关性,且相关性系数的绝对值越大,相关性越强。

本文的实验数据来自于33名不区分性别大学生,对志愿者的首次、1个月后、3个月后和6个月后四轮ECG数据,计算了其SDNN、平均心率和RR间隔的Pearson相关系数(常用r表示)和显着性水平(p-value),以此来分析大学生不同时间间隔情况下ECG的SDNN、平均心率和RR间隔与长跑成绩之间的相关性。当r>0时,表示两者有正相关关系;r<0时,表示两者有负相关关系;当r=0时,表示两者不是线性相关的。p-value越小,表示相关系数越显着,一般p-value在500个样本以上时有较高的可靠性。

表1、表2和表3分别为SDNN、平均心率和RR间隔与长跑成绩之间的皮尔森相关系数的比较值。

表1 SDNN与长跑的皮尔森相关系数比较

表2 平均心率与长跑成绩相关系数比较

表3 RR间隔均方根与长跑成绩相关系数比较

由表1可以看出,大部分ECG数据的SDNN与长跑成绩存在正相关关系,但3个月后运动前(r)的ECG的SDNN却表现出了负相关,同时此数据的p-value较大,则此r值参考价值不高。总的来看,SDNN与长跑成绩间的相关性虽存在一定的正相关,但相关性并不强,但心率变异性的其他指标是否与长跑数据存在相关性还需要进一步研究。

在运动事件中,心率通常能够用来反映运动强度和生理负荷量。表2、表3实验结果表明,平均心率与大学生长跑体测成绩的变化,以及RR间隔均方根与大学生长跑体测成绩的变化均同样呈现高度相关性。前者的皮尔森相关系数最高可达0.8左右,后者的皮尔森相关系数最高可达0.59左右,均高于0.5的相关性评价阈值,属于强相关。因此,平均心率及RR间隔均方根对于大学生的长跑体测成绩都具有一定的预测作用。

2.2 模型训练与部署

模型将各类机器学习算法进行融合。把ECG基础数据库中的RR间隔均方根与平均心率数据输入模型,并训练得到最终结果,即大学生体质测试长跑预估成绩(0~100分)。

将优化好的模型部署到深度学习服务器中,并提供接口给后端调用,最终学生可以在小程序平台看到自己的体质测试长跑预估成绩。系统还会根据ECG基础数据及不同的长跑特测预估分数给不同分段的学生提供不同的运动建议。系统部署图如图3所示。应用服务器中Nginx是一个轻量级的HTTP和反向代理web服务器;Rabbit MQ中文名消息队列,其是实现了高级消息队列协议(AMQP)开源消息代理软件,是程序间消息的中间件;Spring Boot中文名斯普瑞布特,其设计目的是用来简化Spring(JAVA开发框架)应用的搭建开发过程;Redis中文名远程字典服务,其是一款高性能的Key-Value数据库;MyBatis的主要功能是将数据库查询代码与代码程序分离,提高软件的可维护性。

图3 系统UML部署图

2.3 运动建议

根据评估结果得到的分数给出运动建议,分数低的,建议平时加强运动以提高心血管机能水平,可坚持每天一定时长的有氧运动,增加脂肪消耗,防止动脉硬化,从而降低心脑血管疾病的病发率。学生可根据手环采集到的瞬时数据与过往数据对比,手环发现异常(如心率过高、血氧血压水平不正常)发出警报时,建议立刻停止当前运动。评估分数高的则认为心血管机能较好,学生需保持健康生活及适量运动。

3 结束语

综上所述,本文基于团队自构建的心电数据库,使用前后端分离、统计分析等技术设计的大学生心血管机能评估系统能够使青年学生了解自己可能达到的运动成绩极限与心血管机能水平,在进行高强度运行时,当达到运动预测极限成绩时,适时进行调整,避免发生严重的运动伤害事件。