# SDK'ler

> Dart / Flutter (anpheros_sdk) ve TypeScript (@anpheros/sdk) istemcileri: aynı yapı, idempotent oluşturmalar, yeniden denemeler, token yenileme ve onay akışı.

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

> Ücretsiz bir FHIR sandbox'ı ile FHIR R4 sağlık API'si için resmi istemci kütüphaneleri: hastalar, gözlemler, laboratuvar sonuçları, durumlar, ilaçlar, Uluslararası Hasta Özeti, hasta onayı ve AI bağlamı, TypeScript ve Dart / Flutter dillerinde.

**Anpheros, sağlık uygulamaları, tıbbi yazılımlar ve AI hizmetleri oluşturmak için birlikte çalışabilir tıbbi veri altyapısıdır.** Her hastanın kontrol ettiği bir HL7 FHIR R4 kaydı vardır; uygulamalar, klinikler, laboratuvarlar ve AI aracılar bunu Anpheros Platform API'si aracılığıyla okur ve yazar — hasta onayı (OAuth 2.1 / SMART on FHIR), her yazmada köken bilgisi ve hastanın görebileceği bir erişim günlüğü ile. Bu depo, resmi istemci kütüphanelerini ve çalıştırılabilir örnekleri içerir.

| Dil | Paket | Kurulum | Kaynak |
|---|---|---|---|
| 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+, tarayıcılar, 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 Dakikada Hızlı Başlangıç

