FHIR Capability Statements
Use the live FHIR metadata endpoints and the published ddfs-r4.json and ddfs-r6.json files to review supported resources, interactions, operations, formats, and search parameters.
What is a Capability Statement?
A FHIR CapabilityStatement describes the functionality of a FHIR server, including:
- Supported resources, such as
PatientandObservation. - Supported interactions, such as
create,read,vread,update,delete, andsearch-type. - Supported operations, formats, and resource search parameters.
For the standard definitions, see CapabilityStatement (FHIR R4) and CapabilityStatement (FHIR R6).
Published Capability Statement Files
The following JSON files are the static capability statements for the documented release:
- ddfs-r4.json (FHIR 4.0.1)
- ddfs-r6.json (FHIR 6.0.0-ballot4)
Each file contains a server-mode rest element with a resource list that declares the supported interactions, operations, and search parameters for that FHIR version.
Static Files and Live Server Capabilities
Use the published JSON files as stable artifacts for the documented release. Use the live metadata endpoint to confirm the capabilities of a deployed server, because supported behavior can vary by release or environment.
- Get the FHIR R4 CapabilityStatement using the R4 metadata endpoint.
- Get the FHIR R6 CapabilityStatement using the R6 metadata endpoint.
GET /api/fhir/r4/metadataGET /api/fhir/r6-ballot4/metadata
Compare the live response with the published JSON file for the same FHIR version when validating a deployment or investigating an integration issue.
Metadata Endpoint Status Codes
A successful metadata request returns 200 OK and the version-specific FHIR CapabilityStatement in the response body.
For documented successful response codes across DDFS FHIR endpoints, see FHIR Successful Response Status Codes. Error responses can include a FHIR OperationOutcome; see Reference: OperationOutcome Errors.
Published Capabilities
The current published R4 and R6 files declare:
application/fhir+jsonandapplication/jsonformats.create,read,vread,update,delete, andsearch-typeinteractions for each listed resource.$hardDeleteand$purgeDeletedoperations for each listed resource.- The
$statusoperation for the R6Subscriptionresource. - Sixteen R4 resource types and eleven R6 resource types.
For each listed resource, the current files advertise _count, _total, _id, _lastUpdated, _profile, and _tag. The files do not advertise _page. Use only the controls listed for the target resource and version.
The current resource-specific search contract includes these notable details:
- R4 and R6
Encounteradvertise the DDFSdischarge-dispositiontoken parameter. - R4
Locationadvertisesidentifier,status, andpartof. R6Locationalso advertisesform. - R4
Provenanceuses the published DDFSactivitytoken definition. PractitionerRoleadvertises thepractitionerreference parameter. Its published SearchParameter definition supports the:identifiermodifier and the.identifierand.namechains; separate dotted metadata entries are not advertised.- R4
Groupdoes not advertisecharacteristic,characteristic-value,exclude, orvalue.
The $purgeDeleted operation accepts before and optional limit inputs in a FHIR Parameters POST body. It does not advertise those inputs as query parameters.
Consult the JSON file or live metadata response for the complete resource and search-parameter lists. Do not assume that an R4 capability is also available in R6, or that an R6 capability is available in R4.
Use a Capability Statement
Use a capability statement to:
- Confirm that a resource, interaction, operation, format, or search parameter is supported before calling it.
- Configure client tooling or review a release artifact offline.
- Compare documented capabilities with a live deployment.
The following JavaScript example loads the published R6 file and lists the declared interactions and operations:
fetch('CapabilityStatement/ddfs-r6.json')
.then(response => response.json())
.then(capabilityStatement => {
for (const resource of capabilityStatement.rest?.[0]?.resource ?? []) {
const interactions = (resource.interaction ?? []).map(item => item.code);
const operations = (resource.operation ?? []).map(item => item.name);
console.log(resource.type, interactions, operations);
}
});
R4 and R6 Differences
The supported resource sets differ by FHIR version. The published R6 capability statement includes DeviceAssociation, Subscription, and SubscriptionTopic, and supports the $status operation for Subscription where applicable. SubscriptionStatus is returned by status operations but is not listed as an ordinary CRUD resource. The published R4 capability statement includes resources that are not listed in the R6 file.
- See FHIR R4 resources.
- See FHIR R6 resources.
- See R4 and R6 interoperability.
Forward-Compatible Client Behavior
Use forward-compatible parsing and avoid hard-coding assumptions about optional fields. Check the capability statement for the target server and FHIR version before enabling optional client behavior.
For related guidance, see FHIR normative content and version compatibility and Data deletion and purge operations.
FHIR Contract Details
This section summarizes the static release artifacts. Use the surrounding guidance and the matching live /metadata response to validate a deployed service.
Release artifact summary
| FHIR surface | Definition | FHIR version | Status | Capability kind | Resources | Formats |
|---|---|---|---|---|---|---|
| R4 | ddfs-r4.json | 4.0.1 | active | instance | 16 | application/fhir+json, application/json |
| R6 ballot4 | ddfs-r6.json | 6.0.0-ballot4 | active | instance | 11 | application/fhir+json, application/json |
Advertised behavior
Search uses count each resource-and-parameter declaration. A dash means the CapabilityStatement advertises no value for that field.
| FHIR surface | Interactions | Operations | Search uses | Includes | Reverse includes |
|---|---|---|---|---|---|
| R4 | create, delete, read, search-type, update, vread | $hardDelete, $purgeDeleted | 174 | PractitionerRole:endpoint, PractitionerRole:practitioner | Provenance:target |
| R6 ballot4 | create, delete, read, search-type, update, vread | $hardDelete, $purgeDeleted, $status | 120 | — | Provenance:target |
Artifact publication details
| FHIR surface | FHIR ID | Definition name | Title | Experimental | Published | Publisher |
|---|---|---|---|---|---|---|
| R4 | ddfs-r4 |
DDFSFhirR4CapabilityStatement | DDFS FHIR R4 Server Capability Statement | No | 2026-06-01T00:00:00Z | Oracle |
| R6 ballot4 | ddfs-r6 |
DDFSFhirR6CapabilityStatement | DDFS FHIR R6 Ballot 4 Server Capability Statement | No | 2026-08-06T00:00:00Z | Oracle |
Deployment declarations
| FHIR surface | Software | Capability description | Service description | REST role |
|---|---|---|---|---|
| R4 | DDFS FHIR Server | DDFS FHIR R4 API | server | |
| R6 ballot4 | DDFS FHIR Server | Capabilities of the DDFS server implementing HL7 FHIR 6.0.0-ballot4 at the /api/fhir/r6-ballot4 base path. | DDFS FHIR R6 Ballot 4 (6.0.0-ballot4) API at /api/fhir/r6-ballot4 | server |
The static artifacts do not declare an implementation.url. Obtain the service base URL from the DDFS instance and confirm the deployed contract through its metadata endpoint.
Authentication and authorization declarations
These declarations are published in each CapabilityStatement. See the authentication reference for configuration examples.
| FHIR surface | Security declaration |
|---|---|
| R4 | FHIR endpoints require Bearer JWT authentication unless explicitly anonymous. DDFS evaluates canonical FHIR resource scopes in the access token, such as system/Patient.rs, and supports wildcard grants such as system/*.rs. In OCI Identity Domains, define resource-server scopes in the canonical system/... form; clients request the corresponding DDFS-prefixed form, such as ddfssystem/Patient.rs. Identity Domains emits the unprefixed canonical scope in the access token. Hard-delete operations require both matching system/{Resource}.d delete authority and the exact custom scope https://docs.oracle.com/iaas/device-data-fhir/scopes/hard-delete. This server does not advertise authorization, token, launch context, or well-known discovery endpoints in this CapabilityStatement. |
| R6 ballot4 | FHIR endpoints require Bearer JWT authentication unless explicitly anonymous. DDFS evaluates canonical FHIR resource scopes in the access token, such as system/Patient.rs, and supports wildcard grants such as system/*.rs. In OCI Identity Domains, define resource-server scopes in the canonical system/... form; clients request the corresponding DDFS-prefixed form, such as ddfssystem/Patient.rs. Identity Domains emits the unprefixed canonical scope in the access token. Hard-delete operations require both matching system/{Resource}.d delete authority and the exact custom scope https://docs.oracle.com/iaas/device-data-fhir/scopes/hard-delete. This server does not advertise authorization, token, launch context, or well-known discovery endpoints in this CapabilityStatement. |
R6 ballot version
The R6 contract is version-locked to 6.0.0-ballot4. Treat it as ballot content and recheck the exact version and capability statement when upgrading a client or service.