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

在不同情况使用何种消息进行沟通?

[复制链接]
发表于 2003-6-3 13:44:15 | 显示全部楼层 |阅读模式
假设医院内有如下几个系统,门诊挂号系统,门诊收费系统,门诊药房系统,门诊医生工作站系统,住院登记系统,住院收费系统,住院药房系统。这些系统都是由不同的供应商提供的,它们都支持HL7,如果它们之间需要交换信息,如何进行集成?应该如何使用HL7进行操作呢?在下面的例子中,什么时候使用A01/A04/P01?
例如:
(1)甲病人使用门诊挂号系统进行了注册,他的病人原始信息已经在门诊挂号系统中,此时他到医生诊室看病,门诊医生工作站系统如果跟门诊挂号系统集成,则不需要重新输入病人信息,那么门诊挂号系统注册在病人注册后,应该发什么消息给门诊医生工作站呢?
(2)如果甲病人看完了病,去拿药,门诊挂号系统又是通过什么消息与门诊药房系统沟通呢,医生工作站又是通过什么消息与门诊药房系统沟通呢?
(3)如果甲病人需要到门诊收费处缴费,门诊挂号系统又是通过什么消息与门诊收费系统沟通呢,医生工作站又是通过什么消息与门诊收费系统沟通呢,门诊药房系统又是通过什么消息与门诊收费系统沟通呢?
(4)如果甲病人需要住院,门诊挂号系统又是通过什么消息与住院登记系统沟通呢?
(5)......
发表于 2003-6-3 15:33:47 | 显示全部楼层

在不同情况使用何种消息进行沟通?

这个问题挺复杂的,不过这正是HL7诞生的动力。可以看看duke大学的HL7实例。论坛的zhuzhu过些时候应该会给大家一些讲解,让我们期待:)
发表于 2003-6-3 21:13:28 | 显示全部楼层

在不同情况使用何种消息进行沟通?

关注,还有消息是在什么层面发送的,使用什么技术,比如某人挂号后,挂号系统发送相应的消息(发送给登记过的请求系统)给门诊医生工作站,但此时门诊医生工作站模块(或者在服务器上,或者在客户端机器上)并未工作,因此不能接受到该消息,那么系统应该通过什么机制来缓存消息以便稍后发送呢(比如微软的消息服务器)?还是门诊医生工作站主动来获取消息呢?
 楼主| 发表于 2003-6-4 08:56:09 | 显示全部楼层

在不同情况使用何种消息进行沟通?

在技术层面上可以使用IBM的MQ技术,可以很好的解决这些问题.
发表于 2003-6-4 19:56:58 | 显示全部楼层

在不同情况使用何种消息进行沟通?

假设医院内有如下几个系统,门诊挂号系统,门诊收费系统,门诊药房系统,门诊医生工作站系统,住院登记系统,住院收费系统,住院药房系统。这些系统都是由不同的供应商提供的,它们都支持HL7,如果它们之间需要交换信息,如何进行集成?应该如何使用HL7进行操作呢?在下面的例子中,什么时候使用A01/A04/P01?
例如:
(1)甲病人使用......
如果已有这几个系统,那末首先要看每个系统的接口定义,以及它所支持HL7的方式。
HL7仅提供各种消息及消息的格式。但是,具体的系统之间使用哪个消息和采用哪种和方式,还需要在对应的两个系统之间进行约定。比如有a、b、c三个系统都支持HL7,但是,可能b到a可采取“推”的方式,而c到a只能使用主动查询的方式。具体要看各系统对HL7支持方式的说明。当然,还要确定谁是主系统。离开具体的系统来决定如何进行集成是没有意义的。只要做过医学影像HL7接口就能体会到这一点。
如果以上几个系统都是完全独立的,必须有一个主系统,公用信息储存于此。其他系统通过查询接受公用信息,在需要更新或添加信息(如返回化验结果)时,向主系统发出更新请求,主动“推”入主系统。这是比较理想的方式。各系统之间比较清晰,容易维护。但如果其中某个系统不支持这个方式,那末系统之间的设计就有点复杂了。
如果以上几个系统是独立的,又没有一个主系统。这样的设计就有问题了。因为所举的例子是相互关联密切的系统,虽然HL7支持没问题,但是在整个大系统上,数据冗余和数据一致性上存在难以克服的问题,是一个失败的方案。只有在分隔的系统间只进行特定的有限信息交换的情况下(如医院和社保机构之间、医院和医院之间)才需要这种平行的独立系统交换。
上面所举的例子本身是不合适的。所举的系统是按照机构部门来划分的,而不是按软件需求划分的。
而且,从软件工程的角度来看,这几个系统同属于医疗管理系统下的各部分,从技术上说,是“不可分离”的。如果都是由不同的供应商提供的,那么,整个系统如何协调呢?HL7是不管系统协调的。
如果需要将大系统化为若干独立系统,应该按软件需求来划分。比如,建设医疗系统,可按软件的需求划出医疗管理系统(主系统)、医学影像系统、电子病历系统等。因为医学影像系统、电子病历系统在软件上是自成体系的,也是可独立划分的。通常也是有不同供应商提供的。它们通过HL7交换,可以在医疗管理系统内由各部门透明的使用。而医疗管理系统,虽然使用部门不同,但在软件上只是关联的子系统,不是软件意义上的独立系统。
发表于 2003-6-4 20:28:15 | 显示全部楼层