1.  **Ücretsiz bir sandbox anahtarı alın:** [Gösterge Paneline](https://platform.anpheros.com/dashboard/) giriş yapın ve **Bir sandbox anahtarı al** (`sk_test_…`) düğmesine basın. Sandbox'ınızda 30 yapay hasta bulunur.
2.  **Çalıştığını kontrol edin:**

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

3.  **Bir SDK yükleyin ve bir kayıt okuyun:** `npm install @anpheros/sdk` veya `dart pub add anpheros_sdk`, ardından [Connect](#connect) altındaki kodu çalıştırın veya [quickstart-ts](https://github.com/anpheros/anpheros-sdk/tree/main/examples/quickstart-ts) deposunu klonlayın.

## Kimler İçin

Hasta ve aile sağlığı uygulamaları, tıbbi uygulama arka uçları, klinik ve laboratuvar entegrasyonları ile hastanın yapılandırılmış tıbbi bağlamına ihtiyaç duyan yapay zeka asistanları veya aracılar geliştiren geliştiriciler için — tıbbi bir veritabanı, onay sistemi ve denetim izi tasarlamaya sıfırdan başlamadan.

## Bir sandbox anahtarı alın

Sandbox ücretsiz ve kendi kendine hizmet veren bir ortamdır. [Gösterge panosunda](https://platform.anpheros.com/dashboard/) Google ile oturum açın ve **Bir sandbox anahtarı alın** düğmesine basın: anında bir sandbox projesi ve bir anahtar elde edersiniz. Her sandbox projesi, 30 sentetik hasta ile birlikte gelir — altı aylık durumlar, ilaçlar, alerjiler, laboratuvar sonuçları ve yaşamsal belirtiler — bunları özgürce değiştirebilir ve istediğiniz zaman sıfırlayabilirsiniz. Sandbox anahtarları (`sk_test_…`) asla gerçek hasta verilerine ulaşmaz.

Canlıya geçtiğinizde, üretim, veri işleme sözleşmesi olan doğrulanmış kuruluşlar içindir ve üretim ayda 99 €'dan başlar, ilk ay ücretsizdir ([fiyatlandırma](https://developers.anpheros.com/tr/guides/pricing)).

## Bağlan

```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 anahtarları sunucularda bulunur. Bir kişi adına hareket eden bir uygulama bunun yerine OAuth kullanır: her iki SDK de onay akışını (yetkilendirme kodu + PKCE) uygular ve jetonları otomatik olarak yeniler.

## SDK'ler Neleri Kapsar

Her ikisi de aynı yapıda (`patients`, `observations`, `conditions`, `medications`, `documents`, `timeline`, `provenance`, `context`, `grants`, `terminology`) ve ham `fhir` ile tüm genel yüzeyi (`/v1`, `/fhir/R4`, `/oauth/token`, `/oauth/revoke`) kapsar. Bir test, herhangi bir SDK'de genel bir rota eksik olduğunda veya bir SDK, sunucunun sahip olmadığı bir rotayı çağırdığında derlemeyi başarısız kılar.

Her iki SDK de şunları içerir: oluşturmalarda otomatik `Idempotency-Key`, 429/5xx hatalarında geri çekilme ile yeniden deneme, 401 hatasında bir jeton yenileme, istek kimliği ile yazılmış hatalar, PKCE yardımcıları ve onay akışı.

## Tıbbi Veriler ve FHIR

Kayıt, LOINC, ICD-10, ATC ve UCUM ile kodlanmış 26 tür standart FHIR R4 kaynağından oluşur — `Observation`, `Condition`, `MedicationStatement`, `DocumentReference`, `Immunization` ve `AllergyIntolerance` dahil. REST API (`/v1`) ve FHIR API (`/fhir/R4`) aynı kaynakları aynı kimliklerle okur ve yazar; her iki SDK'daki `fhir`, ham FHIR erişimi (arama, işlemler, `$everything`, `$summary`, `$validate`) sağlar.

## Örnekler

| Örnek | Gösterir |
|---|---|
| [quickstart-ts](https://github.com/anpheros/anpheros-sdk/tree/main/examples/quickstart-ts) | bir kaydı yazma ve okuma: ölçümler, laboratuvar sonucu, teşhis, ilaç, zaman çizelgesi, FHIR araması, IPS, AI bağlamı |
| [quickstart-dart](https://github.com/anpheros/anpheros-sdk/tree/main/examples/quickstart-dart) | Dart / Flutter ile aynı |
| [consent-app-ts](https://github.com/anpheros/anpheros-sdk/tree/main/examples/consent-app-ts) | izin isteyen bir web uygulaması (OAuth 2.1 + PKCE) ve kişinin kaydını okur |
| [ai-context-llm](https://github.com/anpheros/anpheros-sdk/tree/main/examples/ai-context-llm) | seçtiğiniz bir model (yerel veya barındırılan) tarafından yanıtlanan bir kayıt hakkındaki soru |
| [fhir-transaction](https://github.com/anpheros/anpheros-sdk/tree/main/examples/fhir-transaction) | bir FHIR R4 işlem paketi ve sonuçta ortaya çıkan Uluslararası Hasta Özeti |

Örnekler ücretsiz sandbox'a karşı çalışır; burada her sandbox projesinin kendi 30 sentetik hastası vardır - bkz. [Sandbox anahtarı alın](#get-a-sandbox-key).

## İlgili Depolar

| Depo | Nedir |
|---|---|
| [fhir-api-openapi](https://github.com/anpheros/fhir-api-openapi) | API'nin OpenAPI 3.1 spesifikasyonu ve Postman koleksiyonu |
| [mcp-server](https://github.com/anpheros/mcp-server) | AI ajanları için barındırılan FHIR MCP sunucusu: Claude, Cursor, VS Code için yapılandırmalar |
| [agent-skills](https://github.com/anpheros/agent-skills) | Agent Skill, Claude Code eklentisi, Cursor kuralları ve AGENTS.md |
| [fhir-synthetic-patients](https://github.com/anpheros/fhir-synthetic-patients) | FHIR R4 Bundles ve NDJSON formatında 30 sentetik hasta |
| [ips-examples](https://github.com/anpheros/ips-examples) | FHIR R4 formatında Uluslararası Hasta Özeti belgeleri |
| [fhir-validate-action](https://github.com/anpheros/fhir-validate-action) | CI'da FHIR R4 JSON'u doğrulayan GitHub Action |
| [lab-results-to-fhir](https://github.com/anpheros/lab-results-to-fhir) | CLI: CSV / HL7 v2 laboratuvar raporları → FHIR Observations |
| [healthcare-app-starters](https://github.com/anpheros/healthcare-app-starters) | Next.js ve Flutter sağlık uygulaması şablonları |

## Uyumluluk

Ham test sonuçları, kontrol edilebilmeleri için yayınlanmıştır (sertifikalar değil, test sonuçları): [conformance/](https://github.com/anpheros/anpheros-sdk/tree/main/conformance). 28 Eylül 2026 tarihinde Inferno SMART App Launch STU2 test kiti (v1.0.3) Standalone Launch grubu, platforma karşı 22 testin 22'sini başarıyla tamamlamıştır. EHR başlatma desteklenmemektedir.

## Dokümantasyon

- [Geliştirici kılavuzları](https://developers.anpheros.com/guides/)
- [Başlarken](https://developers.anpheros.com/tr/guides/getting-started)
- [FHIR sandbox](https://developers.anpheros.com/tr/guides/fhir-sandbox)
- [Sağlık API'si](https://developers.anpheros.com/tr/guides/healthcare-api)
- [Sağlık API platformu](https://developers.anpheros.com/tr/guides/healthcare-api-platform)
- [FHIR platformu](https://developers.anpheros.com/tr/guides/fhir)
- [SDK kılavuzu](https://developers.anpheros.com/tr/guides/sdks)
- [API referansı (OpenAPI)](https://developers.anpheros.com/docs)
- [Yapay zeka asistanları için](https://developers.anpheros.com/llms.txt)
- [Anpheros](https://anpheros.com/)

## Sorunlar ve Güvenlik

Hataları bu repozitörünün sorunlar bölümünde bildirin. Bir sorunda asla API anahtarları, belirteçler veya hasta verileri eklemeyin. Güvenlik raporları için: contact@anpheros.com.

## Lisans

Apache License 2.0 — her paketin `LICENSE` dosyasına bakınız. Telif Hakkı 2026 Anpheros.

## @anpheros/sdk

**Anpheros Platform** için TypeScript istemcisi: hasta başına FHIR R4 sağlık kaydı, proje
izolasyonu, hasta onayı (OAuth 2.1 / SMART on FHIR), her yazımda köken bilgisi ve bir AI
bağlam API'si. `fetch`'nin bulunduğu her yerde çalışır (Node 18+, tarayıcılar, 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' });
```

Bir kişi adına hareket etme:

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

Hatalar `AnpherosError`'dir (`status`, `type`, `message`, `field`, `requestId`). Gönderimler `Idempotency-Key` oluşturur; 429/5xx hataları yeniden denenir; süresi dolmuş belirteçler bir kez yenilenir ve çağrı yeniden denenir.

## anpheros_sdk

**Anpheros Platform** için Dart / Flutter istemcisi: FHIR R4 kaydı olan bir sağlık verisi arka ucu
hasta başına, proje izolasyonu, hasta onayı (OAuth 2.1 / SMART on FHIR), her yazımda köken bilgisi
ve bir yapay zeka bağlam API'si.

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

## Bir Kişi Adına Hareket Etme (Uygulamalar)

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

Her nesne `fhir` (its `/fhir/R4` referansı) taşır; `anpheros.fhir` ham FHIR erişimi sağlar
(read, search, create, transaction, `$everything`, `$summary`, `$validate`).

Hatalar `AnpherosException` ile bildirilir: `status`, `type`, `message`, `field` ve `requestId`.
Create işlemleri otomatik olarak bir `Idempotency-Key` gönderir; 429/5xx hataları geri çekilme (backoff) ile yeniden denenir; süresi dolmuş OAuth
tokenları bir kez yenilenir ve çağrı yeniden denenir.
