Current Build
FHIR Infrastructure Work Group Maturity Level: 3Normative Compartments: N/A

Normative Candidate Note: This page is candidate normative content for R4 in the Conformance Package. Once normative, it will lose it's Maturity Level, and breaking changes will no longer be made.

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

The official URL for this operation definition is

Formal Definition (as a OperationDefinition).

URL: [base]/CapabilityStatement/$implements

URL: [base]/CapabilityStatement/[id]/$implements

This is an idempotent operation

In Parameters:

The canonical URL for the server capability statement - use this if the implements is not invoked on an instance (or on the /metadata end-point)


The canonical URL for the client capability statement - use this if the implements is not invoked on an instance (or on the /metadata end-point)


The client capability statement, provided inline

Out Parameters:

Outcome of the CapabilityStatement test

Note: as this the only out parameter, it is a resource, and it has the name 'return', the result of this operation is returned directly as a resource

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 servers' resource support must have matching flags for updateCreate, conditionalCreate, conditionalRead, conditionalUpdate, conditionalDelete, searchInclude, searchRevInclude
  • The server 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 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 definitions 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 >= 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 >= error

Request a CapabilityStatement implements comparison between a client and server systems (Request):

POST [base]/CapabilityStatement/$implements
[other headers]

<Parameters xmlns="">
    <name value="server"/>
    <valueUri value=""/>
    <name value="client"/>
    <valueUri value=""/>


HTTP/1.1 200 OK
[other headers]

<?xml version="1.0" encoding="UTF-8"?>
<OperationOutcome xmlns="">
  <id value="implementsok"/>
    <status value="additional"/>
    <div xmlns="">
      <p>Server implements client capabilities.</p>
    <severity value="information"/>
    <code value="informational"/>
      <text value="Server implements client capabilities."/>


For more information about operations, including how they are invoked, see Operations.