如何访问使用nHapi解析的hl7消息中的信息

时间:2012-05-21 15:08:05

标签: hl7 nhapi

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

以下是我正在使用的代码,其中一行显示了我想要做的事情......

进口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

2 个答案:

答案 0 :(得分:3)

请记住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

答案 1 :(得分:0)

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