use of org.hl7.fhir.r4b.model.CanonicalResource in project org.hl7.fhir.core by hapifhir.
the class R3ToR5Loader method loadBundle.
@Override
public Bundle loadBundle(InputStream stream, boolean isJson) throws FHIRException, IOException {
Resource r3 = null;
if (isJson)
r3 = new JsonParser().parse(stream);
else
r3 = new XmlParser().parse(stream);
org.hl7.fhir.r5.model.Resource r5 = VersionConvertorFactory_30_50.convertResource(r3, advisor);
Bundle b;
if (r5 instanceof Bundle)
b = (Bundle) r5;
else {
b = new Bundle();
b.setId(UUID.randomUUID().toString().toLowerCase());
b.setType(BundleType.COLLECTION);
b.addEntry().setResource(r5).setFullUrl(r5 instanceof CanonicalResource ? ((CanonicalResource) r5).getUrl() : null);
}
for (CodeSystem cs : advisor.getCslist()) {
BundleEntryComponent be = b.addEntry();
be.setFullUrl(cs.getUrl());
be.setResource(cs);
}
if (killPrimitives) {
List<BundleEntryComponent> remove = new ArrayList<BundleEntryComponent>();
for (BundleEntryComponent be : b.getEntry()) {
if (be.hasResource() && be.getResource() instanceof StructureDefinition) {
StructureDefinition sd = (StructureDefinition) be.getResource();
if (sd.getKind() == StructureDefinitionKind.PRIMITIVETYPE)
remove.add(be);
}
}
b.getEntry().removeAll(remove);
}
if (patchUrls) {
for (BundleEntryComponent be : b.getEntry()) {
if (be.hasResource() && be.getResource() instanceof StructureDefinition) {
StructureDefinition sd = (StructureDefinition) be.getResource();
sd.setUrl(sd.getUrl().replace(URL_BASE, URL_DSTU3));
sd.addExtension().setUrl(URL_ELEMENT_DEF_NAMESPACE).setValue(new UriType(URL_BASE));
for (ElementDefinition ed : sd.getSnapshot().getElement()) patchUrl(ed);
for (ElementDefinition ed : sd.getDifferential().getElement()) patchUrl(ed);
}
}
}
return b;
}
use of org.hl7.fhir.r4b.model.CanonicalResource in project org.hl7.fhir.core by hapifhir.
the class JavaResourceGenerator method generate.
// public void generate(ElementDefinition root, String name, JavaGenClass clss, ProfiledType cd, Date genDate, String version, boolean isAbstract, Map<String, SearchParameterDefn> nameToSearchParamDef, ElementDefinition template) throws Exception {
public void generate(Analysis analysis) throws Exception {
if (analysis.getStructure().getKind() == StructureDefinitionKind.RESOURCE) {
clss = JavaGenClass.Resource;
} else {
clss = JavaGenClass.Type;
}
write("package org.hl7.fhir." + jid + ".model;\r\n");
startMark(version, genDate);
// hasList(root);
boolean hl = true;
boolean hh = hasXhtml(analysis.getStructure().getSnapshot().getElement());
boolean hd = hasDecimal(analysis.getStructure().getSnapshot().getElement());
boolean hs = hasString(analysis.getStructure().getSnapshot().getElement());
boolean he = hasSharedEnums(analysis.getStructure().getSnapshot().getElement());
boolean hn = hasNestedTypes(analysis.getStructure().getSnapshot().getElement());
if (hl || hh || hd || he) {
if (hl) {
write("import java.util.ArrayList;\r\n");
write("import java.util.Date;\r\n");
write("import java.util.List;\r\n");
} else {
write("import java.util.Date;\r\n");
}
if (hh) {
write("import org.hl7.fhir.utilities.xhtml.NodeType;\r\n");
write("import org.hl7.fhir.utilities.xhtml.XhtmlNode;\r\n");
}
if (hd)
write("import java.math.*;\r\n");
if (hs)
write("import org.hl7.fhir.utilities.Utilities;\r\n");
if (he)
write("import org.hl7.fhir." + jid + ".model.Enumerations.*;\r\n");
}
if (hn) {
if (clss == JavaGenClass.Resource) {
write("import org.hl7.fhir.instance.model.api.IBaseBackboneElement;\r\n");
} else {
write("import org.hl7.fhir.instance.model.api.IBaseDatatypeElement;\r\n");
}
}
write("import org.hl7.fhir.exceptions.FHIRException;\r\n");
write("import org.hl7.fhir.instance.model.api.ICompositeType;\r\n");
if (clss == JavaGenClass.Resource) {
write("import ca.uhn.fhir.model.api.annotation.ResourceDef;\r\n");
write("import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;\r\n");
}
if (clss == JavaGenClass.Resource || "BackboneElement".equals(analysis.getName()) || "BackboneType".equals(analysis.getName())) {
write("import org.hl7.fhir.instance.model.api.IBaseBackboneElement;\r\n");
}
write("import ca.uhn.fhir.model.api.annotation.Child;\r\n");
write("import ca.uhn.fhir.model.api.annotation.ChildOrder;\r\n");
if (clss != JavaGenClass.Resource) {
write("import ca.uhn.fhir.model.api.annotation.DatatypeDef;\r\n");
}
write("import ca.uhn.fhir.model.api.annotation.Description;\r\n");
write("import ca.uhn.fhir.model.api.annotation.Block;\r\n");
write("\r\n");
if (config.getIni().hasProperty("imports", analysis.getName())) {
for (String imp : config.getIni().getStringProperty("imports", analysis.getName()).split("\\,")) {
write("import " + imp.replace("{{jid}}", jid) + ";\r\n");
}
}
jdoc("", replaceTitle(analysis.getName(), analysis.getStructure().getDescription()));
TypeInfo ti = analysis.getRootType();
boolean hasChildren = ti.getChildren().size() > 0;
String superName = analysis.getAncestor() == null ? null : analysis.getAncestor().getName();
if (VersionUtilities.isR4BVer(version) && !Utilities.noString(config.getIni().getStringProperty("R4B.CanonicalResources", analysis.getName()))) {
superName = "CanonicalResource";
}
String hierarchy = analysis.getAncestor() != null ? "extends " + superName : "";
if (clss == JavaGenClass.Resource) {
if (!analysis.isAbstract()) {
write("@ResourceDef(name=\"" + upFirst(analysis.getName()).replace("ListResource", "List") + "\", profile=\"http://hl7.org/fhir/StructureDefinition/" + upFirst(analysis.getName()) + "\")\r\n");
}
} else {
write("@DatatypeDef(name=\"" + upFirst(analysis.getName()) + "\")\r\n");
hierarchy = hierarchy + " implements ICompositeType";
}
if (config.getIni().hasProperty("hierarchy", analysis.getName())) {
String h = config.getIni().getStringProperty("hierarchy", analysis.getName());
if (analysis.getAncestor() != null) {
h = h.replace("{{super}}", superName);
}
hierarchy = h;
}
write("public " + (analysis.isAbstract() ? "abstract " : "") + "class " + analysis.getClassName() + " " + hierarchy.trim() + " {\r\n");
write("\r\n");
for (String s : sorted(analysis.getEnums().keySet())) {
EnumInfo e = analysis.getEnums().get(s);
generateEnum(e);
}
for (TypeInfo t : analysis.getTypeList()) {
generateType(analysis, t);
}
allfields = "";
int i = 0;
for (ElementDefinition e : ti.getChildren()) {
if (!analysis.isInterface()) {
generateField(analysis, ti, e, " ", i++);
}
}
write(" private static final long serialVersionUID = " + Long.toString(allfields.hashCode()) + "L;\r\n\r\n");
hashSum = hashSum + allfields.hashCode();
List<ElementDefinition> mandatory = new ArrayList<ElementDefinition>();
generateConstructor(analysis.getClassName(), mandatory, " ");
if (hasChildren) {
for (ElementDefinition e : ti.getChildren()) {
if (e.getMin() > 0)
mandatory.add(e);
}
if (mandatory.size() > 0)
generateConstructor(analysis.getClassName(), mandatory, " ");
generateTypeSpecificConstructors(analysis.getClassName());
for (ElementDefinition e : ti.getChildren()) {
if (analysis.isInterface()) {
generateAbstractAccessors(analysis, ti, e, " ");
} else {
generateAccessors(analysis, ti, e, " ", matchingInheritedElement(ti.getInheritedChildren(), e, analysis.getName()));
}
}
if (!analysis.isInterface() && ti.getInheritedChildren() != null) {
for (ElementDefinition e : filterInherited(ti.getInheritedChildren(), ti.getChildren())) {
generateUnimplementedAccessors(analysis, ti, e, " ");
}
}
generateChildrenRegister(analysis, ti, " ");
generatePropertyGetterId(analysis, ti, " ");
generatePropertySetterId(analysis, ti, " ");
generatePropertySetterName(analysis, ti, " ");
generatePropertyMaker(analysis, ti, " ");
generatePropertyTypeGetter(analysis, ti, " ");
generateChildAdder(analysis, ti, " ");
}
generateFhirType(analysis.getName());
// // check for mappings
// for (String map : root.getMappings().keySet()) {
// if ("http://hl7.org/fhir/workflow".equals(map)) {
// String namenn = root.getMapping(map);
// if (patterns.containsKey(namenn)) {
// generateImpl(namenn, patterns.get(namenn), upFirst(name), root, version, genDate);
// }
// }
// }
generateCopy(analysis, ti, false);
if (hasChildren) {
generateEquals(analysis, ti, false);
generateIsEmpty(analysis, ti, false);
}
if (clss == JavaGenClass.Resource && !analysis.isAbstract()) {
write(" @Override\r\n");
write(" public ResourceType getResourceType() {\r\n");
write(" return ResourceType." + analysis.getName() + ";\r\n");
write(" }\r\n");
write("\r\n");
} else if (analysis.isAbstract() && analysis.getAncestor() != null && Utilities.noString(superName)) {
write("\r\n");
write(" @Override\r\n");
write(" public String getIdBase() {\r\n");
write(" return getId();\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public void setIdBase(String value) {\r\n");
write(" setId(value);\r\n");
write(" }\r\n");
write(" public abstract ResourceType getResourceType();\r\n");
} else if (analysis.isAbstract() && analysis.getAncestor() != null && Utilities.noString(superName)) {
write(" @Override\r\n");
write(" public String getIdBase() {\r\n");
write(" return getId();\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public void setIdBase(String value) {\r\n");
write(" setId(value);\r\n");
write(" }\r\n");
}
// Write resource fields which can be used as constants in client code
// to refer to standard search params
Set<String> spcodes = new HashSet<>();
for (SearchParameter sp : analysis.getSearchParams()) {
String code = sp.getCode();
if (!spcodes.contains(code)) {
spcodes.add(code);
/*
* For composite codes we want to find the two param this is a composite
* of. We generate search parameter constants which reference the
* component parts of the composite.
*/
if (sp.getType() == SearchParamType.COMPOSITE) {
if (code.endsWith("-[x]")) {
// partialCode will have "value" in this example
String partialCode = code.substring(0, code.length() - 4);
partialCode = partialCode.substring(partialCode.lastIndexOf('-') + 1);
// rootCode will have "component-code"
String rootCode = code.substring(0, code.indexOf("-" + partialCode));
/*
* If the composite has the form "foo-bar[x]" we expand this to create
* a constant for each of the possible [x] values, so that client have
* static binding to the individual possibilities. AFAIK this is only
* used right now in Observation (e.g. for code-value-[x])
*/
for (SearchParameter nextCandidate : analysis.getSearchParams()) {
if (nextCandidate.getCode().startsWith(partialCode)) {
String nextCompositeCode = rootCode + "-" + nextCandidate.getCode();
String[] compositeOf = new String[] { rootCode, nextCandidate.getCode() };
writeSearchParameterField(analysis.getName(), clss, analysis.isAbstract(), sp, nextCompositeCode, compositeOf, analysis.getSearchParams(), analysis.getName());
}
}
} else {
SearchParameter comp0 = definitions.getSearchParams().get(sp.getComponent().get(0).getDefinition());
SearchParameter comp1 = definitions.getSearchParams().get(sp.getComponent().get(1).getDefinition());
if (comp0 != null && comp1 != null) {
String[] compositeOf = new String[] { comp0.getCode(), comp1.getCode() };
writeSearchParameterField(analysis.getName(), clss, analysis.isAbstract(), sp, sp.getCode(), compositeOf, analysis.getSearchParams(), analysis.getName());
}
}
} else if (code.contains("[x]")) {
/*
* We only know how to handle search parameters with [x] in the name
* where it's a composite, and the [x] comes last. Are there other possibilities?
*/
throw new Exception("Unable to generate constant for search parameter: " + code);
} else {
writeSearchParameterField(analysis.getName(), clss, analysis.isAbstract(), sp, code, null, analysis.getSearchParams(), analysis.getName());
}
}
}
if (VersionUtilities.isR4BVer(version)) {
String extras = config.getIni().getStringProperty("R4B.NullImplementation", analysis.getName());
if (!Utilities.noString(extras)) {
for (String n : extras.split("\\,")) {
String t = n.substring(n.indexOf(":") + 1);
n = n.substring(0, n.indexOf(":"));
if (n.endsWith("[]")) {
n = Utilities.capitalize(n.substring(0, n.length() - 2));
write(" @Override\r\n");
write(" public List<" + t + "> get" + n + "() {\r\n");
write(" return new ArrayList<>();\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public CanonicalResource set" + n + "(List<" + t + "> the" + n + ") {\r\n");
write(" return this;\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public boolean has" + n + "() {\r\n");
write(" return false;\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public " + t + " add" + n + "() {\r\n");
write(" return null;\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public CanonicalResource add" + n + "(" + t + " t) {\r\n");
write(" return null;\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public " + t + " get" + n + "FirstRep() {\r\n");
write(" return new " + t + "();\r\n");
write(" }\r\n");
write(" \r\n");
} else if (t.contains("|")) {
n = Utilities.capitalize(n);
String t1 = t.substring(0, t.indexOf("|"));
String t2 = t.substring(t.indexOf("|") + 1);
write(" @Override\r\n");
write(" public " + t1 + " get" + n + "() {\r\n");
if ("boolean".equals(t1)) {
write(" return false;\r\n");
} else {
write(" return new " + t1 + "();\r\n");
}
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public " + t2 + " get" + n + "Element() {\r\n");
write(" return new " + t2 + "();\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public CanonicalResource set" + n + "(" + t1 + " the" + n + ") {\r\n");
write(" return this;\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public CanonicalResource set" + n + "Element(" + t2 + " the" + n + ") {\r\n");
write(" return this;\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public boolean has" + n + "() {\r\n");
write(" return false;\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public boolean has" + n + "Element() {\r\n");
write(" return false;\r\n");
write(" }\r\n");
write(" \r\n");
write(" \r\n");
} else {
n = Utilities.capitalize(n);
write(" @Override\r\n");
write(" public " + t + " get" + n + "() {\r\n");
write(" return new " + t + "();\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public CanonicalResource set" + n + "(" + t + " the" + n + ") {\r\n");
write(" return this;\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public boolean has" + n + "() {\r\n");
write(" return false;\r\n");
write(" }\r\n");
write(" \r\n");
write(" @Override\r\n");
write(" public boolean has" + n + "Element() {\r\n");
write(" return false;\r\n");
write(" }\r\n");
write(" \r\n");
write(" \r\n");
}
}
}
}
if (config.getAdornments().containsKey(analysis.getClassName())) {
write("// Manual code (from Configuration.txt):\r\n");
write(config.getAdornments().get(analysis.getClassName()) + "\r\n");
write("// end addition\r\n");
}
write("\r\n");
write("}\r\n");
write("\r\n");
flush();
}
use of org.hl7.fhir.r4b.model.CanonicalResource in project org.hl7.fhir.core by hapifhir.
the class SimpleWorkerContext method loadFromFile.
public void loadFromFile(InputStream stream, String name, IContextResourceLoader loader, ILoadFilter filter) throws IOException, FHIRException {
Resource f;
try {
if (loader != null)
f = loader.loadBundle(stream, false);
else {
XmlParser xml = new XmlParser();
f = xml.parse(stream);
}
} catch (DataFormatException e1) {
throw new org.hl7.fhir.exceptions.FHIRFormatError(formatMessage(I18nConstants.ERROR_PARSING_, name, e1.getMessage()), e1);
} catch (Exception e1) {
throw new org.hl7.fhir.exceptions.FHIRFormatError(formatMessage(I18nConstants.ERROR_PARSING_, name, e1.getMessage()), e1);
}
if (f instanceof Bundle) {
Bundle bnd = (Bundle) f;
for (BundleEntryComponent e : bnd.getEntry()) {
if (e.getFullUrl() == null) {
logger.logDebugMessage(LogCategory.CONTEXT, "unidentified resource in " + name + " (no fullUrl)");
}
if (filter == null || filter.isOkToLoad(e.getResource())) {
String path = loader != null ? loader.getResourcePath(e.getResource()) : null;
if (path != null) {
e.getResource().setUserData("path", path);
}
cacheResource(e.getResource());
}
}
} else if (f instanceof CanonicalResource) {
if (filter == null || filter.isOkToLoad(f)) {
String path = loader != null ? loader.getResourcePath(f) : null;
if (path != null) {
f.setUserData("path", path);
}
cacheResource(f);
}
}
}
use of org.hl7.fhir.r4b.model.CanonicalResource in project org.hl7.fhir.core by hapifhir.
the class BaseWorkerContext method fetchResourceWithException.
@SuppressWarnings("unchecked")
public <T extends Resource> T fetchResourceWithException(String cls, String uri, CanonicalResource source) throws FHIRException {
if (uri == null) {
return null;
}
if ("StructureDefinition".equals(cls)) {
uri = ProfileUtilities.sdNs(uri, getOverrideVersionNs());
}
synchronized (lock) {
String version = null;
if (uri.contains("|")) {
version = uri.substring(uri.lastIndexOf("|") + 1);
uri = uri.substring(0, uri.lastIndexOf("|"));
}
if (uri.contains("#")) {
uri = uri.substring(0, uri.indexOf("#"));
}
if (cls == null || "Resource".equals(cls)) {
if (structures.has(uri)) {
return (T) structures.get(uri, version);
}
if (guides.has(uri)) {
return (T) guides.get(uri, version);
}
if (capstmts.has(uri)) {
return (T) capstmts.get(uri, version);
}
if (measures.has(uri)) {
return (T) measures.get(uri, version);
}
if (libraries.has(uri)) {
return (T) libraries.get(uri, version);
}
if (valueSets.has(uri)) {
return (T) valueSets.get(uri, version);
}
if (codeSystems.has(uri)) {
return (T) codeSystems.get(uri, version);
}
if (operations.has(uri)) {
return (T) operations.get(uri, version);
}
if (searchParameters.has(uri)) {
return (T) searchParameters.get(uri, version);
}
if (plans.has(uri)) {
return (T) plans.get(uri, version);
}
if (maps.has(uri)) {
return (T) maps.get(uri, version);
}
if (transforms.has(uri)) {
return (T) transforms.get(uri, version);
}
if (questionnaires.has(uri)) {
return (T) questionnaires.get(uri, version);
}
for (Map<String, ResourceProxy> rt : allResourcesById.values()) {
for (ResourceProxy r : rt.values()) {
if (uri.equals(r.getUrl())) {
return (T) r.getResource();
}
}
}
} else if ("ImplementationGuide".equals(cls)) {
return (T) guides.get(uri, version);
} else if ("CapabilityStatement".equals(cls)) {
return (T) capstmts.get(uri, version);
} else if ("Measure".equals(cls)) {
return (T) measures.get(uri, version);
} else if ("Library".equals(cls)) {
return (T) libraries.get(uri, version);
} else if ("StructureDefinition".equals(cls)) {
return (T) structures.get(uri, version);
} else if ("StructureMap".equals(cls)) {
return (T) transforms.get(uri, version);
} else if ("ValueSet".equals(cls)) {
return (T) valueSets.get(uri, version);
} else if ("CodeSystem".equals(cls)) {
return (T) codeSystems.get(uri, version);
} else if ("ConceptMap".equals(cls)) {
return (T) maps.get(uri, version);
} else if ("PlanDefinition".equals(cls)) {
return (T) plans.get(uri, version);
} else if ("OperationDefinition".equals(cls)) {
OperationDefinition od = operations.get(uri, version);
return (T) od;
} else if ("Questionnaire.class".equals(cls)) {
return (T) questionnaires.get(uri, version);
} else if ("SearchParameter.class".equals(cls)) {
SearchParameter res = searchParameters.get(uri, version);
return (T) res;
}
if ("CodeSystem".equals(cls) && codeSystems.has(uri)) {
return (T) codeSystems.get(uri, version);
}
if ("ValueSet".equals(cls) && valueSets.has(uri)) {
return (T) valueSets.get(uri, version);
}
if ("Questionnaire".equals(cls)) {
return (T) questionnaires.get(uri, version);
}
if (cls == null) {
if (uri.matches(Constants.URI_REGEX) && !uri.contains("ValueSet")) {
return null;
}
// it might be a special URL.
if (Utilities.isAbsoluteUrl(uri) || uri.startsWith("ValueSet/")) {
// findTxValueSet(uri);
Resource res = null;
if (res != null) {
return (T) res;
}
}
return null;
}
if (supportedCodeSystems.contains(uri)) {
return null;
}
throw new FHIRException(formatMessage(I18nConstants.NOT_DONE_YET_CANT_FETCH_, uri));
}
}
use of org.hl7.fhir.r4b.model.CanonicalResource in project org.hl7.fhir.core by hapifhir.
the class BaseWorkerContext method fetchResourceWithException.
@SuppressWarnings("unchecked")
public <T extends Resource> T fetchResourceWithException(String cls, String uri, CanonicalResource source) throws FHIRException {
if (uri == null) {
return null;
}
if ("StructureDefinition".equals(cls)) {
uri = ProfileUtilities.sdNs(uri, getOverrideVersionNs());
}
synchronized (lock) {
String version = null;
if (uri.contains("|")) {
version = uri.substring(uri.lastIndexOf("|") + 1);
uri = uri.substring(0, uri.lastIndexOf("|"));
}
if (uri.contains("#")) {
uri = uri.substring(0, uri.indexOf("#"));
}
if (cls == null || "Resource".equals(cls)) {
if (structures.has(uri)) {
return (T) structures.get(uri, version);
}
if (guides.has(uri)) {
return (T) guides.get(uri, version);
}
if (capstmts.has(uri)) {
return (T) capstmts.get(uri, version);
}
if (measures.has(uri)) {
return (T) measures.get(uri, version);
}
if (libraries.has(uri)) {
return (T) libraries.get(uri, version);
}
if (valueSets.has(uri)) {
return (T) valueSets.get(uri, version);
}
if (codeSystems.has(uri)) {
return (T) codeSystems.get(uri, version);
}
if (operations.has(uri)) {
return (T) operations.get(uri, version);
}
if (searchParameters.has(uri)) {
return (T) searchParameters.get(uri, version);
}
if (plans.has(uri)) {
return (T) plans.get(uri, version);
}
if (maps.has(uri)) {
return (T) maps.get(uri, version);
}
if (transforms.has(uri)) {
return (T) transforms.get(uri, version);
}
if (questionnaires.has(uri)) {
return (T) questionnaires.get(uri, version);
}
for (Map<String, ResourceProxy> rt : allResourcesById.values()) {
for (ResourceProxy r : rt.values()) {
if (uri.equals(r.getUrl())) {
return (T) r.getResource();
}
}
}
} else if ("ImplementationGuide".equals(cls)) {
return (T) guides.get(uri, version);
} else if ("CapabilityStatement".equals(cls)) {
return (T) capstmts.get(uri, version);
} else if ("Measure".equals(cls)) {
return (T) measures.get(uri, version);
} else if ("Library".equals(cls)) {
return (T) libraries.get(uri, version);
} else if ("StructureDefinition".equals(cls)) {
return (T) structures.get(uri, version);
} else if ("StructureMap".equals(cls)) {
return (T) transforms.get(uri, version);
} else if ("ValueSet".equals(cls)) {
return (T) valueSets.get(uri, version);
} else if ("CodeSystem".equals(cls)) {
return (T) codeSystems.get(uri, version);
} else if ("ConceptMap".equals(cls)) {
return (T) maps.get(uri, version);
} else if ("PlanDefinition".equals(cls)) {
return (T) plans.get(uri, version);
} else if ("OperationDefinition".equals(cls)) {
OperationDefinition od = operations.get(uri, version);
return (T) od;
} else if ("Questionnaire.class".equals(cls)) {
return (T) questionnaires.get(uri, version);
} else if ("SearchParameter.class".equals(cls)) {
SearchParameter res = searchParameters.get(uri, version);
return (T) res;
}
if ("CodeSystem".equals(cls) && codeSystems.has(uri)) {
return (T) codeSystems.get(uri, version);
}
if ("ValueSet".equals(cls) && valueSets.has(uri)) {
return (T) valueSets.get(uri, version);
}
if ("Questionnaire".equals(cls)) {
return (T) questionnaires.get(uri, version);
}
if (cls == null) {
if (uri.matches(Constants.URI_REGEX) && !uri.contains("ValueSet")) {
return null;
}
// it might be a special URL.
if (Utilities.isAbsoluteUrl(uri) || uri.startsWith("ValueSet/")) {
// findTxValueSet(uri);
Resource res = null;
if (res != null) {
return (T) res;
}
}
return null;
}
if (supportedCodeSystems.contains(uri)) {
return null;
}
throw new FHIRException(formatMessage(I18nConstants.NOT_DONE_YET_CANT_FETCH_, uri));
}
}
Aggregations