2nd DSTU Draft For Comment

This page is part of the FHIR Specification (v0.4.0: DSTU 2 Draft). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3 R2

6.25 Resource ConceptMap - Content

This resource maintained by the Vocabulary Work Group

A statement of relationships from one set of concepts to one or more other concepts - either code systems or data elements, or classes in class models.

6.25.1 Scope and Usage

A concept map defines a mapping from a concept defined in one system to one or more concepts defined in other systems. Mappings are always framed within the concept of value sets - they are specific to a context of use.

Note that the mappings are one way - from the source to the destination. In many cases, the reverse mappings are valid, but this cannot be assumed to be the case.

Mappings between code systems are only defined in the context of the specified source and destination valuesets. The mappings may be useful in other contexts, but this must be determined based on the context of use and meaning; it cannot be taken for granted automatically. All code systems have value sets that include the entire code system, and these value sets can be used for mappings that are valid in all contexts.

Each mapping for a concept from source to destination also includes an [equivalence] property that specifies how similar the mapping is (or, in some cases, that there is no valid mapping).

6.25.2 Background and Context

Further discussion of the issues involved in mapping between concept definition systems can be found in the HL7 v3 Core Principles document and the functionality described in the OMG CTS 2 specification.

6.25.3 Resource Content

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. ConceptMap DomainResourceA map from one set of concepts to one or more other concepts
... url Σ0..1uriGlobally unique logical id for concept map
... identifier Σ0..1IdentifierAdditional identifier for the concept map
... version Σ0..1stringLogical id for this version of the concept map
... name Σ0..1stringInformal name for this concept map
... publisher Σ0..1stringName of the publisher (Organization or individual)
... contact Σ0..*ElementContact details of the publisher
.... name Σ0..1stringName of a individual to contact
.... telecom Σ0..*ContactPointContact details for individual or publisher
... description Σ0..1stringHuman language description of the concept map
... requirements 0..1stringWhy is this needed?
... copyright 0..1stringUse and/or Publishing restrictions
... status M Σ1..1codedraft | active | retired
ValueSetStatus (Required)
... experimental Σ0..1booleanIf for testing purposes, not real usage
... date Σ0..1dateTimeDate for given status
... source[x] ΣIdentifies the source of the concepts which are being mapped
.... sourceUri1..1uri
.... sourceReference1..1ValueSet | Profile
... target[x] ΣProvides context to the mappings
.... targetUri1..1uri
.... targetReference1..1ValueSet | Profile
... element 0..*ElementMappings for a concept from the source set
.... codeSystem 0..1uriCode System (if value set crosses code systems)
.... code 0..1codeIdentifies element being mapped
.... dependsOn 0..*ElementOther elements required for this mapping (from context)
..... element 1..1uriReference to element/field/valueset mapping depends on
..... codeSystem 1..1uriCode System (if necessary)
..... code 1..1stringValue of the referenced element
.... map I0..*ElementTarget of this map
If the map is narrower or inexact, there SHALL be some comments
..... codeSystem 0..1uriSystem of the target (if necessary)
..... code 0..1codeCode that identifies the target element
..... equivalence M1..1codeequivalent | equal | wider | subsumes | narrower | specialises | inexact | unmatched | disjoint
ConceptMapEquivalence (Required)
..... comments I0..1stringDescription of status/issues in mapping
..... product 0..*see dependsOnOther concepts that this mapping also produces

UML Diagram

