专业咨询
致力推进中国医疗卫生信息化

【袁永福专栏】数据的崛起:以病人为中心的医院软件设计方法

来源:HIT专家网    作者:南京都昌信息科技有限公司 袁永福

笔者曾经写过系列《数据的崛起》的文章,提出了数据在医院信息化建设中的核心地位。此前是从战略思想方面的讨论,在此进行战术执行层面上的落实。

软件开发现状

在整个行业中,成千上万的软件技术人员在不断反复地设计和开发各类医院软件。主流的做法还是以数据库为中心的。需求调研和需求分析之后,大体就开始设计数据库结构,然后从数据库出发开发用户界面,然后开发业务流程。整个过程中会产生不少问题,主要有:

1.数据库结构日渐臃肿。新增表和字段比较随意,于是存在大量废弃的数据表和字段,又不能删除。给运维带来不小的压力。

2.目前对于代码开发、调试和版本管理已经有了很多强大的工具。相对来说,数据库管理工具还是很落后的,存在大量的手工操作,对于新人来说,理解和维护数据库结构比较吃力

在此以医院中门诊开药品处方为例进行说明,传统模式中,开发人员十有八九一上来就设计出数据库表架构,大致如下:

1.病人主索引表,字段基本上有病人编号、姓名等;

2.医生信息表,字段有医生编号、姓名等;

3.号源表,字段有号源编号、诊室编号、医生编号(关联医生信息表.医生编号)、门诊日期等;

4.门诊信息表,字段有门诊编号、病人主索引编号(关联病人主索引表.病人编号)、号源编号(关联号源表.号源编号)、就诊时间等;

5.门诊药品处方表,字段有药品处方编号、门诊编号(关联门诊信息表.门诊编号)、药品编号(关联药品信息表.药品编号)、药品数量、缴费标记等;

6.门诊检查处方表,字段有检查处方编号、门诊编号(关联门诊信息表.门诊编号)、检查项目编号、缴费标记等;

7.库存药品表,字段有药品库存编号、药品名称、厂家、批次号、库存量等;

接着就是设计业务流程、画用户界面,最后是测试发布。

业务科室人员的参与

在传统的软件设计过程中,最大的弊端就是技术性太强了,简单粗暴不人性化,无法让普通人(不懂IT技术的业务科室人员)参与信息化的过程。使得技术和业务逐渐偏离,带来诸多问题。

为了提高项目的成功率,必须让业务科室人员参与开发过程,自己参与做的软件,投入了感情,即使不好也得含着泪用上。

这时有一个关键问题:如何让业务科室人员和IT技术人员有共同语言来进行交流呢?

我的答案就是:以病人为中心设计软件,也就是数据崛起在软件设计方面的体现。让普通人尽可能多地理解软件设计,进而参与项目,这是促进软件项目成功的重要手段。

以病人为中心的软件设计方法

在新的以病人为中心的软件设计中,数据库设计从第一步变成了最后一步。我们用人性化的手段来定义数据模型,这个过程业务科室人员就能参与了。大体分为三个步骤:

第一步,定义数据角色和关系。业务科室人员可以参与本步骤。

首先定义所需的数据角色,包括:病人、医生、诊室、号源、门诊行为、处置处方、药物处方、药品信息、药品库存信息。

既然是以病人为中心,那么我们就以病人为出发点来定义数据角色之间的关联。首先有病人这么一种角色;然后,一个病人有若干个门诊行为;一个门诊行为消耗掉一个门诊号源;一个号源消耗掉一个诊室、一个医生、一个时间段;对于一个门诊行为产生若干个处方,处方分为检验处方和药品处方;一个药品处方关联到库存药品信息。

这样就把角色定义出来了,并且相互关联,如下图所示:

yuan1

我称这种软件设计方式为“数出有源”式的设计方式。也就是将病人当作唯一的数据“水龙头”,不停向医院灌溉,然后水沿着各种业务路径流通,这样到最后医院中所有的数据角色和业务流程都能覆盖掉。如果发现有数据角色和业务流程没有覆盖到,则那些都是精简的重点关注对象。

第二步,细化数据角色。业务科室人员仍然可以参与本步骤。

本步骤接着细化各个角色的内容,主要有:

  • 病人角色,包含姓名、性别、年龄、对门诊列表的引用等信息;
  • 门诊角色,包含对号源的引用、开始和结束时间,还有对处方列表的引用;
  • 号源角色,包含对医生的引用、对诊室的引用;
  • 医生角色,包含姓名、性别、科室等信息;
  • 药品处方角色,包含对库存药品的引用、数量、缴费状态;
  • 库存药品角色,包含药品名称、厂家、批次号、库存数量等信息。

这样软件设计图进一步发展如下:

yuan2

这里重点说明一下“对XXX的引用”。在软件设计中,所有的信息都需要精确的确定,因此需要对所有的数据角色做档案,每个档案分配一个唯一的编号。为了减少数据冗余和重复记录。在档案当中需要记录另外一个档案的编号,算是对另外的一个档案的引用。

比如对于药品处方,本来是包含数量、药品名称、厂家、批次号等信息。但药房盘点库存药品信息时也需要记录药品名称、厂家、批次号等信息。此时应以药房的信息为准,因此药品处方中不直接记录药品名称、厂家、批次号。而是定义了一个对库存药品的引用,记录一个档案编号就可以了。这样避免了信息冗余。

再比如,病人信息中有一个对门诊列表的引用。因为病人包含若干个历史门诊信息,数量不确定。因此只能用一个不定长度的清单,于是新增了门诊列表这个数据角色放置该病人名下所有的门诊信息。然后在病人信息中添加一个对门诊列表的引用。

这个设计图比上面的更为技术化,但仍然在业务科室人员的理解能力范围之内。

第三步,建立专业数据模型。业务科室人员无法参与本步骤。

医院软件需要在数年之内不中断地运行。但服务器内存有限,可能存在关机重启的情况,存在内存数据丢失后再恢复的要求,此时数据库成为一种常用手段。注意,在本软件设计中,数据库只是一种内存数据恢复的手段之一,从以前的战略地位降低为战术地位。

添加数据库的原理比较简单,主要建立两种映射:数据角色和数据表-字段的映射、对XXX的引用和数据表外键的映射。结果如下图所示:

yuan3

淡蓝色背景的为数据库中的数据表,蓝色虚线为数据表之间的外键(主从表关系)。

比如对于病人角色,它映射到病人主索引表,然后姓名、性别、年龄等成员也映射到对应的数据表字段。

病人角色中的“对门诊列表的引用”转换为字段“门诊表.病人编号”和“病人主索引表.病人编号”的外键关系,病人主索引表为主表,门诊表为子表。

从这个例子可以看出,当数据模型设计比较完善后,数据库的表和字段结构就很容易设计出来了。不过这个步骤非常技术化,业务科室人员难于理解,但业务科室人员能参与到前两个步骤就已经足够了。

至此,我们采用了三大步骤,就把核心数据模型设计出来了,为开发高稳定性和高扩展性的软件打下了坚实的基础。人间大炮已经成功发射了。

优势

采用这种以病人为中心的软件设计模式,可以带来以下好处:

1.采用人性化的设计手段,让业务科室人员有能力参与信息化建设,能减少需求偏离。而且业务科室人员投入了时间精力,也就等于投入感情,对项目能自发地认可和配合,有利于项目管理。

2.体现了以病人为中心的信息化建设理念。我们采用“数出有源”的设计过程,以病人作为唯一的出发点,推导出医院中所有的数据模型和业务流程,有利于在现有体系中找出冗余的数据和流程。方便数据治理和流程改造。

3.在这种软件设计中,所有的业务数据都有机地组织在一起,各个功能模块不是各自为政了。HIS、EMR、PACS、LIS、门急诊、住院等界限模糊了,有利于设计出门、急、住一体化的信息系统。基于这种体系,CDR、集成平台都是水到渠成的事情。

4.铁打的数据模型,流水的兵。以病人为中心的软件设计有助于保持系统的稳定性。人员更迭对系统的长期发展影响也不那么大了。

【小结】

以病人为中心的软件设计过程,其实质是以实际诊疗业务所产生和涉及的数据为中心,也就是以病人诊疗数据为中心的医院信息化建设的战略思想在软件设计中的具体落实。它以病人为唯一出发点,推导出医院中所有的数据模型,据此实现门、急、住一体化的医院业务系统,实现真正的医院数字化、智慧化。

都昌生态圈就是这样通过各种具体而先进的信息化手段来改善医院内部的生产关系,帮助解放业务科室的生产力,最终帮助实现中国医疗系统的价值最大化。

【作者简介】

袁永福,微软MVP80后,南京都昌信息科技有限公司联合创始人,中国医院信息化领域知名软件技术专家,长期从事电子病历编辑器等行业核心技术的研发和推广,并直接为许多知名的高信息化水平的医院提供长期的软件技术支持及咨询服务。(邮箱:28348092@qq.com)

小助手二维码想加入HIT专家网专业交流群吗?请添加“HIT专家网”小助手微信好友后提交你的申请哦

(请注明姓名、单位名称、职务、主管技术或产品领域,以便有针对性加群)

【责任编辑:谭啸】

赞(1)

评论 抢沙发

评论前必须登录!

 


未经允许不得转载:HIT专家网 » 【袁永福专栏】数据的崛起:以病人为中心的医院软件设计方法
分享到: 更多 (0)