如果完全禁用验证是您的应用程序的一个选项,那么您可以将验证上下文设置为使用NoValidation
.
请参阅 hapi 开发人员邮件列表中的此线程:http: //sourceforge.net/p/hl7api/mailman/message/31244500/
以下是如何禁用验证的示例:
HapiContext context = new DefaultHapiContext();
context.setValidationContext(new NoValidation());
GenericParser parser = context.getGenericParser();
String message = ...
try {
parser.parse(message);
} catch (Exception e) {
e.printStackTrace();
}
如果您仍然需要验证,但只想更改特定规则的验证器,那么您必须创建自己的 ValidationContext 实现。这将通过子类化ca.uhn.hl7v2.validation.builder.support.NoValidationBuilder
和覆盖该configure
方法并使用它来实例化 ValidationContextImpl 的实例来完成。
有关如何在 NoValidationBuilder 的子类中实现 configure 方法的示例,请参阅ca.uhn.hl7v2.validation.builder.support.DefaultValidationBuilder
. 这是生成您看到的错误消息的默认验证上下文。为了让您更轻松,我在此处包含课程列表:
public class DefaultValidationBuilder extends DefaultValidationWithoutTNBuilder {
@Override
protected void configure() {
super.configure();
forAllVersions()
.primitive("TN")
.refersToSection("Version 2.4 Section 2.9.45")
.is(emptyOr(usPhoneNumber()));
}
}
请注意,这是中usPhoneNumber
定义的方法的实现BuilderSupport
:
public Predicate usPhoneNumber() {
return matches("(\\d{1,2} )?(\\(\\d{3}\\))?\\d{3}-\\d{4}(X\\d{1,5})?(B\\d{1,5})?(C.*)?",
"a US phone number");
}