# Ako ukladať lekárske záznamy pomocou FHIR R4

> Tutoriál: vytvorte Pacienta, záznam o krvnom tlaku a Stav, použite transakciu, vyhľadávajte, aktualizujte s históriou a čítajte pôvodné údaje — každý požiadavok s curl a skutočnou odpoveďou, na bezplatnom sandboxe.

Source: https://developers.anpheros.com/sk/guides/store-medical-records-fhir

**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](https://developers.anpheros.com/sk/guides/fhir) 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](https://developers.anpheros.com/sk/guides/fhir) 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](https://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.

```bash
export BASE=https://platform.anpheros.com/fhir/R4
export KEY=sk_test_…
```

## Krok 1: Vytvorenie pacienta

```bash
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:

```json
{"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.

```bash
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.

```bash
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-9` znamená „panel krvného tlaku“ v každom FHIR systéme; voľný text „BP“ nie. Kódy vyhľadajte pomocou `GET /v1/terminology/loinc?q=blood pressure` ([FHIR kódové systémy](https://developers.anpheros.com/sk/guides/fhir-code-systems)).
- **UCUM jednotky** (`mm[Hg]`, `kg`, `mg/dL`) v `valueQuantity.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](https://developers.anpheros.com/sk/guides/import-lab-results-fhir).

## Krok 3: Záznam diagnózy ako Stav (Condition)

```bash
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í:

```bash
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

```bash
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:

```bash
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:

```bash
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:

```bash
curl "$BASE/Provenance?target=Observation/$OBS" -H "Authorization: Bearer $KEY"
```

```json
{"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

```bash
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](https://developers.anpheros.com/sk/guides/fhir)).

## 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](https://developers.anpheros.com/sk/guides/medical-data-api) a [SDK](https://developers.anpheros.com/sk/guides/sdks).

## Č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](https://developers.anpheros.com/sk/guides/fhir-server-comparison) zvažuje možnosti a [FHIR vs. vlastná lekárska databáza](https://developers.anpheros.com/sk/guides/fhir-vs-custom-database) 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](https://developers.anpheros.com/sk/guides/fhir): koncepty, typy zdrojov a operácie
- [Kódové systémy FHIR](https://developers.anpheros.com/sk/guides/fhir-code-systems): LOINC, ICD-10, ATC, UCUM
- [Ako importovať laboratórne výsledky do záznamu FHIR](https://developers.anpheros.com/sk/guides/import-lab-results-fhir)
- [API pre lekárske údaje](https://developers.anpheros.com/sk/guides/medical-data-api): zjednodušený pohľad na tie isté údaje cez REST
- [Bezplatná databáza a sandbox FHIR](https://developers.anpheros.com/sk/guides/free-fhir-database)