ConceptMap (DomainResource)The uri that is used to identify this concept map when it is referenced in a specification, model, design or an instance (should be globally unique URI, and an be urn:uuid: or urn:oid:)url : uri 0..1Formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier 0..1The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestampversion : string 0..1A free text natural language name describing the concept mapname : string 0..1The name of the individual or organization that published the concept mappublisher : string 0..1A free text natural language description of the use of the concept map - reason for definition, conditions of use, etcdescription : string 0..1Explains why this concept map is needed and why it's been constrained as it hasrequirements : string 0..1A copyright statement relating to the concept map and/or its contentscopyright : string 0..1The status of the concept map (this element modifies the meaning of other elements)status : code 1..1 « The lifecycle status of a Value Set or Concept MapValueSetStatus »This ConceptMap was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usageexperimental : boolean 0..1The date that the concept map status was last changeddate : dateTime 0..1The source value set that specifies the concepts that are being mappedsource[x] : uri|Reference(ValueSet|Profile) 1..1The target value set provides context to the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are madetarget[x] : uri|Reference(ValueSet|Profile) 1..1ContactThe name of an individual to contact regarding the concept mapname : string 0..1Contact details for individual (if a name was provided) or the publishertelecom : ContactPoint 0..*ElementCode System (if the source is a value value set that crosses more than one code system)codeSystem : uri 0..1Identity (code or path) or the element/item being mappedcode : code 0..1OtherElementA reference to a specific concept that holds a coded value. This can be an element in a FHIR resource, or a specific reference to a data element in a different specification (e.g. v2) or a general reference to a kind of data field, or a reference to a value set with an appropriately narrow definitionelement : uri 1..1The code system of the dependency code (if the source/dependency is a value set that cross code systems)codeSystem : uri 1..1Identity (code or path) or the element/item that the map depends on / refers tocode : string 1..1MapThe code system of the target code (if the target is a value set that cross code systems)codeSystem : uri 0..1Identity (code or path) or the element/item that the map refers tocode : code 0..1The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from source to target (e.g. the source is 'wider' than the target (this element modifies the meaning of other elements)equivalence : code 1..1 « The degree of equivalence between conceptsConceptMapEquivalence »A description of status/issues in mapping that conveys additional information not represented in the structured datacomments : string 0..1Contacts to assist a user in finding and communicating with the publishercontact0..*A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified valuedependsOn0..*A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied onproduct0..*A concept from the target value set that this concept maps tomap0..*Mappings for an individual concept in the source to one or more concepts in the targetelement0..*

XML Template

<ConceptMap xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Globally unique logical id for concept map -->
 <identifier><!-- 0..1 Identifier Additional identifier for the concept map --></identifier>
 <version value="[string]"/><!-- 0..1 Logical id for this version of the concept map -->
 <name value="[string]"/><!-- 0..1 Informal name for this concept map -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) -->
 <contact>  <!-- 0..* Contact details of the publisher -->
  <name value="[string]"/><!-- 0..1 Name of a individual to contact -->
  <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom>
 </contact>
 <description value="[string]"/><!-- 0..1 Human language description of the concept map -->
 <requirements value="[string]"/><!-- 0..1 Why is this needed? -->
 <copyright value="[string]"/><!-- 0..1 Use and/or Publishing restrictions -->
 <status value="[code]"/><!-- 1..1 draft | active | retired -->
 <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date for given status -->
 <source[x]><!-- 1..1 uri|Reference(ValueSet|Profile) 
     Identifies the source of the concepts which are being mapped --></source[x]>
 <target[x]><!-- 1..1 uri|Reference(ValueSet|Profile) Provides context to the mappings --></target[x]>
 <element>  <!-- 0..* Mappings for a concept from the source set -->
  <codeSystem value="[uri]"/><!-- 0..1 Code System (if value set crosses code systems) -->
  <code value="[code]"/><!-- 0..1 Identifies element being mapped -->
  <dependsOn>  <!-- 0..* Other elements required for this mapping (from context) -->
   <element value="[uri]"/><!-- 1..1 Reference to element/field/valueset mapping depends on -->
   <codeSystem value="[uri]"/><!-- 1..1 Code System (if necessary) -->
   <code value="[string]"/><!-- 1..1 Value of the referenced element -->
  </dependsOn>
  <map>  <!-- 0..* Target of this map -->
   <codeSystem value="[uri]"/><!-- 0..1 System of the target (if necessary) -->
   <code value="[code]"/><!-- 0..1 Code that identifies the target element -->
   <equivalence value="[code]"/><!-- 1..1 equivalent | equal | wider | subsumes | narrower | specialises | inexact | unmatched | disjoint -->
   <comments value="[string]"/><!-- ?? 0..1 Description of status/issues in mapping -->
   <product><!-- 0..* Content as for ConceptMap.element.dependsOn Other concepts that this mapping also produces --></product>
  </map>
 </element>
</ConceptMap>

JSON Template

