查看原文
其他

【吴坤专栏】如何开发高性能医疗信息系统(数据库设计篇):概念数据建模

吴坤 HIT专家网官微 2022-11-03
编者按

医疗信息化建设最主要的任务是规划、设计、开发以及部署医疗信息系统。如何开发设计性能良好的医疗信息系统,对于提高医院临床科室的工作效率和医疗信息化工作水平而言至关重要。

在本系列文章中,笔者将围绕“如何开发性能良好的医疗系统软件”这一主题,并结合自身工作经历,分别从软件系统架构设计、程序开发设计、数据库设计开发、项目管理、典型案例等几个方面分享和总结相关经验和教训。 


接上篇:【吴坤专栏】如何开发高性能医疗信息系统(数据库设计篇):业务规则
传统数据库设计大多遵循自底而上的设计过程,先从需求分析中的单个数据元素入手,再将系统中涉及到的一系列单数据元素合并连接成数据库表。这样的数据库设计过程,难以应对大型数据库设计。
对于医院HIS系统之类的企业级系统数据库设计,需要采用不同的方法,按自顶而下的过程来设计,以保证数据库设计高效和高质量。其中,最为常用的方法就是采用ER模型进行数据建模。ER模型主要着眼于数据库实体,以及实体与实体之间的关系。与数据元素相比,一个系统内部的数据实体要少得多,因为大多数据元素表现为实体属性。运用ER模型进行数据建模,就可以大量减少需要分析的数据对象数量。
概念数据建模是数据库设计中承上启下的一环。首先,通过概念数据建模,获取需求分析中的实体及实体之间的关系,以关系数据模型的方式提供用户与设计人员的交流途径。其次,概念数据建模所得到的数据模型,可以很容易地转化为具体的数据库表结构,为数据库设计人员提供设计蓝图。本文将主要讲述概念数据建模相关内容,包括主要方法、建模步骤过程等内容。

概念数据建模的流程与步骤

在需求分析阶段,可以同步进行概念数据建模。完成概念数据建模后,将所得到的数据模型提交给用户确认,根据用户反馈进行修改完善。运用ER模型进行概念数据建模的主要步骤,可以按如下三部分进行:
1.识别实体及属性;
2.抽象实体层次结构;
3.确定实体关系。

识别实体及属性

单个实体及属性的概念不难理解,比如,实体“医嘱”包含医嘱ID、类型、内容、频次、开立时间、开立医生、医嘱状态等属性。对于大型系统数据库而言,比如,医院HIS系统要从所获取的需求中完全理清实体和实体属性内容却不是一件容易的事。
举一个简单的例子,“医生为患者开立医嘱”中的“医生”“患者”到底是作为实体还是属性?“医生”“患者”可以作为“医嘱”实体的属性,也可以作为单独的实体,“医嘱”实体与“医生”“患者”实体之间存在关联关系。类似的例子还有很多,“医生在某个科室工作”中的“科室”是“医生”实体的属性,还是单独作为一个实体?如何区分实体和属性?有以下一些原则和方法:
1.包含描述性信息的数据元素应归为实体
如果一个数据元素包含描述性信息,那么应该将该数据元素定为实体。如果一个数据元素仅仅作为一个标志名称,那么应该作为实体的属性。以“医生为患者开立医嘱”为例,如果其中的“医生”“患者”仅仅是指与医嘱相关的开立医生和患者姓名,那么“医生”“患者”应该作为“医嘱”实体的属性对待。显然,“医生”应该还包含了其他很多描述性信息,例如描述医生的编号、姓名、性别、职称、所属科室等信息;“患者”则包含了就诊编号、患者姓名、性别、出生年月、国籍、籍贯、身份证号码等信息。所以,“医生”“患者”都应该作为实体,与医嘱实体存在关联关系。而编号、姓名之类的数据元素,只能作为单一的名称标志,并不包含其他更多的描述性信息,只能作为实体的属性。
2.属性应该归附与与其直接关系的实体
作为属性的数据元素,必须依附于某一个实体,以实体的属性存在。在确定属性所属实体时,应将其归附于与其直接关系的实体。比如,属性“科室名称”“科室地址”“科室成立时间”等数据元素应作为“科室”实体的属性,而不是作为“患者”“医生”等其他实体的属性。
3.多值属性应该作为独立的实体
如果一个实体的描述信息包含多个值,比如,“医生”实体的描述信息“技术专长”可能包含多个值,有的医生可能擅长胃癌、肝癌、食道癌等疾病诊治。对于这样的情况,就应该将“技术专长”作为一个实体,通过“技术专长”与“医生”实体之间的关联关系来描述医生的技术专长相关信息。

