张硕晨,张柏雯,林 岚,宾光宇,吴水才
(北京工业大学生命科学与生物工程学院,北京100124)
基于多参数可穿戴设备的健康管理平台的设计与实现⋆
张硕晨,张柏雯,林 岚,宾光宇,吴水才
(北京工业大学生命科学与生物工程学院,北京100124)
针对当前日益增长的健康监护需求,本文设计并实现了一套服务于多生理参数可穿戴式健康监护设备的网络服务器系统软件。从用户和医生需求的角度,本系统设计了数据库的基本架构、以PHP语言开发实现了账户管理、生理数据存储等功能。用户与医生移动终端能够通过本系统服务器交互,实现多参数可穿戴设备的健康监测、医生实时健康诊断及反馈等功能,可用于穿戴式设备的用户居家健康监测。
可穿戴设备;云计算;健康监护
随着我国经济的快速发展以及人民生活水平的提高,居民慢性病发病率也随之呈现出不断增长的趋势。现在,我国 55岁以上的中、老年人群中有近一半为高血压患者[1]。肥胖、糖尿病、高血脂等慢性病患者的人数也十分庞大[2],这些慢性疾病已成为我国居民健康的头号威胁[3]。随着我国逐步进入人口老龄化社会[4],传统健康监护方式已难以适应当前的社会需求。
最新兴起的是把生物传感器、无线通信等技术嵌入人们眼镜、手表、手环、服饰及鞋袜等日常穿戴中而推出的可穿戴式设备[5],可以用紧体的佩戴方式测量多项生理健康参数。前人在探索开发实用健康监护设备方面已做了不少工作。如可穿戴式健康生理参数检测设备[6]、通过蓝牙[7]等物联网[8]技术实现了检测设备与智能手机[9-12]间的数据交换和通过手机APP对健康生理数据做简单分析等。基于课题组在可穿戴设备方面所做的前期工作,本文设计并实现了一套为可穿戴式健康监护设备服务的网络健康监护系统的服务器软件。系统在设计思想上,参考了前人基于3G网络[13]或云平台[14,15]健康监护系统的设计思想,针对新型可穿戴设备特点做了适应性改变。实现了可穿戴设备监测生理数据的网络存储与管理、用户健康档案的管理和维护以及医患关系的建立。
基于云端的健康管理平台是实现远程无线可穿戴监护系统(用户端、医生端和健康管理平台)的重要组成部分,承担着沟通医生端与用户端的任务。参考现有的健康管理软件系统和用户实际需求,该系统需以云端网络服务器作为信息枢纽,能够为多种智能可穿戴监护设备提供服务,系统各个部分间需要实现网络通信、基本信息查询、报警信息查询、诊断报告的查询与修改以及生理信息的查询与分析等功能。
图1 健康监护系统设计图
1.1 硬件设备
课题组前期已开发及与台湾长庚大学合作开发了多个可穿戴式智能医疗硬件设备,本系统将主要支持已开发和正在开发的智慧衣、可穿戴式无线低功耗心电贴[6]、可穿戴智能血压计[16]、运动腕表[17]和穿戴式孕妇和胎儿心电记录仪等设备。它们具有使用安全方便、功耗小和持续采集时间长等特点,十分适用于健康生理信息的日常实时监护任务。
1.2 云计算
云计算(Cloud Computing)是互联网技术、分布式计算和资源管理技术等多种高新技术的综合产物[18](如图2)。
云计算主要应用形式是基础设施即服务IaaS(Infrastructure as a Service)、平台即服务PaaS(Platform as a Service)和软件即服务SaaS(Software as a Service)[19]。IaaS主要为用户提供硬件设备部署服务,其中包括数据计算、存储和网络服务等资源。使用IaaS服务时,使用者需要向云平台运营商提供硬件设施的基础配置信息,及运行于其之上的程序代码和相关用户数据。PaaS是云端应用程序的实际运行环境,它主要提供在云平台上部署和管理应用程序的服务。通过云平台运营商提供的PaaS层软件工具和开发语言,应用者只需上传程序代码和数据即可使用服务。SaaS为用户提供可直接使用的云端软件。它提供了可供用户直接使用的应用程序。
图2 云计算技术关系图
表1 IaaS、PaaS和SaaS的比较
1.3 数据库设计
系统数据库初期共建立了5张数据表(如图3)。分别是医生表、用户表、血压数据表、心电数据表和运动数据表(分别支持心电贴、血压仪和运动腕表),分别记录了医生、用户的账号信息和多种健康生理数据的详细信息。如用户表主要用于记录用户的各项基本信息。其主要数据结构和数据项如下:用户的用户名、年龄、身高、体重、性别等,其中用户的用户名具有唯一标识性,被选作表的主键。由于用户在佩戴设备时每天都会向服务器传送生理数据,数据库需要包括相应的生理数据表,如心电数据表。其主要字段有:数据编号、检查日期、存储路径等。其中数据编号具有唯一标识性,故将其选为该表的主键。将所有的心电数据与病人的信息同时存入数据库的基本表中是不可行的。为避免大量的心电数据对数据库性能造成影响,我们将产生的心电数据存入相应的文件服务器中,并把文件路径保存在数据库。这样,可以方便查询也不会影响对心电数据的调用。一个完整的数据库需要创建数据表之间的关系,即建立包含某些通用信息的字段之间的连接。用户表是诸表的核心,将该表设置为主表。用户表中用户名具有唯一标示性,可以通过这个字段建立表间关系。建立表间关系主要通过创建外键约束来实现。在心电数据表中的数据编号字段上创建外键,可以建立与主表的表间关系。
图3 数据库ER图
1.4 服务器系统设计
服务器系统是以PHP语言在WAMP平台上编写实现的。WAMP是Apache+Mysql/MariaDB+Perl/ PHP/Python的简称,它们是一组常用来搭建动态网站或服务器的开源软件,共同组成应用程序平台。服务器系统主要由Web网络服务器、数据库服务器、文件存储服务器和第三方消息服务器四部分组成。服务器程序的架构设计,采用了分层封装、函数调用的思想。从为用户提供服务的直接程度,将其划分为应用程序层和系统支持程序层。如图4所示,应用程序层主要包含直接为用户提供服务的Web服务器程序,它一方面调用在系统支持层程序中编写的功能操作函数,按请求完成一系列服务功能;另一方面它们自身也以功能函数的形式方便用户调用服务功能。系统支持层程序只实现通过PHP程序操作数据库、存取文件和操作第三方消息服务器控制台,但对上述三者的何种功能做操作,则由上层Web服务器应用程序决定。
图4 服务器系统软件设计图
1.5 健康监护系统服务流程设计
首先由客户端向服务器请求所需服务。当Web服务器控制台程序(WebServer.php)收到请求后,根据请求内容控制台程序安排相应服务功能的Web服务器应用程序,通过按需调用支持层各功能操作函数来完成请求。下面以数据查询请求为例简述服务流程,其它请求服务流程大体类似。
如图5,用户向服务器请求查询心电数据,控制台安排用户数据查询应用程序为请求者提供服务。用户数据查询程序,调用支持层数据库功能操作函数查询心电数据从属目录,确定用户名下的全部数据记录后反馈给应用程序并由应用程序将数据编码后发送给用户。图5还包含医生请求查询用户生理数据、更新诊断信息和用户查询诊断信息的请求服务流程,其大体过程均与上述类似。
图5 数据查询请求服务流程图
2.1 HTTP协议和JSON数据格式
超文本传输协议(HTTP,HyperText Transfer Protocol)[20]是基于TCP连接实现的Web应用层协议,请求与响应操作是其基本工作模式。独立运行于客户端与服务器端的应用程序通过交换HTTP消息实现彼此间的数据交换。HTTP协议中数据传输方式主要有POST和GET两种方式,它们都可以实现由客户端向服务器上传或下载数据。但其区别在于GET方法上传数据时,是以“?+键值对”的形式将数据附在URL地址后面,而POST方法则要把数据放置在HTTP包的包体中。GET方式实现简单,通过URL提交数据,可提交的数据量就跟URL的长度有直接关系,存在特定的浏览器及服务器的限制。。较之而言POST方法理论上没有限制,可传较大量的数据,但其实现方法较为复杂。因此在实际应用中二者各有所长,应按需灵活应用。JSON[21]是一种新兴的轻量级数据传输格式。它是JavaScript的规范子集,能在所有支持JavaScript的平台上解析。JSON因其数据交互功能的实现,不受所用编程语言所限制,且便于阅读和编码,而深受编程人员的喜爱。相比于传统的XML数据传输格式,JSON大大减少了解析时性能和兼容性的问题,提高了数据的传输效率。但JSON只适用于传输文本格式的文件,因此当需要传输多参数生理信息等二进制格式文件时,要先将二进制文件转码成文本格式之后才能借助JSON传输。JSON在语法上有对象和数组两种形式,它们的基本单位都是“‘名称/值’对”集合。这两种形式的区别只在于一种是将“名值对”构成对象,另一种是构成数组。在网络传输前后,JSON对象或数组都需要进行序列化或反序列化编码。其中序列化是指将数据由易于人员阅读的对象或数组状态转换更便于网络传输和机械保持的数据流形式,而反序列化就是指将数据流再反转回易于阅读的对象或数组状态。
2.2 智能手机客户端与服务器系统一般数据通信的实现
如图6所示,客户端与服务器间的一般数据通信具有单次上传数据量小,但通信请求频繁的特点。据此选定通过HTTP协议中的GET方法实现通信。下面以医生账号登录功能的通信请求为例,简要介绍Android手机客户端与服务器系统的数据交互过程。
图6 一般数据通信流程图
首先由Android程序将医生用户名和登录密码按HTTP协议的GET方法通过下框的第1行代码将参数值负载URL地址后面。再通过第2行代码实现HTTP连接,并将服务器响应结果保存在urlConnection变量中。在此之后,在Android程序中另起一个线程,自建服务器监听程序用来等待服务器响应并做相应后续处理。至此Android主线程任务完成。
URL url = new URL(URI+"/MIM/WebServer.php?function="10"&doctor_user_name="+ID+"&doctor_password="+PWD);
HttpURLConnectionurlConnection = (HttpURLConnection)url.openConnection();
Web服务器收到客户端发来的请求后,按下框中的第1至3行代码由Web控制台程序通过$_GET[]变量来读取上传数据到PHP程序中。之后控制台程序根据所读取到的功能请求控制字,判断调用图4中的医生登录功能成来实现客户端请求。医生登录模块获得到用户名和密码值后,按图3中的数据库设计,通过按第4、5行代码查询数据库,并将返回的资源型结果保存在$rst变量中。若查询成功,则通过第6行代码来读取查询结果,并通过第7行代码比对登录密码与数据库中记录是否相同。若登录密码相同,则通过第8至10行代码构建array数组记录登录成功结果,最后通过第11行代码将数组序列化成JSON数据格式后发送响应给客户端。客户端监听到服务器响应后,通过json. getString()命令读取JSON“键值对”,并将其值反序列化成通用格式数据交给Android程序做后续处理。
2.3 智能手机客户端与服务器系统文件通信的实现
文件通信是一种大数据量的特殊数据通信,它具有单次交换数据量大,但通信频率较低的特点,因此选用语POST方法实现通信。下面以用户上传健康生理数据的通信过程为例简要介绍Android手机与服务器系统间的文件交互过程。
图7 文件通信流程图
文件通信的具体实现过程与一般数据通信过程大体类似,但其主要区别在于构建JSON数组前,Android程序需先将二进制文件编码成Base64格式的ASCII码字符串,之后才能将字符串构建成JSON对象并序列化。接下来,借助Android程序中的apache.http.client类按HTTP协议中关于POST方法的规定配置请求访问地址。在添加HTTP请求头文件后,再将JSON数据添加到HTTP请求正文里,最后发送POST请求给服务器。
服务器收到POST请求后,要通过两层取值才能得到上传来的数据。首先通过$_POST["key"]读出HTTP请求正文中的JSON数据流。再通过json_decode()命令,将JSON数据流反序列化并读出JSON对象值。在读取完数据之后,服务器任务请求的处理流程与上节所述基本类似。即根据任务需求,调用图4中的添加心电数据功能程序,按类似上述步骤分别向数据信息、数据信息从属两张数据表中添加数据编号、数据文件存储地址等数据信息和数据编号与添加者用户名等从属信息。之后,将Base64编码的文本数据还原成二进制数据并存储在文件服务器指定路径下。最后,将反馈操作成功结果给控制台程序进行相应后续处理。
2.4 服务器主动消息推送服务的实现
本文选用极光第三方消息服务器(www.jpush.cn)推送,实现主动推送消息的功能。首在极光其控制台中创建应用,获得AppKey、Master Secret和配套的AndroidSDK包。将AndroidSDK包编译安装到本监护系统医生的手机上后设置Tag标签为用户名。当需要向其推送消息时,通过服务器PHP程序以AppKey和Master Secret初始化极光消息服务器控制台之前所创建的应用以Tag标签匹配需消息接收医生的设备。消息推送的具体实现过程如下:
首先在PHP程序中引入客户端开发程序。其次,在服务器程序需推送消息时,根据极光控制台所创建应用的AppKey和Master Secret建立一个新的JPush对象。最后,配置极光提供的该对象,以实现主动推送消息功能。于此之后,用户就能在手机通知栏里看到消息提醒。
本文构建了一个可服务于多参数可穿戴式智能医疗硬件设备的健康管理平台。该系统可提供个人信息、健康生理数据和其诊断结果的综合管理,并可成为用户和医生间的交流桥梁,实现了用户居家健康监测,医生及时健康反馈。虽然本文已取得了一些阶段性成果,但也留有些许遗憾以待后期工作完善。如对服务器软件程序添加健康大数据智能分析模块,用于自动分析用户上传的健康生理数据以及对医生诊断进行辅助等。进而构成大数据健康数据智能分析的涉及健康监护全过程的完整健康监护系统。
[1] 林岚,张柏雯,付振荣,靳聪,吴水才.高血压对大脑年龄估值差的影响[J].中国医疗设备,2015,30(6):7-11.
[2] 国家心血管病中心.中国心血管病报告[R].2010.
[3] 孔灵芝.关于当前我国慢性病防治工作的思考[J].中国卫生政策研究,2012,5(1):1-4.
[4] 王志宝.近20年来中国人口老龄化的区域差异及其演化.人口研究,2013(1):1-37.
[5] Sagahyroon A,Raddy H,GhazyA,et al. Design and implementation of a wearable healthcare monitoring system[J]. Int J Electron Healthc,2009,5(1):68-86.
[6] 李淑园,吴水才,宾光宇.可穿戴式无线低功耗心电记录仪的设计与实现.中国医疗设备,2015:30-3.
[7] 曹彦,龙夏.基于ZigBee的集散多参数医疗监护系统的数据[J].自动化与仪器仪表,2010(1):61-66.
[8] 姬晓波,曾凡,张敏.物联网技术及其在医疗系统中的应用[J].医疗卫生装备,2010,31(12):102-103.
[9] 杨思军,郝继飞,张道明.基于智能手机的心电无线监护系统[J].嵌入式系统应用2009,25(26):46-48.
[10] 高原,张政波,王卫东.基于智能手机的穿戴式移动监护系统[J].医疗卫生装备,2010,31(5):8-9,22.
[11] Logan AG,Mclsaac WJ,Tisler A,et al. Mobile phone-based remotepatient monitoring system for management of hypertension indiabetic patients[J].Am J Hypertens,2007,20(9):942-8.
[12] 石涛,吴水才.基于Android系统智能手机的心电远程监护系统软件设计.硕士学位论文,2013(6).
[13] 冼启源,李天豪,麦松涛.基于云计算及3G网络的健康监护系统设计.计算机应用,2011(12):31-2.
[14] 陈娇花.基于云平台的移动医疗健康服务系统的设计与实现.电子设计工程,2015(12):23-24.
[15] 曾小华,郭文明,朱旭阳.基于云平台的糖尿病院后健康监测管理系统.医疗卫生装备,2015(4):36-4.
[16] 董骁,宾光宇,吴水才.基于个性化脉搏波传导参数的连续血压测量方法研究.中国医疗设备,2014(10):24-27.
[17] 贾菲菲,宾光宇,吴水才,师玉涛.基于加速度信号的纵跳力学参数计算.中国医疗设备,2015,30(9):16-19.
[18] 岳红丽.云计算在区域医疗信息化中的应用探索[J].计算机与现代化,2012(8):5141-143,147.
[19] 罗军舟.云计算:体系架构与关键技术.通信学报,2011;7:32-7.
[20] 祝瑞,车敏.基于HTTP协议的服务器程序分析.现代电子技术35-4.
[21] 高静,段会川.JSON数据传输效率研究.计算机工程与设计,2011:32-7.
The Design and Implementation of Health Management Platform Based on the Multi-parameterWearable Devices
ZHANG Shuo-chen,ZHANG Bai-wen,LIN Lan,BIN Guang-yu,WU Shui-cai
(College of Life Science and Bio-engineering, Beijing University of Technology, Beijing 100124, China)
This paper describes a health management platform,which servescontinuous monitoring of multiple physiological parameters through wearable health monitoring equipments. Not only it is able to facilitate communication between physician and user,but it is also useful for the caregivers to maximize efficiency in database management,multi-parameter physiological data storage and diagnosis. The whole system was implemented in PHP language. It enables any remote user to monitor multiple healthy parameters without being physically present.
Wearable devices; Cloudy computing; Health monitoring
*基金支持:大科研推进计划-高端医疗装备(015000514316006),北京工业大学第14届研究生科技基金项目(No.ykj-2015-12465)
林岚,副教授。