Menu
 
Simpatico

FHIR Dispatches:
Smile CDR and HAPI Product Blog

New HAPI FHIR and Smile CDR Releases

Published: 28 Sep 2017 at 22:30
 

We are very happy to announce that after seemingly endless development, we have finalized the simultaneous releases of HAPI FHIR 3.0.0 and Smile CDR 2017.09.R01.

Smile CDR 2017.09.R01

This release contains a number of enhancements, several performance enhancements, as well as some bugfixes.

The complete list of changes is available in the product Changelog.

Key improvements include:

  • An overhaul of how FHIR Subscriptions are implemented, including a scalable queuing mechanism for subscription checking and delivery (replacing the previous polling-based system) and much more flexibility in how subscription notifications are delivered. These changes lay the groundwork for many further enhancements we have planned, including support for the proposed EventDefinition mechanism that is proposed for FHIR R4.
  • A large number of enhancements to the HL7 v2.x processors
  • API support for user management
  • A new security mode called Trusted Client Mode which allows a client coming from a fully trusted system to make asertions about the identity and permissions of the calling user
  • All fixes from the HAPI FHIR 3.0.0 release below

HAPI FHIR 3.0.0

This is a massive release, and includes a huge number of enhancements, fixes, and new features. Unfotunately it also brings a few breaking API changes so we are calling it version 3.0.0 (we are also moving to SemVer versioning).

As always, the changelog has the full list of changes in this release. I am outlining a few of the important ones here:

FHIR R4 and DSTU1 Support

Support for FHIR R4 (current working draft) has been added (in a new module called hapi-fhir-structures-r4) and support for FHIR DSTU1 (hapi-fhir-structures-dstu) has been removed. Removing support for the legacy DSTU1 FHIR version was a difficult decision, but it allows us the opportunitity to clean up the codebase quite a bit, and remove some confusing legacy parts of the API (such as the legacy Atom Bundle class).

A new redesigned table of HAPI FHIR versions to FHIR version support has been added to the Download Page

Module Restructuring

HAPI FHIR's modules have been restructured for more consistency and less coupling between unrelated parts of the API.

A new complete list of HAPI FHIR modules has been added to the Download Page. Key changes include:

  • HAPI FHIR's client codebase has been moved out of hapi-fhir-base and in to a new module called hapi-fhir-client. Client users now need to explicitly add this JAR to their project (and non-client users now no longer need to depend on it)
  • HAPI FHIR's server codebase has been moved out of hapi-fhir-base and in to a new module called hapi-fhir-server. Server users now need to explicitly add this JAR to their project (and non-server users now no longer need to depend on it)
  • As a result of the client and server changes above, we no longer need to produce a special Android JAR which contains the client, server (which added space but was not used) and structures. There is now a normal module called hapi-fhir-android which is added to your Android Gradle file along with whatever structures JARs you wish to add. See the Android Integration Test to see a sample project using HAPI FHIR 3.0.0. Note that this has been reported to work by some people but others are having issues with it! In order to avoid delaying this release any further we are releasing now despite these issues. If you are an Android guru and want to help iron things out please get in touch. If not, it might be a good idea to stay on HAPI FHIR 2.5 until the next point release of the 3.x series.
  • A new JAR containing FHIR utilities called hapi-fhir-utilities has been added. This JAR reflects the ongoing harmonization between HAPI FHIR and the FHIR RI codebases and is generally required in order to use HAPI at this point (if you are using a dependency manager such as Maven or Gradle it will be brought in to your project automatically as a dependency)

Package Changes

In order to allow the reoganizations and decoupling above to happen, a number of important classes and interfaces have been moved to new packages. A sample list of these changes is listed below. When upgrading to 3.0.0 your project may well show a number of compile errors related to missing classes. In most cases this can be resolved by simply removing the HAPI imports from your classes and asking your IDE to "Organize Imports" once again. This is an annoying change we do realize, but it is neccesary in order to allow the project to continue to grow.

  • IGenericClient moved from package ca.uhn.fhir.rest.client to package ca.uhn.fhir.rest.client.api
  • IRestfulClient moved from package ca.uhn.fhir.rest.client to package ca.uhn.fhir.rest.client.api
  • AddProfileTagEnum moved from package ca.uhn.fhir.rest.server to package ca.uhn.fhir.context.api
  • IVersionSpecificBundleFactory moved from package ca.uhn.fhir.rest.server to package ca.uhn.fhir.context.api
  • BundleInclusionRule moved from package ca.uhn.fhir.rest.server to package ca.uhn.fhir.context.api
  • RestSearchParameterTypeEnum moved from package ca.uhn.fhir.rest.server to package ca.uhn.fhir.rest.api
  • EncodingEnum moved from package ca.uhn.fhir.rest.server to package ca.uhn.fhir.rest.api
  • Constants moved from package ca.uhn.fhir.rest.server to package ca.uhn.fhir.rest.api
  • IClientInterceptor moved from package ca.uhn.fhir.rest.client to package ca.uhn.fhir.rest.client.api
  • ITestingUiClientFactory moved from package ca.uhn.fhir.util to package ca.uhn.fhir.rest.server.util

Fluent Client Search Change

Because the Atom-based DSTU1 Bundle class has been removed from the library, users of the HAPI FHIR client must now always include a Bundle return type in search calls. For example, the following call would have worked previously:

Bundle bundle = client.search().forResource(Patient.class)
  .where(new TokenClientParam("gender").exactly().code("unknown"))
  .prettyPrint()
  .execute();
This now needs an explicit returnBundle statement, as follows:
Bundle bundle = client.search().forResource(Patient.class)
  .where(new TokenClientParam("gender").exactly().code("unknown"))
  .prettyPrint()
  .returnBundle(Bundle.class)
  .execute();

Thanks to everyone who contributed to this release, either by submitting pull requests, suggesting new features, or filing bug requests!

Permalink

Smile CDR presents HL7® FHIR® Talk in Toronto - July 11, 2017

Published: 26 Jun 2017 at 20:30
 

Smile CDR is the proud sponsor of the Inaugural HL7® FHIR® Talk.

Healthcare informatics practitioners from government, hospitals, and local vendors will be joining us for stimulating and engaging discussions on FHIR.

Speakers from Intelliware, TELUS Health, Gevity, SMART on FHIR, Red Hat, and Smile CDR will cover a variety of topics, including: the challenges in EHR integration and health data interoperability; how and under what circumstances would FHIR be a viable investment to overcome such challenges; FHIR today and tomorrow; SMART support for the vendor community; and FHIR and AI.

Let us know if you’d like to be part of this!

Permalink

Smile CDR selected as MedStack’s FHIR solution

Published: 06 Jun 2017 at 20:30
 

Smile CDR has been chosen as the FHIR-based health data repository for MedStack’s HIPAA- and PHIPA-compliant healthcare application hosting environment.

Digital health application developers in Canada and US hosted on the MedStack platform can now seamlessly add Smile CDR to their technology stack. This means – among MedStack’s other offerings – they can immediately benefit from Smile CDR’s complete FHIR compatibility, security, terminology translation, and auditing capabilities.

“Customers can continue to enjoy Smile CDR as a standalone product either hosted by us or implemented on-premises,” said James Agnew, CTO of Simpatico Intelligent Systems. “Smile CDR on MedStack means our partners can offer additional value by helping their customers easily adopt FHIR and overcome the challenges of health data interoperability across our industry.”

Permalink

Older Entries