在不同情况使用何种消息进行沟通?

tianma:你的意思,系统内部不要使用HL7消息吗?
发表于 2003-6-4 20:40:52 | 显示全部楼层

在不同情况使用何种消息进行沟通?

是这样。
HL7用于系统间的交换。
系统内部参考HL7未尝不可,直接使用HL7消息则无必要,效率也太低。我在前面的帖子里讨论过这个观点。
发表于 2003-6-5 10:21:45 | 显示全部楼层

在不同情况使用何种消息进行沟通?

可是如果只用来跟外部系统交互,也用不了那么多消息阿?hl7为什么要定义那么多消息呢?而且有些消息根系统外部没什么关系的,怎么看待这些消息呢?
发表于 2003-6-5 10:46:22 | 显示全部楼层

在不同情况使用何种消息进行沟通?

hl7是一个标准,它定义了它所能定义的几乎全部消息。并不是每个系统都会用到全部消息。事实上,在具体的应用中,通常只用到很少的消息。
就像有了药品标准,不说明我们要用到所有的药。
hl7为了其它系统能理解所交换的信息,定义是很繁琐的。即使只传送一个数值,也需要用很长的字符串来表达。在自己的系统内,这个数值已经由清楚而明确的定义了,为什么不直接使用呢?
 楼主| 发表于 2003-6-5 13:01:58 | 显示全部楼层

在不同情况使用何种消息进行沟通?

一个好的应用是什么呢?它可以没有系统的概念,我需要什么,就组装成什么,你叫它什么系统都可以.如果按OO的观念来考虑,在现实世界中,有三种东西最重,entity,control,boundary,当然还有其他的东西,如果你把医疗领域内的这三样,作一个区分,分别作成不同的组件,然后由这些东西去组装你的应用,这时候,你想要什么就要什么了,这里体现了分层的概念,系统只是最外层的东西,只是一个名字罢了.按这种思路去走,什么东西都是可以分的,只是分解到最下层的原子的时候,没的分了罢了,当你把这些原子按照不同的排列组合起来的时候就构成了分子,也就是我们所说的应用了,所以如果真想在医疗领域内大有发展,最重要的是把原子作好,然后在通过不同的排列组织成分子,这样才会大有所成呀.
所以说,没有什么东西是"不可分离"的,而且软件工程是一种方法,他并不会告诉你某某系统属于医疗管理系统下,这些都是人为定义的.当你拿到一个应用的时候,首先是要看他的业务(原子),而不是划分系统(分子),目前很多的软件需求只是定义一些功能,流程描述,并没有区分出原子的概念,所以单凭一个软件需求是很难做出一个好应用的.
 楼主| 发表于 2003-6-5 13:04:15 | 显示全部楼层

在不同情况使用何种消息进行沟通?

下面引用由tianma2003/06/05 10:46am 发表的内容:
hl7是一个标准,它定义了它所能定义的几乎全部消息。并不是每个系统都会用到全部消息。事实上,在具体的应用中,通常只用到很少的消息。
就像有了药品标准,不说明我们要用到所有的药。
hl7为了其它系统能理解所 ...
我同意tianma的这个观点
发表于 2003-6-5 22:24:41 | 显示全部楼层