{doco
  "resourceType" : "ConceptMap",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Globally unique logical id for concept map
  "identifier" : { Identifier }, // Additional identifier for the concept map
  "version" : "<string>", // Logical id for this version of the concept map
  "name" : "<string>", // Informal name for this concept map
  "publisher" : "<string>", // Name of the publisher (Organization or individual)
  "contact" : [{ // Contact details of the publisher
    "name" : "<string>", // Name of a individual to contact
    "telecom" : [{ ContactPoint }] // Contact details for individual or publisher
  }],
  "description" : "<string>", // Human language description of the concept map
  "requirements" : "<string>", // Why is this needed?
  "copyright" : "<string>", // Use and/or Publishing restrictions
  "status" : "<code>", // R! draft | active | retired
  "experimental" : <boolean>, // If for testing purposes, not real usage
  "date" : "<dateTime>", // Date for given status
  // source[x]: Identifies the source of the concepts which are being mapped. One of these 2:
  "sourceUri" : "<uri>",
  "sourceReference" : { Reference(ValueSet|Profile) },
  // target[x]: Provides context to the mappings. One of these 2:
  "targetUri" : "<uri>",
  "targetReference" : { Reference(ValueSet|Profile) },
  "element" : [{ // Mappings for a concept from the source set
    "codeSystem" : "<uri>", // Code System (if value set crosses code systems)
    "code" : "<code>", // Identifies element being mapped
    "dependsOn" : [{ // Other elements required for this mapping (from context)
      "element" : "<uri>", // R! Reference to element/field/valueset mapping depends on
      "codeSystem" : "<uri>", // R! Code System (if necessary)
      "code" : "<string>" // R! Value of the referenced element
    }],
    "map" : [{ // Target of this map
      "codeSystem" : "<uri>", // System of the target (if necessary)
      "code" : "<code>", // Code that identifies the target element
      "equivalence" : "<code>", // R! equivalent | equal | wider | subsumes | narrower | specialises | inexact | unmatched | disjoint
      "comments" : "<string>", // C? Description of status/issues in mapping
      "product" : [{ Content as for ConceptMap.element.dependsOn }] // Other concepts that this mapping also produces
    }]
  }]
}

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. ConceptMap DomainResourceA map from one set of concepts to one or more other concepts
... url Σ0..1uriGlobally unique logical id for concept map
... identifier Σ0..1IdentifierAdditional identifier for the concept map
... version Σ0..1stringLogical id for this version of the concept map
... name Σ0..1stringInformal name for this concept map
... publisher Σ0..1stringName of the publisher (Organization or individual)
... contact Σ0..*ElementContact details of the publisher
.... name Σ0..1stringName of a individual to contact
.... telecom Σ0..*ContactPointContact details for individual or publisher
... description Σ0..1stringHuman language description of the concept map
... requirements 0..1stringWhy is this needed?
... copyright 0..1stringUse and/or Publishing restrictions
... status M Σ1..1codedraft | active | retired
ValueSetStatus (Required)
... experimental Σ0..1booleanIf for testing purposes, not real usage
... date Σ0..1dateTimeDate for given status
... source[x] ΣIdentifies the source of the concepts which are being mapped
.... sourceUri1..1uri
.... sourceReference1..1ValueSet | Profile
... target[x] ΣProvides context to the mappings
.... targetUri1..1uri
.... targetReference1..1ValueSet | Profile
... element 0..*ElementMappings for a concept from the source set
.... codeSystem 0..1uriCode System (if value set crosses code systems)
.... code 0..1codeIdentifies element being mapped
.... dependsOn 0..*ElementOther elements required for this mapping (from context)
..... element 1..1uriReference to element/field/valueset mapping depends on
..... codeSystem 1..1uriCode System (if necessary)
..... code 1..1stringValue of the referenced element
.... map I0..*ElementTarget of this map
If the map is narrower or inexact, there SHALL be some comments
..... codeSystem 0..1uriSystem of the target (if necessary)
..... code 0..1codeCode that identifies the target element
..... equivalence M1..1codeequivalent | equal | wider | subsumes | narrower | specialises | inexact | unmatched | disjoint
ConceptMapEquivalence (Required)
..... comments I0..1stringDescription of status/issues in mapping
..... product 0..*see dependsOnOther concepts that this mapping also produces

UML Diagram

