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

在Cache中实现HL7 RIM

[复制链接]
发表于 2003-4-23 14:22:12 | 显示全部楼层 |阅读模式
我正在尝试用Cache数据库来实现HL7 RIM。请有兴趣的朋友给点建议或看法。谢谢!
 楼主| 发表于 2003-4-23 22:47:34 | 显示全部楼层

在Cache中实现HL7 RIM

下面是我设计的Act类的Cache文档。翻译RIM真是累啊!
<br/>
abstract persistent class RIM.Act extends %Library.Persistent
SQL Table Name:

动作:此类是对正在做什么?已经做了什么?可以做什么?或是需要或想要做什么?这些事情的一个记录。
举例:医疗领域中最常见的动作有:1.临床观察;2.一个健康状况的评价(如问题和诊断等);3.诊疗目标; 4.治疗服务(如药物治疗、手术、体检、心理治疗等);5.主治、监视、助理;6.对患者或其近亲属的训练或教育服务; 7.公证人服务(如高级指导、生活意念。注:可能是一些心理调理方面的,保养等服务吧?);9.编辑和整理文档; 10.其它。
讨论和原理:动作是RIM的中心枢纽。领域内所有的信息和过程主要表现为动作。所有的专业领域的业务(包括健康医疗)主要都是由责任人的有意图行动的执行和记录动作所组成的。一个动作的实例是对这样的一个行动的记录。有意图的行动跟据一些相伴的自然发生的事件来区分的。这些自然事件不是由它们自身进行的,而是可以记录为观测(观测资料)。
动作(Act)表现为某种角色(Role)通过参与(Participation)与实体(Entity)连接,通过 动作关系(ActRelationship)与其它动作连接。参与是指作者,执行者,或其它责任人及物(包括执行过程中使用的工具和物资)和受益者。moodCode属性区分一个动作是实际上的记录还是正在安排或想要记录,也可区分其它一个动作可能出现的状态。
所有动作都有(至少是隐含的)主要的参与者是作者(author),他是动作的责任人或称他拥有这个动作。责任是指在动作过程中,什么被在被规定或规定了什么的职责。动作的所有权是可以理解为谁可以是这个动作的操作或修改者。动作的所有权和责任人与现实中所指的所有权和责任人是不同的。现实中的行动可以有两个人,每一个都是他们自已行动的作者,描术相同的现实动作,但是,一个可以是目击者,另一个是主要执行者。这个执行者具有动作的责任;目击者只有对他的能力作一个有用的证实的责任。这两个动作实例甚至可以不同,但每个动作因其具有作者属性,这种不同可以存在一个公断(通过动作实例的容器)。
跟据Rector和Nowlan(1991)的理解,一个动作实例表示为一个陈述。他们强调,“最重要的是要认识到医学记录不只是一些真理的集合,而是对临床所见、所闻、所想、所做的如实记录。他们还说:医学记录还要求是可归类的、可持久的、符合自然表现的。实际上,动作类是一个可归类的陈述,也规定了动作在新的动作实例产生引起的状态更新规则。
Roctor和Nolan把电子医学记录总结在一系列陈述上,但虽然有属性的陈述,还是有很多事实陈述。所以,动作类实际上超出了属性化的事实陈述的范围,而表现为被称为“语言动作”的语言学和哲学意义。语言动作的含意指除了只是事实陈述外还包括实际的表达意义;这些表达与实际交互以改变事物状态,甚至造成物理事件的发生。比如:一个医嘱动作将导至一系列安排好的行动在物理上执行。语言动作理论在Austin(1962)的 “生殖工作”中达到了顶锋。
一个动作在现实中,可能有一个从定义到计划、有序执行的过程,这表现为动作的状态(mood)。简单地考虑动作是从计划到执行,这个过程中将表现出多个动作实例,每一个有一个并只有一个状态,这个状态在动作实例的生命期内是不变的。这是因为语言动作在动作的过程中表现的内容可能不同,所以保持过程中的这些不同记录持久并忠实地记录下来是很重要的。特殊的次序、允若或计划在动作真正发生时不能再被给变 ,以允许与事先的按排作比较。这些发生在同一现实动作过程中的动作实例通过动作关系相连(“结果”类关系)。
动作陈述或语言动作只是现实事实或过程在HL7 RIM中的表示。现实事物只是通过属性状态的结合来构造, RIM中没有一个类是表现完全的事物状态或真实的不依赖于属性状态的。因此,动作和它的文档是没有区别的。每个动作都包含多种变化。比如,一个刚刚完成的事实陈述,由这个动作的执行者记录下来,一般被称为过程录或原始文档(如手术记录、查房记录等)。相返,一个动作的状态改变,被执行者(或旁边的观察者)记录下来,被认为是获取了那个动作(以后将被一个完整的过程报告取代)。所以,状态更新和过程记录都是相同类型的动作,只是在状态属性(mode)和情形属性(statusCode)及信息完整性上有些区别。
Properties  

