R6 Ballot (2nd Draft)

Publish-box (todo)

Example OperationDefinition/CapabilityStatement-implements (XML)

FHIR 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="CapabilityStatement-implements"/> 
  <text> 
    <status value="generated"/> 
    <div xmlns="http://www.w3.org/1999/xhtml">
      <p class="res-header-id">
        <b> Generated Narrative: OperationDefinition CapabilityStatement-implements</b> 
      </p> 
      <a name="CapabilityStatement-implements"> </a> 
      <a name="hcCapabilityStatement-implements"> </a> 
      <a name="CapabilityStatement-implements-en-AU"> </a> 
      <p> URL: [base]/CapabilityStatement/$implements</p> 
      <p> URL: [base]/CapabilityStatement/[id]/$implements</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> server</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#canonical">canonical</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A canonical reference to the server capability statement - use this if the implements
                 is not invoked on an instance (or on the /metadata end-point)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> client</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="datatypes.html#canonical">canonical</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> A canonical reference to the client capability statement - use this if the implements
                 is not invoked on an instance (or on the /metadata end-point)</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> IN</td> 
          <td> resource</td> 
          <td/>  
          <td> 0..1</td> 
          <td> 
            <a href="capabilitystatement.html">CapabilityStatement</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> The client capability statement, provided inline</p> 

            </div> 
          </td> 
        </tr> 
        <tr> 
          <td> OUT</td> 
          <td> return</td> 
          <td/>  
          <td> 1..1</td> 
          <td> 
            <a href="operationoutcome.html">OperationOutcome</a> 
          </td> 
          <td/>  
          <td> 
            <div> 
              <p> Outcome of the CapabilityStatement test</p> 

            </div> 
          </td> 
        </tr> 
      </table> 
      <div> 
        <p> The operation does not perform a full conformance check; in particular it does
           not check that the profiles align. It merely checks that the behaviors the client
           wishes to use are provided    Technically, this operation is implemented as follows:</p> 

        <ul> 

          <li> The server's capability statement must have an entry for each resource in the client's
             capability statement</li> 

          <li> The server's resource support must have matching flags for updateCreate, conditionalCreate,
             conditionalRead, conditionalUpdate, conditionalPatch, conditionalDelete, searchInclude,
             searchRevInclude</li> 

          <li> The server's capability statement must have a matching interaction for each interaction
             in the client capability statement (whether or not it is on a resource)</li> 

          <li> The server's capability statement must have a search parameter with matching name
             and definition for any search parameters in the client capability statement</li> 

          <li> The server must have an operation definition with a matching reference for any
             operations in the client capability statement</li> 

        </ul> 

        <p> If the capability statements match by these rules, then the return value is a 200
           OK with an operation outcome that contains no issues with severity &gt;= error.
           If the capability statement doesn't match, the return value is a 4xx error, with
           an OperationOutcome with at least one issue with severity &gt;= error</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="trial-use"/> 
  </extension> 
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
    <valueCode value="fhir"/> 
  </extension> 
  <url value="http://hl7.org/fhir/OperationDefinition/CapabilityStatement-implements"/> 
  <version value="6.0.0-ballot2"/> 
  <name value="Implements"/> 
  <title value="Test if a server implements a client's required operations"/> 
  <status value="draft"/> 
  <kind value="operation"/> 
  <experimental value="false"/> 
  <date value="2024-08-12T16:52:12+08:00"/> 
  <publisher value="HL7 International / FHIR 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/fiwg"/> 
    </telecom> 
  </contact> 
  <description value="This operation asks the server to check that it implements all the resources, interactions,
   search parameters, and operations that the client provides in its capability statement.
   The client provides its capability statement inline, or by referring the server
   to the canonical URL of its capability statement"/> 
  <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="implements"/> 
  <comment value="The operation does not perform a full conformance check; in particular it does
   not check that the profiles align. It merely checks that the behaviors the client
   wishes to use are provided    Technically, this operation is implemented as follows:
     

* The server's capability statement must have an entry for each resource in the
   client's capability statement    
* The server's resource support must have matching flags for updateCreate, conditionalCreate,
   conditionalRead, conditionalUpdate, conditionalPatch, conditionalDelete, searchInclude,
   searchRevInclude   
* The server's capability statement must have a matching interaction for each interaction
   in the client capability statement (whether or not it is on a resource)   
* The server's capability statement must have a search parameter with matching
   name and definition for any search parameters in the client capability statement
     
* The server must have an operation definition with a matching reference for any
   operations in the client capability statement   

If the capability statements match by these rules, then the return value is a 200
   OK with an operation outcome that contains no issues with severity &gt;= error.
   If the capability statement doesn't match, the return value is a 4xx error, with
   an OperationOutcome with at least one issue with severity &gt;= error"/> 
  <resource value="CapabilityStatement"/> 
  <system value="false"/> 
  <type value="true"/> 
  <instance value="true"/> 
  <parameter> 
    <name value="server"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A canonical reference to the server capability statement - use this if the implements
     is not invoked on an instance (or on the /metadata end-point)"/> 
    <type value="canonical"/> 
  </parameter> 
  <parameter> 
    <name value="client"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="A canonical reference to the client capability statement - use this if the implements
     is not invoked on an instance (or on the /metadata end-point)"/> 
    <type value="canonical"/> 
  </parameter> 
  <parameter> 
    <name value="resource"/> 
    <use value="in"/> 
    <min value="0"/> 
    <max value="1"/> 
    <documentation value="The client capability statement, provided inline"/> 
    <type value="CapabilityStatement"/> 
  </parameter> 
  <parameter> 
    <name value="return"/> 
    <use value="out"/> 
    <min value="1"/> 
    <max value="1"/> 
    <documentation value="Outcome of the CapabilityStatement test"/> 
    <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.