Class FhirContext
Important usage notes:
-
Thread safety: This class is thread safe and may be shared between multiple processing
threads, except for the
registerCustomType(java.lang.Class<? extends org.hl7.fhir.instance.model.api.IBase>)
andregisterCustomTypes(java.util.Collection<java.lang.Class<? extends org.hl7.fhir.instance.model.api.IBase>>)
methods. - Performance: This class is expensive to create, as it scans every resource class it needs to parse or encode to build up an internal model of those classes. For that reason, you should try to create one FhirContext instance which remains for the life of your application and reuse that instance. Note that it will not cause problems to create multiple instances (ie. resources originating from one FhirContext may be passed to parsers originating from another) but you will incur a performance penalty if a new FhirContext is created for every message you parse/encode.
-
Constructor Summary
ConstructorDescriptionDeprecated.It is recommended that you use one of the static initializer methods instead of this method, e.g.FhirContext
(FhirVersionEnum theVersion) In most cases it is recommended that you use one of the static initializer methods instead of this method, e.g.FhirContext
(Class<?>... theResourceTypes) Deprecated.It is recommended that you use one of the static initializer methods instead of this method, e.g.FhirContext
(Class<? extends IBaseResource> theResourceType) Deprecated.It is recommended that you use one of the static initializer methods instead of this method, e.g.FhirContext
(Collection<Class<? extends IBaseResource>> theResourceTypes) Deprecated.It is recommended that you use one of the static initializer methods instead of this method, e.g. -
Method Summary
Modifier and TypeMethodDescriptionstatic FhirContext
forCached
(FhirVersionEnum theFhirVersionEnum) Returns a statically cached FhirContext instance for the given version, creating one if none exists in the cache.static FhirContext
forDstu2()
Creates and returns a new FhirContext with versionDSTU2
static FhirContext
Creates and returns a new FhirContext with versionDSTU2
(2016 May DSTU3 Snapshot)static FhirContext
static FhirContext
Creates and returns a new FhirContext with versionDSTU2
(using the Reference Implementation Structures)static FhirContext
static FhirContext
forDstu3()
Creates and returns a new FhirContext with versionDSTU3
static FhirContext
static FhirContext
forR4()
Creates and returns a new FhirContext with versionR4
static FhirContext
forR4B()
Creates and returns a new FhirContext with versionR4B
static FhirContext
static FhirContext
static FhirContext
forR5()
Creates and returns a new FhirContext with versionR5
static FhirContext
static FhirContext
forVersion
(FhirVersionEnum theFhirVersionEnum) An uncached version of forCached()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.Class
<? extends IBaseResource> getDefaultTypeForProfile
(String theProfile) Returns the default resource type for the given profilegetElementDefinition
(Class<? extends IBase> theElementType) Returns the scanned runtime model for the given type.getElementDefinition
(String theElementName) Returns the scanned runtime model for the given type.Returns all element definitions (resources, datatypes, etc.)This feature is not yet in its final state and should be considered an internal part of HAPI for now - use with cautionReturns the parser options object which will be used to supply default options to newly created parsersGet the configured performance optionsgetPrimitiveBoolean
(Boolean theValue) Deprecated, for removal: This API element is subject to removal in a future version.getResourceDefinition
(FhirVersionEnum theVersion, String theResourceName) getResourceDefinition
(Class<? extends IBaseResource> theResourceType) Returns the scanned runtime model for the given type.getResourceDefinition
(String theResourceName) getResourceDefinition
(IBaseResource theResource) Returns the scanned runtime model for the given type.getResourceDefinitionById
(String theId) Returns the scanned runtime model for the given type.Returns the scanned runtime models.getResourceType
(Class<? extends IBaseResource> theResourceType) Returns the name of a given resource class.getResourceType
(String theResourceName) getResourceType
(IBaseResource theResource) Returns the name of the scanned runtime model for the given type.Returns an unmodifiable set containing all resource names known to this contextGet the restful client factory.Returns the validation support module configured for this context, creating a default implementation if no module has been passed in via thesetValidationSupport(IValidationSupport)
methodboolean
Returnstrue
if any default types for specific profiles have been defined within this context.boolean
boolean
boolean
boolean
Creates a new FhirPath engine which can be used to evaluate path expressions over FHIR resources.Deprecated.Deprecated in HAPI FHIR 5.0.0.Create and return a new JSON parser.Create and return a new NDJSON parser.newPrimitiveBoolean
(Boolean theValue) newPrimitiveString
(String theValue) Create and return a new RDF parser.<T extends IRestfulClient>
TnewRestfulClient
(Class<T> theClientType, String theServerBase) Instantiates a new client instance.newRestfulGenericClient
(String theServerBase) Instantiates a new generic client.Create a new validator instance.Create and return a new XML parser.void
registerCustomType
(Class<? extends IBase> theType) This method may be used to register a custom resource or datatype.void
registerCustomTypes
(Collection<Class<? extends IBase>> theTypes) This method may be used to register a custom resource or datatype.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.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.setFhirValidatorFactory
(IFhirValidatorFactory theFhirValidatorFactory) Set the factory method used to create FhirValidator instancesvoid
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 cautionsetNarrativeGenerator
(INarrativeGenerator theNarrativeGenerator) setParserErrorHandler
(IParserErrorHandler theParserErrorHandler) Sets a parser error handler to use by default on all parsersvoid
setParserOptions
(ParserOptions theParserOptions) Sets the parser options object which will be used to supply default options to newly created parsersvoid
setPerformanceOptions
(PerformanceOptionsEnum... thePerformanceOptions) Sets the configured performance optionsvoid
setPerformanceOptions
(Collection<PerformanceOptionsEnum> theOptions) Sets the configured performance optionsvoid
setRestfulClientFactory
(IRestfulClientFactory theRestfulClientFactory) Set the restful client factoryvoid
setValidationSupport
(IValidationSupport theValidationSupport) Sets the validation support module to use for this context.toString()
-
Constructor Details
-
FhirContext
Deprecated.It is recommended that you use one of the static initializer methods instead of this method, e.g.forDstu2()
orforDstu3()
orforR4()
-
FhirContext
Deprecated.It is recommended that you use one of the static initializer methods instead of this method, e.g.forDstu2()
orforDstu3()
orforR4()
-
FhirContext
Deprecated.It is recommended that you use one of the static initializer methods instead of this method, e.g.forDstu2()
orforDstu3()
orforR4()
-
FhirContext
Deprecated.It is recommended that you use one of the static initializer methods instead of this method, e.g.forDstu2()
orforDstu3()
orforR4()
-
FhirContext
In most cases it is recommended that you use one of the static initializer methods instead of this method, e.g.forDstu2()
orforDstu3()
orforR4()
, but this method can also be used if you wish to supply the version programmatically.
-
-
Method Details
-
forDstu2Cached
- Since:
- 5.6.0
-
forDstu2Hl7OrgCached
- Since:
- 6.2.0
-
forDstu3Cached
- Since:
- 5.5.0
-
forR4Cached
- Since:
- 5.5.0
-
forR4BCached
- Since:
- 6.1.0
-
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 isAddProfileTagEnum.ONLY_FOR_CUSTOM
.- See Also:
-
setAddProfileTagWhenEncoding
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 isAddProfileTagEnum.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 benull
)
-
getDefaultTypeForProfile
Returns the default resource type for the given profile- See Also:
-
getElementDefinition
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
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
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
-
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
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 benull
-
getPerformanceOptions
Get the configured performance options -
setPerformanceOptions
Sets the configured performance options- See Also:
-
setPerformanceOptions
Sets the configured performance options- See Also:
-
getResourceDefinition
public RuntimeResourceDefinition getResourceDefinition(Class<? extends IBaseResource> theResourceType) 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
public RuntimeResourceDefinition getResourceDefinition(FhirVersionEnum theVersion, String theResourceName) -
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
Returns the name of a given resource class. -
getResourceType
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
- Throws:
DataFormatException
-
getResourceDefinition
public RuntimeResourceDefinition getResourceDefinition(String theResourceName) throws DataFormatException - 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
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 thesetValidationSupport(IValidationSupport)
method- See Also:
-
setValidationSupport
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
Returnstrue
if any default types for specific profiles have been defined within this context.- See Also:
-
isFormatXmlSupported
- Returns:
- Returns
true
if the XML serialization format is supported, based on the available libraries on the classpath. - Since:
- 5.4.0
-
isFormatJsonSupported
- Returns:
- Returns
true
if the JSON serialization format is supported, based on the available libraries on the classpath. - Since:
- 5.4.0
-
isFormatNDJsonSupported
- Returns:
- Returns
true
if the NDJSON serialization format is supported, based on the available libraries on the classpath. - Since:
- 5.6.0
-
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. UsenewFhirPath()
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 thecontext 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 callingnewFluentPath()
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
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 extendIRestfulClient
(or commonly its sub-interfaceIBasicClient
). 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 instantiatedtheServerBase
- 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 withnon-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
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 benull
)
-
registerCustomTypes
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 benull
or contain null elements in the collection)
-
setDefaultTypeForProfile
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 ofMyPatient.class
, if the parser is parsing a resource and finds that it declares that it conforms to that profile, theMyPatient
type will be used unless otherwise specified.- Parameters:
theProfile
- The profile string, e.g."http://example.com/some_patient_profile"
. Must not benull
or empty.theClass
- The resource type, ornull
to clear any existing type
-
setParserErrorHandler
Sets a parser error handler to use by default on all parsers- Parameters:
theParserErrorHandler
- The error handler
-
setFhirValidatorFactory
Set the factory method used to create FhirValidator instances- Parameters:
theFhirValidatorFactory
-- Returns:
- this
- Since:
- 5.6.0
-
toString
-
getPrimitiveBoolean
@Deprecated(since="6.6.0", forRemoval=true) public IPrimitiveType<Boolean> getPrimitiveBoolean(Boolean theValue) Deprecated, for removal: This API element is subject to removal in a future version. -
newPrimitiveBoolean
-
newPrimitiveString
-
forDstu2
Creates and returns a new FhirContext with versionDSTU2
-
forDstu2Hl7Org
Creates and returns a new FhirContext with versionDSTU2
(using the Reference Implementation Structures) -
forDstu2_1
Creates and returns a new FhirContext with versionDSTU2
(2016 May DSTU3 Snapshot) -
forDstu3
Creates and returns a new FhirContext with versionDSTU3
- Since:
- 1.4
-
forR4
Creates and returns a new FhirContext with versionR4
- Since:
- 3.0.0
-
forR4B
Creates and returns a new FhirContext with versionR4B
- Since:
- 6.2.0
-
forR5
Creates and returns a new FhirContext with versionR5
- Since:
- 4.0.0
-
forCached
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
An uncached version of forCached()- Returns:
- a new FhirContext for theFhirVersionEnum
-