我正在通过 TCP 套接字侦听传入的 HL7 消息。出于调试目的,我使用工具7Edit将 HL7 消息发送到我的应用程序。
所以我要发送的是这个示例消息
MSH|^~\&|KISsystem|ZTM|NIDAklinikserver|HL7Connector|201902271130||ADT^A01|68371142|P|2.3
EVN|A01|201902271130|201902271130
PID|1||677789||Aubertinó^Letizia||19740731|F||
PV1|1|O|||||||||||||||||456456456
IN1|1||999567890|gematik Musterkasse1GKV||||||||||||Prof. Dr.Aubertinó^Letizia||19740731|||||||||||201902271101|||||||X110173919
我的TcpListener
实例使用此代码侦听传入消息
public async Task Listen()
{
try
{
while (true)
{
TcpClient tcpClient = await tcpListener.AcceptTcpClientAsync();
// fetch message stream
NetworkStream tcpClientStream = tcpClient.GetStream();
// create reader instance
using StreamReader streamReader = new StreamReader(tcpClientStream);
// read message stream at once
string messageText = await streamReader.ReadToEndAsync();
// create new HL7 message parser instance
PipeParser pipeParser = new PipeParser();
// parse that string to a HL7 message
IMessage hl7Message = pipeParser.Parse(messageText);
}
}
catch (Exception exception)
{
// ... error handling ...
}
}
不幸的是,HL7 解析器抛出以下异常
无法解析以 MSH|^~&|KISsystem|ZTM|NIDAklinikserver|HL7Connec 开头的消息
当向应用程序发送消息时,消息似乎被正确提取,因此messageText
保存消息字符串也是如此。
我从Visual Studio的Locals选项卡中获取了值:
"\vMSH|^~\\&|KISsystem|ZTM|NIDAklinikserver|HL7Connector|201902271130||ADT^A01|68371142|P|2.3\rEVN|A01|201902271130|201902271130\rPID|1||677789||Aubertin�^Letizia||19740731|F||\rPV1|1|O|||||||||||||||||456456456\rIN1|1||999567890|gematik Musterkasse1GKV||||||||||||Prof. Dr.Aubertin�^Letizia||19740731|||||||||||201902271101|||||||X110173919\u001c\r"
检查时你可以看到这个
如您所见,该字符串中有一些无效字符。在检查窗口中,您可以在开头看到一个无效字符。并且字符串本身包含一些转义字符。我认为这就是pipeParser.Parse(messageText)
引发异常的原因。
有人知道这里出了什么问题/如何解决吗?
提前致谢