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