工程硕士学位文评阅书

点赞:2884 浏览:7920 近期更新时间:2024-01-30 作者:网友分享原创网站原创

硕士学位论文

(专业学位)

Adissertationsubmittedto

TongjiUniversityinconformitywiththerequirementor

thedegreeofMasterofEngineering

September,2016

基于JAWeb的人力资源管理系统的设计与实现陈世军同济大学

基于Android和JAEE平台的医疗信息管理系统设计与实现冯宇悦同济大学

学位论文版权使用授权书

本人完全了解同济大学关于收集,保存,使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本,学校有权保存学位论文的印刷本和电子版,并采用影印,缩印,扫描,数字化或其它手段保存论文,学校有权提供目录检索以及提供本学位论文全文或者部分的阅览怎么写作,学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动.

学位论文作者签名:

年月日

同济大学学位论文原创性声明

本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行研究工作所取得的成果.除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人创作的,已公开发表或者没有公开发表的作品的内容.对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明.本学位论文原创性声明的法律责任由本人承担.

学位论文作者签名:

年月日

摘 要

随着3G技术的成熟,智能手机应用的普及,移动应用越来越广泛.远程监控系统涉及控制技术,通信技术,计算机技术.如果在系统中利用移动设备的通信功能,数据处理功能,人们便可以随时随地使用系统.因此研究在系统中应用移动技术具有十分重要的意义.

论文首先对Android系统原理和关键技术深入探讨,并对编程做详细介绍.接着论文探讨了,详细叙述了,,原理.分析系统总体结构模块功能.利用Android手持设备充当系统客户端..本程序实现了一种简单实时的基于差分斜率,窗口方法的时域心电检测算法,其运算量相对较小,计算简单,便于实时检测可准确定位QRS波,然后采用窗口法对PT波进行检测

最后根据实际需求实现系统,是基于B/S模式的.客户端采用Android技术实现,主要心电数据检测,数据保存怎么写作器端使用Ja编程,实现基于EE架构的信息管理系统,主要完成用户信息及心电信息管理.

关 键 词:远程监控Android系统数据传输心电测试

ABSTRACT

Asthematurityofthe3Gtechnology,thepopularityoftheapplicationofartphone,theuseofmobilemunicationbeeorewidely.Remotemonitoringinvolvescontroltechnology,municationtechnologyandtheputertechnology.Ifmobilemunicationfunctionanddataprocessingfunctionareusedinremotemonitorandcontrolsystem,whichwillmaketheremotemonitoringapplicationmorewidely.Soresearchingtheremotemonitorandcontrolsysteminmobiletechnologyapplicationisveryimportant.

First,Androidsystemprincipleandthekeytechnologyarediscusseddeeplyinthispaper,andSDKapplicationandNDKapplicationareintroduceddetailedly.Thestructureofremotemonitoringsystemmodulesandthemainfunctionofmodulesareanalyzed,thentheauthorputorwardhisownconclusion:themonitoringmodulefunctionandmunicationmodulefunctioncanbepletedbyAndroidhand-helddevices.

Second,thispaperanalyzesthefunctionalrequirementsofmedicalinformationsystems,designoftheoverallsystemstructureandmainmodules.Underthepremiseofcost-sing,Androidhandhelddevicestoactasamedicalinformationmanagementsystemforcustomers.JaEEplatformtobuildamedicalinformationmanagementsystemserver.Solvetheproblemsdonothereadyaccesstothesysteminthetraditionalmedicalinformationmanagementsystem,anddoctorscannoteffectivelyinteract.

AndthepaperpresentstheECGdetectionalgorithmformobileapplications.Takefullaccountoftheputingpowerofthemobilephonehardware.Thisprogram,asimplereal-timedifferentialslope,thewindowoftime-domainECGdetectionalgorithm,itsputationalplexityisrelativelyall,asimplecalculation,tofacilitatereal-timedetection,accuratepositioningofQRSplex,andthenusingthewindowmethodtothePTwefortesting.Throughthepracticetestresultstoreachtheintendedtarget.

Atlast,accordingtotheactualneeds,thetworemotemonitoringsystemswhichareremoteECGmonitoringsystembasedonB/Smode.IntheremoteECGmonitoringsystem,ECGdatadetection,ECGdatapreservation,remotemonitoringreal-timeECGweformhebeenpletedbytheserveradoptingtheAndroidtechnologyapplication.TheserverusingJaapplicationwhichachieveJaEEframeworkbasedontheinformationmanagementsystem,Theserver-sideJaprogramming,theinformationmanagementsystembasedontheJaEEarchitecture,andpleteuserinformationandECGInformationManagement.

KeyWords:Remotemonitoringsystem,Androidsystem,Datatranission,ECG

目录

第1章绪论1

1.1研究的背景和意义1

1.2国内外研究现状1

1.2.1个人医疗信息管理系统国内外研究现状2

1.2.2电子病案国内外研究现状3

1.2.3智能手机应用程序开发现状4

1.3本课题的主要研究内容与组织结构6

第2章Android系统与JaEE简介7

2.1Android系统7

2.1.1Android系统基本结构7

2.1.2Android系统在本系统中的应用9

2.2JaEE框架9

2.2.1Struts框架简介10

2.2.2Hibernate框架简介12

2.2.3Spring框架简介13

2.3JaEE框架在系统中的应用14

2.4本章小结14

第3章医疗信息管理系统需要分析与系统设计16

3.1需求分析16

3.1.1系统功能需求16

3.1.2系统安全需求18

3.1.3系统软硬件需求18

3.1.4软件质量特性19

3.1.5医疗信息管理系统需求分析19

3.2系统总体设计22

3.2.1系统架构设计23

3.2.2数据库设计23

3.3客户端模块设计26

3.3.1信号接收模块27

3.3.2信号检测模块27

3.4怎么写作器信息管理系统模块设计28

3.5本章小结31

第4章系统详细设计及编码实现32

4.1怎么写作器信息管理系统功能框架选择32

4.2怎么写作器信息管理系统结构33

4.3客户端功能实现34

4.3.1信号采集模块34

4.3.2去噪算法37

4.3.3去基线漂移算法37

4.3.4R波检测算法38

4.3.5Q波,S波的检测算法40

4.3.6P波,T波形检测算法40

4.4信息管理系统怎么写作器模块实现42

4.4.1数据层实现43

4.4.2业务逻辑层实现44

4.4.3Web层实现45

4.5实时监控功能实现46

4.6系统实现结果分析48

4.6.1信号检测算法实验结果分析48

4.6.2结果分析49

4.7本章小结53

第5章总结与展望54

5.1总结54

5.2展望54

致谢56

a项目开发中炙手可热和前景广阔的一套技术架构,即SSH(Struts.Spring.Hibernate),应用轻量级J2EE平台架构,阐述了一个完整的基于SSH的系统—"医疗信息管理系统".开发采用了SSH整合开发框架及JaEE中的多种技术,并合理利用各种技术的优势,使本项目具有高可靠性,可扩展性以及可重用性[2].

