Not all resource references point to a FHIR resource.
This can come as a surprise when you encounter it in real data. It can be especially surprising if your solution depends on being able to successfully and accurately query an element by resource reference.
No element in the reference data type is mandatory.
I’ve encounter references that store simple “display” strings with no link or pointer to supporting data:
Dr. Sharon Koeppen
More common is a single identifier that points to an entity in another system by way of their business identifier. Not a FHIR resource that can be resolved inside the local FHIR server or inside another FHIR server.

Here’s an example for the Patient’s generalPractitioner element that uses an identifier: Github
If the flow of incoming data is not controlled by you and if you haven’t “locked down” a reference element to insist on a FHIR reference, you will encounter this type of reference element at some point.
Where it gets especially problematic is when you’re searching for resources by reference. A normal query would look like this:
/Patient/general-practitioner=Practitioner/b555b279-3e8e-4052-b06c-a9f235fd63e9
A query by reference identifier uses the “identifier” modifier and looks like this:
/Patient?general-practitioner:identifier=N15789584
The problem is, not all FHIR servers support the “identifier” search modifier, making the above query impossible to run on some servers.
Microsoft Azure and HAPI are examples.
There are three lessons to be learned from this.
- Do not assume a populated resource reference will point to a FHIR resource.
- You may need two search queries to get what you expect to get.
- Do not assume your FHIR server supports the “identifier” modifier.
More about identifiers as FHIR references.
---