1

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

2 回答 2

3

记住 HL7 消息,每个段必须以换行结束。

此外,您需要将消息解析回其实际类型,以便正确填充对象模型(请注意,当我使用 myPipeParser.Parse 时,它​​会从 NHapi.Model 转换回 QRY_R02 消息类型。 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
于 2012-05-22T13:47:18.173 回答
0

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

于 2016-05-08T16:47:57.233 回答