Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
SDK
Klient Dart / Flutter (anpheros_sdk) i TypeScript (@anpheros/sdk): ten sam kształt, tworzenie idempotentne, ponawianie prób, odświeżanie tokenów i przepływ zgody.
Oficjalne biblioteki klienckie dla FHIR R4 API w służbie zdrowia z darmowym piaskownicą FHIR: pacjenci, obserwacje, wyniki badań laboratoryjnych, schorzenia, leki, Międzynarodowy Podsumowanie Pacjenta, zgoda pacjenta i kontekst AI, w TypeScript i Dart / Flutter.
Anpheros to interoperacyjna infrastruktura danych medycznych do tworzenia aplikacji medycznych, oprogramowania medycznego i usług AI. Każdy pacjent ma jeden rekord HL7 FHIR R4, którym zarządza; aplikacje, kliniki, laboratoria i agenci AI odczytują i zapisują go za pośrednictwem Anpheros Platform API — za zgodą pacjenta (OAuth 2.1 / SMART on FHIR), z informacją o pochodzeniu przy każdym zapisie i dziennikiem dostępu, który pacjent może przeglądać. Ten repozytorium zawiera oficjalne biblioteki klienckie i przykłady do uruchomienia.
| Język | Pakiet | Instalacja | Źródło |
|---|---|---|---|
| Dart / Flutter | anpheros_sdk |
dart pub add anpheros_sdk |
dart/anpheros_sdk |
| TypeScript (Node 18+, przeglądarki, Deno, Bun) | @anpheros/sdk |
npm install @anpheros/sdk |
ts |
Szybki start w 2 minuty
- Uzyskaj darmowy klucz sandboxowy: zaloguj się na pulpicie nawigacyjnym i naciśnij Get a sandbox key (
sk_test_…). Twój sandbox zawiera 30 syntetycznych pacjentów. - Sprawdź, czy działa:
bash
curl -H "Authorization: Bearer $ANPHEROS_KEY" "https://platform.anpheros.com/fhir/R4/Patient?_count=3"
- Zainstaluj SDK i odczytaj rekord:
npm install @anpheros/sdklubdart pub add anpheros_sdk, a następnie uruchom kod w sekcji Connect lub sklonuj quickstart-ts.
Dla kogo jest przeznaczony
Dla deweloperów tworzących aplikacje zdrowotne dla pacjentów i ich rodzin, zaplecza aplikacji medycznych, integracje kliniczne i laboratoryjne oraz asystentów lub agentów AI, którzy potrzebują ustrukturyzowanego kontekstu medycznego pacjenta – bez konieczności tworzenia od podstaw bazy danych medycznych, systemu zgód i ścieżki audytu.
Uzyskaj klucz sandbox
Sandbox jest bezpłatny i dostępny samoobsługowo. Zaloguj się za pomocą Google na dashboard i naciśnij Get a sandbox key: natychmiast otrzymasz projekt sandbox i klucz. Każdy projekt sandbox zawiera 30 syntetycznych pacjentów — sześć miesięcy historii chorób, leków, alergii, wyników laboratoryjnych i parametrów życiowych — które możesz dowolnie modyfikować i resetować w dowolnym momencie. Klucze sandbox (sk_test_…) nigdy nie uzyskują dostępu do rzeczywistych danych pacjentów.
Po przejściu na produkcję, środowisko produkcyjne jest przeznaczone dla zweryfikowanych organizacji z umową o przetwarzaniu danych, a produkcja zaczyna się od 99 € miesięcznie z pierwszym miesiącem bezpłatnie (pricing).
Połączenie
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);
Klucze API należą do serwerów. Aplikacja działająca w imieniu osoby korzysta zamiast tego z OAuth: oba zestawy SDK implementują przepływ zgody (kod autoryzacji + PKCE) i automatycznie odświeżają tokeny.
Zakres pakietów SDK
Oba pakiety obejmują całą publiczną powierzchnię (/v1, /fhir/R4, /oauth/token, /oauth/revoke) o tym samym kształcie: patients, observations, conditions, medications, documents, timeline, provenance, context, grants, terminology i surowe fhir. Test kończy się niepowodzeniem kompilacji, gdy publiczna trasa jest pominięta w jednym z pakietów SDK lub gdy pakiet SDK wywołuje trasę, której serwer nie posiada.
Oba pakiety SDK: automatyczne Idempotency-Key przy tworzeniu, ponawianie prób z wycofywaniem przy błędach 429/5xx, jedno odświeżenie tokenu przy błędzie 401, typowane błędy z identyfikatorem żądania, pomoc w PKCE i przepływ zgody.
Dane medyczne i FHIR
Rekord składa się ze standardowych zasobów FHIR R4 — 26 typów, w tym Observation, Condition, MedicationStatement, DocumentReference, Immunization i AllergyIntolerance — zakodowanych za pomocą LOINC, ICD-10, ATC i UCUM. REST API (/v1) i FHIR API (/fhir/R4) odczytują i zapisują te same zasoby z tymi samymi identyfikatorami; fhir w obu SDK zapewnia surowy dostęp do FHIR (wyszukiwanie, transakcje, $everything, $summary, $validate).
Przykłady
| Przykład | Pokazuje |
|---|---|
| quickstart-ts | zapis i odczyt rekordu: pomiary, wynik laboratoryjny, diagnoza, lek, oś czasu, wyszukiwanie FHIR, IPS, kontekst AI |
| quickstart-dart | to samo z Dart / Flutter |
| consent-app-ts | aplikacja internetowa, która prosi o zgodę (OAuth 2.1 + PKCE) i odczytuje rekord osoby |
| ai-context-llm | pytanie dotyczące rekordu, na które odpowiada wybrany model (lokalny lub hostowany) |
| fhir-transaction | pakiet transakcyjny FHIR R4 i wynikowe International Patient Summary |
Przykłady działają na darmowym środowisku sandbox, gdzie każdy projekt sandbox ma własnych 30 syntetycznych pacjentów — zobacz Uzyskaj klucz sandbox.
Powiązane repozytoria
| Repozytorium | Opis |
|---|---|
| fhir-api-openapi | Specyfikacja OpenAPI 3.1 i kolekcja Postman API |
| mcp-server | Hostowany serwer FHIR MCP dla agentów AI: konfiguracje dla Claude, Cursor, VS Code |
| agent-skills | Umiejętności agenta, wtyczka Claude Code, reguły Cursor i AGENTS.md |
| fhir-synthetic-patients | 30 syntetycznych pacjentów jako pakiety FHIR R4 i NDJSON |
| ips-examples | Dokumenty International Patient Summary w FHIR R4 |
| fhir-validate-action | Akcja GitHub, która waliduje FHIR R4 JSON w CI |
| lab-results-to-fhir | CLI: raporty laboratoryjne CSV / HL7 v2 → obserwacje FHIR |
| healthcare-app-starters | Szablony aplikacji zdrowotnych Next.js i Flutter |
Zgodność
Surowe wyniki testów, opublikowane w celu ich weryfikacji (wyniki testów, nie certyfikaty): conformance/. W dniu 28 września 2026 roku grupa Standalone Launch zestawu testowego Inferno SMART App Launch STU2 (v1.0.3) przeszła 22 z 22 testów na platformie. Uruchomienie EHR nie jest obsługiwane.
Dokumentacja
- Przewodniki dla deweloperów
- Pierwsze kroki
- Sandbox FHIR
- Healthcare API
- Platforma Healthcare API
- Platforma FHIR
- Przewodnik po SDK
- Referencje API (OpenAPI)
- Dla asystentów AI
- Anpheros
Problemy i bezpieczeństwo
Zgłaszaj błędy w issues tego repozytorium. Nigdy nie umieszczaj kluczy API, tokenów ani danych pacjentów w zgłoszeniu. Zgłoszenia dotyczące bezpieczeństwa: [email protected].
Licencja
Apache License 2.0 — patrz plik LICENSE każdego pakietu. Copyright 2026 Anpheros.
@anpheros/sdk
Klient TypeScript dla Anpheros Platform: rekord zdrowia pacjenta zgodny ze standardem FHIR R4, izolacja projektów, zgoda pacjenta (OAuth 2.1 / SMART on FHIR), śledzenie pochodzenia przy każdej operacji zapisu oraz API kontekstu AI. Działa wszędzie tam, gdzie fetch (Node 18+, przeglądarki, 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' });
Działanie w imieniu osoby:
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 }) });
Błędy są AnpherosError (status, type, message, field, requestId). Tworzenie wysyła Idempotency-Key; błędy 429/5xx są ponawiane; wygasłe tokeny są odświeżane raz, a wywołanie ponawiane.
anpheros_sdk
Klient Dart / Flutter dla Anpheros Platform: backend danych medycznych z rekordem FHIR R4 na pacjenta, izolacją projektów, zgodą pacjenta (OAuth 2.1 / SMART on FHIR), śledzeniem pochodzenia każdego zapisu i API kontekstu 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));
Działanie w imieniu osoby (aplikacje)
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!);
Każdy obiekt zawiera fhir (jego referencję /fhir/R4); anpheros.fhir zapewnia surowy dostęp do FHIR
(odczyt, wyszukiwanie, tworzenie, transakcja, $everything, $summary, $validate).
Błędy są AnpherosException z status, type, message, field i requestId.
Tworzenie automatycznie wysyła Idempotency-Key; błędy 429/5xx są ponawiane z wycofaniem (backoff); wygasłe tokeny OAuth
są odświeżane raz, a wywołanie jest ponawiane.
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card