在使用HL7 v2文件后,我试图将它们编组为HAPI HL7对象。路线样本将是:
from("file:C:\\routes\\in").unmarshal(new HL7DataFormat()).log("Success!");
不幸的是我得到了例外:
ca.uhn.hl7v2.parser.EncodingNotSupportedException: Determine encoding for message. The following is the first 50 chars of the message for reference, although this may not be where the issue is: MSH|^~\&|...
我发现解析的每条消息都在前面有\ u000B符号,这导致解析器无法找到“MSH”标题。
对于cource,我可以通过简单的字符串操作来修复它,例如:
from("file:C:\\routes\\in")
.convertBodyTo(String.class)
.transform().simple("${in.body.trim()}")
.unmarshal(new HL7DataFormat())
.log("Success!");
但在我看来,这不是最好的解决方案。我发现,如果使用MLLP协议,则相同的符号位于消息的前面,HL7编解码器应该处理它。 http://camel.apache.org/hl7.html
问题: 是否可以使用HL7Codec for File或FTP组件来处理转换为字符串/解析?
答案 0 :(得分:0)
\ u000B 是标准HL7消息最小下层协议的起始字节(标记)。然后,该消息通常应以字节 \ u001C 和 \ u000D (结束标记)结束。
虽然您可以讨论MLLP对文件的需求,但您应该能够根据Apache Camel的文档获得带有HL7MLLPCodec Class的纯HL7消息字符串