抽象实体层次结构

通过对系统进行需求分析和数据建模所得大量实体之间,通常存在着一种泛化关系。我们可以运用面向对象设计思想,将多个实体之间的公共和相同的描述性信息提取出来,做成一个超类实体,将特殊的描述信息放在子类实体中作为特有属性,通过子类实体和超类实体之间的关联关系来完成对各子类实体的完整描述。
比如,在医院系统中,有医生、护士、药师、临床技师、财务会计等不同职能员工,对应数据模型中的“医生”“护士”“药师”“临床技师”“财务会计”等实体。这些员工因其专业和岗位不同,相应的实体之间属性也不一样。比如,“医生”实体包含“专业技能”“执业医师编号”“医疗职称”等特有属性,“护士”实体包含“护理职称”“护士资格证编号”等特有属性。针对这样的情况,可以定义一个超类实体“员工”,该实体中包含了“员工编号”“姓名”“性别”“出生年月”“身份证号”等各类实体所共有的属性,“医生”“护士”“药师”“临床技师”“财务会计”等子类实体(包含个字特有属性)分别通过与“员工”实体进行关联,即可完成各自实体的完整信息描述。

确定实体关系

在明确了实体和属性后,下一步要做得就是实体之间的关系,以及对关系的确定。那么,实体之间的关系应该如何确定?在确定实体关系时,主要有几个方面需要考虑:关系的度(二元、三元)、关系的数量(一对多、一对一)、关系是否必须、关系的属性。
举一个例子,“接诊”这一关系关联了“医生”和“患者”两个实体,因此是二元关系,“医生”和“患者”实体之间是一对多关系,没有其他关系能直接或者间接地描述“医生”与“患者”实体之间的就诊关系,因此该关系是必须的。对于“就诊”关系而言,包含就诊记录号、接诊医生、患者、接诊时间等属性。
再举一个例子,“开立医嘱”这一关系关联着“医生”“患者”“医嘱”实体,是一个三元关系,“医生”与“患者”之间是多对多关系,“医生”与“医嘱”之间是一对多关系,“患者”与“医嘱”之间是一对多关系。在“医嘱”实体中,可能包含了“医生”“患者”等实体信息,记录了“开立医嘱”这一关系相关的描述信息。因此,“开立医嘱”这一关系是冗余关系,并非必须的,可以在ER模型中将其删除。
小结
通过运用ER模型,并按照合理的方法和步骤进行概念数据建模,能够更好地帮助设计人员专注于研究实体与实体之间的重要关系,这一点对于大型系统设计尤为重要。ER模型把大量复杂的语言描述转化为精简的、易理解的图形化描述,能更好地与用户沟通交流,促进软件项目按要求保质完成。同时,准确的概念数据模型能为后面数据详细设计提供准确完好的设计蓝图。
作者简介

吴坤,计算机专业硕士,华中科技大学同济医学院附属同济医院信息中心软件工程师。专业计算机程序员,医疗信息技术推广者,积极参与社会活动,热衷于以信息技术提高医疗行业服务质量和改善患者就医体验。



近期热门文章


HIT专家网∣致力推进中国卫生信息化

想加入HIT专家网专业交流群吗?

请添加“HIT专家网”小助手微信好友

(请务必注明姓名、单位名称、职务、主管技术或产品领域等实名信息)

微信订阅号:HIT180com

微信服务号:chinaHIT

投稿:tan_xiao@hit180.com

商务合作:(010)82373062



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存