Custom attributes in Observation resource


We have implemented FHIR Observation resource to send Labs and Vitals data. Now, we want to send some additional details like “Information Source” while sending Labs and Vitals data through FHIR Observation resource.
Information Source means Source of the Information being captured and it may have following values:

  • Patient
  • Parent/Guardian
  • Caregiver/Others
  • Medical Records
  • System Records

So, which attribute of Observation resource we can use to achieve this? Can we use Category attribute with Snomed codified values. If yes, then we have to find Snomed of each of the above value and use it. If no, then which attribute of Observation resource we can use to fulfill this requirements.

If none of the Observation attributes align with this requirement then how can we add customized key value pair in the payload of Observation? Is it achievable through Extension? If yes, the how?


That list of codes is somewhat problematic because the codes aren’t mutually exclusive. An Observation might come from medical records but be reported by the Patient. And Parent/Guardian may also be a CareGiver.

Observation allows an extension on Performer that captures different performer functions (Extension: performerFunction - FHIR v4.6.0). One of the possible function codes is ‘INF’ (informant). I.e. who is the person/device/organization who asserted the Observation is true. The referenced Organization.performer might be the Patient, a RelatedPerson (relationship would distinguish patient/guardian from others acting based on a personal relationship), or Practitioner or Organization. The latter could be used to indicate a particular department.

Information about data source can also be conveyed via the Provenance resource.

Thanks for the information and looks like performerFunction works for us.

As I understood correctly, you mean to say that, we can use performerFunction extension to achieve “Information Source”, Correct?

Does this extension available in FHIR v4.0.0 because we are currently using v4?

We are already using performer attribute to populate practitioner/provider who is responsible for this observation. So, in addition to the performer we have to use performerFunction extension to populate “Information source”, Is this correct?


Yes, this is available in R4. (Extension: performerFunction - FHIR v4.0.1)

What you’ll do is specify a performer that is the ‘information source’ and then tag it as being such using the performerFunction extension.