Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Jak normalizovat zdravotnická data
Návod: přeměňte zdravotnická data z mnoha zdrojů do jedné srovnatelné formy — vyhledávání LOINC, jednotky UCUM, ISO data, referenční rozsahy, žádné duplikáty při opakování a validace proti evropskému laboratornímu profilu.
Normalizace lékařských dat znamená přeměnu hodnot, které přicházejí v mnoha podobách, do jedné srovnatelné formy: stejný kód pro stejný test, stejný systém jednotek, data v jednom formátu, každá hodnota s jejím referenčním rozsahem a jejím zdrojem a žádné duplicity. Tento návod ukazuje, jak to provést předtím, než data dosáhnou záznamu HL7 FHIR R4: vyhledávání kódů LOINC a ATC, používání jednotek UCUM, odmítání nejednoznačných dat, uchovávání rozsahů, vyhýbání se duplicitám při opakování a kontrola výsledku proti evropskému laboratornímu profilu. Každá zobrazená odpověď pochází z Anpheros API.
Proč na tom záleží
Stejný výsledek HbA1c k vám může dorazit jako „HbA1c 6,4 %“, „Hemoglobina glicozilata: 6.4“, „Glycated haemoglobin 46 mmol/mol“ nebo pouze laboratorní kód, kterému rozumí jen jedna laboratoř. Dokud se toto nestane jedním kódem s jednou jednotkou:
- graf HbA1c pacienta v průběhu času zobrazuje tři nesouvisející linie;
- upozornění na „HbA1c nad 6,5 %“ mine dvě z hodnot;
- model umělé inteligence vidí čtyři fakta místo jednoho trendu;
- jiný systém přijímající záznam jej nemůže interpretovat.
Normalizace patří do bodu, kde data vstupují do záznamu, jednou, nikoli do každé aplikace, která je později čte.
Co obsahuje normalizovaná hodnota
| Část | Normalizovaná forma | Příklad |
|---|---|---|
| Co bylo měřeno | kód ze standardního systému | LOINC 4548-4 (HbA1c), RxNorm 6809 (metformin), ICD-10 E11 (diabetes mellitus 2. typu) |
| Hodnota | číslo, nebo text pouze v případě, že výsledek není numerický | 6.4 |
| Jednotka | UCUM | %, mg/dL, mm[Hg], kg |
| Kdy | datum a čas ve formátu ISO 8601, s časovým pásmem, pokud je čas důležitý | 2026-10-01T07:30:00Z |
| Normální rozsah | dolní a horní mez, ve stejné jednotce | 4.0–5.6 |
| Zdroj | kdo ji vyprodukoval a z jakého systému | import z labx |
| Identita | něco, co činí opakování rozpoznatelným | klíč pro idempotenci nebo identifikátor zdroje |
Který kódovací systém patří ke kterému typu zdroje je uvedeno v FHIR kódovacích systémech.
Krok 1: Najděte kód
Vyhledejte terminologii platformy podle anglického nebo rumunského názvu, případně podle zkratky:
curl "https://platform.anpheros.com/v1/terminology/loinc?q=hba1c" -H "Authorization: Bearer $KEY"
curl "https://platform.anpheros.com/v1/terminology/loinc?q=hemoglobina%20glicozilata" -H "Authorization: Bearer $KEY"
Obě možnosti vrátí stejný koncept:
{"data": [{"system": "http://loinc.org", "code": "4548-4", "display": "Hemoglobin A1c/Hemoglobin.total in Blood",
"display_ro": "Hemoglobină glicozilată (HbA1c)", "category": "laboratory", "unit": "%"}], "total": 1}
Pro léčivé přípravky vyhledá Anpheros Search látku podle názvu nebo značky a poskytne její RxNorm kód složky a čísla produktů EMA:
curl "https://platform.anpheros.com/v1/search?q=metformin&type=treatment" -H "Authorization: Bearer $KEY"
Pole unit je jednotka, kterou LOINC pro daný test očekává. Použijte jej ke kontrole toho, co jste obdrželi. Sestavte mapování z vlastních názvů každého zdroje na kódy jednou pro každý zdroj a uchovávejte jej ve své integraci. Nehádejte v době zápisu: pokud je název nejednoznačný a nic ve zdroji jej neupřesňuje, ponechte jej nemapovaný a zeptejte se zdroje. Jak importovat laboratorní výsledky do záznamu FHIR ukazuje, jak jsou nemapované laboratorní markery uchovávány a hlášeny.
Krok 2: Zápis pomocí kódů, jednotek a rozsahů
curl -X POST "https://platform.anpheros.com/v1/patients/$PID/observations" -H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" -H "Idempotency-Key: lab-77-hba1c" -d '{
"code": "4548-4", "category": "laboratory",
"value": 6.4, "unit": "%", "effective_at": "2026-10-01T07:30:00Z",
"reference_range": {"low": 4.0, "high": 5.6},
"author_type": "import"
}'
{"id": "3296315c-…", "code": "4548-4", "system": "http://loinc.org", "display": "Hemoglobin A1c/Hemoglobin.total in Blood",
"category": "laboratory", "effective_at": "2026-10-01T07:30:00Z", "value": 6.4, "unit": "%",
"reference_range": {"low": 4.0, "high": 5.6}, "status": "final", "fhir": "Observation/3296315c-…"}
Když odešlete pouze kód, platforma doplní standardní název LOINC, a to jak na REST API, tak na FHIR API (/fhir/R4), takže každá aplikace čte stejný display. display, který odešlete sami, zůstane tak, jak je.
Zachovejte také původní znění. Pro laboratorní zprávu drží code.text na FHIR Observation název laboratoře ("Hemoglobina glicozilata (HbA1c)") vedle kódování LOINC. Pacient stále rozpozná svou papírovou zprávu a nic se neztratí, pokud by se mapování někdy zpochybnilo.
Krok 3: Jednotky
Používejte kódy UCUM: mg/dL, mmol/L, %, mm[Hg], kg, cm, /min, Cel. Většině chyb zabrání dvě pravidla:
- Neimprovizujte při převodu. Pokud laboratoř hlásí glukózu v
mmol/La vaše aplikace zobrazujemg/dL, ukládejte to, co laboratoř změřila, a převádějte až při zobrazování. Uložená hodnota zůstává sledovatelná k původnímu hlášení. - Zkontrolujte jednotku oproti kódu. Kódy LOINC jsou specifické: HbA1c v
%je4548-4, zatímco HbA1c vmmol/molmá jiný kód LOINC. Hodnota, jejíž jednotka neodpovídá očekávané jednotce kódu, je chybou mapování, nikoli problémem s převodem.
Anpheros jednotky za vás nepřevádí; ukládá jednotku, kterou odešlete.
Krok 4: Datumy
Před zápisem převedete datumy do formátu ISO 8601 s použitím známého formátu zdroje. 01.10.2026 je 1. říjen v Rumunsku a mnoha evropských zemích, ale 10/01/2026 je 1. říjen pouze ve Spojených státech. API odmítá cokoliv, co není ve formátu ISO, místo aby se pokoušelo hádat:
{"error": {"type": "invalid", "message": "Input should be a valid datetime or date, invalid character in year (at effective_at)", "field": "effective_at"}}
Výjimkou je konektor pro laboratoře: přijímá DD.MM.YYYY a DD/MM/YYYY, protože ví, že čte evropskou zprávu.
U měření, kde záleží na denní době (krevní tlak, glukóza, dávky léků), odešlete čas s jeho časovým pásmem. Hodnota naměřená ve 23:30 v Bukurešti je v UTC předchozího dne a pacient očekává, že bude zaznamenána ve den, kdy byla provedena.
Krok 5: žádné duplicity
Duplicity vznikají při opakovaných pokusech, při odeslání stejné zprávy dvakrát a při příchodu stejné hodnoty dvěma cestami.
- Opakované pokusy: odešlete
Idempotency-Key, který identifikuje hodnotu ve zdroji, například ID zprávy a test. Opětovné odeslání stejného požadavku se stejným klíčem vrátí první odpověď a nic nového neuloží. SDK přidávají ke každému vytvoření jednu. - Stejná zpráva dvakrát: konektor laboratoře sestaví stabilní identifikátor na řádek ze zprávy, kódu, data a hodnoty a přeskočí již importované řádky.
- Dvě cesty: uložte vlastní ID zdrojového systému pomocí
X-Anpheros-Origin-Id(nebo videntifierna FHIR zdrojích) a vyhledejte jej před zápisem hodnot, které se mohou vrátit jinou cestou.
Krok 6: Kontrola proti profilu
Pro laboratorní výsledky se před jejich použitím zeptejte platformy, jak se daný zdroj shoduje s profilem pro laboratorní zprávy HL7 Europe:
curl -X POST "https://platform.anpheros.com/fhir/R4/Observation/\$validate?profile=eu-lab" -H "Authorization: Bearer $KEY" \
-H "Content-Type: application/fhir+json" -d '{
"resourceType": "Observation", "status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "laboratory"}]}],
"code": {"text": "HbA1c"}, "subject": {"reference": "Patient/'$PID'"},
"valueQuantity": {"value": 6.4, "unit": "%"}
}'
Tento nenormalizovaný výsledek získá přesný seznam:
{"resourceType": "OperationOutcome", "issue": [
{"severity": "error", "code": "invalid", "diagnostics": "Observation.code must carry a LOINC coding.", "expression": ["Observation.code"]},
{"severity": "error", "code": "required", "diagnostics": "Observation.effective[x] is required.", "expression": ["Observation.effective"]},
{"severity": "warning", "code": "business-rule", "diagnostics": "valueQuantity should carry a UCUM system and code.", "expression": ["Observation.valueQuantity"]},
{"severity": "warning", "code": "informational", "diagnostics": "No referenceRange: interpretation will need the laboratory's ranges.", "expression": ["Observation.referenceRange"]},
{"severity": "information", "code": "informational", "diagnostics": "No performer (laboratory) recorded.", "expression": ["Observation.performer"]},
{"severity": "information", "code": "informational", "diagnostics": "No issued time (when the laboratory released the result).", "expression": ["Observation.issued"]}]}
Každý problém odpovídá jednomu z výše uvedených kroků. Spusťte $validate ve vašich integračních testech s reálnými vzorky z každého zdroje.
Krok 7: uchování zdroje
Normalizace mění způsob, jakým je hodnota zapsána, nikoli odkud pochází. Při každém zápisu odešlete author_type (device, import, practitioner, patient) a X-Anpheros-Source-System. To umožňuje lékaři, auditorovi nebo modelu AI odlišit laboratorní výsledek od hodnoty zadané doma. Viz Vysvětlení původu lékařských dat.
Kontrolní seznam
- [ ] Každý zdroj má mapování svých názvů na LOINC / ATC / ICD-10, uchovávané ve vaší integraci
- [ ] Nejednoznačné názvy zůstávají nemapované a jsou hlášeny, nikdy se nehádají
- [ ] Jednotky UCUM, odpovídající kódu; žádná tichá konverze
- [ ] Data ve formátu ISO 8601, s časovými zónami tam, kde na čase záleží
- [ ] Referenční rozsahy uchované s laboratorními hodnotami
- [ ] Původní znění zachováno (
code.text) - [ ] Idempotentní klíče nebo zdrojové ID při každém zápisu
- [ ]
author_typea zdrojový systém při každém zápisu - [ ]
$validatev testech pro laboratorní výsledky
Často kladené dotazy
Co je normalizace lékařských dat?
Převod zdravotnických dat z různých zdrojů do jedné standardní formy: sdílené kódy (LOINC pro testy a měření, ICD-10 pro diagnózy, ATC pro léky), jednotky UCUM, data ISO, referenční rozsahy a zaznamenaný zdroj, aby bylo možné porovnávat, kombinovat a vyměňovat hodnoty z různých systémů.
Mám převést všechny hodnoty na jednu jednotku?
Uchovávejte jednotku, ve které zdroj měřil, pokud je to platná jednotka UCUM odpovídající kódu, a konvertujte ji při zobrazování nebo analýze. Tím zůstává každá uložená hodnota dohledatelná ke svému původnímu hlášení.
Může být normalizace plně automatická?
Většinou ano. Kódy ve zdroji, známé názvy a dobře formátované jednotky lze mapovat automaticky. Nejednoznačné názvy a neznámé lokální kódy vyžadují lidské rozhodnutí jednou pro každý zdroj, poté je mapování automatické.
Související
- Kódové systémy FHIR
- Jak importovat laboratorní výsledky do záznamu FHIR
- Vysvětlení původu lékařských dat
- Interoperabilita zdravotnických dat
- API pro lékařská data
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card