1.2国内外研究现状

1.2.1个人医疗信息管理系统国内外研究现状

在计算机出现之前,医生总是要拿着住院病人的病历档案来往于各个病房.当治疗结束后,病历档案就面临被销毁的危险.网络出现以后,信息化浪潮呈现席卷全球之势.财力雄厚的医院也紧跟潮流,于是各种医疗管理系统层出不穷,比如着名的HIS[2].国内外各大医院也纷纷开发属于自己的医疗信息管理系统.病人的医疗档案也会存储到医疗管理系统数据库中.在提高医务人员工作效率的同时,也增加了病人病历的保存时间,但这只是实现局部的医疗信息化[3].

现代医疗往往十分复杂,超出了人们相像.就单个医院来说,病人看病往往要不是单个科室能够完成的.各个科室之间要实现病人信息的共享,比如病人在化验科化验后,须拿到化验结果才能找医生看病.而化验往往跟放射科,B超室等相关联.大而言之,医院与医院之间也有可能产生医疗信息共享的情况.比如病人转院治疗时.

当病人住院时,为了实现医疗信息的共享,将每个病人病房放一台电脑显然不是一个容易的事情,也不太现实.这就给医生巡视病房带来了麻烦.因为医生不得不拿着纸质的病历走来走去.现代个人医疗更是需求一种能让人随时随地移动的解决方案.面对以上此类的需求,传统的互联的已经有些捉襟见肘了.

现代3G技术迅猛发展.而且3G网络的下载速度已经在2G的基础上有了跨越式的发展.3G网络完全可以完成数据共享所需求的带宽需求.如果将3G无线网纳入到医疗信息管理系统中,必将实现医生拿着手持设备巡视于各个病房之间的梦想.到时医生可以随时翻看病人的病史,而不是仅仅依靠几页纸质的病历作出判断.在提高医务水准和诊断准确性的同时,也提高了工作效率.

在国外,科学技术在医学界应用得淋漓尽致,信息全球化已经改变了医疗行业的传统模式.各种医疗信息系统解决方案层出不穷.通信巨头思科,软件巨头微软,工业巨头通用电器以及芯片行业领先者德州仪器均提出了自己的医疗信息解决方案,并且在各处投入了巨大的财力物力[4].

在国内医疗信息化也在蓬勃发展,温家宝总理更是明确指出要提高全国医疗水平.国内大型医院在整合HIS(医院管理信息化系统)和CIS(临床管理信息化系统).通过对现有医院管理信息化系统的升级,正在向临床信息化发展.随着和谐社会,新农村的建设,农村医疗保障体系的健全.中小型医院也必将加入到信息化系统中来.国内一些IT企业也相继进入这一行业.

图1.1华为医疗云解决方案

作为全球领先的通信解决方案供应商,华为的产品覆盖了无线接入网,核心网,传送网,软件,宽带接入,数据通信及怎么写作等各个领域.以前,在医疗行业里,华为还仅仅属于设备制造的"圈外观察家",但如今,以"云管端"架构为基础的华为系列医疗信息化解决方案却真实的摆在了人们面前.就如同张建华所说,在医疗行业,许多人会认为华为属于"新手",但无论什么行业,所用的基础设施都是相同的,华为有着最先进的技术.而且医疗是华为最早孵化的五个行业之一,加之,上海市闸北区市北医院"健康云"落地以来,无论是评测方还是用户方,整体反馈效果都很好.

1.2.2电子病案国内外研究现状

在美国英国日本荷兰香港等地区电子病案已有了相当程度的研究和应用.印地安那大学医学分校利用电子病案预测早期心脏病病人的死亡率,,,20世纪80年代中期,实际开发,应用则始于90年代中,末期,经10年的努力,目前,我国电子病案的发展仍处在一个比较初级的阶段,没有一家医院或公司研制出称得上是真正意义上的电子病案系统,仍然是没有规范,标准,各自为阵的重复劳动,仍存在着意识问题,技术和软环境不成熟,区域发展不平衡等问题.作者认为,近,中期国内电子病案的研发可分三层,五步的形式来完成相关部门的基本需求.其实,电子病案的最高境界应该是在自然语言的基础上,实现高效复杂的控制,查询和分析,以满足各种需求.电子病案的未来任重道远.

1.2.3智能手机应用程序开发现状

智能手机(SmartPhone)的出现使人们对手机的应用不仅仅局限在打,发消息等这些简单的功能上.智能手机已具备了PDA的大部分功能,智能手机为用户提供了足够大的屏幕分辨率,屏幕尺寸和带宽,同时智能手机都自带有高像素的摄像头可以随时随地进行拍照.并且与一般的手机相比,智能手机具有主频相对较高,内存较大,可以运行一些比较复杂的软件的优势.因此随着3G时代的来临融合了3C(Computer,Communication,Consumer)的智能手机必将成为未来手机新的发展方向[5].

自从2000年,爱立信公司发布第一款塞班手机以来.塞班系统迅速占据智能手机的制高点.随后诺基来公司依靠塞班系统成为了智能手机界的绝对领导者.但是塞班是在2G时代的产物,不能适应3G网络时代的需求.后来苹果公司和谷歌公司分别推出了自己的智能手机操作系统.分别为IOS和Android.IOS凭借其易操作性,界面的华丽,丰富的应用抢占的大量的高端用户.而Android凭借开源性也迅速在智能手机市场占据半壁江山.今年一季度,使用安卓系统的三星手机也超越了昔日的霸主诺基来,成为今天手机界的王者[6].

在国内智能手机也发展得风声水起.中兴,华为等公司迅速成为国内手机市场的领导者.手机应用也层出不穷,各种手机应用应有尽有.涵盖生活中的各个方面,当然医疗广百也不例外.

依靠中科院,清华大学等科研机构.北京益体康公司推出了具有显着竞争优势的适合社区,家庭及个人的远程医疗健康终端产品和整体解决方案.能够以更方便的监控人体心电,脂肪,血压,脉搏等多种生理体征参数,并通过无线传感网络或互联网实现更好的远程监控和信息反馈.

图1.2益体康便携式心电监测仪

较早的人力资源管理系统主要采用FoxBase,FoxPro,VFP等数据库开发工具,系统开发环境也是数据库内置的开发工具[3].其特点是单机单用户方式,开发简单,能充分利用数据库的特性.其缺点是:开发出的系统依赖性很强,运行必须依托数据库环境,不容易升级与扩展,无法实现数据的共享与并行操作,代码重用性差.而后出现了基于传统的C/S模式下采用面向对象的开发工具开发的一系列人力资源管理软件.

随着Inter技术,面向对象技术和分布式计算相互融合,传统的C/S两层体系结构已经不能适应当今大型应用系统的发展要求,因此,多层分布式体系结构应运而生,这些系统一般是采用B/S结构来开发.当前国内人力资源管理系统比较前沿的研究当属基于Struts和Hibernate技术的人力资源管理系统.

