DSTU2 QA Preview

This page is part of the FHIR Specification (v1.0.0: DSTU 2 Ballot 3). 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-valueset-expand.xml

Raw XML (canonical form)

Operation Definition

Raw XML

<OperationDefinition xmlns="http://hl7.org/fhir">
  <id value="ValueSet-expand"/>
  <text>
    <status value="generated"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
      <h2>Value Set Expansion</h2>
      <p>OPERATION: Value Set Expansion</p>
      <div>
        <p>The definition of a value set is used to create a simple collection of codes suitable
           for use for data entry or validation.   If the operation is not called at the instance
           level, one of the in parameters identifier, context or valueset must be provided.  An
           expanded value set will be returned, or an OperationOutcome with an error message.</p>

      </div>
      <p>URL: [base]/ValueSet/$expand</p>
      <p>URL: [base]/ValueSet/[id]/$expand</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>identifier</td>
          <td>0..1</td>
          <td>uri</td>
          <td/>
          <td>
            <div>
              <p>A logical value set identifier (i.e. ValueSet.identifier). The server must know the value
                 set (e.g. it is defined explicitly in the server's value sets, or it is defined implicitly
                 by some code system known to the server</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>valueSet</td>
          <td>0..1</td>
          <td>ValueSet</td>
          <td/>
          <td>
            <div>
              <p>The value set is provided directly as part of the request. Servers may choose not to accept
                 value sets in this fashion</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>context</td>
          <td>0..1</td>
          <td>uri</td>
          <td/>
          <td>
            <div>
              <p>The context of the value set, so that the server can resolve this to a value set to expand.
                 The recommended format for this URI is [Structure Definition URL]#[name or path into structure
                 definition] e.g. http://hl7.org/fhir/StructureDefinition/observation-hspc-height-hspcheight#Observat
                ion.interpretation. Other forms may be used but are not defined. This form is only useable
                 if the terminology server also has access to the profile registry that the server is using,
                 but can be used to delegate the mapping from an application context to a binding to run-time</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>filter</td>
          <td>0..1</td>
          <td>string</td>
          <td/>
          <td>
            <div>
              <p>A text filter that is applied to restrict the codes that are returned (this is useful
                 in a UI context). The interpretation of this is delegated to the server in order to allow
                 to determine the most optimal search approach for the context</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>profile</td>
          <td>0..1</td>
          <td>uri</td>
          <td/>
          <td>
            <div>
              <p>A reference to an external definition that provides additional control information about
                 how the expansion is performed.  At this time, there is no agreed format or funtionality
                 for the target of this URI. The 
                <a href="http://www.nlm.nih.gov/vsac/support/authorguidelines/updatingvaluesets.html">VSAC Documentation</a> provides one example of the use of this parameter.  Implementers using this element will
                 need to agree on an appropriate mechanism for use within their interoperability community.
                  Known uses for profile include: * whether to return the value set content logical definition
                 with the expansion * whether to include inactive concepts
              </p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>date</td>
          <td>0..1</td>
          <td>dateTime</td>
          <td/>
          <td>
            <div>
              <p>The date for which the expansion should be generated.  if a date is provided, it means
                 that the server should use the value set / code system definitions as they were on the
                 given date, or return an error if this is not possible.  Normally, the date is the current
                 conditions (which is the default value) but under some circumstances, systems need to
                 generate an expansion 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>offset</td>
          <td>0..1</td>
          <td>integer</td>
          <td/>
          <td>
            <div>
              <p>Paging support - where to start if a subset is desired (default = 0)</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>IN</td>
          <td>count</td>
          <td>0..1</td>
          <td>integer</td>
          <td/>
          <td>
            <div>
              <p>Paging support - how many codes in a a partial view. Paging only applies to flat expansions
                 - servers ignore paging if the expansion is not flat.  If count = 0, the client is asking
                 how large the expansion is. Servers SHOULD honour this request for heirarchical expansions
                 as well, and simply return the overall count</p>

            </div>
          </td>
        </tr>
        <tr>
          <td>OUT</td>
          <td>return</td>
          <td>1..1</td>
          <td>ValueSet</td>
          <td/>
          <td>
            <div>
              <p>The result of the expansion</p>

            </div>
          </td>
        </tr>
      </table>
      <div>
        <p>The value set expansion returned by this query should be treated as a transient result
           that will change over time (whether it does or not depends on how the value set is specified),
           so applications should repeat the operation each time the value set is used.   Clients
           can work through large flat expansions in a set of pages (partial views of the full expansion)
           instead of just getting the full expansion in a single exchange by using offset and count
           parameters. Servers are not obliged to support paging, but if they do so, SHALL support
           both the offset and count parameters. Heirarchical expansions are not subject to paging,
           and servers simply return the entire expansion.  Different servers may return different
           results from expanding a value set for the following reasons:  * The underlying code systems
           are different (e.g. different versions, possibly with different defined behaviour) * The
           server optimises filter includes differently, such as sorting by code frequency * Servers
           introduce arbitrary groups to assist a user to navigate the lists based either on extensions
           in the definition, or additional knowledge available to the server</p>

      </div>
    </div>
  </text>
  <url value="http://hl7.org/fhir/OperationDefinition/ValueSet-expand"/>
  <name value="Value Set Expansion"/>
  <status value="draft"/>
  <kind value="operation"/>
  <publisher value="HL7 (FHIR Project)"/>
  <contact>
    <telecom>
      <system value="other"/>
      <value value="http://hl7.org/fhir"/>
    </telecom>
    <telecom>
      <system value="email"/>
      <value value="fhir@lists.hl7.org"/>
    </telecom>
  </contact>
  <date value="2015-09-01T14:38:48+10:00"/>
  <description value="The definition of a value set is used to create a simple collection of codes suitable
   for use for data entry or validation.   If the operation is not called at the instance
   level, one of the in parameters identifier, context or valueset must be provided.  An
   expanded value set will be returned, or an OperationOutcome with an error message."/>
  <code value="expand"/>
  <notes value="The value set expansion returned by this query should be treated as a transient result
   that will change over time (whether it does or not depends on how the value set is specified),
   so applications should repeat the operation each time the value set is used.   Clients
   can work through large flat expansions in a set of pages (partial views of the full expansion)
   instead of just getting the full expansion in a single exchange by using offset and count
   parameters. Servers are not obliged to support paging, but if they do so, SHALL support
   both the offset and count parameters. Heirarchical expansions are not subject to paging,
   and servers simply return the entire expansion.  Different servers may return different
   results from expanding a value set for the following reasons:  * The underlying code systems
   are different (e.g. different versions, possibly with different defined behaviour) * The
   server optimises filter includes differently, such as sorting by code frequency * Servers
   introduce arbitrary groups to assist a user to navigate the lists based either on extensions
   in the definition, or additional knowledge available to the server"/>
  <system value="false"/>
  <type value="ValueSet"/>
  <instance value="true"/>
  <parameter>
    <name value="identifier"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="A logical value set identifier (i.e. ValueSet.identifier). The server must know the value
     set (e.g. it is defined explicitly in the server's value sets, or it is defined implicitly
     by some code system known to the server"/>
    <type value="uri"/>
  </parameter>
  <parameter>
    <name value="valueSet"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="The value set is provided directly as part of the request. Servers may choose not to accept
     value sets in this fashion"/>
    <type value="ValueSet"/>
  </parameter>
  <parameter>
    <name value="context"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="The context of the value set, so that the server can resolve this to a value set to expand.
     The recommended format for this URI is [Structure Definition URL]#[name or path into structure
     definition] e.g. http://hl7.org/fhir/StructureDefinition/observation-hspc-height-hspcheight#Observat
    ion.interpretation. Other forms may be used but are not defined. This form is only useable
     if the terminology server also has access to the profile registry that the server is using,
     but can be used to delegate the mapping from an application context to a binding to run-time"/>
    <type value="uri"/>
  </parameter>
  <parameter>
    <name value="filter"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="A text filter that is applied to restrict the codes that are returned (this is useful
     in a UI context). The interpretation of this is delegated to the server in order to allow
     to determine the most optimal search approach for the context"/>
    <type value="string"/>
  </parameter>
  <parameter>
    <name value="profile"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="A reference to an external definition that provides additional control information about
     how the expansion is performed.  At this time, there is no agreed format or funtionality
     for the target of this URI. The [VSAC Documentation](http://www.nlm.nih.gov/vsac/support/authorguide
    lines/updatingvaluesets.html) provides one example of the use of this parameter.  Implementers
     using this element will need to agree on an appropriate mechanism for use within their
     interoperability community.  Known uses for profile include: * whether to return the value
     set content logical definition with the expansion * whether to include inactive concepts"/>
    <type value="uri"/>
  </parameter>
  <parameter>
    <name value="date"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="The date for which the expansion should be generated.  if a date is provided, it means
     that the server should use the value set / code system definitions as they were on the
     given date, or return an error if this is not possible.  Normally, the date is the current
     conditions (which is the default value) but under some circumstances, systems need to
     generate an expansion 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="offset"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="Paging support - where to start if a subset is desired (default = 0)"/>
    <type value="integer"/>
  </parameter>
  <parameter>
    <name value="count"/>
    <use value="in"/>
    <min value="0"/>
    <max value="1"/>
    <documentation value="Paging support - how many codes in a a partial view. Paging only applies to flat expansions
     - servers ignore paging if the expansion is not flat.  If count = 0, the client is asking
     how large the expansion is. Servers SHOULD honour this request for heirarchical expansions
     as well, and simply return the overall count"/>
    <type value="integer"/>
  </parameter>
  <parameter>
    <name value="return"/>
    <use value="out"/>
    <min value="1"/>
    <max value="1"/>
    <documentation value="The result of the expansion"/>
    <type value="ValueSet"/>
  </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.