葉汪洋,丁柯軍,張晨曦,胡涵寧,陳 萌
(寧波工程學(xué)院 網(wǎng)絡(luò)空間安全學(xué)院(計(jì)算機(jī)學(xué)院),浙江 寧波 315211)
心血管疾病是一種嚴(yán)重威脅人類(lèi)健康的常見(jiàn)病,常見(jiàn)于50歲以上的中老年人群體,具有高患病率、高致殘率和高死亡率的特點(diǎn)[1]。在最近幾年的調(diào)查和研究中發(fā)現(xiàn),心血管疾病已逐漸向低齡化發(fā)展。在年輕人群中,從事非體力勞動(dòng)者的都市白領(lǐng)患病最為常見(jiàn),其患病概率是普通人群的2~3倍。同時(shí),年輕人群因心血管能力不足而出現(xiàn)猝死的極端現(xiàn)象越來(lái)越多[2]。
大學(xué)生正處于人生中生長(zhǎng)發(fā)育的重要階段,但同時(shí)也長(zhǎng)期面臨著學(xué)習(xí)、就業(yè)等各方面壓力。不僅如此,失眠、網(wǎng)絡(luò)成癮等影響身體健康的問(wèn)題在大學(xué)人群中也是屢見(jiàn)不鮮[3],在各種因素的綜合作用下,近年來(lái)大學(xué)生在運(yùn)動(dòng)中發(fā)生猝死的極端現(xiàn)象頻頻發(fā)生。為了使青年學(xué)生在選擇適合自己的運(yùn)動(dòng)方式,提高運(yùn)動(dòng)安全性的同時(shí),有效提升心血管能力,減少大學(xué)生心血管疾病的患病率,本文基于團(tuán)隊(duì)自構(gòu)建的心電數(shù)據(jù)庫(kù),使用前后端分離、統(tǒng)計(jì)分析等技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了1個(gè)大學(xué)生心血管機(jī)能評(píng)估系統(tǒng)[4]。
隨著程序設(shè)計(jì)技術(shù)的不斷發(fā)展,人們對(duì)軟件開(kāi)發(fā)的步驟、分工趨向于專(zhuān)業(yè)化、細(xì)致化,同時(shí),對(duì)系統(tǒng)的效率、性能的要求也越來(lái)越高[5]。在這種情況下,前后端分離的開(kāi)發(fā)技術(shù)應(yīng)運(yùn)而生,這種技術(shù)讓前端與后端的開(kāi)發(fā)相對(duì)獨(dú)立、互不干擾,提高程序的設(shè)計(jì)效率。
本文采用基于前后端分離的B/S架構(gòu)進(jìn)行開(kāi)發(fā)。前端基于Vue框架進(jìn)行設(shè)計(jì),通過(guò)Vue路由和Axios進(jìn)行請(qǐng)求,使用ElementUⅠ進(jìn)行頁(yè)面美化,提升用戶(hù)使用體驗(yàn)。后端使用SpringBoot框架進(jìn)行開(kāi)發(fā)。在小程序的開(kāi)發(fā)中,使用微信小程序官方封裝的請(qǐng)求應(yīng)用程序編程接口(APⅠ),提升接口的可讀性和安全性。
基于微信小程序、PC網(wǎng)頁(yè)端和前后端分離技術(shù),結(jié)合心電信號(hào)數(shù)據(jù)采集方式和運(yùn)動(dòng)評(píng)估特點(diǎn),并充分考慮了師生和工作人員的使用需求,如圖1所示,本文采用分層思想將系統(tǒng)架構(gòu)從上到下共分為4個(gè)層次:用戶(hù)層、業(yè)務(wù)層、數(shù)據(jù)庫(kù)和運(yùn)行環(huán)境。
圖1 系統(tǒng)架構(gòu)圖
用戶(hù)層:位于分層架構(gòu)的頂層,用戶(hù)可以直接訪問(wèn)。本文中,用戶(hù)層包含微信小程序和PC網(wǎng)頁(yè)端2部分,學(xué)生主要通過(guò)微信小程序訪問(wèn)系統(tǒng),管理員主要通過(guò)PC網(wǎng)頁(yè)端訪問(wèn)系統(tǒng)。
業(yè)務(wù)層:邏輯層,對(duì)具體事件進(jìn)行處理,主要進(jìn)行邏輯判斷與執(zhí)行操作,連接用戶(hù)層和數(shù)據(jù)庫(kù),實(shí)現(xiàn)兩層間的數(shù)據(jù)處理和指令傳達(dá)。本文在此處劃分了2個(gè)子系統(tǒng)——學(xué)生端和管理端。
數(shù)據(jù)庫(kù):按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)。本文建立了MySQL主庫(kù)、MySQL從庫(kù)和Redis緩存3個(gè)數(shù)據(jù)庫(kù)。
運(yùn)行環(huán)境:系統(tǒng)運(yùn)行所依靠的機(jī)器設(shè)備、操作系統(tǒng)和虛擬環(huán)境等。本文使用騰訊云服務(wù)器+Docker(PaaS提供商dotCloud開(kāi)源的一個(gè)基于LXC的高級(jí)容器引擎)技術(shù)進(jìn)行部署。
本系統(tǒng)中最主要的一項(xiàng)功能——心血管機(jī)能評(píng)估的主要流程如圖2所示,首先通過(guò)手環(huán)或心電監(jiān)護(hù)儀采集大量運(yùn)動(dòng)前后的心電信號(hào)、血壓和血氧等數(shù)據(jù),將數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理后用于機(jī)器學(xué)習(xí),最終獲得心血管機(jī)能評(píng)估模型。之后,系統(tǒng)再次通過(guò)手環(huán)或心電監(jiān)護(hù)儀采集學(xué)生的相關(guān)心電數(shù)據(jù),并將其傳入心血管機(jī)能評(píng)估模型,最終得到評(píng)估結(jié)果及建議,學(xué)生可通過(guò)小程序查詢(xún)自己的心血管機(jī)能評(píng)估結(jié)果,并參考系統(tǒng)給出的建議。
圖2 心血管機(jī)能評(píng)估流程圖
本文研究團(tuán)隊(duì)自2019年以來(lái),建立了大學(xué)生健康群體,長(zhǎng)時(shí)間跨度的心電信號(hào)(ECG)數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)的ECG信號(hào)采集對(duì)象為18~22周歲的大學(xué)生志愿者,采集的時(shí)間間隔為首次、1個(gè)月后、3個(gè)月后和6個(gè)月后這4個(gè)時(shí)間點(diǎn)。
數(shù)據(jù)采集使用邁瑞N12監(jiān)護(hù)儀,設(shè)備采集頻率設(shè)置為500 Hz,將4個(gè)電極置于采集部位RA、RL、LA和LL,心臟跳動(dòng)信號(hào)經(jīng)過(guò)人體組織傳導(dǎo)到體表,通過(guò)監(jiān)護(hù)儀的電極接收信號(hào)并將其標(biāo)注在時(shí)間軸上形成心電圖[6]。
在數(shù)據(jù)預(yù)處理過(guò)程中,由原始的ECG信號(hào)數(shù)據(jù)處理得到R-R間隔、全部竇性心搏RR間期的標(biāo)準(zhǔn)差(SDNN)、平均心率和RR間隔均方根等基礎(chǔ)數(shù)據(jù)。大學(xué)生體質(zhì)檢測(cè)包含很多項(xiàng)目,挑選容易產(chǎn)生猝死問(wèn)題的長(zhǎng)跑與處理后的ECG基礎(chǔ)數(shù)據(jù),通過(guò)皮爾森相關(guān)系數(shù)(Pearson)進(jìn)行相關(guān)性分析[7]。
分析公式如下所示
式中:變量X,Y分別為平均心率和長(zhǎng)跑體測(cè)成績(jī);N為樣本數(shù)量;Σ為求和符號(hào);cov為協(xié)方差計(jì)算,通過(guò)計(jì)算得出X,Y,XY,X2,Y2的數(shù)學(xué)期望(平均值),再使用公式求出的相關(guān)性系數(shù)ρx,y記為r值。r的取值總是在-1.0~1.0,接近0的變量被稱(chēng)為無(wú)相關(guān)性,且相關(guān)性系數(shù)的絕對(duì)值越大,相關(guān)性越強(qiáng)。
本文的實(shí)驗(yàn)數(shù)據(jù)來(lái)自于33名不區(qū)分性別大學(xué)生,對(duì)志愿者的首次、1個(gè)月后、3個(gè)月后和6個(gè)月后四輪ECG數(shù)據(jù),計(jì)算了其SDNN、平均心率和RR間隔的Pearson相關(guān)系數(shù)(常用r表示)和顯著性水平(p-value),以此來(lái)分析大學(xué)生不同時(shí)間間隔情況下ECG的SDNN、平均心率和RR間隔與長(zhǎng)跑成績(jī)之間的相關(guān)性。當(dāng)r>0時(shí),表示兩者有正相關(guān)關(guān)系;r<0時(shí),表示兩者有負(fù)相關(guān)關(guān)系;當(dāng)r=0時(shí),表示兩者不是線性相關(guān)的。p-value越小,表示相關(guān)系數(shù)越顯著,一般p-value在500個(gè)樣本以上時(shí)有較高的可靠性。
表1、表2和表3分別為SDNN、平均心率和RR間隔與長(zhǎng)跑成績(jī)之間的皮爾森相關(guān)系數(shù)的比較值。
表1 SDNN與長(zhǎng)跑的皮爾森相關(guān)系數(shù)比較
表2 平均心率與長(zhǎng)跑成績(jī)相關(guān)系數(shù)比較
表3 RR間隔均方根與長(zhǎng)跑成績(jī)相關(guān)系數(shù)比較
由表1可以看出,大部分ECG數(shù)據(jù)的SDNN與長(zhǎng)跑成績(jī)存在正相關(guān)關(guān)系,但3個(gè)月后運(yùn)動(dòng)前(r)的ECG的SDNN卻表現(xiàn)出了負(fù)相關(guān),同時(shí)此數(shù)據(jù)的p-value較大,則此r值參考價(jià)值不高??偟膩?lái)看,SDNN與長(zhǎng)跑成績(jī)間的相關(guān)性雖存在一定的正相關(guān),但相關(guān)性并不強(qiáng),但心率變異性的其他指標(biāo)是否與長(zhǎng)跑數(shù)據(jù)存在相關(guān)性還需要進(jìn)一步研究。
在運(yùn)動(dòng)事件中,心率通常能夠用來(lái)反映運(yùn)動(dòng)強(qiáng)度和生理負(fù)荷量。表2、表3實(shí)驗(yàn)結(jié)果表明,平均心率與大學(xué)生長(zhǎng)跑體測(cè)成績(jī)的變化,以及RR間隔均方根與大學(xué)生長(zhǎng)跑體測(cè)成績(jī)的變化均同樣呈現(xiàn)高度相關(guān)性。前者的皮爾森相關(guān)系數(shù)最高可達(dá)0.8左右,后者的皮爾森相關(guān)系數(shù)最高可達(dá)0.59左右,均高于0.5的相關(guān)性評(píng)價(jià)閾值,屬于強(qiáng)相關(guān)。因此,平均心率及RR間隔均方根對(duì)于大學(xué)生的長(zhǎng)跑體測(cè)成績(jī)都具有一定的預(yù)測(cè)作用。
模型將各類(lèi)機(jī)器學(xué)習(xí)算法進(jìn)行融合。把ECG基礎(chǔ)數(shù)據(jù)庫(kù)中的RR間隔均方根與平均心率數(shù)據(jù)輸入模型,并訓(xùn)練得到最終結(jié)果,即大學(xué)生體質(zhì)測(cè)試長(zhǎng)跑預(yù)估成績(jī)(0~100分)。
將優(yōu)化好的模型部署到深度學(xué)習(xí)服務(wù)器中,并提供接口給后端調(diào)用,最終學(xué)生可以在小程序平臺(tái)看到自己的體質(zhì)測(cè)試長(zhǎng)跑預(yù)估成績(jī)。系統(tǒng)還會(huì)根據(jù)ECG基礎(chǔ)數(shù)據(jù)及不同的長(zhǎng)跑特測(cè)預(yù)估分?jǐn)?shù)給不同分段的學(xué)生提供不同的運(yùn)動(dòng)建議。系統(tǒng)部署圖如圖3所示。應(yīng)用服務(wù)器中Nginx是一個(gè)輕量級(jí)的HTTP和反向代理web服務(wù)器;Rabbit MQ中文名消息隊(duì)列,其是實(shí)現(xiàn)了高級(jí)消息隊(duì)列協(xié)議(AMQP)開(kāi)源消息代理軟件,是程序間消息的中間件;Spring Boot中文名斯普瑞布特,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化Spring(JAVA開(kāi)發(fā)框架)應(yīng)用的搭建開(kāi)發(fā)過(guò)程;Redis中文名遠(yuǎn)程字典服務(wù),其是一款高性能的Key-Value數(shù)據(jù)庫(kù);MyBatis的主要功能是將數(shù)據(jù)庫(kù)查詢(xún)代碼與代碼程序分離,提高軟件的可維護(hù)性。
圖3 系統(tǒng)UML部署圖
根據(jù)評(píng)估結(jié)果得到的分?jǐn)?shù)給出運(yùn)動(dòng)建議,分?jǐn)?shù)低的,建議平時(shí)加強(qiáng)運(yùn)動(dòng)以提高心血管機(jī)能水平,可堅(jiān)持每天一定時(shí)長(zhǎng)的有氧運(yùn)動(dòng),增加脂肪消耗,防止動(dòng)脈硬化,從而降低心腦血管疾病的病發(fā)率。學(xué)生可根據(jù)手環(huán)采集到的瞬時(shí)數(shù)據(jù)與過(guò)往數(shù)據(jù)對(duì)比,手環(huán)發(fā)現(xiàn)異常(如心率過(guò)高、血氧血壓水平不正常)發(fā)出警報(bào)時(shí),建議立刻停止當(dāng)前運(yùn)動(dòng)。評(píng)估分?jǐn)?shù)高的則認(rèn)為心血管機(jī)能較好,學(xué)生需保持健康生活及適量運(yùn)動(dòng)。
綜上所述,本文基于團(tuán)隊(duì)自構(gòu)建的心電數(shù)據(jù)庫(kù),使用前后端分離、統(tǒng)計(jì)分析等技術(shù)設(shè)計(jì)的大學(xué)生心血管機(jī)能評(píng)估系統(tǒng)能夠使青年學(xué)生了解自己可能達(dá)到的運(yùn)動(dòng)成績(jī)極限與心血管機(jī)能水平,在進(jìn)行高強(qiáng)度運(yùn)行時(shí),當(dāng)達(dá)到運(yùn)動(dòng)預(yù)測(cè)極限成績(jī)時(shí),適時(shí)進(jìn)行調(diào)整,避免發(fā)生嚴(yán)重的運(yùn)動(dòng)傷害事件。