依据应用功能和程度人力资源软件可分为四层次,目前国内外市场上人力资源软件非常多并且也都对自己的软件冠以各种名称[4].从名称上看大致可分为GARTNER等咨询机构提出的HARMS和WatsonWyatt,Hewitt等提出的e-hr等两大类.粗略一看,市场上各人力资源软件的功能模块似乎差不多,但如果从人力资源软件的应用功能和程度进行划分,基本可以分为四大层次.第一层次是人力资源数据档案或报表类,该类软件的功能是把人力资源数据档案化,为人力资源人员提供数据管理,报表制作等,第二层次是人力资源信息系统HRMIS,该系统基本覆盖人力资源管理工作中的组织结构,员工信息管理,招聘,培训,薪酬计算等工作,把各类人力资源主体工作自动化,有效提高工作处理的准确率及速度,统一了企业人员组织信息的实时频率.第三层次是相对完整的人力资源管理系统HRMS,一般认为在该类软件中,已经基本能够把人力资源管理的许多工作建立到工作流程中,比如招聘流程中的档案筛选,各类应用,考勤模块中请检测流程的各级审批,绩效管理流程等等.第四层次是战略支撑类人力资源管理系统,这类系统通常被认为还应该具备与企业运营财务,生产等配合,把人力资源工作扩大应用到企业整体中,对企业整体和部门团队的人力资源发展目标,策略能做出衡量和评估,对员工个人职业发展目标,策略能做出评估和衡量[15].

国内外有着许多通用型的人力资源管理系统,他们都有着各自的优点,如操作简单,界面友好,业务流程清晰及管理规范,但是由于国内外企业的管理体制不一样,所以国外的人力资源管理系统并不适合在我国使用.另外,国内的大型的人力资源管理系统,通用性虽然很强,但是某些方面不能完全满足企业的具体需要[5].所以,企业在选择合适的人力资源管理系统的时候,要对本企业的人力资源管理现状进行充分的思考和详尽的分析,对要选择的管理系统,也要全面的了解,明确企业引入系统的目的,这样才能物尽其用.

1.3本课题的主要研究内容与组织结构

本文在Android平台和JaEE框架基础上,充分研究医疗管理系统的需求之后,利用Android平台和JaEE框架实现医疗信息管理系统,在手机端实现了一种快速检测心电信号的算法.论文内容安排如下:

第1章:主要介绍课题意义,研究内容,发展现状.

第2章:介绍了Android系统架构,Android编程方法最后阐述了Android技术在系统.

第3章:详细.

第4章:实现基于B/S模式的系统,对系统设计及实现进行详细说明,并提出了一套快速心电检测算法.

第2章Android系统Android系统Android之父鲁宾先生精通Ja和Linux,出自其手的Android系统也是在Linux内核上构建.有人曾经说Android就是架构在Linux内核上的Ja应用程序.其实Android系统远比我们相像的要复杂得多.

Android系统采用软件堆叠技术,架构清晰.如图2.1所示,Android系统分五个层次(有的书介绍分分四层,HAL层省略).从上至下依次为系统应用程序层,应用程序框架层,系统原生库层,硬件抽象层和Linux内核层.各层次提供的功能介绍如下:

系统应用程序层(Applications)

系统应用程序层怎么写作对象为系统使用者,为用户提供核心怎么写作.包括电源管理,管理,闹钟管理,蓝牙怎么写作,WIFI怎么写作.特色怎么写作包括Google公司专有的地图怎么写作,搜索引擎怎么写作.此部分程序主要使用Ja语言编写,通过调用下层(应用程序框架层)API或者使用JNI调用原生库来完成功能.此部分采用MVC架构,将显示部分,控制部分和模型部分完全分开.为程序开发者提供了标准的程序模板.

图21Android体系架构图

应用程序框架层(ApplicationFramework)

本层怎么写作对象为系统应用程序层,为上层应用程序提供框架.本层使用软件重用机制,使上层完全可以访问本层组件.在遵守Android框架安全约定的前提下,根据需求开发者可以自行开发组件.为提高开发效率,开发者可以继承Android框架提供的组件类.应用程序框架类似于Windows平台下的MFC.本层提供的组件主要包括Activity组件,ContentProvides组件,Broadcast/Receiver组件,Service组件.

Activity组件为程序提供界面,展示包括View,Button等控件.ContentProvides组件是内容提供器,类似于JAEE框架中的Hibernate.开发者利用ContentProvides可以访问SqLite数据库,手机等数据.Service组件和Activity组件一样,是一个独立的线程,区别在于Service不提供界面,只在后台运行.能为用户提供音乐播放等耗时的怎么写作.Broadcast/Receiver类似于Windows系统中的消息机制.可以实现组件之间,及线程之间的通信,是Android独有的通信方式.

系统运行库层(AndroidRuntime,Libraries)

本层次包含两部分,分别如下:

Android原生程序库.主要用C/C++程序编写,包含数据库应用(SQLit),多媒体应用(MediaFramework,OpenglEs),基于Linux内核的C语言应用程序库以及界面管理系统(SurfaceManager)[1],AndroidNDK编程就是用Ja直接调用这个层次的函数.NDK编程可以提高软件运行速度,弥补Ja语言在运行速度方面的缺点.程序员可以将原有的C/C++语言库函数移植到Android应用程序中,然后使用JNI方式调用即可.

Adnroid运行时库.Adnroid运行时库包括分两部分:核心库,Dalvik虚拟机.核心库为上层框架使用JNI提供了接口,而且可以提供一些Ja语言的核心库的功能.Dalvik虚拟机是Android自行设计的虚拟机.为了满足速度方面的需求,Dalvik虚拟机基于寄存器运行.Android应用程序源文件经编程器编译后,生成.dex格式文件,然后才能在Dalvik虚拟机中运行.

硬件抽象层(HardwareAbstractionLayer)

为了方便软件开发者开发原生函数库,Android将底层硬件接口及实现细节全部屏蔽.同时提供一些Linux内核没有的驱动.但是该层次在方便的同时也降低的系统的运行速度.

Linux内核层(LinuxKernel)

最新Android4.01使用Linux3.08内核.Android系统核心怎么写作依赖于Linux内核提供的内存管理,网络协议和硬件驱动.为了使Linux内核能更好的在手持设备上使用,Android系统开发者对Linux内核做了一些改良,比如修改了蓝牙模块的实现文件.并且增加了一些手机特有的怎么写作.比如日志,电源管理,Android线程通信机制(IPC)等.智能手机端主要完成信息的接收与转发,在Android系统下通过蓝牙传输获得数据.检测处理数据,并将数据转发到怎么写作器端.怎么写作器系统完成信息的收集,用户注册,用户信息管理

