2012-05-21 108 views
1

我正在學習如何使用nHapi。正如許多人指出的那樣,沒有太多的文件。繼this文檔後,我已經能夠使用庫解析消息。但我不知道如何使用對象模型訪問該消息(這正是我真正想要nHapi所要做的)。本質上,我想以一個字符串的形式接收HL7消息,並使用對象模型訪問它,就像LINQ to SQL獲取數據庫記錄並讓您以對象的形式訪問它一樣。我發現Parsing an HL7 without a priori messageType knowledge,但它似乎是關於別的東西,因爲在帖子中的代碼返回一個字符串,而不是一個HL7對象(就像我需要)。在documentation I linked to above中,他們似乎使用「查詢」訪問消息的各個部分 - 但我找不到要在庫中查詢IMessage的材料。我如何訪問使用nHapi解析的hl7消息中的信息

這裏是我使用的代碼,以顯示我想要做一個線...

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

回答

3

記住HL7消息,每個段必須以行返回結束。另外,您需要將消息解析回其實際類型,以便正確填充對象模型(請注意,當我使用myPipeParser.Parse時,它將被轉換回QRY_R02消息類型NHapi.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 
+0

我有一個引用的dll設置,並能夠引用像管道解析器的東西。但是,當我嘗試NHapi.Model.V23.Message.QRY_R02 myQryR2我得到的錯誤:類型或名稱空間NHapi不存在於命名空間NHapi.Base.Model當我打開QRY_R02.cs文件,但是,它說的命名空間是NHapi.Model.V251.Message我很困惑。我應該引用兩個DLL嗎? – bernie2436

+0

有多個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。 – Chad

0

我知道那是很久以前的事,但我一直在尋找這個資源非常最近,發現有關於如何使用這個API幾乎沒有文檔。在項目NHapi.NUnit的源代碼的測試部分中可以找到很好的示例源。 可以找到源here