This page is part of the FHIR Specification (v4.6.0: R5 Draft Ballot - see ballot notes). The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions
FHIR Infrastructure Work Group | Maturity Level: 0 | Trial Use | Security 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
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
CapabilityStatement2 | TU | CanonicalResource | A 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..1 | uri | Canonical identifier for this capability statement2, represented as a URI (globally unique) |
version | Σ | 0..1 | string | Business version of the capability statement2 |
name | ΣI | 0..1 | string | Name for this capability statement2 (computer friendly) |
title | Σ | 0..1 | string | Name for this capability statement2 (human friendly) |
status | ?!Σ | 1..1 | code | draft | active | retired | unknown PublicationStatus (Required) |
experimental | Σ | 0..1 | boolean | For testing purposes, not real usage |
date | Σ | 1..1 | dateTime | Date last changed |
publisher | Σ | 0..1 | string | Name of the publisher (organization or individual) |
contact | Σ | 0..* | ContactDetail | Contact details for the publisher |
description | I | 0..1 | markdown | Natural language description of the capability statement2 |
useContext | Σ | 0..* | UsageContext | The context that the content is intended to support |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for capability statement2 (if applicable) Jurisdiction (Extensible) |
purpose | 0..1 | markdown | Why this capability statement2 is defined | |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
kind | ΣI | 1..1 | code | instance | capability | requirements CapabilityStatementKind (Required) |
instantiates | Σ | 0..* | canonical(CapabilityStatement2) | Canonical URL of another capability statement this implements |
imports | ΣTU | 0..* | canonical(CapabilityStatement2) | Canonical URL of another capability statement this adds to |
software | ΣI | 0..1 | BackboneElement | Software that is covered by this capability statement |
name | Σ | 1..1 | string | A name the software is known by |
version | Σ | 0..1 | string | Version covered by this statement |
releaseDate | Σ | 0..1 | dateTime | Date this version was released |
implementation | ΣI | 0..1 | BackboneElement | If this describes a specific instance |
description | Σ | 1..1 | string | Describes this specific instance |
url | Σ | 0..1 | url | Base URL for the installation |
custodian | ΣTU | 0..1 | Reference(Organization) | Organization that manages the data |
fhirVersion | Σ | 1..1 | code | FHIR Version the system supports FHIRVersion (Required) |
format | Σ | 1..* | code | formats supported (xml | json | ttl | mime type) MimeType (Required) |
patchFormat | Σ | 0..* | code | Patch formats supported MimeType (Required) |
implementationGuide | Σ | 0..* | canonical(ImplementationGuide) | Implementation guides supported |
rest | ΣI | 0..* | BackboneElement | If the endpoint is a RESTful one + Rule: A given resource can only be described once per RESTful mode. |
mode | Σ | 1..1 | code | client | server RestfulCapabilityMode (Required) |
documentation | 0..1 | markdown | General description of implementation | |
feature | 0..* | BackboneElement | Statement of support for a feature | |
code | 1..1 | code | Feature that is being reported Capability Features (Required) | |
value | 1..1 | code | Value of the feature (true, false, or a code) Capability Feature Values (Required) | |
resource | ΣI | 0..* | BackboneElement | Resource served on the REST interface + Rule: Search parameter names must be unique in the context of a resource. |
type | Σ | 1..1 | code | A resource type that is supported ResourceType (Required) |
profile | Σ | 0..1 | canonical(StructureDefinition) | Base System profile for all uses of resource |
supportedProfile | ΣTU | 0..* | canonical(StructureDefinition) | Profiles for use cases supported |
documentation | 0..1 | markdown | Additional information about the use of the resource type | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
interaction | 0..* | BackboneElement | What operations are supported? | |
code | 1..1 | code | read | vread | update | patch | delete | history-instance | history-type | create | search-type TypeRestfulInteraction (Required) | |
documentation | 0..1 | markdown | Anything special about operation behavior | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
searchParam | 0..* | BackboneElement | Search parameters supported by implementation | |
name | 1..1 | string | Name of search parameter | |
definition | 0..1 | canonical(SearchParameter) | Source of definition for parameter | |
type | 1..1 | code | number | date | string | token | reference | composite | quantity | uri | special SearchParamType (Required) | |
documentation | 0..1 | markdown | Server-specific usage | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
operation | Σ | 0..* | BackboneElement | Definition of a resource operation |
name | Σ | 1..1 | string | Name by which the operation/query is invoked |
definition | Σ | 1..1 | canonical(OperationDefinition) | The defined operation/query |
documentation | 0..1 | markdown | Specific details about operation behavior | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
interaction | 0..* | BackboneElement | What operations are supported? | |
code | 1..1 | code | transaction | batch | search-system | history-system SystemRestfulInteraction (Required) | |
documentation | 0..1 | markdown | Anything special about operation behavior | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
searchParam | 0..* | see searchParam | Search parameters for searching all resources | |
operation | Σ | 0..* | see operation | Definition of a system level operation |
compartment | 0..* | canonical(CompartmentDefinition) | Compartments served/used by system | |
Documentation for this format |
UML Diagram (Legend)
XML Template
<CapabilityStatement2 xmlns="http://hl7.org/fhir"> <!-- 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
{ "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/> . [ 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 ], ...; ]
Structure
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
CapabilityStatement2 | TU | CanonicalResource | A 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..1 | uri | Canonical identifier for this capability statement2, represented as a URI (globally unique) |
version | Σ | 0..1 | string | Business version of the capability statement2 |
name | ΣI | 0..1 | string | Name for this capability statement2 (computer friendly) |
title | Σ | 0..1 | string | Name for this capability statement2 (human friendly) |
status | ?!Σ | 1..1 | code | draft | active | retired | unknown PublicationStatus (Required) |
experimental | Σ | 0..1 | boolean | For testing purposes, not real usage |
date | Σ | 1..1 | dateTime | Date last changed |
publisher | Σ | 0..1 | string | Name of the publisher (organization or individual) |
contact | Σ | 0..* | ContactDetail | Contact details for the publisher |
description | I | 0..1 | markdown | Natural language description of the capability statement2 |
useContext | Σ | 0..* | UsageContext | The context that the content is intended to support |
jurisdiction | Σ | 0..* | CodeableConcept | Intended jurisdiction for capability statement2 (if applicable) Jurisdiction (Extensible) |
purpose | 0..1 | markdown | Why this capability statement2 is defined | |
copyright | 0..1 | markdown | Use and/or publishing restrictions | |
kind | ΣI | 1..1 | code | instance | capability | requirements CapabilityStatementKind (Required) |
instantiates | Σ | 0..* | canonical(CapabilityStatement2) | Canonical URL of another capability statement this implements |
imports | ΣTU | 0..* | canonical(CapabilityStatement2) | Canonical URL of another capability statement this adds to |
software | ΣI | 0..1 | BackboneElement | Software that is covered by this capability statement |
name | Σ | 1..1 | string | A name the software is known by |
version | Σ | 0..1 | string | Version covered by this statement |
releaseDate | Σ | 0..1 | dateTime | Date this version was released |
implementation | ΣI | 0..1 | BackboneElement | If this describes a specific instance |
description | Σ | 1..1 | string | Describes this specific instance |
url | Σ | 0..1 | url | Base URL for the installation |
custodian | ΣTU | 0..1 | Reference(Organization) | Organization that manages the data |
fhirVersion | Σ | 1..1 | code | FHIR Version the system supports FHIRVersion (Required) |
format | Σ | 1..* | code | formats supported (xml | json | ttl | mime type) MimeType (Required) |
patchFormat | Σ | 0..* | code | Patch formats supported MimeType (Required) |
implementationGuide | Σ | 0..* | canonical(ImplementationGuide) | Implementation guides supported |
rest | ΣI | 0..* | BackboneElement | If the endpoint is a RESTful one + Rule: A given resource can only be described once per RESTful mode. |
mode | Σ | 1..1 | code | client | server RestfulCapabilityMode (Required) |
documentation | 0..1 | markdown | General description of implementation | |
feature | 0..* | BackboneElement | Statement of support for a feature | |
code | 1..1 | code | Feature that is being reported Capability Features (Required) | |
value | 1..1 | code | Value of the feature (true, false, or a code) Capability Feature Values (Required) | |
resource | ΣI | 0..* | BackboneElement | Resource served on the REST interface + Rule: Search parameter names must be unique in the context of a resource. |
type | Σ | 1..1 | code | A resource type that is supported ResourceType (Required) |
profile | Σ | 0..1 | canonical(StructureDefinition) | Base System profile for all uses of resource |
supportedProfile | ΣTU | 0..* | canonical(StructureDefinition) | Profiles for use cases supported |
documentation | 0..1 | markdown | Additional information about the use of the resource type | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
interaction | 0..* | BackboneElement | What operations are supported? | |
code | 1..1 | code | read | vread | update | patch | delete | history-instance | history-type | create | search-type TypeRestfulInteraction (Required) | |
documentation | 0..1 | markdown | Anything special about operation behavior | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
searchParam | 0..* | BackboneElement | Search parameters supported by implementation | |
name | 1..1 | string | Name of search parameter | |
definition | 0..1 | canonical(SearchParameter) | Source of definition for parameter | |
type | 1..1 | code | number | date | string | token | reference | composite | quantity | uri | special SearchParamType (Required) | |
documentation | 0..1 | markdown | Server-specific usage | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
operation | Σ | 0..* | BackboneElement | Definition of a resource operation |
name | Σ | 1..1 | string | Name by which the operation/query is invoked |
definition | Σ | 1..1 | canonical(OperationDefinition) | The defined operation/query |
documentation | 0..1 | markdown | Specific details about operation behavior | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
interaction | 0..* | BackboneElement | What operations are supported? | |
code | 1..1 | code | transaction | batch | search-system | history-system SystemRestfulInteraction (Required) | |
documentation | 0..1 | markdown | Anything special about operation behavior | |
feature | 0..* | see feature | Statement of support for a feature in this context | |
searchParam | 0..* | see searchParam | Search parameters for searching all resources | |
operation | Σ | 0..* | see operation | Definition of a system level operation |
compartment | 0..* | canonical(CompartmentDefinition) | Compartments served/used by system | |
Documentation for this format |
XML Template
<CapabilityStatement2 xmlns="http://hl7.org/fhir"> <!-- 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
{ "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/> . [ 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 ], ...; ]
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
Path | Definition | Type | Reference |
---|---|---|---|
CapabilityStatement2.status | Required | PublicationStatus | |
CapabilityStatement2.jurisdiction | Extensible | Jurisdiction ValueSet | |
CapabilityStatement2.kind | Required | CapabilityStatementKind | |
CapabilityStatement2.fhirVersion | Required | FHIRVersion | |
CapabilityStatement2.format | The mime type of an attachment. Any valid mime type is allowed. | Required | Mime Types |
CapabilityStatement2.patchFormat | The mime type of an attachment. Any valid mime type is allowed. | Required | Mime Types |
CapabilityStatement2.rest.mode | Required | RestfulCapabilityMode | |
CapabilityStatement2.rest.feature.code | Required | CapabilityFeature | |
CapabilityStatement2.rest.feature.value | Required | CapabilityFeatureValue | |
CapabilityStatement2.rest.resource.type | Required | ResourceType | |
CapabilityStatement2.rest.resource.interaction.code | Required | TypeRestfulInteraction | |
CapabilityStatement2.rest.resource.searchParam.type | Required | SearchParamType | |
CapabilityStatement2.rest.interaction.code | Required | SystemRestfulInteraction |
id | Level | Location | Description | Expression |
cnl-0 | Warning | (base) | Name should be usable as an identifier for the module by machine processing applications such as code generation | name.matches('[A-Z]([A-Za-z0-9_]){0,254}') |
cp2-1 | Rule | (base) | A Capability Statement SHALL have at least one of REST, messaging or document element. | rest.exists() |
cp2-2 | Rule | (base) | A Capability Statement SHALL have at least one of description, software, or implementation element. | (description.count() + software.count() + implementation.count()) > 0 |
cp2-9 | Rule | CapabilityStatement2.rest | A given resource can only be described once per RESTful mode. | resource.select(type).isDistinct() |
cp2-12 | Rule | CapabilityStatement2.rest.resource | Search parameter names must be unique in the context of a resource. | searchParam.select(name).isDistinct() |
cp2-14 | Rule | (base) | If kind = instance, implementation must be present and software may be present | (kind != 'instance') or implementation.exists() |
cp2-15 | Rule | (base) | If kind = capability, implementation must be absent, software must be present | (kind != 'capability') or (implementation.exists().not() and software.exists()) |
cp2-16 | Rule | (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:
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:
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:
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:
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:
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.
Name | Type | Description | Expression | In Common |
context | token | A use context assigned to the capability statement2 | (CapabilityStatement2.useContext.value as CodeableConcept) | |
context-quantity | quantity | A quantity- or range-valued use context assigned to the capability statement2 | (CapabilityStatement2.useContext.value as Quantity) | (CapabilityStatement2.useContext.value as Range) | |
context-type | token | A type of use context assigned to the capability statement2 | CapabilityStatement2.useContext.code | |
context-type-quantity | composite | A use context type and quantity- or range-based value assigned to the capability statement2 | On CapabilityStatement2.useContext: context-type: code context-quantity: value.as(Quantity) | value.as(Range) | |
context-type-value | composite | A use context type and value assigned to the capability statement2 | On CapabilityStatement2.useContext: context-type: code context: value.as(CodeableConcept) | |
date N | date | The capability statement2 publication date | CapabilityStatement2.date | |
description N | string | The description of the capability statement2 | CapabilityStatement2.description | |
fhirversion N | token | The version of FHIR | CapabilityStatement2.version | |
format N | token | formats supported (xml | json | ttl | mime type) | CapabilityStatement2.format | |
guide N | reference | Implementation guides supported | CapabilityStatement2.implementationGuide (ImplementationGuide) | |
jurisdiction | token | Intended jurisdiction for the capability statement2 | CapabilityStatement2.jurisdiction | |
mode N | token | Mode - restful (server/client) or messaging (sender/receiver) | CapabilityStatement2.rest.mode | |
name N | string | Computationally friendly name of the capability statement2 | CapabilityStatement2.name | |
publisher N | string | Name of the publisher of the capability statement2 | CapabilityStatement2.publisher | |
resource N | token | Name of a resource mentioned in a capability statement | CapabilityStatement2.rest.resource.type | |
resource-profile N | reference | A profile id invoked in a capability statement | CapabilityStatement2.rest.resource.profile (StructureDefinition) | |
software N | string | Part of the name of a software application | CapabilityStatement2.software.name | |
status N | token | The current status of the capability statement2 | CapabilityStatement2.status | |
supported-profile N | reference | Profiles for use cases supported | CapabilityStatement2.rest.resource.supportedProfile (StructureDefinition) | |
title N | string | The human-friendly name of the capability statement2 | CapabilityStatement2.title | |
url N | uri | The uri that identifies the capability statement2 | CapabilityStatement2.url | |
version N | token | The business version of the capability statement2 | CapabilityStatement2.version |