我们在充分了解用户需求后,我们对系统模块划分如下:用户客户端,医疗信息管理系统,医生客户端.用户客户端和医生客户端在Android手机操作系统运行,患者通过用户客户端完成心电检测,管理.医疗信息管理系统管理心电数据及医生客户端查看心电波形等用户信息.心电信号管理系统运行在JAEE怎么写作器上,通过网络提供怎么写作.可以使用浏览器访问心电管理系统,管理.管理系统为用户客户端和医生客户端提供怎么写作接口.用户客户端,医生客户端向心电管理系发送查询信息请求,心电管理系将相应信息通过网络发送到客户端.

图2.2JaEE应用架构图

JaEE框架在系统架构上实现了实质性的飞跃.JaEE架构凭借其独特的类工厂,接口等组件分离方法,降低了组件之间的代码依赖,从而使各组件之间的耦合性降低.

传统的JaEE应用大都使用EJB来管理系统应用的各个模块.但是EJB必须在特殊的应用怎么写作器(JBOSS等)下才能运行.增加了开发与运行的成本.而以SSH(Struts+Spring+Hibernate)为代表的轻量级JaEE应用却没有这方面的开销[34-36].轻量级JaEE应用以JSP作为表现层技术,以开源框架Struts作为MVC层,Hibernate作为持久层,Spring作为控制层的解决方案.并将这些方案有机地组织,使之完美结合在一起.使得JaEE应用具备优雅的可扩展性,可维护性.

2.2.1Struts框架简介

Struts出现之前,Ja网络解决方案全部由JSP页面组成,JSP页面在接收到用户请求后,直接处理,当有数据存储或者查询要求时,JSP代码调用JaBean连接数据库,并对数据库进行操作.这确实适合于小型项目的开发,但是从工程化的角度来看,局限性非常突出:JSP页面拥有表现层和控制层的功能,控制逻辑与表现逻辑混淆在一起.代码的重用性低,并且不利于扩展和维护.而Struts的出现解决了这一难题.

Struts采用MVC架构的设计模式.在利用的帮助下,Struts可以分离JSP页面的请求动作,并将请求交给控制层.控制层处理请求后将回馈信息转换成JSP页面.于是JSP页面不再担任控制器的角色,它只作为表现层.利用Struts框架后,表现逻辑与控制逻辑分开在两个不现的层面.增加了扩展性和可维护性.

使用Struts框架开发程序流程大致如下:

(1)在web.xml文件中配置Struts框架的核心(Filter).由于我们使用的是Tomcat怎么写作器,所以用户请求首先被Tomcat怎么写作器拦截,Tomcat根据web.xml配置文件通知用户.所以使用任何框架都需要在web.xml中进行必要的配置.Struts框架在web.xml文件中配置(Filter)拦截用户所有的请求.然后根据请求的URL决定调用相应的Action.

(2)如果浏览器端以Post方式提交请求,Struts框架定义包含表单数据的JSP页面.否则直接进行下一步处理.至此,Struts框架将用户请求剥离出来,将用户请求发送到控制层进行进一步处理.

(3)编写处理客户端请求的Action类.Action类是Struts框架的控制层组件,用户的所有请求都在这里进行处理.当用户请求对数据库进行操作时,Action类可以调用持久层组件对数据库进行操作.

(4)配置Action组件.在使用Ja语言编写的MVC框架中,大部分使用XML文件进行配置管理,Struts框架也不例外,Struts的XML文件配置了用户请求和对应的Action类.根据XML配置文件,Struts控制器根据用户请求实例化相应的Action类,并调用该Action类的业务控制方法(通常为execute()方法)处理用户请求.

(5)配置处理结果和物理视图资源之间的对应关系.当Action实例将用户请求处理完毕以后,将会返回处理结果(通常是简单的字符串).这时控制权从Action实例回到了Struts框架的控制器.控制器会根据处理结果配置决定下一步操作.此配置文件可以指示下一步操作是进入另一个Action还是以物理视力资源的方式输出处理结果.

(6)编程物理视图资源.物理视力资源就是表现层文件.就是展示给用户的页面.通过物理视力资源,用户可以直观地看到请求的回馈信息.如果Action类需要把一些回馈信息传输到物理视图资源,则可以使用OGNL表达式.

2.2.2Hibernate框架简介

在关系型数据库.(ORACLE,DB2等)大行其道的今天.面向对象的开发思想已经占据软件市场占据重要的地位,当我们用面向对象语言开发项目时,从需求分析到应用类设计,再到编程实现,全部使用面向对象的方法.但是到了持久层时,访问数据库操作却重返关系数据库的访问方式.这会造成很多不必要的麻烦.针对这种编程语言与低层数据库的发展极不平衡的现象.很多对象/关系数据库映射(ORM)框架便应运而生了.其中最为着名的便是Hibernate.

Hibernate最基本的特征是提供持久化类和数据表之间的映射关系.通过对持久化类的操作从而达到对数据表的操作.映射关系大致如下:

数据表映射类:持久化类被映射到一个数据表.当使用这个持久化类进行创建实例,删除实例,修改属性时,系统会自动转换成对映射的表进行对应的创建,删除,修改等操作.关系如下图所示:

图2.3数据表对应Model类

映射包含以下几种:

数据表的行映射成对象.持久化类的实例对应数据表中的一行记录.当我们在操作中修改一个持久化类的实例时,Hibernate就会修改相应的记录.

数据表的列映射对象的属性.当我们对持久化类的实例的属性进行操作的时候,Hibernate就会修改持久化类对象对应行的列进行修改.

Hibernate优点介绍如下:

Hibernate拥有开源免费的的Licence,可以方便地修改源代码,并对其进行写作.

Hibernate对Ja类进行轻量级封装.低侵入式的设计.调试简单.减轻程序员工作负担.

可扩展性.由于Hibernate是开源的,当我们需要其它功能时可以方便地修改源代码,增加需要的功能.

兼容性好.Hibernate可以实现和Struts或者Spring无缝结合.

2.2.3Spring框架简介

Spring框架由RodJohnsond开发,在2003年发布第一个稳定版本.经过8年的发展,Spring框架凭借其易用性,方便性,快速成长为JaEE平台中最重要的框架之一.

Spring是一个轻量级的解决方案,解决方案包括:基于依赖注入的核心机制,基于AOP的声明式事务管理,与多种持久层技术的整合,例如优秀的MVC框架.Spring致力于JaEE框架的各层的解决方案,贯穿表现层,业务层,持久层,而不是专注于某一层.而且,Spring以高度的开放性与优秀的框架无逢的结合.甚至可以说Spring框架是企业应用的一站式选择.总体来讲,Spring框架有如下优点:

低侵入式设计,代码的污染式低.

Spring的AOP支持允许将一些通用的任务如安全,事务,日志等进行集中式处理,从而提高了更好的复用性.

Spring高度开放,不强制用户完全使用Spring,方便的和现有的框架整合.经典的Struts+Spring+Hibernate就是证明.

Spring最基本的接口是BeanFactory.其负责配置,创建,管理Bean,BeanFactory的子接口是ApplicationContext(Spring上下文),Spring负责管理Bena与Bean之间的依赖关系.依赖关系由XML文件配置,XML文件通常使用Resource文件传入.

