01¿Qué es Ellie Care?
Ellie Care es una plataforma de teleasistencia para adultos mayores. Una persona mayor usa un smartwatch en la muñeca; Ellie mide sus signos vitales y su actividad de forma continua, detecta situaciones de riesgo (una caída, el botón de auxilio, una frecuencia cardíaca anormal, inactividad prolongada) y hace llegar esa información a quien tiene que reaccionar: su familia, el personal de un geriátrico, o el sistema de la empresa que presta el servicio.
Ellie no fabrica el reloj ni se vende como un dispositivo médico. Es software que corre sobre un smartwatch de consumo, y opera como monitoreo y bienestar: las señales y alertas son un apoyo para decidir, nunca un diagnóstico.
Esta API es para el lado B2B: las empresas asociadas —proveedores de teleasistencia, prepagas, geriátricos, sistemas de salud— que integran los datos de Ellie en sus propios sistemas.
api.ellie.care), un solo contrato y un solo login. Integrás contra el contrato, que es estable. Hoy se prueba contra el sandbox (datos sintéticos); producción se habilita por zona a medida que cada empresa queda aprovisionada.02Los protagonistas
Seis actores. Entender quién es quién es la mitad del modelo mental — el resto de la API cae solo.
👵 Paciente
El adulto mayor monitoreado. Vive en su casa o en un geriátrico. Es quien usa el reloj. En FHIR es un Patient.
⌚ El reloj
Un smartwatch de consumo con la app de Ellie. Mide, detecta y avisa. Puede acompañarse de dispositivos extra (balanza, tensiómetro).
🏢 Tu empresa
La organización que presta el servicio y contrata a Ellie: el tenant. Todo está particionado por empresa (empresa_id). Vos, developer, integrás por acá.
🎧 Operadores
El equipo que atiende a los pacientes desde una consola web (la central de monitoreo). No programan: trabajan alertas y seguimiento.
👨👩👧 Red de apoyo
Familia y cuidadores. Reciben avisos por canales como WhatsApp. No usan la API, pero son el destino de muchas alertas.
👩💻 Developer
Integrás Ellie en el sistema de tu empresa: traés vitales, telechequeos y eventos. Autenticás como empresa, ves solo a tus pacientes.
03Cómo funciona
El ciclo de la teleasistencia en cuatro pasos; la API te engancha en el paso 4. Por debajo, una sola puerta (api.ellie.care) te autentica, te aísla por empresa y zona, y te entrega solo lo tuyo.
04El reloj: qué mide
El reloj hace tres cosas: mide vitales continuos mientras se usa, ejecuta chequeos a pedido, y detecta eventos de seguridad.
Vitales continuos — mientras el reloj está puesto
| Signo | Campo | Qué es y cómo lo mide | Madurez |
|---|---|---|---|
| Frecuencia cardíaca | heart_rate | Sensor óptico (luz verde) en la muñeca. Latidos por minuto, cada pocos segundos. Tiene endpoint agregado por minuto (mediana/máx/mín). | En vivo |
| Temperatura de piel | skin_temperature | Sensor infrarrojo contra la piel. Un valor por minuto, en °C. | En vivo |
| Pasos | steps | Conteo de pasos del tracker de actividad. | En vivo |
| Calorías | calories | Calorías gastadas estimadas. | En vivo |
| Oxígeno en sangre | spo2 | Pulsioximetría óptica. En el reloj es a pedido (~30 s quieto), no continuo — se trata como telechequeo. | A pedido |
| Variabilidad cardíaca (HRV / IBI) | ibi | Cuánto varía el tiempo entre latidos (ms). Indicador de estrés fisiológico, recuperación y estado autonómico. | En despliegue |
| Actividad electrodérmica (EDA) | eda | Micro-cambios en la conductancia de la piel por la sudoración; se asocia a estrés/activación emocional. | En despliegue |
| Actigrafía / movimiento | motion | Nivel de movimiento a lo largo del tiempo. Permite inferir reposo vs. actividad y patrones de sueño. | En despliegue |
| Ondas crudas | ppg, accel_raw | Señal del sensor óptico y del acelerómetro sin procesar. Volumen muy alto; para algoritmos propios. Opt-in. | Hoja de ruta |
Señales del dispositivo — técnicas, no clínicas
Llegan por el canal device.status y en GET /devices/{id}. Sirven para adherencia y operación.
| Señal | Qué indica | Madurez |
|---|---|---|
Puesto / no puesto (worn / not_worn) | Sensor de proximidad: si el reloj está en la muñeca. Clave para adherencia y para habilitar la detección de caídas. | En vivo |
Cargando · batería (charging, battery_level, low_battery) | Estado de energía (0–100 %, cargando, batería baja). La batería es señal técnica, no un vital clínico. | En vivo |
Conectividad (wifi, cellular, offline) | Cómo está conectado el reloj, y si se quedó sin conexión. | En vivo |
Ubicación (location) | Posición aproximada. Dato operativo, no clínico. | En vivo |
Telechequeos — mediciones guiadas, a pedido
Tu sistema (o un operador) pide una medición; el reloj guía al paciente, toma la muestra y devuelve un resultado con estado done/failed/deferred.
| Chequeo | Qué se le pide al paciente | Madurez |
|---|---|---|
FC puntual (hr_spot) | Quedarse quieto 15–30 s. | A pedido |
Variabilidad (hrv) | Respirar normal sin moverse 60–120 s. | A pedido |
Temp. puntual (skin_temp) | Cubrir el reloj ~20–30 s. | A pedido |
Oxígeno (spo2) | Brazo apoyado, quieto ~30 s. | A pedido |
Composición corporal (bia) | Confirmar peso/altura/edad/sexo y apoyar dos dedos en los botones laterales (bioimpedancia). Devuelve % grasa/músculo/agua. | A pedido |
ECG (ecg) | Apoyar un dedo en el botón y quedarse quieto 30 s. Ritmo de una derivación. Sujeto a aprobación regulatoria por país. | A pedido |
| Pruebas funcionales (marcha, equilibrio, sentarse-pararse, respiratorio) | Tests de movilidad guiados para medir fragilidad y riesgo de caída. Definidos en el contrato; el reloj aún no los ejecuta. | Hoja de ruta |
Seguridad de vida
🚨 Detección de caídas En vivo
El acelerómetro alimenta un modelo de IA en el propio reloj que infiere caídas. Se entrega como evento crítico (booleano), baja latencia; no se manda la señal cruda. Se desactiva si el reloj no está puesto.
🆘 Botón SOS En vivo
El paciente mantiene apretado el botón (o toca el SOS en pantalla). Cuenta regresiva con opción de cancelar antes de escalar el aviso a la familia / central.
GET /alerts. El chequeo emocional (ansiedad/depresión, GAD-7/PHQ-9) es una función de la plataforma que proviene de una evaluación por voz, no del reloj — se expone como FHIR QuestionnaireResponse.05Señal vs. alerta
La distinción que evita malentendidos: Ellie te manda señales crudas, no veredictos clínicos.
📈 Señal
Telemetría y estados: FC arriba de su baseline, temperatura, batería baja, reloj no puesto. Alimentan tus métricas. No son una emergencia por sí solas — vos (o tus reglas) decidís qué significan.
🚨 Alerta de vida
Un evento real que exige reacción: una caída o un botón SOS. Pocos, priorizados y críticos. Se entregan aparte (GET /alerts).
Por eso el contrato separa eventos clínicos (clinical.event), estado del dispositivo (device.status) y alertas (vida). Ellie evita pre-juzgar: te da la señal para que tu sistema aplique su propia lógica clínica.
06Qué podés hacer con la API
Todo scopeado a tu empresa (sale del token) y tus pacientes. En lenguaje de negocio:
| Podés… | Cómo | Para qué sirve |
|---|---|---|
| Ver tus pacientes y sus dispositivos | GET /patients, GET /devices/{id} | A quién monitoreás, el estado del reloj y sus capacidades. |
| Leer vitales y tendencias | GET /vitals, GET /patients/{id}/vitals/heart-rate | Telemetría cruda o FC agregada por minuto para gráficos. |
| Ver el sueño | GET /patients/{id}/sleep-sessions | Ventanas de sueño con señales promediadas. Hoja de ruta |
| Ver y pedir telechequeos | GET /patients/{id}/telecheckups, POST /telecheckups:request | Leer resultados o disparar una medición nueva. |
| Consultar alertas de vida | GET /alerts | Historial de caídas y SOS. |
| Recibir eventos en tiempo real | POST /subscriptions (webhooks) o GET /events | Señales y estados apenas ocurren, firmados con HMAC. |
| Ajustar la config del reloj | PATCH /patients/{id}/config | Ajustes del dispositivo (opt-in, requiere scope de escritura). |
| Consumir en formato estándar | GET /fhir/Observation?… | Datos clínicos como FHIR R4 (Bundle). |
07Primeros pasos y Quickstart
De cero a tu primer dato, sin datos reales. El mapa, y después el código.
ellie_sandbox_br / ellie_sandbox_us, secret sandbox.POST /oauth/token. Tu empresa y zona van dentro del token.# base del sandbox (datos sintéticos) BASE=https://api-sandbox.ellie.care # 1) token OAuth2 (el empresa_id + zona van dentro del token) TOKEN=$(curl -s -X POST $BASE/oauth/token \ -d grant_type=client_credentials \ -d client_id=ellie_sandbox_br -d client_secret=sandbox \ -d scope="read:patients read:vitals telecheckup:read" \ | jq -r .access_token) # 2) tu primer llamado — sin parámetro de empresa (sale del token) curl -s $BASE/v1/patients -H "Authorization: Bearer $TOKEN" curl -s "$BASE/v1/vitals?patient_id=pat_test_001&type=heart_rate" -H "Authorization: Bearer $TOKEN"
¿Preferís explorar sin escribir código? Abrí la referencia interactiva (try-it contra el sandbox).
08Autenticación
OAuth 2.0 client-credentials (app-a-app). Registrás una app → client_id + client_secret. El token es de vida corta y lleva tu empresa_id, tu zone y tus scopes.
| Scope | Permite |
|---|---|
read:patients | Listar y leer tus pacientes |
read:devices | Dispositivos, config y capacidades |
read:vitals | Telemetría (vitales, actigrafía) |
read:alerts | Historial de alertas |
telecheckup:read | Leer telechequeos |
telecheckup:request | Solicitar un telechequeo |
subscribe:events | Webhooks y polling de eventos |
write:config | Ajustar la config del dispositivo (opt-in) |
09Datos de salud: endpoints
La telemetría y los telechequeos se sirven en dos formas: REST crudo o FHIR R4 estándar. El edge abstrae de dónde salen.
- Telemetría —
GET /v1/vitals?patient_id=&type=heart_rate&since=. Tipos:heart_rate,spo2,skin_temperature,ibi,eda,motion(actigrafía ENMO),steps,calories,ppg/ppg_ir/ppg_red,accel_raw. Alto volumen → cursor +since. - Frecuencia cardíaca agregada por minuto —
GET /v1/patients/{id}/vitals/heart-rate?start=&end=. Mediana, máx, mín y cantidad de muestras por minuto. Ventana ≤ 30 días por consulta; para más, paginá. - Sesiones de sueño —
GET /v1/patients/{id}/sleep-sessions. Ventana de sueño con señales promediadas (HR, EDA, HRV, temperatura, actigrafía). Hoja de ruta - Telechequeos —
GET /v1/patients/{id}/telecheckups; se solicitan conPOST /v1/telecheckups:request. Siempre reportan estado (done/failed/deferred). - FHIR —
GET /v1/fhir/Observation?patient=&code=8867-4(LOINC). Devuelve unBundleR4. Telechequeo emocional comoQuestionnaireResponse.
10Eventos (webhooks)
Registrás tu URL vos mismo (self-serve) y Ellie te empuja los eventos crudos (señales, no alertas pre-juzgadas) como CloudEvents. Cada entrega viene firmada con HMAC en X-Ellie-Signature: verificá SIEMPRE la firma. Alternativa sin endpoint: polling GET /v1/events (omití since la primera vez; después ?since=<next_cursor>).
GET /v1/alerts.| Evento | Tier | Qué es |
|---|---|---|
clinical.event | Clínico | Señal clínica: sleep_hint_start/end, FC ↑/↓ baseline, SpO2 bajo, temp. piel (campo kind) |
device.status | Normal | Estado operativo: worn/not_worn, cargando, batería baja, conectividad, offline (state) |
telecheckup.completed / .failed / .deferred | Ciclo | Ciclo de vida de un telechequeo |
# 1) registrás tu URL → te devuelve el secret UNA sola vez (guardalo) curl -s -X POST $BASE/v1/subscriptions -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://tu-endpoint/hooks","event_types":["clinical.event","device.status"]}' # → 201 { "id":"sub_…", "secret":"whsec_…", "status":"active", … } # 2) probás la entrega firmada de punta a punta (colon literal, no lo URL-encodees) curl -s -X POST "$BASE/v1/subscriptions/sub_…:test" -H "Authorization: Bearer $TOKEN" # → 202 { "status":"delivered", "response_status":200 }
const mac = crypto.createHmac("sha256", WEBHOOK_SECRET).update(rawBody).digest("hex"); if (`sha256=${mac}` !== req.header("X-Ellie-Signature")) return res.status(401).end();
Gestionás tus suscripciones con GET /v1/subscriptions y DELETE /v1/subscriptions/{id}.
11Tenencia, zonas y privacidad
Tu empresa_id sale del token — nunca lo mandás por query ni body, y por eso solo ves a tus propios pacientes. Cada empresa tiene una zona de residencia y sus datos de salud no salen de su región.
🌎 LATAM
Datos alojados en la región de Brasil (São Paulo). Empresas de AR, BR, UY, PE. Cumple LGPD (BR), Ley 25.326 (AR) y equivalentes.
🇺🇸 US
Datos alojados en una región de Estados Unidos. Cumple HIPAA (BAA por cliente). No se mezcla con LATAM.
- Un mismo host (
api.ellie.care) te rutea a tu región según el token. - Pedir un
patient_idde otro tenant devuelve404. Solo ves lo tuyo. - El sandbox usa datos 100% sintéticos (cero PHI real).
12Casos de uso reales
Lo que las empresas construyen sobre Ellie. Cada uno combina unos pocos endpoints.
📊 Tablero de monitoreo en vivo
Vitales y estado de dispositivos de todos tus pacientes en tu panel: quién está bien, quién no tiene el reloj puesto, quién tiene batería baja. FC + device.status + /patients.
📞 Enrutar alertas a tu central
Recibís caídas y SOS por webhook y abrís un caso o una llamada en tu sistema. Webhooks + /alerts.
⌚ Adherencia al uso del reloj
Detectás quién dejó de usar el reloj o lo tiene descargado, y avisás a la familia. Señales worn/not_worn + batería.
🩺 Chequeos a demanda
Un operador dispara un telechequeo (FC, ECG) desde tu app y recibe el resultado. telecheckups:request + webhook.
📈 Detección temprana de deterioro
Seguís tendencias (FC por minuto, eventos fuera de baseline) para anticipar un problema. FC agregada + clinical.event.
🏥 Integración con historia clínica
Exportás vitales, sueño y telechequeos en FHIR R4 al sistema clínico. /fhir/Observation.
13Sandbox → Producción
Es la misma API. Pasar a prod no es reprogramar: cambiás 2 valores (host + credenciales).
| Sandbox | Producción | |
|---|---|---|
| Host | api-sandbox.ellie.care | api.ellie.care |
| Credenciales | client sandbox | client de tu empresa real |
| Endpoints · scopes · payloads | idénticos | idénticos |
| Datos | sintéticos | PHI real — solo tus pacientes |
14Errores y paginación
Los errores llegan en RFC 9457 (application/problem+json), parseables. La paginación es siempre por cursor (next_cursor), nunca offset.
{ "type": "https://api.ellie.care/errors/insufficient-scope",
"title": "Falta el scope read:vitals", "status": 403,
"detail": "Tu token no incluye read:vitals." }15Preguntas frecuentes
¿Necesito tener un reloj físico para desarrollar?
¿Puedo ver pacientes de otras empresas?
empresa_id sale del token y filtra todo: solo ves a tus pacientes. Pedir el ID de un paciente de otra empresa devuelve 404.¿Ellie decide si algo es una emergencia?
¿Qué pasa si el reloj se queda sin batería o sin señal?
device.status (batería baja, cargando, offline) para poder reaccionar.¿Los datos de salud salen de mi país o región?
¿Esto es un dispositivo médico? ¿Hace diagnóstico?
¿Cuándo tengo acceso a producción?
¿En qué formatos y idiomas está disponible?
16Glosario
| Término | Qué es |
|---|---|
| Paciente | El adulto mayor monitoreado. En FHIR, un Patient (patient_id). |
| Dispositivo / reloj | El smartwatch de consumo con la app de Ellie. |
Empresa / tenant (empresa_id) | La organización cliente de Ellie. Todo particionado por este ID, que sale del token. |
| Operador | Persona de tu empresa que atiende pacientes desde la consola web. |
| Señal | Telemetría o estado crudo. Alimenta métricas; no es una emergencia por sí sola. |
| Alerta de vida | Evento real que exige reacción: caída o botón SOS. |
| Telechequeo | Medición guiada a pedido (física en el reloj, o emocional por voz). |
| Evento | Algo que ocurrió y se te empuja por webhook: clinical.event, device.status, ciclo de telechequeo. |
Zona (latam / us) | Región de residencia de datos de la empresa. Sale del token; no cruza regiones. |
| Scope | Permiso en el token (ej. read:vitals). |
| PHI | Información de salud protegida. En prod son datos reales; en sandbox, sintéticos. |
| FHIR R4 | Estándar de interoperabilidad de salud. |
¿Listo para el detalle endpoint por endpoint? Abrí la referencia interactiva y probá contra el sandbox.