屈曉,周挺,吳楷,林聲廣
(華南農業(yè)大學珠江學院,廣東廣州 510900)
一是醫(yī)療資源問題。目前農村醫(yī)療資源不足,技術比較落后。二是醫(yī)院空間分布問題。一些鄉(xiāng)村離醫(yī)院比較遠,甚至沒有醫(yī)院、診所,無法進行及時就醫(yī),去醫(yī)院成本較高。三是醫(yī)療系統(tǒng)人工智能化程度低[1]。醫(yī)院、診所沒有集醫(yī)療App 和硬件模式配合在一起的系統(tǒng),增加醫(yī)務人員工作難度以及患者的不便。
以人為本一直是團隊創(chuàng)作的出發(fā)點和落腳點,社會不斷進步,經(jīng)濟能力不斷提高,人們越來越意識到身體健康的重要。但是人們無論看大病還是小病都需要到醫(yī)院排隊掛號,還需要花費很長的時間,所以在工作繁忙時,大多數(shù)人就沒時間去醫(yī)院,長期以往還會造成了身體亞健康的狀態(tài)。綜上所述,本文開發(fā)一種基于嵌入式醫(yī)療設備配合醫(yī)療App,為用戶搭建一個良好的醫(yī)療平臺。
該系統(tǒng)分為硬件設計和App 設計。其他模塊功能根據(jù)兩大模塊進行擴展。功能層次結構圖如圖1所示。
圖1 功能層次結構圖
在登錄時,用戶可以通過賬號和密碼進行登錄操作,或者通過手機號進行驗證碼登錄,App 登錄流程模塊如圖2。
圖2 登錄流程圖
用戶進行登錄操作后進入測量數(shù)據(jù)頁面并連接硬件設備進行身體指標測量,同時將硬件測得的數(shù)據(jù)傳回App 測試數(shù)據(jù)頁面[2],圖3 是測試身體指標的流程圖。
圖3 測量身體指標流程圖
在整個系統(tǒng)中,STM32F103C8T6微控制器充當著主控制器的角色,通過各個模塊之間的協(xié)同配合,實現(xiàn)了對患者生理數(shù)據(jù)的實時采集、處理和傳輸。同時,系統(tǒng)的擴展性也非常強,可以通過增加或替換傳感器和模塊,實現(xiàn)更多功能的擴展和應用。硬件系統(tǒng)整體工作流程圖4所示。
圖4 硬件系統(tǒng)整體工作流程圖
通過需求分析可知,用戶測完數(shù)據(jù)時,對測量的數(shù)據(jù)進行保存,所以一個用戶可以對應多組數(shù)據(jù),另外用戶對系統(tǒng)的瀏覽,對所反饋的意見進行上傳,所以對反饋意見的表與用戶表也多對一關系,以此類推。根據(jù)App 功能的需實體對象建立相關關系構建數(shù)據(jù)庫模型,如圖5所示。
圖5 數(shù)據(jù)庫關系圖
App 的后端使用了SpringBoot+JWT+Redis+Spring Data JPA 構成了后端框架,這可以構成后端的持久性,安全性。
1)SpringBoot框架
后端層次分為接口層、服務層、數(shù)據(jù)庫層、工具層、異常處理層等。接口層是連通前端的橋梁,通過delete、post、get 發(fā)送請求。服務層是處理后端的邏輯代碼。數(shù)據(jù)庫層是直接與MySQL 連接的。工具層是裝有對一些邏輯處理的工具,例如返回的參數(shù)類、JWT工具類、Redis方法調用類等[3]。異常處理層是處理后端發(fā)生異常時進行捕獲。
2)JWT的運用
用戶在登錄成功后,根據(jù)JWT 的內置函數(shù)生成token。如果用戶想要訪問登錄以后才能訪問的模塊(比如個人中心),我們就可以驗證用戶發(fā)送的請求攜帶的token,如果沒有拋出異常,則說明已經(jīng)登錄過了,否則拒絕訪問,轉到登錄頁。
3)Redis的運用
本系統(tǒng)運用Redis 來緩存常訪問的值,減少了對數(shù)據(jù)庫的訪問,而且Redis 的訪問速度比MySQL 的訪問速度快。
4)Spring Data JPA的運用
本系統(tǒng)運用了Spring Data JPA對App的數(shù)據(jù)是實現(xiàn)了CRUD操作,對App的數(shù)據(jù)持有持久性。
Spring Data JPA 提供了一些常用的接口,如JpaRepository、JpaSpecificationExecutor 等,這些接口包含了很多常用的CRUD 操作方法,可直接繼承使用。同時,Spring Data JPA 還提供了基于方法命名規(guī)范的查詢方式,可以根據(jù)方法名自動生成相應的SQL 語句,并執(zhí)行查詢操作。這種方式可以大大減少編寫SQL 語句的工作量。
本系統(tǒng)使用此框架進行與數(shù)據(jù)庫的直接交互。
5)Postman的調用
后端通過Postman 調用controller 接口進行測試,檢測后端數(shù)據(jù)是否可以與前端通信。
前端框架運用Vue3.0進行部署,每一個組件通過路由渲染不同的數(shù)據(jù),同時運用Vant組件庫進行頁面的前端布局,調用Axios第三方庫對后端的數(shù)據(jù)進行通信,利用路由(router)進行頁面的跳轉。
1)Axios的運用
Axios 是一個基于Promise 的HTTP 庫,簡單地講就是可以發(fā)送get、post、delete等請求。可以將后端請求的數(shù)據(jù)渲染到前端。
2)router的運用
本系統(tǒng)引用router,進行頁面的跳轉,能前端頁面渲染不同的數(shù)據(jù)。并且利用路由守衛(wèi)來截取頁面是否獲取token以達到此App的安全性[4]。
3)Vant組件庫的調用本系統(tǒng)運用Vant的組件庫對前端頁面進行布局,例如搭建導航欄、列表、搜索框等。
該系統(tǒng)將STM32F103C8T6 作為系統(tǒng)的主控制元器件,它采用了ARM Cortex-M3內核,具有高速運算、低功耗和強大的通信接口等特點。在該系統(tǒng)中,STM32F103C8T6 通 過I2C 接 口 連 接MAX30102 傳 感器,用于實時監(jiān)測患者的心率和血氧濃度。同時,STM32F103C8T6 還通過1-wire 接口連接DS18B20 溫度傳感器,用于實時監(jiān)測患者的體溫變化。蜂鳴器是該系統(tǒng)的報警器,它通過PWM接口連接STM32F103C 8T6,用于在患者生命體征異常時進行聲音報警[5]。OLED 顯示屏通過SPI 接口連接STM32F103C8T6,用于顯示患者生命體征數(shù)據(jù)和其他信息。App 和HC-08藍牙模塊通過UART接口連接STM32F103C8T6,用于與App端進行數(shù)據(jù)交互和實現(xiàn)遠程控制。
此外,該系統(tǒng)還使用了按鍵設備,用于方便患者或醫(yī)護人員對系統(tǒng)進行操作和控制。按鍵通過GPIO接口連接STM32F103C8T6,實現(xiàn)對系統(tǒng)功能的快速切換和操作。系統(tǒng)的硬件框圖如圖6所示。
圖6 系統(tǒng)的硬件框圖
圖7 蜂鳴器引腳圖
蜂鳴器是一種能夠產生音頻信號的電子元件,它通常用于發(fā)出警報、提醒和提示等應用場合。蜂鳴器可分為有源蜂鳴器和無源蜂鳴器兩種類型。有源蜂鳴器需要外部電源供電,而無源蜂鳴器則不需要外部電源,它們利用自身共振頻率產生聲音。本系統(tǒng)采用的是有源蜂鳴器。本系統(tǒng)使用的蜂鳴器技術參數(shù)如表1所示。
表1 蜂鳴器的基本技術參數(shù)
蜂鳴器的PCB圖如7所示:
OLED顯示屏本身發(fā)光,因此不需要背光源,這使得OLED顯示屏更加薄型化,可彎曲,更加適用于移動設備、手表和可穿戴設備等應用場景。本系統(tǒng)中采用的是12864 OLED 顯示屏,該款顯示屏的技術參數(shù)如表2所示。
表2 OLED顯示屏的基本技術參數(shù)
OLED顯示屏的PCB布局如圖8所示:
圖8 OLED顯示屏引腳圖
用戶可以通過手機接收的驗證碼進行登錄或者通過賬號和密碼進行登錄,登錄成功后進入App界面進行操作反之繼續(xù)停留在登錄頁面。
圖9是登錄頁面的時序圖。
圖9 登錄時序圖
本系統(tǒng)的App與硬件設備通信是通過藍牙模塊,本系統(tǒng)的App與硬件測量設備是通過藍牙連接。
圖10是App與硬件設備的五個交接協(xié)議圖。
圖10 App與硬件通信圖
用戶可以在App端的測量數(shù)據(jù)頁面,進行連接硬件設備與身體指標的測量,在此頁面中,用戶點擊App啟動連接按鈕,當App顯示連接成功時,表示App與硬件連通,用戶可以利用硬件設備進行身體指標測量,然后用戶點擊App的相應參數(shù)按鈕將硬件測的數(shù)據(jù)傳回到App中進行保存。
如圖11是測量身體指標的時序圖。
圖11 身體指標測量的時序圖
前端利用Vue生命周期中的mounted來調取后端的爬蟲接口,后端的服務層進行函數(shù)邏輯處理進行對新聞的爬取。
如圖12是爬去今日時政的時序圖。
圖12 爬去今日時政的時序圖
為了能達到發(fā)出警報信息,并且能手動確認/取消警報信號,需要用到蜂鳴器、按鍵這兩個部件。上述兩個器件,在軟件配置中,較為簡單,因此一并介紹。
1) 配置IO 口:初始化蜂鳴器、按鍵的輸入端口號。
2)配置蜂鳴器:使用HAL_GPIO_WritePin 函數(shù)來控制GPIO輸出來控制蜂鳴器。
3) 配置按鍵:設置上/下沿觸發(fā),沿觸發(fā)蜂鳴器、按鍵等軟件初始化介紹。
由于MAX30102傳感器只能測量心率、血壓等信息,并不能精確測量體溫信息,為此,本系統(tǒng)添加了DS18B20模塊,作為溫度傳感器,用來測量體溫信息。以下是DS18B20初始化,使其正常工作的步驟。
1)配置GPIO 引腳:DS18B20 使用GPIO 引腳作為1-Wire 總線,需要將GPIO 引腳設置為輸出模式。使用GPIO_InitTypeDef結構體配置GPIO引腳,然后使用GPIO_Init()函數(shù)將配置應用于GPIO引腳。
2)發(fā)送初始化序列:在1-Wire 總線上通信之前,需要向DS18B20 發(fā)送初始化序列。初始化序列包括向1-Wire 總線發(fā)送復位脈沖,然后發(fā)送讀取ROM 代碼指令等。
3) 發(fā)送溫度轉換命令:將溫度轉換命令發(fā)送至DS18B20,啟動溫度轉換程序。
4) 讀取溫度數(shù)據(jù):溫度數(shù)據(jù)可由DS18B20 用1-Wire總線在完成溫度轉換后進行讀取。
測試用例:
測試目的是執(zhí)行App的相應的流程,保證系統(tǒng)的正常使用和安全性。同時發(fā)現(xiàn)系統(tǒng)存在的錯誤,及時修改和完善。本系統(tǒng)使用策略表,適用于邏輯判斷復雜的場景,通過相關條件獲得結果,進行優(yōu)化合并。
身體指標測量操作,如表3所示。
表3 測量身體指標測試
實物軟硬件模塊測試,如表4所示。
表4 實物軟硬件模塊測試表
本系統(tǒng)為Web 移動端搭配Stm32 嵌入式設備的一套系統(tǒng)設備,將開發(fā)系統(tǒng)部署在服務器上,實現(xiàn)不同移動端設備對此系統(tǒng)的使用,使用后端框架為SpringBoot+Spring Data JPA+Redis+JWT 和前端的Vue2.0。本系統(tǒng)提供對醫(yī)療設備的測量的操作,以及對硬件設備測量的數(shù)據(jù)進行保存操作,可以檢測人體的血壓、血氧、體溫、心率以及當達到閾值時,蜂鳴器報警進行功能??偟膩碚f,本系統(tǒng)為用戶提供了一個可以查看自己身體指標的平臺,為用戶了解自己的身體健康情況提供了便捷的渠道。