Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Başlangıç
Bir API anahtarından sandbox'ta bir hastanın FHIR R4 kaydını okuma ve yazmaya: anahtarlar, ilk çağrılar, kökenle yazmalar, belgeler, yapay zeka bağlamı, IPS, onay, webhook'lar ve laboratuvar raporları.
Anpheros Platform, sağlık verileri için bir arka uçtur: hasta başına bir FHIR R4 kaydı, proje izolasyonu, her yazma işleminde köken bilgisi ve aynı veriler üzerinde basit bir REST API. Bu kılavuz, hiçbir şeyden başlayarak sandbox ortamında bir hastanın kaydını okuma ve yazma sürecini anlatır.
Temel URL (sandbox ve üretim ortamı aynı URL'yi paylaşır; anahtar veri düzlemini belirler):
https://platform.anpheros.com
Etkileşimli referans: /docs (OpenAPI) ve /fhir/R4/metadata (CapabilityStatement).
1. Anahtar Alın (1 dakika)
Sandbox kendi kendine hizmet vermektedir. Kontrol paneline (https://platform.anpheros.com/dashboard/) Google ile giriş yapın ve Sandbox anahtarı al düğmesine basın: bir kuruluş, kendi sentetik hastalarına sahip bir sandbox projesi ve yalnızca bir kez gösterilen bir anahtar elde edersiniz. Aynı işlem, Firebase kullanıcı belirtecinizle Yönetici API'si aracılığıyla da gerçekleştirilebilir:
curl -X POST $BASE/admin/sandbox/quickstart -H "Authorization: Bearer $FIREBASE_ID_TOKEN"
# {"organization": {…}, "project": {"id": "proj_…", "environment": "sandbox", …}, "key": {"key": "sk_test_…", …}, "sandbox": {…}}
Veya adım adım:
# 1. an organization (you become its owner)
curl -X POST $BASE/admin/organizations -H "Authorization: Bearer $FIREBASE_ID_TOKEN" \
-H 'content-type: application/json' -d '{"name":"CardioAI SRL","kind":"developer","country":"RO"}'
# 2. a sandbox project (it comes with its own synthetic patients)
curl -X POST $BASE/admin/organizations/org_…/projects -H "Authorization: Bearer $FIREBASE_ID_TOKEN" \
-H 'content-type: application/json' -d '{"name":"CardioAI dev","environment":"sandbox"}'
# 3. a key — the plain key is returned exactly once
curl -X POST $BASE/admin/projects/proj_…/keys -H "Authorization: Bearer $FIREBASE_ID_TOKEN" \
-H 'content-type: application/json' -d '{"name":"local dev","scopes":["read","write"]}'
sk_test_… alırsınız. Sandbox anahtarları yalnızca sandbox verilerini görür. Üretim anahtarları (sk_live_…), imzalanmış bir DPA ile doğrulanmış kuruluşlara verilir — [email protected] adresine yazın. Sandbox ücretsizdir; üretim ayda 99 €'dan başlar ve ilk ay ücretsizdir (bkz. Fiyatlandırma).
2. İlk Çağrı (1 dakika)
Sandbox projeniz, proje oluşturulduğu güne kadar altı aylık geçmişe sahip 30 sentetik hastanın kendi kopyasına zaten sahiptir: yetişkinler, çocuklar ve yaşlılar, AB genelinden, durumlar (ICD-10), ilaçlar (ATC), alerjiler, laboratuvar sonuçları ve yaşamsal belirtiler (LOINC) ile birlikte. Kopya projenize aittir: herhangi bir şeyi değiştirin veya silin — başka hiçbir proje bunu görmez. Test hastalarını sıfırla kontrol panelinde (veya POST /admin/projects/{id}/sandbox/reset) onları oldukları gibi, yeni kimliklerle geri getirir; kendiniz oluşturduğunuz hastalar etkilenmez. Her sentetik hasta, sıfırlamalar boyunca kararlı bir tanımlayıcı tutar: Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02 her zaman Elena Ionescu'dur.
export KEY=sk_test_…
curl $BASE/v1/patients -H "Authorization: Bearer $KEY"
{"data":[{"id":"…","given":"Elena","family":"Ionescu","birth_date":"1985-09-03","gender":"female",…,"fhir":"Patient/…"}, …],"total":30,"next_cursor":null}
Sandbox limitleri cömert ama sınırlıdır: proje başına günde 10.000 kaynak yazma, sentetik olanlara ek olarak kendi 50 hastanız, 250 MB belge (bkz. limitler).
3. Kayıt Okuma
# lab results, newest first
curl "$BASE/v1/patients/$PID/observations?category=laboratory&limit=10" -H "Authorization: Bearer $KEY"
# active medications
curl "$BASE/v1/patients/$PID/medications?status=active" -H "Authorization: Bearer $KEY"
# everything on one timeline
curl "$BASE/v1/patients/$PID/timeline?from=2026-06-01" -H "Authorization: Bearer $KEY"
# the same data, strict FHIR
curl "$BASE/fhir/R4/Observation?patient=$PID&code=http://loinc.org|4548-4&_sort=-date" -H "Authorization: Bearer $KEY"
Kimlikler /v1 ve /fhir/R4 içinde aynıdır; her v1 nesnesi fhir referansını taşır.
_summary=count yalnızca toplamı döndürür; _elements=code,effectiveDateTime ise SUBSETTED ile etiketlenmiş ince kaynakları döndürür.
4. Yazma
Yazarı belirtin. author_type, patient, practitioner, device, import veya ai'dir;
bunu atlamanız durumunda platform import'ü kaydeder, varsayılan olarak asla patient'i değil.
HL7 AI Transparency on FHIR ile author_type ai ile yazma:
kaynak AIAST güvenlik etiketini (Yapay Zeka doğrulanmış) taşır ve Kaynağı (Provenance) şu nedenlere sahiptir:
AIAST, aracı rolü Artificial-Intelligence ve AI-Provenance profili. Modeli adlandırmak için onu bir
Device (tip Artificial-Intelligence, ad, sürüm, üretici) olarak kaydedin ve X-Anpheros-Author-Ref: Device/<id> gönderin.
curl -X POST "$BASE/v1/patients/$PID/observations" -H "Authorization: Bearer $KEY" \
-H 'content-type: application/json' -H "Idempotency-Key: $(uuidgen)" -d '{
"code": "2339-0", "display": "Glucose", "category": "laboratory",
"value": 112, "unit": "mg/dL", "effective_at": "2026-09-19T08:10:00Z",
"author_type": "device"
}'
Yanıt, id, fhir ve updated_at ile saklanan gözlemdir. Aynı
isteği aynı Idempotency-Key ile tekrarlamak aynı yanıtı döndürür ve hiçbir şey oluşturmaz.
5. Belgeler
# 1. create the document → upload target
curl -X POST "$BASE/v1/patients/$PID/documents" -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
-d '{"title":"Analize 2026-09-14","kind":"lab_report","content_type":"application/pdf","date":"2026-09-14"}'
# 2. upload the bytes to the returned url (direct to storage, or through the platform)
curl -X PUT "$BASE/v1/documents/$DOC/content" -H "Authorization: Bearer $KEY" -H 'content-type: application/pdf' --data-binary @analize.pdf
Orijinal belge hiçbir zaman değiştirilmez; sha256 ve size kaydedilir ve daha sonra çıkardığınız tüm değerler, derived_from aracılığıyla belgeye geri döner.
6. Kaynak Bilgisi
curl "$BASE/v1/patients/$PID/provenance/Observation/$OBS" -H "Authorization: Bearer $KEY"
Her sürüm için bir girdi: kim (yazar türü ve proje), ne zaman, hangi kaynak sistemden.
Bilmeniz Gereken Kurallar
- İzolasyon: Bir proje, oluşturduğu hastaları (artı paylaşılan sandbox hastaları) görür. Başka birinin hastası sizin için mevcut değildir:
404, asla403. - Eşli Kimlikler: Gördüğünüz hasta kimliği sizindir. Başka bir proje, aynı kişiyi farklı bir kimlik altında görür. Kimliklerimizi serbestçe saklayın; asla ilişkilendirmeye çalışmayın.
- Köken (Provenance): Her yazma işlemi bir Provenance kaynağı bırakır. Hiçbir şey sessizce üzerine yazılmaz; geçmiş
/fhir/R4/{Type}/{id}/_historyadresinde mevcuttur. - Hatalar: FHIR uç noktaları
OperationOutcomedöndürür;/v1ve/adminise{"error": {"type", "message", "field"}}döndürür. Her yanıtAnpheros-Request-Idiçerir; bize yazdığınızda bunu belirtin. - Sınırlar: Varsayılan olarak anahtar başına dakikada 600 istek, sayfa başına 200 öğe, belge başına 25 MB.
7. Bir Yapay Zeka Modeli İçin Bağlam
Ham kayıtları çekip bir isteme neyin uyduğuna karar vermek yerine, platformdan bir bağlam isteyin:
curl -X POST "$BASE/v1/context" -H "Authorization: Bearer $KEY" -H 'content-type: application/json' -d '{
"patient": "'$PID'",
"task": "medication review before a cardiology visit",
"question": "How did blood pressure evolve over the last 3 months?",
"budget_tokens": 1500,
"format": "text"
}'
Bölümler (özet kartı, durumlar, ilaçlar, alerjiler, laboratuvar sonuçları, haftalık eğilimleri ve tedavi öncesi/sonrası işaretleyicileriyle birlikte yaşamsal bulgular, semptomlar, zaman çizelgesi, belgeler) alırsınız, her öğe author_type ve source ile etiketlenir, bütçeye uymak için nelerin atlandığına dair bir liste, uyarılar ve çağrıyı denetim günlüğüne bağlayan bir manifest_id. Yapay zeka tarafından üretilen değerler asla gerçeklerle karıştırılmaz: yalnızca ai_notes altında görünürler. Açık ihtiyaçlar da kabul edilir:
"needs": ["labs:4548-4", "vitals:trend:85354-9", "timeline:180d"].
8. Standartlar
GET /fhir/R4/Patient/{id}/$summarybir Uluslararası Hasta Özeti belgesi Bundle'ı döndürür.POST /fhir/R4/Observation/$validate?profile=eu-labbir laboratuvar sonucunun HL7 Europe Laboratory Report 2.1.0 sonuç profiline göre nasıl ölçüldüğünü bildirir (hatalar, uyarılar, bilgiler): kategori, kod (tercihen LOINC), konu, geçerlilik zamanı, bir uygulayıcı ve sonuç yalnızca kaydedilmiş veya iptal edilmiş değilse bir değer.GET /v1/terminology/loinc?q=hba1cpaketlenmiş LOINC alt kümesini veGET /v1/search?q=metforminsemptom, durum ve ilaç kataloğunu arar; görüntüleme adı olmadan oluşturulan gözlemler otomatik olarak LOINC adını alır.
9. Hasta onayı (OAuth 2.1 + SMART on FHIR)
API anahtarları, projenizin oluşturduğu hastaları görmenizi sağlar. Bir kişinin mevcut kaydına ulaşmak için ondan şunu isteyin:
- Bir uygulama kaydedin:
POST /admin/projects/{id}/applicationsyönlendirme URI'nizle (PKCE kullanan mobil/web uygulamaları içinpublic, sunucular içinconfidential; gizli anahtar yalnızca bir kez gösterilir). - Kişiyi onay sayfasına gönderin:
GET /oauth/authorize?response_type=code&client_id=…&redirect_uri=…&state=…&code_challenge=…&code_challenge_method=S256&scope=patient/Observation.rs?category=laboratory patient/MedicationStatement.r offline_access&purpose=treatment&lang=roAnpheros'a giriş yaparlar, istediğiniz şeyi açık dilde görürler, kaydı (kendi kayıtları, bir yakınının kaydı veya uygulamanızın onlar için oluşturduğu kayıt) ve erişimin ne kadar süreceğini seçerler. - Kodu değiştirin:
POST /oauth/token(authorization_code+code_verifier). Bir erişim jetonu (30 dakika), bir yenileme jetonu (30 gün, kullanıldığında döndürülür) ve hasta kimliği alırsınız. - API'yi
Authorization: Bearer at_…ile çağırın. Yalnızca o hastayı, yalnızca kapsamdaki kaynak türlerini ve eylemleri görürsünüz; kapsam dışı okumalar403ile yanıt verir, aramalar filtrelenir.
Kişi istediği zaman Anpheros'tan iptal edebilir; bir sonraki çağrı 401 ile yanıt verir. Her izin, bir FHIR Consent kaynağı olarak yansıtılır ve bunun altındaki her erişim kaydedilir ve kişi tarafından görülebilir. Keşif: /.well-known/smart-configuration.
10. Webhook'lar
Platformun sizi yoklamak yerine çağırmasına izin verin:
curl -X POST $BASE/v1/webhooks -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"url": "https://your.app/anpheros/hook", "events": ["*"]}'
Yanıtı secret tutun ve her teslimatta Anpheros-Signature doğrulayın
(verifyWebhookSignature her iki SDK'da da). Olaylar kimlikler ve sürümler taşır, klinik veri taşımaz.
Ayrıntılar, yeniden denemeler ve örnekler: webhooks.md.
11. Organizasyonlar ve Uygulayıcılar
Klinikler, laboratuvarlar ve orada çalışan kişiler birinci sınıf kaynaklardır: Organization,
Practitioner, PractitionerRole. Bunlar dizin kaynaklarıdır: hasta içermezler, aynı ortamdaki her proje tarafından okunabilirler
ve yalnızca oluşturan proje tarafından değiştirilebilirler.
curl -X POST $BASE/fhir/R4/Practitioner -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-d '{"resourceType":"Practitioner","active":true,"name":[{"family":"Popescu","given":["Ana"],"prefix":["Dr."]}]}'
Bir yazının arkasındaki uygulayıcıyı X-Anpheros-Author-Ref: Practitioner/<id> (veya bir
PractitionerRole, Organization, Device) ile adlandırın: sunucu tarafından oluşturulan Provenance daha sonra agent.who.reference'i taşır
ve GET /fhir/R4/Provenance?agent=Practitioner/<id> o kişinin kaydettiği her şeyi listeler. Arama: Organization?name=, ?identifier=, ?type=, Practitioner?name=,
?family=, ?given=, PractitionerRole?practitioner=, ?organization=, ?role=, ?specialty=, ?active=.
Uygulamanızın arkasında kim çalışıyor? Bir proje anahtarıyla yapılan herhangi bir /v1 veya /fhir/R4 isteğinde
X-Anpheros-Acting-As: PractitionerRole/<id> (veya Practitioner/<id>) gönderin. Kişi dizinde mevcut ve aktif olmalıdır. Referans erişim günlüğüne yazılır,
isteğin yazılarının yazarı olur (X-Anpheros-Author-Ref'i ayarlamadığınız sürece) ve hastaya bağlantılarında isimle gösterilir
("Dr. Ana Popescu · Clinica Dente laboratuvar sonuçlarınızı okudu").
12. Tek Bir Çağrıda Laboratuvar Raporları
Tüm bir laboratuvar raporunu (CSV, HL7 v2 ORU^R01 veya JSON) gönderin ve LOINC ve referans aralıklarına sahip laboratuvar Gözlemlerini alın; yeniden gönderme güvenlidir. Ayrıntılar: lab-connector.md.
curl -X POST "$BASE/v1/patients/$PATIENT/labs/import" -H "Authorization: Bearer $KEY" -H "Content-Type: text/csv" --data-binary @report.csv
Yazma İşlemlerinde Uyumluluk Geri Bildirimi
Her POST/PUT klinik kaynağı, bölümünün IPS profiline ve laboratuvar gözlemleri için HL7 Europe laboratuvar raporu kurallarına göre kontrol edilir. Yazma işlemi profil nedenleriyle asla reddedilmez (yapısal FHIR hataları hala reddedilir); bir şey eksik olduğunda yanıt şunları içerir:
Anpheros-Conformance: warnings=2; IPS Condition: Condition without code | ...
Adlandırdığınız öğeleri düzeltin ve kaynak hastanın $summary'ine dahil edilecektir. 22 Eylül 2026'da eklenen kaynak türleri: Immunization, MedicationAdministration (arama statement=MedicationStatement/{id}),
RelatedPerson, QuestionnaireResponse, Basic. Başka projelerin bir kayda yaptığı yazma işlemleri, data.external = true ile webhook olayları olarak gelebilir — bkz. docs/webhooks.md.
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card