Release 4B

This page is part of the FHIR Specification (v4.3.0: R4B - STU). 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

Operation-codesystem-find-matches.xml

Vocabulary 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-find-matches"/> 
  <text> 
    <status value="extensions"/> 
    <div xmlns="http://www.w3.org/1999/xhtml">
      <h2> FindMatches</h2> 
      <p> OPERATION: FindMatches</p> 
      <p> The official URL for this operation definition is: </p> 
      <pre> http://hl7.org/fhir/OperationDefinition/CodeSystem-find-matches</pre> 
      <div> 
        <p> Given a set of properties (and text), return one or more possible matching codes</p> 

        <p> This operation takes a set of properties, and examines the code system looking for codes
           in the code system that match a set of known properties.</p> 

        <p> When looking for matches, there are 3 possible types of match:</p> 

        <ul> 

          <li> a complete match - a code that represents all the provided properties correctly</li> 

          <li> a partial match - a code that represents some of the provided properties correctly, and
             not others</li> 

          <li> a possible match - a code that may represent the provided properties closely, but may
             capture less or more precise information for some of the properties</li> 

        </ul> 

        <p> The $find-matches operation can be called in one of 2 modes:</p> 

        <ul> 

          <li> By a human, looking for the best match for a set of properties. In this mode, the server
             returns a list of complete, possible or partial matches (possibly with comments), so that
             the user can choose (or not) the most appropriate code</li> 

          <li> By a machine (typically in a system interface performing a transformation). In this mode,
             the server returns only a list of complete and partial matches, but no possible matches.
             The machine can choose a code from the list (or not) based on what properties are not
             coded</li> 

        </ul> 

        <p> These modes are differentiated by the 'exact' parameter, so the client can indicate whether
           it only wants exact matches (including partial matches) or whether potential matches based
           on text matching are desired</p> 

        <p> The find-matches operation is still preliminary. The interface can be expected to change
           as more experience is gained from implementations.</p> 

      </div> 
      <p> URL: [base]/CodeSystem/$find-matches</p> 
      <p> URL: [base]/CodeSystem/[id]/$find-matches</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> system</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The system in which composition is to be performed. This must be provided unless the operation
                 is invoked on a code system instance</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 for the inferencing to be performed</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> property</td> 
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> One or more properties that contain information to be composed into the code</p> 

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

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

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

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

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

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> exact</td> 
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#boolean">boolean</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Whether the operation is being used by a human ('false'), or a machine ('true'). If the
                 operation is being used by a human, the terminology server can return a list of possible
                 matches, with commentary. For a machine, the server returns complete or partial matches,
                 not possible matches. The default value is 'false'</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> compositional</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#boolean">boolean</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Post-coordinated expressions are allowed to be returned in the matching codes (mainly
                 for SNOMED CT). Default = false</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match</td> 
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> Concepts returned by the server as a result of the inferencing operation</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.code</td> 
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#Coding">Coding</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A code that matches the properties provided</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.unmatched</td> 
          <td> 0..*</td> 
          <td/>  
          <td/>  
          <td> 
            <div> 
              <p> One or more properties that contain properties that could not be matched into the code</p> 

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

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

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

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

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

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> match.comment</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Information about the quality of the match, if operation is for a human</p> 

            </div> 
          </td> 
        </tr> 
      </table> 
      <div/>  
    </div> 
  </text> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
    <valueInteger value="0"/> 
  </extension> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
    <valueCode value="trial-use"/> 
  </extension> 
  <url value="http://hl7.org/fhir/OperationDefinition/CodeSystem-find-matches"/> 
  <version value="4.3.0"/> 
  <name value="FindMatches"/> 
  <title value="Finding codes based on supplied properties"/> 
  <status value="draft"/> 
  <kind value="operation"/> 
  <experimental value="false"/> 
  <date value="2022-05-28T12:47:40+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="Given a set of properties (and text), return one or more possible matching codes

This operation takes a set of properties, and examines the code system looking for codes
   in the code system that match a set of known properties. 

When looking for matches, there are 3 possible types of match:
* a complete match - a code that represents all the provided properties correctly
* a partial match - a code that represents some of the provided properties correctly,
   and not others 
* a possible match - a code that may represent the provided properties closely, but may
   capture less or more precise information for some of the properties

The $find-matches operation can be called in one of 2 modes:
* By a human, looking for the best match for a set of properties. In this mode, the server
   returns a list of complete, possible or partial matches (possibly with comments), so that
   the user can choose (or not) the most appropriate code
* By a machine (typically in a system interface performing a transformation). In this
   mode, the server returns only a list of complete and partial matches, but no possible
   matches. The machine can choose a code from the list (or not) based on what properties
   are not coded

