Skip to main content

Slot

Overview

Purpose

The Slot resource represents a specific time period within a Schedule that can be booked for an appointment. Slots define the granular availability for healthcare services, practitioners, or locations, indicating whether each time period is free, busy, or otherwise unavailable.

Use Cases

  • Find available appointment times for booking
  • Check slot availability for specific practitioners or locations
  • Support appointment scheduling workflows
  • Display real-time availability to patients

Relationships

  • Schedule - Slots belong to a parent Schedule resource
  • Appointment - Booked appointments reference specific slots
  • Practitioner - Slots may be associated with specific practitioners
  • Location - Slots define availability at specific locations
  • HealthcareService - Slots can be linked to specific services

Resource Schema

Key Fields

  • id - Unique identifier for the slot
  • schedule - Reference to the parent Schedule
  • status - Availability status (free, busy, busy-unavailable, busy-tentative, entered-in-error)
  • start - Start time of the slot
  • end - End time of the slot
  • overbooked - Indicates if the slot is overbooked
  • comment - Additional information about the slot

JSON Example

{
"resourceType": "Slot",
"id": "slot-456",
"schedule": {
"reference": "Schedule/schedule-123"
},
"status": "free",
"start": "2026-03-15T09:00:00Z",
"end": "2026-03-15T09:30:00Z",
"overbooked": false,
"comment": "30-minute appointment slot"
}

Operations

Read

Retrieve a specific slot by ID.

GET /Slot/{id}
Example Request
curl -X GET https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Slot/slot-456 \
-H "Accept: application/fhir+json"

Search for slots using various criteria.

GET /Slot?parameter=value
POST /Slot/_search

Search Parameters

Patient-based Search:

ParameterTypeRequiredDescriptionExample
schedulereferenceNoReference to parent Scheduleschedule=Schedule/schedule-123
startdateNoSlot start timestart=ge2026-03-15T09:00:00Z
statustokenNoSlot availability statusstatus=free
_countnumberNoNumber of results per page_count=20
_lastUpdateddateNoOnly return resources which were last updated as specified by the given range_lastUpdated=ge2026-01-01
_revincludespecialNoInclude Provenance resource(s) that reference the matched search results. Allowed: "Provenance:target"_revinclude=Provenance:target

ID-based Search:

ParameterTypeRequiredDescriptionExample
_idtokenYesSlot ID_id=slot-456
_countnumberNoNumber of results per page_count=20
_lastUpdateddateNoOnly return resources which were last updated as specified by the given range_lastUpdated=ge2026-01-01
_revincludespecialNoInclude Provenance resource(s) that reference the matched search results. Allowed: "Provenance:target"_revinclude=Provenance:target

Create

Create a new Slot resource.

POST /Slot

Update

Update an existing Slot resource by its ID.

PUT /Slot/{id}

Examples

Request Examples

Search by schedule
curl -X POST https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Slot/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "schedule=Schedule/schedule-123&status=free"
Search by date range
curl -X POST https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Slot/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "start=ge2026-03-15T09:00:00Z&start=le2026-03-15T17:00:00Z&status=free"
Search by status
curl -X POST https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Slot/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "status=free&_count=10"

Response Examples

Successful Search Response

Slot Search Bundle
{
"resourceType": "Bundle",
"type": "searchset",
"total": 2,
"entry": [
{
"resource": {
"resourceType": "Slot",
"id": "slot-456",
"schedule": {
"reference": "Schedule/schedule-123"
},
"status": "free",
"start": "2026-03-15T09:00:00Z",
"end": "2026-03-15T09:30:00Z",
"overbooked": false,
"comment": "30-minute appointment slot"
}
},
{
"resource": {
"resourceType": "Slot",
"id": "slot-457",
"schedule": {
"reference": "Schedule/schedule-123"
},
"status": "free",
"start": "2026-03-15T09:30:00Z",
"end": "2026-03-15T10:00:00Z",
"overbooked": false,
"comment": "30-minute appointment slot"
}
}
]
}

Individual Slot Response

Single Slot Resource
{
"resourceType": "Slot",
"id": "slot-789",
"schedule": {
"reference": "Schedule/schedule-456"
},
"status": "busy",
"start": "2026-03-15T14:00:00Z",
"end": "2026-03-15T14:30:00Z",
"overbooked": false,
"comment": "Booked appointment"
}

Empty Result Set

No Slots Found
{
"resourceType": "Bundle",
"type": "searchset",
"total": 0,
"entry": []
}

Create

Create Slot
curl -X POST https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Slot \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/fhir+json" \
-d '{
"resourceType": "Slot",
"schedule": {
"reference": "Schedule/schedule-123"
},
"status": "free",
"start": "2024-03-15T09:00:00Z",
"end": "2024-03-15T09:30:00Z"
}'

Update

Update Slot
curl -X PUT https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Slot/{id} \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/fhir+json" \
-d '{
"resourceType": "Slot",
"id": "{id}",
"schedule": {
"reference": "Schedule/schedule-123"
},
"status": "free",
"start": "2024-03-15T09:00:00Z",
"end": "2024-03-15T09:30:00Z"
}'

Integration Patterns

Common Workflows

1. Find and Book Available Appointment

# Step 1: Search for practitioner's schedule
GET /Schedule?actor=Practitioner/practitioner-123&active=true

# Step 2: Find available slots for the schedule
GET /Slot?schedule=Schedule/schedule-123&status=free&start=ge2026-03-15

# Step 3: Book an appointment using an available slot
POST /Appointment

2. Check Availability for Date Range

# Step 1: Search for location schedule
GET /Schedule?actor=Location/loc-456&date=ge2026-03-15

# Step 2: Get free slots within date range
GET /Slot?schedule=Schedule/schedule-789&status=free&start=ge2026-03-15T08:00:00Z&start=le2026-03-15T17:00:00Z

# Step 3: Display available times to user
  • Schedule - Parent container that organizes slots
  • Appointment - Booked appointments that reference slots
  • Practitioner - Healthcare providers whose availability is represented by slots
  • Location - Physical locations where slot appointments occur
  • HealthcareService - Services available during slot times

Error Handling

The Slot resource follows standard FHIR error handling patterns. For detailed error responses and troubleshooting guidance, see the Common Errors page.

Slot-Specific Error Scenarios

  • 404 Not Found: Slot ID doesn't exist or has been deleted
  • 400 Bad Request: Invalid search parameters or malformed date formats
  • Empty Results: No slots match the search criteria

Troubleshooting Tips

  • Empty Results: Verify the schedule reference exists and has slots defined
  • Invalid Date Format: Ensure dates follow ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ)
  • Performance Issues: Use date range filters to limit result sets

Supported Profiles