FHIR extensions are a controversial topic.
There’s a school of thought that says no individual organization should create new extensions — that only officially sanctioned or “community driven” extensions should exist.
I see this as a “perfect world” Vs “real world” situation.
In the perfect world, all extensions that need to exist do exist. And if for some reason a new extension needs to be created, the community comes together, talks it out, and over time a consensus is reached and a new extension is born.
In the real world, businesses and organizations are building apps and solutions that use FHIR today. They have needs that need to be met today and they have release deadlines and business deadlines that do not allow the luxury of time.
Which means they create extensions, making many of the decisions around those extensions themselves.
This is not going to change — not in the real world.
So how do we make the best of a less than ideal situation?
Before creating a new extension, ask yourself these questions:
1. Are you sure you need an extension?
Maybe your use case is already handled by resources or elements you’re unfamiliar with.
2. Does an extension already exist that meets your requirements?
An official extension, an unofficial extension, or a full-on Implementation Guide.
3. Is the extension filling a need met in a different version of FHIR?
Consider using a backport extension.
4. Has the community already addressed your need?
Ask on the FHIR chat forum. Chances are someone has had your requirement in the past and a solution was offered.
If none of the above leads to an answer, if there’s no alternative to creating a new extension to meet your requirement, then make the decision with confidence.
Here’s a post I wrote a year ago documenting the 10 steps to create a new FHIR extension: https://darrendevitt.com/10-steps-to-create-a-new-fhir-extension/
---