Import resources into clinFHIR Scenario Builder

Just a short note to let you know that I’ve added the ability to import resources directly into the clinFHIR Scenario Builder (people have asked about this for a while). There are 3 formats currently supported:

  • A single Json resource
  • A Json bundle
  • An XML bundle

(Note that a single XML resource is not yet supported – just place it in a bundle if this is a problem right now)

Read more of this post

Creating models with the Logical Modeler

It’s been a while since we talked about the clinFHIR Logical Modeler, and I’ve had a few questions about it, so I thought an update might be in order.

The term ‘Logical Model’ can be used in different ways (much like ‘Profile’) so let’s first define just what we are talking about. Basically, it’s just a hierarchical model of data – much like you see in any of the core FHIR resource types – with the exception that the model does not have to align with any of the core types. Other than the requirement that you must use the FHIR datatypes, there are no limits on the complexity of the model you create (though overly complex models can be hard to understand – or use).

In this post we’ll talk about the general aspects of using the modeler – subsequent posts will go into more detail about how to build them.

Read more of this post

clinFHIR and the CodeSystem resource (STU-3)

As you’ll probably be aware, a lot of my focus in recent months has been in updating clinFHIR to help non-technical folk like clinicians understand what FHIR is, and how they can get involved in FHIR related projects. Here’s a White Paper I did for Orion Health on the subject…

There are a couple of core components that have been developed to assist this.

Read more of this post



I’ve known about FHIRPath for some time, though I must admit I haven’t paid a lot of attention to it.

Put briefly, FHIRPath is a specification that describes how to identify (and potentially extract) data from a resource using a path based syntax. From the spec:

Of particular importance is the ability to easily and precisely express conditions of basic logic, such as those found in requirements constraints (e.g. Patients must have a name), decision support (e.g. if the patient has diabetes and has not had a recent comprehensive foot exam), cohort definitions (e.g. All male patients aged 60-75), protocol descriptions (e.g. if the specimen has tested positive for the presence of sodium), and numerous other environments.

with these features:

  • Graph-traversal: FHIRPath is a graph-traversal language; authors can clearly and concisely express graph traversal on hierarchical information models (e.g. HL7 V3, FHIR, vMR, CIMI, and QDM).
  • Fluent: FHIRPath has a syntax based on the Fluent Interface pattern
  • Collection-centric: FHIRPath deals with all values as collections, allowing it to easily deal with information models with repeating elements.
  • Platform-independent: FHIRPath is a conceptual and logical specification that can be implemented in any platform.
  • Model-independent: FHIRPath deals with data as an abstract model, allowing it to be used with any information model.

Read more of this post

clinFHIR Profiling Walk Through

So I’m in the middle of getting ready for the Furore  devdays event – part of the preparation being a writing series of posts on the various stages we’ll be exploring as part of that event.

Quite co-incidentally, Mark Braunstein from Georgia Tech asked me to do a presentation for their FHIR class which is happening in a couple of days, so I thought it a good idea to write this walk through of the complete process from end to end – from a requirement to a profiled resource instance.

We’ll return to the more detailed consideration of the steps after this.

Read more of this post


Following my post yesterday, someone who shall remain nameless (you know who you are Brian) suggested that it would also be good to be able to make GraphQL queries from clinFHIR. I know even less about GraphQL than I did about FHIRPath, but as Grahame has an implementation on his server, it was a reasonably straightforward matter to put a simple UI in so you can experiment with that against a Patient resource. (GraphQL can do a lot more than that, but this is a start).

Read more of this post

Projects in clinFHIR

One of the things that the Resource Builder in clinFHIR does is to allow you to use different servers for the various ‘roles‘ that are needed. These include:

  • The Conformance server – holds resources like StructureDefinition and NamingSystem
  • The Terminology server – ValueSets and the Terminology operations required by the different applications within clinFHIR
  • The Data server – where patient (and other) data is kept.

This isn’t an official part of the spec, but is a useful way to think about the main ‘components’ of a FHIR solution.


While flexible, this can make it somewhat more complicated to use, as you need to select the right combination of servers to suit a particular need.

Read more of this post

Videos on clinFHIR Scenario Builder and Logical Modelers

So in a fit of enthusiasm I offered to do a short demo of clinFHIR at the CATonFHIR event in the UK in a couple of days. As it turns out, the reality of the timing is that this would be at 2am my time (New Zealand). Of course I’d be happy to do this to support FHIR (and have done it before), but when the organizer Philip Scott suggested I record a video that they could show instead of a live performance I jumped at the chance!

And having done one, a second wasn’t that hard…

Read more of this post

Adding extensions to a resource

So a colleague of mine asked me this morning if the clinFHIR scenario builder supported modifier extensions.

If you’re not familiar with these, they are extensions that actually change the meaning of the resource to which they are attached. For example, if you wanted to indicate that a patient did not have a particular condition, then you could attach a ‘negation’ extension to the Condition to indicate that you looked for – but did not find – that particular condition. Or, a statement that indicates that a patient is not taking a particular medication.

Read more of this post

Using Scenario Builder for developing Resources

I had an email this morning from the organizers of the ‘Clinicians On FHIR’ event at the upcoming Working Group Meeting asking if it was possible to use the Scenario Builder to examine a resource type that had been altered after publication (i.e. one that was being worked on for the next release of FHIR – R4). As it turns out, this is quite straightforward to do – albeit with some limitations.

Read more of this post