&#8226; property EffectiveTime As GTS
有效时间:表示动作的可操作或有用的时间,动作存在的主要时间是动作目地所关心的时间。比如:临床观测,有效时间是对病人观测所用的时间。对于感染,有效时间是指感染有作用的时间。对于许诺,有效时间是许诺有效的时间。对于物资管理,有效时间指整个过程中物资被管理的时间,包括管理拼频次(如10天,一天两次)。对于手术过程,有效时间与患者有关,如从切口到最后缝合的时间。对于运输动作,有效时间指运输的途中的过程中的时间。对于诊疗,有效时间是指一个管理时间,从诊疗开始一直到业务规则需要结束的日期,相反,医疗实际的时间与开展的工作有关。
有效时间也可称为主要时间或生物学时间。它区别于动作活动时间。对于观测,观测动作的时间可能比说的观测时间要晚很多。比如,血气分析,结果总是在标本采集后好几分钟后才能出来,那时患者的物理状态已经有明显改变了。实际上,对于物理动作(手术过程,运输等),有效时间是动作的意图所感兴趣的时间。比如,把东西从A运到B的意图中,有效时间是从A到B途中的时间,然而,一个动作往往还有一些附属的工作必须去做,但那跟动作的意图是无关的。比如,司机需要在A将东西装上车再在B卸下,这样就包括一些物理动作,但这跟运输动作的意图是无关的。又如,人们的工作时间(有效时间)是8AM到5PM,但不管这个人需要10分钟还是2小时在路上。路上的时间对工作是必须是,但不计在有效工作时间内。
&#8226; relationship Participations As RIM.Participation  [Inverse = Act" Cardinality = one"]
&#8226; property PriorityCode As V3DT.CE
优先代码:是一个代表动作发生紧急度的代码。这个代码用于安排动作发生顺序,在文档中,这个代码表示动作是在哪个优先度下发生的。在定义状态下表示存在的优先度。
&#8226; property activityTime As V3DT.TS
活动时间:是指动作状态发生用掉的时间,或取决于mood-有顺序地发生,按计划发生,什么时候可以发生等。活动时间是动作所用掉的总共时间,包括准备和清理动作这些附助动作所用的时间。因此,活动时间可能比有效时间长,或他们是完全不一样的。比如,在回顾观测时,观测的有效时间比活动时间要早很多。一般情况下,设计者应该首先考虑用有效时间作为主要的相关时间。
&#8226; property availabilityTime As V3DT.TS
存在时间:指系统产生这个动作实例的第一个存在的时间点。比如,一个动作可能记录了患者在三小时前得了左心室心肌梗塞,但我们只在几分钟前(存在时间)知道这个不正常状态。因此,从三小时前一直到几分钟前的所有干涉被假设为更一般的左心室心肌梗塞,这可以用来解释为什么现在知道的干涉如硝酸盐当时没有使用。存在时间是生成这个动作的系统加入的次要信息,它不包括在动作记录的作者的的职责内。系统生成这个时间的时间经常跟系统生成这动作的时间是不同的,但无论系统从哪里得到这个动作,存在时间表达了在特殊的系统上,用户可以得到这个动作实例的真实时间。当存在时间在不同系统间通迅时,一个动作的存在时间属性另一个作者或还是这个作者的有效属性值。比如,如果一个医学记录提取表告事件,这个存在时间是这个报告编辑者的责任范围。
&#8226; property classCode As V3DT.CS
&#8226; property code As V3DT.CD
&#8226; property confidentialityCode As V3DT.CE
&#8226; property derivationExpr As V3DT.ST
&#8226; property id As V3DT.II
&#8226; relationship inboundRelationships As RIM.ActRelationship  [Inverse = targetAct" Cardinality = one"]
&#8226; property independentInd As V3DT.BL
&#8226; property interruptibleInd As V3DT.BL
&#8226; property levelCode As V3DT.CE
&#8226; property moodCode As V3DT.CS
&#8226; property negationInd As V3DT.BL
&#8226; relationship outboundRelationships As RIM.ActRelationship  [Inverse = sourceAct" Cardinality = one"]
&#8226; property repeatNumber As V3DT.INT
&#8226; property statusCode As V3DT.CS
&#8226; property text As V3DT.ED

