Search code examples
hl7-fhir

How to choose between a FHIR category and a FHIR extension for encoding a custom field value


I have some custom fields that I try to map onto FHIR resources and I am having some doubts on whether some of them should be a FHIR category or an extension.

Some fields seem to be containing duplicate information, so I was leaning more towards using categories to encode them.

For example, I have a field that will go into Procedure.code that will encode a specific medical procedure, using a ValueSet.

But then, I have some fields (either of boolean type or multiple-select types) that specify if the procedure/treatment is an immunotherapy, a hormone therapy, a stem cell transplantation, etc. Which, I suppose, could be inferred by the previous field as well.

So, instead of using an extension to add an extra field in the Procedure resource (or the MedicationAdministration resource when applicable), I was thinking of adding a category on the procedure, which would show whether the procedure is an immunotherapy or not, etc.

Does this make sense, is it a valid use-case for a category, and are there any guidelines on whether to choose the one (using a category) over the other (extending existing resources)?


Solution

  • As a rule, it's better to send content in a core element if it fits. More systems will recognize and understand your data.

    The examples you've provided are all reasonable to express as categories - though you'll need to find or define codes in a code system to go there. (You won't be able to send just booleans.)

    The other possibility is to send multiple codings with different levels of granularity in Procedure.code. However, given that category exists for high-level expressions of the procedure type, that would be the best place for what you're trying to share.