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.
The Shorthand standard will (of course) be open source and published as an IG – there’s already a draft available to view.
The basic idea is that instead of using tools like Forge (which is a great tool, though can be complex to use), you create text files that describe the changes you need in a profile. There is then a tool that will take the text file and produce a standard StructureDefinition resource describing the profile – exactly as Forge would do.
The text file then acts as a simple statement of what changes are being expressed by the profile, as well as being easier to author collaboratively. In effect it’s another way of expressing a differential.
Here’s a simple example:
Title: “HPI Organization”
Description: “Organizations used by the HPI.”
* ^purpose = “Describe the Organization that will be returned by the HPI”
//elements that have been removed
* address 0..0
* contact 0..0
//top level extensions
* extension contains
//slice the identifier
* identifier ^slicing.discriminator.type = #value
* identifier ^slicing.discriminator.path = “use”
* identifier ^slicing.rules = #openAtEnd
* identifier contains
orgId 0..1 MS and
dormant 0..* MS
* identifier[orgId].system = “https://standards.digital.health.nz/id/hpi-org”
* identifier[orgId].use = #official
* identifier[dormant].system = “https://standards.digital.health.nz/id/hpi-org”
* identifier[dormant].use = #old
//add an extension to alias
* alias.extension contains
It will produce a profile on Organization that removes a couple of elements (address and contact), slices identifier and adds a couple of extensions.
In keeping with the FHIR ethos, the Mitre corp. is also producing an open source example of the converter app which is a node.js command line app that they’ve called sushi. In fact the whole project is riddled with fish jokes. I even understand that there will be a prize at the connectathon for the best (?worst) fish joke. As a dad, I’m in with a chance
It’s really simple to use – you place the textual definition files in a folder with a .fsh (‘fish’ – geddit?) extension and then run sushi specifying the folder. I just move into that folder and execute ‘sushi .’ and after a short while, the resulting StructureDefinitions are created in an output file – ready to be picked up by the IG publisher and incorporated into the Implementation Guide. Of course, there are generally errors to fix first – sigh.
Sushi can produce other files as well – examples, extensions, ValueSets and the like – check out the spec for details.
I’ve been working on integrating shorthand (and sushi) with some work I’m doing in New Zealand – you can take a look at the IG designer (actually really more of a review tool – it’s a work in progress) to see this. If you click the ‘Resources’ tab at the top, then select a model from the list to the left you’ll see a ‘shorthand’ tab in a tabset to the right that shows the FSH file used to produce the profile. Here’s a screen dump:
My plan at connectathon is to work on further integrating sushi as part of the overall IG tool chain and help test it out or contribute to features. Others will be doing the reverse – taking a StructureDefinition and producing an FSH from it.
So whichever track you’re doing I look forward to meeting you in Sydney!