# SDK-k

> A Dart / Flutter (anpheros_sdk) és TypeScript (@anpheros/sdk) kliensek: azonos struktúra, idempotens létrehozások, újrapróbálkozások, tokenfrissítés és a hozzájárulási folyamat.

Source: https://developers.anpheros.com/hu/guides/sdks

> Hivatalos klienskönyvtárak egy FHIR R4 egészségügyi API-hoz ingyenes FHIR sandbox-szal: betegek, megfigyelések, laboreredmények, állapotok, gyógyszerek, Nemzetközi Betegösszefoglaló, beteg hozzájárulás és AI kontextus, TypeScript és Dart / Flutter nyelven.

**Az Anpheros egy interoperábilis orvosi adat infrastruktúra egészségügyi alkalmazások, orvosi szoftverek és AI szolgáltatások építéséhez.** Minden beteg rendelkezik egy HL7 FHIR R4 rekorddal, amelyet ő irányít; az alkalmazások, klinikák, laboratóriumok és AI ügynökök ezt az Anpheros Platform API-n keresztül olvassák és írják – beteg hozzájárulással (OAuth 2.1 / SMART on FHIR), minden íráshoz származási információval és egy hozzáférési naplóval, amelyet a beteg láthat. Ez a repository tartalmazza a hivatalos klienskönyvtárakat és futtatható példákat.