These modes are differentiated by the 'exact' parameter, so the client can indicate whether
   it only wants exact matches (including partial matches) or whether potential matches based
   on text matching are desired
 
The find-matches operation is still preliminary. The interface can be expected to change
   as more experience is gained from implementations."/> 
  <affectsState value="false"/> 
  <code value="find-matches"/> 
  <resource value="CodeSystem"/> 
  <system value="false"/> 
  <type value="true"/> 
  <instance value="true"/> 
  <parameter> 
    <name value="system"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The system in which composition is to be performed. This must be provided unless the operation
     is invoked on a code system instance"/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="version"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The version of the system for the inferencing to be performed"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="property"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="One or more properties that contain information to be composed into the code"/> 
    <part> 
      <name value="code"/> 
      <use value="in"/> 
      <min value="1"/> 
      <max value="1"/> 
      <documentation value="Identifies the property provided"/> 
      <type value="code"/> 
    </part> 
    <part> 
      <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="Coding"/> 
      </extension> 
      <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
        <valueUri value="string"/> 
      </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="boolean"/> 
      </extension> 
      <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
        <valueUri value="dateTime"/> 
      </extension> 
      <name value="value"/> 
      <use value="in"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="The value of the property provided"/> 
      <type value="Element"/> 
    </part> 
    <part> 
      <name value="subproperty"/> 
      <use value="in"/> 
      <min value="0"/> 
      <max value="*"/> 
      <documentation value="Nested Properties (mainly used for SNOMED CT composition, for relationship Groups)"/> 
      <part> 
        <name value="code"/> 
        <use value="in"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="Identifies the sub-property provided"/> 
        <type value="code"/> 
      </part> 
      <part> 
        <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="Coding"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="string"/> 
        </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="boolean"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="dateTime"/> 
        </extension> 
        <name value="value"/> 
        <use value="in"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="The value of the sub-property provided"/> 
        <type value="Element"/> 
      </part> 
    </part> 
  </parameter> 
  <parameter> 
    <name value="exact"/> 
    <use value="in"/> 
    <min value="1"/> 
    <max value="1"/> 
    <documentation value="Whether the operation is being used by a human ('false'), or a machine ('true'). If the
     operation is being used by a human, the terminology server can return a list of possible
     matches, with commentary. For a machine, the server returns complete or partial matches,
     not possible matches. The default value is 'false'"/> 
    <type value="boolean"/> 
  </parameter> 
  <parameter> 
    <name value="compositional"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="Post-coordinated expressions are allowed to be returned in the matching codes (mainly
     for SNOMED CT). Default = false"/> 
    <type value="boolean"/> 
  </parameter> 
  <parameter> 
    <name value="match"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="Concepts returned by the server as a result of the inferencing operation"/> 
    <part> 
      <name value="code"/> 
      <use value="out"/> 
      <min value="1"/> 
      <max value="1"/> 
      <documentation value="A code that matches the properties provided"/> 
      <type value="Coding"/> 
    </part> 
    <part> 
      <name value="unmatched"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="*"/> 
      <documentation value="One or more properties that contain properties that could not be matched into the code"/> 
      <part> 
        <name value="code"/> 
        <use value="out"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="Identifies the property provided"/> 
        <type value="code"/> 
      </part> 
      <part> 
        <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="Coding"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="string"/> 
        </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="boolean"/> 
        </extension> 
        <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
          <valueUri value="dateTime"/> 
        </extension> 
        <name value="value"/> 
        <use value="out"/> 
        <min value="1"/> 
        <max value="1"/> 
        <documentation value="The value of the property provided"/> 
        <type value="Element"/> 
      </part> 
      <part> 
        <name value="property"/> 
        <use value="out"/> 
        <min value="0"/> 
        <max value="*"/> 
        <documentation value="Nested Properties (mainly used for SNOMED CT composition, for relationship Groups)"/> 
        <part> 
          <name value="code"/> 
          <use value="out"/> 
          <min value="1"/> 
          <max value="1"/> 
          <documentation value="Identifies the sub-property provided"/> 
          <type value="code"/> 
        </part> 
        <part> 
          <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="Coding"/> 
          </extension> 
          <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
            <valueUri value="string"/> 
          </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="boolean"/> 
          </extension> 
          <extension url="http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type">
            <valueUri value="dateTime"/> 
          </extension> 
          <name value="value"/> 
          <use value="out"/> 
          <min value="1"/> 
          <max value="1"/> 
          <documentation value="The value of the sub-property provided"/> 
          <type value="Element"/> 
        </part> 
      </part> 
    </part> 
    <part> 
      <name value="comment"/> 
      <use value="out"/> 
      <min value="0"/> 
      <max value="1"/> 
      <documentation value="Information about the quality of the match, if operation is for a human"/> 
      <type value="string"/> 
    </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.