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

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

Name
Type
Description

mode

string

full | normative | terminology

_format

string

json | yaml | edn

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'}

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

Name
Type
Description

_format

string

yaml | json | edn

Query Parameters

Name
Type
Description

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

Was this helpful?