# SDKs

> Οι client βιβλιοθήκες Dart / Flutter (anpheros_sdk) και TypeScript (@anpheros/sdk): ίδια δομή, idempotent δημιουργίες, επαναδοκιμές, ανανέωση token και ροή συναίνεσης.

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

> Επίσημες client βιβλιοθήκες για ένα FHIR R4 healthcare API με δωρεάν FHIR sandbox: ασθενείς, παρατηρήσεις, εργαστηριακά αποτελέσματα, καταστάσεις, φάρμακα, International Patient Summary, συναίνεση ασθενούς και AI context, σε TypeScript και Dart / Flutter.

**Η Anpheros είναι μια διαλειτουργική υποδομή ιατρικών δεδομένων για τη δημιουργία εφαρμογών υγειονομικής περίθαλψης, ιατρικού λογισμικού και υπηρεσιών AI.** Κάθε ασθενής έχει ένα HL7 FHIR R4 record που ελέγχει. οι εφαρμογές, οι κλινικές, τα εργαστήρια και οι AI agents το διαβάζουν και το γράφουν μέσω του Anpheros Platform API — με τη συναίνεση του ασθενούς (OAuth 2.1 / SMART on FHIR), provenance σε κάθε εγγραφή και ένα αρχείο καταγραφής πρόσβασης που μπορεί να δει ο ασθενής. Αυτό το repository περιέχει τις επίσημες client βιβλιοθήκες και εκτελέσιμα παραδείγματα.

| Γλώσσα | Package | Εγκατάσταση | Πηγή |
|---|---|---|---|
| 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+, browsers, 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) |

## Γρήγορη εκκίνηση σε 2 λεπτά

