基于移动互联网的糖尿病医疗辅助系统设计与实现

2015-07-18 14:53刘新龙谭献海
物联网技术 2015年5期
关键词:Android平台移动互联网

刘新龙++谭献海

摘 要:针对糖尿病患者自我管理的需求,提出基于移动互联网的糖尿病医疗辅助系统设计方案。结合移动互联网中信息交互的特点,探讨移动互联网中糖尿病医疗辅助系统的开发方法。介绍了系统架构设计与客户端设计,然后采用Java技术开发出Web服务器端、Android客户端以及PC客户端软件。基于移动互联网的糖尿病医疗辅助系统已经完成,结果表明解决问题的措施可行,系统为用户提供了便利。

关键词:糖尿病医疗;移动互联网;信息交互技术;Android平台

中图分类号:TN915 文献标识码:A 文章编号:2095-1302(2015)05-00-03

0 引 言

糖尿病是一种常见的慢性疾病,截止2009年,中国已经成为仅次于印度的糖尿病第二大国,糖尿病患者达到4 315万。在糖尿病防治过程中,需要自我检测、用药、饮食、运动以及医患互动五个方面的密切配合才能达到良好效果。伴随着无线通信技术的发展,基于移动互联网的远程医疗技术得到快速发展,在慢性病防治领域发挥着重要作用[1-3]。

在移动医疗系统中,客户端可以采用智能手机、平板电脑等移动设备,使用的操作系统包括Android、iOS和WindowsPhone,其中Android系统基于Linux系统内核,是最具有移植性的移动设备操作系统,得到了众多开发厂商的支持。目前针对用户需求和糖尿病防治的特点,研究基于移动互联网的糖尿病医疗应用的文章较少,糖尿病移动终端应用多集中在提高糖尿病的认知和糖尿病的管控上,没有科学的糖尿病管理流程,没有形成高效的管理模式。总体来看糖尿病移动医疗技术还不成熟,还处在摸索阶段[4-5]。

1 系统目标及需求分析

本文从糖尿病预防特性入手,研究基于移动互联网的糖尿病医疗辅助系统及相关开发技术,旨在提高医疗效率,使医疗服务流程标准化;降低基础医疗服务门槛,将稀缺的医护资源利用最大化;加强医患沟通,满足用户在需要帮助时可随时得到专业指导的心理。根据用户需求,对系统进行分析,由以下工作组成:

(1)数据管理:注册用户可以向服务器端上传个人的生理数据、查看个人电子病历。

(2)统计分析:直观显示血压、血糖等数据,并且能对数据进行相关分析。

(3)教育指导:系统可以向用户提供具有针对性的诊疗信息。

(4)信息交互:医护人员可以与患者进行实时的信息交互。

(5)信息反馈:社区医生可以通过PC客户端对病人进行初步筛选,制定相应的随访计划并给出针对性的诊疗方案。

2 系统的架构设计

系统主要用户由医生和病人组成,这里的医生与病人只是指人员身份,并非指病人成员一定患有糖尿病。未患糖尿病的人为了预防糖尿病也可以注册,这类似于实际状况中的病人去医院就诊,所以他的角色定义为病人。

系统整体架构设计如图1所示。基于移动互联网的糖尿病医疗辅助系统由服务器部分与客户端部分组成。系统采用Tomcat作为Web服务器,响应来自客户端的各种请求,服务器端采用具有可扩展性的三层模式,即控制器层+业务逻辑层+DAO层结构。服务器端控制器组件中的Servlet类负责与Android客户端进行信息交互。客户端软件包括面向病人的移动客户端和面向医生的PC客户端;移动客户端基于Android平台开发;PC客户端基于B/S模式开发,医生可以通过浏览器访问系统,并进行相应操作。系统采用SQLServer2005数据库存储数据。

图1 糖尿病医疗辅助系统总体架构设计图

系统开发框架如图2所示。PC客户端采用MVC模式开发,Android客户端通过Layout布局和Activity类实现用户界面,通过HttpClient组件访问服务器。服务器端的Servlet类负责接收客户端请求,并返回处理结果。DAO层通过JDBC实现数据库的更新与查询操作。

图2 系统开发框架

客户端软件由Android客户端与PC客户端组成,它功能结构如图3所示。

