使用最新版本的HAPI 2 v2.3,请关闭验证仅适用于pipedParser,而XMLParser不起作用。
下面的示例代码可以在以前的版本(HAPI 2 v2.2)上正常运行,但是在HAPI v2.3上,它将引发异常:
验证失败:原始值“ THIS-IS-NOT-DATE-VALUE”必须为空或HL7日期时间字符串
import ca.uhn.hl7v2.DefaultHapiContext;
import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.HapiContext;
import ca.uhn.hl7v2.model.Message;
import ca.uhn.hl7v2.parser.PipeParser;
import ca.uhn.hl7v2.parser.XMLParser;
public class TestXMLParser {
public static void main(String[] args) throws HL7Exception {
// TODO Auto-generated method stub
String invalidMessage = "MSH|^~\\&|MedSeries|CAISI_1-2|PLS|3910|200903230934||ADT^A31^ADT_A05|75535037-1237815294895|P^T|2.4\r"
+ "EVN|A31|THIS-IS-NOT-DATE-VALUE\r"
+ "PID|1||29^^CAISI_1-2^PI~\"\"||Test300^Leticia^^^^^L||19770202|M||||||||||||||||||||||";
HapiContext context = new DefaultHapiContext();
// turn off the validation <<<<<<<<<<<<<<=================
context.getParserConfiguration().setValidating(false);
Message hapiMsg = null;
String xmlDoc = null;
// get an instance of the PipeParser
PipeParser parser = context.getPipeParser();
hapiMsg = parser.parse(invalidMessage); // this works fine
System.out.println("Successfully parsed the message");
// get an instance of XMLParser
XMLParser xmlParser = context.getXMLParser();
// encode the piped formatted message to xml format
xmlDoc = xmlParser.encode(hapiMsg);
// try to parse the xml string into Hapi message objects
Message xmlMessage = xmlParser.parse(xmlDoc);// with HAPI 2 v2.3 an exception is thrown.
// encode the xml formatted message to pipe-format
String er7 = parser.encode(xmlMessage);
System.out.println("er7:\n" + er7);
}
}
我想知道您是否有任何建议/解决方法。 谢谢。