FHIR TS Client
TypeScript FHIR R4 client Angular-optimized, type-safe e tree-shakeable
- Stato
- WIP
- Licenza
- MIT
- Categoria
- Healthcare
- Aggiornato
Stato del progetto
Descrizione
FHIR TS Client è una utility library TypeScript per consumare FHIR R4 server da applicazioni Angular 21 con type safety end-to-end. Risolve un gap concreto nell'ecosistema FHIR JavaScript: le librerie esistenti (fhir.js, @types/fhir) sono o non-tipate, o non ottimizzate per Angular (no RxJS, no tree-shaking, no SSR-safe). FHIR TS Client offre type definitions TypeScript 5.9 generate da StructureDefinition R4 ufficiali (Patient, Observation, Condition, Encounter, MedicationStatement, ... fino a 145+ Resource types), un client HTTP basato su Angular HttpClient con RxJS Observables (no Promises ovunque), validazione runtime con Zod per i payload di risposta, tree-shaking ESM ottimizzato per ridurre bundle size (import solo le Resource che usi, non tutte 145), supporto SSR-safe (no window/document references), pattern Repository per CRUD su Resource (find, findById, create, update, delete, search con criteri FHIR), gestione paginazione FHIR Bundle (next/previous link automatico), error handling tipato con OperationOutcome FHIR Resource. La libreria è progettata come Quick Win Tier 1 Q2 2026: utility focalizzata, scope ristretto, immediatamente utile a sviluppatori Angular che integrano con server FHIR esistenti (HAPI FHIR, Smile CDR, Microsoft FHIR Server, Google Cloud Healthcare). License MIT per massima adozione, no AGPL viral effect, allineato alla regola 'utility library → MIT' di 08_strategia_pubblicazione.md. Test coverage 80%+ con Karma + Jasmine, E2E con Playwright contro server HAPI FHIR dockerizzato. Documentazione MkDocs con esempi per ogni Resource type.
Funzionalità chiave
Type-safe FHIR R4 Resources
Type definitions generate da StructureDefinition R4 ufficiali, 145+ Resource types, IntelliSense ricco in IDE, type narrowing per profili.
RxJS Observables Angular-native
HttpClient + Observable pattern, no Promise wrapping, integrazione naturale con async pipe + Signals interop (toSignal).
Zod runtime validation
Schema Zod per ogni Resource type, validazione payload risposta server, fail-fast su mismatch schema, type narrowing dopo validation.
Tree-shakeable ESM
Import per-Resource (`import { PatientClient } from 'fhir-ts-client/patient'`), bundle size <30KB per Resource singolo, no monolithic import.
SSR-safe Angular Universal
No window/document references, dependency injection Angular standard, prerender-friendly, testato con Angular SSR 21.
Repository pattern per CRUD
Classe PatientRepository con find/findById/create/update/delete/search, query builder FHIR criteria type-safe, paginazione Bundle automatica.
Error handling OperationOutcome
Errori tipati come OperationOutcome FHIR Resource, severity (error/warning/information), location FHIRPath, issue details strutturati.
Test coverage 80%+
Karma + Jasmine unit test, Playwright E2E contro HAPI FHIR dockerizzato, coverage report HTML, CI-ready.
Tech stack
- TypeScript 5.9
- Angular 21
- RxJS
- Zod
- FHIR R4
- HAPI FHIR (test server)
- Karma
- Jasmine
- Playwright
- MkDocs Material
Casi d'uso
- Sviluppatori Angular che integrano frontend con server FHIR R4 esistenti (HAPI FHIR, Smile CDR, Microsoft FHIR Server)
- Team enterprise healthcare che costruiscono portali pazienti su standard FHIR
- Startup digital health che vogliono partire con type safety FHIR senza scrivere boilerplate
- System integrator che migrano da fhir.js untyped a una libreria type-safe Angular-native
Roadmap
- v0.1.0 Pianificata
Core: Patient + Observation + Condition
- Type definitions Patient + Observation + Condition
- HttpClient base con interceptor FHIR Content-Type
- PatientRepository CRUD base
- Zod schema validation MVP
- v0.5.0 Pianificata
Expansion: 30+ Resource types + Search
- 30+ Resource types con repositories
- Query builder FHIR search criteria type-safe
- Bundle pagination automatica
- OperationOutcome error handling tipato
- v1.0.0 Pianificata
Full coverage 145 Resources + Production-ready
- Type definitions per tutti i 145 R4 Resource
- Tree-shaking ESM ottimizzato
- Test coverage 80%+ + E2E Playwright
- npm publish + documentazione MkDocs completa
A chi è rivolto
Quick Start
Avvia il progetto localmente in pochi comandi.
# Quick start (work-in-progress, repo non ancora pubblicato)
# npm install @fedcal/fhir-ts-client
# import { PatientClient } from '@fedcal/fhir-ts-client/patient';
# const client = inject(PatientClient);
# client.findById('123').subscribe(patient => console.log(patient.name));Contribuisci al progetto
FHIR TS Client è open source. Apri una issue, proponi una pull request o lascia una stella su GitHub: ogni contributo, anche piccolo, è benvenuto.
- ⭐ Lascia una stella se ti è utile
- 🐛 Segnala bug o proponi feature via issue
- 🔧 Invia pull request con fix o miglioramenti
- 📣 Condividi il progetto se lo trovi interessante