Wednesday, March 4, 2020

Using the FHIR ConceptMap for mapping between Information Models


One of the notions that the V2 to FHIR project has adopted in development of a representation is the use of  ConceptMap to represent information mapping models between different representations.  Key to this is the notion that there is an identifier for each concept in an information model that can uniquely identify the data element being mapped.

If you've got XML, there's a pretty ubiquitous way to address that, using an XPath.  If there's the JSON representation, one can also use a JavaScript notation to identify the item.  Another representation that's format independent is FHIR Path, and there can be (and usually is) more than one way to represent a path using FHIR Path (as there is for XPath and do some degree also JavaScript notation.  And as I mentioned in a previous post, there's a way to represent just about any structured content in a FHIR StructureDefinition resource.  So, assuming a StructureDefinition exists, there's also a representation based on StructureDefinition that could be used.

The point is, these are unique identifiers for a concept in an information model.  If you've taken a CDA data types class from me, you know I teach identifiers first, and concept descriptors (coded data) second, and that I basically say "a code is an identifier for a concept in a coding system, just like an ID is an identifier for something in a naming system".

So, given that we have unique identifiers for the concepts in the model, otherwise the same as a code in a coding system, we have a tool to use.  The FHIR ConceptMap resource provides a way to map from one code to another.  So, we can now map between information models using the FHIR ConceptMap resource.

We do need to address a few more things about mapping before this is fully resolved.
  1. When mapping concepts, there may be preconditions that have to be true before the mapping is invoked.  This is supported by the ConceptMap.dependsOn property associated with a mapping target.
  2. When a mapping is invoked, there may be additional information products produced by the mapping.  This is supported by the ConceptMap.product property associated with a mapping target.
  3. When a mapping is invoked, translation may be needed by mapping coded values from one value set to another.  This means that the mapping depends on yet another ConceptMap that specifies how to go from one value set to another.  That's effectively another precondition on the mapping (or at least how I interpret it).
There's other data that's used in the V2 to FHIR Project that we are planning to include in the ConceptMap.  Some have suggested use of extension for this, but frankly, I think this can be addressed through the product property, since these are simply additional "outputs" of the mapping.

For additional inputs, that's really reference to a model, and for that, I think extensions might be appropriate.

   Keith

1 comment:

  1. I expect to see some comments on the ihe iti svcm profile

    ReplyDelete