FHIR messaging

This was a messaging question just posted on the FHIR List (and Stack Overflow)

We have a scenario where we are evaluating the use of FHIR to transfer information on planned encounters from a EHR application (source application) to an internet portal application (destination application). The event that triggers this message transfer is that an encounter is planned, or that an planned encounter is canceled.

Quoting https://www.hl7.org/fhir/messaging.html:

In FHIR messaging, a “request message” is sent from a source application to a destination application when an event happens.

Some questions/issues:

  • First of all: Is the use of FHIR messaging suitable for this scenario?
  • If I understand the FHIR website correctly, the source application should send a “Bundle” to the destination application. Correct?
  • The destination application needs various information on the scheduled encounter, such as the location and the referral request. Am I correct in assuming that these “extra” information elements should also be in the bundle, and that the “main” element should somehow reference these elements ?
  • How should the main element reference the extra elements? Is there an XML example that shows “intra-bundle” references?
  • If I read the spec correctly, the destination application is supposed to send a response message back. What should this response bundle contain to indicate that the message is received OK?


And Lloyd replied:

Messaging is most appropriate mechanism when:

  • You want to pass a number of resources as a single package
  • You don’t need the overhead of a document (table of contents, tight rules over rendering)
  • There’s a potential need for asynchronous communication and/or for routed communication
  • You want to do something more complex than simple CRUD operations
  • You want to use transports other than HTTP

However, you can choose to use messaging for any communication. I.e. No-one will call you non-conformant for choosing to use messaging even if another paradigm might be more ‘typical’.

Messages are Bundle resources where the first entry is a MessageHeader. The MessageHeader points to the focal resource(s) using the ‘data’ element. In this case, the focus would be the Encounter. Additional resources can also be conveyed. Typically you use a profile to provide guidance around what should be included in the bundle vs. not. (element.type.aggregation identifies whether something needs to appear in the bundle or not). The only rule is that when you trace all the relationships between the resources in the bundle, they form a totally connected network. However, the associations can be in either direction. I.e. It’s ok to include things that point to the Encounter, not just things the Encounter points to.

Within the Bundle, references can be full URLs, relative URLs (based on the URL of the referencing resource) or UUIDs. You can see an example message here.

For a notification-type message interaction, your response message would typically just contain a MessageHeader whose .response would point to the identifier of the original message hand have code of “ok”. In other cases, a message response might contain data. E.g. the results of a create or merge, the response to a query, decision support information, etc.

(I like to put this stuff where I can find them when I forget!)

clinFHIR and 2.1

A quick note for those who will be using clinFHIR at the upcoming WGM – I’ve updated it so that it can read the proposed 2.1 resources. The way it works is that you select the server in the usual way – i.e. clicking the ‘servers’ link at the top right of the screen, and there are now both 2.0 and 2.1 versions of the servers to select from. Read more of this post

Clinical Genomics on FHIR at Connectathon

I have to say that the clinical genomics guys have to be the most organized workgroup that I have yet come across! (If there was the equivalent of the Harley Awards for being organized, then they would be the first recipients from me!).

They are hosting one of the tracks at the FHIR Connectathon (which is on in just a few hours!) and have created a plan for genomics in FHIR, plus a plan for the actual event  (link here: fhir_genomics_connectathon_agenda2) which includes remote access for those who can’t attend the event. They even have a downloadable VM with a genomics enabled server and their own website – how cool is that?

If you are at all interested in clinical genomics (and you really should be), then it’s hard to think of a better way to get involved…


Cleaning up clinFHIR

Just a short post for people who may have become frustrated with errors in clinFHIR when selecting patients in the Resource Builder.

What was happening is the clinFHIR keeps a note of all patients who have had resources made for them (by anyone) through the tool – to make it easier to find them later. The list is grouped by server – ie depending on the Data Server you have configured you’ll get the appropriate list.

The issue was that the current servers out there are all test servers – their purpose is to help develop the spec and ensure fitness for purpose, and this means that periodically the contents may be deleted as the resource structure has changed (or for some other purpose). So clinFHIR winds up holding on to some ‘stale’ references – hence the errors.

Read more of this post

FHIR Calendars

Rene (from Ringholm) has again organized a FHIR calendar which I’m delighted to be able to publicize. I’ve copied his description of the calendar and how to get it here:

After the success of the 2015 FHIR Calendar (with a “FHIR Chiefs” theme) we’re proud to announce that the 2016 edition (with a Star Warsian “FHIR Saber” theme) has just been published. The calendar is created/published by members of the FHIR community – for the benefit of the FHIR community; in order to strengthen the FHIR community spirit.

Ed Hammond (godfather of HL7, and FHIR implementer) assigned a 5 star rating to this calendar, stating “Wish I were in it!”. One of the pictured FHIR Jedi, whilst being proud of being in our calendar, sighed and said “the worst thing is .. my family back home will see this”.
Indeed, they will ;-).

Photos for this years calendar were shot during the fall 2015 HL7 WGM in Atlanta, as well as the 2015 FHIR DevDays meeting in Amsterdam. If you’re pictured on the calendar you’ll receive one free copy (courtesy of the sponsors of the calendar). All others pay USD 10/EUR 10 (depending on the location of the particular FHIR event) – which serves to cover some of the printing costs. Calendars will be available at any of the 2016 FHIR hackathon events, including the HL7 WGM which starts Saturday this week. To quote Yoda: “Buy, or not buy, there is no try”.

I’d like to (yet again) thank those members of the FHIR community who agreed to be photographed for this calendar. It is a true sign of the FHIR community spirit – may the FHIR be with you, in 2016, and thereafter.

He also (kindly) sent me a copy of the photo with me in it – do I really look like that?


enjoy! (and buy!!)




clinFHIR demo

We just had a meeting to discuss the format for the next ‘Clinicians on FHIR’ meeting at the January HL7 Working Group meeting. A couple of the folk on the call were unfamiliar with the clinFHIR tooling we use to support the event, so I did a short demonstration and offered to put a few links here to more details.

In addition, my colleague Viet Nguyen has kindly allowed me to share a recording of a demonstration that he gave – you can access it below.

Read more of this post