FHIR to SoR valuesets hardly ever have a one to one mapping - there is always the need to map one to many or vice-versa.
In that context, as part of any FHIR response from our server, we need to supply SoR specific reference data along with a chosen FHIR code/codeableconcept. For example, see status below -
{
"resourceType": "Appointment",
"id": "example",
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Brian MRI results discussion</div>"
},
"status": "booked",
**<<"SoR_status" : "XYZ_Booked">>**
}
The idea being that consumers need to supply the SoR values as well during POST/PUT/PATCH interactions for correctly mapping to the SoR.
We have considered using _fhir_comments or extensions to carry such values for each relevant attribute, but, there are limitations with both - _fhir_comments is not very intuitive for this purpose and with extensions we would need to create several (possibly duplicating) as most resources and their reference data attributes would need to carry such values.
What is the recommendation in this case - should we go with extensions? If so, is there a better (generic) way to implement the extensions - should we consider extending types instead of resources? Any other suggestions would also be welcome.
Extensions are the appropriate way of conveying this information. Comments are never intended to convey semanticly meaningful information. Their primary purpose is to give guidance when reading example instances.
It's perfectly possible to define an extension that's allowed to be used on multiple resources. So if you have a concept that needs to appear on many/most resources, you only need to define one extension. Simply list each allowed resources as an allowed 'context' for the extension.