Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Začínáme
Od API klíče k čtení a zápisu FHIR R4 záznamu pacienta v sandboxu: klíče, první volání, zápisy s původem, dokumenty, AI kontext, IPS, souhlas, webhooks a laboratorní zprávy.
Anpheros Platform je backend pro zdravotnická data: záznam FHIR R4 na pacienta, izolace projektů, provenience u každého zápisu a jednoduché REST API nad stejnými daty. Tato příručka vás provede od ničeho k čtení a zápisu záznamu pacienta v sandboxu.
Základní URL (sandbox a produkce sdílejí stejnou URL; klíč rozhoduje o datové rovině):
https://platform.anpheros.com
Interaktivní reference: /docs (OpenAPI) a /fhir/R4/metadata (CapabilityStatement).
1. Získání klíče (1 minuta)
Sandbox je samoobslužný. Přihlaste se na dashboard (https://platform.anpheros.com/dashboard/)
pomocí účtu Google a klikněte na Get a sandbox key: získáte organizaci, sandbox projekt s vlastními
syntetickými pacienty a klíč – zobrazený jednou. Stejně tak prostřednictvím Admin API s vaším Firebase user token:
curl -X POST $BASE/admin/sandbox/quickstart -H "Authorization: Bearer $FIREBASE_ID_TOKEN"
# {"organization": {…}, "project": {"id": "proj_…", "environment": "sandbox", …}, "key": {"key": "sk_test_…", …}, "sandbox": {…}}
Nebo krok za krokem:
# 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"]}'
Získáte sk_test_…. Sandbox klíče vidí pouze sandbox data. Produkční klíče (sk_live_…) jsou
vydávány ověřeným organizacím s podepsanou DPA – pište na [email protected]. Sandbox je zdarma;
produkce začíná na 99 € měsíčně a první měsíc je zdarma (viz Ceník).
2. První volání (1 minuta)
Váš sandbox projekt již obsahuje vlastní kopii 30 syntetických pacientů s šestiměsíční historií
do dne vytvoření projektu: dospělí, děti a starší lidé z celé EU, s
diagnózami (ICD-10), léky (ATC), alergiemi, laboratorními výsledky a vitálními funkcemi (LOINC). Tato kopie
patří vašemu projektu: cokoli změňte nebo smažte – žádný jiný projekt to neuvidí. Resetovat testovací
pacienty v dashboardu (nebo POST /admin/projects/{id}/sandbox/reset) je vrátí do původního stavu
s novými ID; pacienti, které jste si vytvořili sami, nejsou dotčeni. Každý syntetický pacient si zachovává
stabilní identifikátor napříč resety: Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02
je vždy Elena Ionescu.
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}
Limity sandboxu jsou štědré, ale konečné: 10 000 zápisů zdrojů denně na projekt, 50 vlastních pacientů kromě syntetických, 250 MB dokumentů (viz limity).
3. Čtení záznamu
# 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"
ID jsou identická v /v1 a /fhir/R4; každý objekt v1 nese svůj fhir odkaz.
_summary=count vrací pouze celkový počet; _elements=code,effectiveDateTime vrací zjednodušené zdroje označené SUBSETTED.
4. Zápis
Uveďte autora. author_type je patient, practitioner, device, import nebo ai;
pokud jej vynecháte, platforma zaznamená import, nikdy z předpokladu patient.
Zápisy s author_type ai se řídí HL7 AI Transparency on FHIR:
zdroj nese bezpečnostní označení AIAST (Artificial Intelligence asserted) a jeho Provenance má důvod
AIAST, roli agenta Artificial-Intelligence a profil AI-Provenance. Pro pojmenování modelu jej zaregistrujte jako
Device (typ Artificial-Intelligence, název, verze, výrobce) a odešlete X-Anpheros-Author-Ref: Device/<id>.
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"
}'
Odpovědí je uložené pozorování s id, fhir a updated_at. Opakování přesně
stejného požadavku se stejným Idempotency-Key vrátí stejnou odpověď a nic nevytvoří.
5. Dokumenty
# 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
Originál se po vytvoření nikdy nemění; sha256 a size jsou zaznamenány a veškeré hodnoty, které
později extrahujete, odkazují zpět na dokument prostřednictvím derived_from.
6. Provenience
curl "$BASE/v1/patients/$PID/provenance/Observation/$OBS" -H "Authorization: Bearer $KEY"
Jeden záznam na verzi: kdo (typ autora a projekt), kdy, z jakého zdrojového systému.
Pravidla, která je dobré znát
- Izolace: projekt vidí pacienty, které vytvořil (plus sdílené pacienty sandboxu). Pacienti
někoho jiného pro vás neexistují:
404, nikdy403. - Párové ID: ID pacienta, které vidíte, je vaše. Jiný projekt vidí stejnou osobu pod jiným ID. Naše ID ukládejte volně; nikdy se je nesnažte korelovat.
- Původ: každý zápis zanechává zdroj Provenance. Nic není tiše přepsáno; historie je
k dispozici na
/fhir/R4/{Type}/{id}/_history. - Chyby: koncové body FHIR vracejí
OperationOutcome;/v1a/adminvracejí{"error": {"type", "message", "field"}}. Každá odpověď obsahujeAnpheros-Request-Id; citujte ji, když nám píšete. - Limity: ve výchozím nastavení 600 požadavků/minutu na klíč, 200 položek na stránku, 25 MB na dokument.
7. Kontext pro AI model
Místo načítání surových záznamů a rozhodování, co odpovídá výzvě, požádejte platformu o kontext:
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"
}'
Získáte sekce (souhrnná karta, diagnózy, léky, alergie, laboratorní výsledky, vitální funkce s týdenními trendy a značkami před/po léčbě, příznaky, časová osa, dokumenty), přičemž každá položka je označena author_type a source, seznamem toho, co bylo vynecháno, aby se vešlo do rozpočtu, varováními a manifest_id, které spojuje volání s auditním protokolem. Hodnoty generované AI se nikdy nemíchají s fakty: objevují se pouze pod ai_notes. Jsou akceptovány i explicitní požadavky:
"needs": ["labs:4548-4", "vitals:trend:85354-9", "timeline:180d"].
8. Standardy
GET /fhir/R4/Patient/{id}/$summaryvrací dokument International Patient Summary ve formátu Bundle.POST /fhir/R4/Observation/$validate?profile=eu-labhlásí, jak se laboratorní výsledek srovnává s profilem výsledku HL7 Europe Laboratory Report 2.1.0 (chyby, varování, informace): kategorie, kód (preferováno LOINC), subjekt, čas platnosti, provádějící osoba a hodnota, pokud výsledek není pouze registrován nebo zrušen.GET /v1/terminology/loinc?q=hba1cprohledává zabalenou podmnožinu LOINC aGET /v1/search?q=metforminkatalog symptomů, stavů a léků; pozorování vytvořená bez zobrazovaného názvu automaticky získají název LOINC.
9. Souhlas pacienta (OAuth 2.1 + SMART on FHIR)
API klíče vidí pacienti, které váš projekt vytvořil. Chcete-li získat přístup k existujícímu záznamu osoby, požádejte ji:
- Zaregistrujte aplikaci:
POST /admin/projects/{id}/applicationss vaším redirect URI (publicpro mobilní/webové aplikace s PKCE,confidentialpro servery; secret se zobrazí jednou). - Pošlete osobu na stránku se souhlasem:
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=roPřihlásí se do Anpheros, uvidí, co žádáte, v běžném jazyce, vybere záznam (svůj vlastní, záznam závislé osoby nebo ten, který pro ně vaše aplikace vytvořila) a jak dlouho přístup trvá. - Vyměňte kód:
POST /oauth/token(authorization_code+code_verifier). Obdržíte access token (30 min), refresh token (30 dní, rotuje se při použití) a patient id. - Zavolejte API s
Authorization: Bearer at_…. Uvidíte pouze tohoto pacienta, pouze typy zdrojů a akce v rozsahu scopes; čtení mimo rozsah odpovídají403, vyhledávání jsou filtrována.
Osoba může kdykoli zrušit souhlas z Anpheros; další volání odpoví 401. Každé udělení je
zrcadleno jako FHIR Consent resource a každý přístup pod ním je zaznamenán a viditelný pro
danou osobu. Discovery: /.well-known/smart-configuration.
10. Webhooky
Nechte platformu, aby vás kontaktovala, místo abyste ji dotazovali:
curl -X POST $BASE/v1/webhooks -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"url": "https://your.app/anpheros/hook", "events": ["*"]}'
Ponechte secret z odpovědi a ověřte Anpheros-Signature při každém doručení
(verifyWebhookSignature v obou SDK). Události nesou ID a verze, nikoli klinická data.
Podrobnosti, opakované pokusy a příklady: webhooks.md.
11. Organizace a praktičtí lékaři
Kliniky, laboratoře a lidé, kteří v nich pracují, jsou zdroje první třídy: Organization,
Practitioner, PractitionerRole. Jedná se o adresářové zdroje: žádný pacient, čitelný
každým projektem ve stejném prostředí, měnitelný pouze projektem, který je vytvořil.
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."]}]}'
Pojmenujte praktického lékaře za zápisem pomocí X-Anpheros-Author-Ref: Practitioner/<id> (nebo
PractitionerRole, Organization, Device): serverem generované Provenance pak nese
agent.who.reference a GET /fhir/R4/Provenance?agent=Practitioner/<id> uvádí vše,
co daná osoba zaznamenala. Vyhledávání: Organization?name=, ?identifier=, ?type=, Practitioner?name=,
?family=, ?given=, PractitionerRole?practitioner=, ?organization=, ?role=, ?specialty=, ?active=.
Kdo pracuje za vaší aplikací? Odešlete X-Anpheros-Acting-As: PractitionerRole/<id> (nebo
Practitioner/<id>) při jakémkoli požadavku /v1 nebo /fhir/R4 provedeném s klíčem projektu. Osoba musí
existovat v adresáři a být aktivní. Odkaz je zapsán do přístupového logu, stává se autorem
zápisů daného požadavku (pokud nenastavíte X-Anpheros-Author-Ref) a je pacientovi zobrazen
jménem v jeho připojeních ("Dr. Ana Popescu · Clinica Dente si přečetl/a vaše laboratorní výsledky").
12. Laboratorní zprávy v jednom volání
Odešlete celou laboratorní zprávu (CSV, HL7 v2 ORU^R01 nebo JSON) a získejte laboratorní pozorování (Observations) s LOINC a referenčními rozsahy; opětovné odeslání je bezpečné. Podrobnosti: 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
Zpětná vazba o shodě při zápisu
Každý POST/PUT klinického zdroje je kontrolován proti profilu IPS jeho sekce a pro
laboratorní pozorování proti pravidlům pro laboratorní zprávy HL7 Europe. Zápis není nikdy odmítnut z
důvodů profilu (strukturální chyby FHIR stále jsou); když něco chybí, odpověď nese
Anpheros-Conformance: warnings=2; IPS Condition: Condition without code | ...
Opravte to, co pojmenovává, a zdroj bude zahrnut do $summary pacienta. Typy zdrojů přidané
22. září 2026: Immunization, MedicationAdministration (vyhledávání statement=MedicationStatement/{id}),
RelatedPerson, QuestionnaireResponse, Basic. Zápisy provedené jinými projekty do záznamu, který můžete
vidět, přicházejí jako události webhook s data.external = true — viz docs/webhooks.md.
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card