Class FhirContext

java.lang.Object
ca.uhn.fhir.context.FhirContext

public class FhirContext extends Object
The FHIR context is the central starting point for the use of the HAPI FHIR API. It should be created once, and then used as a factory for various other types of objects (parsers, clients, etc.).

Important usage notes:

  • Constructor Details

  • Method Details

    • forDstu2Cached

      public static FhirContext forDstu2Cached()
      Since:
      5.6.0
    • forDstu2Hl7OrgCached

      Since:
      6.2.0
    • forDstu3Cached

      public static FhirContext forDstu3Cached()
      Since:
      5.5.0
    • forR4Cached

      public static FhirContext forR4Cached()
      Since:
      5.5.0
    • forR4BCached

      public static FhirContext forR4BCached()
      Since:
      6.1.0
    • forR5Cached

      public static FhirContext forR5Cached()
      Since:
      5.5.0
    • getAddProfileTagWhenEncoding

      When encoding resources, this setting configures the parser to include an entry in the resource's metadata section which indicates which profile(s) the resource claims to conform to. The default is AddProfileTagEnum.ONLY_FOR_CUSTOM.
      See Also:
    • setAddProfileTagWhenEncoding

      public void setAddProfileTagWhenEncoding(AddProfileTagEnum theAddProfileTagWhenEncoding)
      When encoding resources, this setting configures the parser to include an entry in the resource's metadata section which indicates which profile(s) the resource claims to conform to. The default is AddProfileTagEnum.ONLY_FOR_CUSTOM.

      This feature is intended for situations where custom resource types are being used, avoiding the need to manually add profile declarations for these custom types.

      See Profiling and Extensions for more information on using custom types.

      Note that this feature automatically adds the profile, but leaves any profile tags which have been manually added in place as well.

      Parameters:
      theAddProfileTagWhenEncoding - The add profile mode (must not be null)
    • getDefaultTypeForProfile

      public Class<? extends IBaseResource> getDefaultTypeForProfile(String theProfile)
      Returns the default resource type for the given profile
      See Also:
    • getElementDefinition

      public BaseRuntimeElementDefinition<?> getElementDefinition(Class<? extends IBase> theElementType)
      Returns the scanned runtime model for the given type. This is an advanced feature which is generally only needed for extending the core library.
    • getElementDefinition

      @Nullable public BaseRuntimeElementDefinition<?> getElementDefinition(String theElementName)
      Returns the scanned runtime model for the given type. This is an advanced feature which is generally only needed for extending the core library.

      Note that this method is case insensitive!

    • getElementDefinitions

      Returns all element definitions (resources, datatypes, etc.)
    • getLocalizer

      This feature is not yet in its final state and should be considered an internal part of HAPI for now - use with caution
    • setLocalizer

      public void setLocalizer(HapiLocalizer theMessages)
      This feature is not yet in its final state and should be considered an internal part of HAPI for now - use with caution
    • getNarrativeGenerator

    • setNarrativeGenerator

      public FhirContext setNarrativeGenerator(INarrativeGenerator theNarrativeGenerator)
    • getParserOptions

      Returns the parser options object which will be used to supply default options to newly created parsers
      Returns:
      The parser options - Will not return null
    • setParserOptions

      public void setParserOptions(ParserOptions theParserOptions)
      Sets the parser options object which will be used to supply default options to newly created parsers
      Parameters:
      theParserOptions - The parser options object - Must not be null
    • getPerformanceOptions

      Get the configured performance options
    • setPerformanceOptions

      Sets the configured performance options
      See Also:
    • setPerformanceOptions

      public void setPerformanceOptions(PerformanceOptionsEnum... thePerformanceOptions)
      Sets the configured performance options
      See Also:
    • getResourceDefinition

      Returns the scanned runtime model for the given type. This is an advanced feature which is generally only needed for extending the core library.
    • getResourceDefinition

    • getResourceDefinition

      Returns the scanned runtime model for the given type. This is an advanced feature which is generally only needed for extending the core library.
    • getResourceType

      public String getResourceType(Class<? extends IBaseResource> theResourceType)
      Returns the name of a given resource class.
    • getResourceType

      public String getResourceType(IBaseResource theResource)
      Returns the name of the scanned runtime model for the given type. This is an advanced feature which is generally only needed for extending the core library.
    • getResourceType

      public String getResourceType(String theResourceName) throws DataFormatException
      Throws:
      DataFormatException
    • getResourceDefinition

      Throws:
      DataFormatException
    • getResourceDefinitionById

      Returns the scanned runtime model for the given type. This is an advanced feature which is generally only needed for extending the core library.
    • getResourceDefinitionsWithExplicitId

      Returns the scanned runtime models. This is an advanced feature which is generally only needed for extending the core library.
    • getResourceTypes

      Returns an unmodifiable set containing all resource names known to this context
      Since:
      5.1.0
    • getRestfulClientFactory

      Get the restful client factory. If no factory has been set, this will be initialized with a new ApacheRestfulClientFactory.
      Returns:
      the factory used to create the restful clients
    • setRestfulClientFactory

      public void setRestfulClientFactory(IRestfulClientFactory theRestfulClientFactory)
      Set the restful client factory
      Parameters:
      theRestfulClientFactory - The new client factory (must not be null)
    • getRuntimeChildUndeclaredExtensionDefinition

    • getValidationSupport

      Returns the validation support module configured for this context, creating a default implementation if no module has been passed in via the setValidationSupport(IValidationSupport) method
      See Also:
    • setValidationSupport

      public void setValidationSupport(IValidationSupport theValidationSupport)
      Sets the validation support module to use for this context. The validation support module is used to supply underlying infrastructure such as conformance resources (StructureDefinition, ValueSet, etc) as well as to provide terminology services to modules such as the validator and FluentPath executor
    • getVersion

    • hasDefaultTypeForProfile

      public boolean hasDefaultTypeForProfile()
      Returns true if any default types for specific profiles have been defined within this context.
      See Also:
    • isFormatXmlSupported

      public boolean isFormatXmlSupported()
      Returns:
      Returns true if the XML serialization format is supported, based on the available libraries on the classpath.
      Since:
      5.4.0
    • isFormatJsonSupported

      public boolean isFormatJsonSupported()
      Returns:
      Returns true if the JSON serialization format is supported, based on the available libraries on the classpath.
      Since:
      5.4.0
    • isFormatNDJsonSupported

      public boolean isFormatNDJsonSupported()
      Returns:
      Returns true if the NDJSON serialization format is supported, based on the available libraries on the classpath.
      Since:
      5.6.0
    • isFormatRdfSupported

      public boolean isFormatRdfSupported()
      Returns:
      Returns true if the RDF serialization format is supported, based on the available libraries on the classpath.
      Since:
      5.4.0
    • newBundleFactory

    • newFluentPath

      Deprecated.
      Deprecated in HAPI FHIR 5.0.0. Use newFhirPath() instead.
      Since:
      2.2
    • newFhirPath

      Creates a new FhirPath engine which can be used to evaluate path expressions over FHIR resources. Note that this engine will use the context validation support module which is configured on the context at the time this method is called.

      In other words, you may wish to call setValidationSupport(IValidationSupport) before calling newFluentPath()

      Note that this feature was added for FHIR DSTU3 and is not available for contexts configured to use an older version of FHIR. Calling this method on a context for a previous version of fhir will result in an UnsupportedOperationException

      Since:
      5.0.0
    • newJsonParser

      Create and return a new JSON parser.

      Thread safety: Parsers are not guaranteed to be thread safe. Create a new parser instance for every thread or every message being parsed/encoded.

      Performance Note: This method is cheap to call, and may be called once for every message being processed without incurring any performance penalty

    • newNDJsonParser

      Create and return a new NDJSON parser.

      Thread safety: Parsers are not guaranteed to be thread safe. Create a new parser instance for every thread or every message being parsed/encoded.

      Performance Note: This method is cheap to call, and may be called once for every message being processed without incurring any performance penalty

      The NDJsonParser provided here is expected to translate between legal NDJson and FHIR Bundles. In particular, it is able to encode the resources in a FHIR Bundle to NDJson, as well as decode NDJson into a FHIR "collection"-type Bundle populated with the resources described in the NDJson. It will throw an exception in the event where it is asked to encode to anything other than a FHIR Bundle or where it is asked to decode into anything other than a FHIR Bundle.

    • newRDFParser

      Create and return a new RDF parser.

      Thread safety: Parsers are not guaranteed to be thread safe. Create a new parser instance for every thread or every message being parsed/encoded.

      Performance Note: This method is cheap to call, and may be called once for every message being processed without incurring any performance penalty

    • newRestfulClient

      public <T extends IRestfulClient> T newRestfulClient(Class<T> theClientType, String theServerBase)
      Instantiates a new client instance. This method requires an interface which is defined specifically for your use cases to contain methods for each of the RESTful operations you wish to implement (e.g. "read ImagingStudy", "search Patient by identifier", etc.). This interface must extend IRestfulClient (or commonly its sub-interface IBasicClient). See the RESTful Client documentation for more information on how to define this interface.

      Performance Note: This method is cheap to call, and may be called once for every operation invocation without incurring any performance penalty

      Parameters:
      theClientType - The client type, which is an interface type to be instantiated
      theServerBase - The URL of the base for the restful FHIR server to connect to
      Returns:
      A newly created client
      Throws:
      ConfigurationException - If the interface type is not an interface
    • newRestfulGenericClient

      Instantiates a new generic client. A generic client is able to perform any of the FHIR RESTful operations against a compliant server, but does not have methods defining the specific functionality required (as is the case with non-generic clients).

      Performance Note: This method performs an additional GET request to /metadata before the desired request is performed.

      Parameters:
      theServerBase - The URL of the base for the restful FHIR server to connect to
    • newTerser

    • newValidator

      Create a new validator instance.

      Note on thread safety: Validators are thread safe, you may use a single validator in multiple threads. (This is in contrast to parsers)

    • newViewGenerator

    • newXmlParser

      Create and return a new XML parser.

      Thread safety: Parsers are not guaranteed to be thread safe. Create a new parser instance for every thread or every message being parsed/encoded.

      Performance Note: This method is cheap to call, and may be called once for every message being processed without incurring any performance penalty

    • registerCustomType

      public void registerCustomType(Class<? extends IBase> theType)
      This method may be used to register a custom resource or datatype. Note that by using custom types, you are creating a system that will not interoperate with other systems that do not know about your custom type. There are valid reasons however for wanting to create custom types and this method can be used to enable them.

      THREAD SAFETY WARNING: This method is not thread safe. It should be called before any threads are able to call any methods on this context.

      Parameters:
      theType - The custom type to add (must not be null)
    • registerCustomTypes

      public void registerCustomTypes(Collection<Class<? extends IBase>> theTypes)
      This method may be used to register a custom resource or datatype. Note that by using custom types, you are creating a system that will not interoperate with other systems that do not know about your custom type. There are valid reasons however for wanting to create custom types and this method can be used to enable them.

      THREAD SAFETY WARNING: This method is not thread safe. It should be called before any threads are able to call any methods on this context.

      Parameters:
      theTypes - The custom types to add (must not be null or contain null elements in the collection)
    • setDefaultTypeForProfile

      public void setDefaultTypeForProfile(String theProfile, Class<? extends IBaseResource> theClass)
      Sets the default type which will be used when parsing a resource that is found to be of the given profile.

      For example, this method is invoked with the profile string of "http://example.com/some_patient_profile" and the type of MyPatient.class, if the parser is parsing a resource and finds that it declares that it conforms to that profile, the MyPatient type will be used unless otherwise specified.

      Parameters:
      theProfile - The profile string, e.g. "http://example.com/some_patient_profile". Must not be null or empty.
      theClass - The resource type, or null to clear any existing type
    • setParserErrorHandler

      public FhirContext setParserErrorHandler(IParserErrorHandler theParserErrorHandler)
      Sets a parser error handler to use by default on all parsers
      Parameters:
      theParserErrorHandler - The error handler
    • setFhirValidatorFactory

      public FhirContext setFhirValidatorFactory(IFhirValidatorFactory theFhirValidatorFactory)
      Set the factory method used to create FhirValidator instances
      Parameters:
      theFhirValidatorFactory -
      Returns:
      this
      Since:
      5.6.0
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getPrimitiveBoolean

      Deprecated, for removal: This API element is subject to removal in a future version.
    • newPrimitiveBoolean

    • newPrimitiveString

    • forDstu2

      public static FhirContext forDstu2()
      Creates and returns a new FhirContext with version DSTU2
    • forDstu2Hl7Org

      public static FhirContext forDstu2Hl7Org()
      Creates and returns a new FhirContext with version DSTU2 (using the Reference Implementation Structures)
    • forDstu2_1

      public static FhirContext forDstu2_1()
      Creates and returns a new FhirContext with version DSTU2 (2016 May DSTU3 Snapshot)
    • forDstu3

      public static FhirContext forDstu3()
      Creates and returns a new FhirContext with version DSTU3
      Since:
      1.4
    • forR4

      public static FhirContext forR4()
      Creates and returns a new FhirContext with version R4
      Since:
      3.0.0
    • forR4B

      public static FhirContext forR4B()
      Creates and returns a new FhirContext with version R4B
      Since:
      6.2.0
    • forR5

      public static FhirContext forR5()
      Creates and returns a new FhirContext with version R5
      Since:
      4.0.0
    • forCached

      public static FhirContext forCached(FhirVersionEnum theFhirVersionEnum)
      Returns a statically cached FhirContext instance for the given version, creating one if none exists in the cache. One FhirContext will be kept in the cache for each FHIR version that is requested (by calling this method for that version), and the cache will never be expired.
      Since:
      5.1.0
    • forVersion

      public static FhirContext forVersion(FhirVersionEnum theFhirVersionEnum)
      An uncached version of forCached()
      Returns:
      a new FhirContext for theFhirVersionEnum