摘 要:伴随着通信技术的发展,方便快捷的移动互联网及功能日益丰富智能终端在生活中扮演的角色越发重要。在人体局域网和移动互联网的基础上,利用使用广泛的Android终端智能平台,设计开发一种针对人的生理体征数据采集的健康监测系统。系统结合HL7医学信息传输标准,以一种新型的医疗方式探索移动应用软件在医疗领域的发展。Android终端作为数据采集控制端和监控客户端,通过移动互联网将采集的数据上传至服务器,实现监测中心对数据的监测。
关键词:Android; 移动互联网; 健康监测; HL7; 人体局域网
目前,许多地区都存在人口老龄化、空巢老人的问题,如何对老年人身体状况持续监测,保证老年人的身体健康,是我国的一个社会和医疗难题。另外随着社会经济的发展和人们生活水平的提高,人们的生活节奏越来越快,压力越来越大,加上环境的污染等因素,以至于很多人(据2010年统计数据,城市白领大约有76%)处于“亚健康”状态,引发血压升高、心率增快、加速血管硬化等的可能性增大[1]。随着3G、4G技术的成熟,WiFi热点的日益增多,高速率的移动数字传输带宽已经成为现实;同时智能移动通信终端的使用越来越普及,利用便携的智能终端设备辅助移动医疗监测也成为国内外的关注点。本系统结合Android操作系统移动设备和移动网络的特点及优势,以血压监测为案例,研究如何针对常见的人体生理指标进行监测。
1 系统概述
系统划分为三大模块:人体局域网、安卓移动终端和健康监测中心。系统总体结构模型如图1所示。
1.1 人体局域网(BAN)
典型的BAN[2]的个人健康监护系统包含多个穿戴在人体上的体征传感器节点。每个传感器节点负责采集体征参数,采集数据后发送到客户端。使用的传感器一般会要求指定其重要生理参数的精度、低功耗信号处理的水平,并要求具备无线连接功能。
1.2 Android设备
Android设备上安装系统客户端,主要功能:(1)通过低功耗无线或者USB有线的方式发送请求数据的命令至传感器,接收数据后果显示结果;(2)将初步处理的采集数据通过3G、WiFi等移动互联网的方式发送至监测中心服务器,并接收监测中心反馈的信息。包含以下部分:数据采集服务、数据初步处理、结果显示和网络服务。
1.3 健康监测中心
健康中心对被监测者的基本信息和生理数据进行存储和管理,通过调阅实时数据,综合历史数据,给出建议或诊断。主要包含网络服务、电子档案和数据分析三部分。
2 HL7简介
卫生信息交换标准(Health Level 7)[3]是医疗领域不同应用之间电子传输的协议。HL7汇集了不同厂商用来设计应用软件之间界面的标准格式,允许各个医疗机构在异构系统之间进行数据交互。其宗旨是开发和研制医院数据信息传输协议和标准,规范临床医学和管理信息格式,降低医院信息系统互连的成本,提高医院信息系统之间数据信息共享的程度。
在HL7通信协议中,消息(Message)是数据交换的基本单位。HL7的消息是自动生成的,它将HL7标准文档自动转化为一个HL7规则数据库和部分程序数据结构代码。实现一个通信标准的具体工作是生成数据结构,以及实现一个构造器(Builder)和一个解析器(Parser)。数据结构表现了标准中各个数据对象的相互关系。构造器将数据结构中的数据转化成能在电子数据交换媒介中传输的数据串。而解析器能够将数据串解析还原原数据结构。HL7标准是一个文本结构的文档。首先,利用一些文字处理工具将文档中的各个数据定义抽取成数据结构,再将结构的形式存入预先定义的HL7规则数据库。然后,开发一种代码生成器,它根据规则数据库的内容自动生成某一种计算机语言代码。最后,可将这些代码加入实际应用的程序框架中。
3 Android SDK 对蓝牙和USB的支持
3.1 低功耗蓝牙通信技术及Android 蓝牙APIs
蓝牙技术[4-5]是一种无线数据与语音通信的开放性全球性规范, 它以低成本的近距离无线(一般为10 m)连接为基础,为固定与移动设备通信环境建立一个特别连接。特别是蓝牙4.0标准,提供了用于保健及健康、个人设备、汽车及自动化行业的低功率传感设备和新的网络服务的低耗能技术。
Android自SDK2.0开始支持Linux官方蓝牙协议栈(BlueZ),新版本的Android 4.3支持Bluetooth 4.0 Low Energy。 Android应用框架层为蓝牙通信提供了大量API,通过这些API可以实现蓝牙设备间的无线连接,建立点到点、点到多点通信模式。
3.2 USB技术及Android USB APIs
USB,中文简称为“通串线”,是一个外部总线标准,用于规范主机与外设的连接和通信[6-7]。USB版本经历了多年的发展,已经发展为3.1版本。
Android通过两种模式来支持Android USB外设:USB外设模式和USB主机模式。在 USB外设模式下,外部USB 硬件充当 USB 主机,这种模式给予不具备主机功能的 Android 设备以与USB硬件交互的能力。主机模式下,装有 Android 的设备扮演主机的角色。Android SDK对USB的支持APIs包含在android.hardware.usb包下。
4 系统实现
客户端软件的主要作用包括:与体征传感器间建立通信链路,接收、保存来自传感器、监测中心服务器的数据,发送数据及结果的显示,以及与用户间的互动。
4.1 生理特征数据采集
鉴于生理体征采集传感器的型号众多、通信形式不一,在此考虑三种常见的数据采集方式,体征数据采集流程如图2所示。
4.1.1 USB采集方式
首先为了获得USB设备挂载的系统通知,需要在Mainfest文件中添加过滤器之后使用getDeviceList()方法获得一个包含所有已挂载的USB设备的HashMap,调用requestPermission()方法获得设备的使用权限。之后确定外设的UsbInterface 以及用于与这个接口交互的合适的UsbEndpoint,成功后在这个端点上打开连接UsbDeviceConnection。为避免阻塞UI主线程,在新线程中使用方法bulkTransfer() 或者controlTransfer() 传输数据。异步地发送数据时,使用类UsbRequest 来初始化(initialize)和序列化(queue)一个异步的请求, 然后调用方法requestWait()等待请求。
4.1.2 蓝牙采集方式
蓝牙作为低成本的近距离的无线标准广泛使用。Android提供了大量可以管理蓝牙通信的API。
调用mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter()方法获得本地蓝牙适配器,if(mBluetoothAdapter != null),说明Android设备支持蓝牙。使用startDiscovery()方法查找新的蓝牙设备、getBondedDevices()获取已经绑定的蓝牙设备,构造ArrayAdapter来存储这些蓝牙设备。
通过BluetoothSocket的createRfcommSocketToService
Record()方法传入UUID,为避免阻塞UI主线程,在新线程中创建BluetoothSocket对象,并通过connect方法建立连接,使用BluetoothSocket的getInputStream()和getOutputStream()方法来读写蓝牙设备。
4.1.3 人工记录
一些老式的生理特征采集设备不能通过无线或者有线的方式与Android客户端相连,可以采取人工记录的方式录入特征数据,传输到监测中心。
4.2 HL7消息构建存储上传及监测中心接收
在HL7框架中,ORU消息提供患者的临床数据的传输,消息段有:(1)MSH:定义消息的来源、目的、目标和某些语法的细节。(2)PID:用于记录患者的基本信息,如身份证号码、性别、住址、联系电话等。(3)OBR:用于传输检验、观察、诊断信息。ORU码格式如图3所示。
现在的主流移动设备(如Android、iPhone等)都使用SQLite[4]作为复杂数据的存储引擎,客户端系统使用SQLite存储采集到的生理体征数据。使用openOrCreateDatabase()方法创建或打开数据库,用execSQL()和rawQuery()方法添加、修改采集到的数据。
将构建完毕HL7的消息转换为JSON格式,通过HTTP连接方式将数据发送到监测中心服务器。在发送前, 通过getNetworkInfo()、getDetailedState()方法判断Android设备处于何种移动网络状态下,供用户控制。监测中心对被监测者的基本信息和生理数据进行存储和管理,通过调阅实时数据、综合历史数据,给出建议或诊断。
4.3 客户端体征数据显示
为直观显示出数据趋势,历史记录模块采用了开源图形库AChartEngine[8],用于绘制多种图表。线条颜色、点形状的不同,可以区分显示的不同内容。如图4所示。
该健康监测系统完成了被监测者的特征数据采集及管理,但仍有许多功能需要完善,比如监测中心对数据的智能分析、与医疗机构信息系统互联互通,这样就能够为更多的人提供健康支持并减少医生的工作量。随着应用于远程控制医疗、保健及运动感应器等领域的低功耗器件越来越多,移动互联网的带宽日益增大,移动医疗必将成为一个新趋势。
参考文献
[1] 赵瑞芹,宋振峰.亚健康问题的研究进展[J].国外医学(社会医学分册),2002(1):10-13.
[2] KARULF E. Body area networks(BAN)[EB/OL].(2008-04-23)[2013-12-22].http://www.cse.wustl.edu/~jain/cse574-08/ftp/ban/index.html.
[3] 齐国隆,孔令人,邹宗峰.HL7在公共卫生信息系统中的应用[J].现代预防医学,2006(06):962-964.
[4] Android developers[EB/OL].(2013-05-20)[2013-12-22]. http://developer.android.com/intl/zh-cn/guide/components/index.html.
[5] 熊狮,吴效明. 基于Android系统的生理数据蓝牙传输技术[J].中国医学物理学杂志,2012(6):3801-3803.
[6] 吕超,张玉霞,王立欣.USB接口高速数据传输的实现[J].计算机测量与控制,2009(5):1003-1012.
[7] 苏维嘉,唐宇,杨静.基于Android平台的USB数据采集系统[J].计算机系统应用, 2012(8):39-42.
[8] AChartEngine Javadoc[EB/OL].(2013-09-10)[2013-12-22].http://ach-artengine.org.