001package org.hl7.fhir.common.hapi.validation.validator;
002
003import org.hl7.fhir.r5.elementmodel.Element;
004import org.hl7.fhir.r5.model.ElementDefinition;
005import org.hl7.fhir.r5.model.StructureDefinition;
006import org.hl7.fhir.r5.model.ValueSet;
007import org.hl7.fhir.r5.utils.validation.IResourceValidator;
008import org.hl7.fhir.r5.utils.validation.IValidationPolicyAdvisor;
009import org.hl7.fhir.r5.utils.validation.constants.BindingKind;
010import org.hl7.fhir.r5.utils.validation.constants.CodedContentValidationPolicy;
011import org.hl7.fhir.r5.utils.validation.constants.ContainedReferenceValidationPolicy;
012import org.hl7.fhir.r5.utils.validation.constants.ReferenceValidationPolicy;
013
014import java.util.List;
015
016/**
017 * Implementation of the base {@link IValidationPolicyAdvisor}. This is used as the default for all validation operations
018 * done within the core libraries, as without a default, it will ignore some validation operations.
019 */
020public class FhirDefaultPolicyAdvisor implements IValidationPolicyAdvisor {
021
022        @Override
023        public ReferenceValidationPolicy policyForReference(IResourceValidator validator, Object appContext, String path,
024                                                                                                                                                 String url) {
025                return ReferenceValidationPolicy.IGNORE;
026        }
027
028        @Override
029        public ContainedReferenceValidationPolicy policyForContained(IResourceValidator validator, Object appContext, String containerType, String containerId,
030                                                                                                                                                                         Element.SpecialElement containingResourceType, String path, String url) {
031                return ContainedReferenceValidationPolicy.CHECK_VALID;
032        }
033
034        @Override
035        public CodedContentValidationPolicy policyForCodedContent(IResourceValidator validator, Object appContext, String stackPath,
036                                                                                                                                                                 ElementDefinition definition, StructureDefinition structure, BindingKind kind,
037                                                                                                                                                                 ValueSet valueSet, List<String> systems) {
038                return CodedContentValidationPolicy.CODE;
039        }
040}