将HL7 v2转换为JSON

时间:2015-08-24 03:34:30

标签: apache-camel apache-drill hl7-v2

我希望将HL7 v2(较旧的EDI格式)消息转换为JSON,因此我可以在Apache Drill下处理它们并在Parquet下压缩。

我查看了HAPI,但我没有找到非XML HL7到JSON转换的实用工具。

有没有人对图书馆提出建议或参考?

1 个答案:

答案 0 :(得分:2)

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

String convertHL7ToJson(Message message) {
    try {
        DefaultXMLParser xmlParser = new DefaultXMLParser(new CanonicalModelClassFactory("2.6"));
        String xml = xmlParser.encode(message);
        Transformer xmlTransformer = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null).newTransformer(
            new StreamSource(new StringReader(readFileFromURL("https://github.com/bramstein/xsltjson/raw/master/conf/xml-to-json.xsl")))
            );
          StringWriter result = new StringWriter();
          xmlTransformer.transform(
             new StreamSource(new StringReader(xml)), new StreamResult(result)
          );
          return result.toString();
    } catch (Throwable t) {
        t.printStackTrace();
    }
    return null;
}

String readFileFromURL(String url) {
    InputStream is = null;
    try {
        return new Scanner(is = new URL(url).openStream(), "UTF-8").useDelimiter("\\A").next();
    } catch (Throwable t) {
        t.printStackTrace();
    } finally {
        if(is != null)
            try {
                is.close();
            } catch (Throwable ignored){}
    }
    return null;
}

这会创建如下输出:

"ORM_O01":{"MSH":{"MSH.1":"|","MSH.2":"^~\\&","MSH.3":{"HD.1":"TEST"},"MSH.4":{"HD.1":"TEST000","HD.2":"BL"},...