FHIR CI-Build

This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions

Example OperationDefinition/ValueSet-validate-code (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="ValueSet-validate-code"/> 
  <text> 
    <status value="generated"/> 
    <div xmlns="http://www.w3.org/1999/xhtml">
      <p class="res-header-id">
        <b> Generated Narrative: OperationDefinition ValueSet-validate-code</b> 
      </p> 
      <a name="ValueSet-validate-code"> </a> 
      <a name="hcValueSet-validate-code"> </a> 
      <a name="ValueSet-validate-code-en-US"> </a> 
      <p> URL: [base]/ValueSet/$validate-code</p> 
      <p> URL: [base]/ValueSet/[id]/$validate-code</p> 
      <h3> Parameters</h3> 
      <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> url</td> 
          <td> type</td> 
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Value set Canonical URL. 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> context</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The context of the value set, so that the server can resolve this to a value set
                 to validate against. The recommended format for this URI is [Structure Definition
                 URL]#[name or path into structure definition] e.g. http://hl7.org/fhir/StructureDefinition/ob
                servation-hspc-height-hspcheight#Observation.interpretation. Other forms may be
                 used but are not defined. This form is only usable if the terminology server also
                 has access to the conformance registry that the server is using, but can be used
                 to delegate the mapping from an application context to a binding at run-time</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> valueSet</td> 
          <td> type</td> 
          <td> 0..1</td> 
          <td> 
            <a href="valueset.html">ValueSet</a> 
          </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. This parameter is used when the client wants
                 the server to expand a value set that is not stored on the server</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> valueSetVersion</td> 
          <td> type</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 value set to
                 be used when validating the code. This is an arbitrary value managed by the value
                 set 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/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The code that is to be validated. If a code is provided, a system or a context
                 must be provided (if a context is provided, then the server SHALL ensure that the
                 code is not ambiguous without a system)</p> 

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

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> systemVersion</td> 
          <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> display</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The display associated with the code, if provided. If a display is provided a code
                 must be provided. If no display is provided, the server cannot validate the display
                 value, but may choose to return a recommended display name using the display parameter
                 in the outcome. Whether displays are case sensitive is code system dependent</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 validate</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> codeableConcept</td> 
          <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 returns true if one of the coding
                 values is in the value set, and may also validate that the codings are not in conflict
                 with each other if more than one is present</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 validation should be checked. Normally, this is the current
                 conditions (which is the default values) but under some circumstances, systems
                 need to validate that a correct code was used at some point 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> abstract</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#boolean">boolean</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> If this parameter has a value of true or the parameter is omitted, the client is
                 stating that the validation is being performed in a context where a concept designated
                 as 'abstract' is appropriate/allowed to be used, and the server should regard abstract
                 codes as valid. If this parameter is false, abstract codes are not considered to
                 be valid.</p> 

              <p> Note that. 'abstract' is a property defined by many HL7 code systems that indicates
                 that the concept is a logical grouping concept that is not intended to be used
                 as a 'concrete' concept to in an actual patient/care/process record. This language
                 is borrowed from object-orientated theory where 'abstract' entities are never instantiated.
                 However in the general record and terminology eco-system, there are many contexts
                 where it is appropriate to use these codes e.g. as decision making criterion, or
                 when editing value sets themselves. This parameter allows a client to indicate
                 to the server that it is working in such a context.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> displayLanguage</td> 
          <td/>  
          <td> 0..*</td> 
          <td> 
            <a href="datatypes.html#code">code</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Specifies the language for display validation.  Note: the display value only needs
                 to match 1 displayLanguage in order for the validate operation to return true.</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> The supplement must be used when validating the code. Use of this parameter should
                 result in $validate-code behaving the same way as if the supplements were included
                 in the value set definition using the 
                <a href="https://build.fhir.org/ig/HL7/fhir-extensions/StructureDefinition-valueset-supplement.html">http://hl7.org/fhir/StructureDefinition/valueset-supplement</a> 
              </p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> lenient-display-validation</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#boolean">boolean</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> When the 'lenient-display-validation' parameter is true, an invalid display string
                 will not cause the 'result' output parameter to be 'false'. If the 'lenient-display-validatio
                n' parameter is false or absent, then an invalid display will cause the 'result'
                 output parameter to be 'false', i.e. the validation will fail.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> valueset-membership-only</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#boolean">boolean</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> When 'true', the server will not perform the additional validation tasks beyond
                 validating membership in the value set (e.g. the server won't check displays, etc.)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> inferSystem</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#boolean">boolean</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> If true, the terminology server is required to infer the system from evaluation
                 of the value set definition. The inferSystem parameter is only to be used with
                 the code parameter, and not with the coding nor codeableConcept parameters.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> default-valueset-version</td> 
          <td/>  
          <td> 0..*</td> 
          <td> 
            <a href="datatypes.html#canonical">canonical</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Specifies a version to use for a valueset, if the reference to the value set does
                 not specify which version to use. The format is the same as a canonical URL: [system]|[versio
                n] - e.g. http://example.org/ValueSet/example|1.0.0. Note that this is similar to
                 the force-system-version parameter but applied to valuesets</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> check-valueset-version</td> 
          <td/>  
          <td> 0..*</td> 
          <td> 
            <a href="datatypes.html#canonical">canonical</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Edge Case: Specifies a version to use for a valueset. If a reference to a value
                 set specifies a different version, an error is returned instead of the expansion.
                 The format is the same as a canonical URL: [system]|[version] - e.g. http://example.org/Value
                Set/example|1.0.0. Note that this is similar to the force-system-version parameter
                 but applied to valuesets</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> force-valueset-version</td> 
          <td/>  
          <td> 0..*</td> 
          <td> 
            <a href="datatypes.html#canonical">canonical</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Edge Case: Specifies a version to use for a valueset. This parameter overrides
                 any specified version in the reference to the value set (and any it depends on).
                 The format is the same as a canonical URL: [system]|[version] - e.g. http://example.org/Value
                Set/example|1.0.0. Note that this has obvious safety issues, in that it may result
                 in a value set expansion giving a different list of codes that is both wrong and
                 unsafe, and implementers should only use this capability reluctantly. It primarily
                 exists to deal with situations where specifications have fallen into decay as time
                 passes. If the value is overridden, the version used SHALL explicitly be represented
                 in the expansion parameters. Note that this is similar to the force-system-version
                 parameter but applied to valuesets.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> manifest</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#canonical">canonical</a>  (
            <a href="library.html" title="http://hl7.org/fhir/StructureDefinition/Library">Library</a> )
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Specifies an library that provides expansion rules for the operation. The library
                 has an extension expansionParameters that references a contained Parameters resource
                 that contains additional $expand parameters. See the [CRMI specification description
                 of manifests]https://build.fhir.org/ig/HL7/crmi-ig/StructureDefinition-crmi-manifestlibrary.h
                tml) and 
                <a href="https://build.fhir.org/ig/HL7/crmi-ig/artifact-terminology-service.html#expansion-rules">CRMI expansion rules</a>  for a complete description of how manifest values are used to provide defaults
                 for expansion parameters. Parameters specified directly in an $expand operation
                 override behaviors specified by the manifest parameter.
              </p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> tx-resource</td> 
          <td/>  
          <td> 0..*</td> 
          <td> 
            <a href="resource.html">Resource</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> One or more additional resources that are referred to from the value set provided
                 with the $expand or $validate-code invocation. These may be additional value sets
                 or code systems that the client believes will or may be necessary to perform the
                 operation. Resources provided in this fashion are used preferentially to those
                 known to the system, though servers may return an error if these resources are
                 already known to the server (by URL and version) but differ from that information
                 on the server.</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> result</td> 
          <td/>  
          <td> 1..1</td> 
          <td> 
            <a href="datatypes.html#boolean">boolean</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> True if the concept details supplied are valid</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> message</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Error details, if result = false. If this is provided when result = true, the message
                 carries hints and warnings</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> display</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#string">string</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A valid display for the concept if the system wishes to display this to a user</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</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 was validated</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> system</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#uri">uri</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The system for the code that was validated</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 of the system of the code that was validated</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> codeableConcept</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#CodeableConcept">CodeableConcept</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A codeableConcept containing codings for all the validated codes</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> issues</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="operationoutcome.html">OperationOutcome</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> List of itemised issues with paths constrained to simple FHIRPath. Examples are
                 CodeableConcept, CodeableConcept.coding[0], CodeableConcept.coding[1].display,
                 or Coding.display</p> 

            </div> 
          </td> 
        </tr> 
      </table> 
      <div> 
        <p> Note: the correct behavior of validation with regard to language for Coding.display
           items is currently undefined, and further development and testing may lead to specific
           requirements or recommendations in subsequent releases</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> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
    <valueCode value="vocab"/> 
  </extension> 
  <url value="http://hl7.org/fhir/OperationDefinition/ValueSet-validate-code"/> 
  <version value="6.0.0-ballot2"/> 
  <name value="ValidateCode"/> 
  <title value="Value Set based Validation"/> 
  <status value="active"/> 
  <kind value="operation"/> 
  <experimental value="false"/> 
  <date value="2025-03-18T13:49:06+00:00"/> 
  <publisher value="HL7 International / Terminology Infrastructure"/> 
  <contact> 
    <telecom> 
      <system value="url"/> 
      <value value="http://hl7.org/fhir"/> 
    </telecom> 
    <telecom> 
      <system value="email"/> 
      <value value="fhir@lists.hl7.org"/> 
    </telecom> 
  </contact> 
  <contact> 
    <telecom> 
      <system value="url"/> 
      <value value="http://www.hl7.org/Special/committees/Vocab"/> 
    </telecom> 
  </contact> 
  <description value="Validate that a coded value is in the set of codes allowed by a value set.