| Nyelv | Csomag | Telepítés | Forrás |
|---|---|---|---|
| Dart / Flutter | [`anpheros_sdk`](https://pub.dev/packages/anpheros_sdk) | `dart pub add anpheros_sdk` | [`dart/anpheros_sdk`](https://github.com/anpheros/anpheros-sdk/tree/main/dart/anpheros_sdk) |
| TypeScript (Node 18+, böngészők, Deno, Bun) | [`@anpheros/sdk`](https://www.npmjs.com/package/@anpheros/sdk) | `npm install @anpheros/sdk` | [`ts`](https://github.com/anpheros/anpheros-sdk/tree/main/ts) |

## Gyorsindítás 2 perc alatt

1. **Szerezzen ingyenes sandbox kulcsot:** jelentkezzen be a [dashboard](https://platform.anpheros.com/dashboard/) oldalon, és nyomja meg a **Get a sandbox key** (`sk_test_…`) gombot. A sandbox 30 szintetikus beteget tartalmaz.
2. **Ellenőrizze, hogy működik-e:**

   ```bash
   curl -H "Authorization: Bearer $ANPHEROS_KEY" "https://platform.anpheros.com/fhir/R4/Patient?_count=3"
   ```

3. **Telepítsen egy SDK-t és olvasson el egy rekordot:** `npm install @anpheros/sdk` vagy `dart pub add anpheros_sdk`, majd futtassa a kódot a [Connect](#connect) alatt, vagy klónozza a [quickstart-ts](https://github.com/anpheros/anpheros-sdk/tree/main/examples/quickstart-ts) repót.

## Kiknek szól

Fejlesztőknek, akik beteg- és családbarát egészségügyi alkalmazásokat, orvosi alkalmazások backendjeit, klinikai és laboratóriumi integrációkat, valamint mesterséges intelligencia asszisztenseket vagy ügynököket fejlesztenek, amelyeknek strukturált betegkontextusra van szükségük – anélkül, hogy orvosi adatbázist, hozzájárulási rendszert és audit trail-t kellene a nulláról tervezniük.

## Sandbox kulcs igénylése

A sandbox ingyenes és önkiszolgáló. Jelentkezzen be a Google-lal a [dashboardon](https://platform.anpheros.com/dashboard/), és nyomja meg a **Get a sandbox key** gombot: azonnal kap egy sandbox projektet és egy kulcsot. Minden sandbox projekthez 30 szintetikus páciens tartozik – hat hónapnyi állapot, gyógyszerelés, allergia, laboreredmény és életjel –, amelyeket szabadon módosíthat és bármikor visszaállíthat. A sandbox kulcsok (`sk_test_…`) soha nem érnek el valós páciensadatokat.

Élesben a termelés a hitelesített szervezetek számára elérhető, adatfeldolgozási megállapodással, és a termelés havi 49 eurótól indul, az első hónap ingyenes ([pricing](https://developers.anpheros.com/hu/guides/pricing)).

## Csatlakozás

```ts
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' });
```

```dart
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);
```

Az API kulcsok szervereken tárolandók. Egy személy nevében eljáró alkalmazás ehelyett OAuth-ot használ: mindkét SDK megvalósítja a hozzájárulási folyamatot (authorization code + PKCE) és automatikusan frissíti a tokeneket.

## Amit az SDK-k lefednek

Mindkettő lefedik a teljes nyilvános felületet (`/v1`, `/fhir/R4`, `/oauth/token`, `/oauth/revoke`) ugyanazzal az alakzattal: `patients`, `observations`, `conditions`, `medications`, `documents`, `timeline`, `provenance`, `context`, `grants`, `terminology` és nyers `fhir`. Egy teszt megbuktatja a buildet, ha egy nyilvános útvonal hiányzik valamelyik SDK-ból, vagy ha egy SDK olyan útvonalat hív meg, amivel a szerver nem rendelkezik.

Mindkét SDK: automatikus `Idempotency-Key` create műveleteknél, újrapróbálkozás backoff-al 429/5xx hibák esetén, egy token frissítés 401 esetén, típusos hibák a request id-vel, PKCE segédletek és a hozzájárulási folyamat.

## Orvosi adatok és FHIR

A rekord standard FHIR R4 erőforrásokból áll – 26 típus, beleértve a `Observation`, `Condition`, `MedicationStatement`, `DocumentReference`, `Immunization` és `AllergyIntolerance` erőforrásokat – LOINC, ICD-10, ATC és UCUM kódokkal. A REST API (`/v1`) és a FHIR API (`/fhir/R4`) ugyanazokat az erőforrásokat olvassa és írja ugyanazokkal az azonosítókkal; `fhir` mindkét SDK-ban nyers FHIR hozzáférést biztosít (keresés, tranzakciók, `$everything`, `$summary`, `$validate`).

## Példák

| Példa | Bemutatja |
|---|---|
| [quickstart-ts](https://github.com/anpheros/anpheros-sdk/tree/main/examples/quickstart-ts) | rekord írása és olvasása: mérések, laboreredmény, diagnózis, gyógyszer, idővonal, FHIR keresés, IPS, AI kontextus |
| [quickstart-dart](https://github.com/anpheros/anpheros-sdk/tree/main/examples/quickstart-dart) | ugyanez Dart / Flutter nyelven |
| [consent-app-ts](https://github.com/anpheros/anpheros-sdk/tree/main/examples/consent-app-ts) | egy webalkalmazás, amely hozzájárulást kér (OAuth 2.1 + PKCE) és elolvassa a személy rekordját |
| [ai-context-llm](https://github.com/anpheros/anpheros-sdk/tree/main/examples/ai-context-llm) | egy rekordról szóló kérdés, amelyre egy Ön által választott modell válaszol (helyi vagy hosztolt) |
| [fhir-transaction](https://github.com/anpheros/anpheros-sdk/tree/main/examples/fhir-transaction) | egy FHIR R4 tranzakciós csomag és az eredményül kapott International Patient Summary |

A példák az ingyenes sandbox ellen futnak, ahol minden sandbox projektnek saját 30 szintetikus betege van – lásd: [Szerezzen sandbox kulcsot](#get-a-sandbox-key).

## Kapcsolódó adattárak

| Adattár | Mi ez? |
|---|---|
| [fhir-api-openapi](https://github.com/anpheros/fhir-api-openapi) | Az API OpenAPI 3.1 specifikációja és Postman gyűjteménye |
| [mcp-server](https://github.com/anpheros/mcp-server) | A hosztolt FHIR MCP szerver AI ügynökök számára: konfigurációk Claude, Cursor, VS Code számára |
| [agent-skills](https://github.com/anpheros/agent-skills) | Agent Skill, Claude Code plugin, Cursor szabályok és AGENTS.md |
| [fhir-synthetic-patients](https://github.com/anpheros/fhir-synthetic-patients) | A 30 szintetikus beteg FHIR R4 Bundles és NDJSON formátumban |
| [ips-examples](https://github.com/anpheros/ips-examples) | Nemzetközi Betegösszefoglaló dokumentumok FHIR R4 formátumban |
| [fhir-validate-action](https://github.com/anpheros/fhir-validate-action) | GitHub Action, amely validálja az FHIR R4 JSON-t CI-ben |
| [lab-results-to-fhir](https://github.com/anpheros/lab-results-to-fhir) | CLI: CSV / HL7 v2 laborjelentések → FHIR megfigyelések |
| [healthcare-app-starters](https://github.com/anpheros/healthcare-app-starters) | Next.js és Flutter egészségügyi alkalmazás sablonok |

## Megfelelőség

Nyers teszteredmények, közzétéve, hogy ellenőrizhetők legyenek (teszteredmények, nem minősítések): [conformance/](https://github.com/anpheros/anpheros-sdk/tree/main/conformance). 2026. szeptember 28-án az Inferno SMART App Launch STU2 tesztkészlet (v1.0.3) Standalone Launch csoportja 22-ből 22 tesztet teljesített a platform ellen. EHR indítás nem támogatott.

## Dokumentáció

- [Fejlesztői útmutatók](https://developers.anpheros.com/guides/)
- [Első lépések](https://developers.anpheros.com/hu/guides/getting-started)
- [FHIR sandbox](https://developers.anpheros.com/hu/guides/fhir-sandbox)
- [Healthcare API](https://developers.anpheros.com/hu/guides/healthcare-api)
- [Healthcare API platform](https://developers.anpheros.com/hu/guides/healthcare-api-platform)
- [FHIR platform](https://developers.anpheros.com/hu/guides/fhir)
- [SDK útmutató](https://developers.anpheros.com/hu/guides/sdks)
- [API referencia (OpenAPI)](https://developers.anpheros.com/docs)
- [AI asszisztenseknek](https://developers.anpheros.com/llms.txt)
- [Anpheros](https://anpheros.com/)

## Issues és biztonság

Jelentse a hibákat a repository issues részében. Soha ne tartalmazzon API kulcsokat, tokeneket vagy páciens adatokat egy issue-ban. Biztonsági jelentések: contact@anpheros.com.

## Licenc

Apache License 2.0 — lásd a `LICENSE` fájlt minden csomagban. Copyright 2026 Anpheros.

## @anpheros/sdk

TypeScript kliens a **Anpheros Platform**-hoz: FHIR R4 alapú egészségügyi rekord betegre lebontva, projekt izoláció, beteg hozzájárulás (OAuth 2.1 / SMART on FHIR), minden íráshoz származási információ, és egy AI kontextus API. Bárhol fut `fetch`, ahol létezik (Node 18+, böngészők, Deno, Bun).

```ts
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' });
```

Személy nevében eljárva:

```ts
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 }) });
```

A hibák `AnpherosError` (`status`, `type`, `message`, `field`, `requestId`). A létrehozások `Idempotency-Key` küldenek; a 429/5xx hibák újrapróbálkozásra kerülnek; az lejárt tokenek egyszer frissítésre kerülnek, és a hívás újrapróbálkozásra kerül.

## anpheros_sdk

Dart / Flutter kliens a **Anpheros Platform**-hoz: egy egészségügyi adat-backend FHIR R4 rekordokkal
betegenként, projekt elkülönítéssel, beteg hozzájárulással (OAuth 2.1 / SMART on FHIR), minden íráshoz
származási információval és egy AI kontext API-val.

```dart
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));
```

## Személy nevében történő cselekvés (alkalmazások)

```dart
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!);
```

Minden objektum tartalmaz `fhir` (annak `/fhir/R4` referenciája); a `anpheros.fhir` nyers FHIR hozzáférést biztosít
(olvasás, keresés, létrehozás, tranzakció, `$everything`, `$summary`, `$validate`).

A hibákat `AnpherosException` jelzi `status`, `type`, `message`, `field` és `requestId`.
A létrehozások automatikusan küldenek egy `Idempotency-Key`; a 429/5xx hibákat visszalépéssel próbáljuk újra; az
lejárt OAuth tokeneket egyszer frissítjük, és a hívást megismételjük.