Spring装配对象时,对象属性是由装配文件负责装入的,Spring高度重视配置文件管理Ja实例之间的协作.

Spring原理如下:

Ja设计模式注重组件之间耦合度低.为了降低耦合度,人们想出很多办法,其中比较理想的就是工厂模式,工厂模式让组件之间的耦合变成了工厂类与组件之间的耦合,Spring的原理也来源于工厂模式,Spring容器中所有组件均由Spring工厂完成实例的创建.省去了程序员编写工厂类的工作,人们只需要把需要的组件配置在Spring的配置文件中,组件之间的关系也配置在配置文件中,这样当组件需要另一个组件时就可以直接使用Spring的工厂接口ApplicationContext进行创建配置文件中定义的组件,于是组件之间的耦合度就降低了.

Spring不仅仅负责创建组件,Spring也负责管理组件.通过ApplicationEvent(容器事件),ApplicationListener(事件).任何组件利用ApplicationContext发布的容器事件(ApplicationEvent)均可由事件监听到,并能做出相应的处理.通过事件监听机制.Sping可以对组件的生命周期进行管理.

工程硕士学位文评阅书参考属性评定
有关论文范文主题研究: 关于数据库的论文范文文献 大学生适用: 学位论文、自考论文
相关参考文献下载数量: 14 写作解决问题: 怎么撰写
毕业论文开题报告: 标准论文格式、论文摘要 职称论文适用: 技师论文、职称评副高
所属大学生专业类别: 怎么撰写 论文题目推荐度: 免费选题

2.3JaEE框架在系统中的应用

项目中我们使用Struts框架作为MVC层的控制器组件,Spring管理业务逻辑组件,Hibernate实现持久层DAO组件.各组件之间面向接口编程,并利用Spring的Ioc容器将它们组合在一起.并且怎么写作器为手机客户端访问留下接口.方便手机接入.

从用户角度来看,Struts核心拦截用户请求,通过Spring插件提取Spring容器创建的控制器(Action).为了处理请求控制器还可以调用其它Sping容器中的业务逻辑组件.当处理请求有数据库原子操作时,当MVC框架的控制器拦截到用户请求时,业务逻辑组件再调用DAO组件,DAO组件调用底层数据库组件进行数据库操作.

从系统实现角度来看,Spring利用注入机制,将底层数据库操作组件注入DAO组件.使DAO组件具有数据访问能力.然后将完整的DAO组件注入业务逻辑组件.Struts核心拦截到用户请求后,调用相应的控制器组件,将处理组果呈现给用户,而这些注入的过程均由Spring的Ioc容器提供实现.

智能手机端主要完成信息的接收与转发,在系统下通过蓝牙传输获得数据.检测处理数据,并将数据转发到怎么写作器端.怎么写作器系统完成信息的收集,用户注册,用户信息管理.

本章首先对Android系统作细致研究,对系统结构及各模块功能详细分析.通过分析得出远程可以利用Android手持设备完成数据通信,数据处理任务 第3章医疗信息管理系统需要分析与系统设计

随着人们生活质量的提高,个人健康问题逐渐受到关注.心脏病是一种常见的多发慢性疾病,具有长期带病,急性发病的特点,而心脏病患者的分布广泛且移动性较大.心电图是当前最普及的一种检查方法之一,不仅局限于心血管疾病的诊断,也是临床各科的基础检查方法之一.如果能实时监测自己的心电血压等信息不仅能及时发现病情,而且可以提供电子病案.方便慢性,顽固性疾病的治疗.

Android系统作为世界上最优秀的网络公司Google公司的产品,从诞生的那一刻就具备与怎么写作器应用整合的天然优势.Android系统主要的使用在手机等手持设备上,手持设备为便携性考虑,一般使用低功耗计算芯片.在计算速度和存储容量方面与传统PC有很大的差距.所以Android应用更适合在网络大潮中作为客户端使用.现在淘宝手机客户端,人人网客户端,腾讯客户端都已经出现在Android手机上.人们利用这些Android应用程序可以随时开机访问网络,随时上传信息,获取怎么写作器数据.

本系统在Android系统手机上实现实时心电检测功能与远程监控功能,不仅能让病人随时检测自己的心电,而且在发现病情时能报警,联系医生后,医生可以通过网络查看病人实时的心电数据实施远程医疗.需求分析实地走访了主治医生及患有心脏疾病人群,与他们进行深入交流,充分了解他们的需要,我们做出如下需求分析.

.1.1系统功能需求

根据实际情况需要,心电远程监控系统主要使用对象为:心脏疾病者用户,医生用户,系统管理员.各类人需求分析如下:

1)普通用户(患有心脏疾病者)

心电远程监控系统信息提供者和使用主要为医生和患者,方便医生和患者之间远程交互.他们一般不是计算机从业人员,他们希望监控系统使用方便,界面交互性好,操作简单.

心脏病人通过注册成为用户后,可以通过系统检测功能检测心电信号,当心电信号出现异常情况时,可以通过本系统联系自己的主治医师.在主治医师不在患者周边的情况下,医生可以通过网络查看患者实时心电波形.为远程医疗提供便利.普通用户需求大致如下:

心电信号采集功能.心脏病人可心通过心电采集仪收集心电信号,经过处理后的心电信号通过蓝牙功能传输到手机端,在手机端患者可以查看实时心电波形.

心电信号检测功能.当手机接收到心电信号后.进行实时心电数据检测.首先对数据进行去基线漂移,去噪.然后检测Q波,R波,P波,T波.在实时心电波形显示图中标注各种波峰的具体位置.经过波形分析可以峰检测心率以及是否心跳异常.如果检测到心电波形出现异常,可以通知主治医师.

心电信号上传功能.由于手机存储空间有限,为方便用户数据保存,病人的心电数据必须及时传输到怎么写作器端.不仅方便以后查阅,而且通过怎么写作器提供的怎么写作.主治医师可以及时查看到患者心电波形,帮助医生了解病情.

注册登录功能.用户进入系统注册页面,填写信息注册.在对用户提交数据进行语法,格式检测确认为合格信息后,系统将用户信息存储在数据库中,到此用户完成注册.注册信息主要包含:用户健康信息(身高,体重,有无除心脏疾病外的其它病史),用户姓名,手机号,地址,工作单位,,等.成为本系合法用户后,用户使用提交用户名,后,就可以登录本系统.

心电信号查询功能.用户登录系统后,可以根据日期查询以前心电数据.

管理功能.当用户信息如主治医师等有所改变时,用户可以登录管理系统,及时更新信息.

2)主治医师

注册登录.为了保证病人合法权益,医生必须注册.经过审核注册信息属实后.才能使用本系统.

查看病人信息.为了给医生提供丰富的医疗信息.医生可以通过本系统查看病人健康信息,往日心电数据等.

查看患者实时心电波形.当病人心电信号检测到异常时,医生通过系统查看病人的实时心电波形.及时查出病因.

3)系统管理员

