Capability Statement

The CapabilityStatement resource is a statement of the kinds of resources and operations provided and/or consumed by an application.

Overview

Using GET /metadata you can access FHIR capabilities interaction.

Response is a CapabilityStatement generated from meta resources created in an Aidbox instance. The list of this meta resource types used for the response generation:

  • Operation

  • SearchParameter

  • Entity

Aidbox CapabilityStatement updates automatically after meta resources change. No interaction needed to apply changes to CapabilityStatement.

Read more about conformance rules and the CapabilityStatement resource itself.

Base URL for FHIR compatible API is <server-domain>/fhir/.

The capabilities interaction returns a capability statement describing the server's current operational functionality. The interaction is performed by the HTTP GET command as shown:

GET [base]/metadata{?mode=[mode]}{&_format=[mime-type]}

You can get Capability Statement of your Aidbox with the command:

GET <server-domain>/fhir/metadata

Get metadata

GET <your-domain>/fhir/metadata

Path Parameters

NameTypeDescription

mode

string

full | normative | terminology

_format

string

json | yaml | edn | xml

patchFormat: [json-patch, merge-patch]
rest:
- mode: server
  interaction:
  - {code: batch}
  - {code: transaction}
  operation:
  - {name: patient_list, deinition: Operation/patient_list}
  ....
  resource:
  - interaction:
    - {code: read}
    - {code: vread}
    - {code: update}
    - {code: patch}
    - {code: delete}
    - {code: history-instance}
    - {code: history-type}
    - {code: create}
    - {code: search-type}
    readHistory: true
    updateCreate: true
    versioning: versioned-update
    searchRevInclude: [all]
    referencePolicy: local
    conditionalRead: full-support
    searchInclude: [all]
    type: Patient
    conditionalDelete: single
    conditionalUpdate: true
    conditionalCreate: true
    searchParam:
    - {name: address-city, definition: /SearchParameter/Patient.address-city, type: string}
    - {name: active, definition: /SearchParameter/Patient.active, type: token}
    - {name: given, definition: /SearchParameter/Patient.given, type: string}
    - {name: address-state, definition: /SearchParameter/Patient.address-state, type: string}
    - {name: general-practitioner, definition: /SearchParameter/Patient.general-practitioner,
      type: reference}
    - {name: gender, definition: /SearchParameter/Patient.gender, type: token}
    - {name: name, definition: /SearchParameter/Patient.name, type: string}
    - {name: family, definition: /SearchParameter/Patient.family, type: string}
    - {name: telecom, definition: /SearchParameter/Patient.telecom, type: token}
    - {name: animal-species, definition: /SearchParameter/Patient.animal-species,
      type: token}
    - {name: identifier, definition: /SearchParameter/Patient.identifier, type: token}
    - {name: link, definition: /SearchParameter/Patient.link, type: reference}
    - {name: address-use, definition: /SearchParameter/Patient.address-use, type: token}
    - {name: language, definition: /SearchParameter/Patient.language, type: token}
    - {name: phonetic, definition: /SearchParameter/Patient.phonetic, type: string}
    - {name: death-date, definition: /SearchParameter/Patient.death-date, type: date}
    - {name: animal-breed, definition: /SearchParameter/Patient.animal-breed, type: token}
    - {name: deceased, definition: /SearchParameter/Patient.deceased, type: token}
    - {name: address, definition: /SearchParameter/Patient.address, type: string}
    - {name: email, definition: /SearchParameter/Patient.email, type: token}
    - {name: organization, definition: /SearchParameter/Patient.organization, type: reference}
    - {name: birthdate, definition: /SearchParameter/Patient.birthdate, type: date}
    - {name: address-country, definition: /SearchParameter/Patient.address-country,
      type: string}
    - {name: phone, definition: /SearchParameter/Patient.phone, type: token}
    - {name: address-postalcode, definition: /SearchParameter/Patient.address-postalcode,
      type: string}

The information returned depends on the value of the mode parameter:

Value

Description

full (or mode not present)

A Capability Statement that specifies which resource types and interactions are supported

normative

As above, but only the normative portions of the Capability Statement

terminology

A TerminologyCapabilities resource that provides further information about terminologies are supported by the server

Servers MAY ignore the mode parameter and return a CapabilityStatement resource.

Configure CapabilityStatement

You can reconfigure specific parts of CapabilityStatement by creating AidboxConfig/box resource:

PUT /AidboxConfig/box

metadata:
  # override name and title of CapabilityStatement
  name: MyFHIRServer
  title: My FHIR server
  description: Description of my FHIR server
  # override CapabilityStatement.rest.service
  service:
  - coding:
    - {system: 'http://hl7.org/fhir/restful-security-service', code: SMART-on-FHIR}
    text: Very smart!!!
  # override CapabilityStatement.rest.security
  security:
    extension:
    - url: http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris
      extension:
      - {url: token, valueUri: 'https://myserver.com/connect/token'}
      - {url: authorize, valueUri: 'https://myserver.com/connect/token'}

If you want more control over CapabilityStatement, please contact us in the community chat!

Notes

rest[].resource[].profile

The profile property is set when zen profiling is enabled and the following conditions are met:

  • the corresponding resource is defined in zen profile

  • there is exactly one zen schema tagged with base-profile for the corresponding resource

Aidbox native metadata

To get metadata in the internal Aidbox format, use /$metadata?_format=yaml

Get Aidbox native metadata

GET <your-domain>/$metadata

Path Parameters

NameTypeDescription

_format

string

yaml | json | edn

Query Parameters

NameTypeDescription

path

string

Path to specific part of metadata (for example Entity.Patient)

Capability statements can become quite large; servers are encouraged to support the _summary and _elements parameters on the capabilities interaction, though this is not required. In addition, servers are encouraged to implement the $subset and $implements operations to make it easy for a client to check conformance.

Last updated