Opening up clinFHIR – An example generator

I’d always intended that clinFHIR would be an open source project.

It all started when we were planning the ‘Clinician Connectathons’ – now ‘Clinicians on FHIR’ a year or so back, and realized that we needed some sort of tooling to support the events – tooling that would allow a user to create resources – and view the references between those resources – in a way that made sense to a clinician rather than a techie, and didn’t require them to understand the ‘on the wire’ formats of a resource (unless they wanted to).

After a few false starts, the current version was developed that seems to meet the need of the events. In fact, there are a number of different tools under the clinFHIR umbrella:

Read more of this post

Organizations as CarePlan participant…

This conversation is from the Implementers Chat. It describes what is likely to be quite a common scenario, so I’m sticking it where for when I need to remember it.


We have a usecase where a Practitioner in small practice creates a CarePlan for a Patient and assigns himself as a Participant, and sends out this CarePlan using FHIR messaging to another Application. Over time, he creates CarePlans for hundreds of Patients. Now at one point in time he hires another MD to provide care to the same Patients. This would required sending out all CarePlans that are still active with the second MD being also mentioned as a Participant.

In order to avoid these massive retransmits, we would like to use a Group resource to group all active Practitioners and assign that Group as Practitioner to all CarePlan, and only send out the Group when a member has been added or is removed.

Now the problem is: CarePlan.particpant.member is defined as Reference(Practitioner | RelatedPerson | Patient | Organization)

This is actually just an example of a bigger issue, namely, if a Group of X is allowed, each Reference( X ) should ideally also allow Reference(Group)

Any feedback from the group?

Answer from Ewout:

Hi Theo, in this case, the group of MD’s are actually acting collectively and towards the same goal (taking care of the patient), so this informal group is actually an organization (note that the definition of Organization in FHIR is broader than in normal life):

“A formally or informally recognized grouping of people or organizations formed for the purpose of achieving some form of collective action. Includes companies, institutions, corporations, departments, community groups, healthcare practice groups, etc.”

I think organization matches your purpose, so the Organization becomes the “Participant”!

Thanks guys!

FHIR at the New Zealand HINZ conference.

As part of the HINZ conference, we (HL7 New Zealand) held a 1 day seminar on FHIR with a focus on clinicians rather than our more usual technical audience. We decided to do this because FHIR is now at a stage where wider clinical input is feasible – it’s at DSTU-2 and there is visualization tooling (clinFHIR) available. Technical folk are already on board with FHIR – it  just makes sense to them – so time to pull in our clinical colleagues that have not yet been involved.

There were 2 parts to the day.

Read more of this post

Creating reusable scenarios using clinFHIR

One of the main reasons for developing tooling to support the clinical Connectathon (now re-branded as clinicians on FHIR) was for Clinicians to use it to ensure that FHIR would meet clinical needs, using specific scenarios as ways of testing it. (Actually our initial scenarios were far too big – but that’s all part of the learning process!)

At the events, we have groups of clinicians that take a scenario and then build sets of resources that could represent that scenario using a test patient – often there is more than one way we can do this, and one of the purposes of the event is to develop ‘best practice’ guides. One of the things that would be nice to do is to be able to save – and then reload – these scenarios so that they can be shared with others and examined outside of the event. (It would also help negate the issue that all this work is saved in test servers that are periodically cleared).

Read more of this post

Talking with a Clinician

So I was talking with one of my colleagues at Orion Health today – a clinician who has just joined us and wanted to understand what FHIR was – to a reasonable degree of detail. I thought I’d summarize our conversation here as it’s useful to record what a clinician found interesting, and wanted to know about.

Read more of this post

Using clinFHIR to create a profile

In the previous post, we outlined our plans for creating a profile against the Patient resource, and manually created and saved some of the supporting resources (ValueSet and our NamingSystem) that we’re going to need.

Next up is the extension definition and the actual profile against Patient. Once we’ve done that (which is the topic of this post) we can actually create conformant resources.

Fortunately, we can use clinFHIR to create these artifacts, so start up that application and select the ‘profile builder’ from the front page. (And a reminder that this is very much ‘beta’ software designed for training! Let me know of any issues)

Read more of this post

Creating and using FHIR profiles

One of the things we discussed at the recent seminar in New Zealand was profiling FHIR resources. This is where we take the base resources and then adapt them for specific use cases. While quite simple in concept, there are some complexities ‘under the hood’, so part of the talk was to describe some of the ‘infrastructure’ that makes all this work.

Once we had the set up some of the supporting resources, we used the clinFHIR tool to actually assemble the profile, as this makes it easier for ‘non-technical’ people – especially clinicians – to build these artifacts, and then build a resource that is conformant to that profile.

Read more of this post

Finding Patients seen by clinicians

So I got an interesting email yesterday.

Someone asked me how to fulfill the following User Story: As a clinician, I want to search for a list of patients being seen by certain consultants today.

There were some Acceptance Criteria given:

  • I can enter the name of one or more consultants to search against, combining this with any clinics, wards and specialties that have been specified in the search criteria
  • I can amend a search by removing an item from the search criteria
  • In the list of results, I can see the following properties for each patient:
  • Hospital Number
  • NHS Number
  • Full name (surname, first name)
  • DOB
  • Sex
  • Consultant
  • Location (ward or clinic name)
  • Date (admission/appointment date)

Now, we’d want to dig a bit into the specifics of how some of the searches should work – eg what does it mean when you specify a consultant and a ward – that the consultant saw the patient on the specified ward on that date? And what happens when both a consultant and a specialty are in the query parameters?

But lets start with a simple case – getting a list of patients seen by a consultant on a specified date. This is not quite as simple as it sounds!

Read more of this post

A FHIR learning application for non-technical folk

One of the things that is happening to FHIR is that as it grows in maturity, it is starting to attract more Clinicians and Business Analysts who are less interested in the technology, and more interested in how it can be used to represent the clinical information they want to share – both inside and between organizations.

Indeed, the chair of HL7 – Stan Huff – referred to this explicitly at the last Working Group Meeting when he referred to the importance of the clinical community getting together to develop the profiles of use that take the core FHIR specification, and make it work for the clinical community. There is a very real risk of developing multiple different profiles that actually mean the same thing and thus harming interoperability. FHIR offers mechanisms to avoid this, but it does mean that people – especially clinical and analysts –need to have a good idea of how FHIR in general – and these mechanisms in particular – work.

Read more of this post

The Architecture and the (FHIR) Message

So now that we’ve established how we intend to build our model from HL7 v2 messages, let’s turn our attention to architectural issues. We’ll need to look at how FHIR thinks about managing messages – both in terms of the structure and content of a FHIR message, and also how the server should process those messages.

Read more of this post