If the operation is not called at the instance level, one of the in parameters
   url, context or valueSet must be provided.  One (and only one) of the in parameters
   code, coding, or codeableConcept must be provided. If a code is provided, either
   a system or inferSystem **SHOULD** be provided. The operation returns a result
   (true / false), an error message, and the recommended display for the code. When
   validating a code or a coding, then the code, system and version output parameters
   **SHOULD** be populated when possible. When a validating a CodeableConcept, then
   the codeableConcept output parameter **SHOULD** be populated when possible."/> 
  <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="validate-code"/> 
  <comment value="Note: the correct behavior of validation with regard to language for Coding.display
   items is currently undefined, and further development and testing may lead to specific
   requirements or recommendations in subsequent releases"/> 
  <resource value="ValueSet"/> 
  <system value="false"/> 
  <type value="true"/> 
  <instance value="true"/> 
  <parameter> 
    <name value="url"/> 
    <use value="in"/> 
    <scope value="type"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="Value set Canonical URL. 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="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 validate against. The recommended format for this URI is [Structure Definition
     URL]#[name or path into structure definition] e.g. http://hl7.org/fhir/StructureDefinition/ob
    servation-hspc-height-hspcheight#Observation.interpretation. Other forms may be
     used but are not defined. This form is only usable if the terminology server also
     has access to the conformance registry that the server is using, but can be used
     to delegate the mapping from an application context to a binding at run-time"/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="valueSet"/> 
    <use value="in"/> 
    <scope value="type"/> 
    <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. This parameter is used when the client wants
     the server to expand a value set that is not stored on the server"/> 
    <type value="ValueSet"/> 
  </parameter> 
  <parameter> 
    <name value="valueSetVersion"/> 
    <use value="in"/> 
    <scope value="type"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The identifier that is used to identify a specific version of the value set to
     be used when validating the code. This is an arbitrary value managed by the value
     set 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 validated. If a code is provided, a system or a context
     must be provided (if a context is provided, then the server SHALL ensure that the
     code is not ambiguous without a system)"/> 
    <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 validated"/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="systemVersion"/> 
    <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="display"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The display associated with the code, if provided. If a display is provided a code
     must be provided. If no display is provided, the server cannot validate the display
     value, but may choose to return a recommended display name using the display parameter
     in the outcome. Whether displays are case sensitive is code system dependent"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="coding"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A coding to validate"/> 
    <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 returns true if one of the coding
     values is in the value set, and may also validate that the codings are not in conflict
     with each other if more than one is present"/> 
    <type value="CodeableConcept"/> 
  </parameter> 
  <parameter> 
    <name value="date"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The date for which the validation should be checked. Normally, this is the current
     conditions (which is the default values) but under some circumstances, systems
     need to validate that a correct code was used at some point 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="abstract"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="If this parameter has a value of true or the parameter is omitted, the client is
     stating that the validation is being performed in a context where a concept designated
     as 'abstract' is appropriate/allowed to be used, and the server should regard abstract
     codes as valid. If this parameter is false, abstract codes are not considered to
     be valid.

