基于移动互联网的糖尿病医疗辅助系统设计与实现
扫描二维码
随时随地手机看文章
引 言
糖尿病是一种常见的慢性疾病,截止 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 数据库存储数据。
系统开发框架如图2所示。PC客户端采用MVC模式开发, Android客户端通过Layout 布局和 Activity类实现用户界面, 通过HttpClient组件访问服务器。服务器端的Servlet类负责接收客户端请求,并返回处理结果。DAO 层通过JDBC 实现数据库的更新与查询操作。
客户端软件由Android 客户端与PC 客户端组成,它功能结构如图 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],系统选择面向连接的 TCPSocket方式传输信息。即时通信模块服务器端的开发步骤大致如下:
(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 客户端,进行测试。
结 语
针对糖尿病医疗管理需求,结合移动互联网技术,本文设计并实现了基于移动互联网的糖尿病医疗辅助系统。系统采用服务器 /客户端模式。测试后发现整个系统运行流畅,功能完善。在实际应用过程中可以有效的改善患者与医生的感受, 有益于糖尿病这种慢性疾病的防治。