马燕+陈毅+李湑
摘要:胶囊内镜体检过程中将产生大量的医生、病人、诊断结果和图像等信息。复杂且巨量的数据给胶囊内镜影像工作站系统开发和医院规范化管理增加了极大的困难。该文阐述在SQLite3平台下规范化设计数据关系模型,应用Nhibernate开发框架,搭建数据访问层,完成数据安全访问和数据库基本操作。提高了胶囊内镜影像工作站系统的开发效率和系统的可维护性,实现了医疗数据有效管理。
关键词:胶囊内镜;影像工作站系统;关系模型;Nhibernate
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)01-0028-04
Abstract: A large number of doctors, patients, diagnosis results and images will be produced in the process of capsule endoscopy. Complex and huge amount of data to the capsule endoscopic imaging workstation system development and hospital standardized management has increased tremendous difficulties. This article standardizes the data relational model of the system under the SQLite3 platform, Application Nhibernate development framework, build data access layer, connect and operate multiple database files. Improve the development efficiency of capsule endoscopic imaging workstation system and system maintainability, Realized the effective management of medical data.
Key words: Capsule Endoscopy; Image Workstation System; Relationship Model; Nhibernate
胶囊内镜作为新一代消化道系统检查的内镜,在医疗领域极具竞争市场[1]。胶囊内镜系统主要由胶囊内镜、数据记录仪和影像工作站组成[2]。医生最终的诊断和管理数据的工作主要是在影像工作站系统上完成[3],数据库设计的合理与否直接影响系统的软件架构和数据处理的效率[4]。数据库设计和实现的过程中,除了要合理创建数据库结构框架,还需要考虑到系统经济易实现、实际临床应用中系统易调整或升级等因素。综合考虑后,采用经济易得且部署方便的SQLite3和能降低系统耦合的Nhiernate[5-8]进行胶囊内镜影像工作站系统数据库的设计和实现。
1 需求分析
1.1 功能需求分析
胶囊内镜影像工作站系统,主要的面向对象是消化道检查的医生,具有明显的专业性和较强的针对性。图1为胶囊内镜影像工作站操作需求示意图。
1) 病人吞入胶囊内镜前
医生凭借合法账号和密码登录影像工作站系统,录入病人的基本信息和胶囊内镜的序列号。该合法用户账号由系统管理员进行建立,并与医生信息关联,每个用户被分配权限,限制查阅病历的范围。
2) 病人吞下胶囊内镜后
胶囊内镜工作时,拍摄人体消化道内壁图像,经无线传输方式将图像数据发送至数据记录仪。数据记录仪与影像工作站系统在连接状态下,可将图像数据导入影像工作站系统。在胶囊内镜未从体外排出之前,医生可在影像工作站系统上实时查看消化道图像,也可在胶囊内镜排出体外后,把数字记录仪中存储的数据下载到影像工作站系统中,进行图像控制播放、定位浏览,对疑似病患的图像放大缩小点存或者导出等操作,最后描述诊断结果,生成诊断报告。
3) 诊断结束后
根据需要,医生可以将检查的原始图片或生成的AVI文件从影像工作站系统中导出,病人进行拷贝后可自行播放阅览。
1.2 数据需求分析
根据功能需求分析,胶囊内镜影像工作站系统中主要的数据信息是:医生信息、账号信息、病人信息、病历信息和胶囊内镜图像数据。
1.3 非功能需求分析
1) 系统数据库需方便安装部署,数据易拷贝携带及快速浏览和定位;
2) 当需求发生某些变化时,可在不改变系统框架的基础上方便调整修改和升级。
2 数据库设计
2.1 概念结构设计
本设计采用SQLite3单文件数据库,分为两个数据库:一个是系统病历数据库MrData(包含医生、病人、诊断报告等信息),另一个是图像数据库ImgData,用于存储病人检查后的图像信息。图像数据库通过病历数据库中的病历信息进行关联。从上述的需求分析结果抽象出用户观点的概念模型并用实体关系(E-R)图表示。抽象出的实体有医生、病人、账户、病历信息、图像、胶囊内镜等,各个实体具体关系,如图2所示。
2.2 逻辑结构设计
结合上述概念结构的实体关系和系统实际运用,本节将上述实体和相应联系进行调整转化为一系列的关系模型。管理员根据医生的职务来授予数据访问得权限,其中,“科室”信息不仅是医生信息里的一个属性,还是“本科室”病历访问权限的一个参数,為了有效利用“科室”信息,故将“科室”也作为关系模型中的一个对象,并与医生信息进行关联。由于“胶囊内镜序列号”是唯一的,当病人姓名为索引时,可与胶囊序列号一起作为一次诊断的标识。胶囊内镜影像工作站系统的关系模型具体如下所述。endprint
(1) 医生信息(医生Id、姓名、性别、年龄、电话号码、职务、科室Id、账户Id);
(2) 科室(科室Id、科室名);
(3) 账户信息(帐户Id、用户名、账号密码、权限、登录时间);
(4) 病人信息(病人Id、姓名、性别、年龄、身份证号、电话号码、住址、头像);
(5) 病历信息(病历Id、病人Id、病人姓名、医生Id、胶囊内镜序列号、病人自述、医生描述、原始图像存储路径、点存图像存储路径、AVI图像文件名、报告编辑时间、报告导出时间);
(6) 图像信息(图像编号、图像二进制数据、图像下载时间、是否保存)。
2.3 数据库建表
数据库表是数据库管理系统的基础,是数据库中所有数据的载体[9-10]。本文中系统数据库表有:医生信息表(DoctorInfo)、科室表(DepartmentInfo)、帐户信息表(AccountInfo)、病人信息表(PatientInfo)、病历信息表(DiagnosedInfo)、图像数据库中的图像信息表(ImageInfo)。依照数据库的完整性要求和系统的实际应用,MrData数据库中的表如表1-表5所示,ImgData图像数据库表如表6所示。
医生信息表(DoctorInfo)用于存储医生基本信息,并与其账户信息关联,其中性别采用Bool类型(1:男,0:女)。
科室表(DepartmentInfo)用于存储科室信息,作为“本科室”权限划分重要参数,如表2所示。
账户信息表(AccountInfo)用于存储使用系统的医生的账号和权限信息及最后登录时间,其中权限采用Int类型(1:本人,2:本科室,255:所有)。
表4是病人信息表(PatientInfo)用于存储病人基本信息,可一次登记反复使用。
表5是病历信息表(DiagnosedInfo),用于存储病人的诊断信息,以及与图像数据库文件的关联信息。
图像信息表(ImageInfo)存储于用于存储下载的原始图像数据和图像状态信息以及图像的下载时间,如表6所示。
3 数据库应用
系统中应用层与底层数据的交互是通过数据访问层实现。以下是搭建数据访问层的关键技术。
3.1 持久对象类的建立
在命名空间”ImgWorkStation”中分别创建Doctor类、Account类、Department类、Patient类、DiagnosedInfo类和PatientImage类,添加各个类的属性和属性相对应的get和set方法。
3.2 数据表与.Net类的映射
实现数据库表与其.Net类的映射,主要是通过对象-关系映射文件来完成。在关系映射文件中,定义数据存储到相应的数据表,类的属性映射到数据库表的相应字段。本系统中,我们需要对这6个类分别编写映射文件,将其分别命名为Doctor.hbm.xml、Account.hbm.xml、Department.hbm.xml、Patient.hbm.xml、DiagnosedInfo.hbm.xml、PatientImage.hbm.xml。
现以Doctor类映射到DoctorInfo表的映射文件(Doctor.hbm.xml)为例,进行编写说明,其余类似,不在文中赘述。以下仅为配置的重要代码。
<!—定义主键—>
<!—類的属性名对应数据库表的相应字段→
<!—多对一关系:多个医生属于一个科室—>
<!—唯一外键关联映射—>
3.3 Nhibernate与数据库的连接及操作
Nhibernate与SQLite3数据库连接的配置信息主要在名为“hibernate.cfg.xml”的文件中。Nhibernate下载包中各种主流关系型数据库访问方式的配置模板,故Sqlite的配置信息不在这里描述。本节的难点在于系统中存在多个数据库,运用以下解决方式。
“Configuration configuration = new Configuration().Configure(configfile)”;并且 "connection.connection_string"(数据库连接字符串)并没放在配置文件中,而是在代码中添加连接字符串。“configuration.Properties["connection.connection_string"] = connectStr;”实现多数据库连接和数据安全访问。
数据访问时需创建ISessionFactory对象,从中获取ISession代表与数据库的一次操作,ISession提供了save()、delete()、update()、load()和find()等方法实现数据库表的基本操作,之后关闭ISession。为保证数据安全无误,在数据操作时必须使用事务,通过调用会话对象的BeginTransaction方法创建Nhibernate管理的事务。
3.4 操作界面的实现
系统采用winform编程实现病人和诊断信息编辑窗体、账户和医生信息编辑窗体、账户管理窗口以及图像展示框,分别如图3到6所示。
通过图3编辑框,可将相应信息对应存储到底层数据库中。
管理员利用医生管理窗口,可以添加,修改,删除医生及其关联信息。管理窗口如图4所示,医生信息编辑窗口如图5所示。
图6为指定病人的图像展示框,系统从相应病历图像库中取出图像数据。
4 结束语
在对胶囊内镜影像工作站系统需求分析的基础上,从数据模型的概念设计、逻辑设计和数据库表结构描述了系统数据库的数据结构及其完整性设计和实现。并基于Nhibernate框架在.Net开发环境下完成数据访问层的搭建,应用Winform编程给医生提供便于数据操作的人机交互界面。从而提供了一个便于操作和维护的胶囊内镜影像工作站系统,有效解决了胶囊内镜影像工作站系统中复杂数据的管理问题。
参考文献:
[1] 张瑞娟,刘晴.胶囊内窥镜产品发展现状综述[J].生物技术世界,2015(9):221+223.
[2] 许飞,颜国正,朱柄全,等.视频胶囊内窥镜的改进设计与实验[J]. 电子学报,2015(3):605-610.
[3] 杨鹏举. 胶囊内镜图像工作站系统设计与实现[D].华中科技大学,2012.
[4] 王睛睛,刘伟,李旭祥,等. 基于GIS的西安市文化遺产空间数据库设计与实现[J]. 地理空间信息,2017(11):39-42.
[5] 黎孟雄.基于SQLite的数据库原理自主实验平台设计[J]. 实验技术与管理,2016(11):157-160.
[6] 华玉鑫. 仓储管理系统的数据库设计与实现[J]. 信息通信,2016(1):146-147.
[7] 孙志中,魏嘉银,秦永彬. 基于WCF和NHibernate的软件架构研究及应用[J]. 计算机与数字工程,2015(4):591-595+634.
[8] 佟吉富. 基于NHibernate的旅游资源管理系统数据持久化[J]. 电子测试,2014(20):12-13.
[9] 赖剑烈. 病理信息管理系统的设计与研发[D].南方医科大学,2015.
[10] 徐海琴,王雅军,南玉萍,等. 大数据在医疗设备管理中的应用[J]. 医疗卫生装备,2017(6):135-137.endprint