Ir al contenido

Overview y stack

EMA FHIR SDK es la librería TypeScript que los productos del ecosistema EMA usan para hablar con Aidbox. No es un cliente HTTP genérico: encapsula las decisiones FHIR específicas de EMA (perfiles sin versión, tags de tenant, multi-país, validadores nacionales), y se asegura de que cada escritura llegue a Aidbox con su meta.profile y meta.tag correctos sin que los productos consumidores tengan que hacerlo a mano.

Versión 0.6.0 — Wave 1 cerrada, post-refactor mayor (mayo 2026).

El refactor reemplazó el mirror estático de países por un ProfileResolver runtime que lee desde emashared.countries. Esto desacopla el SDK del release del IG: cuando Vault publica un nuevo país o cambia el canonical base, los productos no necesitan actualizar el SDK ni redeployar.

Consumidor activo: emaclinic. Pendientes de migración Wave 3: emalab, emavault, emawell.

CapaTecnologíaVersión
LenguajeTypeScript (target ES2022)5+
Empaquetadortsup^8.4
TestsVitest^3.0
Tipos FHIR@types/fhir (referencia para 35 resources handcrafted)^0.0.41
Runtime depsninguna — fetch nativo
Peer deps@supabase/supabase-js (para ProfileResolver)≥ 2.49
Peer deps opcionalesreact (sólo subpath /sdc)≥ 18

ESM-only. Targets soportados: Cloudflare Workers, Deno, Bun y Node 18+.

package.json define 6 entry points tree-shakeables:

SubpathPara qué
emafhirCore: createClient, createEmaClient, helpers, ref, transaction
emafhir/authEstrategias de auth: clientCredentials, bearerAuth
emafhir/searchSearchBuilder fluent API
emafhir/typesTipos FHIR R4 (35 resources) + ResourceTypeMap
emafhir/sdcRenderer headless de Questionnaires
emafhir/validatorsvalidateRun, validateCurp, validateRfc, validateDni

github.com/emahealth/emafhir

54 decisiones formales (F001-F054) en docs/decisions.md del repo. Las más críticas:

  • F050-F054 — refactor a ProfileResolver (supersede F044+F045 hardcoded countries).
  • ADR-0001 — meta-inject idempotente.
  • ADR-0002meta.profile sin versión (Aidbox FAR resuelve).