登录功能.管理员需要登录才能进入系统.

审核医生信息功能.当医生提供注册信息后.管理员需要实地考查后.决定是否确认医生注册.

信息管理.管理员是系统信息维护者.为了保证系统能正常运行.管理员要删除过期用户ID等无用信息.

数据库恢复功能.当系统受到攻击.管理员可以恢复数据库,使用户数据免受损害.

.1.2系统安全需求

为了保证用户安全信息及传输数据不被窃听,系统采用如下安全措施:

通信安全.为了保证用户数据安全,避免诸如,陷阱等手段的破坏,该系统需要启动基于安全超文本传输协议(Https)的安全Web怎么写作.与传统的超文件传输协议不同,它首先将要发送的数据必须经过复杂加密算法进行加密.然后以密文的形式传输.即使用户传输数据被人窃听,也不会泄漏相应的信息.

数据库安全.一旦发生攻击事件,数据库往往是重灾区.而系统数据库中存储了大量的对用户来说非常重要的信息.例如往日心电波形,健康信息.这些信息一旦丢失,对患者带来的损失将难以估计.本系统在设计这初就对此特别关注.系统利用如下方法提高数据库的安全性能:对输入数据格式来加审查,避免诸如SQL注入等数据库攻击,增加数据备份和恢复功能.即使数据库遭受攻击,也能保证用户数据依旧完好无损.

安全.保证的安全就是保障用户购写的权益.很多都可以盗用用户,例如冰河,灰鸽子等后门.为了保证用户权益,一般都采用加密的方法对用户进行保护.现代流行的加密算法有MD5,Shal等.这些算法都具备了确保用户数据不被恶意修改的功能.在数据交互过程中,本系统采用MD5对用户加密.有效降低了用户被盗用的风险.

.1.3系统软硬件需求

运行环境:在Linux平台下运行

数据库:Mysql5.0

Web怎么写作器:TOMCAT.安装Android系统智能手机.

配备蓝牙模块

3.1.4软件质量特性

医疗管理系统是医院系统管理平台,平台使用者一般都是非专业人士,这就需要我们的软件易操作,可维护.些平台又是一个长久使用的系统,所以软件可扩展性要好.并且界面清新,符合医院工作人员的工作习惯.

系统交互

本系统使用者分三类,分别为医生,病人,管理员.在安全的前提下系统操作要流畅.要以直观的形式将信息展示给用户.医生观察病人病史时,以时间排序依次显示病史.心脏疾病病人在接受远程医疗时,病人的心电图要像示波器一样实时显示在浏览器中.

本地化

医疗信息管理系统是需要长期使用的系统.随着全球化进程越来越容易,医疗信息管理系统迟早会走向国际化.所以本系统支持多语言扩展,为以后系统升级做准备.

3.1.5医疗信息管理系统需求分析

根据医疗信息管理系统功能需求分析,确定三个用户角色:系统管理员,医生,患者.

患者:患者信息是医疗信息管理的对象,患者通过医疗信息管理系统保存,查询自己的信息.并能通过网络进行远程医疗.

医生:通过网络对患者进行远程医疗.查看患者实时心电数据.查询患者病情,病史.

信息录入员:当患者在该医院就医时,当患者第一次就医时,为患者创建账户.并将病人身体检测信息,病历信息保存到数据库中.

系统管理员:医疗信息系统的主要管理者.清除无用信息.维护系统使之正常运行.患者,医生资格的认证管理.

患者的主要操作如下:

使用患者用户名,登录系统

查看患者

录入患者病历信息

录入患者基本信息(身高,体重,年龄).

修改个人

修改个人基本信息

进行远程医疗

患者用例图如图3.1所示:

图3.1患者用例图

系统管理员主要操作如下:

使用用户名,登录系统

更改

患者信息管理

医生信息管理

录入员信息管理

系统退出

系统管理员用例图如图3.2所示:

图3.2管理员用例图

医生主要操作如下:

查询患者病历

查询患者基本信息

利用本人用户名,登录系统

进行远程医疗

修改本人

医生用例图如图3.3所示:

图3.3医生用例图

信息录入员主要操作为录入病人信息.其用例图如图3.4所示:

图3.4信息录入员用例图

3.2系统设计传统的SSH(Struts+Spring+Hibernate整合)架构的怎么写作器系统只能在个人电脑上使用浏览器访问系统.而不能使我们随时随地得到需要的信息.Android系统丰富的通信功能,不仅能使我们随时下载信息,而且能随时上传信息与别人分享.为整合Android系统与怎么写作器系统的优势.本系统将Android应用与传统SSH框架整合,构造一个横跨手机,怎么写作器,浏览器的B/S模式的信息管理系统.

本系统怎么写作器采用完整的JAEE轻量级SSH应用框架,应用架构采用了具有高度可扩展的控制器层+业务逻辑层+DAO层的分层架构.Android客户端通过网络与怎么写作器端的控制器组件交互,在不影响传统怎么写作器架构的情况下,使功能更加丰富.

图系统逻辑结构图

图图

.2.1系统架构设计

智能手机端主要完成信息的接收与转发,在Android系统下通过蓝牙传输获得数据.检测处理数据,并将数据转发到怎么写作器端.怎么写作器系统完成信息的收集,用户注册,用户信息管理,系统逻辑结构如图3..

图系统功能模块结构图

.2.2数据库设计

医疗信息管理系统的数据库设计主要包含如下数据表:用户(User)表,医生(Doctor)表,管理员(Admin)表,体征(Sign)表,文件(Doc)表,对这些表分述如下:

用户(User)表:保存用户基本信息,包括联系,,用户姓名,,家庭住址等.

医生(Doctor)表:保存医生的信息,包括姓名,等.

管理员(Admin)表:保存管理员的信息,包括姓名,等.

体征(Sign)表:该表用来保存用户的体征信息,包括用户姓名,联系,身高,体重,年龄,性别,有无病史等.

文件(Doc)表:保存用户客户端传递的心电信号文件,包括文件名,用户名,联系,时间,点数,增益等.

各表的结构设计如表所示:表1User表

字段名字段类型长度是否主键允许空值字段含义useridbigint20是否用户IDuser_novarchar20否否用户帐号namevarchar20否否用户姓名passwordvarchar20否否用户phonevarchar20否否用户联系varchar20否否用户addressvarchar50否否用户地址macvarchar48否是心电采集仪MAC

表2Doctor表

字段名字段类型长度是否主键允许空值字段含义doctoridbigint20是否医生IDdoctor_novarchar20否否医生帐号namevarchar20否否医生姓名passwordvarchar20否否医生表3Sign表

字段名字段类型长度是否主键允许空值字段含义signidbigint20是否IDuser_idbigint20否否用户IDnamevarchar20否否用户姓名phonevarchar20否否用户联系heightbigint20否否身高weightbigint20否否体重agebigint20否否年龄sexvarchar2否否性别historyvarchar20否否有无病史表4Doc表

