简体   繁体   English

HL7 C#-从服务器接收ACK响应

[英]HL7 C# - Receiving an ACK Response from Server

I have created a simple client to send HL7 formatted messages to a server. 我创建了一个简单的客户端,将HL7格式的消息发送到服务器。 Unfortunately I do not have access to the server to see how the messages are coming in and what is being sent back. 不幸的是,我没有访问服务器的权限,无法查看消息的传入方式和发回的内容。 Right now my message sends but when I wait for a message back (ACK), it just sits there waiting. 现在,我的消息已发送,但是当我等待消息返回(ACK)时,它只是坐在那里等待。

Any advice is greatly appreciated. 任何意见是极大的赞赏。

try {
    using (var client = new TcpClient())
    {
        client.Connect("10.25.60.8", 10000);

        using (Stream stm = client.GetStream())
        {
            byte[] ba = Encoding.ASCII.GetBytes(segment1 + segment2 + segment3 + segment4 + segment5);
            Console.WriteLine("Transmitting.....");

            stm.Write(ba, 0, ba.Length);

            Console.WriteLine("MessageSend reading response");

            byte[] bb = new byte[1000];
            int k = stm.Read(bb, 0, 1000);

            for (int i = 0; i < k; i++)
                Console.WriteLine(Convert.ToChar(bb[i]));

            client.Close();
        }
    }
}
catch (Exception e)
{
    Console.WriteLine(e.StackTrace);
}

This is how I create the message segments: 这是我创建消息段的方式:

clnt p = new clnt();
patientAdmit r = new patientAdmit();

r.admitMessage = "MSH|^~\\&|MP|M1|MP|M2|201701011500||ADT^A01|HL7MSG00001|P|2.3|EVN|A01|201701011500||PID|||MRN222222||TEST^MICHAEL||19890101|M||C|1 MP STREET^^MARK^ON^L4C|GL|(416)123-1234|(647)123-1234|||||||NK1|1|TEST^BARBARA|WIFE||||||NK^NEXT OF KIN|PV1|1|I|20^201^01||||123456^TEST^DOC|||SUR||||ADM|A0|";

string vt = Convert.ToChar(11).ToString();
string cr = Convert.ToChar(13).ToString();
string fs = Convert.ToChar(28).ToString();

int startSegment2 = p.GetNthIndex(r.admitMessage, Convert.ToChar("|"), 12) + 1;

int startSegment3 = p.GetNthIndex(r.admitMessage, Convert.ToChar("|"), 16) + 1;
int startSegment4 = p.GetNthIndex(r.admitMessage, Convert.ToChar("|"), 16 + 21) + 1;

int startSegment5 = p.GetNthIndex(r.admitMessage, Convert.ToChar("|"), 16 + 21 + 10) + 1;

string segment1 = vt + r.admitMessage.Substring(0, startSegment2);

string segment2 = cr + r.admitMessage.Substring(startSegment2, startSegment3 - startSegment2);

string segment3 = cr + r.admitMessage.Substring(startSegment3, startSegment4 - startSegment3);

string segment4 = cr + r.admitMessage.Substring(startSegment4, startSegment5 - startSegment4);

string segment5 = cr + r.admitMessage.Substring(startSegment5, r.admitMessage.Length - startSegment5) + cr + fs;

You can simulate a server with most HL7 Editors. 您可以使用大多数HL7编辑器来模拟服务器。 For example, grab the free trial of HL7 soup from their website, and create a new receiver on your desired port. 例如,从他们的网站上免费试用HL7汤 ,然后在所需的端口上创建一个新的接收器。 When you send in your messages they will respond straight back with an ACK message generated from your message. 当您发送邮件时,他们将直接回信并根据您的邮件生成ACK消息。 In the reciever settings, you can even force the response to be an error or reject ACK so you can test your client. 在收件人设置中,您甚至可以强制响应为错误或拒绝ACK,以便测试客户端。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM