找回密码
 欢迎注册
搜索
热搜: 活动 交友 discuz
查看: 4548|回复: 7

[讨论]关于HL7和数据库的一点看法

[复制链接]
发表于 2003-4-8 23:11:15 | 显示全部楼层 |阅读模式
     读了sbf2000关于HL7V3和Cache数据库的多篇大作,非常敬佩sbf2000的钻研精神。本人也想再搞一下Cache数据库,看看它好在那里,只可惜没有时间搞。
     对于sbf2000提出的在Cache数据库中实现HL7V3的数据类型的设想,我想还有值得商讨的地方。
     在应用系统中,无论是B/S还是C/S结构,也无论是否HL7 ready,对HL7的操作都不会直接访问后台数据库,通常采用应用组件或应用服务器将其“封装”起来。从HL7应用端可访问HL7定义的各种CLASS,包含了HL7的实体、视图、动作、角色...当然,其数据类型就是HL7定义的这30多种类型。
     但是,在应用系统内部、在数据库内,数据则需要使用数据库和开发工具所允许的数据类型。
     为什么会这样?
     首先,HL7的“数据类型”和应用软件、数据库中的“数据类型”不是同一个概念。数据库中的“数据类型”是信息在处理和存储时的表达形式,是相对“底层”的定义。
     例如,在“应用层”的概念(如HL7等)上,“名称”和“地址”是不同的类型,有不同的属性。但是,对于以信息处理和存储为目的的应用软件、数据库来说,它们并没有区别。如打印处理,两者均作为字符串来处理,不会因为它们“应用层”上含义不同而采取不同的处理和存储方法。
     HL7是特定的“应用层”的定义。它的目标在于交换,并不考虑实际处理和存储的格式。如HL7定义的Person Name、Organization Name等类型,就是为了系统交换的方便而定义的特定类型,属于“交换”这一特定应用所定义的类型。这种类型从编程角度来看并无意义。
    由于两个“类型”的层次不同,所以不必强求数据库与HL7的数据类型完全一致。记得HL7对RIM有过如下的声明(大意):
      HL7RIM不是数据库模块,不是信息系统,不是医疗组织的计划或者特定的通讯系统。RIM与它们的范围和目的是不同的。HL7主要目的是信息交换,而不是信息存储。
    其次,如果一定要数据库与HL7的数据类型一致,即使数据库允许自定义类型,在进行实际处理(如运算)时,因为数据库或开发工具的处理操作(如运算、显示、打印等)大多不支持自定义的类型,还要反复进行类型转换,会严重影响效率。况且,过于复杂的数据类型本身就会影响运行效率。
    问题的关键在于,实际运行时没必要使用这些类型,只要在进行HL7处理时由应用组件转换成HL7的格式(包括数据类型),就做到HL7 ready了。
     很多朋友提出要按HL7设计医疗系统或电子病历应用。我认为:
    首先,HL7体现出的先进的医疗管理理念是值得我们认真学习和研究的。
    其次,要充分注意到HL7是用于信息交换的目的,和建立信息系统的要求还是有区别的。完全套用HL7未必可行。事实上,医疗系统的实际结构要比HL7复杂得多。
     比如,HL7有一章关于财务的定义,似乎财务在HL7架构中是独立的。但在先进的医疗系统中,财务应用分布在各医疗环节中,并不限于收费处和药房,而在HL7中就没有体现这一特点。因为HL7用于交换,它只注重结果,而不需要关心(财务的)过程。但医疗系统既要注重结果,更要注重过程。
     另外,我赞成熟透番薯观点,不要把数据库中的一些思维方式引入到HL7研究中来。我想再补充一句:也不要把HL7研究中的一些思维方式引入到数据库研究中来。
随便说说,请大家指正。
发表于 2003-4-9 15:40:42 | 显示全部楼层

[讨论]关于HL7和数据库的一点看法

1.首先对tianma针对我发的贴子发表这样详细看法表示感谢!
2.不可否认,要实现HL7,必须对HL7所定义的类及数据类型进行包装。可能不同的实现方法都会有不同的包装方案,如采用组件或应用服务器或Web服务等。专用的包装平台需要很大的开发成本。
3.HL7V3还在开发阶段,所以还没有出现包装好的通用开发平台。因此我们需要自已去实现HL7V3,已便在将来的技术和市场竞争中获得先机。其实HL7V3就是一个医疗信息框架(frame),跟微软的.net框架一样,它将在很大程度上为医用软件的编写提供一个高级的平台。
4.为什么用Cache,而不是其它技术来实现HL7V3呢?原因是Cache在数据库与面象对象方面的完美结合。和M语言技术在医学软件方面的专业性优势,是其它通用数据库及编程语言所难以比拟的。Cache在解决对象模型和关系数据之间关系提供了比较完善的可用方案。
5.实现HL7V3DT是我们实现HL7V3的第一步,整个HL7V3框架都要用到V3DT,所以没有V3DT,其它如RIM等对象模型就不能完全实现,当然,不用面象对象的方法,可能也能实现HL7消息的解析和传送的功能。我认为用Cache来实现HL7V3在目前是最可行的、代价最小的方法。
6.HL7V3是HL7为了实现信息交换而定义的,他的涵盖面很广,当然它并不是所有医用信息系统的最终模型。相反,它是所有医用软件都应该支持并能理解和处理的信息模型。
7.我的目的就是要尽量使数据库、HL7对象模型能够完美地结合并应用,而并不是把两者混为一谈,而搞乱大家习惯思维。Cache的最大特点就是在对象中包含数据库操作,在数据库中又支持对象的概念,放弃了这点,Cache就不可能比得上.net、java、oracle、SQL Server等的功能强大了。
发表于 2003-4-10 12:02:34 | 显示全部楼层

[讨论]关于HL7和数据库的一点看法

赞同
发表于 2003-4-13 16:10:33 | 显示全部楼层

[讨论]关于HL7和数据库的一点看法

值得讨论,我也是感到有些困惑。
发表于 2003-4-14 23:00:12 | 显示全部楼层

[讨论]关于HL7和数据库的一点看法

***** 版主模式 *****
该贴子是管理员从<a href=forums.cgi?forum=4>HL7研究</a>转移过来的!
发表于 2004-3-9 10:43:59 | 显示全部楼层

[讨论]关于HL7和数据库的一点看法

值得讨论
发表于 2004-3-9 15:43:07 | 显示全部楼层

[讨论]关于HL7和数据库的一点看法

cache的好处就是面向对象性与M语言的结合(注,本人不熟悉M语言,Cache是怎么结合也不知道),但是cache的数据存取技术有限,只有通过ODBC,另外就是好象我们请的培训师只知道与VB6连接,写程序!(注:而且他的演示机器上没有VB6,口说而已),其他的存取技术没有讲,毕竟存放的数据是需要展现出来形成业务的!
发表于 2008-3-28 08:39:25 | 显示全部楼层
啊!你们哪里请的培训师啊,这样也能出来培训吗?访问Cache数据库的方式还是很多的,ODBC、对象、web服务等,而且ODBC的局限性很多,不是首选。
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

快速回复 返回顶部 返回列表