001package org.hl7.fhir.r5.terminologies.providers;
002
003import java.util.List;
004
005import org.hl7.fhir.r5.model.Extension;
006import org.hl7.fhir.r5.model.Parameters;
007import org.hl7.fhir.r5.model.ValueSet;
008import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent;
009import org.hl7.fhir.r5.model.ValueSet.ValueSetExpansionComponent;
010import org.hl7.fhir.r5.model.ValueSet.ValueSetExpansionPropertyComponent;
011import org.hl7.fhir.utilities.MarkedToMoveToAdjunctPackage;
012
013/**
014 * For special code systems where the code system resource isn't enough, but we can support them internall
015 * Usually, small grammar based code systems
016 * 
017 * @author grahamegrieve
018 *
019 */
020@MarkedToMoveToAdjunctPackage
021public abstract class CodeSystemProvider {
022
023  public static CodeSystemProvider factory(String system) {
024    switch (system) {
025    case "http://hl7.org/fhir/color-rgb" : return new ColorRGBProvider();
026    default:
027      return null;
028    }
029  }
030
031  public abstract void includeCodes(ConceptSetComponent inc, boolean heirarchical, ValueSetExpansionComponent exp,
032      List<ValueSet> imports, Parameters expParams, List<Extension> extensions, boolean noInactive,
033      List<ValueSetExpansionPropertyComponent> vsProps) throws CodeSystemProviderExtension;
034
035  public abstract Boolean checkCode(String code);
036
037}