字段名字段类型长度是否主键允许空值字段含义docidbigint20是否IDuser_idbigint20否否用户IDdoamevarchar20否否文件名namevarchar20否否用户名phonevarchar20否否用户联系timedatetime0否否时间dotbigint20否否点数表5Admin表

字段名字段类型长度是否主键允许空值字段含义adminidbigint20是否管理员IDadmin_novarchar20否否管理员帐号namevarchar20否否管理员姓名passwordvarchar20否否管理员数据库表关系图如下:

图3.数据库关系表

作为Android应用程序,用户客户端实现有两种编程实现方式SDK,NDK.为了满足实时性需求,系统采用NDK编程实现.实现流程如图3.所示为了.

图3.流程图

.3.1信号接收模块

心电采集仪与手机通信采用蓝牙无线通信方式.为了尽量简化心电采集仪功能.系统设计心电检测设备在蓝牙通信中做为怎么写作器端,手机端程序作为客户端..3.2信号检测模块

医疗信息管理系统是为实现对病人进行长期心脏监测而提出的具有远程通信能力的医疗监护.心电监护中,心电信号自动检测是指对心电信号的自动提取和分析异常信号的自动识别和对某些心脏疾病的自动诊断等.其中,心电信号自动提取和分析的算法又是影响系统智能性,准确性和可靠性的关键.目前市场上远程心电监护类产品,在终端上一般不具备信号分析处理的能力,少数能够实现自动分析和诊断的仪器在实现的精度和速度上也远远没有达到预期要求.因此,本章针对这个特殊应用,研究适用于监护终端的心电检测算法.

医疗信息管理系统是一个中小型管理系统,数据不是很庞大,并发性有限,是面向中小型医院设计并使用的.业务简单,逻辑清晰,并且不需要RMI访问,成本有限.根据这些特点,本文功能基于开源框架实现.在手机端基本Android系统实现,在怎么写作器端基于Linux+Apache+Tomcat+JaEE经典组合实现.系统总体技术架构图如图3.9所示.

为减少组件之间的耦合,方便系统维护,扩展.怎么写作器端采用分层结构,大体分三层:表示层,业务逻辑层,数据持久层,总体架构图如图3.10所示.

Android与怎么写作器端通信时需要一种合适的数据交换格式,本系统采用了JSON作为Android客户端与怎么写作器的数据交换格式.JSON的全称是JaScriptObjectNotation,即JaScript对象符号,它是一种轻量级的数据交换格式.

在怎么写作器端,使用的是struts2对用户请求进行处理,要使Android与怎么写作器通信就是要处理Android应用程序的JSON数据用struts2进行接受请求与处理.

图3.10系统总体框架组成图

系统采用ApacheHttpCLient与远程怎么写作器通信,为了简化HttpClient的用法,系统定义了一个工具类对HttpClient进行封装,该工具类定义了如下两种方法来发送请求:getRequest()发送GET请求,postRequest()发送POST请求.工具类的定义方法步骤如下:首先创建HttpClient对象,并绑定发送请求的地址即怎么写作器地址.在getRequest方法中,首先创建HttpGet对象,并发送GET请求,如果怎么写作器成功的返回响应就返回获取怎么写作器响应字符串,否则返回null,在postRequest方法中,首先创建HttpPost对象,如果传递参数个数较多,可以对传递的参数进行封装,封装完毕之后设置请求参数,发送POST请求,如果怎么写作器成功的返回响应就返回获取怎么写作器响应字符串,否则返回null.

处理用户登录的action,用来获取请求参数,调用业务逻辑组件的方法来处理用户请求,根据处理结果生成输出.具体实现如下:首先获取系统的业务逻辑组件,验证用户登录,如果登录成功,就把验证的userId封装在JSONObject中,最后输出响应.

在Android客户端,用户登陆界面的文本框接受用户输入的用户名,信息后,将该信息提交给activity处理,activity对用户的信息进行校验,如果校验成功,向怎么写作器发送请求,并将怎么写作器响应封装成JSONObject返回给用户.

这样就完成了怎么写作器与Android客户端的通信过程,其他的业务逻辑虽然在数据结构方面与登录模块中的用户信息不同,但是在通信流程上相类似的

图医疗信息管理系统操作流程图

在对需求分析基础上,对系统总体架构进行设计,对核心业务流程作简要分析介绍了用户客户端模块 第4章系统详细设计及编码实现

4.1怎么写作器信息管理系统功能框架选择

本系统主要涉及三个开源框架:Struts2.2,Spring3.0和Hibernate3.6同时还使用JSP作为表现层技术,并且可以提供在Android系统下的客户端.本文将这五种技术有效的结合在一起,从而构造出一个健壮的JAEE应用.

1,传统表现层技术JSP

本系统使用JSP作为表现层,负责收集用户请求数据,以及作为业务数据的表示.

JSP是最传统也是使用最广泛的表现层技术.本系统的JSP页面是单纯的表现层所有的JSP页面不再使用JA脚本.结合Struts2.2的表现层标签,JSP可完成全部的表现层功能—数据收集,数据表示和输入数据校验.

2,MVC框架

本系统使用Struts2.2作为MVC框架.Struts2.2以WebWork和Struts1.1为基础迅速成长为MVC框架中新的王者,一经推出,立即赢得广泛的市场支持本应用的所有用户请求,包括系统的超链接和表单提交等.都不再直接发送到表现层JSP页面,而是发给Struts2.2的Action.Stuts2.2控制所有请求的处理与转发.

通过Struts2.2拦截所有请求有一个好处:将所有JSP页面放入WEB-INF/路径下.可以避免用户直接访问JSP页面.从而提高系统的安全性.

本应用使用基于Struts2.2的权限控制,应用中控制器没有进行权限检查,但是每个控制器都需要重复检测调用者是否有足够的访问权限.这种通用的操作正是Struts2.2的用武之地.整个应用有用户,管理员,医生,信息录入员四种权限.只需要在Struts2.2的配置文件中为四种角色配置不同的.即可完成对用户,管理员,医生,信息录入员四种人员的权限检测.

3,Spring框架

Spring框架是系统的核心部分,Spring提供的IOC容器是业务逻辑组件和DAO组件的工厂,它负责生成并管理这些实例.

借助于Spring的依赖注入,各组件以松耦合的方式组合在一起.组件与组件之间的依赖正是通过Spring的依赖注入管理.其Service组件和DAO对象都采用面向接口的编程方式,降低了系统重构的成本.极好的提高了系统的可维护性,可扩展性.

应用事务采用Spring声明式事务框架.通过声明式事务,无须将事务策略以硬编码的方式与代码耦合在一起,而是放在配置文件中声明,使业务逻辑组件可以更加专注于业务的实现.从而简化开发,同时声明式事务降低了不同事务策略的切换代价.

4,Hibernate

Hibernate作为O/RMaping框架使用,其O/RMaping功能简化了数据库的访问,并在JDBC层上提供更好的封装.以面向对象的方式操作数据库,更加符合面向对象程序设计思路.

