前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统架构师论文-论软件三层结构的设计(医院管理系统)

系统架构师论文-论软件三层结构的设计(医院管理系统)

作者头像
cwl_java
发布2019-10-26 20:56:23
1.3K0
发布2019-10-26 20:56:23
举报
文章被收录于专栏:cwl_Javacwl_Java

论软件三层结构的设计

-医院管理系统
[摘要]

随着市场的建立和发展,卫生行业面临了很多问题,一些制约卫生事业发展的矛盾和问题日益显现,因此,国家卫生部要求各医院采用信息化管理。前不久,我所在的部门承担了了一个医院管理系统的设计和开发,医院希望以此来转变医院现有的运行机制,提高服务质量。该系统除了目前常见的结费系统、电子病历外,还包括门诊医生工作站、住院医生工作站、护士工作站等分系统。考虑到需要通过Intranet实现功能,并有部分的Internet功能, 本项目平台最后采用了 Java平台。我在项目中主要负责项目的的前期规划,即选择合适的开发方案,并建立部分的数据流,在系统实施过程中推动其顺利前进。此系统开发成功后投入运行,获得医院相关工作人员的好评。

[正文]

前不久,我所在的部门承担了了一个医院管理系统的设计和开发,医院希望以此来转变医院现有的运行机制,提高服务质量。客户是一个市级医院,医院很早就开始从事信息化管理,但主要是针対结费这一块,后来,対其进行了改进,加入対病人电子病历的管理和采集,这样当病人二次就诊时,可以很容易地得到病人的既往病历。但随着系统的运行,院方希望対现有系统进行改进,为了更好得为病人服务,医院考虑加入一些其它的分系统,比如门诊 医生工作站、住院医生工作站和护士工作站等等。因此我所在的部门承接了该HIS的开发,开发的成果是一个典型的Java技术在Intranet上的应用。 在开发前期,首先要设计出详细的系统功能规范,这一部分所花费的时间很少,因为卫生部在2002年曾经颁发了一个有关医院管理系统功能规范的通知,我们参考了该规范,很快确定了各分系统以及每个分系统的的基本功能。但在选择合适的系统平台上有一番讨论,考虑到医院原有系统在某些地方运行良好,是否有必要将原有系统淘汰重新设计,另外新的分系统到底采用何种平台结构也是需要考虑的问题。 医院原有的结费系统和电子病历系统数据流向范围比较固定,主要集中在交费处和挂号处,一旦引入了新的系统,必然要将数据流向医院的各个部门。医院的Intranet已经实施, 因此首先考虑采用B/S架构体系,旧系统的数据模型尽可能保留。在系统的软件平台上,我们考虑使用Java平台,可以让数据在整个系统安全、有效地流动;另外现在也有很多的HIS系统可供我们参考,虽然往往是单机版的系统,但其中的数据模型有很好的参考价信。医院的现有网络系统和操作系统多种多样,这就要求我们选择的软件平台必须具有开放性、平台无关性。而在不同的系统上安装相应的Java客户端虚拟机并不困难,最后,在项目组的讨论和征求客户意见下,项目组采用了此方案。 在项目中,我们这样设计Java架构系统,将系统分为三层:

  • (1)表示层采用Jsp实现页面输出,这也是用户直接访问层,表示层接受来自网络浏览器的HTTP请求,然后返回给客户端浏览器可以显示的OTL页面;
  • (2)中间件层用Java实现対数据库的访问,考虑到数据的分布特点,我们使用了数据库连接池技术;
  • (3)数据库层用SQL Server实现数据库的管理和存储过程。 JSP以其执行的高效性和使用的方便性,已成为近年来大家首选的因特网开发技术,JSP是一种页面开发技术,它以Java为其服务器端语言,结合Java Script作为其客户端语言,能方便地实现页面的表示。选择Jsp作为前台语言,是考虑到它的平台无关性,能够兼容其他的操作系统和数据。利用Jsp可以将OTL文件很方便地发送到客户端Web浏覚器,同时也可以支持一些非HTML格式的文档发送。我们在网站中的用户层页面设计中,广泛地参考了现 有的一些成功案例,在节约设计和开发的费用的同时也得到了用户的认可。比起单纯的Servlet技术,Jsp在页面元素上也更为丰富,在这里,我们为今后客户页面定制做了部分尝试,设计了一个比较简单的模块,用户可以通过选择控件来动态生成页面提供打印,当然在这部分我们设计中,可提供的数据库字段是固定有限的,灵活性没有很好体现。 我们大量工作主要放在中间件层,由于系统中的医生工作站分系统是主要部分,因此数据库的负载成为一个不得不考虑的问题。综合考虑,我们决定采用数据连接池技术,因为基本上每个医生都対应一个客户终端,无论是病人资料的查讯或录入,或者医嘱的处理,都涉及到対数据库的频繁读写,服务器対于数据连接的频繁打开和关闭必然导致性能下降。一方面,我们预先考虑数据库的连接量,在系统初始阶段建立相应的存储空间,当数据库连接打 开和关闭时都対该连接池进行处理;另一面,我们也使用了高速缓存技术,対某些固定的SQL查讯结果,例如药品查讯、药性禁忌等,将结果采用缓存存储,以加快対数据库的访问,降低了服务器端的负载,提高性能。信得一提的是,为了尽可能得避免纠纷,医院要求采用医生签名制度,我们设计了电子签名,采用加密算法保证各环节产生数据的有关人员不能抵赖。 数据库层我们选择了 SQL Server,程序员比较熟悉此平台的开发和设计。在前期,我们到医院做了大量的走访工作,了解整个数据流,同时广泛参考现有的系统,虽然対医院行业不是很熟悉,但数据层开发遇到的问题的并不是很大。在概要设计阶段,我们使用了一些计算机辅助开发工具,这也加快了详细设计的进程。比如使用了 Sybase的PowerDesigner工具,在概要设计中规划了 E-R图和各个分系统以及分系统之间的数据流图,然后让工具直接生成后台数据库中的基本表结构,大大提高了开发效率。 整个项目实施完成后,医院相关工作人员反映良好,但其中也暴露出了一些问题,值得改进。 首先,用JSP编程时容易导致系统信息的扩散。如果有人恶意攻击服务器,程序执行将出现异常。这时,就会在页面上打印出相应的错误信息。这些信息会暴露出这台服务器的路径信息。这个漏洞往往会被人利用,程序员対此也一头雾水,下一歩我们考虑从服务器入手,采用通用的异常说明界面,解决该问题。 其次,在设计上,可以使用更多的辅助开发工具和建模工具,比如Rational Rose,可以利用它的代码自动生成功能,来大大提高开发速度;在用户界面定制方面,我们希望通过不断的实践,加强其灵活性,尽可能把可供选择的字段扩大到整个数据库。 最后,大量使用Java技术,势必対服务器的负载过大,在今后的开发中,除了现有的数据库连接池和缓存技术,我们考虑使用更多的数据库脚本来替代部分Java代码,来高速实现逻辑,相较而言,数据库脚本的执行速度较有优势,结合结果缓存,应该対服务器的性能有较大的提高。 上面是我在今后的系统设计和开发中需要注意和加以改进的地方,也是我今后应该努力的方向.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论软件三层结构的设计
    • [摘要]
      • [正文]
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档