将 HL7 v2 转换为 JSON
Converting HL7 v2 to JSON
我希望将 HL7 v2(较旧的 EDI 格式)消息转换为 JSON,这样我就可以使它们在 Apache Drill 下可处理并在 Parquet 下可压缩。
我调查了 HAPI,但我没有找到非 XML HL7 到 JSON 转换的实用程序。
有人对图书馆有建议或参考吗?
只需使用 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"},...
我希望将 HL7 v2(较旧的 EDI 格式)消息转换为 JSON,这样我就可以使它们在 Apache Drill 下可处理并在 Parquet 下可压缩。
我调查了 HAPI,但我没有找到非 XML HL7 到 JSON 转换的实用程序。
有人对图书馆有建议或参考吗?
只需使用 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"},...