Release 5 Draft Ballot

This page is part of the FHIR Specification (v4.6.0: R5 Draft Ballot). 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

Operation-conceptmap-translate.xml

Vocabulary Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: Not linked to any defined compartments

Raw XML (canonical form + also see XML Format Specification)

Jump past Narrative

Operation Definition

<?xml version="1.0" encoding="UTF-8"?>

<OperationDefinition xmlns="http://hl7.org/fhir">
  <id value="ConceptMap-translate"/> 
  <text> 
    <status value="extensions"/> 
    <div xmlns="http://www.w3.org/1999/xhtml">
      <h2> translate</h2> 
      <p> OPERATION: translate</p> 
      <p> The official URL for this operation definition is: </p> 
      <pre> http://hl7.org/fhir/OperationDefinition/ConceptMap-translate</pre> 
      <div> 
        <p> Translate a code from one value set to another, based on the existing value set and concept
           maps resources, and/or other additional knowledge available to the server.</p> 

        <p> One (and only one) of the in parameters (code, coding, codeableConcept) must be provided,
           to identify the code that is to be translated.</p> 

        <p> The operation returns a set of parameters including a 'result' for whether there is an
           acceptable match, and a list of possible matches. Note that the list of matches may include
           notes of codes for which mapping is specifically excluded (i.e. 'not-related-to'), so
           implementers have to check the target.relationship for each match.</p> 

      </div> 
      <p> URL: [base]/ConceptMap/$translate</p> 
      <p> URL: [base]/ConceptMap/[id]/$translate</p> 
      <p> Parameters</p> 
      <table class="grid">
        <tr> 
          <td> 
            <b> Use</b> 
          </td> 
          <td> 
            <b> Name</b> 
          </td> 
          <td> 
            <b> Cardinality</b> 
          </td> 
          <td> 
            <b> Type</b> 
          </td> 
          <td> 
            <b> Binding</b> 
          </td> 
          <td> 
            <b> Documentation</b> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> url</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A canonical URL for a concept map. The server must know the concept map (e.g. it is defined
                 explicitly in the server's concept maps, or it is defined implicitly by some code system
                 known to the server.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> conceptMap</td> 
          <td> 0..1</td> 
          <td> 
            <a href="conceptmap.html">ConceptMap</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The concept map is provided directly as part of the request. Servers may choose not to
                 accept concept maps in this fashion.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> conceptMapVersion</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The identifier that is used to identify a specific version of the concept map to be used
                 for the translation. This is an arbitrary value managed by the concept map author and
                 is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd)
                 if a managed version is not available.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> code</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The code that is to be translated. If a code is provided, a system must be provided</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> system</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The system for the code that is to be translated</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> version</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The version of the system, if one was provided in the source data</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> sourceScope</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Limits the scope of the $translate operation to source codes (ConceptMap.group.element.code)
                 that are members of this value set.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> coding</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#Coding">Coding</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A coding to translate</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> codeableConcept</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#CodeableConcept">CodeableConcept</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A full codeableConcept to validate. The server can translate any of the coding values
                 (e.g. existing translations) as it chooses</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> targetScope</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Limits the scope of the $translate operation to target codes (ConceptMap.group.element.target.code)
                 that are members of this value set.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> targetSystem</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> identifies a target code system in which a mapping is sought. This parameter is an alternative
                 to the target parameter - only one is required. Searching for any translation to a target
                 code system irrespective of the context (e.g. target valueset) may lead to unsafe results,
                 and it is at the discretion of the server to decide when to support this operation</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> dependency</td> 
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> Another element that may help produce the correct mapping</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> dependency.element</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The element for this dependency</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> dependency.concept</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#CodeableConcept">CodeableConcept</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The value for this dependency</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> reverse</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#boolean">boolean</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> If true, then the operation should return all the codes that are mapped to the 'code'/'coding'/'code
                ableConcept' input parameter. In this case:</p> 

              <p> The input code or coding(s) must belong to the target{{Scope}} ValueSet (rather than the
                 source{{Scope}} ValueSet)</p> 

              <p> Any provided dependency parameters are matched against ConceptMap.group.element.target.product
                 (rather than ConceptMap.group.element.target.dependsOn)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> result</td> 
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#boolean">boolean</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> True if the concept could be translated successfully. The value can only be true if at
                 least one returned match has a relationship other than 'not-related-to'.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> message</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Error details, for display to a human. If this is provided when result = true, the message
                 carries hints and warnings (e.g. a note that the matches could be improved by providing
                 additional detail)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match</td> 
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> A concept in the target value set with a relationship. Note that there may be multiple
                 matches of equal or differing relationships, and the matches may include the 'not-related-to'
                 relationship value which means that there is no translation</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.relationship</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A code indicating the relationship (e.g., equivalent) of the translation, using values
                 from 
                <a href="valueset-concept-map-relationship.html">ConceptMapRelationship</a> 
              </p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.concept</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#Coding">Coding</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The translation outcome. Note that this would never have userSelected = true, since the
                 process of translations implies that the user is not selecting the code (and only the
                 client could know differently)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.product</td> 
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> Another element that is the product of this mapping</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.product.property</td> 
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The element for this product</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.product.value</td> 
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The value for this product</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.dependsOn</td> 
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> An element that this mapping depends on</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.dependsOn.property</td> 
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The element for this product</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.dependsOn.value</td> 
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The value for this product</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.originalMap</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The canonical reference to the concept map from which this mapping comes from</p> 

            </div> 
          </td> 
        </tr> 
      </table> 
      <div/>  
    </div> 
  </text> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
    <valueInteger value="1"/> 
  </extension> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
    <valueCode value="trial-use"/> 
  </extension> 
  <url value="http://hl7.org/fhir/OperationDefinition/ConceptMap-translate"/> 
  <version value="4.6.0"/> 
  <name value="translate"/> 
  <title value="Concept Translation"/> 
  <status value="draft"/> 
  <kind value="operation"/> 
  <date value="2021-04-15T12:25:09+10:00"/> 
  <publisher value="HL7 (FHIR Project)"/> 
  <contact> 
    <telecom> 
      <system value="url"/> 
      <value value="http://hl7.org/fhir"/> 
    </telecom> 
    <telecom> 
      <system value="email"/> 
      <value value="fhir@lists.hl7.org"/> 
    </telecom> 
  </contact> 
  <description value="Translate a code from one value set to another, based on the existing value set and concept
   maps resources, and/or other additional knowledge available to the server. 

 One (and only one) of the in parameters (code, coding, codeableConcept) must be provided,
   to identify the code that is to be translated.  

 The operation returns a set of parameters including a 'result' for whether there is an
   acceptable match, and a list of possible matches. Note that the list of matches may include
   notes of codes for which mapping is specifically excluded (i.e. 'not-related-to'), so
   implementers have to check the target.relationship for each match."/> 
  <affectsState value="false"/> 
  <code value="translate"/> 
  <resource value="ConceptMap"/> 
  <system value="false"/> 
  <type value="true"/> 
  <instance value="true"/> 
  <parameter> 
    <name value="url"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A canonical URL for a concept map. The server must know the concept map (e.g. it is defined
     explicitly in the server's concept maps, or it is defined implicitly by some code system
     known to the server."/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="conceptMap"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The concept map is provided directly as part of the request. Servers may choose not to
     accept concept maps in this fashion."/> 
    <type value="ConceptMap"/> 
  </parameter> 
  <parameter> 
    <name value="conceptMapVersion"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The identifier that is used to identify a specific version of the concept map to be used
     for the translation. This is an arbitrary value managed by the concept map author and
     is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd)
     if a managed version is not available."/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="code"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The code that is to be translated. If a code is provided, a system must be provided"/> 
    <type value="code"/> 
  </parameter> 
  <parameter> 
    <name value="system"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The system for the code that is to be translated"/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="version"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The version of the system, if one was provided in the source data"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="sourceScope"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="Limits the scope of the $translate operation to source codes (ConceptMap.group.element.code)
     that are members of this value set."/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="coding"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A coding to translate"/> 
    <type value="Coding"/> 
  </parameter> 
  <parameter> 
    <name value="codeableConcept"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A full codeableConcept to validate. The server can translate any of the coding values
     (e.g. existing translations) as it chooses"/> 
    <type value="CodeableConcept"/> 
  </parameter> 
  <parameter> 
    <name value="targetScope"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="Limits the scope of the $translate operation to target codes (ConceptMap.group.element.target.code)
     that are members of this value set."/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="targetSystem"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="identifies a target code system in which a mapping is sought. This parameter is an alternative
     to the target parameter - only one is required. Searching for any translation to a target
     code system irrespective of the context (e.g. target valueset) may lead to unsafe results,
     and it is at the discretion of the server to decide when to support this operation"/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="dependency"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="Another element that may help produce the correct mapping"/> 
    <part> 
      <name value="element"/> 
      <use value="in"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="The element for this dependency"/> 
      <type value="uri"/> 
    </part> 
    <part> 
      <name value="concept"/> 
      <use value="in"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="The value for this dependency"/> 
      <type value="CodeableConcept"/> 
    </part> 
  </parameter> 
  <parameter> 
    <name value="reverse"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="If true, then the operation should return all the codes that are mapped to the 'code'/'coding'/'code
    ableConcept' input parameter. In this case:

