Skip to main content

Overview

The Facility API provides endpoints for managing healthcare facilities, their configurations, services, and relationships with providers and patients. Base URL: https://api.allcare.ai/v1/facilities Authentication: API Key or OAuth 2.0 required Required Scope: read:facilities (read), write:facilities (write)

Endpoints

List Facilities

Get a list of facilities.
GET /v1/facilities
Query Parameters:
ParameterTypeDescription
pageintegerPage number (default: 1)
limitintegerResults per page (max: 100)
statusstringFilter by contract status
statestringFilter by state
searchstringSearch by name or location
Example Request:
curl -X GET "https://api.allcare.ai/v1/facilities?status=active&state=CA" \
  -H "Authorization: Bearer YOUR_API_KEY"
Example Response:
{
  "success": true,
  "data": [
    {
      "id": "fac_12345",
      "name": "Sunrise Senior Living",
      "type": "ASSISTED_LIVING",
      "contractStatus": "ACTIVE",
      "address": {
        "street1": "123 Main Street",
        "street2": "",
        "city": "Los Angeles",
        "state": "CA",
        "zipCode": "90001"
      },
      "contact": {
        "phone": "+1-555-0100",
        "fax": "+1-555-0101",
        "email": "[email protected]"
      },
      "capacity": {
        "licensed": 50,
        "occupied": 42,
        "available": 8
      },
      "services": ["clinic", "pharmacy", "visiting_physician"],
      "activePatients": 38,
      "assignedProviders": 3,
      "createdAt": "2024-01-10T08:00:00Z",
      "updatedAt": "2025-01-12T15:30:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 92,
    "totalPages": 5
  }
}

Get Facility

Retrieve a specific facility by ID.
GET /v1/facilities/{id}
Example Response:
{
  "success": true,
  "data": {
    "id": "fac_12345",
    "name": "Sunrise Senior Living",
    "type": "ASSISTED_LIVING",
    "contractStatus": "ACTIVE",
    "license": {
      "number": "FL123456",
      "state": "CA",
      "expirationDate": "2026-12-31"
    },
    "address": {
      "street1": "123 Main Street",
      "city": "Los Angeles",
      "state": "CA",
      "zipCode": "90001",
      "coordinates": {
        "latitude": 34.0522,
        "longitude": -118.2437
      }
    },
    "contact": {
      "phone": "+1-555-0100",
      "fax": "+1-555-0101",
      "email": "[email protected]",
      "emergencyPhone": "+1-555-0199"
    },
    "administrator": {
      "name": "Jane Smith",
      "phone": "+1-555-0102",
      "email": "[email protected]"
    },
    "services": {
      "clinic": {
        "enabled": true,
        "configuration": {
          "visitTypes": ["initial", "followup", "urgent"],
          "schedulingEnabled": true
        }
      },
      "pharmacy": {
        "enabled": true,
        "configuration": {
          "pharmacyId": "pharm_98765",
          "deliverySchedule": "daily"
        }
      }
    },
    "capacity": {
      "licensed": 50,
      "occupied": 42,
      "available": 8
    },
    "operatingHours": {
      "monday": { "open": "08:00", "close": "17:00" },
      "tuesday": { "open": "08:00", "close": "17:00" },
      "wednesday": { "open": "08:00", "close": "17:00" },
      "thursday": { "open": "08:00", "close": "17:00" },
      "friday": { "open": "08:00", "close": "17:00" },
      "saturday": { "open": "09:00", "close": "13:00" },
      "sunday": "closed"
    },
    "activePatients": 38,
    "assignedProviders": [
      {
        "id": "doc_11111",
        "name": "Dr. John Doe",
        "specialty": "Internal Medicine"
      },
      {
        "id": "doc_22222",
        "name": "Dr. Sarah Johnson",
        "specialty": "Geriatrics"
      }
    ]
  }
}

Create Facility

Create a new facility.
POST /v1/facilities
Required Permissions: write:facilities Request Body:
{
  "name": "Golden Years Care Center",
  "type": "SKILLED_NURSING",
  "license": {
    "number": "FL789012",
    "state": "CA",
    "expirationDate": "2027-06-30"
  },
  "address": {
    "street1": "456 Oak Avenue",
    "city": "San Diego",
    "state": "CA",
    "zipCode": "92101"
  },
  "contact": {
    "phone": "+1-555-0200",
    "email": "[email protected]"
  },
  "administrator": {
    "name": "Robert Brown",
    "phone": "+1-555-0201",
    "email": "[email protected]"
  },
  "capacity": {
    "licensed": 75
  },
  "services": ["clinic", "pharmacy"]
}

Update Facility

Update an existing facility.
PATCH /v1/facilities/{id}
Required Permissions: write:facilities Request Body: (partial updates supported)
{
  "contact": {
    "phone": "+1-555-0300",
    "email": "[email protected]"
  },
  "capacity": {
    "licensed": 80
  }
}

Update Contract Status

PATCH /v1/facilities/{id}/contract
Request Body:
{
  "status": "ACTIVE",
  "effectiveDate": "2025-02-01",
  "notes": "Contract renewed for 12 months"
}
Contract Statuses:
  • NOT_CONTRACTED - No contract in place
  • PENDING - Contract being negotiated
  • ACTIVE - Active contract
  • CHURNED - Contract ended

Service Configuration

Configure Services

PUT /v1/facilities/{id}/services
Request Body:
{
  "clinic": {
    "enabled": true,
    "visitTypes": ["initial", "followup", "urgent", "annual_physical"],
    "schedulingEnabled": true,
    "allowSameDay": false
  },
  "pharmacy": {
    "enabled": true,
    "pharmacyId": "pharm_98765",
    "deliverySchedule": "daily",
    "emergencyAvailable": true
  },
  "concierge": {
    "enabled": true,
    "supportHours": "24/7"
  }
}

Get Service Configuration

GET /v1/facilities/{id}/services

Facility Relationships

Get Assigned Providers

GET /v1/facilities/{id}/providers
Response:
{
  "success": true,
  "data": [
    {
      "providerId": "doc_11111",
      "name": "Dr. John Doe",
      "specialty": "Internal Medicine",
      "npi": "1234567890",
      "assignedDate": "2024-06-01",
      "activeDays": ["monday", "wednesday", "friday"],
      "maxDailyPatients": 15,
      "activePatientCount": 12
    }
  ]
}

Assign Provider

POST /v1/facilities/{id}/providers
Request Body:
{
  "providerId": "doc_33333",
  "services": ["clinic", "prescribing"],
  "activeDays": ["tuesday", "thursday"],
  "maxDailyPatients": 12,
  "startDate": "2025-02-01"
}

Get Facility Patients

GET /v1/facilities/{id}/patients
Query Parameters:
ParameterTypeDescription
statusstringFilter by enrollment status
providerIdstringFilter by assigned provider
pageintegerPage number
limitintegerResults per page

Facility Statistics

Get Facility Metrics

GET /v1/facilities/{id}/metrics
Query Parameters:
ParameterTypeDescription
startDatedateStart date for metrics
endDatedateEnd date for metrics
Response:
{
  "success": true,
  "data": {
    "period": {
      "start": "2025-01-01",
      "end": "2025-01-31"
    },
    "patients": {
      "total": 42,
      "new": 3,
      "discharged": 1,
      "active": 38
    },
    "visits": {
      "scheduled": 156,
      "completed": 148,
      "cancelled": 8,
      "completionRate": 0.949
    },
    "prescriptions": {
      "written": 234,
      "filled": 228,
      "controlledSubstances": 45
    },
    "satisfaction": {
      "score": 8.7,
      "responses": 32
    }
  }
}

Bulk Operations

Bulk Update Facilities

POST /v1/facilities/bulk-update
Request Body:
{
  "facilityIds": ["fac_12345", "fac_67890"],
  "updates": {
    "services": {
      "concierge": {
        "enabled": true
      }
    }
  }
}

Error Responses

400 Bad Request

{
  "error": "VALIDATION_ERROR",
  "message": "Invalid facility type",
  "details": {
    "field": "type",
    "allowedValues": ["ASSISTED_LIVING", "SKILLED_NURSING", "INDEPENDENT_LIVING", "MEMORY_CARE"]
  }
}

404 Not Found

{
  "error": "RESOURCE_NOT_FOUND",
  "message": "Facility with ID 'fac_99999' not found"
}

409 Conflict

{
  "error": "DUPLICATE_RESOURCE",
  "message": "Facility with license number 'FL123456' already exists",
  "existingId": "fac_12345"
}

Facility Types

TypeDescription
ASSISTED_LIVINGAssisted living facility
SKILLED_NURSINGSkilled nursing facility (SNF)
INDEPENDENT_LIVINGIndependent living community
MEMORY_CAREMemory care unit
CONTINUING_CAREContinuing care retirement community (CCRC)
RESIDENTIAL_CAREResidential care facility

Best Practices

Rate Limits

  • Read operations: 100 requests/minute
  • Write operations: 50 requests/minute
  • Bulk operations: 10 requests/minute

Webhooks

Subscribe to facility events:
  • facility.created
  • facility.updated
  • facility.contract_status_changed
  • facility.provider_assigned
  • facility.provider_removed
  • facility.capacity_changed