Release 5 Preview #3

5.3 Resource CapabilityStatement2 - Content

FHIR Infrastructure Work GroupMaturity Level: 0 Trial UseSecurity Category: Anonymous Compartments: Not linked to any defined compartments

A Capability Statement documents a set of capabilities (behaviors) of a FHIR Server for a particular version of FHIR that may be used as a statement of actual server functionality or a statement of required or desired server implementation.

CapabilityStatement2 is a draft of a new approach to CapabilityStatement. It leaves all the normative structure of CapabilityStatement in place, and replaces the trial use features with a terminology based approach which makes for simpler conversations between systems around what features of the specification and/or implementation guides that a system supports, or that it needs it's partner systems to support.

This resource is referenced by itself.

This resource does not implement any patterns.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. CapabilityStatement2 TUCanonicalResourceA statement of system capabilities
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation
+ Rule: A Capability Statement SHALL have at least one of REST, messaging or document element.
+ Rule: A Capability Statement SHALL have at least one of description, software, or implementation element.
+ Rule: If kind = instance, implementation must be present and software may be present
+ Rule: If kind = capability, implementation must be absent, software must be present
+ Rule: If kind = requirements, implementation and software must be absent
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension, url, identifier, version, name, title, status, experimental, date, publisher, contact, description, useContext, jurisdiction, purpose, copyright
... url Σ0..1uriCanonical identifier for this capability statement2, represented as a URI (globally unique)
... version Σ0..1stringBusiness version of the capability statement2
... name ΣI0..1stringName for this capability statement2 (computer friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental Σ0..1booleanFor testing purposes, not real usage
... date Σ1..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description I0..1markdownNatural language description of the capability statement2
... useContext Σ0..*UsageContextThe context that the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for capability statement2 (if applicable)
Jurisdiction (Extensible)
... purpose 0..1markdownWhy this capability statement2 is defined
... copyright 0..1markdownUse and/or publishing restrictions
... kind ΣI1..1codeinstance | capability | requirements
CapabilityStatementKind (Required)
... instantiates Σ0..*canonical(CapabilityStatement2)Canonical URL of another capability statement this implements
... imports ΣTU0..*canonical(CapabilityStatement2)Canonical URL of another capability statement this adds to
... software ΣI0..1BackboneElementSoftware that is covered by this capability statement
.... name Σ1..1stringA name the software is known by
.... version Σ0..1stringVersion covered by this statement
.... releaseDate Σ0..1dateTimeDate this version was released
... implementation ΣI0..1BackboneElementIf this describes a specific instance
.... description Σ1..1stringDescribes this specific instance
.... url Σ0..1urlBase URL for the installation
.... custodian ΣTU0..1Reference(Organization)Organization that manages the data
... fhirVersion Σ1..1codeFHIR Version the system supports
FHIRVersion (Required)
... format Σ1..*codeformats supported (xml | json | ttl | mime type)
MimeType (Required)
... patchFormat Σ0..*codePatch formats supported
MimeType (Required)
... implementationGuide Σ0..*canonical(ImplementationGuide)Implementation guides supported
... rest ΣI0..*BackboneElementIf the endpoint is a RESTful one
+ Rule: A given resource can only be described once per RESTful mode.
.... mode Σ1..1codeclient | server
RestfulCapabilityMode (Required)
.... documentation 0..1markdownGeneral description of implementation
.... feature 0..*BackboneElementStatement of support for a feature
..... code 1..1codeFeature that is being reported
Capability Features (Required)
..... value 1..1codeValue of the feature (true, false, or a code)
Capability Feature Values (Required)
.... resource ΣI0..*BackboneElementResource served on the REST interface
+ Rule: Search parameter names must be unique in the context of a resource.
..... type Σ1..1codeA resource type that is supported
ResourceType (Required)
..... profile Σ0..1canonical(StructureDefinition)Base System profile for all uses of resource
..... supportedProfile ΣTU0..*canonical(StructureDefinition)Profiles for use cases supported
..... documentation 0..1markdownAdditional information about the use of the resource type
..... feature 0..*see featureStatement of support for a feature in this context
..... interaction 0..*BackboneElementWhat operations are supported?
...... code 1..1coderead | vread | update | patch | delete | history-instance | history-type | create | search-type
TypeRestfulInteraction (Required)
...... documentation 0..1markdownAnything special about operation behavior
...... feature 0..*see featureStatement of support for a feature in this context
..... searchParam 0..*BackboneElementSearch parameters supported by implementation
...... name 1..1stringName of search parameter
...... definition 0..1canonical(SearchParameter)Source of definition for parameter
...... type 1..1codenumber | date | string | token | reference | composite | quantity | uri | special
SearchParamType (Required)
...... documentation 0..1markdownServer-specific usage
...... feature 0..*see featureStatement of support for a feature in this context
..... operation Σ0..*BackboneElementDefinition of a resource operation
...... name Σ1..1stringName by which the operation/query is invoked
...... definition Σ1..1canonical(OperationDefinition)The defined operation/query
...... documentation 0..1markdownSpecific details about operation behavior
...... feature 0..*see featureStatement of support for a feature in this context
.... interaction 0..*BackboneElementWhat operations are supported?
..... code 1..1codetransaction | batch | search-system | history-system
SystemRestfulInteraction (Required)
..... documentation 0..1markdownAnything special about operation behavior
..... feature 0..*see featureStatement of support for a feature in this context
.... searchParam 0..*see searchParamSearch parameters for searching all resources
.... operation Σ0..*see operationDefinition of a system level operation
.... compartment 0..*canonical(CompartmentDefinition)Compartments served/used by system

doco Documentation for this format

UML Diagram (Legend)

CapabilityStatement2 (CanonicalResource)An absolute URI that is used to identify this capability statement2 when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this capability statement2 is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the capability statement2 is stored on different serversurl : uri [0..1]The identifier that is used to identify this version of the capability statement2 when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the capability statement2 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. There is also no expectation that versions can be placed in a lexicographical sequenceversion : string [0..1]A natural language name identifying the capability statement2. This name should be usable as an identifier for the module by machine processing applications such as code generationname : string [0..1]A short, descriptive, user-friendly title for the capability statement2title : string [0..1]The status of this capability statement2. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of an artifact. (Strength=Required)PublicationStatus! »A Boolean value to indicate that this capability statement2 is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usageexperimental : boolean [0..1]The date (and optionally time) when the capability statement2 was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the capability statement2 changesdate : dateTime [1..1]The name of the organization or individual that published the capability statement2publisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the capability statement2 from a consumer's perspective. Typically, this is used when the capability statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFPdescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate capability statement2 instancesuseContext : UsageContext [0..*]A legal or geographic region in which the capability statement2 is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use. (Strength=Extensible)Jurisdiction ValueSet+ »Explanation of why this capability statement2 is needed and why it has been designed as it haspurpose : markdown [0..1]A copyright statement relating to the capability statement2 and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the capability statement2copyright : markdown [0..1]The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind, not instance of software) or a class of implementation (e.g. a desired purchase)kind : code [1..1] « How a capability statement is intended to be used. (Strength=Required)CapabilityStatementKind! »Reference to a canonical URL of another CapabilityStatement2 that this software implements. This capability statement is a published API description that corresponds to a business service. The server may actually implement a subset of the capability statement it claims to implement, so the capability statement must specify the full capability detailsinstantiates : canonical [0..*] « CapabilityStatement2 »Reference to a canonical URL of another CapabilityStatement2 that this software adds to. The capability statement automatically includes everything in the other statement, and it is not duplicated, though the server may repeat the same resources, interactions and operations to add additional details to themimports : canonical [0..*] « CapabilityStatement2 »The version of the FHIR specification that this CapabilityStatement2 describes (which SHALL be the same as the FHIR version of the CapabilityStatement2 itself). There is no default valuefhirVersion : code [1..1] « All published FHIR Versions. (Strength=Required)FHIRVersion! »A list of the formats supported by this implementation using their content typesformat : code [1..*] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required)Mime Types! »A list of the patch formats supported by this implementation using their content typespatchFormat : code [0..*] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required)Mime Types! »A list of implementation guides that the server does (or should) support in their entiretyimplementationGuide : canonical [0..*] « ImplementationGuide »SoftwareName the software is known byname : string [1..1]The version identifier for the software covered by this statementversion : string [0..1]Date this version of the software was releasedreleaseDate : dateTime [0..1]ImplementationInformation about the specific installation that this capability statement relates todescription : string [1..1]An absolute base URL for the implementation. This forms the base for REST interfaces as well as the mailbox and document interfacesurl : url [0..1]The organization responsible for the management of the instance and oversight of the data on the server at the specified URLcustodian : Reference [0..1] « Organization »RestIdentifies whether this portion of the statement is describing the ability to initiate or receive restful operationsmode : code [1..1] « The mode of a RESTful capability statement. (Strength=Required)RestfulCapabilityMode! »Information about the system's restful capabilities that apply across all applications, such as securitydocumentation : markdown [0..1]An absolute URI which is a reference to the definition of a compartment that the system supports. The reference is to a CompartmentDefinition resource by its canonical URL compartment : canonical [0..*] « CompartmentDefinition »FeatureA code that describes the feature being reported oncode : code [1..1] « A code that describes the feature being reported on. (Strength=Required)CapabilityFeature! »A value for the feature - maybe true, false, or one of the set of codes allowed in the definition of the feature codevalue : code [1..1] « A value for the feature - maybe true, false, or one of the set of codes allowed in the definition of the feature code. (Strength=Required)CapabilityFeatureValue! »ResourceA type of resource exposed via the restful interfacetype : code [1..1] « One of the resource types defined as part of this version of FHIR. (Strength=Required)ResourceType! »A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles](profiling.html#profile-uses)profile : canonical [0..1] « StructureDefinition »A list of profiles that represent different use cases supported by the system. For a server, "supported by the system" means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles](profiling.html#profile-uses)supportedProfile : canonical [0..*] « StructureDefinition »Additional information about the resource type used by the systemdocumentation : markdown [0..1]ResourceInteractionCoded identifier of the operation, supported by the system resourcecode : code [1..1] « Operations supported by REST at the type or instance level. (Strength=Required)TypeRestfulInteraction! »Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'documentation : markdown [0..1]SearchParamThe name of the search parameter used in the interfacename : string [1..1]An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [[[SearchParameter.url]]]). This element SHALL be populated if the search parameter refers to a SearchParameter defined by the FHIR core specification or externally defined IGsdefinition : canonical [0..1] « SearchParameter »The type of value a search parameter refers to, and how the content is interpretedtype : code [1..1] « Data types allowed to be used for search parameters. (Strength=Required)SearchParamType! »This allows documentation of any distinct behaviors about how the search parameter is used. For example, text matching algorithmsdocumentation : markdown [0..1]OperationThe name of the operation or query. For an operation, this is the name prefixed with $ and used in the URL. For a query, this is the name used in the _query parameter when the query is calledname : string [1..1]Where the formal definition can be found. If a server references the base definition of an Operation (i.e. from the specification itself such as ```http://hl7.org/fhir/OperationDefinition/ValueSet-expand```), that means it supports the full capabilities of the operation - e.g. both GET and POST invocation. If it only supports a subset, it must define its own custom [[[OperationDefinition]]] with a 'base' of the original OperationDefinition. The custom definition would describe the specific subset of functionality supporteddefinition : canonical [1..1] « OperationDefinition »Documentation that describes anything special about the operation behavior, possibly detailing different behavior for system, type and instance-level invocation of the operationdocumentation : markdown [0..1]SystemInteractionA coded identifier of the operation, supported by the systemcode : code [1..1] « Operations supported by REST at the system level. (Strength=Required)SystemRestfulInteraction! »Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implementeddocumentation : markdown [0..1]Software that is covered by this capability statement. It is used when the capability statement describes the capabilities of a particular software version, independent of an installationsoftware[0..1]Identifies a specific implementation instance that is described by the capability statement - i.e. a particular installation, rather than the capabilities of a software programimplementation[0..1]A statement that affirms support for a featurefeature[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]Identifies a restful operation supported by the solutioninteraction[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementationsearchParam[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]Definition of an operation or a named query together with its parameters and their meaning and type. Consult the definition of the operation for details about how to invoke the operation, and the parametersoperation[0..*]A specification of the restful capabilities of the solution for a specific resource typeresource[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]A specification of restful operations supported by the systeminteraction[0..*]Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementationsearchParam[0..*]Definition of an operation or a named query together with its parameters and their meaning and typeoperation[0..*]A definition of the restful capabilities of the solution, if anyrest[0..*]

XML Template

<CapabilityStatement2 xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <url value="[uri]"/><!-- 0..1 Canonical identifier for this capability statement2, represented as a URI (globally unique) -->
 <version value="[string]"/><!-- 0..1 Business version of the capability statement2 -->
 <name value="[string]"/><!-- ?? 0..1 Name for this capability statement2 (computer friendly) -->
 <title value="[string]"/><!-- 0..1 Name for this capability statement2 (human friendly) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 1..1 Date last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- ?? 0..1 Natural language description of the capability statement2 -->
 <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for capability statement2 (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 Why this capability statement2 is defined -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <kind value="[code]"/><!-- ?? 1..1 instance | capability | requirements -->
 <instantiates><!-- 0..* canonical(CapabilityStatement2) Canonical URL of another capability statement this implements --></instantiates>
 <imports><!-- 0..* canonical(CapabilityStatement2) Canonical URL of another capability statement this adds to --></imports>
 <software>  <!-- ?? 0..1 Software that is covered by this capability statement -->
  <name value="[string]"/><!-- 1..1 A name the software is known by -->
  <version value="[string]"/><!-- 0..1 Version covered by this statement -->
  <releaseDate value="[dateTime]"/><!-- 0..1 Date this version was released -->
 </software>
 <implementation>  <!-- ?? 0..1 If this describes a specific instance -->
  <description value="[string]"/><!-- 1..1 Describes this specific instance -->
  <url value="[url]"/><!-- 0..1 Base URL for the installation -->
  <custodian><!-- 0..1 Reference(Organization) Organization that manages the data --></custodian>
 </implementation>
 <fhirVersion value="[code]"/><!-- 1..1 FHIR Version the system supports -->
 <format value="[code]"/><!-- 1..* formats supported (xml | json | ttl | mime type) -->
 <patchFormat value="[code]"/><!-- 0..* Patch formats supported -->
 <implementationGuide><!-- 0..* canonical(ImplementationGuide) Implementation guides supported --></implementationGuide>
 <rest>  <!-- ?? 0..* If the endpoint is a RESTful one -->
  <mode value="[code]"/><!-- 1..1 client | server -->
  <documentation value="[markdown]"/><!-- 0..1 General description of implementation -->
  <feature>  <!-- 0..* Statement of support for a feature -->
   <code value="[code]"/><!-- 1..1 Feature that is being reported -->
   <value value="[code]"/><!-- 1..1 Value of the feature (true, false, or a code) -->
  </feature>
  <resource>  <!-- 0..* Resource served on the REST interface -->
   <type value="[code]"/><!-- 1..1 A resource type that is supported -->
   <profile><!-- 0..1 canonical(StructureDefinition) Base System profile for all uses of resource --></profile>
   <supportedProfile><!-- 0..* canonical(StructureDefinition) Profiles for use cases supported --></supportedProfile>
   <documentation value="[markdown]"/><!-- 0..1 Additional information about the use of the resource type -->
   <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
   <interaction>  <!-- 0..* What operations are supported? -->
    <code value="[code]"/><!-- 1..1 read | vread | update | patch | delete | history-instance | history-type | create | search-type -->
    <documentation value="[markdown]"/><!-- 0..1 Anything special about operation behavior -->
    <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
   </interaction>
   <searchParam>  <!-- 0..* Search parameters supported by implementation -->
    <name value="[string]"/><!-- 1..1 Name of search parameter -->
    <definition><!-- 0..1 canonical(SearchParameter) Source of definition for parameter --></definition>
    <type value="[code]"/><!-- 1..1 number | date | string | token | reference | composite | quantity | uri | special -->
    <documentation value="[markdown]"/><!-- 0..1 Server-specific usage -->
    <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
   </searchParam>
   <operation>  <!-- 0..* Definition of a resource operation -->
    <name value="[string]"/><!-- 1..1 Name by which the operation/query is invoked -->
    <definition><!-- 1..1 canonical(OperationDefinition) The defined operation/query --></definition>
    <documentation value="[markdown]"/><!-- 0..1 Specific details about operation behavior -->
    <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
   </operation>
  </resource>
  <interaction>  <!-- 0..* What operations are supported? -->
   <code value="[code]"/><!-- 1..1 transaction | batch | search-system | history-system -->
   <documentation value="[markdown]"/><!-- 0..1 Anything special about operation behavior -->
   <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
  </interaction>
  <searchParam><!-- 0..* Content as for CapabilityStatement2.rest.resource.searchParam Search parameters for searching all resources --></searchParam>
  <operation><!-- 0..* Content as for CapabilityStatement2.rest.resource.operation Definition of a system level operation --></operation>
  <compartment><!-- 0..* canonical(CompartmentDefinition) Compartments served/used by system --></compartment>
 </rest>
</CapabilityStatement2>

JSON Template

{doco
  "resourceType" : "CapabilityStatement2",
  // from Resource: id, meta, implicitRules, and language
  "url" : "<uri>", // Canonical identifier for this capability statement2, represented as a URI (globally unique)
  "version" : "<string>", // Business version of the capability statement2
  "name" : "<string>", // C? Name for this capability statement2 (computer friendly)
  "title" : "<string>", // Name for this capability statement2 (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // R!  Date last changed
  "publisher" : "<string>", // Name of the publisher (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // C? Natural language description of the capability statement2
  "useContext" : [{ UsageContext }], // The context that the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for capability statement2 (if applicable)
  "purpose" : "<markdown>", // Why this capability statement2 is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "kind" : "<code>", // C? R!  instance | capability | requirements
  "instantiates" : [{ canonical(CapabilityStatement2) }], // Canonical URL of another capability statement this implements
  "imports" : [{ canonical(CapabilityStatement2) }], // Canonical URL of another capability statement this adds to
  "software" : { // C? Software that is covered by this capability statement
    "name" : "<string>", // R!  A name the software is known by
    "version" : "<string>", // Version covered by this statement
    "releaseDate" : "<dateTime>" // Date this version was released
  },
  "implementation" : { // C? If this describes a specific instance
    "description" : "<string>", // R!  Describes this specific instance
    "url" : "<url>", // Base URL for the installation
    "custodian" : { Reference(Organization) } // Organization that manages the data
  },
  "fhirVersion" : "<code>", // R!  FHIR Version the system supports
  "format" : ["<code>"], // R!  formats supported (xml | json | ttl | mime type)
  "patchFormat" : ["<code>"], // Patch formats supported
  "implementationGuide" : [{ canonical(ImplementationGuide) }], // Implementation guides supported
  "rest" : [{ // C? If the endpoint is a RESTful one
    "mode" : "<code>", // R!  client | server
    "documentation" : "<markdown>", // General description of implementation
    "feature" : [{ // Statement of support for a feature
      "code" : "<code>", // R!  Feature that is being reported
      "value" : "<code>" // R!  Value of the feature (true, false, or a code)
    }],
    "resource" : [{ // Resource served on the REST interface
      "type" : "<code>", // R!  A resource type that is supported
      "profile" : { canonical(StructureDefinition) }, // Base System profile for all uses of resource
      "supportedProfile" : [{ canonical(StructureDefinition) }], // Profiles for use cases supported
      "documentation" : "<markdown>", // Additional information about the use of the resource type
      "feature" : [{ Content as for CapabilityStatement2.rest.feature }], // Statement of support for a feature in this context
      "interaction" : [{ // What operations are supported?
        "code" : "<code>", // R!  read | vread | update | patch | delete | history-instance | history-type | create | search-type
        "documentation" : "<markdown>", // Anything special about operation behavior
        "feature" : [{ Content as for CapabilityStatement2.rest.feature }] // Statement of support for a feature in this context
      }],
      "searchParam" : [{ // Search parameters supported by implementation
        "name" : "<string>", // R!  Name of search parameter
        "definition" : { canonical(SearchParameter) }, // Source of definition for parameter
        "type" : "<code>", // R!  number | date | string | token | reference | composite | quantity | uri | special
        "documentation" : "<markdown>", // Server-specific usage
        "feature" : [{ Content as for CapabilityStatement2.rest.feature }] // Statement of support for a feature in this context
      }],
      "operation" : [{ // Definition of a resource operation
        "name" : "<string>", // R!  Name by which the operation/query is invoked
        "definition" : { canonical(OperationDefinition) }, // R!  The defined operation/query
        "documentation" : "<markdown>", // Specific details about operation behavior
        "feature" : [{ Content as for CapabilityStatement2.rest.feature }] // Statement of support for a feature in this context
      }]
    }],
    "interaction" : [{ // What operations are supported?
      "code" : "<code>", // R!  transaction | batch | search-system | history-system
      "documentation" : "<markdown>", // Anything special about operation behavior
      "feature" : [{ Content as for CapabilityStatement2.rest.feature }] // Statement of support for a feature in this context
    }],
    "searchParam" : [{ Content as for CapabilityStatement2.rest.resource.searchParam }], // Search parameters for searching all resources
    "operation" : [{ Content as for CapabilityStatement2.rest.resource.operation }], // Definition of a system level operation
    "compartment" : [{ canonical(CompartmentDefinition) }] // Compartments served/used by system
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:CapabilityStatement2;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  fhir:CapabilityStatement2.url [ uri ]; # 0..1 Canonical identifier for this capability statement2, represented as a URI (globally unique)
  fhir:CapabilityStatement2.version [ string ]; # 0..1 Business version of the capability statement2
  fhir:CapabilityStatement2.name [ string ]; # 0..1 Name for this capability statement2 (computer friendly)
  fhir:CapabilityStatement2.title [ string ]; # 0..1 Name for this capability statement2 (human friendly)
  fhir:CapabilityStatement2.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:CapabilityStatement2.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:CapabilityStatement2.date [ dateTime ]; # 1..1 Date last changed
  fhir:CapabilityStatement2.publisher [ string ]; # 0..1 Name of the publisher (organization or individual)
  fhir:CapabilityStatement2.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:CapabilityStatement2.description [ markdown ]; # 0..1 Natural language description of the capability statement2
  fhir:CapabilityStatement2.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support
  fhir:CapabilityStatement2.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for capability statement2 (if applicable)
  fhir:CapabilityStatement2.purpose [ markdown ]; # 0..1 Why this capability statement2 is defined
  fhir:CapabilityStatement2.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:CapabilityStatement2.kind [ code ]; # 1..1 instance | capability | requirements
  fhir:CapabilityStatement2.instantiates [ canonical(CapabilityStatement2) ], ... ; # 0..* Canonical URL of another capability statement this implements
  fhir:CapabilityStatement2.imports [ canonical(CapabilityStatement2) ], ... ; # 0..* Canonical URL of another capability statement this adds to
  fhir:CapabilityStatement2.software [ # 0..1 Software that is covered by this capability statement
    fhir:CapabilityStatement2.software.name [ string ]; # 1..1 A name the software is known by
    fhir:CapabilityStatement2.software.version [ string ]; # 0..1 Version covered by this statement
    fhir:CapabilityStatement2.software.releaseDate [ dateTime ]; # 0..1 Date this version was released
  ];
  fhir:CapabilityStatement2.implementation [ # 0..1 If this describes a specific instance
    fhir:CapabilityStatement2.implementation.description [ string ]; # 1..1 Describes this specific instance
    fhir:CapabilityStatement2.implementation.url [ url ]; # 0..1 Base URL for the installation
    fhir:CapabilityStatement2.implementation.custodian [ Reference(Organization) ]; # 0..1 Organization that manages the data
  ];
  fhir:CapabilityStatement2.fhirVersion [ code ]; # 1..1 FHIR Version the system supports
  fhir:CapabilityStatement2.format [ code ], ... ; # 1..* formats supported (xml | json | ttl | mime type)
  fhir:CapabilityStatement2.patchFormat [ code ], ... ; # 0..* Patch formats supported
  fhir:CapabilityStatement2.implementationGuide [ canonical(ImplementationGuide) ], ... ; # 0..* Implementation guides supported
  fhir:CapabilityStatement2.rest [ # 0..* If the endpoint is a RESTful one
    fhir:CapabilityStatement2.rest.mode [ code ]; # 1..1 client | server
    fhir:CapabilityStatement2.rest.documentation [ markdown ]; # 0..1 General description of implementation
    fhir:CapabilityStatement2.rest.feature [ # 0..* Statement of support for a feature
      fhir:CapabilityStatement2.rest.feature.code [ code ]; # 1..1 Feature that is being reported
      fhir:CapabilityStatement2.rest.feature.value [ code ]; # 1..1 Value of the feature (true, false, or a code)
    ], ...;
    fhir:CapabilityStatement2.rest.resource [ # 0..* Resource served on the REST interface
      fhir:CapabilityStatement2.rest.resource.type [ code ]; # 1..1 A resource type that is supported
      fhir:CapabilityStatement2.rest.resource.profile [ canonical(StructureDefinition) ]; # 0..1 Base System profile for all uses of resource
      fhir:CapabilityStatement2.rest.resource.supportedProfile [ canonical(StructureDefinition) ], ... ; # 0..* Profiles for use cases supported
      fhir:CapabilityStatement2.rest.resource.documentation [ markdown ]; # 0..1 Additional information about the use of the resource type
      fhir:CapabilityStatement2.rest.resource.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
      fhir:CapabilityStatement2.rest.resource.interaction [ # 0..* What operations are supported?
        fhir:CapabilityStatement2.rest.resource.interaction.code [ code ]; # 1..1 read | vread | update | patch | delete | history-instance | history-type | create | search-type
        fhir:CapabilityStatement2.rest.resource.interaction.documentation [ markdown ]; # 0..1 Anything special about operation behavior
        fhir:CapabilityStatement2.rest.resource.interaction.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
      ], ...;
      fhir:CapabilityStatement2.rest.resource.searchParam [ # 0..* Search parameters supported by implementation
        fhir:CapabilityStatement2.rest.resource.searchParam.name [ string ]; # 1..1 Name of search parameter
        fhir:CapabilityStatement2.rest.resource.searchParam.definition [ canonical(SearchParameter) ]; # 0..1 Source of definition for parameter
        fhir:CapabilityStatement2.rest.resource.searchParam.type [ code ]; # 1..1 number | date | string | token | reference | composite | quantity | uri | special
        fhir:CapabilityStatement2.rest.resource.searchParam.documentation [ markdown ]; # 0..1 Server-specific usage
        fhir:CapabilityStatement2.rest.resource.searchParam.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
      ], ...;
      fhir:CapabilityStatement2.rest.resource.operation [ # 0..* Definition of a resource operation
        fhir:CapabilityStatement2.rest.resource.operation.name [ string ]; # 1..1 Name by which the operation/query is invoked
        fhir:CapabilityStatement2.rest.resource.operation.definition [ canonical(OperationDefinition) ]; # 1..1 The defined operation/query
        fhir:CapabilityStatement2.rest.resource.operation.documentation [ markdown ]; # 0..1 Specific details about operation behavior
        fhir:CapabilityStatement2.rest.resource.operation.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
      ], ...;
    ], ...;
    fhir:CapabilityStatement2.rest.interaction [ # 0..* What operations are supported?
      fhir:CapabilityStatement2.rest.interaction.code [ code ]; # 1..1 transaction | batch | search-system | history-system
      fhir:CapabilityStatement2.rest.interaction.documentation [ markdown ]; # 0..1 Anything special about operation behavior
      fhir:CapabilityStatement2.rest.interaction.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
    ], ...;
    fhir:CapabilityStatement2.rest.searchParam [ See CapabilityStatement2.rest.resource.searchParam ], ... ; # 0..* Search parameters for searching all resources
    fhir:CapabilityStatement2.rest.operation [ See CapabilityStatement2.rest.resource.operation ], ... ; # 0..* Definition of a system level operation
    fhir:CapabilityStatement2.rest.compartment [ canonical(CompartmentDefinition) ], ... ; # 0..* Compartments served/used by system
  ], ...;
]

Changes since R3

This resource did not exist in Release 2

This analysis is available as XML or JSON.

Structure

NameFlagsCard.TypeDescription & Constraintsdoco
.. CapabilityStatement2 TUCanonicalResourceA statement of system capabilities
+ Warning: Name should be usable as an identifier for the module by machine processing applications such as code generation
+ Rule: A Capability Statement SHALL have at least one of REST, messaging or document element.
+ Rule: A Capability Statement SHALL have at least one of description, software, or implementation element.
+ Rule: If kind = instance, implementation must be present and software may be present
+ Rule: If kind = capability, implementation must be absent, software must be present
+ Rule: If kind = requirements, implementation and software must be absent
Elements defined in Ancestors: id, meta, implicitRules, language, text, contained, extension, modifierExtension, url, identifier, version, name, title, status, experimental, date, publisher, contact, description, useContext, jurisdiction, purpose, copyright
... url Σ0..1uriCanonical identifier for this capability statement2, represented as a URI (globally unique)
... version Σ0..1stringBusiness version of the capability statement2
... name ΣI0..1stringName for this capability statement2 (computer friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental Σ0..1booleanFor testing purposes, not real usage
... date Σ1..1dateTimeDate last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description I0..1markdownNatural language description of the capability statement2
... useContext Σ0..*UsageContextThe context that the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for capability statement2 (if applicable)
Jurisdiction (Extensible)
... purpose 0..1markdownWhy this capability statement2 is defined
... copyright 0..1markdownUse and/or publishing restrictions
... kind ΣI1..1codeinstance | capability | requirements
CapabilityStatementKind (Required)
... instantiates Σ0..*canonical(CapabilityStatement2)Canonical URL of another capability statement this implements
... imports ΣTU0..*canonical(CapabilityStatement2)Canonical URL of another capability statement this adds to
... software ΣI0..1BackboneElementSoftware that is covered by this capability statement
.... name Σ1..1stringA name the software is known by
.... version Σ0..1stringVersion covered by this statement
.... releaseDate Σ0..1dateTimeDate this version was released
... implementation ΣI0..1BackboneElementIf this describes a specific instance
.... description Σ1..1stringDescribes this specific instance
.... url Σ0..1urlBase URL for the installation
.... custodian ΣTU0..1Reference(Organization)Organization that manages the data
... fhirVersion Σ1..1codeFHIR Version the system supports
FHIRVersion (Required)
... format Σ1..*codeformats supported (xml | json | ttl | mime type)
MimeType (Required)
... patchFormat Σ0..*codePatch formats supported
MimeType (Required)
... implementationGuide Σ0..*canonical(ImplementationGuide)Implementation guides supported
... rest ΣI0..*BackboneElementIf the endpoint is a RESTful one
+ Rule: A given resource can only be described once per RESTful mode.
.... mode Σ1..1codeclient | server
RestfulCapabilityMode (Required)
.... documentation 0..1markdownGeneral description of implementation
.... feature 0..*BackboneElementStatement of support for a feature
..... code 1..1codeFeature that is being reported
Capability Features (Required)
..... value 1..1codeValue of the feature (true, false, or a code)
Capability Feature Values (Required)
.... resource ΣI0..*BackboneElementResource served on the REST interface
+ Rule: Search parameter names must be unique in the context of a resource.
..... type Σ1..1codeA resource type that is supported
ResourceType (Required)
..... profile Σ0..1canonical(StructureDefinition)Base System profile for all uses of resource
..... supportedProfile ΣTU0..*canonical(StructureDefinition)Profiles for use cases supported
..... documentation 0..1markdownAdditional information about the use of the resource type
..... feature 0..*see featureStatement of support for a feature in this context
..... interaction 0..*BackboneElementWhat operations are supported?
...... code 1..1coderead | vread | update | patch | delete | history-instance | history-type | create | search-type
TypeRestfulInteraction (Required)
...... documentation 0..1markdownAnything special about operation behavior
...... feature 0..*see featureStatement of support for a feature in this context
..... searchParam 0..*BackboneElementSearch parameters supported by implementation
...... name 1..1stringName of search parameter
...... definition 0..1canonical(SearchParameter)Source of definition for parameter
...... type 1..1codenumber | date | string | token | reference | composite | quantity | uri | special
SearchParamType (Required)
...... documentation 0..1markdownServer-specific usage
...... feature 0..*see featureStatement of support for a feature in this context
..... operation Σ0..*BackboneElementDefinition of a resource operation
...... name Σ1..1stringName by which the operation/query is invoked
...... definition Σ1..1canonical(OperationDefinition)The defined operation/query
...... documentation 0..1markdownSpecific details about operation behavior
...... feature 0..*see featureStatement of support for a feature in this context
.... interaction 0..*BackboneElementWhat operations are supported?
..... code 1..1codetransaction | batch | search-system | history-system
SystemRestfulInteraction (Required)
..... documentation 0..1markdownAnything special about operation behavior
..... feature 0..*see featureStatement of support for a feature in this context
.... searchParam 0..*see searchParamSearch parameters for searching all resources
.... operation Σ0..*see operationDefinition of a system level operation
.... compartment 0..*canonical(CompartmentDefinition)Compartments served/used by system

doco Documentation for this format

UML Diagram (Legend)

CapabilityStatement2 (CanonicalResource)An absolute URI that is used to identify this capability statement2 when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this capability statement2 is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the capability statement2 is stored on different serversurl : uri [0..1]The identifier that is used to identify this version of the capability statement2 when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the capability statement2 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. There is also no expectation that versions can be placed in a lexicographical sequenceversion : string [0..1]A natural language name identifying the capability statement2. This name should be usable as an identifier for the module by machine processing applications such as code generationname : string [0..1]A short, descriptive, user-friendly title for the capability statement2title : string [0..1]The status of this capability statement2. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of an artifact. (Strength=Required)PublicationStatus! »A Boolean value to indicate that this capability statement2 is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usageexperimental : boolean [0..1]The date (and optionally time) when the capability statement2 was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the capability statement2 changesdate : dateTime [1..1]The name of the organization or individual that published the capability statement2publisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the capability statement2 from a consumer's perspective. Typically, this is used when the capability statement describes a desired rather than an actual solution, for example as a formal expression of requirements as part of an RFPdescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate capability statement2 instancesuseContext : UsageContext [0..*]A legal or geographic region in which the capability statement2 is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use. (Strength=Extensible)Jurisdiction ValueSet+ »Explanation of why this capability statement2 is needed and why it has been designed as it haspurpose : markdown [0..1]A copyright statement relating to the capability statement2 and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the capability statement2copyright : markdown [0..1]The way that this statement is intended to be used, to describe an actual running instance of software, a particular product (kind, not instance of software) or a class of implementation (e.g. a desired purchase)kind : code [1..1] « How a capability statement is intended to be used. (Strength=Required)CapabilityStatementKind! »Reference to a canonical URL of another CapabilityStatement2 that this software implements. This capability statement is a published API description that corresponds to a business service. The server may actually implement a subset of the capability statement it claims to implement, so the capability statement must specify the full capability detailsinstantiates : canonical [0..*] « CapabilityStatement2 »Reference to a canonical URL of another CapabilityStatement2 that this software adds to. The capability statement automatically includes everything in the other statement, and it is not duplicated, though the server may repeat the same resources, interactions and operations to add additional details to themimports : canonical [0..*] « CapabilityStatement2 »The version of the FHIR specification that this CapabilityStatement2 describes (which SHALL be the same as the FHIR version of the CapabilityStatement2 itself). There is no default valuefhirVersion : code [1..1] « All published FHIR Versions. (Strength=Required)FHIRVersion! »A list of the formats supported by this implementation using their content typesformat : code [1..*] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required)Mime Types! »A list of the patch formats supported by this implementation using their content typespatchFormat : code [0..*] « The mime type of an attachment. Any valid mime type is allowed. (Strength=Required)Mime Types! »A list of implementation guides that the server does (or should) support in their entiretyimplementationGuide : canonical [0..*] « ImplementationGuide »SoftwareName the software is known byname : string [1..1]The version identifier for the software covered by this statementversion : string [0..1]Date this version of the software was releasedreleaseDate : dateTime [0..1]ImplementationInformation about the specific installation that this capability statement relates todescription : string [1..1]An absolute base URL for the implementation. This forms the base for REST interfaces as well as the mailbox and document interfacesurl : url [0..1]The organization responsible for the management of the instance and oversight of the data on the server at the specified URLcustodian : Reference [0..1] « Organization »RestIdentifies whether this portion of the statement is describing the ability to initiate or receive restful operationsmode : code [1..1] « The mode of a RESTful capability statement. (Strength=Required)RestfulCapabilityMode! »Information about the system's restful capabilities that apply across all applications, such as securitydocumentation : markdown [0..1]An absolute URI which is a reference to the definition of a compartment that the system supports. The reference is to a CompartmentDefinition resource by its canonical URL compartment : canonical [0..*] « CompartmentDefinition »FeatureA code that describes the feature being reported oncode : code [1..1] « A code that describes the feature being reported on. (Strength=Required)CapabilityFeature! »A value for the feature - maybe true, false, or one of the set of codes allowed in the definition of the feature codevalue : code [1..1] « A value for the feature - maybe true, false, or one of the set of codes allowed in the definition of the feature code. (Strength=Required)CapabilityFeatureValue! »ResourceA type of resource exposed via the restful interfacetype : code [1..1] « One of the resource types defined as part of this version of FHIR. (Strength=Required)ResourceType! »A specification of the profile that describes the solution's overall support for the resource, including any constraints on cardinality, bindings, lengths or other limitations. See further discussion in [Using Profiles](profiling.html#profile-uses)profile : canonical [0..1] « StructureDefinition »A list of profiles that represent different use cases supported by the system. For a server, "supported by the system" means the system hosts/produces a set of resources that are conformant to a particular profile, and allows clients that use its services to search using this profile and to find appropriate data. For a client, it means the system will search by this profile and process data according to the guidance implicit in the profile. See further discussion in [Using Profiles](profiling.html#profile-uses)supportedProfile : canonical [0..*] « StructureDefinition »Additional information about the resource type used by the systemdocumentation : markdown [0..1]ResourceInteractionCoded identifier of the operation, supported by the system resourcecode : code [1..1] « Operations supported by REST at the type or instance level. (Strength=Required)TypeRestfulInteraction! »Guidance specific to the implementation of this operation, such as 'delete is a logical delete' or 'updates are only allowed with version id' or 'creates permitted from pre-authorized certificates only'documentation : markdown [0..1]SearchParamThe name of the search parameter used in the interfacename : string [1..1]An absolute URI that is a formal reference to where this parameter was first defined, so that a client can be confident of the meaning of the search parameter (a reference to [[[SearchParameter.url]]]). This element SHALL be populated if the search parameter refers to a SearchParameter defined by the FHIR core specification or externally defined IGsdefinition : canonical [0..1] « SearchParameter »The type of value a search parameter refers to, and how the content is interpretedtype : code [1..1] « Data types allowed to be used for search parameters. (Strength=Required)SearchParamType! »This allows documentation of any distinct behaviors about how the search parameter is used. For example, text matching algorithmsdocumentation : markdown [0..1]OperationThe name of the operation or query. For an operation, this is the name prefixed with $ and used in the URL. For a query, this is the name used in the _query parameter when the query is calledname : string [1..1]Where the formal definition can be found. If a server references the base definition of an Operation (i.e. from the specification itself such as ```http://hl7.org/fhir/OperationDefinition/ValueSet-expand```), that means it supports the full capabilities of the operation - e.g. both GET and POST invocation. If it only supports a subset, it must define its own custom [[[OperationDefinition]]] with a 'base' of the original OperationDefinition. The custom definition would describe the specific subset of functionality supporteddefinition : canonical [1..1] « OperationDefinition »Documentation that describes anything special about the operation behavior, possibly detailing different behavior for system, type and instance-level invocation of the operationdocumentation : markdown [0..1]SystemInteractionA coded identifier of the operation, supported by the systemcode : code [1..1] « Operations supported by REST at the system level. (Strength=Required)SystemRestfulInteraction! »Guidance specific to the implementation of this operation, such as limitations on the kind of transactions allowed, or information about system wide search is implementeddocumentation : markdown [0..1]Software that is covered by this capability statement. It is used when the capability statement describes the capabilities of a particular software version, independent of an installationsoftware[0..1]Identifies a specific implementation instance that is described by the capability statement - i.e. a particular installation, rather than the capabilities of a software programimplementation[0..1]A statement that affirms support for a featurefeature[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]Identifies a restful operation supported by the solutioninteraction[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]Search parameters for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementationsearchParam[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]Definition of an operation or a named query together with its parameters and their meaning and type. Consult the definition of the operation for details about how to invoke the operation, and the parametersoperation[0..*]A specification of the restful capabilities of the solution for a specific resource typeresource[0..*]A statement that affirms support for a feature, in this contextfeature[0..*]A specification of restful operations supported by the systeminteraction[0..*]Search parameters that are supported for searching all resources for implementations to support and/or make use of - either references to ones defined in the specification, or additional ones defined for/by the implementationsearchParam[0..*]Definition of an operation or a named query together with its parameters and their meaning and typeoperation[0..*]A definition of the restful capabilities of the solution, if anyrest[0..*]

XML Template

<CapabilityStatement2 xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <url value="[uri]"/><!-- 0..1 Canonical identifier for this capability statement2, represented as a URI (globally unique) -->
 <version value="[string]"/><!-- 0..1 Business version of the capability statement2 -->
 <name value="[string]"/><!-- ?? 0..1 Name for this capability statement2 (computer friendly) -->
 <title value="[string]"/><!-- 0..1 Name for this capability statement2 (human friendly) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 1..1 Date last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- ?? 0..1 Natural language description of the capability statement2 -->
 <useContext><!-- 0..* UsageContext The context that the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for capability statement2 (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 Why this capability statement2 is defined -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <kind value="[code]"/><!-- ?? 1..1 instance | capability | requirements -->
 <instantiates><!-- 0..* canonical(CapabilityStatement2) Canonical URL of another capability statement this implements --></instantiates>
 <imports><!-- 0..* canonical(CapabilityStatement2) Canonical URL of another capability statement this adds to --></imports>
 <software>  <!-- ?? 0..1 Software that is covered by this capability statement -->
  <name value="[string]"/><!-- 1..1 A name the software is known by -->
  <version value="[string]"/><!-- 0..1 Version covered by this statement -->
  <releaseDate value="[dateTime]"/><!-- 0..1 Date this version was released -->
 </software>
 <implementation>  <!-- ?? 0..1 If this describes a specific instance -->
  <description value="[string]"/><!-- 1..1 Describes this specific instance -->
  <url value="[url]"/><!-- 0..1 Base URL for the installation -->
  <custodian><!-- 0..1 Reference(Organization) Organization that manages the data --></custodian>
 </implementation>
 <fhirVersion value="[code]"/><!-- 1..1 FHIR Version the system supports -->
 <format value="[code]"/><!-- 1..* formats supported (xml | json | ttl | mime type) -->
 <patchFormat value="[code]"/><!-- 0..* Patch formats supported -->
 <implementationGuide><!-- 0..* canonical(ImplementationGuide) Implementation guides supported --></implementationGuide>
 <rest>  <!-- ?? 0..* If the endpoint is a RESTful one -->
  <mode value="[code]"/><!-- 1..1 client | server -->
  <documentation value="[markdown]"/><!-- 0..1 General description of implementation -->
  <feature>  <!-- 0..* Statement of support for a feature -->
   <code value="[code]"/><!-- 1..1 Feature that is being reported -->
   <value value="[code]"/><!-- 1..1 Value of the feature (true, false, or a code) -->
  </feature>
  <resource>  <!-- 0..* Resource served on the REST interface -->
   <type value="[code]"/><!-- 1..1 A resource type that is supported -->
   <profile><!-- 0..1 canonical(StructureDefinition) Base System profile for all uses of resource --></profile>
   <supportedProfile><!-- 0..* canonical(StructureDefinition) Profiles for use cases supported --></supportedProfile>
   <documentation value="[markdown]"/><!-- 0..1 Additional information about the use of the resource type -->
   <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
   <interaction>  <!-- 0..* What operations are supported? -->
    <code value="[code]"/><!-- 1..1 read | vread | update | patch | delete | history-instance | history-type | create | search-type -->
    <documentation value="[markdown]"/><!-- 0..1 Anything special about operation behavior -->
    <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
   </interaction>
   <searchParam>  <!-- 0..* Search parameters supported by implementation -->
    <name value="[string]"/><!-- 1..1 Name of search parameter -->
    <definition><!-- 0..1 canonical(SearchParameter) Source of definition for parameter --></definition>
    <type value="[code]"/><!-- 1..1 number | date | string | token | reference | composite | quantity | uri | special -->
    <documentation value="[markdown]"/><!-- 0..1 Server-specific usage -->
    <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
   </searchParam>
   <operation>  <!-- 0..* Definition of a resource operation -->
    <name value="[string]"/><!-- 1..1 Name by which the operation/query is invoked -->
    <definition><!-- 1..1 canonical(OperationDefinition) The defined operation/query --></definition>
    <documentation value="[markdown]"/><!-- 0..1 Specific details about operation behavior -->
    <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
   </operation>
  </resource>
  <interaction>  <!-- 0..* What operations are supported? -->
   <code value="[code]"/><!-- 1..1 transaction | batch | search-system | history-system -->
   <documentation value="[markdown]"/><!-- 0..1 Anything special about operation behavior -->
   <feature><!-- 0..* Content as for CapabilityStatement2.rest.feature Statement of support for a feature in this context --></feature>
  </interaction>
  <searchParam><!-- 0..* Content as for CapabilityStatement2.rest.resource.searchParam Search parameters for searching all resources --></searchParam>
  <operation><!-- 0..* Content as for CapabilityStatement2.rest.resource.operation Definition of a system level operation --></operation>
  <compartment><!-- 0..* canonical(CompartmentDefinition) Compartments served/used by system --></compartment>
 </rest>
</CapabilityStatement2>

JSON Template

{doco
  "resourceType" : "CapabilityStatement2",
  // from Resource: id, meta, implicitRules, and language
  "url" : "<uri>", // Canonical identifier for this capability statement2, represented as a URI (globally unique)
  "version" : "<string>", // Business version of the capability statement2
  "name" : "<string>", // C? Name for this capability statement2 (computer friendly)
  "title" : "<string>", // Name for this capability statement2 (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // R!  Date last changed
  "publisher" : "<string>", // Name of the publisher (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // C? Natural language description of the capability statement2
  "useContext" : [{ UsageContext }], // The context that the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for capability statement2 (if applicable)
  "purpose" : "<markdown>", // Why this capability statement2 is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "kind" : "<code>", // C? R!  instance | capability | requirements
  "instantiates" : [{ canonical(CapabilityStatement2) }], // Canonical URL of another capability statement this implements
  "imports" : [{ canonical(CapabilityStatement2) }], // Canonical URL of another capability statement this adds to
  "software" : { // C? Software that is covered by this capability statement
    "name" : "<string>", // R!  A name the software is known by
    "version" : "<string>", // Version covered by this statement
    "releaseDate" : "<dateTime>" // Date this version was released
  },
  "implementation" : { // C? If this describes a specific instance
    "description" : "<string>", // R!  Describes this specific instance
    "url" : "<url>", // Base URL for the installation
    "custodian" : { Reference(Organization) } // Organization that manages the data
  },
  "fhirVersion" : "<code>", // R!  FHIR Version the system supports
  "format" : ["<code>"], // R!  formats supported (xml | json | ttl | mime type)
  "patchFormat" : ["<code>"], // Patch formats supported
  "implementationGuide" : [{ canonical(ImplementationGuide) }], // Implementation guides supported
  "rest" : [{ // C? If the endpoint is a RESTful one
    "mode" : "<code>", // R!  client | server
    "documentation" : "<markdown>", // General description of implementation
    "feature" : [{ // Statement of support for a feature
      "code" : "<code>", // R!  Feature that is being reported
      "value" : "<code>" // R!  Value of the feature (true, false, or a code)
    }],
    "resource" : [{ // Resource served on the REST interface
      "type" : "<code>", // R!  A resource type that is supported
      "profile" : { canonical(StructureDefinition) }, // Base System profile for all uses of resource
      "supportedProfile" : [{ canonical(StructureDefinition) }], // Profiles for use cases supported
      "documentation" : "<markdown>", // Additional information about the use of the resource type
      "feature" : [{ Content as for CapabilityStatement2.rest.feature }], // Statement of support for a feature in this context
      "interaction" : [{ // What operations are supported?
        "code" : "<code>", // R!  read | vread | update | patch | delete | history-instance | history-type | create | search-type
        "documentation" : "<markdown>", // Anything special about operation behavior
        "feature" : [{ Content as for CapabilityStatement2.rest.feature }] // Statement of support for a feature in this context
      }],
      "searchParam" : [{ // Search parameters supported by implementation
        "name" : "<string>", // R!  Name of search parameter
        "definition" : { canonical(SearchParameter) }, // Source of definition for parameter
        "type" : "<code>", // R!  number | date | string | token | reference | composite | quantity | uri | special
        "documentation" : "<markdown>", // Server-specific usage
        "feature" : [{ Content as for CapabilityStatement2.rest.feature }] // Statement of support for a feature in this context
      }],
      "operation" : [{ // Definition of a resource operation
        "name" : "<string>", // R!  Name by which the operation/query is invoked
        "definition" : { canonical(OperationDefinition) }, // R!  The defined operation/query
        "documentation" : "<markdown>", // Specific details about operation behavior
        "feature" : [{ Content as for CapabilityStatement2.rest.feature }] // Statement of support for a feature in this context
      }]
    }],
    "interaction" : [{ // What operations are supported?
      "code" : "<code>", // R!  transaction | batch | search-system | history-system
      "documentation" : "<markdown>", // Anything special about operation behavior
      "feature" : [{ Content as for CapabilityStatement2.rest.feature }] // Statement of support for a feature in this context
    }],
    "searchParam" : [{ Content as for CapabilityStatement2.rest.resource.searchParam }], // Search parameters for searching all resources
    "operation" : [{ Content as for CapabilityStatement2.rest.resource.operation }], // Definition of a system level operation
    "compartment" : [{ canonical(CompartmentDefinition) }] // Compartments served/used by system
  }]
}

Turtle Template

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:CapabilityStatement2;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  fhir:CapabilityStatement2.url [ uri ]; # 0..1 Canonical identifier for this capability statement2, represented as a URI (globally unique)
  fhir:CapabilityStatement2.version [ string ]; # 0..1 Business version of the capability statement2
  fhir:CapabilityStatement2.name [ string ]; # 0..1 Name for this capability statement2 (computer friendly)
  fhir:CapabilityStatement2.title [ string ]; # 0..1 Name for this capability statement2 (human friendly)
  fhir:CapabilityStatement2.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:CapabilityStatement2.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:CapabilityStatement2.date [ dateTime ]; # 1..1 Date last changed
  fhir:CapabilityStatement2.publisher [ string ]; # 0..1 Name of the publisher (organization or individual)
  fhir:CapabilityStatement2.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:CapabilityStatement2.description [ markdown ]; # 0..1 Natural language description of the capability statement2
  fhir:CapabilityStatement2.useContext [ UsageContext ], ... ; # 0..* The context that the content is intended to support
  fhir:CapabilityStatement2.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for capability statement2 (if applicable)
  fhir:CapabilityStatement2.purpose [ markdown ]; # 0..1 Why this capability statement2 is defined
  fhir:CapabilityStatement2.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:CapabilityStatement2.kind [ code ]; # 1..1 instance | capability | requirements
  fhir:CapabilityStatement2.instantiates [ canonical(CapabilityStatement2) ], ... ; # 0..* Canonical URL of another capability statement this implements
  fhir:CapabilityStatement2.imports [ canonical(CapabilityStatement2) ], ... ; # 0..* Canonical URL of another capability statement this adds to
  fhir:CapabilityStatement2.software [ # 0..1 Software that is covered by this capability statement
    fhir:CapabilityStatement2.software.name [ string ]; # 1..1 A name the software is known by
    fhir:CapabilityStatement2.software.version [ string ]; # 0..1 Version covered by this statement
    fhir:CapabilityStatement2.software.releaseDate [ dateTime ]; # 0..1 Date this version was released
  ];
  fhir:CapabilityStatement2.implementation [ # 0..1 If this describes a specific instance
    fhir:CapabilityStatement2.implementation.description [ string ]; # 1..1 Describes this specific instance
    fhir:CapabilityStatement2.implementation.url [ url ]; # 0..1 Base URL for the installation
    fhir:CapabilityStatement2.implementation.custodian [ Reference(Organization) ]; # 0..1 Organization that manages the data
  ];
  fhir:CapabilityStatement2.fhirVersion [ code ]; # 1..1 FHIR Version the system supports
  fhir:CapabilityStatement2.format [ code ], ... ; # 1..* formats supported (xml | json | ttl | mime type)
  fhir:CapabilityStatement2.patchFormat [ code ], ... ; # 0..* Patch formats supported
  fhir:CapabilityStatement2.implementationGuide [ canonical(ImplementationGuide) ], ... ; # 0..* Implementation guides supported
  fhir:CapabilityStatement2.rest [ # 0..* If the endpoint is a RESTful one
    fhir:CapabilityStatement2.rest.mode [ code ]; # 1..1 client | server
    fhir:CapabilityStatement2.rest.documentation [ markdown ]; # 0..1 General description of implementation
    fhir:CapabilityStatement2.rest.feature [ # 0..* Statement of support for a feature
      fhir:CapabilityStatement2.rest.feature.code [ code ]; # 1..1 Feature that is being reported
      fhir:CapabilityStatement2.rest.feature.value [ code ]; # 1..1 Value of the feature (true, false, or a code)
    ], ...;
    fhir:CapabilityStatement2.rest.resource [ # 0..* Resource served on the REST interface
      fhir:CapabilityStatement2.rest.resource.type [ code ]; # 1..1 A resource type that is supported
      fhir:CapabilityStatement2.rest.resource.profile [ canonical(StructureDefinition) ]; # 0..1 Base System profile for all uses of resource
      fhir:CapabilityStatement2.rest.resource.supportedProfile [ canonical(StructureDefinition) ], ... ; # 0..* Profiles for use cases supported
      fhir:CapabilityStatement2.rest.resource.documentation [ markdown ]; # 0..1 Additional information about the use of the resource type
      fhir:CapabilityStatement2.rest.resource.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
      fhir:CapabilityStatement2.rest.resource.interaction [ # 0..* What operations are supported?
        fhir:CapabilityStatement2.rest.resource.interaction.code [ code ]; # 1..1 read | vread | update | patch | delete | history-instance | history-type | create | search-type
        fhir:CapabilityStatement2.rest.resource.interaction.documentation [ markdown ]; # 0..1 Anything special about operation behavior
        fhir:CapabilityStatement2.rest.resource.interaction.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
      ], ...;
      fhir:CapabilityStatement2.rest.resource.searchParam [ # 0..* Search parameters supported by implementation
        fhir:CapabilityStatement2.rest.resource.searchParam.name [ string ]; # 1..1 Name of search parameter
        fhir:CapabilityStatement2.rest.resource.searchParam.definition [ canonical(SearchParameter) ]; # 0..1 Source of definition for parameter
        fhir:CapabilityStatement2.rest.resource.searchParam.type [ code ]; # 1..1 number | date | string | token | reference | composite | quantity | uri | special
        fhir:CapabilityStatement2.rest.resource.searchParam.documentation [ markdown ]; # 0..1 Server-specific usage
        fhir:CapabilityStatement2.rest.resource.searchParam.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
      ], ...;
      fhir:CapabilityStatement2.rest.resource.operation [ # 0..* Definition of a resource operation
        fhir:CapabilityStatement2.rest.resource.operation.name [ string ]; # 1..1 Name by which the operation/query is invoked
        fhir:CapabilityStatement2.rest.resource.operation.definition [ canonical(OperationDefinition) ]; # 1..1 The defined operation/query
        fhir:CapabilityStatement2.rest.resource.operation.documentation [ markdown ]; # 0..1 Specific details about operation behavior
        fhir:CapabilityStatement2.rest.resource.operation.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
      ], ...;
    ], ...;
    fhir:CapabilityStatement2.rest.interaction [ # 0..* What operations are supported?
      fhir:CapabilityStatement2.rest.interaction.code [ code ]; # 1..1 transaction | batch | search-system | history-system
      fhir:CapabilityStatement2.rest.interaction.documentation [ markdown ]; # 0..1 Anything special about operation behavior
      fhir:CapabilityStatement2.rest.interaction.feature [ See CapabilityStatement2.rest.feature ], ... ; # 0..* Statement of support for a feature in this context
    ], ...;
    fhir:CapabilityStatement2.rest.searchParam [ See CapabilityStatement2.rest.resource.searchParam ], ... ; # 0..* Search parameters for searching all resources
    fhir:CapabilityStatement2.rest.operation [ See CapabilityStatement2.rest.resource.operation ], ... ; # 0..* Definition of a system level operation
    fhir:CapabilityStatement2.rest.compartment [ canonical(CompartmentDefinition) ], ... ; # 0..* Compartments served/used by system
  ], ...;
]

Changes since Release 3

This resource did not exist in Release 2

This analysis is available as XML or JSON.

 

See the Profiles & Extensions and the alternate definitions: Master Definition XML + JSON, XML Schema/Schematron + JSON Schema, ShEx (for Turtle) , the spreadsheet version & the dependency analysis a

PathDefinitionTypeReference
CapabilityStatement2.status The lifecycle status of an artifact.RequiredPublicationStatus
CapabilityStatement2.jurisdiction Countries and regions within which this artifact is targeted for use.ExtensibleJurisdiction ValueSet
CapabilityStatement2.kind How a capability statement is intended to be used.RequiredCapabilityStatementKind
CapabilityStatement2.fhirVersion All published FHIR Versions.RequiredFHIRVersion
CapabilityStatement2.format
CapabilityStatement2.patchFormat
The mime type of an attachment. Any valid mime type is allowed.RequiredMime Types
CapabilityStatement2.rest.mode The mode of a RESTful capability statement.RequiredRestfulCapabilityMode
CapabilityStatement2.rest.feature.code A code that describes the feature being reported on.RequiredCapabilityFeature
CapabilityStatement2.rest.feature.value A value for the feature - maybe true, false, or one of the set of codes allowed in the definition of the feature code.RequiredCapabilityFeatureValue
CapabilityStatement2.rest.resource.type One of the resource types defined as part of this version of FHIR.RequiredResource Types
CapabilityStatement2.rest.resource.interaction.code Operations supported by REST at the type or instance level.RequiredTypeRestfulInteraction
CapabilityStatement2.rest.resource.searchParam.type Data types allowed to be used for search parameters.RequiredSearchParamType
CapabilityStatement2.rest.interaction.code Operations supported by REST at the system level.RequiredSystemRestfulInteraction

idLevelLocationDescriptionExpression
cnl-0Warning (base)Name should be usable as an identifier for the module by machine processing applications such as code generationname.matches('[A-Z]([A-Za-z0-9_]){0,254}')
cp2-1Rule (base)A Capability Statement SHALL have at least one of REST, messaging or document element.rest.exists()
cp2-2Rule (base)A Capability Statement SHALL have at least one of description, software, or implementation element.(description.count() + software.count() + implementation.count()) > 0
cp2-9Rule CapabilityStatement2.restA given resource can only be described once per RESTful mode.resource.select(type).isDistinct()
cp2-12Rule CapabilityStatement2.rest.resourceSearch parameter names must be unique in the context of a resource.searchParam.select(name).isDistinct()
cp2-14Rule (base)If kind = instance, implementation must be present and software may be present(kind != 'instance') or implementation.exists()
cp2-15Rule (base)If kind = capability, implementation must be absent, software must be present(kind != 'capability') or (implementation.exists().not() and software.exists())
cp2-16Rule (base)If kind = requirements, implementation and software must be absent(kind!='requirements') or (implementation.exists().not() and software.exists().not())

Note: this page only has discussion of the new features of CapabilityStatement2; when (/if) this approach is approved, documentation will be merged into the content of CapabilityStatement.

The backbone of the CapabilityStatement resource lays out which resources are supported by the system, and which API interactions, operations and search parameters are supported or required for which resources. However due to the richness of the FHIR specification, there are many features for how these general API capabilities are used in detail.

The existing capability statement could support all these features by continuing to add various boolean flags and coded elements, as has been done. There's a couple of problems with this approach:

  • The CapabilityStatement resource is too large, and getting larger. This applies to both the definition (general design) and also instances of the resources, which frequently run to many megabytes in side
  • Clients are often interested in a very specific subset of these features, but the existing design doesn't support subsetting or negotiation to find out whether specific features are supported

After considerable discussion, FHIR-I agreed to draft this alternative, where the features are defined using a terminological approach that allows for more flexibility around feature negotation. Note that this approach basically mandates feature negotation, because while the design of the resource itself is simplified, the actual instances of fully populated CapabilityStatement resources are very much larger. For this reason, the general intent is that by default, servers do not populate any features in their statements unless asked, though there is still utility in a fully populated feature statement.

Features may be declared in a capability statement using the Capability Features CodeSystem. Each Feature is a pair: a code that identifies of which features is being described, and a value for that feature.

Features are identified by an expression that includes the scope in which the feature is being asserted. Here's some examples:

  • rest:server.resource:*.updateCreate = true - the server supports updateCreate on the update interaction for all resources
  • rest:server.resource:CodeSystem.searchInclude = supplements - the server supports _include=CodeSystem.supplements
  • rest:server.security.cors = false - the server doesn't support CORS
  • rest:client.security.cors = true - the client requires a server that supports CORS
  • rest:operation:validate-code.Codesystem:'http://snomed.info/sct'.compositional = true - the server can validate post-coordinated SNOMED codes

The full details of the expression format are described below.

Each feature has a value. The type of value depends on the feature, and is defined for the feature. Feature value are one of:

  • a boolean value - true or false
  • A code defined in the Capability Features code system
  • A code defined in some other code system in the FHIR specification
  • Todo: how doe IGs work?

The capability statement can include features either on the base of the statement, or on the elements inside the resource. Features defined inside the capability statement automatically have an implied scope, but are otherwise the same statement. For example, the following statements have the same meaning:

  
 <CapabilityStatement2 xmlns="http://hl7.org/fhir">
   <rest>
     <feature>
       <code value="resource:CodeSystem.searchInclude"/>
       <value value="supplements"/>
     </feature>
   </rest>
 </CapabilityStatement2>
  
 <CapabilityStatement2 xmlns="http://hl7.org/fhir">
   <rest>
     <resource>
       <type value="CodeSystem"/>
       <feature>
         <code value="searchInclude"/>
         <value value="supplements"/>
       </feature>
     </resource>
   </rest>
 </CapabilityStatement2>

Note, however, that the feature scopes are not restricted to the contexts implied by the structure of the CapabilityStatement2 resource. Feature contexts are defined for features that are deeper into the system than those defined by the CapabilityStatement2 resource.

By default, when a client asks a server for it's capability statement using /metadata, which features to report on is at the discretion of the server. Typically, servers will not report any features by default.

Clients can request that a server by using the feature parameter, which represents a query for information about a particular feature:

GET [base]/metadata?feature=resource:CodeSystem

This is a request for all features that pertain to how the CodeSystem resource is implemented. A client can repeat the feature parameter any number of times.

Other examples of query mode usage:

  • searchInclude - return all the searchInclude statements for all contexts
  • rest.operation:validate-code.compositional - return, for all supported code systems, whether compositional grammar is supported. Note that a server would not be expected to return a feature for every code system, only where it has something to say (e.g. code systems that are compositional)

In addition to querying for a capability statement, clients can do negotation. There are 2 different approaches that are supported: an operation, and an HTTP header.

In this operation, and client sends one or more features with values, and asks whether the server supports the features.

GET [base]/$features?feature=rest:server.resource:CodeSystem.searchInclude;supplements

The server checks to see whether this is a feature that is supported. if it is, it returns a 200 OK. If it's not, it returns a 501 Not implemented.

Alternatively, a client can include a feature assertion on an HTTP header:

GET [base]/AdverseEvent/23/_history/45
Required-Feature: rest:server.resource:AdverseEvent.readHistory;true

The server checks the header, and return a 501 Not implemented if it does not support reading historical entries for AdverseEvent.

Clients can only expect a server to check these headers if the server declares that it does using the feature rest:server.feature-header = true.

The code system underlying the Capability Features defines 4 kinds of concepts:

  • feature: a feature that a system can report about (whether it is needed or provided)
  • value: a possible value for a feature. Each feature has a property that defines the root
  • context: a concept that specifies a scope in which the feature statement applies
  • internal: an internal grouping code that isn't used in expressions or values

Each feature expression has the syntax

(context[:value].)*feature 

where context is a code taken from the list below. Contexts SHALL be in the correct order, as defined in the subcontext property.

Search parameters for this resource. The common parameters also apply. See Searching for more information about searching in REST, messaging, and services.

NameTypeDescriptionExpressionIn Common
contexttokenA use context assigned to the capability statement2(CapabilityStatement2.useContext.value as CodeableConcept)
context-quantityquantityA quantity- or range-valued use context assigned to the capability statement2(CapabilityStatement2.useContext.value as Quantity) | (CapabilityStatement2.useContext.value as Range)
context-typetokenA type of use context assigned to the capability statement2CapabilityStatement2.useContext.code
context-type-quantitycompositeA use context type and quantity- or range-based value assigned to the capability statement2On CapabilityStatement2.useContext:
  context-type: code
  context-quantity: value.as(Quantity) | value.as(Range)
context-type-valuecompositeA use context type and value assigned to the capability statement2On CapabilityStatement2.useContext:
  context-type: code
  context: value.as(CodeableConcept)
date NdateThe capability statement2 publication dateCapabilityStatement2.date
description NstringThe description of the capability statement2CapabilityStatement2.description
fhirversion NtokenThe version of FHIRCapabilityStatement2.version
format Ntokenformats supported (xml | json | ttl | mime type)CapabilityStatement2.format
guide NreferenceImplementation guides supportedCapabilityStatement2.implementationGuide
(ImplementationGuide)
jurisdictiontokenIntended jurisdiction for the capability statement2CapabilityStatement2.jurisdiction
mode NtokenMode - restful (server/client) or messaging (sender/receiver)CapabilityStatement2.rest.mode
name NstringComputationally friendly name of the capability statement2CapabilityStatement2.name
publisher NstringName of the publisher of the capability statement2CapabilityStatement2.publisher
resource NtokenName of a resource mentioned in a capability statementCapabilityStatement2.rest.resource.type
resource-profile NreferenceA profile id invoked in a capability statementCapabilityStatement2.rest.resource.profile
(StructureDefinition)
software NstringPart of the name of a software applicationCapabilityStatement2.software.name
status NtokenThe current status of the capability statement2CapabilityStatement2.status
supported-profile NreferenceProfiles for use cases supportedCapabilityStatement2.rest.resource.supportedProfile
(StructureDefinition)
title NstringThe human-friendly name of the capability statement2CapabilityStatement2.title
url NuriThe uri that identifies the capability statement2CapabilityStatement2.url
version NtokenThe business version of the capability statement2CapabilityStatement2.version