The input code or coding(s) must belong to the target{{Scope}} ValueSet (rather than the
     source{{Scope}} ValueSet)

Any provided dependency parameters are matched against ConceptMap.group.element.target.product
     (rather than ConceptMap.group.element.target.dependsOn)"/> 
    <type value="boolean"/> 
  </parameter> 
  <parameter> 
    <name value="result"/> 
    <use value="out"/> 
    <min value="1"/> 
    <max value="1"/> 
    <documentation value="True if the concept could be translated successfully. The value can only be true if at
     least one returned match has a relationship other than 'not-related-to'."/> 
    <type value="boolean"/> 
  </parameter> 
  <parameter> 
    <name value="message"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="Error details, for display to a human. If this is provided when result = true, the message
     carries hints and warnings (e.g. a note that the matches could be improved by providing
     additional detail)"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="match"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="A concept in the target value set with a relationship. Note that there may be multiple
     matches of equal or differing relationships, and the matches may include the 'not-related-to'
     relationship value which means that there is no translation"/> 
    <part> 
      <name value="relationship"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="A code indicating the relationship (e.g., equivalent) of the translation, using values
       from [ConceptMapRelationship](valueset-concept-map-relationship.html)"/> 
      <type value="code"/> 
    </part> 
    <part> 
      <name value="concept"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="The translation outcome. Note that this would never have userSelected = true, since the
       process of translations implies that the user is not selecting the code (and only the
       client could know differently)"/> 
      <type value="Coding"/> 
    </part> 
    <part> 
      <name value="product"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="*"/> 
      <documentation value="Another element that is the product of this mapping"/> 
      <part> 
        <name value="property"/> 
        <use value="out"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="The element for this product"/> 
        <type value="uri"/> 
      </part> 
      <part> 
        <name value="value"/> 
        <use value="out"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="The value for this product"/> 
        <type value="uri"/> 
      </part> 
    </part> 
    <part> 
      <name value="dependsOn"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="*"/> 
      <documentation value="An element that this mapping depends on"/> 
      <part> 
        <name value="property"/> 
        <use value="out"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="The element for this product"/> 
        <type value="uri"/> 
      </part> 
      <part> 
        <name value="value"/> 
        <use value="out"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="The value for this product"/> 
        <type value="uri"/> 
      </part> 
    </part> 
    <part> 
      <name value="originalMap"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="The canonical reference to the concept map from which this mapping comes from"/> 
      <type value="uri"/> 
    </part> 
  </parameter> 
</OperationDefinition> 

Usage note: every effort has been made to ensure that the examples are correct and useful, but they are not a normative part of the specification.