Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
SDKs
Los clientes Dart / Flutter (anpheros_sdk) y TypeScript (@anpheros/sdk): misma estructura, creaciones idempotentes, reintentos, actualización de tokens y el flujo de consentimiento.
Librerías cliente oficiales para una API de salud FHIR R4 con un sandbox FHIR gratuito: pacientes, observaciones, resultados de laboratorio, condiciones, medicamentos, Resumen Internacional del Paciente, consentimiento del paciente y contexto de IA, en TypeScript y Dart / Flutter.
Anpheros es una infraestructura de datos médicos interoperable para construir aplicaciones de salud, software médico y servicios de IA. Cada paciente tiene un registro HL7 FHIR R4 que controla; las aplicaciones, clínicas, laboratorios y agentes de IA lo leen y escriben a través de la API de la Plataforma Anpheros — con el consentimiento del paciente (OAuth 2.1 / SMART on FHIR), procedencia en cada escritura y un registro de acceso que el paciente puede ver. Este repositorio contiene las librerías cliente oficiales y ejemplos ejecutables.
| Lenguaje | Paquete | Instalación | Fuente |
|---|---|---|---|
| Dart / Flutter | anpheros_sdk |
dart pub add anpheros_sdk |
dart/anpheros_sdk |
| TypeScript (Node 18+, navegadores, Deno, Bun) | @anpheros/sdk |
npm install @anpheros/sdk |
ts |
Inicio rápido en 2 minutos
- Obtenga una clave de sandbox gratuita: inicie sesión en el panel y presione Obtener una clave de sandbox (
sk_test_…). Su sandbox tiene 30 pacientes sintéticos. - Verifique que funciona:
bash
curl -H "Authorization: Bearer $ANPHEROS_KEY" "https://platform.anpheros.com/fhir/R4/Patient?_count=3"
- Instale un SDK y lea un registro:
npm install @anpheros/sdkodart pub add anpheros_sdk, luego ejecute el código en Conectar, o clone quickstart-ts.
A quién va dirigido
Desarrolladores que crean aplicaciones de salud para pacientes y familiares, backends de aplicaciones médicas, integraciones de clínicas y laboratorios, y asistentes o agentes de IA que necesitan el contexto médico estructurado de un paciente, sin tener que diseñar desde cero una base de datos médica, un sistema de consentimiento y un registro de auditoría.
Obtener una clave de sandbox
El sandbox es gratuito y de autoservicio. Inicia sesión con Google en el dashboard y presiona Obtener una clave de sandbox: obtendrás un proyecto de sandbox y una clave al instante. Cada proyecto de sandbox viene con sus propios 30 pacientes sintéticos —seis meses de condiciones, medicamentos, alergias, resultados de laboratorio y signos vitales— que puedes modificar libremente y restablecer en cualquier momento. Las claves de sandbox (sk_test_…) nunca acceden a datos de pacientes reales.
Cuando pases a producción, la producción es para organizaciones verificadas con un acuerdo de procesamiento de datos, y la producción comienza a partir de 99 € al mes con el primer mes gratuito (precios).
Conectar
import { Anpheros, apiKey } from '@anpheros/sdk';
const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) }); // sk_test_… in the sandbox
const { data: patients } = await anpheros.patients.list();
const labs = await anpheros.observations.list(patients[0].id, { category: 'laboratory', limit: 10 });
const ctx = await anpheros.context.build({ patient: patients[0].id, task: 'weekly check-in', budget_tokens: 1500, format: 'text' });
import 'package:anpheros_sdk/anpheros_sdk.dart';
final anpheros = Anpheros(auth: AnpherosAuth.apiKey('sk_test_…'));
final patients = await anpheros.patients.list();
final labs = await anpheros.observations.list(patients.data.first.id, category: 'laboratory', limit: 10);
Las claves de API pertenecen a los servidores. Una aplicación que actúa en nombre de una persona utiliza OAuth en su lugar: ambos SDK implementan el flujo de consentimiento (código de autorización + PKCE) y actualizan los tokens automáticamente.
Lo que cubren los SDK
Ambos cubren toda la superficie pública (/v1, /fhir/R4, /oauth/token, /oauth/revoke) con la
misma estructura: patients, observations, conditions, medications, documents, timeline,
provenance, context, grants, terminology y fhir en bruto. Una prueba falla la
compilación cuando falta una ruta pública en cualquiera de los SDK o cuando un SDK llama a una ruta que el servidor
no tiene.
Ambos SDK: Idempotency-Key automático en las creaciones, reintentos con retroceso en 429/5xx, una actualización de token
en 401, errores tipados con el ID de solicitud, asistentes PKCE y el flujo de consentimiento.
Datos médicos y FHIR
El registro está compuesto por recursos FHIR R4 estándar — 26 tipos, incluyendo Observation, Condition, MedicationStatement, DocumentReference, Immunization y AllergyIntolerance — codificados con LOINC, ICD-10, ATC y UCUM. La API REST (/v1) y la API FHIR (/fhir/R4) leen y escriben los mismos recursos con los mismos ids; fhir en ambos SDKs proporciona acceso FHIR sin procesar (búsqueda, transacciones, $everything, $summary, $validate).
Ejemplos
| Ejemplo | Muestra |
|---|---|
| quickstart-ts | escribir y leer un registro: mediciones, resultado de laboratorio, diagnóstico, medicación, línea de tiempo, búsqueda FHIR, IPS, contexto de IA |
| quickstart-dart | lo mismo desde Dart / Flutter |
| consent-app-ts | una aplicación web que solicita consentimiento (OAuth 2.1 + PKCE) y lee el registro de la persona |
| ai-context-llm | una pregunta sobre un registro respondida por un modelo de su elección (local o alojado) |
| fhir-transaction | un paquete de transacción FHIR R4 y el International Patient Summary resultante |
Los ejemplos se ejecutan contra el sandbox gratuito, donde cada proyecto de sandbox tiene sus propios 30 pacientes sintéticos; consulte Obtener una clave de sandbox.
Repositorios relacionados
| Repositorio | Qué es |
|---|---|
| fhir-api-openapi | Especificación OpenAPI 3.1 y colección Postman de la API |
| mcp-server | el servidor FHIR MCP alojado para agentes de IA: configuraciones para Claude, Cursor, VS Code |
| agent-skills | Agent Skill, Claude Code plugin, reglas de Cursor y AGENTS.md |
| fhir-synthetic-patients | los 30 pacientes sintéticos como FHIR R4 Bundles y NDJSON |
| ips-examples | Documentos International Patient Summary en FHIR R4 |
| fhir-validate-action | GitHub Action que valida FHIR R4 JSON en CI |
| lab-results-to-fhir | CLI: informes de laboratorio CSV / HL7 v2 → FHIR Observations |
| healthcare-app-starters | Plantillas de aplicaciones de salud Next.js y Flutter |
Conformidad
Resultados de pruebas sin procesar, publicados para que puedan ser verificados (resultados de pruebas, no certificaciones): conformance/. El 28 de septiembre de 2026, el grupo Standalone Launch del kit de pruebas Inferno SMART App Launch STU2 (v1.0.3) superó 22 de 22 pruebas contra la plataforma. El lanzamiento de EHR no es compatible.
Documentación
- Guías para desarrolladores
- Primeros pasos
- Sandbox de FHIR
- API de Salud
- Plataforma de API de Salud
- Plataforma FHIR
- Guía del SDK
- Referencia de la API (OpenAPI)
- Para asistentes de IA
- Anpheros
Problemas y seguridad
Reporte errores en los issues de este repositorio. Nunca incluya claves de API, tokens o datos de pacientes en un issue. Reportes de seguridad: [email protected].
Licencia
Licencia Apache 2.0 — consulte el archivo LICENSE de cada paquete. Copyright 2026 Anpheros.
@anpheros/sdk
Cliente TypeScript para Anpheros Platform: un registro de salud FHIR R4 por paciente, aislamiento de proyectos, consentimiento del paciente (OAuth 2.1 / SMART on FHIR), procedencia en cada escritura y una API de contexto de IA. Se ejecuta en cualquier lugar donde exista fetch (Node 18+, navegadores, Deno, Bun).
import { Anpheros, apiKey } from '@anpheros/sdk';
const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });
const { data: patients } = await anpheros.patients.list();
const labs = await anpheros.observations.list(patients[0].id, { category: 'laboratory', limit: 10 });
const ctx = await anpheros.context.build({ patient: patients[0].id, task: 'weekly check-in', budget_tokens: 1500, format: 'text' });
Actuando en nombre de una persona:
import { OAuthFlow, OAuthAuth, generatePkce } from '@anpheros/sdk';
const flow = new OAuthFlow({ baseUrl: BASE, clientId: 'client_…', redirectUri: 'https://myapp.example/callback' });
const pkce = await generatePkce();
location.href = flow.authorizeUrl({ scopes: ['patient/Observation.rs?category=laboratory', 'offline_access'], state, pkce, lang: 'ro' });
// on the callback:
const tokens = await flow.exchange(code, pkce);
const anpheros = new Anpheros({ auth: new OAuthAuth({ tokens, onRefresh: flow.refresh, onTokens: persist }) });
Los errores son AnpherosError (status, type, message, field, requestId). Las creaciones envían un Idempotency-Key; los errores 429/5xx se reintentan; los tokens expirados se actualizan una vez y se reintenta la llamada.
anpheros_sdk
Cliente Dart / Flutter para Anpheros Platform: un backend de datos de salud con un registro FHIR R4 por paciente, aislamiento de proyectos, consentimiento del paciente (OAuth 2.1 / SMART on FHIR), procedencia en cada escritura y una API de contexto de IA.
import 'package:anpheros_sdk/anpheros_sdk.dart';
final anpheros = Anpheros(auth: AnpherosAuth.apiKey('sk_test_…')); // server / sandbox
final patients = await anpheros.patients.list();
final elena = patients.data.first;
final labs = await anpheros.observations.list(elena.id, category: 'laboratory', limit: 10);
final ctx = await anpheros.context.build(ContextRequest(patient: elena.id, task: 'weekly check-in', budgetTokens: 1500));
Actuando en nombre de una persona (aplicaciones)
final flow = OAuthFlow(baseUrl: 'https://…', clientId: 'client_…', redirectUri: 'myapp://callback');
final pkce = Pkce.generate();
final url = flow.authorizeUrl(scopes: ['patient/Observation.rs?category=laboratory', 'patient/MedicationStatement.r', 'offline_access'],
state: 'abc', pkce: pkce, lang: 'ro');
// open `url`; on return with ?code=…:
final tokens = await flow.exchange(code: code, pkce: pkce);
final anpheros = Anpheros(auth: AnpherosAuth.oauth(
accessToken: tokens.accessToken, refreshToken: tokens.refreshToken, expiresAt: tokens.expiresAt,
onRefresh: flow.refresh, onTokens: persist));
final meds = await anpheros.medications.listMedications(tokens.patient!);
Cada objeto lleva fhir (su referencia /fhir/R4); anpheros.fhir proporciona acceso FHIR sin procesar
(read, search, create, transaction, $everything, $summary, $validate).
Los errores se AnpherosException con status, type, message, field y requestId.
Las creaciones envían un Idempotency-Key automáticamente; los errores 429/5xx se reintentan con backoff; los tokens OAuth expirados
se actualizan una vez y la llamada se reintenta.
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card