Release 5

This page is part of the FHIR Specification (v5.0.0: R5 - STU). This is the current published version in it's permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions . Page versions: R5 R4B R4 R3

Example OperationDefinition/CodeSystem-lookup (XML)

Terminology Infrastructure Work GroupMaturity Level: N/AStandards Status: Informative

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

Operation Definition

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

<OperationDefinition xmlns="http://hl7.org/fhir">
  <id value="CodeSystem-lookup"/> 
  <text> 
    <status value="extensions"/> 
    <div xmlns="http://www.w3.org/1999/xhtml">
      <p> URL: [base]/CodeSystem/$lookup</p> 
      <p> URL: [base]/CodeSystem/[id]/$lookup</p> 
      <p> Parameters</p> 
      <table class="grid">
        <tr> 
          <td> 
            <b> Use</b> 
          </td> 
          <td> 
            <b> Name</b> 
          </td> 
          <td> 
            <b> Scope</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> code</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The code that is to be located. If a code is provided, a system must be provided</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> system</td> 
          <td> type</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 located</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> version</td> 
          <td> type</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> coding</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#Coding">Coding</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A coding to look up</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> date</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#dateTime">dateTime</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The date for which the information should be returned. Normally, this is the current
                 conditions (which is the default value) but under some circumstances, systems need
                 to acccess this information as it would have been in the past. A typical example
                 of this would be where code selection is constrained to the set of codes that were
                 available when the patient was treated, not when the record is being edited. Note
                 that which date is appropriate is a matter for implementation policy.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> displayLanguage</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The requested language for display (see CodeSystem.concept.designation.language)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> property</td> 
          <td/>  
          <td> 0..*</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A property that the client wishes to be returned in the output. If no properties
                 are specified, the server chooses what to return. The following properties are
                 defined for all code systems: name, version (code system info) and code information:
                 display, designation, and lang.X where X is a designation language code. These
                 properties are returned explicitly in named out parameters with matching names,
                 or in designations. In addition, any property codes defined by 
                <a href="codesystem.html#defined-props">this specification</a>  or by the CodeSystem (
                <a href="codesystem-definitions.html#CodeSystem.property">CodeSystem.property.code</a> ) are allowed, and these are returned in the out parameter 
                <code> property</code> 
              </p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> useSupplement</td> 
          <td/>  
          <td> 0..*</td> 
          <td> 
            <a href="datatypes.html#canonical">canonical</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Supplements to take into account when performing the $lookup operation. The supplements
                 must be for the same CodeSystem. By default, supplements for the code system are
                 not automatically included except where they provide additional designations that
                 may be indicated by, for example, the displayLanguage parameter</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> name</td> 
          <td/>  
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A display name for the code system</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> version</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The version that these details are based on</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> display</td> 
          <td/>  
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The preferred display for this concept</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> definition</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A statement of the meaning of the concept from the code system</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> designation</td> 
          <td/>  
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> Additional representations for this concept</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> designation.language</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The language this designation is defined for</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> designation.use</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#Coding">Coding</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A code that details how this designation would be used</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> designation.additionalUse</td> 
          <td/>  
          <td> 0..*</td> 
          <td> 
            <a href="datatypes.html#Coding">Coding</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Additional codes that detail how this designation would be used (if there is more
                 than one)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> designation.value</td> 
          <td/>  
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The text value for this designation</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property</td> 
          <td/>  
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> One or more properties that contain additional information about the code, including
                 status. For complex terminologies (e.g. SNOMED CT, LOINC, medications), these properties
                 serve to decompose the code</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property.code</td> 
          <td/>  
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Identifies the property returned</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property.value</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#Coding">Coding</a>  | 
            <a href="datatypes.html#boolean">boolean</a>  | 
            <a href="datatypes.html#code">code</a>  | 
            <a href="datatypes.html#dateTime">dateTime</a>  | 
            <a href="datatypes.html#decimal">decimal</a>  | 
            <a href="datatypes.html#integer">integer</a>  | 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The value of the property returned</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property.description</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Human Readable representation of the property value (e.g. display for a code)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property.source</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#canonical">canonical</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> If information from a supplement is included as a property (e.g. any additional
                 property or property value), then this parameter must assert the url of the supplement.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property.subproperty</td> 
          <td/>  
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> Nested Properties (mainly used for SNOMED CT decomposition, for relationship Groups)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property.subproperty.code</td> 
          <td/>  
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Identifies the sub-property returned</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property.subproperty.value</td> 
          <td/>  
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#Coding">Coding</a>  | 
            <a href="datatypes.html#boolean">boolean</a>  | 
            <a href="datatypes.html#code">code</a>  | 
            <a href="datatypes.html#dateTime">dateTime</a>  | 
            <a href="datatypes.html#decimal">decimal</a>  | 
            <a href="datatypes.html#integer">integer</a>  | 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The value of the sub-property returned</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property.subproperty.description</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Human Readable representation of the sub-property value (e.g. display for a code)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> property.subproperty.source</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#canonical">canonical</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> If information from a supplement is included as a subproperty (e.g. any additional
                 subproperty or subproperty value), then this parameter must assert the url of the
                 supplement.</p> 

            </div> 
          </td> 
        </tr> 
      </table> 
      <div> 
        <p> Note that the $lookup operation is more than just a code system search  - the server
           finds the concept, and gathers the return information from the underlying code
           system definitions.</p> 

      </div> 
    </div> 
  </text> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
    <valueInteger value="5"/> 
  </extension> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
    <valueCode value="normative"/> 
  </extension> 
  <url value="http://hl7.org/fhir/OperationDefinition/CodeSystem-lookup"/> 
  <version value="5.0.0"/> 
  <name value="Lookup"/> 
  <title value="Concept Look Up &amp; Decomposition"/> 
  <status value="active"/> 
  <kind value="operation"/> 
  <experimental value="false"/> 
  <date value="2023-03-26T15:21:02+11: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="Given a code/system, or a Coding, get additional details about the concept, including
   definition, status, designations, and properties. One of the products of this operation
   is a full decomposition of a code from a structured terminology.

