Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Crea una aplicación sanitaria
Tutorial: usa Anpheros como backend de datos médicos de una aplicación sanitaria — pacientes, mediciones, condiciones, medicamentos, documentos, laboratorios, consentimiento, webhooks y SDKs.
Este tutorial muestra cómo una aplicación de salud o médica puede usar Anpheros Platform como su backend de datos médicos: dónde se almacenan los registros de pacientes, cómo se leen y escriben, cómo se conectan otros sistemas y cómo el paciente mantiene el control. Cada llamada a continuación es parte de la API pública (referencia).
Lo que estás construyendo
Una aplicación típica orientada al paciente —un rastreador de enfermedades crónicas, una aplicación de salud familiar, un compañero de monitorización remota— necesita:
- mantener un registro por paciente: mediciones, condiciones, medicamentos, documentos;
- mostrar ese registro como listas y una línea de tiempo;
- aceptar datos de otras fuentes (dispositivos, laboratorios, clínicas);
- compartir partes del registro, con el consentimiento del paciente;
- reaccionar cuando algo cambia.
Con Anpheros, tu aplicación mantiene sus propios usuarios, pantallas y lógica de negocio, y delega el registro médico a la plataforma:
Mobile / web app ──► your backend ──► Anpheros Platform API ──► FHIR R4 record of each patient
▲ │
└──────────── signed webhooks ◄────────────────┘
Tu backend contiene la clave API; la aplicación habla con tu backend. (Las aplicaciones que actúan en nombre de un paciente que ya tiene un registro Anpheros utilizan OAuth en su lugar — consulta el paso 7).
1. Obtener una clave de sandbox
El sandbox es de autoservicio: inicie sesión con Google en el panel (https://platform.anpheros.com/dashboard/) y presione Obtener una clave de sandbox. Las claves de sandbox comienzan con sk_test_ y solo pueden acceder a la base de datos del sandbox, donde su proyecto ya tiene su propia copia de 30 pacientes sintéticos.
export BASE=https://platform.anpheros.com
export KEY=sk_test_…
curl $BASE/v1/patients -H "Authorization: Bearer $KEY"
2. Crear un paciente
Cada usuario de su aplicación obtiene un registro de paciente propiedad de su proyecto.
curl -X POST $BASE/v1/patients -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"given": "Elena", "family": "Ionescu", "birth_date": "1985-09-03", "gender": "female"}'
La respuesta contiene el paciente id (su propio identificador para esta persona; otros proyectos ven uno diferente) y su referencia fhir.
3. Escribir mediciones, condiciones y medicamentos
Indique de quién provienen los datos con author_type: patient, practitioner, device, import o ai. Si lo omite, la plataforma registra import, nunca patient por suposición.
# a blood-pressure reading from a connected device (LOINC panel with two components)
curl -X POST $BASE/v1/patients/$PID/observations -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
-H "Idempotency-Key: $(uuidgen)" -d '{
"code": "85354-9", "display": "Blood pressure panel", "category": "vital-signs",
"effective_at": "2026-09-28T08:00:00Z", "author_type": "device",
"components": [
{"code": "8480-6", "display": "Systolic", "value": 128, "unit": "mm[Hg]"},
{"code": "8462-4", "display": "Diastolic", "value": 82, "unit": "mm[Hg]"}
]}'
# a diagnosis (ICD-10 by default)
curl -X POST $BASE/v1/patients/$PID/conditions -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
-d '{"code": "I10", "display": "Essential hypertension", "onset": "2024-03-01", "author_type": "practitioner"}'
# a medication (ATC by default)
curl -X POST $BASE/v1/patients/$PID/medications -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
-d '{"display": "Amlodipine 5 mg", "code": "C08CA01", "dosage": "1 tablet in the morning", "start": "2024-03-01", "author_type": "patient"}'
Categorías de observación: vital-signs, laboratory, symptom, activity, survey, exam, imaging, social-history. Cada escritura se almacena como un recurso FHIR y obtiene una entrada Provenance automáticamente.
4. Almacenar documentos
# create the document, then upload the bytes
curl -X POST $BASE/v1/patients/$PID/documents -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
-d '{"title": "Blood tests 2026-09-14", "kind": "lab_report", "content_type": "application/pdf", "date": "2026-09-14"}'
curl -X PUT $BASE/v1/documents/$DOC/content -H "Authorization: Bearer $KEY" -H 'content-type: application/pdf' --data-binary @report.pdf
El original es inmutable después de la carga; los valores que extraiga de él pueden apuntar de nuevo a él con derived_from.
5. Leer el registro de vuelta
curl "$BASE/v1/patients/$PID/observations?category=vital-signs&limit=20" -H "Authorization: Bearer $KEY"
curl "$BASE/v1/patients/$PID/medications?status=active" -H "Authorization: Bearer $KEY"
curl "$BASE/v1/patients/$PID/timeline?from=2026-06-01" -H "Authorization: Bearer $KEY" # everything, chronologically
Cuando necesite el modelo FHIR completo, los mismos datos están disponibles en /fhir/R4 con los mismos ids (API FHIR R4).
6. Conectar laboratorios y dispositivos
- Informes de laboratorio:
POST /v1/patients/{id}/labs/importcon CSV, HL7 v2 ORU^R01 o JSON convierten un informe completo en Observaciones de laboratorio con códigos LOINC (Conector de laboratorio). - Dispositivos y wearables: escriben Observaciones con
author_type: devicey el código LOINC de la medición (frecuencia cardíaca, SpO₂, pasos, duración del sueño y otros se enumeran en Sistemas de códigos FHIR).
7. Acceder a un registro que el paciente ya tiene (OAuth)
Si la persona ya tiene un registro en Anpheros (por ejemplo, a través de Anpheros Daily), su aplicación puede solicitar acceso en lugar de crear un nuevo paciente: registre una aplicación, envíe a la persona a la página de consentimiento con los ámbitos que necesita, intercambie el código por tokens y llame a la API con el token de acceso. El paciente elige la duración y puede revocar el acceso en cualquier momento. Detalles: Autenticación y OAuth.
8. Reaccionar a los cambios con webhooks
curl -X POST $BASE/v1/webhooks -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
-d '{"url": "https://your.app/anpheros/hook", "events": ["resource.created", "consent.revoked"]}'
Verifique la cabecera Anpheros-Signature de cada entrega (Webhooks).
9. Usar un SDK
El mismo flujo en TypeScript:
import { Anpheros, apiKey } from '@anpheros/sdk';
const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });
const { data: patients } = await anpheros.patients.list();
const vitals = await anpheros.observations.list(patients[0].id, { category: 'vital-signs', limit: 20 });
Un cliente Dart / Flutter con la misma estructura está disponible como anpheros_sdk (SDKs).
Antes de pasar a producción
- Las claves de producción (
sk_live_) se emiten a organizaciones verificadas con un acuerdo de procesamiento de datos firmado. - Lea la página de Seguridad, privacidad y residencia de datos y los límites.
- Gestione los errores por su tipo y cite la cabecera
Anpheros-Request-Idcuando contacte con el soporte (Errores).
Relacionado
- Cómo crear una API de salud con TypeScript: tutorial paso a paso con Express
- Cómo crear una aplicación de salud con Flutter: tutorial paso a paso con el SDK de Dart
- Cómo crear una aplicación de salud con IA y un backend FHIR: tutorial paso a paso en TypeScript
- Desarrollar con Anpheros
- Backend y base de datos de aplicaciones médicas
- API de datos médicos
- Desarrollo de software de salud
- Cómo crear una aplicación de registro personal de salud (PHR) con FHIR
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card