1、浙江大学硕士学位论文 摘要i硕士学位论文网上安全用药查询系统的设计与实现摘要药物影响检测查询是在购买多种药物前的一个必不可少的步骤。网上安全用药查询系统比以往客户向驻店药师和在线医生咨询上具有更多的优势:方便、回复快、药物影响信息详细。网上安全用药查询系统在节省了雇佣在线医生和驻店药师的费用的同时,也保证了每一个消费者不会购买了会引发药物影响的药物组合。本文根据客户对网上安全用药查询系统的具体需求,设计并实现了一个基于经典 Java EE 的网上安全用药查询系统。本文先是分析了 EJB、JPA 和 JSF 所具有的优秀特性,决定将其整合起来来形成一个基于 JPA+EJB+JSF 的经典 Jav
2、a EE 架构。之后是从系统的设计和实现两个角度进行阐述。设计部分讲述了网上安全用药查询系统的需求分析和系统设计,进而深入到整个系统的 web 流程图、关键功能的流程图和时序图。实现部分给出了 EJB 和 web 端的相关类图设计、相关 namedQuery 实现、JSF 的配置过程、JSF 通过 Spring 整合 EJB、EJB 和 WEB在开发中碰到的问题和解决办法。本文基于 JPA+EJB+JSF 的网上安全用药查询系统最终通过了项目组 QA 的测试和客户方的验收,成功实现了客户的需求。这同时也为本人这次对基于JPA+EJB+JSF 的经典 Java EE 框架尝试画上了完美的句号。关
3、键词: 网上药店,药品查询,药物影响查询浙江大学硕士学位论文 AbstractiiAbstractChecking drug interactions is a necessary process before buying multiple drugs. Checking drug interactions system has more advantages over consulting with doctor:convenient, fast response, drug interactions information in detail. Checking drug interac
4、tions system can save the cost of employing doctors and ensure every consumer will not buy drugs that can cause drug reactions.According to the customers specific needs of Checking drug interaction system, this paper designed and implemented the system based on Java EE. After analyzing the outstandi
5、ng features of EJB, JPA and JSF, decide to put JPA, EJB, JSF into the classic Java EE architecture. This paper describes from design and implementation. Design section describes the influence of Checking drug interaction systems requirements analysis and system design, and then deep into the flow di
6、agram of the entire system ,the key functions web flow diagram and senquence diagram.The implementati-on section gives the EJB and WEBs class diagram., the implementation of related namedQuery, the configuration of JSF, integrating JSF and EJB with Spring, the problems and solutions in develop EJB a
7、nd WEB. The checking drug interaction system that based on JPA + EJB + JSF in this article finally passed QAs test and got the acceptance from client side. This system implemented the clients needs. The classic Java EE framework based on JPA + EJB + JSF is also a milestone for me. Key Words: Online
8、Pharmacy, Drug Search, Check Drug Interaction浙江大学硕士学位论文 目录I目录摘要 .iAbstract.ii图目录 .III表目录 .IV第 1 章 绪论 .11.1 课题背景 .11.2 国内外发展现状 .11.3 本文研究内容和目标 .21.4 论文结构 .2第 2 章 相关技术综述 .42.1 国内相关系统 .42.2 本系统差异 .42.3 经典 Java EE.52.3.1 经典 Java EE 组件 .52.3.2 EJB 技术 .62.3.3 事务和 JTA.62.3.4 EJB 的事务管理 .72.3.5 JPA 规范 .72.4
9、JSF 应用框架介绍 .82.5 Mockito 介绍 .92.6 本章小结 .9第 3 章 系统的需求分析及设计 .103.1 需求分析 .103.2 药物信息结构设计 .113.3 整体架构和流程序列图 .123.3.1 整体架构 .123.3.2 相关流程图和序列图 .133.4 本章小结 .16第 4 章 网上药物影响查询网站的实现 .174.1 web 端实现 .174.1.1 JSF 开发环境配置 .174.1.2 JSF Managed Bean 实现 .184.1.3 web 端相关实现类图 .204.1.4 系统展示 .214.2 EJB 端接口 .234.2.1 EJB 端
10、包划分 .23浙江大学硕士学位论文 目录II4.2.2 业务逻辑层 .244.3 业务逻辑实现 .264.3.1 药物名查找药物 .264.3.2 病症名查找药物 .274.3.3 药物影响查询 .284.4 本章小结 .29第 5 章 难点和解决方法 .305.1 控制创建 Entity 时生成的 sql 含有的列 .305.2 编写 namedQuery.315.2.1 在返回搜索到的药物数量时始终会抛出异常 .315.2.2 namedQuery 在真实环境下有错 .315.3 简化 EJB 单元测试 .315.4 简化 web 在本地部署的依赖 .345.5 网站语言的切换 .355.
11、6 本章小结 .37第 6 章 总结与展望 .386.1 总结 .386.2 展望 .38参考文献 .39作者简历 .41致谢 .42浙江大学硕士学位论文 图目录III图目录图 3.1 整体 web 流程图 .11图 3.2 药物信息结构设计 .11图 3.3 系统整体架构图 .13图 3.4 药物查询流程图 .13图 3.5 根据病症名查询药物序列图 .14图 3.6 根据药物名查询药物序列图 .14图 3.7 药物影响查询流程图 .15图 3.8 药物影响查询序列图 .15图 4.1 pom 配置图 .17图 4.2 FacesServlet 在 web.xml 内配置 .17图 4.3
12、Spring 在 web.xml 内配置 .18图 4.4 web 端类图 .21图 4.5 药物查询方式选择页面 .21图 4.6 病症查询药物搜索页面 .22图 4.7 药物详细信息页面 .22图 4.8 已选药物弹出层 .23图 4.9 药物影响信息页面 .23图 4.10 EJB 端 Logic Service 类图 .24图 4.11 EJB 端底层药物查找 service 类图 .25图 4.12 EJB 端药物影响 ServiceBean 类图 .25图 4.13 EJB 端药物影响 DTO 类图 .26图 4.14 药物相关数据库图 .26图 4.15 通过病症查找药物涉及表
13、.28图 5.1 DynamicInsert 代码图 .30图 5.2 DynamicInsertEntityListener 代码图 .30图 5.3 Entity 使用 DynamicInsert 代码图 .31浙江大学硕士学位论文 图目录IV表目录表 3.1 通用名药物信息结构 .12表 3.2 品牌名药物信息结构 .12浙江大学硕士学位论文 第 1 章 绪论1第 1 章 绪论1.1 课题背景随着京东商城和天猫的介入推动,医药 B2C 的交易规模及消费者需求将逐年增加。同时随着消费者对网购信任度的增加,市场参与者增多从而扩大医药B2C 市场投入,医药 B2C 的市场比重和交易规模会大为提
14、高。预计 2013 年 B2C行业规模还将保持 300%的增速,全年可以实现 50 个亿的销售。中国网上药店理事会更是预测到 2015 年中国药品 B2C 行业规模可以达到 150 亿元。在网上购药这个市场越来越大的同时,消费者在网上因为无法找到需要的药物和不知道同时吃多种药物会有什么反应而需要咨询网上在线药师的情景也越来越多。随着在线咨询越来越频繁,网上药店需要大量的在线药师回答那些重复的问题。所以,目前急需一种系统。该系统可以帮助消费者查找到什么药适用于自己这种病,想要查找的药的有哪些剂型、剂量,同时吃多种药物的时候是否会有药物影响、药物食物反应和用药重复。基于以上需求现状,现在要开发一个
15、具有网上药物查询和药物影响查询功能的系统,用于帮助消费者通过药物搜索查找到适合于自己病症的药物,并在购买多种药物的时候提供药物影响查询服务。1.2 国内外发展现状2012 年 01 月,国内网上药店数量仅为 57 家,与美国的千家网上药店数量相比,数量上实在太少。而截至 2013 年 10 月 15 日,从国家食品药品监督管理总局(SFDA)查询到的网上药店数目已达 181 家。众多传统零售药店和主流电商目前都纷纷进军抢占网上药店的高地。当价格不足以在消费者心中留下深刻印象时,物流、购物及产品分类成了天平上的一颗重要砝码。以药房网为例,为体现保障客户用药安全,通过整合国家食品药品监督管理局(简
16、称 SFDA)和国家食品药品监督管理局药品审评中心(简称CDE)的官方数据,将所有配伍禁忌药品在“安全用药警示系统”中进行标识。在消费者没有勾选多人服用的情况下将有配伍禁忌的药品加入同一购物车,安全用药警示系统会提醒“不能同时服用” 1。和国内相比,国外网上购药要更加严格。通过对药物影响的严重程度分级,浙江大学硕士学位论文 第 1 章 绪论2用户可以更安全地选择需要的药物。除此之外,国外已有许多药物影响网站(例如 )供用户查询所购买的药物是否会发生不同严重程度的药物不良反应,而不仅仅是完全禁忌的配伍禁忌。1.3 本文研究内容和目标本文先是分析了 EJB、JPA 和 JSF 所具有的优秀特性,决
17、定将其整合起来来形成一个基于 JPA+EJB+JSF 的经典 Java EE 架构。然后通过药物影响搜索系统的需求分析和系统设计,引出了整个系统的 web 流程图以及药物查询和药物影响查询的流程图和时序图。在讲述网上安全用药查询系统的具体实现时给出了EJB 和 web 端的相关类图设计,以及 JSF 的配置过程和 JSF 通过 Spring 整合EJB 的详细阐述。最后是介绍了 EJB 和 WEB 的开发中碰到的问题和解决方法:插入数据的时候某些字段需要采用数据库默认值,通过自定义注释来控制JPA 在 create sql 的时候不将该字段纳入。EJB 端进行 JUnitTest 时,由于数据
18、库测试数据不稳定和返回数据时间过长原因,换用内存数据库。为了控制插入数据的主键和真实数据库一致从而减少迁移成本,采用既可以由数据库生成,又可以直接指定的主键生成方式。web 端进行本地部署测试时,开发在本地部署时需要依赖大量的 EJB,部署时间和查询数据库时间过长。通过 mockito 来减少 web 对某些返回值比较确定的 service 的依赖,从而简化开发本地的 web 部署。通过以上一系列的过程,成功实现了基于 JPA+EJB+JSF 的网上安全用药查询系统,达成了客户的需求。1.4 论文结构论文共包含六章。第一部分:绪论,详细阐述了课题背景和必要性,国内外发展现状和论文的架构。第二部
19、分:国内相关系统的功能和本系统实现采用的相关技术综述,主要介绍了目前网上安全用药系统的功能需求和非功能需求,继而提到所用到技术。浙江大学硕士学位论文 第 1 章 绪论3第三部分:系统的需求分析和功能设计。针对网上安全用药查询系统的需求,给出了详细的流程图和时序图。第四部分:网上安全用药查询系统的实现方法。在展示网上安全用药查询系统使用流程后,系统地介绍了网上安全用药查询系统各个页面的详细功能及实现。第五部分:针对网上安全用药查询系统在实现过程中遇到的问题给出相应的解决方法。第六部分:总结与展望,对网上安全用药查询系统进行了总结并对功能上的拓展方向进行了展望。浙江大学硕士学位论文 第 2 章 相
20、关技术综述4第 2 章 相关技术综述2.1 国内相关系统目前,中国国内医院已有很多采用药物查询系统帮助医生开药,少部分医院已经开始采用 ADR 监测系统来预防在处方阶段发生不良药物影响。但是这些系统只用于医院,并没有对外开放。这使得老百姓难以安心地自主用药。药物查询方面,国内医院系统从普通的快速查询和高级查询两方面入手。在使用快速查询功能时,用户可以按照药物分类、药物通用名、英文名、品牌名等进行快速查找。在使用高级查询功能时,用户则可以添加更加专业的病症名、疾病症状、剂型、药动学等方面信息来准确查找符合要求的药物。通过点击搜索出来的药物连接可以得到药物的药物名、化学结构、适用病症、用法用量、注
21、意事项、相关文献等详细信息。药物不良反应查询功能多见于医院 ADR(药物不良反应)监测系统,用于提示医生所开药物间可能发生药物不良影响。药物不良反应除了和药物配方有关外,还和药物的施药途径、剂型、剂量有关。施药途径决定了人体吸收药物的方式,如肌肉吸收、肠胃吸收、表皮吸收。剂型则会影响药剂的吸收速度。剂量对某些药物是否会发生反应产生一定影响。医生通过改变施药途径、剂型、剂量来保证病人安全用药。医院所使用的药物不良反应监测系统通过记录病人的所用药品明细记录来判断是否突然出现了和病人原有病症无关的用药异常,或者药物组合中含有国家药物不良反应中心指出的药物不良反应因果关系。这类系统操作复杂,并不适用于客户只需要简单方便地检测是否发生药物影响的需求。除此之外,由于这些系统只在医院内部使用,在 B/S 结构和 web 端大批量用户访问上普遍存在着缺陷。2.2 本系统差异针对网上用户不具备医学相关方面知识的特点,本系统在药物搜索、病症搜索、药物和药物影响检测方面做出了一定的简化修改。在进行搜索药物时,系统通过用户搜索药物字段是否和 dispensable 表内