Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
SDK-uri
Clienții Dart / Flutter (anpheros_sdk) și TypeScript (@anpheros/sdk): aceeași structură, creări idempotente, reîncercări, reîmprospătare token și fluxul de consimțământ.
Biblioteci client oficiale pentru o API FHIR R4 de sănătate cu un sandbox FHIR gratuit: pacienți, observații, rezultate de laborator, condiții, medicamente, International Patient Summary, consimțământul pacientului și context AI, în TypeScript și Dart / Flutter.
Anpheros este o infrastructură interoperabilă de date medicale pentru construirea de aplicații de sănătate, software medical și servicii AI. Fiecare pacient are un singur dosar HL7 FHIR R4 pe care îl controlează; aplicațiile, clinicile, laboratoarele și agenții AI îl citesc și îl scriu prin Anpheros Platform API — cu consimțământul pacientului (OAuth 2.1 / SMART on FHIR), proveniență la fiecare scriere și un jurnal de acces pe care pacientul îl poate vizualiza. Acest repository conține bibliotecile client oficiale și exemple executabile.
| Limbaj | Pachet | Instalare | Sursă |
|---|---|---|---|
| Dart / Flutter | anpheros_sdk |
dart pub add anpheros_sdk |
dart/anpheros_sdk |
| TypeScript (Node 18+, browsere, Deno, Bun) | @anpheros/sdk |
npm install @anpheros/sdk |
ts |
Pornire rapidă în 2 minute
- Obțineți o cheie sandbox gratuită: conectați-vă pe dashboard și apăsați Get a sandbox key (
sk_test_…). Sandbox-ul dvs. are 30 de pacienți sintetici. - Verificați funcționarea:
bash
curl -H "Authorization: Bearer $ANPHEROS_KEY" "https://platform.anpheros.com/fhir/R4/Patient?_count=3"
- Instalați un SDK și citiți o înregistrare:
npm install @anpheros/sdksaudart pub add anpheros_sdk, apoi rulați codul de sub Connect sau clonați quickstart-ts.
Pentru cine este
Dezvoltatori care creează aplicații pentru sănătatea pacienților și a familiilor, backend-uri pentru aplicații medicale, integrări clinice și de laborator, precum și asistenți sau agenți AI care necesită context medical structurat al unui pacient — fără a proiecta de la zero o bază de date medicală, un sistem de consimțământ și un jurnal de audit.
Obține o cheie de sandbox
Sandbox-ul este gratuit și self-service. Autentifică-te cu Google pe dashboard și apasă Get a sandbox key: vei obține instantaneu un proiect sandbox și o cheie. Fiecare proiect sandbox vine cu proprii 30 de pacienți sintetici — șase luni de condiții, medicații, alergii, rezultate de laborator și semne vitale — pe care îi poți modifica liber și reseta oricând. Cheile de sandbox (sk_test_…) nu ajung niciodată la date reale ale pacienților.
Când treci în producție, producția este pentru organizații verificate cu un acord de procesare a datelor, iar producția începe de la 99 € pe lună, cu prima lună gratuită (pricing).
Conectare
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);
Cheile API aparțin serverelor. O aplicație care acționează în numele unei persoane folosește OAuth în schimb: ambele SDK-uri implementează fluxul de consimțământ (cod de autorizare + PKCE) și reîmprospătează automat token-urile.
Ce acoperă SDK-urile
Ambele acoperă întreaga suprafață publică (/v1, /fhir/R4, /oauth/token, /oauth/revoke) cu aceeași formă: patients, observations, conditions, medications, documents, timeline, provenance, context, grants, terminology și fhir brut. Un test eșuează compilarea atunci când o rută publică lipsește din oricare SDK sau când un SDK apelează o rută pe care serverul nu o are.
Ambele SDK-uri: Idempotency-Key automat la creări, reîncercări cu backoff la 429/5xx, o reîmprospătare a tokenului la 401, erori tipizate cu ID-ul cererii, asistență PKCE și fluxul de consimțământ.
Date medicale și FHIR
Înregistrarea este compusă din resurse FHIR R4 standard — 26 de tipuri, inclusiv Observation, Condition, MedicationStatement, DocumentReference, Immunization și AllergyIntolerance — codificate cu LOINC, ICD-10, ATC și UCUM. API-ul REST (/v1) și API-ul FHIR (/fhir/R4) citesc și scriu aceleași resurse cu aceleași ID-uri; fhir în ambele SDK-uri oferă acces FHIR brut (căutare, tranzacții, $everything, $summary, $validate).
Exemple
| Exemplu | Arată |
|---|---|
| quickstart-ts | scrie și citește o înregistrare: măsurători, rezultat de laborator, diagnostic, medicație, cronologie, căutare FHIR, IPS, context AI |
| quickstart-dart | același lucru din Dart / Flutter |
| consent-app-ts | o aplicație web care solicită consimțământ (OAuth 2.1 + PKCE) și citește înregistrarea persoanei |
| ai-context-llm | o întrebare despre o înregistrare la care răspunde un model la alegerea dvs. (local sau găzduit) |
| fhir-transaction | un pachet de tranzacție FHIR R4 și rezumatul internațional al pacientului rezultat |
Exemplele rulează pe sandbox-ul gratuit, unde fiecare proiect sandbox are proprii 30 de pacienți sintetici — vezi Obține o cheie sandbox.
Repozitorii asociate
| Repozitoriu | Ce este |
|---|---|
| fhir-api-openapi | Specificație OpenAPI 3.1 și colecție Postman a API-ului |
| mcp-server | Serverul FHIR MCP găzduit pentru agenți AI: configurații pentru Claude, Cursor, VS Code |
| agent-skills | Agent Skill, plugin Claude Code, reguli Cursor și AGENTS.md |
| fhir-synthetic-patients | Cei 30 de pacienți sintetici ca FHIR R4 Bundles și NDJSON |
| ips-examples | Documente International Patient Summary în FHIR R4 |
| fhir-validate-action | Acțiune GitHub care validează FHIR R4 JSON în CI |
| lab-results-to-fhir | CLI: Rapoarte de laborator CSV / HL7 v2 → Observații FHIR |
| healthcare-app-starters | Șabloane de aplicații de sănătate Next.js și Flutter |
Conformitate
Rezultatele brute ale testelor, publicate pentru a putea fi verificate (rezultate ale testelor, nu certificări): conformance/. La 28 septembrie 2026, grupul Standalone Launch al kitului de testare Inferno SMART App Launch STU2 (v1.0.3) a trecut 22 din 22 de teste împotriva platformei. Lansarea EHR nu este suportată.
Documentație
- Ghiduri pentru dezvoltatori
- Introducere
- Sandbox FHIR
- API pentru Sănătate
- Platformă API pentru Sănătate
- Platformă FHIR
- Ghid SDK
- Referință API (OpenAPI)
- Pentru asistenți AI
- Anpheros
Probleme și securitate
Raportați erorile în secțiunea issues a acestui repository. Nu includeți niciodată chei API, token-uri sau date despre pacienți într-un issue. Rapoarte de securitate: [email protected].
Licență
Apache License 2.0 — consultați fișierul LICENSE din fiecare pachet. Copyright 2026 Anpheros.
@anpheros/sdk
Client TypeScript pentru Anpheros Platform: un dosar medical FHIR R4 per pacient, izolare proiect, consimțământ pacient (OAuth 2.1 / SMART on FHIR), proveniență la fiecare scriere și un API de context AI. Rulează oriunde există fetch (Node 18+, browsere, 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' });
Acționând în numele unei persoane:
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 }) });
Erorile sunt AnpherosError (status, type, message, field, requestId). Creările trimit un Idempotency-Key; 429/5xx sunt reîncercate; token-urile expirate sunt reîmprospătate o dată și apelul este reîncercat.
anpheros_sdk
Client Dart / Flutter pentru Anpheros Platform: un backend de date medicale cu un record FHIR R4 per pacient, izolare proiect, consimțământ pacient (OAuth 2.1 / SMART on FHIR), proveniență la fiecare scriere și un API de context AI.
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));
Acționarea în numele unei persoane (aplicații)
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!);
Fiecare obiect poartă fhir (referința sa /fhir/R4); anpheros.fhir oferă acces FHIR brut
(read, search, create, transaction, $everything, $summary, $validate).
Erorile sunt AnpherosException cu status, type, message, field și requestId.
Creările trimit automat un Idempotency-Key; 429/5xx sunt reîncercate cu backoff; token-urile OAuth expirate
sunt reîmprospătate o dată și apelul este reîncercat.
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card