Hibernate以优雅灵活的方式操作数据库,无须开发者编写烦琐的SQL语句,执行冗长的多表查询,而通过对象与对象之间的关联来操作数据库,为底层DAO对象的实现提供了支持.

本应用扩展了Spring的HibernateDaoSupport基类,提供一个MyHibernateDaoSupport,该扩展类主要提供三个用于分页查询方法.从而可以非常方便地进行分页查询.

本文所有DAO组件都继承MyHibernateDaoSupport基类.借助于Spring的IOC容器和DAO支持.程序开发者无须管理Hibernate的SessionFactory和Session等对象.直接使用Spring提供的HibernateTemplate即可完成数据库操作.

4.2怎么写作器信息管理系统结构

本系统采用严格的JAEE应用结构,主要由以下几个分层:

表现层:由JSP页面组成,展示用户请求的信息.

MVC层:使用MVC框架技术

业务逻辑层:主要由SpringIOC容器管理的业务逻辑组件组成.

DAO层:由若干DAO组件组成.

领域对象层:由若干PO组成,并在HibernateSession管理下,完成数据库访问.

数据库访问层:使用MySQL数据库存储持久化数据.

为了使设计清晰,本应用采用贫血模式设计,所以本应用中的领域对象实际上只是一些简单的JABEAN类,并未提供任何业务逻辑方法,所有业务逻辑方法由系统的业务逻辑组件来提供.贫血模式简单,直接系统分层清晰,比较适用于实际开发.

整个系统结构图如图4.1所示:

图4.1怎么写作器信息管理系统组织结构图

4.3客户端功能实现实现了一种简单实时的,基于差分斜率窗口方法的时域心电检测算法其运算量相对较小,计算简单,便于实时检测,可准确定位QRS波,然后采用窗口法对PT波进行检测.同时提出了一种基于可变斜率阈值方法检测P波,QRS波群,T波的起始点,终止点.心电检测部分为五部分实现.分别为去基线漂移,去噪,Q,R,S波形检测,P,T波检测,检测结果分析.4.3.1信号采集模块

项目中心电采集仪与手机通信采用蓝牙无线通信方式.为了尽量简化心电采集仪功能.系统设计心电检测设备在蓝牙通信中做为怎么写作器端,手机端程序作为客户端.考虑到蓝牙传输能力和无线功耗问题,心电检测仪发送频率为每秒钟125个心电数据,在数据传输中,发送数据格式表所示:

表通信格式表

帧头(2byte)帧序号(1byte)导联标识(1byte)ECG数据段(8byte)数据格式分为帧头,单导联标志位,帧序号和ECG数据段4部分功能如下:

帧头:值为AA55的2byte固定头字节.

帧序号:1byte的数据,范围为0-255,超过255从0计数.表示数据帧发送顺序.

导联标志:在本设备中固定为0x01的导联标志.表示单导联数据.

ECGData字段:总共8Byte,表示4个16进制心电数据,低byte在前高byte在后.

本项目中,由于心电采集仪设计简单,数据通信面临诸多困难.当采集3-10个心电数据时,心电采集仪便将心电数据按商订的数据格式封装,利用蓝牙模块发送至手机端.手机端心电检测算法基于统计原理,需要大量心电数据.经测算,通信模块至少要提供心电采集仪一秒钟内发送的数据,才能进行心电检测.心电检测算法严重依赖接收数据的完整性,但是心电信号数据量很小,心电采集仪又不具备确认重发的功能.数据通信模块需要根据上下文数据补全没有收到或者接收错误的数据.心电仪采用十六进制编码.接收到数据后需要转换编码.项目中接收心电数据流程如图4.由于AndroidUI线程处理界面显示,一般不会执行耗时的任务.故系统新建数据接收线程ReceiveThread.新建线程中设置定时器timer,二维数组recvDouBuf充当数据接收双缓冲.recvPoint数组记录双缓冲中的存储的数据量.在一秒钟内,蓝牙连接Socket接收数据并存储至缓冲recvDouBuf,并记录总长度.间隔时间到达时,更换缓冲.调用包解析函数处理上一个缓冲区内的数据.

在包解析函数中.首先查询缓冲数组中的数据.若第一和第二位值为AA55,第四位为0x01,并且缓冲数组中数据大于12,则认为缓冲数组中存在一个完整的数据包.根据第三位(帧序列)的数据,将数据包重新排序,发现有缺失的帧时,利用相邻的两帧序的平均值补全缺失的帧.最后将完整的数据数组交由编码转换函数处理为了方便数据传输,心电采集仪取得心电电压后.将数据转变成16bit的整形数据.采用的是十六进制编码,发送到手机端.在手机端需要首先将十六进制编码转换成整数,除以1001再乘以50就得到了可以用于心电检测的心电数据了.

图4.数据接收流程图

4..2去噪算法

算法采用带权平滑滤波方法.滤波函数为:

(4-1)

其中y(n)为滤波后的心电信号x(n)为原始采集的心电信号.

4.3.3去基线漂移算法

本算法采用中值滤波实现去基线漂移.首先对去噪后的心电信号y(n)从y(1)开始加窗,窗口大小为100.然后将100个数据排序,取中间值base_line(1).窗口右移一位重复上一步操作,得到base_line(2),依次类推可得中间值序列.使用公式y(i)–base_line(i)得到去心电信号基线漂移后的信号f(i).

图4.为一段采样率是250Hz的心电信号进行平滑滤波,去基线漂移前后的图形对比.从图中可以看到滤波前的波形工频干扰非常明显,平滑滤波后很好地去除了工频干扰.从图中可以看到滤波前的波形基线漂移非常明显,中值滤波后很好地去除了基线漂移.

图4.去基线漂移效果图

4..4R波检测算法

差分阈值法是一种快速算法,适合于运算速度相对较低,但对实时性要求较高的手持心电检测设备.其原理是:由于QRS波群是心电信号波形变化最为剧烈的区域,该区域波形的上升斜率或下降斜率与其他区域波形的斜率相比显着不同,所以通过检测斜率(心电信号序列对时间的导数即的变化)来定位QRS波群的位置.通常心电波形斜率变化最大的区域出现在R波的上升沿和下降沿,这一区域的绝对值最大值点为R峰点所在的位置.通过对滤波后的信号应用一阶差分或二阶差分并与由实验获得的阈值相结合,确定出QRS波群的起始点,利用窗口和幅度阈值来确定QRS波群的顶点.斜率阈值法有多种具体的实现方法,本文以一阶差分和二阶差分相结合的算法来检测QRS波群.利用心电信号的一阶差分和二阶差分的平方和来进行QRS波群检测,可更快的突出QRS复合波上升速率变化更快的区域,根据输出脉冲的宽度,能准确估计R波的宽度.由于中心差分公式是相对于误差平方的高阶无穷小,故检测过程中采用的差分方程公式,其一阶差分为公式4-2).

(4-2)

二阶差分形式为:

(4-3)

(4-4)