@Override public boolean supportsSystem(String system) throws TerminologyServiceException { if (codeSystems.containsKey(system)) return true; else if (nonSupportedCodeSystems.contains(system)) return false; else if (system.startsWith("http://example.org") || system.startsWith("http://acme.com") || system.startsWith("http://hl7.org/fhir/valueset-") || system.startsWith("urn:oid:")) return false; else { if (noTerminologyServer) return false; if (bndCodeSystems == null) { try { log("Terminology server: Check for supported code systems for " + system); bndCodeSystems = txServer.fetchFeed( txServer.getAddress() + "/CodeSystem?content=not-present&_summary=true&_count=1000"); } catch (Exception e) { if (canRunWithoutTerminology) { noTerminologyServer = true; log("==============!! Running without terminology server !!=============="); return false; } else throw new TerminologyServiceException(e); } } if (bndCodeSystems != null) { for (BundleEntryComponent be : bndCodeSystems.getEntry()) { CodeSystem cs = (CodeSystem) be.getResource(); if (!codeSystems.containsKey(cs.getUrl())) { codeSystems.put(cs.getUrl(), null); } } } if (codeSystems.containsKey(system)) return true; } nonSupportedCodeSystems.add(system); return false; }