【问题标题】:Conformance Profile for ORU^R01 message with HAPI sample带有 HAPI 示例的 ORU^R01 消息的一致性配置文件
【发布时间】:2015-05-27 13:52:11
【问题描述】:

我无法使用 HAPI api(2.2 版)验证 ORU_R01ADT_A04 (HL7 v2.3.1) 消息从 MWB (Message Workbench) 生成的一致性配置文件。

  • 第一个问题是关于由 MWB 在 ORU_R01 消息的一致性配置文件中分配给分段组的名称,其中 PATIENT_RESULT 是由 MWB 生成的分段组名称(消息工作台) , 而 PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI 是 HAPI 在其 api 中引用同一段组的方式。
  • 如果我在配置文件中将 PATIENT_RESULT 替换为 PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI,则配置文件对 HAPI api 解析器有效。

以下是上述问题的验证日志:

  1. ValidationException - PATIENT_RESULT 未在消息中找到
  2. ValidationException - 结构 PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI 出现在消息中,但不在配置文件中

第二个问题是在 OBX 段中用于 OBX.5 字段的数据类型。 由于我的消息包含多个 OBX,并且在 OBX.2 字段中还有多种数据类型,例如 NMST, 因此,我无法在一致性配置文件中为 OBX.5 提供固定数据类型,因此我尝试了 HAPI api 为 OBX.5 数据类型声明的一致性配置文件中的数据类型占位符提供的“VARIES”。但这也没有用。

以下是上述问题的验证日志:

  1. ValidationException - HL7 数据类型 NM 与 OBX-5 的配置文件数据类型 VARIES 不匹配

  2. ValidationException - HL7 数据类型 ST 与 OBX-5 的配置文件数据类型 VARIES 不匹配


以下是消息:

  • MSH|^~\&|aa|bb|cc|3910|200903230934||ORU^R01^ORU_R01|75535037-123781|P^T|2.3.1
  • EVN|A31|200903230934
  • PID|1||29^^||Test300^Leticia^^^^^L||19770202|M||
  • OBX||NM|abc||121||||||F||
  • OBX||ST|def||jaiswal||||||F||

以下是个人资料片段:

    <SegGroup Name="**PATIENT_RESULT**" LongName="PATIENT_RESULT" Usage="R" Min="1" Max="*">
        <SegGroup Name="**PATIENT**" LongName="PATIENT" Usage="O" Min="0" Max="1">
            <Segment Name="**PID**" LongName="patient identification segment" Usage="R" Min="1" Max="1">
                <Field Name="Set ID - PID" Usage="O" Min="0" Max="1" Datatype="SI" Length="4" ItemNo="00104">

    <Segment Name="OBX" LongName="observation/result segment" Usage="O" Min="0" Max="*">

        <Field Name="Set ID - OBX" Usage="O" Min="0" Max="1" Datatype="SI" Length="4" ItemNo="00569">
            <Reference>OBX-1</Reference>
        </Field>
        <Field Name="Value Type" Usage="R" Min="1" Max="1" Datatype="ID" Length="3" Table="0125" ItemNo="00570">
            <Reference>OBX-2</Reference>
        </Field>
        <Field Name="Observation Identifier" Usage="R" Min="1" Max="1" Datatype="CE" Length="1000" ItemNo="00571">
            <Reference>OBX-3</Reference>
            <Component Name="identifier" Usage="O" Datatype="ST" Length="1000">
                <Reference>OBX-3-1</Reference>
            </Component>
            <Component Name="text" Usage="O" Datatype="ST" Length="1000">
                <Reference>OBX-3-2</Reference>
            </Component>
            <Component Name="name of coding system" Usage="O" Datatype="ST" Length="3">
                <Reference>OBX-3-3</Reference>
            </Component>
            <Component Name="alternate identifier" Usage="O" Datatype="ST" Length="3">
                <Reference>OBX-3-4</Reference>
            </Component>
            <Component Name="alternate text" Usage="O" Datatype="ST" Length="3">
                <Reference>OBX-3-5</Reference>
            </Component>
            <Component Name="name of alternate coding system" Usage="O" Datatype="ST" Length="3">
                <Reference>OBX-3-6</Reference>
            </Component>
        </Field>
        <Field Name="Observation Sub-ID" Usage="O" Min="1" Max="1" Datatype="ST" Length="20" ItemNo="00572">
            <Reference>OBX-4</Reference>
        </Field>
        <Field Name="Observation Value" Usage="O" Min="0" Max="1" Datatype="**VARIES**" Length="65536" ItemNo="00573">
            <Reference>OBX-5</Reference>
        </Field>

问候, 阿马尔·贾斯瓦尔

【问题讨论】:

  • 你在问什么问题?
  • 抱歉,如果问题的意图不明确。 hapi api 为我从 MWB 生成的一致性配置文件提供了验证错误。 MWB 为一致性配置文件中的段组分配名称的方式,例如“PATIENT_RESULT”,hapi 抱怨为: ValidationException - 结构 PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI 出现在消息中,但不在配置文件中。那是因为hapi在解析ORU报文时,在MSH段后面有PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI下的段组。
  • 第二个问题是:在 OBX.5(OBX 段的第 5 个字段)中,该值应与同一段的 OBX.2 字段中定义的数据类型一致。但是我有多个 OBX 段,每个段的 OBX.2 字段具有不同类型的数据类型,并且 OBX.5 数据类型定义为“VARIES”,即使验证失败,异常如下:HL7 数据类型 NM 与配置文件数据类型不匹配在 OBX-5 上有所不同
  • 也许您可以发布您的信息,以便我们知道您指的是什么。
  • 1.问题是在 OBX.2 中具有不同数据类型的单个消息中的多个 OBX,而一致性配置文件中的 OBX.5 也期望定义数据类型,因此它需要动态切换数据类型......这通过配置文件是不可能的,所以我使用“VARIES”作为 HAPI api v2.2 提供的数据类型的占位符。

标签: hl7 hapi hl7-v2


【解决方案1】:

我认为您应该使用ST 作为 OBX.5 的数据类型,因为我认为没有任何方法可以告诉 MWB 它需要在 OBX.2 中查找实际数据类型。

【讨论】:

  • 嗨 Gabe,实际上查找和验证是由 HAPI api 完成的,它根据一致性配置文件验证消息。这就是 HAPI 将占位符数据类型引入为“VARIES”的原因。但是 HAPI 中似乎有一个错误,它不支持它必须...但不确定...
  • @AmarJaiswal 敢于在调试器中单步调试HAPI 源代码,如果您确实指出了错误的位置,请发布补丁。在我看来,这是对您问题的最佳回答,基于您已经积累的丰富知识。另外,HAPI源代码cmets中可能还留下了一些重要的信息(至少时间数据类型实现已经满了)
【解决方案2】:

有一个解决分段组名称问题的方法。 (即我之前发布的第一个问题)

需要在 hapi-base jar 中的 ca\uhn\hl7v2\conf\parser 中更改 message_profile.xml 文件的正则表达式 '([A-Z]|)+'。

即将message_profile.xml中的段组名的正则表达式'([A-Z]|)+'替换为'([A-Z0-9]|)+',并为hapi-base重建jar。

现在使用 PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI 作为段组名称时不会抛出 ProfileException。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    相关资源
    最近更新 更多