在不同情况使用何种消息进行沟通?

[这个贴子最后由dreamaster在 2003/06/05 10:27pm 第 1 次编辑]
下面引用由xuezhong2003/06/05 01:01pm 发表的内容:
一个好的应用是什么呢?它可以没有系统的概念,我需要什么,就组装成什么,你叫它什么系统都可以.如果按OO的观念来考虑,在现实世界中,有三种东西最重,entity,control,boundary,当然还有其他的东西,如果你把医疗领域 ...
我同意,医院系统划分为his,lis,pascs等我认为是历史的原因,医院系统是一个整体,所有的模块从技术角度都是平行的,可拆卸的,我觉得任何原子模块之间都可以(甚至应该提倡)应用hl7消息的传递,提个问题:大家了解的医院信息系统中,西药房是怎样知道某处方已经交费了呢?1、输入处方号,到数据库中查询。2、收款室收款确认后,西药房微机上自动显示已收费处方列表。显然第2种好,那么怎么实现呢?我们目前是每隔几秒钟检索数据库。像这种情况可否应用hl7呢?只是举个例子,我的意思所有原子模块间都实现hl7。不考虑其他原因,比如开发成本,这样做到底可不可行,好不好呢?
如果应用hl7只是为了提供对外的接口,是不是狭隘了些?我对hl7的应用了解很少,希望能够有人解我心中疑惑,谢谢
发表于 2003-6-7 18:50:15 | 显示全部楼层

在不同情况使用何种消息进行沟通?

下面引用由xuezhong2003/06/05 01:01pm 发表的内容:
一个好的应用是什么呢?它可以没有系统的概念,我需要什么,就组装成什么,你叫它什么系统都可以.如果按OO的观念来考虑,在现实世界中,有三种东西最重,entity,control,boundary,当然还有其他的东西,如果你把医疗领域 ...
这个观点很好,可以很快的适应市场的变化。看来你们公司做的很好
发表于 2003-6-8 07:02:38 | 显示全部楼层

在不同情况使用何种消息进行沟通?

下面引用由xuezhong2003/06/05 01:01pm 发表的内容:
一个好的应用是什么呢?它可以没有系统的概念,我需要什么,就组装成什么,你叫它什么系统都可以,,按OO的观念来考虑,什么东西都是可以分的....
    你的观点可能比较理想化。
    如果搞纯理论的研究,比如建立医疗系统的流程模型,这个思路应该是可以的。但是,计算机软件是一个工程,不可能像儿童拼图那样随意组合。
    作为工程,计算机软件必须按工程规范进行规划、设计。
    一个应用就好比一个城市,社区、道路、建筑物设施就是一个个系统,建筑材料就是“原子”。可是,将一堆优质建材送到一片荒地,由工人随意把这些“原子”按照不同的排列组合起来,就能构成一个城市吗?
    就说医疗系统,之所以划分为his,lis,pascs等,是因为这几个部分分别属于不同的技术领域、使用不同的处理方式,自成体系,通常由各自的专业厂商分别提供,按自然形成的。并不是什么历史的原因,也不是因为科室的划分,不是人为定义的。
    OO技术也离不开软件工程。实体、类这些概念,也是有严格的定义,不能“什么都可以分”。如果不考虑系统的内部联系,强行细分,将使应用系统变得异常复杂,难以维护,而且效率十分底下,无法实际应用。
   关于软件工程的一些问题,等时间空闲一点的时候,我想在论坛的软件工程专栏上和朋友们再作一些讨论。
发表于 2003-6-8 11:21:45 | 显示全部楼层

在不同情况使用何种消息进行沟通?

下面引用由dreamaster2003/06/05 10:21am 发表的内容:
可是如果只用来跟外部系统交互,也用不了那么多消息阿?hl7为什么要定义那么多消息呢?而且有些消息根系统外部没什么关系的,怎么看待这些消息呢?
因为HL7的一个消息要兼顾所有不同系统的可能,所以一个消息就会变得很庞大,如果想把一个消息完全充实,一般都有2000左右各段,诸如其姓名在国内可能就只需要一个字段就足够了,而在HL7则定义了很多个字段。这样才能保证在任何系统的交换中都有效。因此,每个消息除了几个字段为必选外,其他字段基本都是可选,也就是可以根据应用来进行选择。
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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