[[fhir-component]]
= FHIR Component
:page-source: components/camel-fhir/camel-fhir-component/src/main/docs/fhir-component.adoc

*Available as of Camel version 2.23*

The FHIR component integrates with the
http://hapifhir.io/[HAPI-FHIR] library which is an open-source implementation of the
http://hl7.org/implement/standards/fhir/[FHIR] (Fast Healthcare Interoperability Resources) specification in Java.

Maven users will need to add the following dependency to their pom.xml
for this component:


[source,xml]
----
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-fhir</artifactId>
    <version>${camel-version}</version>
</dependency>
----

== URI Format

The FHIR Component uses the following URI format:

[source,text]
----
fhir://endpoint-prefix/endpoint?[options]
----

Endpoint prefix can be one of:

* capabilities
* create
* delete
* history
* load-page
* meta
* operation
* patch
* read
* search
* transaction
* update
* validate


// component options: START
The FHIR component supports 2 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *configuration* (common) | To use the shared configuration |  | FhirConfiguration
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END


// endpoint options: START
The FHIR endpoint is configured using URI syntax:

----
fhir:apiName/methodName
----

with the following path and query parameters:

=== Path Parameters (2 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *apiName* | *Required* What kind of operation to perform |  | FhirApiName
| *methodName* | *Required* What sub operation to use for the selected operation |  | String
|===


=== Query Parameters (46 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *encoding* (common) | Encoding to use for all request |  | String
| *fhirVersion* (common) | The FHIR Version to use | DSTU3 | String
| *inBody* (common) | Sets the name of a parameter to be passed in the exchange In Body |  | String
| *log* (common) | Will log every requests and responses | false | boolean
| *prettyPrint* (common) | Pretty print all request | false | boolean
| *serverUrl* (common) | The FHIR server base URL |  | String
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPollStrategy
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *client* (advanced) | To use the custom client |  | IGenericClient
| *clientFactory* (advanced) | To use the custom client factory |  | IRestfulClientFactory
| *compress* (advanced) | Compresses outgoing (POST/PUT) contents to the GZIP format | false | boolean
| *connectionTimeout* (advanced) | How long to try and establish the initial TCP connection (in ms) | 10000 | Integer
| *deferModelScanning* (advanced) | When this option is set, model classes will not be scanned for children until the child list for the given type is actually accessed. | false | boolean
| *fhirContext* (advanced) | FhirContext is an expensive object to create. To avoid creating multiple instances, it can be set directly. |  | FhirContext
| *forceConformanceCheck* (advanced) | Force conformance check | false | boolean
| *sessionCookie* (advanced) | HTTP session cookie to add to every request |  | String
| *socketTimeout* (advanced) | How long to block for individual read/write operations (in ms) | 10000 | Integer
| *summary* (advanced) | Request that the server modify the response using the _summary param |  | String
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
| *validationMode* (advanced) | When should Camel validate the FHIR Server's conformance statement | ONCE | String
| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
| *delay* (scheduler) | Milliseconds before the next poll. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 500 | long
| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
| *initialDelay* (scheduler) | Milliseconds before the first poll starts. You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour). | 1000 | long
| *repeatCount* (scheduler) | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0 | long
| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. | TRACE | LoggingLevel
| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutorService
| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component | none | String
| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. | MILLISECONDS | TimeUnit
| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
| *proxyHost* (proxy) | The proxy host |  | String
| *proxyPassword* (proxy) | The proxy password |  | String
| *proxyPort* (proxy) | The proxy port |  | Integer
| *proxyUser* (proxy) | The proxy username |  | String
| *accessToken* (security) | OAuth access token |  | String
| *password* (security) | Username to use for basic authentication |  | String
| *username* (security) | Username to use for basic authentication |  | String
|===
// endpoint options: END
// spring-boot-auto-configure options: START
== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-fhir-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 27 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.fhir.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.fhir.configuration.access-token* | What sub operation to use for the selected operation |  | String
| *camel.component.fhir.configuration.api-name* | What kind of operation to perform |  | FhirApiName
| *camel.component.fhir.configuration.client* | What sub operation to use for the selected operation |  | IGenericClient
| *camel.component.fhir.configuration.client-factory* | What sub operation to use for the selected operation |  | IRestfulClientFactory
| *camel.component.fhir.configuration.compress* | What sub operation to use for the selected operation | false | Boolean
| *camel.component.fhir.configuration.connection-timeout* | What sub operation to use for the selected operation | 10000 | Integer
| *camel.component.fhir.configuration.defer-model-scanning* | What sub operation to use for the selected operation | false | Boolean
| *camel.component.fhir.configuration.encoding* | Component configuration for FHIR component. |  | String
| *camel.component.fhir.configuration.fhir-context* | What sub operation to use for the selected operation |  | FhirContext
| *camel.component.fhir.configuration.fhir-version* | Component configuration for FHIR component. | DSTU3 | String
| *camel.component.fhir.configuration.force-conformance-check* | What sub operation to use for the selected operation | false | Boolean
| *camel.component.fhir.configuration.log* | What sub operation to use for the selected operation | false | Boolean
| *camel.component.fhir.configuration.method-name* | What sub operation to use for the selected operation |  | String
| *camel.component.fhir.configuration.password* | What sub operation to use for the selected operation |  | String
| *camel.component.fhir.configuration.pretty-print* | Component configuration for FHIR component. | false | Boolean
| *camel.component.fhir.configuration.proxy-host* | What sub operation to use for the selected operation |  | String
| *camel.component.fhir.configuration.proxy-password* | What sub operation to use for the selected operation |  | String
| *camel.component.fhir.configuration.proxy-port* | What sub operation to use for the selected operation |  | Integer
| *camel.component.fhir.configuration.proxy-user* | What sub operation to use for the selected operation |  | String
| *camel.component.fhir.configuration.server-url* | Component configuration for FHIR component. |  | String
| *camel.component.fhir.configuration.session-cookie* | What sub operation to use for the selected operation |  | String
| *camel.component.fhir.configuration.socket-timeout* | What sub operation to use for the selected operation | 10000 | Integer
| *camel.component.fhir.configuration.summary* | Component configuration for FHIR component. |  | String
| *camel.component.fhir.configuration.username* | What sub operation to use for the selected operation |  | String
| *camel.component.fhir.configuration.validation-mode* | What sub operation to use for the selected operation | ONCE | String
| *camel.component.fhir.enabled* | Whether to enable auto configuration of the fhir component. This is enabled by default. |  | Boolean
|===
// spring-boot-auto-configure options: END