When invoking this operation, a client SHALL provide both a system and a code,
   either using the system+code parameters, or in the coding parameter. Other parameters
   are optional"/> 
  <jurisdiction> 
    <coding> 
      <system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/> 
      <code value="001"/> 
      <display value="World"/> 
    </coding> 
  </jurisdiction> 
  <affectsState value="false"/> 
  <code value="lookup"/> 
  <comment value="Note that the $lookup operation is more than just a code system search  - the server
   finds the concept, and gathers the return information from the underlying code
   system definitions."/> 
  <resource value="CodeSystem"/> 
  <system value="false"/> 
  <type value="true"/> 
  <instance value="true"/> 
  <parameter> 
    <name value="code"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The code that is to be located. If a code is provided, a system must be provided"/> 
    <type value="code"/> 
  </parameter> 
  <parameter> 
    <name value="system"/> 
    <use value="in"/> 
    <scope value="type"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The system for the code that is to be located"/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="version"/> 
    <use value="in"/> 
    <scope value="type"/> 
    <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="coding"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A coding to look up"/> 
    <type value="Coding"/> 
  </parameter> 
  <parameter> 
    <name value="date"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The date for which the information should be returned. Normally, this is the current
     conditions (which is the default value) but under some circumstances, systems need
     to acccess this information as it would have been in the past. A typical example
     of this would be where code selection is constrained to the set of codes that were
     available when the patient was treated, not when the record is being edited. Note
     that which date is appropriate is a matter for implementation policy."/> 
    <type value="dateTime"/> 
  </parameter> 
  <parameter> 
    <name value="displayLanguage"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The requested language for display (see CodeSystem.concept.designation.language)"/> 
    <type value="code"/> 
  </parameter> 
  <parameter> 
    <name value="property"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="A property that the client wishes to be returned in the output. If no properties
     are specified, the server chooses what to return. The following properties are
     defined for all code systems: name, version (code system info) and code information:
     display, designation, and lang.X where X is a designation language code. These
     properties are returned explicitly in named out parameters with matching names,
     or in designations. In addition, any property codes defined by [this specification](codesyste
    m.html#defined-props) or by the CodeSystem ([CodeSystem.property.code](codesystem-definitions.
    html#CodeSystem.property)) are allowed, and these are returned in the out parameter
     ```property```"/> 
    <type value="code"/> 
  </parameter> 
  <parameter> 
    <name value="useSupplement"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="Supplements to take into account when performing the $lookup operation. The supplements
     must be for the same CodeSystem. By default, supplements for the code system are
     not automatically included except where they provide additional designations that
     may be indicated by, for example, the displayLanguage parameter"/> 
    <type value="canonical"/> 
  </parameter> 
  <parameter> 
    <name value="name"/> 
    <use value="out"/> 
    <min value="1"/> 
    <max value="1"/> 
    <documentation value="A display name for the code system"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="version"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The version that these details are based on"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="display"/> 
    <use value="out"/> 
    <min value="1"/> 
    <max value="1"/> 
    <documentation value="The preferred display for this concept"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="definition"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A statement of the meaning of the concept from the code system"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="designation"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="Additional representations for this concept"/> 
    <part> 
      <name value="language"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="The language this designation is defined for"/> 
      <type value="code"/> 
    </part> 
    <part> 
      <name value="use"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="A code that details how this designation would be used"/> 
      <type value="Coding"/> 
    </part> 
    <part> 
      <name value="additionalUse"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="*"/> 
      <documentation value="Additional codes that detail how this designation would be used (if there is more
       than one)"/> 
      <type value="Coding"/> 
    </part> 
    <part> 
      <name value="value"/> 
      <use value="out"/> 
      <min value="1"/> 
      <max value="1"/> 
      <documentation value="The text value for this designation"/> 
      <type value="string"/> 
    </part> 
  </parameter> 
  <parameter> 
    <name value="property"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="One or more properties that contain additional information about the code, including
     status. For complex terminologies (e.g. SNOMED CT, LOINC, medications), these properties
     serve to decompose the code"/> 
    <part> 
      <name value="code"/> 
      <use value="out"/> 
      <min value="1"/> 
      <max value="1"/> 
      <documentation value="Identifies the property returned"/> 
      <type value="code"/> 
    </part> 
    <part> 
      <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
        <valueUri value="Coding"/> 
      </extension> 
      <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
        <valueUri value="boolean"/> 
      </extension> 
      <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
        <valueUri value="code"/> 
      </extension> 
      <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
        <valueUri value="dateTime"/> 
      </extension> 
      <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
        <valueUri value="decimal"/> 
      </extension> 
      <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
        <valueUri value="integer"/> 
      </extension> 
      <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
        <valueUri value="string"/> 
      </extension> 
      <name value="value"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="The value of the property returned"/> 
      <type value="Element"/> 
    </part> 
    <part> 
      <name value="description"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="Human Readable representation of the property value (e.g. display for a code)"/> 
      <type value="string"/> 
    </part> 
    <part> 
      <name value="source"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="If information from a supplement is included as a property (e.g. any additional
       property or property value), then this parameter must assert the url of the supplement."/> 
      <type value="canonical"/> 
    </part> 
    <part> 
      <name value="subproperty"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="*"/> 
      <documentation value="Nested Properties (mainly used for SNOMED CT decomposition, for relationship Groups)"/> 
      <part> 
        <name value="code"/> 
        <use value="out"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="Identifies the sub-property returned"/> 
        <type value="code"/> 
      </part> 
      <part> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="Coding"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="boolean"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="code"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="dateTime"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="decimal"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="integer"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="string"/> 
        </extension> 
        <name value="value"/> 
        <use value="out"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="The value of the sub-property returned"/> 
        <type value="Element"/> 
      </part> 
      <part> 
        <name value="description"/> 
        <use value="out"/> 
        <min value="0"/> 
        <max value="1"/> 
        <documentation value="Human Readable representation of the sub-property value (e.g. display for a code)"/> 
        <type value="string"/> 
      </part> 
      <part> 
        <name value="source"/> 
        <use value="out"/> 
        <min value="0"/> 
        <max value="1"/> 
        <documentation value="If information from a supplement is included as a subproperty (e.g. any additional
         subproperty or subproperty value), then this parameter must assert the url of the
         supplement."/> 
        <type value="canonical"/> 
      </part> 
    </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.