Camel 将HL7 v2转换为JSON

vddsk6oq  于 2022-11-07  发布在  Apache
关注(0)|答案(2)|浏览(224)

我希望将HL7 v2(旧的EDI格式)消息转换为JSON,这样我就可以使它们在Apache Drill下可处理,在Parquet下可压缩。
我研究了HAPI,但是我没有找到用于非XML HL7到JSON转换的实用程序。
有人对图书馆有建议或参考吗?

oyjwcjzk

oyjwcjzk1#

只需使用HAPI转换为XML即可。下面的代码需要Saxon,因为XML-to-JSON需要XSLT 2.0,但是如果您已经有了一个将XML转换为JSON的方法,那么您只需要前两行代码,它们完全是HAPI。当然,您应该在本地下载XSLT进行生产。:-)

  1. String convertHL7ToJson(Message message) {
  2. try {
  3. DefaultXMLParser xmlParser = new DefaultXMLParser(new CanonicalModelClassFactory("2.6"));
  4. String xml = xmlParser.encode(message);
  5. Transformer xmlTransformer = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null).newTransformer(
  6. new StreamSource(new StringReader(readFileFromURL("https://github.com/bramstein/xsltjson/raw/master/conf/xml-to-json.xsl")))
  7. );
  8. StringWriter result = new StringWriter();
  9. xmlTransformer.transform(
  10. new StreamSource(new StringReader(xml)), new StreamResult(result)
  11. );
  12. return result.toString();
  13. } catch (Throwable t) {
  14. t.printStackTrace();
  15. }
  16. return null;
  17. }
  18. String readFileFromURL(String url) {
  19. InputStream is = null;
  20. try {
  21. return new Scanner(is = new URL(url).openStream(), "UTF-8").useDelimiter("\\A").next();
  22. } catch (Throwable t) {
  23. t.printStackTrace();
  24. } finally {
  25. if(is != null)
  26. try {
  27. is.close();
  28. } catch (Throwable ignored){}
  29. }
  30. return null;
  31. }

这将创建如下所示的输出:

  1. "ORM_O01":{"MSH":{"MSH.1":"|","MSH.2":"^~\\&","MSH.3":{"HD.1":"TEST"},"MSH.4":{"HD.1":"TEST000","HD.2":"BL"},...
展开查看全部
ej83mcc0

ej83mcc02#

如果有一种方法可以将HL7转换为XML,那么您可以使用Drill原生地查询XML 1,然后最终将其转换为parquet。

相关问题