【问题标题】:How do i access the information in an hl7 message parsed with nHapi如何访问用 nHapi 解析的 hl7 消息中的信息
【发布时间】:2012-05-28 02:32:57
【问题描述】:

我正在学习如何使用 nHapi。正如许多人指出的那样,没有太多的文档。在this doc 之后,我已经能够使用该库解析一条消息。但我不知道如何使用对象模型访问该消息(这是我真正希望 nHapi 做的)。本质上,我想将 HL7 消息作为字符串并使用对象模型访问它,就像 LINQ to SQL 获取数据库记录并让您将其作为对象访问一样。我找到了Parsing an HL7 without a priori messageType knowledge,但它似乎是关于别的东西,因为帖子中的代码返回一个字符串而不是一个 HL7 对象(就像我需要的那样)。在documentation I linked to above 中,他们似乎使用“查询”访问消息的各个部分——但我在库中找不到查询 IMessage 的材料。

这是我正在使用的代码,其中一行显示了我想要做什么......

导入 NHapi.Base 导入 NHapi.Base.Parser 导入 NHapi.Base.Model

Module Module1

Sub Main()

    Dim msg As String = "MSH|^~\&|SENDING|SENDER|RECV|INST|20060228155525||QRY^R02^QRY_R02|1|P|2.3|QRD|20060228155525|R|I||||10^RD&Records&0126|38923^^^^^^^^&INST|||"
    Dim myPipeParser As PipeParser = New PipeParser()
    Dim myImsg As IMessage = myPipeParser.Parse(msg)
    Dim msgType As String = myImsg.GetStructureName
    Dim mySendingFacilityName As String = myImsg.getSendingFacility()  //this is what I want

End Sub

【问题讨论】:

    标签: hl7 nhapi


    【解决方案1】:

    请记住,HL7 消息中的每个段都必须以换行符结束。

    此外,您需要将消息解析回其实际类型,以便正确填充对象模型(请注意,当我使用 myPipeParser.Parse 时,它​​会从 NHapi 转换回 QRY_R02 消息类型.Model.V23 库)。所以代码应该是这样的:

    Imports NHapi.Model.V23.Message
    Imports NHapi.Base.Parser
    Imports NHapi.Base
    Module Module1
    
    Sub Main()
        Dim msg As String = "MSH|^~\&|SENDING|SENDER|RECV|INST|20060228155525||QRY^R02^QRY_R02|1|P|2.3" & vbNewLine & _
        "QRD|20060228155525|R|I||||10^RD&Records&0126|38923^^^^^^^^&INST|||"
        Dim myPipeParser As PipeParser = New PipeParser()
        Dim myImsg As QRY_R02 = myPipeParser.Parse(msg)
        Dim msgType As String = myImsg.GetStructureName
        Dim mySendingFacilityName As String = myImsg.MSH.SendingFacility.NamespaceID.Value
        Console.WriteLine(mySendingFacilityName)
        Console.ReadLine()
    
    End Sub
    
    End Module
    

    【讨论】:

    • 我有一个对 dll 设置的引用,并且能够引用管道解析器之类的东西。但是,当我尝试 NHapi.Model.V23.Message.QRY_R02 myQryR2 时,我收到错误:命名空间 NHapi.Base.Model 中不存在类型或命名空间 NHapi 但是,当我打开 QRY_R02.cs 文件时,它显示命名空间是 NHapi.Model.V251.Message 我很困惑。我应该引用两个 DLL 吗?
    • 有多个 NHapi.Model.XXXX 版本。基本上,如果您引用 NHapi.Model.V23,那么它将引入所有 HL7 2.3 模型。如果您引用 NHapi.Model.V25,那么它将引入所有 HL7 2.5 模型。您只想引用 NHapi.Model.XXX dll 之一。您应该只需要引用 NHapi.Base.dll 和 NHapi.Model.XXX.dll。
    【解决方案2】:

    我知道那是很久以前的事了,但是我最近在寻找这个资源,发现几乎没有关于如何使用这个 API 的文档。优秀的示例源代码可以在项目 NHapi.NUnit 的源代码测试部分中找到。 来源可查here

    【讨论】:

      猜你喜欢
      • 2017-10-10
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2013-05-07
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多