Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Schéma databázy FHIR
Ako ukladať FHIR zdroje: normalizované tabuľky verzus JSON s indexmi vyhľadávania verzus graf, schéma PostgreSQL, na ktorej Anpheros beží (zdroje, história, typové indexy, projekcie) a pravidlá, na ktorých záleží.
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
| Normalised tables | JSON + search indexes | Graph database | |
|---|---|---|---|
| Stores any valid resource unchanged | — | ✓ | ✓ |
| Standard FHIR search on any parameter | ◐ | ✓ | ◐ |
| New fields need a schema migration | ✓ | — | — |
| Easy SQL reporting | ✓ | ◐ | — |
| Used by mainstream FHIR servers | ◐ | ✓ | — |
◐ = possible with extra work. HAPI FHIR and Anpheros both keep the resource as JSON and index search parameters separately.
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
- APIFHIR R4 REST and the simpler /v1 REST API
- Current resourcesOne row per resource: type, id, patient, version, the full FHIR JSON (JSONB)
- Search indexesTyped tables filled on every write: token, string, date, reference, quantity
- HistoryEvery version of every resource, never overwritten
- ProjectionsFlat tables for the common REST views: observations, conditions, medications
- PostgreSQLOne database per environment; sandbox and production are separate
| 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
400namiesto 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_idna 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.
Súvisiace témy
- FHIR vs. vlastná lekárska databáza
- Ako ukladať lekárske záznamy pomocou FHIR R4
- Bezplatná FHIR databáza a sandbox
- Ako sa Anpheros porovnáva s inými FHIR servermi
- FHIR platforma
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card