blob: d560afe220fe222955b942333ab96ae13ebff12c [file] [log] [blame]
== FHIR Example - OSGi
=== Introduction
This is an example application of the `+camel-fhir+` component that can
be executed inside an OSGi container. We will be using Apache Karaf.
The example assumes you have a running FHIR server at your disposal. You
may use
https://github.com/jamesagnew/hapi-fhir/tree/master/hapi-fhir-jpaserver-example[hapi-fhir-jpa-server-example]
By default, the example uses
`+http://localhost:8080/hapi-fhir-jpaserver-example/baseDstu3+` as the
FHIR server URL, DSTU3 as the FHIR version and
`+target/work/fhir/input+` as the directory to look for HL7V2 patients.
However, you can edit the
`+org.apache.camel.example.fhir.osgi.configuration.cfg+` file to
override the defaults and provide your own configuration.
=== Build
You will need to build this example first:
[source,sh]
----
$ mvn install
----
=== Run OSGi / Karaf
This example can be executed within Karaf 4.x
To run the example, from the command line:
[arabic]
. In the Karaf install root directory, start Karaf:
+
[source,sh]
----
$ bin/karaf
----
. Install the pre-requisites:
+
[source,sh]
----
karaf@root()> repo-add camel ${version}
karaf@root()> feature:install camel-blueprint camel-hl7 camel-fhir
----
. Copy the configuration file
org.apache.camel.example.fhir.osgi.configuration.cfg to the etc/
directory of your Karaf installation:
`+InstallDir/etc/org.apache.camel.example.fhir.osgi.configuration.cfg+`
. Then install and start the example:
+
[source,sh]
----
karaf@root()> install -s mvn:org.apache.camel.example/camel-example-fhir-osgi/${version}
----
When the Camel application runs, you should see a folder created under
`+work/fhir/input+`. Copy the file `+hl7v2.patient+` located in the
`+data+` folder into it.
By tailing the log with:
....
```sh
karaf@root()> log:tail
```
....
The following messages should be displayed:
....
```
2018-07-17 17:02:35,590 | INFO | nt Dispatcher: 1 | FhirContext | 52 - ca.uhn.hapi.fhir.hapi-fhir-base - 3.3.0 | Creating new FHIR context for FHIR version [DSTU3]
2018-07-17 17:02:35,631 | INFO | nt Dispatcher: 1 | BlueprintCamelContext | 59 - org.apache.camel.camel-blueprint - 2.23.0.SNAPSHOT | Route: fhir-example-osgi started and consuming from: file://work/fhir/input
2018-07-17 17:02:35,631 | INFO | nt Dispatcher: 1 | BlueprintCamelContext | 59 - org.apache.camel.camel-blueprint - 2.23.0.SNAPSHOT | Total 1 routes, of which 1 are started
2018-07-17 17:02:35,632 | INFO | nt Dispatcher: 1 | BlueprintCamelContext | 59 - org.apache.camel.camel-blueprint - 2.23.0.SNAPSHOT | Apache Camel 3.0.0-SNAPSHOT (CamelContext: camel-fhir) started in 0.853 seconds
2018-07-17 17:03:06,157 | INFO | /work/fhir/input | fhir-example-osgi | 61 - org.apache.camel.camel-core - 2.23.0.SNAPSHOT | Converting hl7v2.patient
2018-07-17 17:03:06,577 | INFO | /work/fhir/input | fhir-example-osgi | 61 - org.apache.camel.camel-core - 2.23.0.SNAPSHOT | Inserting Patient: {"resourceType":"Patient","id":"100005056","name":[{"family":"Freeman","given":["Vincent"]}]}
2018-07-17 17:03:08,829 | INFO | d #2 - CamelFhir | fhir-example-osgi | 61 - org.apache.camel.camel-core - 2.23.0.SNAPSHOT | Patient created successfully: true
```
....
Hit ctrl+c to exit the log command.
Camel commands can be used to gain some insights on the Camel context,
e.g.:
* The `+camel:context-list+` displays the Camel context:
+
....
karaf@root()> camel:context-list
Context Status Total # Failed # Inflight # Uptime
------- ------ ------- -------- ---------- ------
camel-fhir Started 1 0 0 3 minute
....
* The `+camel:route-list+` command displays the Camel routes:
+
....
karaf@root()> camel:route-list
Context Route Status Total # Failed # Inflight # Uptime
------- ----- ------ ------- -------- ---------- ------
camel-fhir fhir-example-osgi Started 1 0 0 4 minutes
....
* And the `+camel:route-info+` command displays route information:
+
....
karaf@root()> camel:route-info camel-fhir fhir-example-osgi
Camel Route fhir-example-osgi
Camel Context: camel-fhir
State: Started
State: Started
Statistics
Exchanges Total: 1
Exchanges Completed: 1
Exchanges Failed: 0
Exchanges Inflight: 0
Min Processing Time: 2674 ms
Max Processing Time: 2674 ms
Mean Processing Time: 2674 ms
Total Processing Time: 2674 ms
Last Processing Time: 2674 ms
Delta Processing Time: 2674 ms
Start Statistics Date: 2018-07-17 17:02:35
Reset Statistics Date: 2018-07-17 17:02:35
First Exchange Date: 2018-07-17 17:03:08
Last Exchange Date: 2018-07-17 17:03:08
....
Finally, you can stop the example with:
....
```sh
karaf@root()> uninstall camel-example-fhir-osgi
```
....
And check in the log that the Camel context has been gracefully
shutdown:
....
```
2018-07-17 17:09:32,418 | INFO | xample-fhir-osgi | BlueprintExtender | 12 - org.apache.aries.blueprint.core - 1.8.3 | Destroying BlueprintContainer for bundle org.apache.camel.example.camel-example-fhir-osgi/2.23.0.SNAPSHOT
2018-07-17 17:09:32,420 | INFO | nt Dispatcher: 1 | BlueprintCamelContext | 59 - org.apache.camel.camel-blueprint - 2.23.0.SNAPSHOT | Stopping CamelContext: camel-fhir
2018-07-17 17:09:32,421 | INFO | nt Dispatcher: 1 | BlueprintCamelContext | 59 - org.apache.camel.camel-blueprint - 2.23.0.SNAPSHOT | Apache Camel 3.0.0-SNAPSHOT (CamelContext: camel-fhir) is shutting down
2018-07-17 17:09:32,423 | INFO | nt Dispatcher: 1 | DefaultShutdownStrategy | 61 - org.apache.camel.camel-core - 2.23.0.SNAPSHOT | Starting to graceful shutdown 1 routes (timeout 300 seconds)
2018-07-17 17:09:32,427 | INFO | 3 - ShutdownTask | DefaultShutdownStrategy | 61 - org.apache.camel.camel-core - 2.23.0.SNAPSHOT | Route: fhir-example-osgi shutdown complete, was consuming from: file://work/fhir/input
2018-07-17 17:09:32,428 | INFO | nt Dispatcher: 1 | DefaultShutdownStrategy | 61 - org.apache.camel.camel-core - 2.23.0.SNAPSHOT | Graceful shutdown of 1 routes completed in 0 seconds
2018-07-17 17:09:32,438 | INFO | nt Dispatcher: 1 | BlueprintCamelContext | 59 - org.apache.camel.camel-blueprint - 2.23.0.SNAPSHOT | Apache Camel 3.0.0-SNAPSHOT (CamelContext: camel-fhir) uptime 6 minutes
2018-07-17 17:09:32,438 | INFO | nt Dispatcher: 1 | BlueprintCamelContext | 59 - org.apache.camel.camel-blueprint - 2.23.0.SNAPSHOT | Apache Camel 3.0.0-SNAPSHOT (CamelContext: camel-fhir) is shutdown in 0.017 seconds
```
....
=== Help and contributions
If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/support.html[let us know].
We also love contributors, so
https://camel.apache.org/contributing.html[get involved] :-)
The Camel riders!