ConceptMap (DomainResource)The uri that is used to identify this concept map when it is referenced in a specification, model, design or an instance (should be globally unique URI, and an be urn:uuid: or urn:oid:)url : uri 0..1Formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier 0..1The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the profile author manually and the value should be a timestampversion : string 0..1A free text natural language name describing the concept mapname : string 0..1The name of the individual or organization that published the concept mappublisher : string 0..1A free text natural language description of the use of the concept map - reason for definition, conditions of use, etcdescription : string 0..1Explains why this concept map is needed and why it's been constrained as it hasrequirements : string 0..1A copyright statement relating to the concept map and/or its contentscopyright : string 0..1The status of the concept map (this element modifies the meaning of other elements)status : code 1..1 « The lifecycle status of a Value Set or Concept MapValueSetStatus »This ConceptMap was authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usageexperimental : boolean 0..1The date that the concept map status was last changeddate : dateTime 0..1The source value set that specifies the concepts that are being mappedsource[x] : uri|Reference(ValueSet|Profile) 1..1The target value set provides context to the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are madetarget[x] : uri|Reference(ValueSet|Profile) 1..1ContactThe name of an individual to contact regarding the concept mapname : string 0..1Contact details for individual (if a name was provided) or the publishertelecom : ContactPoint 0..*ElementCode System (if the source is a value value set that crosses more than one code system)codeSystem : uri 0..1Identity (code or path) or the element/item being mappedcode : code 0..1OtherElementA reference to a specific concept that holds a coded value. This can be an element in a FHIR resource, or a specific reference to a data element in a different specification (e.g. v2) or a general reference to a kind of data field, or a reference to a value set with an appropriately narrow definitionelement : uri 1..1The code system of the dependency code (if the source/dependency is a value set that cross code systems)codeSystem : uri 1..1Identity (code or path) or the element/item that the map depends on / refers tocode : string 1..1MapThe code system of the target code (if the target is a value set that cross code systems)codeSystem : uri 0..1Identity (code or path) or the element/item that the map refers tocode : code 0..1The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from source to target (e.g. the source is 'wider' than the target (this element modifies the meaning of other elements)equivalence : code 1..1 « The degree of equivalence between conceptsConceptMapEquivalence »A description of status/issues in mapping that conveys additional information not represented in the structured datacomments : string 0..1Contacts to assist a user in finding and communicating with the publishercontact0..*A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified valuedependsOn0..*A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied onproduct0..*A concept from the target value set that this concept maps tomap0..*Mappings for an individual concept in the source to one or more concepts in the targetelement0..*

XML Template

<ConceptMap xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 0..1 Globally unique logical id for concept map -->
 <identifier><!-- 0..1 Identifier Additional identifier for the concept map --></identifier>
 <version value="[string]"/><!-- 0..1 Logical id for this version of the concept map -->
 <name value="[string]"/><!-- 0..1 Informal name for this concept map -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (Organization or individual) -->
 <contact>  <!-- 0..* Contact details of the publisher -->
  <name value="[string]"/><!-- 0..1 Name of a individual to contact -->
  <telecom><!-- 0..* ContactPoint Contact details for individual or publisher --></telecom>
 </contact>
 <description value="[string]"/><!-- 0..1 Human language description of the concept map -->
 <requirements value="[string]"/><!-- 0..1 Why is this needed? -->
 <copyright value="[string]"/><!-- 0..1 Use and/or Publishing restrictions -->
 <status value="[code]"/><!-- 1..1 draft | active | retired -->
 <experimental value="[boolean]"/><!-- 0..1 If for testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date for given status -->
 <source[x]><!-- 1..1 uri|Reference(ValueSet|Profile) 
     Identifies the source of the concepts which are being mapped --></source[x]>
 <target[x]><!-- 1..1 uri|Reference(ValueSet|Profile) Provides context to the mappings --></target[x]>
 <element>  <!-- 0..* Mappings for a concept from the source set -->
  <codeSystem value="[uri]"/><!-- 0..1 Code System (if value set crosses code systems) -->
  <code value="[code]"/><!-- 0..1 Identifies element being mapped -->
  <dependsOn>  <!-- 0..* Other elements required for this mapping (from context) -->
   <element value="[uri]"/><!-- 1..1 Reference to element/field/valueset mapping depends on -->
   <codeSystem value="[uri]"/><!-- 1..1 Code System (if necessary) -->
   <code value="[string]"/><!-- 1..1 Value of the referenced element -->
  </dependsOn>
  <map>  <!-- 0..* Target of this map -->
   <codeSystem value="[uri]"/><!-- 0..1 System of the target (if necessary) -->
   <code value="[code]"/><!-- 0..1 Code that identifies the target element -->
   <equivalence value="[code]"/><!-- 1..1 equivalent | equal | wider | subsumes | narrower | specialises | inexact | unmatched | disjoint -->
   <comments value="[string]"/><!-- ?? 0..1 Description of status/issues in mapping -->
   <product><!-- 0..* Content as for ConceptMap.element.dependsOn Other concepts that this mapping also produces --></product>
  </map>
 </element>
