Skip to content

Coordinator Services Framework — Transport (First Service Type)

Status: Deferred (design complete, spec when ready to implement) Date: 2026-04-15 Session: 41 Dependencies: Gap #4 (Travel Readiness Assessment), ADR-0018 Phase 5 (Coordination Lifecycle)


Overview

Ambulance and ground transport services across the full patient journey — from origin country to destination, between facilities, emergency dispatch, and repatriation. Built as the first service type within a generic Coordinator Services Framework that will later support translators, companions, and ground staff.

Commercial Model

  • Hybrid: Scheduled transfers are coordinator-assigned from pre-negotiated vendor contracts. Emergency dispatch is fully coordinator-managed.
  • Patient visibility: Patient sees assigned vendor details (name, vehicle type, driver info) but does not choose. Coordinator selects based on contracts and patient transport tier.
  • No tenant access: Ambulance providers are vendor relationships, not platform tenants. The coordinator_vendors table can migrate to full provider status (provider_type: 'transport') if the model evolves to marketplace.
  • Pricing: Not yet decided whether standalone add-on, bundled, or tiered. Transport cost feeds into the comprehensive cost estimate (Gap #9).

Transport Types

Type Vehicle Escort Use Case
Standard transfer Car / van No Airport ↔ hotel, hotel ↔ hospital
Assisted transfer Accessible vehicle Optional Wheelchair, mild impairment
Medical transfer Medical ambulance Paramedic Oxygen dependency, post-op inter-facility
ICU transport ICU ambulance Medical team Critical care between facilities
Air ambulance / repatriation Fixed-wing air ambulance Medical team Flying patient home after complication

Coverage

Transport is coordinated in both origin and destination countries:

  • Origin country: Home → airport. Required for T2+ patients (see Transport Tiers). Coordinator arranges local vendor.
  • Destination country: Airport → hotel → hospital → recovery → airport. All legs coordinator-managed.
  • Repatriation: Destination → origin country. Air ambulance vendor from registry.

For T1 (standard) patients in origin country, Curaway provides guidance only. For T2+ Curaway coordinates end-to-end.

Data Model

coordinator_vendors

coordinator_vendors
  id: UUID PK
  tenant_id: UUID FK → tenants  -- owning coordinator tenant, NOT the vendor's own tenant (vendors have no platform accounts)
  vendor_name: VARCHAR(200)
  service_type: ENUM('transport', 'translator', 'companion', 'ground_staff')
  country_code: VARCHAR(3)
  city: VARCHAR(100)
  contact_name: VARCHAR(200)
  contact_phone: VARCHAR(50)
  contact_email: VARCHAR(200)
  contract_status: ENUM('active', 'inactive', 'pending')
  service_capabilities: JSONB
  coverage_area: JSONB
  sla_response_minutes: INT
  cost_model: JSONB
  rating_internal: FLOAT
  notes: TEXT
  created_at, updated_at, deleted_at

service_capabilities JSONB for transport:

{
  "vehicle_types": ["standard", "accessible", "medical", "icu", "air"],
  "medical_escort_available": true,
  "icu_capable": true,
  "air_ambulance": false,
  "languages": ["en", "tr"],
  "available_24_7": true
}

coverage_area JSONB:

{
  "cities": ["Istanbul", "Ankara"],
  "radius_km": 100,
  "airport_codes": ["IST", "SAW"]
}

cost_model JSONB:

{
  "standard_transfer_flat": {"amount": 50, "currency": "USD"},
  "medical_per_km": {"amount": 3.5, "currency": "USD"},
  "icu_per_hour": {"amount": 200, "currency": "USD"},
  "medical_escort_surcharge": {"amount": 100, "currency": "USD"}
}

coordinator_service_bookings

coordinator_service_bookings
  id: UUID PK
  case_id: UUID FK → cases
  vendor_id: UUID FK → coordinator_vendors
  service_type: ENUM('transport', 'translator', 'companion', 'ground_staff')
  booking_type: ENUM('scheduled', 'emergency')
  status: ENUM('requested', 'confirmed', 'driver_assigned', 'in_progress', 'completed', 'cancelled')
  journey_leg: ENUM('origin_to_airport', 'airport_to_hotel', 'airport_to_hospital', 'hotel_to_hospital', 'hospital_to_recovery', 'recovery_to_hospital', 'recovery_to_airport', 'repatriation')
  case_phase: VARCHAR(50)
  pickup_location: JSONB
  dropoff_location: JSONB
  scheduled_at: TIMESTAMPTZ
  actual_pickup_at: TIMESTAMPTZ
  actual_dropoff_at: TIMESTAMPTZ
  vehicle_type: VARCHAR(50)
  medical_escort_required: BOOL
  driver_details: JSONB
  cost_quoted: DECIMAL
  cost_actual: DECIMAL
  currency: VARCHAR(3)
  coordinator_id: UUID FK → tenant_members
  patient_notified: BOOL DEFAULT false
  notes: TEXT
  created_at, updated_at

Migration path to full provider

  1. Add provider_type = 'transport' to provider enum
  2. Migrate vendor records into providers table (compatible fields: city, country_code, contact info)
  3. Create tenant accounts for vendors needing platform access
  4. Swap FK from vendor_id to provider_id in bookings

Travel Fitness → Transport Tier Mapping

Gap #4 (Travel Readiness Assessment, Intake Layer 4) captures the raw fitness factors. These factors feed into the Patient Fitness Score (Gap #1 — PFS), which outputs a transport tier (T1-T4).

Input factors (collected in Intake Layer 4 — Gap #4):

Factor Source Impact
Mobility Intake questionnaire Vehicle type
Oxygen dependency Intake / medical records Medical escort requirement
Recent hospitalization Intake (within 30 days) ICU transport consideration
Comorbidity severity Risk assessor score Escort + vehicle tier
Mental fitness Intake questionnaire Companion requirement
Distance to airport Patient address Origin-country transport need

Transport tiers (computed as part of PFS — Gap #1):

Tier Criteria Vehicle Escort Origin Country
T1 — Standard Mobile, no dependencies Standard vehicle No Guidance only
T2 — Assisted Wheelchair or mild impairment Accessible vehicle Optional Coordinator arranges if requested
T3 — Medical Oxygen, recent hospitalization, high comorbidity Medical ambulance Paramedic Coordinator arranges
T4 — Critical Bedridden, ICU-level needs, repatriation scenarios ICU / air ambulance Medical team Coordinator arranges end-to-end

Case Lifecycle Integration

Transport touchpoints by phase

PRE-OP PHASE
  ├─ Origin: home → airport (T2+ only)
  ├─ Destination: airport → hotel
  └─ Destination: hotel → hospital (admission day)

ADMITTED / PROCEDURE
  └─ No transport

POST-OP PHASE
  ├─ Hospital → recovery facility (if recovery opted in)
  └─ Hospital → hotel (if no recovery facility)

RECOVERY PHASE
  ├─ Recovery → hospital (escalation / complication)
  └─ Recovery → follow-up appointments

FOLLOW-UP / DEPARTURE
  ├─ Recovery/hotel → airport
  └─ Origin: airport → home (T2+ only)

EMERGENCY (any phase)
  ├─ Current location → nearest hospital
  └─ Repatriation: destination → home country (T4)

Coordinator workflow

  1. Case enters coordinator_assigned → coordinator sees transport tier and suggested booking template
  2. Coordinator creates bookings per leg — selects vendor from registry filtered by destination city + required capabilities
  3. Patient sees bookings on timeline and transport panel
  4. As each leg completes, coordinator updates status → patient notified
  5. Emergency: coordinator creates emergency booking type → skips scheduling → requestedconfirmed

Booking state transitions

Scheduled:  requested → confirmed → driver_assigned → in_progress → completed
Emergency:  requested → confirmed → in_progress → completed
Either:     any state → cancelled

Emergency Escalation → Transport

Connects to recovery milestone escalation rules (ADR-0018).

Escalation Severity Current Response Transport Addition
Low (pain 5-6) Coordinator notified No transport
Medium (pain 7+, fever, missed milestone) Coordinator contacts recovery provider Coordinator assesses transport need, books if required
High (emergency keywords, vitals critical) Coordinator escalates immediately Coordinator dispatches emergency transport
Critical (life-threatening) Coordinator + surgical provider + home doctor Coordinator initiates repatriation workflow (T4)

Repatriation workflow (Phase A — manual)

  1. Coordinator determines repatriation needed (with surgical provider input)
  2. Coordinator contacts air ambulance vendor from registry
  3. Coordinator arranges receiving hospital in origin country
  4. Booking: journey_leg: repatriation, vehicle_type: air
  5. Patient/family notified
  6. Insurance coordination off-platform (for now)

Path to Phase B (semi-automated)

  • Escalation trigger auto-generates transport request with suggested vendor + vehicle type
  • Coordinator reviews and confirms with one click

Patient-Facing UI

Timeline Card

Each booking appears chronologically in the patient's case journey:

┌──────────────────────────────────────────────┐
│ Airport Pickup — Apr 20, 8:00 AM             │
│ ABC Medical Transport · Medical ambulance     │
│ Status: Driver assigned                       │
│ Istanbul Airport → Grand Hyatt Istanbul       │
│ Driver details shared 24h before pickup       │
└──────────────────────────────────────────────┘
  • Driver details (name, phone, vehicle plate) appear 24h before scheduled time
  • Emergency bookings get urgent visual treatment
  • Completed legs show actual times + checkmark

Transport Panel (dedicated section)

Persistent reference view — all legs grouped by phase:

TRANSPORT OVERVIEW                    Tier: T3 Medical
─────────────────────────────────────────────────
PRE-OP
  ✓ Home → Airport        Apr 18   Completed
  ✓ Airport → Hotel       Apr 18   Completed
  ◉ Hotel → Hospital      Apr 20   Driver assigned

POST-OP
  ○ Hospital → Recovery   TBD      Pending
  ○ Recovery → Airport    TBD      Pending

─────────────────────────────────────────────────
Emergency contact: Coordinator Ayse · +90 555 XXX
  • Status indicators: ✓ completed, ◉ active/next, ○ pending
  • Transport tier at top
  • TBD legs as placeholders — dates populate when coordinator books
  • Emergency coordinator contact always visible

Notifications

Event Channels
Booking confirmed Push + in-app
Driver assigned (24h before) Push + SMS with driver details
Driver en route Push
Emergency dispatch initiated Push + SMS + coordinator call

Gap Integration Map

Gap Connection Dependency
#4 — Travel Readiness Travel fitness → transport tier Hard — build together
#1 — PFS/HSS/FMS Travel fitness is PFS component Transport tier is PFS output
#2 — 5-Layer Intake Layer 4 captures mobility/oxygen/hospitalization Intake feeds tier calculation
#6 — Financial Readiness Transport cost varies by tier Patient Pricing Band must include transport
#9 — Cost Estimate Transport is a line item Feeds full breakdown
#10 — Pre-Travel Checklist Medical escort, ground logistics Checklist includes transport confirmations
#11 — Post-Op Manual Complication → hospital → how to get there Transport panel = "how to get there"
#12 — On-Ground Support Ambulance is first service type Direct — this IS #12's architecture

Implementation Phase

  • Depends on: ADR-0018 Phase 5 (Coordination Lifecycle) and Gap #4 (Travel Readiness)
  • Effort: 2-3 weeks (on top of Phase 5, not within it)
  • Build with Gap #4 — they are two sides of the same coin (assessment and action)
  • Flagsmith flag: coordinator_services_transport_v1

Edge Cases

Scenario Handling
No vendor available in origin city Coordinator provides guidance + local emergency numbers. Patient arranges own transport. Platform logs gap for vendor expansion.
Vendor cancels last-minute Coordinator reassigns from registry. Patient notified with updated details. If no alternative, coordinator arranges taxi + medical escort.
Patient refuses transport (T3+ recommended) Log refusal with timestamp. Coordinator documents risk acknowledgment. Does not block case progression.
Repatriation without insurance Coordinator flags cost to patient/family before dispatch. Off-platform payment arrangement. Booking proceeds on coordinator approval.
Multiple emergency dispatches same case Each is a separate booking. Pattern triggers coordinator review of recovery provider adequacy.
Driver no-show Coordinator contacts vendor, re-dispatches. If repeated, vendor rating decremented + contract review flagged.
Cross-border transport (e.g., border city) Journey leg covers it. Vendor must have cross-border capability in service_capabilities.
Patient condition deteriorates during transport Driver contacts coordinator. Coordinator may redirect to nearest hospital. New booking created for revised destination.
Transport tier changes mid-journey If patient deteriorates (e.g., T2→T3) after some bookings are made, coordinator cancels future T2 bookings and rebooks at the new tier. Completed legs are unaffected. Platform logs the tier change event.
Airport-to-hospital direct (skip hotel) T3/T4 patients or urgent cases may go directly from airport to hospital. Use airport_to_hospital journey leg. Coordinator skips hotel booking.