1. **Λάβετε ένα δωρεάν κλειδί sandbox:** συνδεθείτε στο [dashboard](https://platform.anpheros.com/dashboard/) και πατήστε **Get a sandbox key** (`sk_test_…`). Το sandbox σας έχει 30 συνθετικούς ασθενείς.
2. **Ελέγξτε ότι λειτουργεί:**

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

3. **Εγκαταστήστε ένα SDK και διαβάστε ένα αρχείο καταγραφής:** `npm install @anpheros/sdk` ή `dart pub add anpheros_sdk`, στη συνέχεια εκτελέστε τον κώδικα στην ενότητα [Connect](#connect), ή κάντε clone το [quickstart-ts](https://github.com/anpheros/anpheros-sdk/tree/main/examples/quickstart-ts).

## Για ποιον προορίζεται

Για προγραμματιστές που δημιουργούν εφαρμογές υγείας ασθενών και οικογένειας, backends ιατρικών εφαρμογών, ενσωματώσεις κλινικών και εργαστηρίων, και βοηθούς ή πράκτορες AI που χρειάζονται δομημένο ιατρικό πλαίσιο ασθενούς — χωρίς να χρειάζεται να σχεδιάσουν από την αρχή μια ιατρική βάση δεδομένων, ένα σύστημα συναίνεσης και ένα αρχείο καταγραφής ελέγχου.

## Λήψη κλειδιού sandbox

Το sandbox είναι δωρεάν και αυτοεξυπηρετούμενο. Συνδεθείτε με τον λογαριασμό σας Google στον [πίνακα ελέγχου](https://platform.anpheros.com/dashboard/) και πατήστε **Λήψη κλειδιού sandbox**: θα λάβετε άμεσα ένα έργο sandbox και ένα κλειδί. Κάθε έργο sandbox συνοδεύεται από 30 συνθετικούς ασθενείς — έξι μήνες δεδομένων για καταστάσεις, φαρμακευτική αγωγή, αλλεργίες, εργαστηριακά αποτελέσματα και ζωτικά σημεία — τους οποίους μπορείτε να τροποποιήσετε ελεύθερα και να επαναφέρετε ανά πάσα στιγμή. Τα κλειδιά sandbox (`sk_test_…`) δεν αποκτούν ποτέ πρόσβαση σε πραγματικά δεδομένα ασθενών.

Όταν μεταβείτε σε παραγωγική λειτουργία, η παραγωγή απευθύνεται σε επαληθευμένους οργανισμούς με συμφωνία επεξεργασίας δεδομένων, και η παραγωγή ξεκινά από 99 € το μήνα με τον πρώτο μήνα δωρεάν ([τιμολόγηση](https://developers.anpheros.com/el/guides/pricing)).

## Σύνδεση

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

Τα κλειδιά API ανήκουν σε διακομιστές. Μια εφαρμογή που ενεργεί για λογαριασμό ενός ατόμου χρησιμοποιεί OAuth αντ' αυτού: και τα δύο SDK υλοποιούν τη ροή συναίνεσης (κωδικός εξουσιοδότησης + PKCE) και ανανεώνουν αυτόματα τα διακριτικά ανανέωσης.

## Τι καλύπτουν τα SDKs

Και τα δύο καλύπτουν ολόκληρη τη δημόσια επιφάνεια (`/v1`, `/fhir/R4`, `/oauth/token`, `/oauth/revoke`) με το
ίδιο σχήμα: `patients`, `observations`, `conditions`, `medications`, `documents`, `timeline`,
`provenance`, `context`, `grants`, `terminology` και raw `fhir`. Μια δοκιμή αποτυγχάνει
την κατασκευή όταν μια δημόσια διαδρομή λείπει από οποιοδήποτε SDK ή όταν ένα SDK καλεί μια διαδρομή που ο διακομιστής
δεν διαθέτει.

Και τα δύο SDKs: αυτόματη `Idempotency-Key` στις δημιουργίες, επαναδοκιμές με backoff σε 429/5xx, ανανέωση ενός token
σε 401, τυποποιημένα σφάλματα με το αναγνωριστικό αιτήματος, βοηθητικά προγράμματα PKCE και τη ροή συναίνεσης.

## Ιατρικά δεδομένα και FHIR

Το αρχείο αποτελείται από τυπικούς πόρους FHIR R4 — 26 τύπους, συμπεριλαμβανομένων των `Observation`, `Condition`, `MedicationStatement`, `DocumentReference`, `Immunization` και `AllergyIntolerance` — κωδικοποιημένους με LOINC, ICD-10, ATC και UCUM. Το REST API (`/v1`) και το FHIR API (`/fhir/R4`) διαβάζουν και γράφουν τους ίδιους πόρους με τα ίδια αναγνωριστικά. Η `fhir` και στα δύο SDKs παρέχει απευθείας πρόσβαση σε FHIR (αναζήτηση, συναλλαγές, `$everything`, `$summary`, `$validate`).

## Παραδείγματα

| Παράδειγμα | Εμφανίζει |
|---|---|
| [quickstart-ts](https://github.com/anpheros/anpheros-sdk/tree/main/examples/quickstart-ts) | εγγραφή και ανάγνωση ενός record: μετρήσεις, εργαστηριακό αποτέλεσμα, διάγνωση, φαρμακευτική αγωγή, χρονοδιάγραμμα, αναζήτηση FHIR, IPS, AI context |
| [quickstart-dart](https://github.com/anpheros/anpheros-sdk/tree/main/examples/quickstart-dart) | το ίδιο από Dart / Flutter |
| [consent-app-ts](https://github.com/anpheros/anpheros-sdk/tree/main/examples/consent-app-ts) | μια web εφαρμογή που ζητά συναίνεση (OAuth 2.1 + PKCE) και διαβάζει το record του ατόμου |
| [ai-context-llm](https://github.com/anpheros/anpheros-sdk/tree/main/examples/ai-context-llm) | μια ερώτηση σχετικά με ένα record που απαντάται από ένα μοντέλο της επιλογής σας (τοπικό ή φιλοξενούμενο) |
| [fhir-transaction](https://github.com/anpheros/anpheros-sdk/tree/main/examples/fhir-transaction) | ένα FHIR R4 transaction bundle και το προκύπτον International Patient Summary |

Τα παραδείγματα εκτελούνται στο δωρεάν sandbox, όπου κάθε sandbox project έχει τους δικούς του 30 συνθετικούς ασθενείς — δείτε [Λήψη κλειδιού sandbox](#get-a-sandbox-key).

## Σχετικά αποθετήρια

| Αποθετήριο | Τι είναι |
|---|---|
| [fhir-api-openapi](https://github.com/anpheros/fhir-api-openapi) | OpenAPI 3.1 spec και Postman collection του API |
| [mcp-server](https://github.com/anpheros/mcp-server) | ο φιλοξενούμενος FHIR MCP server για AI agents: configs για Claude, Cursor, VS Code |
| [agent-skills](https://github.com/anpheros/agent-skills) | Agent Skill, Claude Code plugin, Cursor rules και AGENTS.md |
| [fhir-synthetic-patients](https://github.com/anpheros/fhir-synthetic-patients) | οι 30 συνθετικοί ασθενείς ως FHIR R4 Bundles και NDJSON |
| [ips-examples](https://github.com/anpheros/ips-examples) | Έγγραφα International Patient Summary σε FHIR R4 |
| [fhir-validate-action](https://github.com/anpheros/fhir-validate-action) | GitHub Action που επικυρώνει FHIR R4 JSON σε CI |
| [lab-results-to-fhir](https://github.com/anpheros/lab-results-to-fhir) | CLI: CSV / HL7 v2 αναφορές εργαστηρίου → FHIR Observations |
| [healthcare-app-starters](https://github.com/anpheros/healthcare-app-starters) | Πρότυπα εφαρμογών υγείας Next.js και Flutter |

## Συμμόρφωση

Ακατέργαστα αποτελέσματα δοκιμών, δημοσιευμένα ώστε να μπορούν να ελεγχθούν (αποτελέσματα δοκιμών, όχι πιστοποιήσεις): [conformance/](https://github.com/anpheros/anpheros-sdk/tree/main/conformance). Στις 28 Σεπτεμβρίου 2026, η ομάδα Standalone Launch του κιτ δοκιμών Inferno SMART App Launch STU2 (v1.0.3) πέρασε 22 από 22 δοκιμές έναντι της πλατφόρμας. Η εκκίνηση EHR δεν υποστηρίζεται.

## Τεκμηρίωση

- [Οδηγοί προγραμματιστών](https://developers.anpheros.com/guides/)
- [Ξεκινώντας](https://developers.anpheros.com/el/guides/getting-started)
- [FHIR sandbox](https://developers.anpheros.com/el/guides/fhir-sandbox)
- [Healthcare API](https://developers.anpheros.com/el/guides/healthcare-api)
- [Healthcare API platform](https://developers.anpheros.com/el/guides/healthcare-api-platform)
- [FHIR platform](https://developers.anpheros.com/el/guides/fhir)
- [Οδηγός SDK](https://developers.anpheros.com/el/guides/sdks)
- [Αναφορά API (OpenAPI)](https://developers.anpheros.com/docs)
- [Για βοηθούς AI](https://developers.anpheros.com/llms.txt)
- [Anpheros](https://anpheros.com/)

## Θέματα και ασφάλεια

Αναφέρετε σφάλματα στα θέματα (issues) αυτού του αποθετηρίου. Ποτέ μην συμπεριλαμβάνετε κλειδιά API, tokens ή δεδομένα ασθενών σε ένα θέμα. Αναφορές ασφαλείας: contact@anpheros.com.

## Άδεια χρήσης

Apache License 2.0 — δείτε το αρχείο `LICENSE` κάθε πακέτου. Copyright 2026 Anpheros.

## @anpheros/sdk

TypeScript client για την **Anpheros Platform**: ένα FHIR R4 health record ανά ασθενή, απομόνωση έργου, συναίνεση ασθενούς (OAuth 2.1 / SMART on FHIR), προέλευση σε κάθε εγγραφή και ένα AI context API. Τρέχει οπουδήποτε υπάρχει `fetch` (Node 18+, browsers, 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' });
```

Ενέργεια για ένα άτομο:

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

Τα σφάλματα είναι `AnpherosError` (`status`, `type`, `message`, `field`, `requestId`). Οι δημιουργίες στέλνουν ένα `Idempotency-Key`. Τα 429/5xx επαναλαμβάνονται. Τα ληγμένα tokens ανανεώνονται μία φορά και η κλήση επαναλαμβάνεται.

## anpheros_sdk

Dart / Flutter client για την **Anpheros Platform**: ένα backend υγείας με FHIR R4 record
ανά ασθενή, απομόνωση έργων, συναίνεση ασθενούς (OAuth 2.1 / SMART on FHIR), προέλευση σε κάθε
εγγραφή και ένα AI context API.

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

## Ενέργεια για λογαριασμό ατόμου (εφαρμογές)

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

Κάθε αντικείμενο φέρει `fhir` (τη `/fhir/R4` αναφορά του); η `anpheros.fhir` παρέχει απευθείας πρόσβαση FHIR
(read, search, create, transaction, `$everything`, `$summary`, `$validate`).

Τα σφάλματα `AnpherosException` με `status`, `type`, `message`, `field` και `requestId`.
Οι δημιουργίες στέλνουν αυτόματα ένα `Idempotency-Key`. τα 429/5xx επαναλαμβάνονται με backoff. τα ληγμένα OAuth
tokens ανανεώνονται μία φορά και η κλήση επαναλαμβάνεται.