</ConceptMap>

JSON Template

{doco
  "resourceType" : "ConceptMap",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // Globally unique logical id for concept map
  "identifier" : { Identifier }, // Additional identifier for the concept map
  "version" : "<string>", // Logical id for this version of the concept map
  "name" : "<string>", // Informal name for this concept map
  "publisher" : "<string>", // Name of the publisher (Organization or individual)
  "contact" : [{ // Contact details of the publisher
    "name" : "<string>", // Name of a individual to contact
    "telecom" : [{ ContactPoint }] // Contact details for individual or publisher
  }],
  "description" : "<string>", // Human language description of the concept map
  "requirements" : "<string>", // Why is this needed?
  "copyright" : "<string>", // Use and/or Publishing restrictions
  "status" : "<code>", // R! draft | active | retired
  "experimental" : <boolean>, // If for testing purposes, not real usage
  "date" : "<dateTime>", // Date for given status
  // source[x]: Identifies the source of the concepts which are being mapped. One of these 2:
  "sourceUri" : "<uri>",
  "sourceReference" : { Reference(ValueSet|Profile) },
  // target[x]: Provides context to the mappings. One of these 2:
  "targetUri" : "<uri>",
  "targetReference" : { Reference(ValueSet|Profile) },
  "element" : [{ // Mappings for a concept from the source set
    "codeSystem" : "<uri>", // Code System (if value set crosses code systems)
    "code" : "<code>", // Identifies element being mapped
    "dependsOn" : [{ // Other elements required for this mapping (from context)
      "element" : "<uri>", // R! Reference to element/field/valueset mapping depends on
      "codeSystem" : "<uri>", // R! Code System (if necessary)
      "code" : "<string>" // R! Value of the referenced element
    }],
    "map" : [{ // Target of this map
      "codeSystem" : "<uri>", // System of the target (if necessary)
      "code" : "<code>", // Code that identifies the target element
      "equivalence" : "<code>", // R! equivalent | equal | wider | subsumes | narrower | specialises | inexact | unmatched | disjoint
      "comments" : "<string>", // C? Description of status/issues in mapping
      "product" : [{ Content as for ConceptMap.element.dependsOn }] // Other concepts that this mapping also produces
    }]
  }]
}

 

Alternate definitions: Schema/Schematron, Resource Profile (XML, JSON), Questionnaire

6.25.3.1 Terminology Bindings

PathDefinitionTypeReference
ConceptMap.status The lifecycle status of a Value Set or Concept MapFixedhttp://hl7.org/fhir/valueset-status
ConceptMap.element.map.equivalence The degree of equivalence between conceptsFixedhttp://hl7.org/fhir/concept-equivalence

6.25.3.2 Constraints

  • cmd-1: On ConceptMap.element.map: If the map is narrower or inexact, there SHALL be some comments (xpath on f:ConceptMap/f:element/f:map: exists(f:comments) or ((f:equivalence/@value != 'narrower') and (f:equivalence/@value != 'inexact')))

6.25.4 Notes

  • The value of the system and code element are the same as used by the Coding data type
  • When a mapping equivalence is characterized as "narrower", some explanation of the scope difference SHALL be provided in the comments
  • The concept map is a statement of mapping in a single direction. The existence of a matching mapping in the reverse direction cannot be assumed to exist automatically, but only through human review

6.25.5 Search Parameters

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionPaths
datedateThe concept map publication dateConceptMap.date
dependsontokenReference to element/field/valueset mapping depends onConceptMap.element.dependsOn.element
descriptionstringText search in the description of the concept mapConceptMap.description
identifiertokenAdditional identifier for the concept mapConceptMap.identifier
namestringName of the concept mapConceptMap.name
producttokenReference to element/field/valueset mapping depends onConceptMap.element.map.product.element
publisherstringName of the publisher of the concept mapConceptMap.publisher
sourcereferenceThe system for any concepts mapped by this concept mapConceptMap.source[x]
(ValueSet, Profile)
statustokenStatus of the concept mapConceptMap.status
systemtokenThe system for any destination concepts mapped by this mapConceptMap.element.map.codeSystem
targetreferenceProvides context to the mappingsConceptMap.target[x]
(ValueSet, Profile)
urltokenThe url of the concept mapConceptMap.url
versiontokenThe version identifier of the concept mapConceptMap.version