safety.book_private_ambulance — Full Intent Specification
INTENT NAMESPACE: safety
INTENT NAME: book_private_ambulance
FULL ID: safety.book_private_ambulance
VERSION: v1.0.0
STATUS: live
TTBS WEIGHTS: time 0.55 · taste 0.05 · budget 0.15 · safety 0.25
LAST UPDATED: 2026-05-14
On-demand private ambulance dispatch in India. Distinct from safety.book_roadside_assistance because: (a) the cargo is a human in medical need — every second of ETA matters; (b) ambulance class (BLS / ALS / ICU / cardiac / neonatal / mortuary) maps to clinical capability; (c) crew is at minimum a trained EMT, often a paramedic; (d) MCI/NMC + state ambulance authority registration is regulatory baseline; (e) PCPNDT / drug-controlled-substance carrying compliance applies to ALS+; (f) the destination hospital must be empanelled or user-chosen; (g) 108 (government) is a parallel free path TOMO must surface — never hide. TOMO is a router, not a healthcare provider, never makes a clinical decision.
1. NATURAL LANGUAGE COVERAGE
Classifies IN
- "ambulance to my home, fast"
- "BLS ambulance pick up dad"
- "ICU ambulance, transfer to Apollo"
- "Ziqitza for accident victim"
- "cardiac ambulance Hyderabad"
- "ambulance Manipal Hospital"
- "Stanplus / HelpNow ambulance"
- "neonatal ambulance for premature baby transport"
- "ambulance for senior, oxygen needed"
- "108-like service but private, faster"
Classifies OUT — borderline NO
- "roadside breakdown" →
safety.book_roadside_assistance - "doctor home visit" → out of v1 (telemedicine adjacent)
- "drug delivery" →
logistics.book_cold_chain_deliveryfor biologic - "hearse / mortuary van for distant transport" → covered as ambulance class but UX-level distinct flow
- "ambulance for non-medical reason (transport)" → not this intent (illegal)
MULTI-INTENT TRIGGERS
- "ambulance + hospital admission prep" →
safety.book_private_ambulance+ (hospital admission flow, partner-specific) - "ambulance for accident + RSA for damaged vehicle" →
safety.book_private_ambulance+safety.book_roadside_assistance - "ambulance + cyber + emergency SOS subscription"
2. INPUT — TOMO → PROVIDER
{
"intent": "safety.book_private_ambulance",
"intent_version": "v1.0.0",
"request_id": "req_amb_4q9p_2026-05-14T23:00:00Z",
"user_session_id": "anon_user_token_or_uid",
"incident": {
"nature": "cardiac_chest_pain",
"natures_allowed":["accident_trauma", "cardiac_chest_pain", "stroke", "respiratory_distress", "obstetric", "neonatal", "non_critical_transfer", "mortuary"],
"severity_self_reported": "high",
"severities_allowed": ["low", "medium", "high", "critical"],
"patient_count": 1,
"patient_age_band": "elder_60_plus",
"patient_gender_optional": "male",
"oxygen_required": true,
"stretcher_required": true
},
"pickup": {
"lat": 17.4239,
"lng": 78.4738,
"geocoded_label": "Home, Jubilee Hills",
"contact_phone_e164": "+91XXXXXXXXXX"
},
"destination": {
"type": "user_chosen_hospital",
"types_allowed": ["nearest_hospital", "user_chosen_hospital", "user_chosen_address"],
"hospital_name": "Apollo Hospitals Jubilee Hills",
"hospital_address_id": "addr_apollo_v1"
},
"ambulance_class_preference": "als",
"ambulance_classes_allowed": ["bls", "als", "icu", "cardiac", "neonatal", "mortuary"],
"patient_known_conditions_optional": ["hypertension", "type_2_diabetes"],
"user_constants": {
"preferred_providers": ["Ziqitza HealthCare", "HelpNow", "Stanplus", "Falck India"],
"108_visible": true
}
}
Field rules
incident.severity_self_reported∈ ENUM.criticaltriggers PRIORITY routing.ambulance_class_preferenceSTRICT ENUM; partner returns nearest matching class.108_visible: true— UI MUST surface 108 (government, free) alongside private options. Never hide.- Patient consent is implicit by booking; for unconscious patient, kin acts in loco.
3. PROVIDER TOOLS
amb.dispatch
Returns nearest ambulance of requested class + ETA + crew.
amb.108_co_surface
Returns 108 service availability in user's city — NOT a dispatch (108 is dialed by user), just info.
amb.crew_profile
Returns EMT / paramedic certification level (Skill Council India + state EMT board).
amb.live_track
Live GPS of ambulance.
amb.handover_capture
Patient handover photo + crew sign at destination hospital.
amb.dispute
Post-event dispute for SLA breach or misconduct.
amb.cancel
Pre-dispatch only.
4. RESPONSE SHAPE
{
"intent": "safety.book_private_ambulance",
"request_id": "req_amb_4q9p_2026-05-14T23:00:00Z",
"108_strip": {
"available": true,
"phone": "108",
"free": true,
"median_eta_min_in_city": 18,
"always_visible": true
},
"options": [
{
"tier": "OK",
"provider": "Stanplus",
"ambulance_class": "bls",
"responder_eta_min": 14,
"price_inr": 1500,
"crew_level": "emt_basic",
"oxygen_available": true,
"stretcher_available": true,
"state_registration_valid": true,
"ttbs_score": 0.68,
"tier_reason": "fastest BLS — basic clinical capability"
},
{
"tier": "GOOD",
"provider": "HelpNow",
"ambulance_class": "als",
"responder_eta_min": 18,
"price_inr": 2800,
"crew_level": "paramedic_plus_emt",
"oxygen_available": true,
"stretcher_available": true,
"cardiac_monitor": true,
"ecg_12_lead": true,
"defibrillator": true,
"state_registration_valid": true,
"hospital_handoff_pre_alert": true,
"ttbs_score": 0.87,
"tier_reason": "balanced — ALS + paramedic + ECG + defib + pre-alert"
},
{
"tier": "GREAT",
"provider": "Ziqitza HealthCare",
"ambulance_class": "icu",
"responder_eta_min": 22,
"price_inr": 4500,
"crew_level": "paramedic_plus_critical_care_emt",
"oxygen_available": true,
"stretcher_available": true,
"cardiac_monitor": true,
"ecg_12_lead": true,
"defibrillator": true,
"ventilator_onboard": true,
"infusion_pump": true,
"state_registration_valid": true,
"hospital_handoff_pre_alert": true,
"doctor_onboard_for_high_severity": true,
"ttbs_score": 0.92,
"tier_reason": "ICU with ventilator + doctor onboard"
}
]
}
5. CONTROLLED VOCABULARIES
incident.nature
accident_trauma · cardiac_chest_pain · stroke · respiratory_distress · obstetric · neonatal · non_critical_transfer · mortuary
incident.severity
low · medium · high · critical
ambulance_class
bls (basic life support) · als (advanced life support) · icu · cardiac · neonatal · mortuary
crew_level
emt_basic · paramedic_plus_emt · paramedic_plus_critical_care_emt
destination.type
nearest_hospital · user_chosen_hospital · user_chosen_address
All STRICT ENUM.
6. TTBS DIMENSIONS
TIME (weight 0.55 — dominant)
responder_eta_min(smaller = better)- Class match speed (BLS faster than ICU usually)
- Pre-alert to hospital reduces door-to-treatment time
- TIME = max(0, 1 − eta_min / 30)
TASTE (weight 0.05)
- Crew communication band
- App tracking UX
- TASTE = comms × ux
BUDGET (weight 0.15)
price_inrvs best- Distance overage band
- BUDGET = 1 − (price − best) / best
SAFETY (weight 0.25)
- Ambulance class fits severity
- State ambulance registration valid
- Crew level fits severity (paramedic for high+)
- Oxygen, stretcher, defib, ventilator (per class)
- Hospital handoff pre-alert
- Doctor onboard for
critical - SAFETY = class_fit × registration × crew_fit × equipment × pre_alert × doctor_fit
HARD FILTERS
- State ambulance registration valid.
- Class fits severity (e.g.,
criticalmust be ALS+ or ICU). - Oxygen + stretcher present.
- Crew at minimum EMT-basic.
- 108 strip rendered.
7. COMPLETION CONTRACT
Success criteria
- Quote returned; 108 strip surfaced.
- Ambulance dispatched; ETA + crew + vehicle plate shared.
- Live track active.
- Pre-alert to hospital (where supported).
- Patient handed over at destination; crew signs handover sheet.
- CPC webhook fires.
CPC webhook
{
"event": "safety.book_private_ambulance.completed",
"intent_id": "safety.book_private_ambulance",
"request_id": "req_amb_4q9p_2026-05-14T23:00:00Z",
"order_id": "AMB9KP72",
"provider": "HelpNow",
"ambulance_class": "als",
"responder_eta_actual_min": 16,
"price_inr": 2800,
"tomo_commission_base_inr": 0,
"tomo_commission_inr": 0,
"pass_through_inr": 2800,
"destination_hospital": "Apollo Hospitals Jubilee Hills",
"handoff_at_iso": "2026-05-14T23:32:00+05:30",
"signature_hmac_sha256": "…"
}
Note: TOMO often takes ZERO commission on ambulance dispatches as a policy stance (public-good framing). Many partners contractually pay zero referral on emergencies. CPC fires for audit; tomo_commission_inr: 0 typical.
Failure cases
no_ambulance_in_range→ fall back to alt provider or 108 prompt.ambulance_no_show→ emergency replacement.wrong_class_dispatched→ escalation; partner SLA penalty.hospital_refused_admission→ re-route to alt hospital.
8. WIDGET
{
"widget": "AmbulanceWidget",
"header": {
"incident_strip": "Cardiac chest pain · severity HIGH · 1 patient",
"108_strip": "108 (government, free) · ~18 min median ETA · DIAL NOW if you prefer",
"destination_strip": "Apollo Hospitals Jubilee Hills · 4.2 km"
},
"regions": {
"region_1_intelligence": ["ALS class fits HIGH severity", "paramedic + ECG + defib", "pre-alert to hospital active"],
"region_2_summary": "Dispatching, ETA ~18 min",
"region_3_visual": "ambulance_photo_url (post-dispatch, partner-supplied)",
"region_4_now_pin": "Keep the patient calm and seated · share live location with kin",
"region_5_tomo_choices": [
{"tier": "OK", "label": "Stanplus BLS · ₹1,500 · 14 min", "reason": "fastest BLS"},
{"tier": "GOOD", "label": "HelpNow ALS · ₹2,800 · 18 min · paramedic + defib", "reason": "balanced"},
{"tier": "GREAT", "label": "Ziqitza ICU · ₹4,500 · 22 min · ventilator + doctor", "reason": "highest care"}
]
},
"footer_disclosures": [
"108 is free and public — dialing it does not affect this booking. If anything looks slow here, dial it as a parallel.",
"TOMO doesn't take commission on emergency dispatch — we route, partner bills, we keep zero.",
"If the patient becomes unconscious, switch the severity to CRITICAL — partner re-routes to ICU class."
]
}
9. CACHING POLICY
- Quote: 30s TTL (emergencies are time-sensitive).
- 108 availability per city: 30d cache, refresh weekly.
- Crew profile: at partner; pointer at TOMO.
- Handover photos: at partner; hash at TOMO.
- Past dispatches: 5 years at partner per medical-records audit; 1 year on-device.
10. ERROR CODES
| Code | Meaning | UI surface |
|---|---|---|
ERR_NO_AMB_IN_RANGE |
no class match in radius | Fall back to 108 prompt |
ERR_AMB_NO_SHOW |
dispatched but no arrival | Replacement |
ERR_WRONG_CLASS_DISPATCHED |
partner sent wrong class | Escalation + SLA penalty |
ERR_HOSPITAL_REFUSED |
dest hospital can't admit | Re-route |
ERR_STATE_REGISTRATION_INVALID |
partner license lapsed | Drop option |
ERR_CREW_LEVEL_INSUFFICIENT |
crew < severity need | Upgrade class |
ERR_OXYGEN_MISSING |
flag set, ambulance lacks | Drop option |
ERR_VENTILATOR_REQUIRED |
severity critical needs ventilator | Upgrade to ICU class |
ERR_108_DIAL_FALLBACK |
private path failed | UI surfaces 108 in red |
ERR_PARTNER_OFFLINE |
partner API down | Try next |
11. SANDBOX → PRODUCTION CHECKLIST
- Sandbox 108 strip rendered on every quote.
- Sandbox class fit check (BLS for low/med, ALS+ for high, ICU for critical).
- Sandbox state registration validation.
- Sandbox crew level check.
- Sandbox no-show replacement within 5 min.
- Sandbox hospital pre-alert flow.
- Production state ambulance authority registry synced quarterly.
- Production crew certification check at assignment time.
- Production rate limit: not applicable (emergencies).
- Production CPC HMAC-SHA256 5-min replay verified.
- Production zero-commission audit verified.
12. ANTI-FABRICATION RULES
- NO
paid_placementon providers — TTBS only. - NO synthetic crew or ambulance photos.
- NO "fastest in city" without partner ETA SLA.
- NO hiding 108 — always visible.
- NO recommending a paid private ambulance over 108 unless ETA differential is real and surfaced honestly.
- NO claim of clinical diagnosis — TOMO never makes a medical call.
- NO TOMO-issued state registration badge.
- NO holding patient medical record at TOMO.
- NO synthetic equipment availability — partner-attested only.
- NO marketing language ("smart ambulance").
13. REGULATORY FRAMING
- Clinical Establishments (Registration and Regulation) Act 2010 + state rules — ambulance registration.
- Indian Medical Council Act 1956 / NMC Act 2019 — paramedic + EMT scope.
- Drugs and Cosmetics Act 1940 — drugs onboard (ALS+).
- Motor Vehicles Act 1988 — siren, beacon, ambulance permit.
- Skill Sector Council — EMT/paramedic training certification.
- DPDPA 2023 — patient data + recordings = personal data; partner is processor.
- MCI / NMC ethics — patient consent for non-emergency transport.
- CrPC 134 — police may compel ambulance assistance for accident victim.
- TOMO is router only — does NOT operate ambulances, does NOT employ crew, does NOT prescribe or treat.