图3 软件功能结构图

3 系统核心功能的实现

3.1 XML文件在Android客户端的应用

医护人员预先设定针对不同体征、不同年龄、不同病情人群的膳食、运动处方。由于XML文件独立于软硬件,可移植性强,因此采用XML文件存储这些处方信息。Android客户端只需要解析这些XML文件就可以获取膳食、运动处方。病人可以根据医生给出的诊疗信息选择适合自己的膳食、运动处方。在Android系统中,常见的XML解析器有DOM解析器、SAX解析器、PULL解析器。其中PULL方式最优。它小巧轻便、解析速度快、简单实用,非常适合在Android移动设备中使用。PULL解析技术是第三方开发的开源技术,Android系统中和PULL方式相关的包是org.xmlpull.v1,这个包提供给PULL解析器的工厂类XmlPullParseFactory和PULL解析器XmlPullParse[6]。系统中的ReadXML类负责解析XML文件,通过判断XML文件中的标签执行不同的逻辑,将解析得到的信息存储到List容器中供其他类调用。ShowFoodActivity类与FoodDetilActivty类负责将List容器中的膳食处方信息呈现在ListView控件。在实际开发过程中发现PULL方法简洁有效,可以很方便的将XML文件中的信息呈现在ListView控件上。

3.2 Web技术在Android客户端的应用

3.2.1 信息交互功能

糖尿病是一种慢性疾病,需要长期的观察和治疗,每天都要进行身体指标的测量,时间碎片化。因此考虑对患者用户建立个人电子病历记录。对用户的医疗数据进行科学的存储与处理。患者需要上传的数据包括血糖值、血压值、体检表和回访记录表,由于它们的实现方法相同,因此主要介绍血糖值上传到服务器端的过程。JSON是一种轻量级的数据交换格式,同 XML 和 HTML文件相比,它更加简捷和灵活。所以选择JSON作为交互数据的格式。JSON主要有两种数据格式,分别为JSONArrary(数组形式,数据元素可以是对象)和JSONObject(对象形式),它们之间可以相互转换,解析JSON的相关类位于org.json包中[7]。BloodSugarActivity类负责录入用户每天测量到的血糖数据,然后通过Http协议将封装成JSONObject格式的数据发送到Web服务器端,服务器端的AndroidBloodSugarServlet类负责接收数据,并将解析好的数据交由DAO层的BloodSugarDao类处理,最后将数据存入SQLServer2005数据库中。

数据处理中心模块还提供了数据查询功能,采用HttpClient组件访问Web端 Servlet类,并将要查询的参数post到服务器端,服务器端做相应的逻辑处理后把查询得到的Java对象封装成JSONObject形式返回给客户端,客户端解析JSONObject对象,然后通过ListView控件呈现给用户,实现查询功能。

3.2.2 统计分析功能

糖尿病的长期治疗更贴切的是长期管理,糖尿病数据具有连续性,可以根据特定条件对数据进行提取、统计,这样用户就可以通过一种直观的方式了解血糖变化。

Android客户端采用对数据与页面布局进行分别处理的方法实现对血糖数据的统计。首先是数据的获取问题,由于HttpClient组件具有易用性和灵活性,所以采用HttpClient组件向服务器端发送请求、获取数据。然后是页面布局问题,在HTML文件中调用开源图形组件Ichartjs在手机上实现复杂的布局效果。最后采用WebView组件做数据与页面布局间沟通的桥梁。最终在Android客户端实现数据统计功能。具体步骤如下:

(1)在Layout中定义布局文件并添加WebView组件;

(2)在Activity类中加载Layout布局文件,同时开启javascript支持;

(3)在AndroidManifest.xml文件中添加允许网络访问的权限,联网获取服务端的数据。

(4)将来自服务器端的数据封装成JSONArray对象。

(5)调用javascript方法将数据传递给HTML界面,实现数据更新。

(6) Activity类通过调用WebView中的loadUrl方法获取HTML界面,最终实现数据统计功能。

3.3 Socket通信技术的应用与实现

对于糖尿病这种慢性疾病,患者迫切希望就疾病、诊疗等问题得到实时的答疑解惑,医生也需要对患者的病情状态及身体状况进行随访调查,以便后续的诊疗指导。糖尿病医疗辅助设计了互动沟通功能模块,注册用户可以和社区医生进行实时的信息交互。

