[英]How to parse a HL7 message string properly?
我正在使用 NHAPI 包將傳入的消息字符串解析為使用PipeParser
HL7 IMessage
接口。
根據HL7 最小層協議 (MLP)定義,HL7 消息始終由一些字符包裝, 0x0b
為0x0b
, 0x0b
為0x1c, 0x0d
。 出於測試目的,我使用工具 7Edit 將此消息發送到我的應用程序。
MSH|^~\&|KISsystem|ZTM|NIDAklinikserver|HL7Proxy|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
調試的消息字符串是
MSH|^~\&|KISsystem|ZTM|NIDAklinikserver|HL7Proxy|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
在這里您可以看到包裹消息的字符。 如果將此消息字符串傳遞給PipeParser.Parse()
方法,它將拋出異常消息
無法解析以 MSH 開頭的消息|^~&|KISsystem|ZTM|NIDAklinikserver|HL7Proxy|
我想我必須先刪除所有這些字符。 是否有可用的東西,或者我是否必須將所有這些分隔符存儲到一個字節數組中,將該字節數組轉換為一個字符串並從消息字符串中刪除這些分隔符字符串?
以前從未使用過 NHAPI,但我經常處理 HL7 消息和接口。
您必須清理您獲得的數據,因此您刪除字符的假設是正確的。 字符算作空格,因此簡單的 Trim() 可以工作。 我們的客戶有時會在消息之前隨機加上特殊字符和雙引號,所以這總是很有趣。 但在這種情況下,修復非常簡單。
下面的代碼解析了我的消息。
string message2 = @"MSH|^~\&|KISsystem|ZTM|NIDAklinikserver|HL7Proxy|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|||||||X11017391";
var ourPP = new PipeParser();
try
{
//exception is thrown without the Trim(); No exception with the Trim()
var hl7Message = ourPP.Parse(message2.Trim());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.