首页 文章

HAPI HL7 Validator不验证已解析的消息

提问于
浏览
5

我一次解析并验证HL7消息的方案按预期工作:

HapiContext hapiContext = new DefaultHapiContext();
PipeParser parser = hapiContext.getPipeParser();
Message message = parser.parse("MSH|^~\\&|MedSeries|CAISI_1-2|PLS|3910|200903230934||ADT^A31^ADT_A05|75535037-1237815294895|P^T|2.5\r"
            + "EVN|A31|200903230934345345345345345\r"
            + "PID|1||29^^CAISI_1-2^PI~\"\"||Test300^Leticia^^^^^L||19770202|M||||||||||||||||||||||");

异常(这是一种有效的行为):

Exception in thread "main" ca.uhn.hl7v2.model.DataTypeException: ca.uhn.hl7v2.validation.ValidationException: Validation failed: Primitive value '200903230934345345345345345' requires to be empty or a HL7 datetime string at EVN-2(0)

但是当我首先尝试解析HL7消息然后验证时 - 验证方法返回true并且不抛出任何异常:

HapiContext hapiContext = new DefaultHapiContext();
hapiContext.setValidationContext((ValidationContext) ValidationContextFactory.noValidation());
PipeParser parser = hapiContext.getPipeParser();
Message message = parser.parse("MSH|^~\\&|MedSeries|CAISI_1-2|PLS|3910|200903230934||ADT^A31^ADT_A05|75535037-1237815294895|P^T|2.5\r"
            + "EVN|A31|200903230934345345345345345\r"
            + "PID|1||29^^CAISI_1-2^PI~\"\"||Test300^Leticia^^^^^L||19770202|M||||||||||||||||||||||");


hapiContext.setValidationRuleBuilder(new DefaultValidationBuilder());
System.out.println(hapiContext.getMessageValidator().validate(message));

我需要这个以在使用message.generateACK()方法验证失败的情况下生成确认消息 .

1 回答

  • 1

    您使用以下方法禁用了解析验证:

    hapiContext.setValidationContext((ValidationContext) ValidationContextFactory.noValidation());

    但是您使用相同的上下文来验证您的消息,验证仍然禁用,这可能是根本原因 .

    还有,你试试这个吗? context.getParserConfiguration().setValidating(false); 或者是真的

相关问题