摘 要:电子病例系统研究是医院信息系统和建立数字化医院的关键课题。首先,讨论了作为医院管理系统实现信息化的重要环节——电子病例管理系统的定义和作用。由于B/S结构具有伸缩性、维护性和扩展性等多方面的优势,因此系统开发采用B/S结构;其次,对电子病历管理系统的系统功能进行分析和功能模块划分;再次,进行数据库的需求分析、概念结构分析以及逻辑结构分析,并对数据库进行实现和连接;最后,利用Dreamweaver实现JSP页面。
关键词:电子病历;B/S;JSP;struts;数据库
电子病历EMR(Electronic Medical Record)也称为算机化的病历或基于计算机的病人记录CMR(Computer Based Mdical Record),它是用电子设备保存、管理和传输数字化的病人医疗记录,是取代手写纸张的病历。对电子病历一致的理解与定义目前尚未形成。病历在医疗科研、教学和医院管理方面起着提供数据源的重要作用。纸张病历在服务方面是被动式的,而电子病案则可以是主动式的,包括病案检索、智能知识库、医疗质量统计、医疗评价、经济统计分析等等,这是电子病历的服务功能。
电子病历内涵应包括:一是信息共享。医院各个部门、科室在任何时间和地点都能调阅到病人所在医院的全部病历记录;二是具有预警功能,对药物配伍禁忌、医疗方法不当进行提示;三是支持医疗信息资料库,供医疗人员在工作时查询使用。电子病历是医疗信息的核心,病历信息贯穿于病人在医院就诊的各个环节,因此,电子病历绝不仅是病案的电子存储,它实质上是医疗过程的全面信息化,不是静态的病案本身,而是动态的智能信息源。
1 基于B/S模式的系统结构
一般来讲,基于B/S结构模式[1-4]的电子病历管理的应用系统具有如图1所示的三个层次。三层结构中,底层是电子病历的数据服务器,用于存储和管理电子病历数据;中间层是应用服务器和Web服务器,其中应用服务器用于实现系统的业务逻辑,如电子病历的管理、电子病历的归档、电子病历的查询、统计报表等组建管理,还可以通过网关和外部系统进行数据交换和传递;最上面的是客户端,用户可以通过浏览器进行使用。
当医生选中其中的某个病人时,可以进入到该病人的详细病历资料的页面,查看病人已往的病情记录、当前临床病症和检查结果,并据此做出诊断,并填写病历详细资料中的诊断信息。
病人在挂号后,系统生成病人的病历号码,并且初始化病人的登录密码和病历号码一致,病人根据病案号码和登录密码登录到相应的病历信息中。
3 数据库设计
3.1 数据库需求分析
通过对医院门诊部门的实际运作和管理流程进行分析,设计的数据结构如下:
(1)挂号处挂号员登录信息:包括的数据项有姓名和密码。
(2)医生登录信息:包括的数据项有科室选择、医生姓名和登录密码。
(3)挂号处登记的病人基本信息:包括的数据项目有患者姓名、患者年龄、患者性别、身份证号码、住宅电话、移动号码、入院科室、家庭地址和诊断时间。
(4)病人病历详细信息:包括的数据项有患者姓名、患者年龄、患者性别、身份证号码、住宅电话、移动号码、入院科室、家庭地址、诊断时间、病历号码、总费用、胸透检查、血检结果、B超检查结果、临床症状、家族病史、诊断结果、病人处方、手术方案、手术情况、用户密码的修改以及既往病史等。
(5)病人登录信息:包括的数据项有病历号和登录密码。
3.2 数据库概念结构设计
在需求分析的基础上,设计出能满足用户需求的各种实体以及它们之间的关系,为逻辑结构设计打下基础。本文采用E-R图的方法来进行数据库概念结构设计。
图3为挂号信息的实体E-R关系图,图4为病历信息的实体E-R关系图。实体与实体之间的关系如图5所示。
电子病历管理系统数据库具备5个表格的设计,分别是录入员信息表、医生信息表、病人登录信息表、病人病历基本信息表和病人既往病史信息表。
在需求分析、概念结构设计的基础上,就可以创建数据库表格,然后将表格结构导入数据库系统,这样就实现了数据库的逻辑结构[7]。
3.3 建立数据库的连接
网页上各个请求的实现都需要连接数据库,下面的程序包文件中,DataSource是用来查找在struts架构中定义的数据源,它是在jre/lib文件库里定义的rt.jar,引入的Connection类用来得到DataSource返回的连接;ResultSet用来获取Statement对象执行SQL语句后返回的数据信息;SQLException用来捕获在执行数据库操作时产生的异常信息,以便抛出并让用户了解数据库操作过程中的出错信息;Statement类用来得到Connection类创建的SQL语句陈述类。
package dan;//定义包
import dan.struts.form.*;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;//引入java.sql.*
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.sql.DataSource;//引入接口,与数据库的连接
import org.apache.struts.action.DynaActionForm;
4 服务端应用
服务端的具体运行过程如图6所示。struts应用程序中的所有组件在struts-config.xml文件中注册,配置文件struts-config.xml是整个struts应用的核心。struts应用在启动时,就会自动加载该文件到内存中,以后用户的每一次请求以及struts自身的每一次请求转发都会依赖该文件。
其中,struts配置文件如下:
DatabaseName=test" >
5 客户端应用
利用Dreamweaver实现了JSP页面[8-12]。系统登录时,输入用户名和密码进入主要功能页面,包括:病人登录,医生登录和挂号员登录。
(1)病人进入医院,填写纸质的病历,填写病人的基本的信息,病人将纸质的病历交给信息录入员后,录入员登录到录入界面,录入病人的基本信息,并根据病人选择的科室给病人分配一个病案号,这样相应科室的医生一旦登录,就能马上调出其所在科室的所有病人的基本信息列表。
(2)医生登录时,输入其所在的部门科室的名称、姓名和密码就能够进入到下一个页面,这里的关键字是部门科室,系统根据填写的部门科室的名称自动调出该部门科室的所有病人的基本信息列表,医生能大致了解该科室的病人的状况。医生可以选择某一个病人,选择后进入详细信息页面,即病人病情页面。
(3)病人第一次进入系统的时候,根据分配的病案号和密码填写并登录到病人的详细信息页面中了解自己的病症状况,但是病人无权修改。只有用户密码这一栏里,病人有修改的权限,病人在成功修改后,系统会有成功修改的提示,以后病人登录的密码将是修改后的密码。
目前医疗信息系统正处于由传统的面向医院事务管理向与临床医疗信息相结合的转变过程,由于电子病历是临床医疗信息的出发点和医院信息系统的核心,因此,电子病历系统研究是医院信息系统研究和建立数字化医院的关键课题。本文对电子病历管理系统进行了系统功能分析和功能模块划分,设计了服务端、客户端以及数据库,所开发的系统用户界面友好、使用方便。
参考文献
[1] 柳永坡,刘雪梅,赵长海.JSP应用开发[M].北京:人民邮电出版社,2005.
[2] 柏亚军.JSP编程基础及应用实例集锦[M].北京:人民邮电出版社,2001.
[3] 马斗,邱哲,王骏标.JSP开发答疑200问[M].北京:人民邮电出版社,2005.
[4] 吴其庆.JSP编程思想与实践[M].北京:冶金工业出版社,2003.
[5] GAMMA E, BECK K. Contributing to Eclipse中文版[M].熊节,译. 北京:中国电力出版社,2003.
[6] 张云涛,龚玲.Eclipse精要与高级开发技术[M].北京:电子工业出版社,2005.
[7] 施威铭研究室.SQLServer2000中文版管理实务[M].北京:人民邮电出版社,2001.
[8] 孙素华.Dreamweaver MX2004完美网页设计[M].北京:中国青年出版社,2006.
[9] 王黎.Flex+JSP Web应用开发实战详解[M].北京:清华大学出版社,2010.
[10] 张倍,赵国锋.JSP数据库通用模块开发与系统移植[M].北京:清华大学出版社,2007.
[11] 张银鹤,刘治国,张豪.JSP动态网站开发实践教程[M].北京:清华大学出版社,2007.
[12] 王永茂,JSP程序设计—用JSP开发WEB应用[M].北京:清华大学出版社,2010.