Indices  

&#8226; index ParticipationsIndex on Participations
&#8226; index inboundRelationshipsIndex on inboundRelationships
&#8226; index outboundRelationshipsIndex on outboundRelationships
发表于 2003-4-29 14:00:36 | 显示全部楼层

在Cache中实现HL7 RIM

支持你,加油啊
发表于 2003-5-24 18:33:21 | 显示全部楼层

在Cache中实现HL7 RIM

好高興這兒有人也在做這方面的努力
我目前也在嘗試著做
我若有成果希望能與大家分享
发表于 2003-6-3 19:21:49 | 显示全部楼层

在Cache中实现HL7 RIM

If you have any Caché question email to me I can contact intersystems\' technical support directly.
 楼主| 发表于 2003-6-4 11:24:30 | 显示全部楼层

在Cache中实现HL7 RIM

谢谢鳌!
发表于 2003-6-5 14:48:28 | 显示全部楼层

在Cache中实现HL7 RIM

SBF2000的工作很有意义,希望你的成果早日出来。
 楼主| 发表于 2003-6-5 16:45:37 | 显示全部楼层

在Cache中实现HL7 RIM

谢谢熟透番薯的鼓励!
现在HL7还在进一步完善RIM,其实RIM是很复杂的,希望大家讲讲对RIM的认识和心得。
发表于 2003-6-5 21:51:20 | 显示全部楼层

在Cache中实现HL7 RIM

我们需要通过这个模型解决实际的问题,比如构造一个医嘱输入系统,然后,你应该通过一些临床场景来match这个模型,你会发现有一些问题,这时,你必须了解怎样以这个模型为基础,派生出你需要的对象。
 楼主| 发表于 2003-6-6 16:10:54 | 显示全部楼层

在Cache中实现HL7 RIM

我的思路是以RIM为基础,构造一个临床文档记录系统(其实也包括医嘱;但医嘱有一个“生存期”问题,所以还要考虑有关的工作流),HL7 CDA还没有完成制定,就是完成了,也还有很多实施技术的问题。
以RIM为基础,派生更实际的使用类是个有效的方法,但这好象还不能解决一些重要的问题,比如HL7中使用“Clone”RIM类的方法来使用RIM开发其它标准,但我们如何实现“Clone”呢?HL7中还大量使用约束RIM类的方法来定义其它对象,但我们同样没有办法解决对RIM类定义的进一步约束!
我们除了希望HL7 V3的进一步制定完善外,也期待其它如软件建模、编程方法和工具、数据库技术、信息查寻和表达等等方面的发展会给电子病历的研发带来新的思路。同时,希望更多的人关注、研究电子病历技术,大家一起讨论和学习,交换心得!
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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