Class 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:

    • Method Detail

      • 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)
      • getLocalizer

        public HapiLocalizer 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
      • getParserOptions

        public ParserOptions 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
      • 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.
      • getResourceTypes

        public Set<StringgetResourceTypes()
        Returns an unmodifiable set containing all resource names known to this context
        Since:
        5.1.0
      • getRestfulClientFactory

        public IRestfulClientFactory 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
      • 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
      • newJsonParser

        public IParser 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

      • newRDFParser

        @Deprecated
        public IParser newRDFParser()
        Deprecated.
        THIS FEATURE IS NOT YET COMPLETE
        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

        public IGenericClient newRestfulGenericClient​(String theServerBase)
        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 is cheap to call, and may be called once for every operation invocation without incurring any performance penalty

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

        public FhirValidator 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)

      • newXmlParser

        public IParser 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 void setParserErrorHandler​(IParserErrorHandler theParserErrorHandler)
        Sets a parser error handler to use by default on all parsers
        Parameters:
        theParserErrorHandler - The error handler
      • 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)
      • forR4

        public static FhirContext forR4()
        Creates and returns a new FhirContext with version R4
        Since:
        3.0.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