Getting Help

Where can I ask questions or get help?

We ask that any questions about how to use HAPI FHIR be directed to the HAPI FHIR Google Group. This group is a great resource, with lots of helpful people who can assist. The HAPI FHIR developers are regular contributors to this group.

Please do not email us at our personal email addressees with questions about how to use HAPI! We are much more likely to respond if you post your question in the group, since there are a fixed number of hours in the day and we prefer to help in a place that benefits everyone. Also, please do not post a question on the GitHub Issue Tracker unless you are sure it is actually a bug. If you're not sure whether you have a question or a bug, please post your question on the Google Group.

If you have questions which are about FHIR itself (e.g. which resource should I use for a specific purpose, how to I model my data, etc.) there are two great resources that can help you:

  • The server offers a live chat that is very popular with people using FHIR. That community extends far beyond just HAPI users, so there is a large pool of people who might have answers to your questions.
  • You might want to also consider posting on Stackoverflow, as there are a number of FHIR experts who aren't HAPI/Java users who monitor that site.

How do I report a bug?

We welcome bug reports, and do our best to address them quickly. Please do keep in mind though that HAPI FHIR is a volunteer-run project, so we can't always act immediately on every issue.

Before reporting a bug, please make sure what you have is actually a bug. If you are unsure how to do something with HAPI, you are more likely to get a helpful response on our Google Group (please see the "Where can I ask questions or get help" above).

When reporting a bug, please be as descriptive as possible. It is important to include details such as:

  • What you are trying to accomplish
  • What version of HAPI you are using (and if you are running a customized version, please mention that too)
  • What platform you are using (Windows/OSX/Linux Platform, OS Version, etc)
  • What version of Java you are using

Please also include any samples or other useful files that might help in diagnosing the issue. This could include resources you are using for testing, build/server logs, etc. If you are concerned about privacy you may also email James with these artifacts but please also file a bug and reference the ticket number.

Finally, if you are able to include a unit test, or even better a GitHub Pull Request we will be appreciative. Actually, one more thing: If you disciver that your bug was actually not a bug, please make sure to put an update in the ticket and close it.

Using HAPI

What JDK version does HAPI support?

HAPI supports JDK 1.6 for the entire library, except for the CLI tool which is 1.8.

Note that the HAPI library itself also requires a 1.8 JDK to build, since the unit tests have JDK 1.8 dependencies.

JPA Server

I would like to connect to the Derby database using a JDBC database browser (e.g. Squirrel, Toad, DBVisualizer) so that I can access the underlying tables. How do I do that?

By default Derby doesn't actually open any TCP ports for you to connect externally to it. Being an embedded database, it works a bit differently than other databases in that the client actually is the database and there's no outside communication with it possible.

There are a few options available to work around this fact:

  • The easiest thing is to just load your data using the FHIR API. E.g. you can use HTTP/REST creates, transactions, etc to load data into your database directly.
  • If you want to access the underlying database, the next easiest thing is to configure the database to use a filesystem directory, e.g. "jdbc:derby:directory:target/jpaserver_derby_files;create=true". You can then shut the server down and use that same URL to connect a derby client (e.g. Squirrel or DBVisualizer) to the same path. You may need to use a fully qualified path instead of a relative one though.
  • Another option is to use a different database (e.g. MySQL, Postgres, Oracle, etc.). HAPI's JPA server is based on JPA/Hibernate so it will support any database platform that hibernate supports.
  • A final option is to start up Derby in network mode. Doing this is a bit more involved since you need to start the derby server separately, and then use a special URL to connect to it. You can find an example of how to start network Derby here and an example of setting up a datasource here.


My build is failing with the following error: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project hapi-fhir-jpaserver-base: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test failed: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

This typically means that your build is running out of memory. HAPI's unit tests execute by default in multiple threads (the thread count is determined by the number of CPU cores available) so in an environment with lots of cores but not enough RAM, you may run out. If you are getting this error, try executing the build with the following arguments:


See Hacking HAPI FHIR for more information on the build process.

Back to top

Reflow Maven skin by Andrius Velykis.