Сценарий, когда я сразу анализирую и проверяю сообщение 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().