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(
024                        IResourceValidator validator, Object appContext, String path, String url) {
025                return ReferenceValidationPolicy.IGNORE;
026        }
027
028        @Override
029        public ContainedReferenceValidationPolicy policyForContained(
030                        IResourceValidator validator,
031                        Object appContext,
032                        String containerType,
033                        String containerId,
034                        Element.SpecialElement containingResourceType,
035                        String path,
036                        String url) {
037                return ContainedReferenceValidationPolicy.CHECK_VALID;
038        }
039
040        @Override
041        public CodedContentValidationPolicy policyForCodedContent(
042                        IResourceValidator validator,
043                        Object appContext,
044                        String stackPath,
045                        ElementDefinition definition,
046                        StructureDefinition structure,
047                        BindingKind kind,
048                        ValueSet valueSet,
049                        List<String> systems) {
050                return CodedContentValidationPolicy.CODE;
051        }
052}