001package org.hl7.fhir.common.hapi.validation.validator;
002
003import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
004import ca.uhn.fhir.context.FhirContext;
005import ca.uhn.fhir.context.RuntimeCompositeDatatypeDefinition;
006import ca.uhn.fhir.context.RuntimePrimitiveDatatypeDefinition;
007import ca.uhn.fhir.context.RuntimeResourceDefinition;
008import ca.uhn.fhir.i18n.Msg;
009import org.apache.commons.lang3.Validate;
010import org.hl7.fhir.exceptions.FHIRException;
011import org.hl7.fhir.r5.conformance.profile.BindingResolution;
012import org.hl7.fhir.r5.conformance.profile.ProfileKnowledgeProvider;
013import org.hl7.fhir.r5.model.ElementDefinition;
014import org.hl7.fhir.r5.model.StructureDefinition;
015
016public class ProfileKnowledgeWorkerR5 implements ProfileKnowledgeProvider {
017        private final FhirContext myCtx;
018
019        public ProfileKnowledgeWorkerR5(FhirContext theCtx) {
020                myCtx = theCtx;
021        }
022
023        @Override
024        public boolean isDatatype(String typeSimple) {
025                BaseRuntimeElementDefinition<?> def = myCtx.getElementDefinition(typeSimple);
026                Validate.notNull(typeSimple);
027                return (def instanceof RuntimePrimitiveDatatypeDefinition)
028                                || (def instanceof RuntimeCompositeDatatypeDefinition);
029        }
030
031        @Override
032        public boolean isPrimitiveType(String typeSimple) {
033                BaseRuntimeElementDefinition<?> def = myCtx.getElementDefinition(typeSimple);
034                Validate.notNull(typeSimple);
035                return (def instanceof RuntimePrimitiveDatatypeDefinition);
036        }
037
038        @Override
039        public boolean isResource(String typeSimple) {
040                BaseRuntimeElementDefinition<?> def = myCtx.getElementDefinition(typeSimple);
041                Validate.notNull(typeSimple);
042                return def instanceof RuntimeResourceDefinition;
043        }
044
045        @Override
046        public boolean hasLinkFor(String typeSimple) {
047                return false;
048        }
049
050        @Override
051        public String getLinkFor(String corePath, String typeSimple) {
052                return null;
053        }
054
055        @Override
056        public BindingResolution resolveBinding(
057                        StructureDefinition theStructureDefinition,
058                        ElementDefinition.ElementDefinitionBindingComponent theElementDefinitionBindingComponent,
059                        String theS)
060                        throws FHIRException {
061                return null;
062        }
063
064        @Override
065        public BindingResolution resolveBinding(StructureDefinition theStructureDefinition, String theS, String theS1)
066                        throws FHIRException {
067                return null;
068        }
069
070        @Override
071        public String getLinkForProfile(StructureDefinition theStructureDefinition, String theS) {
072                return null;
073        }
074
075        @Override
076        public boolean prependLinks() {
077                return false;
078        }
079
080        @Override
081        public String getLinkForUrl(String corePath, String url) {
082                throw new UnsupportedOperationException(Msg.code(693));
083        }
084
085        @Override
086        public String getCanonicalForDefaultContext() {
087                return null;
088        }
089}