@Bean @ConditionalOnMissingBean @ConditionalOnProperty(name = "hapi.fhir.validation.request-only", havingValue = "false") public ResponseValidatingInterceptor responseValidatingInterceptor() { return new ResponseValidatingInterceptor(); }
@Override public boolean outgoingResponse(RequestDetails theRequestDetails, IBaseResource theResponseObject) { RestOperationTypeEnum operationType = theRequestDetails.getRestOperationType(); if (operationType != null && myExcludeOperationTypes != null && myExcludeOperationTypes.contains(operationType)) { ourLog.trace("Operation type {} is excluded from validation", operationType); return true; } validate(theResponseObject, theRequestDetails); return true; }
@Override protected void initialize() throws ServletException { // ... define your resource providers here ... // Create an interceptor to validate incoming requests RequestValidatingInterceptor requestInterceptor = new RequestValidatingInterceptor(); // Register a validator module (you could also use SchemaBaseValidator and/or SchematronBaseValidator) requestInterceptor.addValidatorModule(new FhirInstanceValidator()); requestInterceptor.setFailOnSeverity(ResultSeverityEnum.ERROR); requestInterceptor.setAddResponseHeaderOnSeverity(ResultSeverityEnum.INFORMATION); requestInterceptor.setResponseHeaderValue("Validation on ${line}: ${message} ${severity}"); requestInterceptor.setResponseHeaderValueNoIssues("No issues detected"); // Now register the validating interceptor registerInterceptor(requestInterceptor); // Create an interceptor to validate responses // This is configured in the same way as above ResponseValidatingInterceptor responseInterceptor = new ResponseValidatingInterceptor(); responseInterceptor.addValidatorModule(new FhirInstanceValidator()); responseInterceptor.setFailOnSeverity(ResultSeverityEnum.ERROR); responseInterceptor.setAddResponseHeaderOnSeverity(ResultSeverityEnum.INFORMATION); responseInterceptor.setResponseHeaderValue("Validation on ${line}: ${message} ${severity}"); responseInterceptor.setResponseHeaderValueNoIssues("No issues detected"); registerInterceptor(responseInterceptor); }
@Override public boolean outgoingResponse(RequestDetails theRequestDetails, IBaseResource theResponseObject) { RestOperationTypeEnum operationType = theRequestDetails.getRestOperationType(); if (operationType != null && myExcludeOperationTypes != null && myExcludeOperationTypes.contains(operationType)) { ourLog.trace("Operation type {} is excluded from validation", operationType); return true; } validate(theResponseObject, theRequestDetails); return true; }