Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Ako ukladať zdravotné záznamy pomocou FHIR R4
Návod: vytvorte pacienta, Observation krvného tlaku a stav, použite transakciu, vyhľadajte, aktualizujte s históriou a prečítajte pôvod — každý požadok s curl a skutočnou odpoveďou, na bezplatnom sandboxe.
Tento tutoriál ukladá malý lekársky záznam ako zdroje HL7 FHIR R4: Patient, Observation o krvnom tlaku a diagnózu ako Condition, potom pacienta a meranie spolu v jednej transakcii. Vyhľadáva ich, aktualizuje diagnózu bez straty predchádzajúcej verzie a číta, kto čo napísal. Každý požiadavok je jednoduchý curl proti bezplatnému sandboxu Anpheros a každá zobrazená odpoveď je to, čo API vráti.
Ak ste noví vo FHIR, prečítajte si najprv FHIR platform pre koncepty. Táto stránka je praktická časť.
Tri zdroje, ktorými väčšina záznamov začína
| Zdroj | Čo obsahuje | Kódované pomocou |
|---|---|---|
Patient |
o kom záznam je: meno, dátum narodenia, pohlavie, identifikátory z iných systémov | vaše identifikačné systémy |
Observation |
čokoľvek merané alebo hlásené: vitálne funkcie, výsledky laboratórnych testov, hmotnosť, skóre symptómov | LOINC, jednotky UCUM |
Condition |
diagnóza alebo zdravotný problém s jeho stavom v priebehu času | ICD-10 (SNOMED CT za licenčnou vlajkou) |
Lieky (MedicationStatement), alergie (AllergyIntolerance), očkovania a dokumenty nasledujú rovnaký vzor; 26 podporovaných typov zdrojov je uvedených vo vyhlásení o spôsobilosti na /fhir/R4/metadata.
Pred začiatkom
Získajte kľúč do sandboxu (sk_test_…) na platform.anpheros.com/dashboard pomocou možnosti Get a sandbox key. Nič, čo tam vytvoríte, nie sú skutočné údaje o pacientoch a nič nie je viditeľné pre iné projekty.
export BASE=https://platform.anpheros.com/fhir/R4
export KEY=sk_test_…
Krok 1: Vytvorenie pacienta
curl -X POST "$BASE/Patient" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
"name": [{"family": "Marin", "given": ["Ioana"]}],
"gender": "female",
"birthDate": "1979-04-12"
}'
201 Created, s ID a verziou, ktoré pridelil server:
{"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
"name": [{"family": "Marin", "given": ["Ioana"]}], "gender": "female", "birthDate": "1979-04-12",
"id": "d09e3942-ed86-4458-b099-fa674ab21b84",
"meta": {"versionId": "1", "lastUpdated": "2026-10-12T20:16:51.043Z"}}
Svoje vlastné ID si uchovajte v identifier pomocou system, ktoré ovládate (tu číslo záznamu kliniky), aby ste pacienta mohli vždy znova nájsť pomocou GET $BASE/Patient?identifier=https://clinic.example/mrn|MRN-10442. FHIR id je platformy a je špecifické pre váš projekt: iný projekt vidí tú istú osobu pod iným ID.
export PID=d09e3942-ed86-4458-b099-fa674ab21b84
Krok 2: Uloženie merania ako Observation
Krvný tlak je jedno pozorovanie s dvoma komponentmi, systolickým a diastolickým, pričom každý má svoj vlastný LOINC kód. Uveďte, kto meranie vykonal: tu domáce zariadenie.
curl -X POST "$BASE/Observation" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H "X-Anpheros-Author-Type: device" -H "Idempotency-Key: bp-2026-10-10-0830" -d '{
"resourceType": "Observation",
"status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "85354-9", "display": "Blood pressure panel"}]},
"subject": {"reference": "Patient/'$PID'"},
"effectiveDateTime": "2026-10-10T08:30:00Z",
"component": [
{"code": {"coding": [{"system": "http://loinc.org", "code": "8480-6"}]},
"valueQuantity": {"value": 138, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}},
{"code": {"coding": [{"system": "http://loinc.org", "code": "8462-4"}]},
"valueQuantity": {"value": 88, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}}
]
}'
Odpoveďou je uložený zdroj s id a meta.versionId: "1". Tri detaily sú dôležité pre použiteľný záznam:
- Kódy, nie štítky.
85354-9znamená „panel krvného tlaku“ v každom FHIR systéme; voľný text „BP“ nie. Kódy vyhľadajte pomocouGET /v1/terminology/loinc?q=blood pressure(FHIR kódové systémy). - UCUM jednotky (
mm[Hg],kg,mg/dL) vvalueQuantity.code, aby bolo možné hodnoty porovnávať a prevádzať. Idempotency-Key. Opakovaný pokus po uplynutí časového limitu vráti prvú odpoveď namiesto dvojitého uloženia merania.
Laboratórne výsledky sú rovnakým zdrojom s category laboratory a zvyčajne referenceRange. Na import celých laboratórnych správ si pozrite Ako importovať laboratórne výsledky do FHIR záznamu.
Krok 3: Záznam diagnózy ako Stav (Condition)
curl -X POST "$BASE/Condition" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H "X-Anpheros-Author-Type: practitioner" -d '{
"resourceType": "Condition",
"subject": {"reference": "Patient/'$PID'"},
"clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active"}]},
"verificationStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed"}]},
"code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10", "code": "I10", "display": "Essential (primary) hypertension"}]},
"onsetDateTime": "2026-03-02"
}'
clinicalStatus (aktívny, vyriešený, v remisii) a verificationStatus (potvrdený, predbežný) sú zámerne oddelené: podozrivá diagnóza nie je to isté ako potvrdená a vyriešený problém je stále súčasťou anamnézy.
Krok 4: Vytvorenie súvisiacich zdrojov v jednej transakcii
Keď pacient a jeho prvé meranie prídu spolu, napríklad z klinického systému, odošlite ich ako transaction Bundle. Buď sa uloží všetko, alebo nič. Odkazy medzi novými zdrojmi používajú dočasné urn:uuid: id, ktoré server nahradí:
curl -X POST "$BASE" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
"resourceType": "Bundle", "type": "transaction",
"entry": [
{"fullUrl": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001",
"resource": {"resourceType": "Patient", "name": [{"family": "Stan", "given": ["Mihai"]}], "gender": "male", "birthDate": "1990-02-01"},
"request": {"method": "POST", "url": "Patient"}},
{"resource": {"resourceType": "Observation", "status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "29463-7", "display": "Body weight"}]},
"subject": {"reference": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001"},
"effectiveDateTime": "2026-10-10",
"valueQuantity": {"value": 82.4, "unit": "kg", "system": "http://unitsofmeasure.org", "code": "kg"}},
"request": {"method": "POST", "url": "Observation"}}
]
}'
transaction-response má jeden záznam na zdroj, s "status": "201 Created", jeho location a uloženým zdrojom. Pole subject v Observation teraz odkazuje na skutočný Patient/fad3665a-….
Krok 5: vyhľadávanie
curl "$BASE/Observation?patient=$PID&code=http://loinc.org|85354-9&date=ge2026-10-01&_sort=-date" \
-H "Authorization: Bearer $KEY"
Získate searchset Bundle s total a zodpovedajúcimi zdrojmi, najnovšie ako prvé. Ďalšie vyhľadávania, ktoré budete často používať: Condition?patient=$PID&clinical-status=active, Observation?patient=$PID&category=laboratory a Patient/$PID/$everything pre celý záznam.
Krok 6: aktualizácia bez straty histórie
Hypertenzia sa vyriešila. Zmeňte stav a pridajte dátum ukončenia a použite If-Match s verziou, ktorú ste si prečítali, aby ste nikdy neprepisovali zmeny niekoho iného:
curl -X PUT "$BASE/Condition/$CID" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H 'If-Match: W/"1"' -d '{ …the same Condition…, "clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved"}]}, "abatementDateTime": "2026-10-11" }'
200 OK s ETag: W/"2". Ak sa tam predtým dostala iná zápis, dostanete 412 a prečítate si znova. Predchádzajúca verzia je stále tam:
curl "$BASE/Condition/$CID/_history" -H "Authorization: Bearer $KEY"
vráti obe verzie: versionId 2 (resolved) a 1 (active). GET $BASE/Condition/$CID/_history/1 číta starú verziu. V zázname sa nič prepíše potichu.
Krok 7: Zobrazenie, kto čo napísal
Každé zapísanie vytvorí Provenance zdroj. Pre záznam krvného tlaku:
curl "$BASE/Provenance?target=Observation/$OBS" -H "Authorization: Bearer $KEY"
{"resourceType": "Provenance",
"target": [{"reference": "Observation/d83d9075-…/_history/1"}],
"recorded": "2026-10-12T20:16:51.056000Z",
"activity": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation", "code": "CREATE"}]},
"agent": [{"type": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", "code": "author"}]},
"who": {"identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "device"}, "display": "proj_…"},
"onBehalfOf": {"identifier": {"system": "https://anpheros.com/fhir/sid/organization", "value": "org_…"}, "display": "…"}}]}
Typ autora, ktorý ste poslali (device), je zaznamenaný s projektom a organizáciou. Pošlite X-Anpheros-Author-Ref: Practitioner/<id> na pomenovanie klinického lekára, ktorý stojí za zápisom.
Krok 8: záznam ako súhrn
curl "$BASE/Patient/$PID/\$summary" -H "Authorization: Bearer $KEY"
vracia International Patient Summary: document Bundle, ktorý začína Composition a obsahuje sekcie ako Problémy, Lieky, Alergie a Životné funkcie, zostavené z vyššie uvedených zdrojov. Toto je formát na odovzdanie inému systému alebo na tlač pre lekára (FHIR platform).
Preferujete JSON bez FHIR?
Tie isté dáta sú dostupné aj cez jednoduchšie REST rozhranie, /v1, s rovnakými ID: POST /v1/patients/{id}/observations prevezme {"code": "85354-9", "category": "vital-signs", "effective_at": "…", "components": […]} a uloží rovnaké FHIR Observation. Použite to, čo sa hodí do vášho kódu. Pozrite si Medical data API a SDK.
Často kladené otázky
Aký je najlepší spôsob ukladania lekárskych záznamov?
Ako kódované, verzované zdroje s históriou toho, kto ich vytvoril. HL7 FHIR R4 vám poskytuje štruktúru (Patient, Observation, Condition a ďalšie), štandardné kódovacie systémy ako LOINC a ICD-10 a históriu; FHIR backend pridáva vyhľadávanie, súhlas a pôvod.
Potrebujem FHIR server na používanie FHIR?
Potrebujete miesto, ktoré ukladá a vyhľadáva FHIR zdroje a vynucuje, kto si ich môže prečítať. Môžete si spustiť open-source FHIR server sami alebo použiť spravovaný, ako je Anpheros; Ako sa Anpheros porovnáva s inými FHIR servermi zvažuje možnosti a FHIR vs. vlastná lekárska databáza pokrýva vytvorenie vlastného schémy.
Ako ukladám krvný tlak vo FHIR?
Ako jeden Observation s kódom LOINC 85354-9 a dvoma component záznamami: systolický 8480-6 a diastolický 8462-4, každý s valueQuantity v mm[Hg].
Môžem zmeniť uložený zdroj?
Áno, s PUT a If-Match. Každá zmena vytvorí novú verziu; skoršie verzie zostávajú čitateľné prostredníctvom _history a Provenance zaznamenáva, kto vykonal každú zmenu. Vymazania sú mäkké a zachovávajú históriu.
Súvisiace
- Platforma FHIR: koncepty, typy zdrojov a operácie
- Kódové systémy FHIR: LOINC, ICD-10, ATC, UCUM
- Ako importovať laboratórne výsledky do záznamu FHIR
- API pre lekárske údaje: zjednodušený pohľad na tie isté údaje cez REST
- Bezplatná databáza a sandbox FHIR
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card