Note that. 'abstract' is a property defined by many HL7 code systems that indicates
     that the concept is a logical grouping concept that is not intended to be used
     as a 'concrete' concept to in an actual patient/care/process record. This language
     is borrowed from object-orientated theory where 'abstract' entities are never instantiated.
     However in the general record and terminology eco-system, there are many contexts
     where it is appropriate to use these codes e.g. as decision making criterion, or
     when editing value sets themselves. This parameter allows a client to indicate
     to the server that it is working in such a context."/> 
    <type value="boolean"/> 
  </parameter> 
  <parameter> 
    <name value="displayLanguage"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="Specifies the language for display validation.  Note: the display value only needs
     to match 1 displayLanguage in order for the validate operation to return true."/> 
    <type value="code"/> 
  </parameter> 
  <parameter> 
    <name value="useSupplement"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="The supplement must be used when validating the code. Use of this parameter should
     result in $validate-code behaving the same way as if the supplements were included
     in the value set definition using the [http://hl7.org/fhir/StructureDefinition/valueset-suppl
    ement](https://build.fhir.org/ig/HL7/fhir-extensions/StructureDefinition-valueset-supplement.h
    tml)"/> 
    <type value="canonical"/> 
  </parameter> 
  <parameter> 
    <name value="lenient-display-validation"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="When the 'lenient-display-validation' parameter is true, an invalid display string
     will not cause the 'result' output parameter to be 'false'. If the 'lenient-display-validatio
    n' parameter is false or absent, then an invalid display will cause the 'result'
     output parameter to be 'false', i.e. the validation will fail."/> 
    <type value="boolean"/> 
  </parameter> 
  <parameter> 
    <name value="valueset-membership-only"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="When 'true', the server will not perform the additional validation tasks beyond
     validating membership in the value set (e.g. the server won't check displays, etc.)"/> 
    <type value="boolean"/> 
  </parameter> 
  <parameter> 
    <name value="inferSystem"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="If true, the terminology server is required to infer the system from evaluation
     of the value set definition. The inferSystem parameter is only to be used with
     the code parameter, and not with the coding nor codeableConcept parameters."/> 
    <type value="boolean"/> 
  </parameter> 
  <parameter> 
    <name value="default-valueset-version"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="Specifies a version to use for a valueset, if the reference to the value set does
     not specify which version to use. The format is the same as a canonical URL: [system]|[versio
    n] - e.g. http://example.org/ValueSet/example|1.0.0. Note that this is similar to
     the force-system-version parameter but applied to valuesets"/> 
    <type value="canonical"/> 
  </parameter> 
  <parameter> 
    <name value="check-valueset-version"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="Edge Case: Specifies a version to use for a valueset. If a reference to a value
     set specifies a different version, an error is returned instead of the expansion.
     The format is the same as a canonical URL: [system]|[version] - e.g. http://example.org/Value
    Set/example|1.0.0. Note that this is similar to the force-system-version parameter
     but applied to valuesets"/> 
    <type value="canonical"/> 
  </parameter> 
  <parameter> 
    <name value="force-valueset-version"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="Edge Case: Specifies a version to use for a valueset. This parameter overrides
     any specified version in the reference to the value set (and any it depends on).
     The format is the same as a canonical URL: [system]|[version] - e.g. http://example.org/Value
    Set/example|1.0.0. Note that this has obvious safety issues, in that it may result
     in a value set expansion giving a different list of codes that is both wrong and
     unsafe, and implementers should only use this capability reluctantly. It primarily
     exists to deal with situations where specifications have fallen into decay as time
     passes. If the value is overridden, the version used SHALL explicitly be represented
     in the expansion parameters. Note that this is similar to the force-system-version
     parameter but applied to valuesets."/> 
    <type value="canonical"/> 
  </parameter> 
  <parameter> 
    <name value="manifest"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="Specifies an library that provides expansion rules for the operation. The library
     has an extension expansionParameters that references a contained Parameters resource
     that contains additional $expand parameters. See the [CRMI specification description
     of manifests]https://build.fhir.org/ig/HL7/crmi-ig/StructureDefinition-crmi-manifestlibrary.h
    tml) and [CRMI expansion rules](https://build.fhir.org/ig/HL7/crmi-ig/artifact-terminology-ser
    vice.html#expansion-rules) for a complete description of how manifest values are
     used to provide defaults for expansion parameters. Parameters specified directly
     in an $expand operation override behaviors specified by the manifest parameter."/> 
    <type value="canonical"/> 
    <targetProfile value="http://hl7.org/fhir/StructureDefinition/Library"/> 
  </parameter> 
  <parameter> 
    <name value="tx-resource"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="*"/> 
    <documentation value="One or more additional resources that are referred to from the value set provided
     with the $expand or $validate-code invocation. These may be additional value sets
     or code systems that the client believes will or may be necessary to perform the
     operation. Resources provided in this fashion are used preferentially to those
     known to the system, though servers may return an error if these resources are
     already known to the server (by URL and version) but differ from that information
     on the server."/> 
    <type value="Resource"/> 
  </parameter> 
  <parameter> 
    <name value="result"/> 
    <use value="out"/> 
    <min value="1"/> 
    <max value="1"/> 
    <documentation value="True if the concept details supplied are valid"/> 
    <type value="boolean"/> 
  </parameter> 
  <parameter> 
    <name value="message"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="Error details, if result = false. If this is provided when result = true, the message
     carries hints and warnings"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="display"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A valid display for the concept if the system wishes to display this to a user"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="code"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The code that was validated"/> 
    <type value="code"/> 
  </parameter> 
  <parameter> 
    <name value="system"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The system for the code that was validated"/> 
    <type value="uri"/> 
  </parameter> 
  <parameter> 
    <name value="version"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The version of the system of the code that was validated"/> 
    <type value="string"/> 
  </parameter> 
  <parameter> 
    <name value="codeableConcept"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A codeableConcept containing codings for all the validated codes"/> 
    <type value="CodeableConcept"/> 
  </parameter> 
  <parameter> 
    <name value="issues"/> 
    <use value="out"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="List of itemised issues with paths constrained to simple FHIRPath. Examples are
     CodeableConcept, CodeableConcept.coding[0], CodeableConcept.coding[1].display,
     or Coding.display"/> 
    <type value="OperationOutcome"/> 
  </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.