Android操作系统提供了两种通信方式:分别是Http通信和Socket通信。Http连接基于“请求-响应”模式,只有在用户请求时才会建立连接通道,即客户端向服务器发送请求后,服务器端才向客户端返回数据。Socket通信首先建立起两者的连接,然后可以直接进行数据传输,这种方式双方都可以主动发送信息。为了保证字节流的可靠性[8],系统选择面向连接的TCP Socket方式传输信息。即时通信模块服务器端的开发步骤大致如下:

(1)在服务器端指定端口,实例化一个Server Socket,自动对客户端传入的端口号进行监听。

(2) 收到请求后调用Server Socket的accept()方法,然后返回一个对应于该客户端的Socket对象。

(3) 获取位于该层的Socket流并进行读写操作。

(4) 将数据封装成流。

(5) 对Socket进行读写。

(6) 关闭打开的流。

客户端的应用开发步骤大致如下:

(1) 通过IP地址和端口实例化Socket,请求连接服务器。

(2) 获取Socket上的流并进行读写。

(3) 把流包装进BufferReader/PrintWriter对象。

(4) 对Socket进行读写。

(5) 关闭打开的流。

即时通信模块由两部分组成:PC服务器端和Android客户端,PC服务器端负责客户端命令的接收与响应以及信息的转发,客户端主要完成通信信息的发送与接收。利用Socket方式交换数据,数据流量小,响应速度快。

3.4 诊疗功能的实现

医生用户可以通过PC客户端录入诊疗信息,诊疗模块的设计遵循MVC模式(JSP+Servlet+JavaBean),具体实现步骤如下:

(1)创建诊断信息录入界面diagnoseinfo.jsp,此页面用于放置诊疗信息的表单,录入诊疗信息,表单的提交地址为diagnoseinfoServlet。

(2)创建控制层对象DiagnoseinfoServlet,它是一个Servlet类,此类通过doPost()方法对添加诊疗信息请求进行处理。

(3)创建模式层用到的JavaBean组件,分别为Diagnoseinfo类与DiagnoseinfoDao类,其中Diagnoseinfo类用于封装诊疗信息,DiagnoseinfoDao类用于封装诊疗信息对象的数据库操作。

数据库服务器为SQLServer2005,Web服务器采用Tomcat7.0,移动客户端使用Android真机测试,主页面如图4所示。通过在浏览器中输入URL地址访问PC客户端,进行测试。

图4 Android客户端主界面

4 结 语

针对糖尿病医疗管理需求,结合移动互联网技术,本文设计并实现了基于移动互联网的糖尿病医疗辅助系统。系统采用服务器/客户端模式。测试后发现整个系统运行流畅,功能完善。在实际应用过程中可以有效的改善患者与医生的感受,有益于糖尿病这种慢性疾病的防治。

参考文献

[1] World Health Organization .The world health report 1998 :Life in the 21st century: A vision for all [M]. Geneva: World Health Organization, 1998.

[2]张亚妮. 家庭支持对糖尿病患者居家治疗依从性的影响[J]. 西部医学,2015,27(2):301-303.

[3]郑颖,杨烨,郑世良. 远程医疗信息系统的设计与实现技术研究[J]. 科技管理研究,2010 (15):184-187.

[4] 文军,张思峰,李涛柱. 移动互联网技术发展现状及趋势综述[J]. 通信技术,2014,47(9):977-980.

[5] 徐倩,赵文龙. 国内外移动医疗应用现状及启示[J]. 检验医学与临床,2014,11(9):1295-1296.

[6] 李瑞花. 基于Android的XML解析技术的分析[J]. 计算机时代,2010 (12):31-33.

[7] 龚成莹,邢敬宏,胡银保. 基于JSON的Android移动终端与PHP及MySQL数据通信[J]. 工业仪表与自动化装置, 2013 (1):63-65.

[8] 陈文,郭依正. 深入理解Android网络编程技术详解与最佳实践[M]. 北京:机械工业出版社, 2013.

猜你喜欢
Android平台移动互联网
基于Android平台软件开发技术研究
微美学
大数据环境下基于移动客户端的传统媒体转型思路
基于移动互联网的心理健康教育初探