From: Brian T. <br...@br...> - 2018-06-04 22:08:57
|
Greetings, favorite <https://stackoverflow.com/questions/50688192/hapi-hl7-validation-throws-exceptions#> I am working on a Java endpoint that I intend to use for HL7 message validation. I have a basic app running that uses a variation of the standard HAPI HL7 validation example. If I pass in a valid message I get the "Success" response. If I pass in a invalid message I still get a "Success" response. The only way I get an error response is if the HL7 is badly formatted and the PipeParser throws an exception. In that case it gets caught in the catch block. What I want to see is if I pass in an invalid message that it actually gets validated and returns all the validation errors. But I don't ever actually see any validation. It either parses or crashes trying to parse. What am I missing here? HapiContext context = new DefaultHapiContext(); ValidationContext validationContext = ValidationContextFactory.defaultValidation(); context.setValidationContext(validationContext); try { context.getParserConfiguration().setUnexpectedSegmentBehaviour(UnexpectedSegmentBehaviourEnum.THROW_HL7_EXCEPTION); Message messageValidationResults = context.getPipeParser().parse(hl7Message); SimpleValidationExceptionHandler handler = new SimpleValidationExceptionHandler(context); handler.setMinimumSeverityToCollect(Severity.INFO); Validator<Boolean> validator = context.getMessageValidator(); if (!validator.validate(messageValidationResults, handler)) { if (handler.getExceptions().size() == 0) { hl7ValidationResult = "SUCCESS - Message Validated Successfully"; } else { hl7ValidationResult = "ERROR - Found " + handler.getExceptions().size() + " problems\n\n"; for (Exception e : handler.getExceptions()) { hl7ValidationResult += (e.getClass().getSimpleName() + " - " + e.getMessage()) + "\n"; } } } } catch (Exception e) { hl7ValidationResult = "ERROR - " + e.getMessage(); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); String sStackTrace = sw.toString(); hl7ValidationResult += "\n\n" + sStackTrace; } Thanks in advance! |