Descripción general
LINA permite enviar formularios clínicos a pacientes a través de múltiples canales. Puedes programar envíos inmediatos o diferidos, y recibir los resultados automáticamente vía webhooks o consultando la API.
Canales disponibles
| Canal | Coste (créditos) | Descripción |
|---|
email | 1 | Correo electrónico con enlace al formulario |
sms | 2 | SMS con enlace corto |
whatsapp | 3 | Mensaje de WhatsApp con botón interactivo |
app | 0 | Notificación push en la app del paciente |
Flujo de trabajo
Obtener el ID del formulario
Primero, lista los formularios disponibles en tu cuenta para identificar cuál quieres enviar.curl -X GET https://api.linahealthcareplatform.com/api/v1/forms \
-H "Authorization: Bearer YOUR_TOKEN"
const response = await fetch('https://api.linahealthcareplatform.com/api/v1/forms', {
headers: { 'Authorization': 'Bearer YOUR_TOKEN' }
});
const { data } = await response.json();
console.log(data); // Lista de formularios disponibles
import requests
response = requests.get(
"https://api.linahealthcareplatform.com/api/v1/forms",
headers={"Authorization": "Bearer YOUR_TOKEN"}
)
forms = response.json()["data"]
Identificar al paciente
Necesitas el id del paciente. Puedes buscarlo por nombre o email.curl -X GET "https://api.linahealthcareplatform.com/api/v1/patients?search=maria.garcia@email.com" \
-H "Authorization: Bearer YOUR_TOKEN"
const response = await fetch(
'https://api.linahealthcareplatform.com/api/v1/patients?search=maria.garcia@email.com',
{ headers: { 'Authorization': 'Bearer YOUR_TOKEN' } }
);
const { data } = await response.json();
const patientId = data[0].id;
response = requests.get(
"https://api.linahealthcareplatform.com/api/v1/patients",
params={"search": "maria.garcia@email.com"},
headers={"Authorization": "Bearer YOUR_TOKEN"}
)
patient_id = response.json()["data"][0]["id"]
Crear la programación
Programa el envío del formulario al paciente indicando el canal y la fecha/hora deseada.curl -X POST https://api.linahealthcareplatform.com/api/v1/form-schedules \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"formId": "form_abc123",
"patientId": "pat_xyz789",
"channel": "whatsapp",
"scheduledAt": "2026-05-15T09:00:00Z",
"message": "Hola María, te enviamos tu cuestionario de seguimiento semanal."
}'
const response = await fetch('https://api.linahealthcareplatform.com/api/v1/form-schedules', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
formId: 'form_abc123',
patientId: 'pat_xyz789',
channel: 'whatsapp',
scheduledAt: '2026-05-15T09:00:00Z',
message: 'Hola María, te enviamos tu cuestionario de seguimiento semanal.'
})
});
const schedule = await response.json();
console.log(schedule.id); // sch_def456
response = requests.post(
"https://api.linahealthcareplatform.com/api/v1/form-schedules",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
json={
"formId": "form_abc123",
"patientId": "pat_xyz789",
"channel": "whatsapp",
"scheduledAt": "2026-05-15T09:00:00Z",
"message": "Hola María, te enviamos tu cuestionario de seguimiento semanal."
}
)
schedule = response.json()
print(schedule["id"]) # sch_def456
Verificar el estado
Consulta el estado de la programación para confirmar que se ha enviado correctamente.curl -X GET https://api.linahealthcareplatform.com/api/v1/form-schedules?patientId=pat_xyz789&status=pending \
-H "Authorization: Bearer YOUR_TOKEN"
const response = await fetch(
'https://api.linahealthcareplatform.com/api/v1/form-schedules?patientId=pat_xyz789&status=pending',
{ headers: { 'Authorization': 'Bearer YOUR_TOKEN' } }
);
const { data } = await response.json();
response = requests.get(
"https://api.linahealthcareplatform.com/api/v1/form-schedules",
params={"patientId": "pat_xyz789", "status": "pending"},
headers={"Authorization": "Bearer YOUR_TOKEN"}
)
schedules = response.json()["data"]
Si omites el campo scheduledAt, el formulario se enviará inmediatamente:
curl -X POST https://api.linahealthcareplatform.com/api/v1/form-schedules \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"formId": "form_abc123",
"patientId": "pat_xyz789",
"channel": "email"
}'
Cancelar un envío programado
Solo puedes cancelar envíos con estado pending. Los créditos se reembolsan automáticamente.
curl -X POST https://api.linahealthcareplatform.com/api/v1/form-schedules/sch_def456/cancel \
-H "Authorization: Bearer YOUR_TOKEN"
Los envíos cancelados devuelven los créditos consumidos a tu balance de forma inmediata.
Recibir respuestas
Configura un webhook para el evento form.completed y recibirás las respuestas del paciente en tiempo real:
{
"event": "form.completed",
"data": {
"formId": "form_abc123",
"patientId": "pat_xyz789",
"scheduleId": "sch_def456",
"responses": [
{ "fieldId": "pain_level", "value": 3 },
{ "fieldId": "mood", "value": "bien" },
{ "fieldId": "notes", "value": "Me siento mejor esta semana" }
],
"completedAt": "2026-05-15T09:12:34Z"
}
}
Los formularios enviados por SMS o WhatsApp expiran a las 72 horas. Los enviados por email o app no tienen caducidad.