簡體   English   中英

如何發送 HL7 ACK 消息作為 TCP 響應?

[英]How to send HL7 ACK message as a TCP response?

我通過 TCP 連接接收 HL7 消息。 這些消息將始終屬於 ADT 類型。 我正在使用 Kestrel 來偵聽這些消息,並使用 NHAPI 包來處理它們。 我使用David Fowler 的 Kestrel 示例代碼來設置 TCP 偵聽器。 所以基於這個示例代碼

internal class HL7Listener : ConnectionHandler
{
    public override async Task OnConnectedAsync(ConnectionContext connection)
    {
        try
        {
            // handle the incoming message
        }
        catch (Exception exception)
        {
            // handle exceptions
        }
        finally
        {
            ACK acknowledgement = new ACK(); // create an ACK message
            PipeParser pipeParser = new PipeParser();
            string ackMessage = pipeParser.Encode(acknowledgement); // produces => MSH|^~\&|||||||ACK|||2.3
            byte[] ackMessageBytes = Encoding.UTF8.GetBytes(ackMessage);
            
            await connection.Transport.Output.WriteAsync(ackMessageBytes); // send the ACK
        }
    }
}

我正在使用工具 7Edit 將 HL7 消息發送到我的應用程序。 存儲庫中的回聲示例(上面的鏈接)工作正常。 回聲示例代碼產生這樣的日志

在此處輸入圖片說明

但是在使用我的代碼時出現此錯誤

在此處輸入圖片說明

所以我認為我沒有正確轉換 ACK 消息。 任何想法如何解決這一問題?

我懷疑您在發送 ACK 時沒有實施MLLP (也稱為 LLP)協議。 我知道,7Edit 希望實施 MLLP。 這樣,當您向 7Edit(TCP/MLLP 客戶端)發送 ACK 時,它會在您的傳入數據中查找起始塊。 它永遠找不到它。 它只是考慮垃圾而丟棄您的整個消息並繼續等待; 如您所見,這會導致超時。

也許你應該在 7Edit 中尋找一些設置來禁用 MLLP; 但這將是臨時解決方案。 更好的是,您實現 MLLP 塊。

Description                 HEX     ASCII   Symbol
Message starting character  0B      11      <VT>
Message ending characters   1C,0D   28,13   <FS>,<CR>

隨着MLLP實現,你的消息(東西你寫上插座)看起來應該象下面這樣:

<VT>MSH|^~\\&|......|ACK|......<FS><CR>

注意<VT><CR><FS>是上面消息中的占位符。

您應該修改以下代碼行:

byte[] ackMessageBytes = Encoding.UTF8.GetBytes(ackMessage);

如下:

ackMessage = ((char) 11).ToString() + ackMessage + ((char) 28).ToString() + ((char) 13).ToString();
byte[] ackMessageBytes = Encoding.UTF8.GetBytes(ackMessage);

有關更多詳細信息,您可以參考這個答案。

ackMessage = ((char) 11).ToString() + ackMessage + ((char) 28).ToString() + ((char) 13).ToString(); byte[] ackMessageBytes = Encoding.UTF8.GetBytes(ackMessage);

如何在python代碼中做到這一點?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM