# Schéma databázy FHIR

> Ako ukladať FHIR zdroje: normalizované tabuľky verzus JSON s indexami vyhľadávania verzus graf, schéma PostgreSQL, na ktorom Anpheros beží (zdroje, história, typované indexy, projekcie) a pravidlá, na ktorých záleží.

Source: https://developers.anpheros.com/sk/guides/fhir-database-schema

**Databáza FHIR ukladá HL7 FHIR zdroje tak, aby ich bolo možné čítať, vyhľadávať a verzovať prostredníctvom FHIR API; najbežnejšie schéma udržiava každý zdroj ako JSON a vypĺňa samostatné indexové tabuľky pre vyhľadávacie parametre, namiesto rozširovania každého prvku naprieč normalizovanými relačnými tabuľkami.** Táto stránka vysvetľuje tri bežné návrhy, schému, na ktorej Anpheros beží v PostgreSQL, a kedy by ste si nemali vytvárať vlastnú.

## Tri spôsoby ukladania FHIR

<!-- visual:schema-compare -->

Zdroje FHIR sú komplexné, voliteľné a rozšíriteľné: samotné Observation má desiatky prvkov, typy s voľbou (`value[x]`), opakujúce sa kódovania a rozšírenia. Normalizácia do relačných stĺpcov znamená migráciu vždy, keď profil pridá pole. Ukladanie zdroja ako JSON uchováva čokoľvek platné nezmenené; indexové tabuľky umožňujú vyhľadávanie.

## Schéma Anpheros

<!-- visual:schema-stack -->

| Tabuľka | Jeden riadok pre | Kľúčové stĺpce |
|---|---|---|
| `fhir_resources` | aktuálna verzia zdroja | `resource_type`, `id`, `patient_id`, `version`, `json` (celý zdroj), `last_updated`, `deleted`, plus stĺpce pre provenance |
| `fhir_history` | každá verzia, ktorá kedy existovala | `resource_type`, `id`, `version`, `json`, `last_updated` |
| `idx_token` | kódovaná alebo identifikačná hodnota pre vyhľadávanie | system, code — pre `code`, `category`, `identifier`, `status` |
| `idx_string` | textová hodnota pre vyhľadávanie | normalizovaný text — pre mená a voľný text |
| `idx_date` | dátumová hodnota pre vyhľadávanie | začiatok a koniec rozsahu — pre `date`, `onset-date`, `birthdate` |
| `idx_reference` | referenčná hodnota pre vyhľadávanie | cieľový typ a id — pre `patient`, `subject`, `encounter` |
| `idx_quantity` | hodnota typu quantity pre vyhľadávanie | value, system, unit — pre `value-quantity` |
| `proj_observations`, `proj_conditions`, `proj_medications` | zdroj, zjednodušený | stĺpce, na základe ktorých filtruje jednoduché REST API |

Pri každom zápise platforma validuje zdroj, zapíše novú verziu do `fhir_resources` a `fhir_history`, nahradí jeho indexové riadky a projekcie a zaznamená Provenance. Vyhľadávanie ako `Observation?patient=…&code=http://loinc.org|4548-4&date=ge2026-01-01` sa stane spojením (joins) na `idx_reference`, `idx_token` a `idx_date`; výsledok vráti uložený JSON tak, ako bol zapísaný.

## Dôležité pravidlá návrhu

- **Indexujte iba deklarované vyhľadávacie parametre** a odmietnite neznáme s `400` namiesto ich tichého ignorovania.
- **Nikdy neaktualizujte na mieste bez histórie**: opravy musia zachovať to, čo bolo známe predtým.
- **Mäkké odstránenie**: odstránený zdroj zmizne z čítaní a vyhľadávaní, ale jeho verzie zostanú na účely auditu.
- **Stĺpec pacientskej priehradky**: ukladanie `patient_id` na každý zdroj umožňuje lacné `$everything`, filtre súhlasu a izoláciu na pacienta.
- **Validujte pred uložením**: neplatný JSON v úložisku neskôr poškodí každého čitateľa.

## Často kladené otázky

### Aká je najlepšia databáza pre FHIR?
Väčšina produkčných FHIR serverov používa relačnú databázu, napríklad PostgreSQL, pričom zdroje sú uložené ako JSON (JSONB) a vyhľadávacie parametre sú indexované v samostatných tabuľkách. Kombinuje to flexibilné ukladanie s rýchlym, štandardným vyhľadávaním.

### Mám normalizovať FHIR zdroje do relačných tabuliek?
Zvyčajne nie pre primárne úložisko. Normalizované tabuľky sú vhodné na reportovanie; uchovávajte ich ako projekcie vytvorené z uložených zdrojov, ako to robí Anpheros pre svoje jednoduchšie REST API.

### Ako HAPI FHIR ukladá zdroje?
JPA server HAPI FHIR tiež ukladá každú verziu zdroja ako serializovaný JSON a uchováva vyhľadávacie parametre v samostatných indexových tabuľkách. Dizajn Anpheros sa riadi rovnakým princípom.

### Musím si sám vytvoriť FHIR databázu?
Iba ak potrebujete plnú kontrolu nad profilmi a typmi zdrojov. V opačnom prípade vám spravovaná FHIR platforma poskytne úložisko, vyhľadávanie, históriu, súhlas a audit bez nutnosti spúšťania schémy.

<!-- visual:cta-schema -->

## Súvisiace témy

- [FHIR vs. vlastná lekárska databáza](https://developers.anpheros.com/sk/guides/fhir-vs-custom-database)
- [Ako ukladať lekárske záznamy pomocou FHIR R4](https://developers.anpheros.com/sk/guides/store-medical-records-fhir)
- [Bezplatná FHIR databáza a sandbox](https://developers.anpheros.com/sk/guides/free-fhir-database)
- [Ako sa Anpheros porovnáva s inými FHIR servermi](https://developers.anpheros.com/sk/guides/fhir-server-comparison)
- [FHIR platforma](https://developers.anpheros.com/sk/guides/fhir)
