Custom Implementation Guide templates

As you’ll likely be aware, FHIR uses Implementation Guides (IG) to describe how to use FHIR for specific scenarios or use cases. In the past it has been technically challenging to create these guides, but this is changing – in large part due to new tooling/approaches like shorthand and sushi, but also because the FHIR community (and especially Lloyd) have been working on a template based publisher.

The idea behind the template based publisher is that there are a number of standard templates for specific purposes such as an ‘official’ HL7 FHIR IG or a plain template, and these can then be adapted for specific purposes – such as a National IG or a vendor specific one describing a FHIR based implementation. The project is still relatively new, but becoming stable enough that people are able to use it. However, the newness means that the documentation is still catching up, so when my colleague Jose Costa Teixeira offered to write a ‘beginners guide to creating your very own template’ I said great!

He’s published it on his blog, but kindly allowed me to reproduce it here.

Without further ado, take it away Jose… Read more of this post

Family FHIR – with sushi

I was trying to remember how to represent family relationships in FHIR – to record that one person is related to another, maybe a mother / daughter relationship, assuming that each person is already represented by a Patient resource. I asked my good friend Brian Postlethwaite who kindly didn’t say “I’ve told you this before”, but rather pointed me at the RelatedPerson resource and the example in the spec.

For example, to create a link from mother to child, what you do is to create the 2 Patient resources that represent the mother and the child, then create a RelatedPerson resource that directly references the child (the ‘to’ of the relationship) through the RelatedPerson.patient element, and then use the mothers Patient.link to refer to that RelatedPerson (the ‘from’). In effect both the mothers Patient and the RelatedPerson resources both have information about the mother (hopefully not contradictory) and it’s the RelatedPerson.patient &  RelatedPerson.relationship that provides the relationship to the child. The Patient.link then has a type of ‘seealso’ to the Related person.

Read more of this post

Creating examples

Examples are probably one of the more useful things to an implementer – yet likely the least exciting part of building an Implementation Guide (IG) to the designer. And not only are they useful to the implementer, they are a good way to double check the actual IG – it’s surprising how often having to create an example finds issues with the artifacts within an IG.

But the tooling to create examples is not that great. Generally you’re using a generic JSON or XML tool which offers no editing support to ensure that the example is valid (you can use the $validate operation that I’ve discussed before, but the workflow is tedious). I’ve tried to use clinFHIR for that – and it does work, though chokes some of the more complex profiles, and is still quite slow to create the resource instance.

There is an alternative that I’m currently using that seems to resolve these issues – the shorthand spec (with associated sushi reference implementation) that I blogged about last week. As well as producing profiles, it can also create resource instances using the same syntax as for profiles, and even better – when you run sushi to generate the resources, it will pick up the more egregious errors.

Read more of this post

Connectathon – with sushi

The 23rd FHIR connectathon in Sydney is almost upon us, and despite the trials and tribulations that the weather has thrown at us, it’s going to be a great event with over 150 people currently scheduled to attend. There are 15 tracks, a number of which are for local initiatives (like the Primary Care track or ePrescribing track) as well as the more general ones, so there’s plenty of choice for attendees. We do recommend that you choose one track as your primary track – perhaps observing others of particular interest – as that seems to bring the best benefit to attendees and the spec.

For myself, I’m going to participate in the FHIR shorthand  track. This is an initiative being driven by the Mitre Corporation in the US, which is a not-for-profit organization heavily involved in the FHIR community to create a simpler way to produce FHIR profiles.

Read more of this post

Subscriptions

For those interested in Subscriptions – here’s a blog post from Gino Canessa of Microsoft who is deeply involved in the R5 redesign of this, particularly the Subscription resource.

Making a Transaction bundle using the Mapping Language

In the previous post we created a bundle of Patient resources for sending to a FHIR server. However, if you take a look at the Bundle generated by executing the transform, you’ll see that it has a type of ‘transaction’ but the entry elements only contain a ‘resource’ element (that contains the actual resource) – it’s missing the ‘request’ element that tells the server what to do with that resource, and so is not a valid transaction.

Let’s fix that.

Read more of this post

A simple map

In the previous post, we described a simple application to help develop transformation maps conformant with the FHIR mapping language. Let’s now take a look at using that app to actually develop a simple map.

Read more of this post

A simple app to help using the Mapping Language

So I’ve just been at the FHIR devdays in Amsterdam which was really interesting (of course – attending a devdays is a ‘must do if possible’ for FHIR implementers). One of the presentations I attended was on the FHIR mapping language – more specifically an implementation of the FHIR mapping language by Firely and Healex   (currently in a ‘technical preview’ state).

I’ve always been interested in the mapping language, and its ability to create portable mapping files – allowing specialists to create the mapping instructions, which can then be used by any compliant engine, as the following image illustrates:

Read more of this post

Validating a resource

It’s often helpful to be able to determine whether a particular resource instance is compliant with a given profile or profiles – including the the core profiles defined in the FHIR specification.

The FHIR project has provided validation functionality that can be used for this. It can be downloaded from the spec  and has also been incorporated into a number of the on-line reference servers. This post describes a simple app that acts as an interface to these servers.

Read more of this post

Updating a resource using patch

We’ve received a bit of pushback from the community regarding our proposal to use custom operations for updating the Patient in NHI upgrade project. But the development team really isn’t keen on using PUT updates of the complete resource – the main reason being that of ‘accidental’ data changes when the updater doesn’t return the parts of the resource that should remain unaltered. (Apparently, this is not uncommon with messaging based updates that are kind of similar).

I mentioned in that post that we didn’t really take a close look at PATCH updates – but a couple of days ago I saw this trail in the FHIR chat which is about a similar project (slightly different requirements) and thought I really should take a closer look at PATCH.

Read more of this post