2 300 let úsilí lidstva
František Hrdina, M.Sc. · CogniTrust
Zdravotnická data si mezi sebou předávají systémy, které je samy nečtou – jen je přeposílají a zobrazují. Aby jim rozuměly, musí mít každý pojem definici, kterou lze strojově ověřit. Tento text vede od problému (stát má pro tentýž údaj nesourodé kódy) přes historii definic (Aristotelés, Frege) k deskripční logice a SNOMED CT a končí tím, jak význam přenést standardem FHIR bez ztráty.
Průvodní příklad je radiologický: nález spondylodiscitidy z veřejného mezinárodního datasetu PARROT a nález pneumotoraxu s projektilem, který máme zapsaný v deskripční logice.
| kód | registr poskytovatelů – obor péče | registr zdravotnických pracovníků – specializace |
|---|---|---|
| L47 | pediatrie | maxilofaciální chirurgie |
| L48 | – | pediatrie |
| N30 | maxilofaciální chirurgie | – |
Oba jsou kmenové registry ministerstva zdravotnictví, oba používají řadu L##. Sdílejí 55 kódů, 143 zná jen registr poskytovatelů, 185 jen registr pracovníků.
Systém, který obor z registru poskytovatelů dohledá v číselníku registru pracovníků, zobrazí pediatrovi „maxilofaciální chirurgie“.
Žádná chyba, žádné varování. Kód je platný, formát sedí, validace projde.
Pro odbornost lékaře existuje v ČR 6 nekompatibilních číselníků (ÚZIS, SÚKL, 4× ministerstvo zdravotnictví), žádný publikovaný převodník.
Kmenový registr poskytovatelů a kmenový registr zdravotnických pracovníků spravuje totéž ministerstvo. Oba kódují odbornost řadou L##, a přesto kód L47 znamená v prvním pediatrii a ve druhém maxilofaciální chirurgii. Pediatrie je ve druhém registru L48, maxilofaciální chirurgie v prvním N30.
Registry sdílejí 55 kódů, 143 zná jen registr poskytovatelů a 185 jen registr pracovníků. Z 55 společných nese 8 rozdílný název. Systém, který kód z jednoho registru dohledá v číselníku druhého, zobrazí nesmysl – a žádná kontrola neselže, protože kód je formálně platný.
Pro odbornost lékaře existuje v ČR šest nekompatibilních číselníků (ÚZIS, SÚKL, čtyři na ministerstvu) a žádný zveřejněný převodník. Měřeno nad produkčními číselníky 20. 8. 2026.
| obor | SÚKL (preskripční omezení) | registr zdravotnických pracovníků (základní kmen) |
|---|---|---|
| anesteziologie | ANS | ANE |
| praktické lékařství | PRL | VPL |
| oftalmologie | OPH | OFT |
| ORL | ORL | OTO |
| urologie | URN | URO |
Devět kódů je bajtově shodných (DER, GYN, CHI, INT…), 32 ze 41 kódů SÚKL druhý číselník nezná.
Nejde o dva zápisy téhož. Jeden kód říká, kdo smí lék předepsat, druhý, jakou vzdělávací dráhu lékař prošel. Shoda tvaru svádí k převodu, který nikde hlasitě neselže.
SÚKL (číselník preskripčních omezení) a registr zdravotnických pracovníků (základní kmen) používají trojpísmenné zkratky oborů. Devět zkratek je shodných, 32 ze 41 kódů SÚKL druhý číselník nezná a u pěti oborů se zkratky těsně míjejí: anesteziologie ANS × ANE, praktické lékařství PRL × VPL.
Podstatnější je, že nejde o dva zápisy téhož pojmu. Preskripční omezení říká, kdo smí lék předepsat; základní kmen popisuje vzdělávací dráhu. Převodní tabulka postavená na shodě zkratek bude u devíti kódů „fungovat“ a u ostatních tiše lhát. Skoro-shoda je nebezpečnější než zjevný rozdíl.
● rozhraní ● operace ● datový typ
tvarů adresy
Adresa = ulice, město, PSČ. Kolik definic je potřeba? Jedna.
Až vznikne další služba, bude jich 40.
Cena převodníků: Kraj Vysočina platí za můstek pro 5 nemocnic 89,9 mil. Kč na 15 let, změny rozhraní o 29 % dražší než provoz. Přepočet na 200 nemocnic ČR: ≈ 3,6 mld. Kč.
Graf zobrazuje všechna státní zdravotnická rozhraní, pro která máme vygenerované klienty: každé rozhraní (oranžově) s operacemi (zeleně) a datovými typy (modře); velikost typu odpovídá tomu, kolikrát se používá. Graf obsahuje 27 služeb, 858 metod a 2 509 datových typů, které tvoří 18 nepropojených ostrovů – Sdílený zdravotní záznam (169 operací), eReg ÚZIS, vakcinační modul, TermX, EZCA2, rozhraní SÚKL a další. Typy se znovu používají jen uvnitř jedné služby (nejsdílenější typ 81×, sdílených typů celkem 737); napříč službami je sdílení prakticky nulové, i když rozhraní popisují tytéž věci. 51 metod navíc nemá typovaný výstup vůbec.
Nejnázornější důsledek je adresa: ve státních rozhraních existuje 39 samostatných tvarů adresy a 43 různých popisů pacienta. Každá nová služba si adresu nadefinuje znovu – až vznikne další, bude jich 40. To je opak sémantické interoperability: stejný pojem se definuje znovu, pokaždé jinak a bez vazby na ostatní. Interaktivní graf je veřejně na dasta4.cz/doc/models/universe.
Jen kmenový registr pacientů má 12 různých popisů osoby se jménem a příjmením a 3 popisy adresy; tentýž popis adresy existuje nezávisle ve třech kmenových registrech a může se kdykoli rozejít. FHIR má pro adresu jediný datový typ Address, DASTA 4 jediný adresní typ. Měřeno 7. 9. 2026 nad 31 státními rozhraními; počty jsou spodní hranice.
Každý další tvar znamená převodník a každý převodník něco stojí. Kraj Vysočina platí za překladový můstek pro 5 nemocnic 89,9 mil. Kč bez DPH na 15 let (zakázka Z2025-043536); údržba změn rozhraní stojí o 29 % víc než samotný provoz. Lineární přepočet na 200 nemocnic dává přibližně 3,6 mld. Kč za 15 let, z toho asi 87 mil. Kč ročně jen za dorovnávání změn. Odhad nezahrnuje ambulance.
Odkazy: Interaktivní graf státních rozhraní · FHIR datový typ Address
Registr smluv – zakázka Z2025-043536 (profil zadavatele): Nemocnice Jihlava dílo, servis · Havlíčkův Brod dílo, servis · Nové Město na Moravě dílo, servis · Pelhřimov dílo, servis · Třebíč dílo, servis
EU Health Data API (FHIR R4)
tvar adresy – Address,
používaný po celém světě
Až vznikne nová služba, použije tu samou definici adresy.
ElementPatient, Practitioner, Organization, Encounter, Observation.dasta4.cz/doc/models/universe
Stejný pohled na evropské FHIR rozhraní (EU Health Data API, FHIR R4) ukazuje opačný obraz: 72 metod a 482 typů tvoří jedno jádro, na které se napojují všechny operace. Dole jsou společné datové typy (Element je použit 248×), nad nimi několik resources, na které odkazují všechny ostatní: Patient, Practitioner, Organization, Encounter, Observation. Místo rozptýlených hvězdic vzniká pár velkých uzlů, které sdílí všichni.
Adresa má ve FHIRu jediný datový typ Address, používaný po celém světě; až vznikne nová služba, použije tu samou definici adresy. Totéž platí pro pacienta a pozorování: pojem je definovaný jednou a všechny operace na něj ukazují. To je strukturní základ, na kterém se sémantická interoperabilita dá stavět.
Odkazy: Interaktivní graf FHIR · FHIR R4 – přehled resources · FHIR datový typ Address
Připomenutí: L47 = pediatrie v registru poskytovatelů, maxilofaciální chirurgie v registru zdravotnických pracovníků.
| úroveň (HIMSS) | otázka | L47 |
|---|---|---|
| základní | Dorazí data z A do B? | ✔ kód L47 dorazí |
| strukturní | Přečte B formát – pole, typy, kódy? | ✔ L47 je platný kód, validace projde |
| sémantická | Rozumí B datům stejně jako A? | ✘ z pediatra je maxilofaciální chirurg |
| organizační | Jsou pravidla, odpovědnost a procesy sladěné? | – |
Bez sémantické úrovně je strukturní úspěch nebezpečnější než selhání: data projdou validací, uloží se, zobrazí se – a znamenají něco jiného.
HIMSS rozlišuje čtyři úrovně interoperability. Základní: data dorazí. Strukturní: příjemce přečte formát – pole, datové typy, kódy. Sémantická: příjemce datům rozumí stejně jako odesílatel. Organizační: sladěná pravidla, odpovědnost a procesy.
Případ L47 ze slajdu 2: tentýž kód znamená v registru poskytovatelů pediatrii a v registru zdravotnických pracovníků maxilofaciální chirurgii. Splňuje první dvě úrovně a selhává na třetí. Proto je nebezpečný: validátor kontroluje tvar, ne význam, takže data projdou, uloží se a zobrazí – a znamenají něco jiného. Sémantickou úroveň nelze ověřit, dokud pojem nemá definici, kterou umí vyhodnotit stroj.
„Když praktikovi začne chodit dvacet nebo třicet zpráv denně, není reálné, aby je všechny důkladně četl. A právě mezi nimi může být několik skutečně důležitých. Navíc neexistuje jednotná forma předávání informací.“
MUDr. Pavel Lindovský, MBA, praktický lékař, člen představenstva ČLK
eTempus Medicorum: „Lékaři dlouho nepřemýšleli o tom, že jsou součástí trhu“
Zprávy dnes dorazí elektronicky a rychle. Pro systém lékaře jsou to ale jen texty – nepozná, která z nich je důležitá.
kdyby systém zprávě rozuměl, mohl by sám
vytáhnout nahoru zprávu s novou diagnózou nebo patologickým výsledkem
porovnat výsledek s předchozím a upozornit na změnu
zapsat diagnózu, lék či alergii do karty pacienta bez přepisování
rutinní zprávy bez nového nálezu jen založit
Doručení zprávy je vyřešené. Nevyřešené je, aby jí rozuměl i počítač – to je sémantická interoperabilita.
MUDr. Pavel Lindovský, praktický lékař a člen představenstva České lékařské komory, popisuje v rozhovoru pro eTempus Medicorum, co digitalizace dnes znamená v ambulanci: „Elektronizace není budována primárně proto, aby šetřila čas lékařům. Některé nemocnice dnes sice umějí posílat zprávy elektronicky téměř okamžitě, ale když praktikovi začne chodit dvacet nebo třicet zpráv denně, není reálné, aby je všechny důkladně četl. A právě mezi nimi může být několik skutečně důležitých. Navíc neexistuje jednotná forma předávání informací. Některé nemocnice budují své informační systémy desítky let a systémy mezi sebou často nejsou kompatibilní.“
To je přesně hranice mezi strukturní a sémantickou interoperabilitou z předchozího slajdu. Zpráva dorazí a systém ji zobrazí – ale protože nerozumí jejímu obsahu, nedokáže lékaři pomoci s tím, co je na ní podstatné. Třídit, porovnávat a přenášet údaje do karty může jen systém, pro který má „nová diagnóza“, „patologický výsledek“ nebo „alergie“ strojově vyhodnotitelný význam.
Odkazy: Lékaři dlouho nepřemýšleli o tom, že jsou součástí trhu (eTempus Medicorum, ČLK)
definice = genus proximum + differentia specifica
klasický příklad
člověk = živočich, který je rozumný
radiologický příklad
spondylodiscitida = zánět, jehož místem je meziobratlová ploténka a přilehlá obratlová těla
Rod říká, kam věc patří. Rozlišující znak říká, čím se liší od sourozenců. Každý z nás takhle definuje denně – jen to nepovažujeme za logiku.
Aristotelova definice má dvě části: nejbližší rod (genus proximum) říká, kam věc patří, druhový rozdíl (differentia specifica) ji odliší od ostatních členů rodu. Člověk je živočich (rod), který je rozumný (rozdíl).
Radiologicky: spondylodiscitida je zánět (rod), jehož místem je meziobratlová ploténka a přilehlá obratlová těla (rozdíl). Bez rodu nevíme, co věc je; bez rozdílu ji nelze odlišit od ostatních zánětů. Stejnou dvojici používá SNOMED CT o 2 300 let později.
Odkazy: Genus–differentia definition
Obrázek: Aristotelés – busta, Palazzo Altemps, podle Lýsippa, volné dílo, Wikimedia Commons.
Všichni lidé jsou smrtelní.
Sókratés je člověk.
Tedy Sókratés je smrtelný.
Modus ponens: platí-li A → B a platí A, platí B.
A → B, A ⊢ B
totéž řečí pojmů, jak to odvodí stroj
pojem člověk je podřazen pojmu smrtelný
Sókratés patří pod pojem člověk
⇒ Sókratés patří pod pojem smrtelný
Člověk ⊑ Smrtelný
Sókratés : Člověk
⊢ Sókratés : Smrtelný
a radiologicky
každá spondylodiscitida je infekce páteře
nález #625 je spondylodiscitida
⇒ nález #625 je infekce páteře
Spondylodiscitida ⊑ InfekcePáteře
nález₆₂₅ : Spondylodiscitida
⊢ nález₆₂₅ : InfekcePáteře
| dedukce | z obecného na konkrétní; pravdivé premisy zaručují pravdivý závěr | tohle dělá reasoner – program, který z definic odvozuje |
|---|---|---|
| indukce | z mnoha případů na pravidlo; závěr jen pravděpodobný | statistika, strojové učení |
| abdukce | z nálezu na nejlepší vysvětlení | diferenciální diagnóza |
Sylogismus z Aristotelových Analytik: všichni lidé jsou smrtelní, Sókratés je člověk, tedy Sókratés je smrtelný. Obecné pravidlo modus ponens: platí-li „A implikuje B“ a platí A, platí B.
V deskripční logice se totéž zapíše jako podřazenost pojmů: pojem člověk je podřazen pojmu smrtelný a Sókratés patří pod pojem člověk, z čehož plyne, že patří i pod pojem smrtelný. Totéž s nálezem: spondylodiscitida je infekce páteře, nález #625 je spondylodiscitida, tedy nález #625 je infekce páteře – i když slovo „infekce“ v něm není.
Tři druhy usuzování: dedukce vede z pravdivých premis vždy k pravdivému závěru (tak pracuje reasoner – program, který z definic odvozuje); indukce zobecňuje z případů a závěr je jen pravděpodobný (statistika, strojové učení); abdukce hledá nejlepší vysvětlení pozorování (diferenciální diagnóza). Jazykové modely usuzují induktivně, proto se jejich výstup ověřuje dedukcí.
A → B, A ⊢ B (modus ponens)
Člověk ⊑ Smrtelný, Sókratés : Člověk ⊢ Sókratés : Smrtelný
Spondylodiscitida ⊑ InfekcePáteře, nález₆₂₅ : Spondylodiscitida ⊢ nález₆₂₅ : InfekcePáteře
C ⊑ D = pojem C je podřazen pojmu D (TBox); a : C = jedinec a je instancí C (ABox); ⊢ = je odvoditelné.
Odkazy: Syllogism · Modus ponens · Abductive reasoning

Každý pojem má jednoho rodiče. V medicíně to neplatí:
tuberkulózní spondylodiscitida je zároveň
Strom nutí vybrat jednu osu. MKN-10 volí původce (A18), jiný systém místo – a každý pak hledá jinde.
Porfyrios (3. stol.) uspořádal Aristotelovy pojmy do stromu: substance → těleso → živé těleso → živočich → člověk; na každé úrovni se dělí podle jednoho rozdílu.
Strom předpokládá jednoho rodiče. V medicíně pojem běžně patří pod několik os naráz: tuberkulózní spondylodiscitida je tuberkulóza (podle původce), infekce páteře (podle místa) i zánět (podle morfologie). Klasifikace založená na stromu musí jednu osu upřednostnit – MKN-10 řadí podle původce – a kdo hledá podle jiné osy, pojem nenajde. Řešením je hierarchie, která vznikne výpočtem z definic a dovolí více rodičů.
Odkazy: Porphyrian tree · Ilustrace: Ramon Llull, Wikimedia Commons (volné dílo)
Horní ontologie rozhoduje o nejvyšších rozlišeních – věc, vlastnost, nebo děj? – a doménové ontologie pod ni věší své pojmy.
| Aristotelés (kategorie) | BFO | DOLCE | v nálezu #625 |
|---|---|---|---|
| podstata | nezávislý kontinuant (materiální entita) | endurant | obratlové tělo, absces |
| kvalita, kvantita, poloha | závislý kontinuant (kvalita) | kvalita | velikost 3 × 3 cm, strana vlevo |
| konání a trpění | okurent (proces) | perdurant | regrese, drenáž |
BFO – Basic Formal Ontology (B. Smith), ISO/IEC 21838-2:2021. Základ biomedicínských ontologií OBO Foundry.
DOLCE (N. Guarino a kol., 2002), ISO/IEC 21838-3:2023. Vychází z jazyka a vnímání.
SNOMED CT má vlastní horní úroveň: 19 hierarchií (klinický nález, tělesná struktura, výkon…), na BFO formálně nenavazuje.
Horní ontologie určuje nejobecnější rozlišení, pod která se věší pojmy všech oborů. Nejrozšířenější jsou BFO (Basic Formal Ontology, B. Smith; ISO/IEC 21838-2:2021), na které staví biomedicínské ontologie OBO Foundry, a DOLCE (N. Guarino a kol., 2002; ISO/IEC 21838-3:2023).
Obě rozlišují věci (BFO: nezávislý kontinuant, DOLCE: endurant), jejich vlastnosti (kvalita) a děje (BFO: okurent, DOLCE: perdurant). V nálezu #625 je absces věc, rozměr 3 × 3 cm a strana vlevo vlastnosti a regrese i drenáž děje. Kdo tyto kategorie smíchá – například zapíše regresi jako vlastnost abscesu bez vztahu k času – nemůže pak porovnat dvě vyšetření. SNOMED CT má vlastní horní úroveň (19 hierarchií) a na BFO formálně nenavazuje.
Begriffsschrift – první úplný formální jazyk logiky.
Pojem je funkce, která objektu přiřadí pravdu, nebo nepravdu:
Spondylodiscitida(x) → pravda / nepravda
Přibývají kvantifikátory:
existuje y: y je místem x a y je ploténka
∃y (místo(x, y) ∧ Ploténka(y))
„existuje něco, co je místem nálezu a je to ploténka“
Poprvé jde definici vyhodnotit: pro konkrétní nález rozhodnout, zda pod pojem spadá. Aristotelova definice se stává výpočtem.
Gottlob Frege v díle Begriffsschrift (1879) vytvořil první úplný formální jazyk logiky – predikátovou logiku. Pojem v ní je funkce, která každému objektu přiřadí pravdu, nebo nepravdu: Spondylodiscitida(x) je pravdivé právě pro ty x, které spondylodiscitidou jsou.
Kvantifikátory ∀ (pro všechna) a ∃ (existuje) umožňují přesně říct, co šipka v obrázku znamená: „existuje y takové, že y je místem nálezu x a y je ploténka“. Definice se tím stává vyhodnotitelnou. Predikátová logika je ale příliš silná: obecně v ní nelze rozhodnout, zda závěr z premis plyne (viz slide o nerozhodnutelnosti).
Spondylodiscitida(x) ↦ pravda / nepravda
∃y (místo(x, y) ∧ Ploténka(y)) ≙ v DL: ∃místo.Ploténka
DL zápis je zkratka predikátové formule s jednou proměnnou – proměnné se v něm nepíšou.
Odkazy: Begriffsschrift
Obrázek: Gottlob Frege – fotografie, autor neznámý, volné dílo, Wikimedia Commons.
Quillian (1968), Minsky (1974): intuitivní grafy a rámce se sloty.
Šipka může znamenat:
Dva systémy nakreslí stejný graf a myslí jiné věci. Totéž jako kód L47: jednou pediatrie, podruhé maxilofaciální chirurgie.
V 60. a 70. letech vznikly první reprezentace znalostí pro počítače: sémantické sítě (Quillian 1968) a rámce se sloty (Minsky 1974). Byly názorné, ale bez formálního významu. W. A. Woods v roce 1975 upozornil (What’s in a link), že šipka „absces —místo→ ploténka“ může znamenat, že každý absces je v ploténce, že některý je, že je tam typicky, nebo že je jen tam.
Dva systémy mohou nakreslit stejný graf a myslet jím různé věci – stejný problém jako kód L47. Deskripční logika vznikla jako odpověď: každá šipka dostala přesně definovaný význam.
Odkazy: Semantic network · Frames (Minsky)
Obrázek: Marvin Minsky – fotografie, Sethwoodworth, CC BY 3.0, Wikimedia Commons.
| stavební kámen | příklad |
|---|---|
| pojem | Absces, Ploténka |
| role | místo, lateralita, vývoj |
| a zároveň ⊓ | absces a zároveň tuberkulózní |
| má ∃ | má místo: ploténka |
| jen ∀ | strana jen vlevo |
| ne ¬ | nemá propagaci epidurálně |
| A ⊓ B (a zároveň) | Absces ⊓ Tuberkulózní |
| ∃ r.C (existuje) | ∃ místo.Ploténka |
| ∀ r.C (jen) | ∀ strana.Vlevo |
| ¬ C (ne) | ¬ ∃ propagace.Epidurální |
Deskripční logika je zkrocená predikátová logika: vyjádří méně, ale všechno, co vyjádří, jde rozhodnout v konečném čase. SNOMED CT používá ℰℒ – bez negace a „jen“, zato náš CogniTrust.Reasoner (2026) klasifikuje celý SNOMED CT na notebooku za 1,5 s.
Deskripční logika (DL) pracuje se třemi stavebními kameny: pojmy (Absces, Ploténka), rolemi (místo, lateralita, vývoj) a konstruktory, kterými se pojmy skládají: ⊓ (a zároveň), ∃ (existuje), ∀ (jen), ¬ (ne). Zápis Absces ⊓ ∃ místo.Ploténka znamená „absces, jehož místem je nějaká ploténka“.
Vývoj: KL-ONE (Brachman, 1985), logika 𝒜ℒ𝒞 (Schmidt-Schauß a Smolka, 1991), standard OWL (W3C, 2004) a logika ℰℒ⁺⁺ (Baader, Brandt, Lutz, 2005). DL je podmnožina predikátové logiky, vybraná tak, aby každá otázka měla odpověď v konečném čase. SNOMED CT používá ℰℒ: nemá negaci ani „jen“, zato náš CogniTrust.Reasoner (2026) klasifikuje celý SNOMED CT (428 571 pojmů, přes 22 milionů odvozených podřazeností) na notebooku za 1,5 s.
Odkazy: Description logic · OWL 2 profily (EL, QL, RL)
| jazyk | co navíc vyjádří (radiologicky) | dá se spočítat? |
|---|---|---|
| ℰℒ – SNOMED CT | „absces v okolí L1/2 a zároveň vlevo“ (∃, ⊓) | polynomiálně |
| 𝒜ℒ𝒞 | „bez epidurálního abscesu“, „jen vlevo“, „absces nebo flegmóna“ (¬, ∀, ⊔) | exponenciálně |
| OWL 2 DL | „právě dvě ložiska“, „část části je část“ | dvojitě exponenciálně |
| predikátová logika (Frege) | „každé ložisko je větší než to samé ložisko minule“ | nerozhodnutelná |
| TIL – Pavel Tichý | „radiolog se domnívá, že jde o spondylodiscitidu“, „klinik očekával absces“ – postoje, možnosti, čas | nerozhodnutelná |
| přirozený jazyk | všechno výše + „nelze vyloučit“, „spíše“, ironie – a víceznačnost | bez formálního významu |
Transparentní intenzionální logika (Pavel Tichý, od 70. let; dnes Marie Duží, VŠB‑TU Ostrava) – česká logika, která se přirozenému jazyku blíží nejvíc: rozliší, co kdo tvrdí, od toho, že to tvrdí.
SNOMED CT volí ℰℒ: nevyjádří „ne“ ani „jen“, zato celý SNOMED CT klasifikuje za 1,5 s. Co je nad hranicí – nejistota, postoje –, nese strukturovaný status a text.
Čím víc logika dokáže vyjádřit, tím dražší je v ní odvozovat. ℰℒ (SNOMED CT) umí „a zároveň“ a „existuje“ a klasifikace je polynomiální. 𝒜ℒ𝒞 přidává negaci, „jen“ a „nebo“ a odvozování je exponenciální. OWL 2 DL přidává počty („právě dvě ložiska“) a skládání rolí a je v nejhorším případě dvojitě exponenciální (Kazakov, 2008). Plná predikátová logika je nerozhodnutelná (Church, Turing, 1936).
Ještě dál jde transparentní intenzionální logika Pavla Tichého (od 70. let; dnes ji rozvíjí Marie Duží na VŠB – TU Ostrava). Je to typovaný λ-kalkul vyšších řádů, který rozliší, co kdo tvrdí, od toho, že to tvrdí: „radiolog se domnívá, že jde o spondylodiscitidu“. Přirozenému jazyku se blíží nejvíc, ale mechanicky rozhodnout ji nelze. Přirozený jazyk sám nemá formální význam vůbec.
Praktický důsledek: co lze spočítat, patří do struktury; nejistota a postoje autora zůstávají ve strukturovaném statusu a v textu.
ℰℒ: ⊤, C ⊓ D, ∃r.C
𝒜ℒ𝒞: navíc ¬C, C ⊔ D, ∀r.C
OWL 2 DL (𝒮ℛ𝒪ℐ𝒬): navíc ≤n r.C, ≥n r.C, r ∘ s ⊑ t, inverzní role, nominály
Odkazy: Description logic – expresivita · OWL 2 profily · Transparent intensional logic
V sále si každý podá ruku s každým. Dvakrát víc lidí = čtyřikrát víc podání. Roste to, ale zvládnutelně.
Každé kolečko navíc = desetkrát víc kombinací. 4 kolečka: 10 000 pokusů, 8 koleček: 100 milionů. Každý prvek navíc práci znásobí.
| počet prvků | polynomiálně (n²) | exponenciálně (2ⁿ) |
|---|---|---|
| 20 | 0,0000004 s | 0,001 s |
| 50 | 0,0000025 s | 13 dní |
| 100 | 0,00001 s | 40 bilionů let – 2 900× stáří vesmíru |
| celý SNOMED CT – naměřeno CogniTrust.Reasoner (2026), 428 571 pojmů | 1,5 s | — |
Dvojitě exponenciální (OWL 2 v nejhorším případě): 5 prvků = 4 s, 6 prvků = 585 let.
Polynomiální růst si lze představit jako podání rukou v sále: každý s každým, dvakrát víc lidí znamená čtyřikrát víc podání. Exponenciální růst je kombinační zámek: každé kolečko navíc znásobí počet kombinací deseti.
Na počítači s miliardou kroků za sekundu trvá 2ⁿ kroků pro 50 prvků 13 dní a pro 100 prvků 40 bilionů let – 2 900× déle, než existuje vesmír. Skutečná klasifikace celého SNOMED CT (428 571 pojmů, přes 22 milionů odvozených podřazeností) trvá v našem CogniTrust.Reasoneru (2026) 1,5 s na notebooku Intel Core i7-1355U (10 jader / 12 vláken, 16 GB RAM). První naivní verze potřebovala 464 s; zrychlení asi 300× přinesly algoritmus (chytřejší párování podmínek) a uspořádání paměti, ne rychlejší jazyk. Dno určuje paměť: asi 100 milionů náhodných čtení z RAM. Dvojitě exponenciální růst 2^(2ⁿ) dá pro 6 prvků 585 let.
Rychlejší počítač exponenciální problém nezachrání: dvakrát rychlejší stroj zvládne u 2ⁿ jen o jeden prvek víc. Čísla popisují tvar růstu v nejhorším případě; skutečné programy bývají chytřejší, tvar křivky ale zůstává.
Odkazy: Time complexity · ELK – reasoner pro EL
Kontrola nálezu, která může „přemýšlet“ navždy, je pro provoz k ničemu. Proto SNOMED CT zvolil ℰℒ: odpověď vždy a rychle.
Cantor (1891): úplný seznam neexistuje
| 1. | 2. | 3. | 4. | … | |
|---|---|---|---|---|---|
| řada 1 | 0 | 1 | 1 | 0 | … |
| řada 2 | 1 | 1 | 0 | 1 | … |
| řada 3 | 0 | 0 | 0 | 1 | … |
| řada 4 | 1 | 0 | 1 | 1 | … |
| nová | 1 | 0 | 1 | 0 | … |
Nová řada vznikne otočením diagonály. Od každé řady v seznamu se liší aspoň na jednom místě – v seznamu tedy není, ať je seznam jakýkoli.
Turing (1936), týž trik: řádky = programy, sloupce = vstupy, políčko = „skončí?“. Kdyby existoval vševědoucí program, který to umí předpovědět, dá se postavit program, který na diagonále udělá opak – tedy opak předpovědi o sobě samém. Spor, takže vševědoucí program neexistuje.
Exponenciální problém je těžký, ale odpověď přijde. Nerozhodnutelný problém je jiná kategorie: prokazatelně neexistuje program, který by na každou otázku daného typu v konečném čase odpověděl ano, nebo ne. Pro predikátovou logiku to dokázali Church a Turing (1936): když závěr z premis plyne, důkaz se najde; když neplyne, hledání může běžet donekonečna a nikdy nevíme, zda počkat déle.
Důkaz stojí na Cantorově diagonálním argumentu (1891). Mějme libovolný seznam nekonečných řad nul a jedniček. Vezmeme n-tou číslici n-té řady (diagonálu) a každou otočíme. Vzniklá řada se od každé řady v seznamu liší aspoň na jednom místě, takže v seznamu není – úplný seznam neexistuje.
Turing použil týž trik na programy: řádky jsou programy, sloupce vstupy, políčko říká, zda program skončí. Kdyby existoval program, který to umí vždy předpovědět, šel by postavit program, který na diagonále udělá opak – tedy opak předpovědi o sobě samém. To je spor. Laická obdoba: „Tato věta je nepravdivá.“ Pro zdravotnictví: kontrola, která může přemýšlet navždy, je v provozu nepoužitelná, proto SNOMED CT používá rozhodnutelnou ℰℒ.
Odkazy: Undecidable problem · Halting problem · Cantor's diagonal argument
Obrázky: Georg Cantor – fotografie, autor neznámý, volné dílo, Wikimedia Commons; Alan Turing – fotografie, Elliott & Fry, volné dílo, Wikimedia Commons.
| je n sudé? | 0 | 1 | 2 | 3 | 4 | 5 | … |
|---|---|---|---|---|---|---|---|
| odpověď | 1 | 0 | 1 | 0 | 1 | 0 | … |
| množina: {0, 2, 4, …} | |||||||
Programů je málo nekonečně na to, aby na každou otázku existoval jeden, který ji rozhodne.
Cantor ukázal, že nekonečna nejsou stejně velká. Přirozených čísel je nekonečně mnoho, ale lze je očíslovat (spočetné nekonečno). Nekonečných řad nul a jedniček je víc – diagonála dokazuje, že je očíslovat nejde (nespočetné nekonečno).
Každý program je konečný text, a proto lze všechny programy očíslovat. Otázka typu ano/ne o přirozených číslech je jednoznačně určena množinou čísel, pro která je odpověď ano. Příklad: „je n sudé?“ dává pro n = 0, 1, 2, 3, 4, 5… odpovědi ano, ne, ano, ne, ano, ne…, tedy řadu 1 0 1 0 1 0… a množinu {0, 2, 4, …}. „Je n prvočíslo?“ dává řadu 0 0 1 1 0 1 0 1… a množinu {2, 3, 5, 7, …}. Platí to i obráceně: každá řada 0/1 je otázka „patří n do této množiny?“, i když ji nejde nijak stručně popsat. Otázek je tedy tolik jako podmnožin přirozených čísel, tj. prvků potenční množiny, a těch je podle Cantora víc než přirozených čísel. Programů je tedy „málo nekonečně“ na to, aby na každou otázku existoval jeden, který ji rozhodne. Nerozhodnutelnost není nedostatek dnešních počítačů, ale důsledek velikosti nekonečen.
Proč lze programy očíslovat. Klíčový krok: všechny konečné řetězce znaků lze efektivně vyjmenovat, tedy přiřadit jim čísla s₀, s₁, s₂, … Pro abecedu {0, 1} stačí řetězce seřadit podle délky a v rámci délky podle binární hodnoty: ε, 0, 1, 00, 01, 10, 11, 000, … (ε je prázdný řetězec). Takové řazení je explicitní bijekce mezi řetězci a přirozenými čísly.
Řetězců délky n je nad abecedou {0, 1} přesně 2n, nad abecedou o k znacích kn. Řetězců délky nejvýše n je 1 + k + k2 + ⋯ + kn. Každý konkrétní řetězec proto má konečné pořadové číslo – nejvýš tento součet pro svou délku.
Bijekce přitom není potřeba. Pro spočetnost stačí zobrazení ℕ → {konečné řetězce}, které pokryje všechny řetězce (surjekce). Program je konečný řetězec, který splňuje syntaktická pravidla jazyka: stačí procházet s₀, s₁, s₂, … a řetězce, které nejsou platným programem, přeskočit. Vznikne posloupnost P₀, P₁, P₂, … obsahující všechny programy.
Celý argument „všechny programy lze očíslovat“ tedy stojí na vyjmenovatelnosti konečných řetězců. Otázky ano/ne tak očíslovat nejde: odpovídají nekonečným řadám 0/1 a pro ty Cantorova diagonála ukázala, že žádný seznam nestačí.
Odkazy: Countable set · Cantor's diagonal argument
| úloha | otázka | radiologicky |
|---|---|---|
| podřazenost | Je každé A zároveň B? | Hledám „infekce páteře“ – najde se i nález zapsaný jako tuberkulózní spondylodiscitida, i když slovo „infekce“ v něm není. |
| splnitelnost | Může A vůbec existovat? | Popis říká „absces vlevo“, závěr „absces vpravo“ → rozpor, dřív než se nález odešle (další slide). |
| zařazení | Pod které pojmy konkrétní nález spadá? | Zánět s místem „ploténka a obratlová těla“ se sám zařadí jako spondylodiscitida, i když ho tak nikdo nenazval. |
Z definic odvodí reasoner tři druhy odpovědí. Podřazenost (subsumpce): je každé A zároveň B? Dotaz na infekce páteře najde i nález zapsaný jako tuberkulózní spondylodiscitida. Splnitelnost: může A vůbec existovat? Nález, který si protiřečí, odhalí dřív, než se odešle. Zařazení (realizace): pod které pojmy konkrétní nález spadá? Zánět s místem ploténka a obratlová těla se sám zařadí jako spondylodiscitida.
Nic z toho nejsou ručně psaná pravidla. Všechno plyne z definic; přidáním pojmu s definicí se hierarchie přepočítá sama.
podřazenost: 𝒦 ⊨ C ⊑ D
splnitelnost: 𝒦 ⊭ C ⊑ ⊥
zařazení (realizace): 𝒦 ⊨ a : C
𝒦 = znalostní báze (definice + fakta), ⊨ = logicky vyplývá.
Odkazy: Description logic – reasoning
nález před podpisem
Popis: … okolní absces vlevo, reziduum cca 3 × 3 cm.
Závěr: … regredující absces vpravo při drenáži.
Člověk to přehlédne – popis a závěr píše jindy, závěr často kopíruje z minula.
Nález = prázdný pojemNález ⊑ ⊥
Pod prázdný pojem nespadá nic na světě. Reasoner tím říká: takový absces nemůže existovat – popis si protiřečí.
jak k tomu reasoner došel – tři kroky, žádné ručně psané pravidlo
| # | co reasoner ví |
|---|---|
| 1 | vlevo a vpravo se vylučují – nic nemůže být zároveň vlevo i vpravo |
| 2 | strana je jen jedna – jedna věc má nejvýš jednu stranu |
| 3 | absces z popisu = absces ze závěru – mluví o témže abscesu |
| ⇒ | strana abscesu by musela být vlevo i vpravo = prázdný pojem = rozpor |
| # | co reasoner ví |
| 1 | Vlevo ⊓ Vpravo ⊑ ⊥ – strany jsou disjunktní |
| 2 | ⊤ ⊑ ≤1 strana – strana je funkční role |
| 3 | absces₁ : ∃ strana.Vlevo absces₁ : ∃ strana.Vpravo |
| ⊢ | absces₁ : ⊥ – nesplnitelné, rozpor |
Žádný falešný poplach: dva abscesy (vlevo a vpravo) jsou dvě věci, každá s jednou stranou – rozpor nevzniká. „Oboustranně“ je vlastní hodnota, ne „vlevo a zároveň vpravo“ (Vlevo ⊓ Vpravo).
Záměna strany je klasická chyba nálezu: v popisu „absces vlevo“, v závěru převzatém z minula „absces vpravo“. Reasoner ji odhalí ze tří obecných znalostí: strany se vylučují (nic nemůže být zároveň vlevo i vpravo), jedna věc má nejvýš jednu stranu (lateralita je funkční role) a popis i závěr mluví o témže abscesu. Strana abscesu by tedy musela být zároveň vlevo i vpravo, a to je prázdný pojem.
Prázdný pojem (v logice se značí ⊥) je pojem, pod který nic nespadá. Když reasoner odvodí, že nález je prázdný pojem, říká, že takový nález nemůže existovat. Falešný poplach nevznikne u dvou abscesů – vlevo a vpravo jsou dva objekty, každý s jednou stranou – a „oboustranně“ je vlastní hodnota. Rozhodující je identita objektů: systém musí vědět, že popis i závěr mluví o témže abscesu. Stejným mechanismem se chytí „vyloučeno“ v popisu proti „potvrzeno“ v závěru.
Vlevo ⊓ Vpravo ⊑ ⊥
⊤ ⊑ ≤1 strana
absces₁ : ∃strana.Vlevo, absces₁ : ∃strana.Vpravo
⊢ absces₁ : ⊥ (báze je nekonzistentní)
Disjunktnost pojmů umí i ℰℒ⁺⁺ (OWL 2 EL); funkční role (≤1) je nad jeho rámec – v OWL 2 DL jako FunctionalObjectProperty.
DL předpokládá, že co není zapsáno, není známo – ne že to neplatí.
| v nálezu | co z toho plyne |
|---|---|
| epidurální prostor nezmíněn | nevíme |
| „bez epidurálního abscesu“ | epidurální absces není |
Databáze obvykle předpokládá opak (uzavřený svět): chybí-li řádek, věc neexistuje. Pro klinická data je to nebezpečná zkratka – chybějící záznam o alergii neznamená „bez alergie“, nepopsaný epidurální prostor neznamená „bez propagace“.
Deskripční logika předpokládá otevřený svět: co není zapsáno, není známo – neznamená to, že to neplatí. Databáze obvykle předpokládají opak (uzavřený svět): chybí-li záznam, věc neexistuje.
Pro klinická data je uzavřený svět nebezpečná zkratka. Chybějící záznam o alergii neznamená „bez alergie“; nepopsaný epidurální prostor neznamená „bez epidurálního abscesu“. Negativní nález musí být zapsán výslovně („bez epidurálního abscesu“), jinak z mlčení nic neplyne.
Odkazy: Open-world assumption
SNOMED CT vznikl z patologické nomenklatury SNOP (1965) přes SNOMED (1975) sloučením SNOMED RT s britskými Read Codes v roce 2002; od roku 2007 ho spravuje mezinárodní organizace IHTSDO, dnes SNOMED International. V naší kopii má 428 571 pojmů (celý strom od kořene), každý s definicí v deskripční logice ℰℒ.
Hierarchii nekreslí člověk, ale počítá ji klasifikátor z definic, a proto pojem může mít víc rodičů. Identifikátor a definice pojmu nezávisí na jazyce; jazykové verze se liší jen popisy (termíny).
Odkazy: SNOMED International · SNOMED CT (Wikipedia)
74400008 |Appendicitis| je přesně:≡ 18526009 |Disorder of appendix| + 128139000 |Inflammatory disorder| : { 363698007 |Finding site| = 66754008 |Appendix structure| , 116676008 |Associated morphology| = 23583003 |Inflammation| }
rod – dva rodiče najednou: onemocnění apendixu a zánětlivé onemocnění
rozlišující znak – místo nálezu a morfologie, každý jako samostatná role
Kruh se uzavřel: přesně Aristotelova definice, jen zapsaná tak, že ji spočítá stroj a mohou ji mít dva rodiče.
Definice apendicitidy v SNOMED CT (zjednodušeně): dva rodiče – onemocnění apendixu a zánětlivé onemocnění – a dvě role: místo nálezu (finding site) = struktura apendixu, přidružená morfologie (associated morphology) = zánět. Rodiče jsou Aristotelův rod, role jsou jeho druhový rozdíl rozdělený do samostatných os.
Zápis na slidu je v SNOMED CT compositional grammar: číslo je identifikátor pojmu, text mezi svislicemi jeho anglický název.
Appendicitis ≡ DisorderOfAppendix ⊓ InflammatoryDisorder ⊓ ∃roleGroup.(∃findingSite.AppendixStructure ⊓ ∃associatedMorphology.Inflammation)
V SNOMED CT compositional grammar se plná definice uvozuje „===“, primitivní „<<<“.
Odkazy: SNOMED CT (Wikipedia)
„Každá X je Y, ale ne každé Y s těmito znaky je X.“ Definice je jen nutná podmínka. Klasifikátor do pojmu nic nezařadí sám.
„X je přesně Y s těmito znaky.“ Definice je nutná i postačující. Všechno, co ji splní, klasifikátor pod pojem zařadí.
Radiologický dopad: nález zapsaný jako zánět s místem ploténkaZánět ⊓ ∃ místo.Ploténka se stane spondylodiscitidou jen tehdy, je-li spondylodiscitida plně definovaná.
Primitivní pojem („je“) má jen nutné podmínky: každá spondylodiscitida je zánět ploténky, ale ne každý zánět ploténky musí být spondylodiscitida. Klasifikátor pod primitivní pojem nic sám nezařadí.
Plně definovaný pojem („je přesně“) má podmínky nutné i postačující: co je zánětem ploténky a obratlových těl, je spondylodiscitida. Klasifikátor pod něj zařadí vše, co definici splní – i nález, který slovo „spondylodiscitida“ nepoužil. Podíl plně definovaných pojmů je proto měřítkem, jak dobře terminologie podporuje vyhledávání podle významu.
primitivní: Spondylodiscitida ⊑ Zánět ⊓ ∃místo.Ploténka
plně definovaný: Spondylodiscitida ≡ Zánět ⊓ ∃místo.Ploténka ⊓ ∃místo.ObratlováTěla
≡ znamená ⊑ oběma směry: každá spondylodiscitida je takový zánět a každý takový zánět je spondylodiscitida.
Klasifikace = z definic všech pojmů spočítat, kdo je čí rodič. Výsledkem je celá hierarchie – u SNOMED CT přes 22 milionů vztahů „je podtypem“ (včetně nepřímých).
Klasifikátor při každé změně odhalí:
Nemocniční systém pak dostane hotový strom – pro pojmenované kódy reasoner nepotřebuje.
Klasifikace znamená spočítat z definic všech pojmů úplnou hierarchii: pro každý pojem všechny jeho rodiče, přímé i nepřímé. U SNOMED CT jde přes 22 milionů vztahů „je podtypem“. Klasifikátor přitom zjistí také dvojice pojmů se stejnou definicí (ekvivalence – v praxi duplicity) a definice, pod které nemůže nic spadat (rozpor).
Autorský proces ve SNOMED CT: expert na terminologii zapisuje stated (uvedenou) definici – nejbližšího primitivního rodiče a atributy s hodnotami. Které atributy smí který druh pojmu mít a jakých hodnot mohou nabývat, určuje concept model (například výkon má metodu a místo výkonu, klinický nález místo nálezu a morfologii). Expert hierarchii nekreslí; spustí klasifikátor, který spočítá inferred (odvozený) pohled – skutečné rodiče pojmu – a ohlásí duplicity a rozpory. Změnu pak zreviduje druhý expert a pojem vyjde ve vydání.
Vydání obsahuje obojí: definice (axiomy) i hotovou odvozenou hierarchii. Nemocniční systém, který pracuje jen s pojmenovanými kódy, proto žádný reasoner nepotřebuje – odpověď „co je pod čím“ už dostal. Reasoner je nutný až u výrazů, které v číselníku nejsou (postkoordinace), a u vlastních definic nad SNOMED CT.
1 · stated – napíše expert na terminologii
MR vyšetření levého kolene ≡ Výkon
⊓ ∃ skupina.( ∃ metoda.MagnetickáRezonance
⊓ ∃ místo.LeváOblastKolene )
LeváOblastKolene ≡ OblastKolene ⊓ ∃ strana.Vlevo
MR vyšetření kolene ≡ Výkon
⊓ ∃ skupina.( ∃ metoda.MagnetickáRezonance
⊓ ∃ místo.OblastKolene )
Jediný rodič, kterého expert zapsal, je výkon. Všech 17 předků spočítal klasifikátor.
2 · inferred – spočítá klasifikátor
Příklad je skutečný pojem SNOMED CT 2471000087103 MR vyšetření levého kolene. Expert na terminologii zapsal (stated) jen tolik: je to výkon, jehož metodou je magnetická rezonance a místem výkonu levá oblast kolene; metoda a místo jsou ve společné skupině rolí, aby se u výkonů s více částmi nemíchaly. Levá oblast kolene (82169009) je definována jako oblast kolene s lateralitou vlevo a MR vyšetření kolene (241641004) jako výkon s metodou MR a místem v oblasti kolene. Všechny tři definice jsou plné (nutné i postačující).
Jediný rodič, kterého expert uvedl, je obecný výkon. Klasifikátor z definic spočítal 17 předků. Přímými rodiči jsou MR vyšetření kolene a MR levé dolní končetiny; nad nimi MR vyšetření dolní končetiny a výkon na koleni, dál výkon na dolní končetině, magnetická rezonance, zobrazení a nakonec výkon. Žádný z těchto vztahů nikdo ručně nezapsal.
Stejně se zařadí výraz, který v číselníku není: „výkon s metodou MR a místem levé koleno“ spadne pod MR vyšetření levého kolene, „výkon s metodou CT a místem levé koleno“ ne – oba případy ověřuje test našeho klasifikátoru. Graf na slidu ukazuje hlavní větve; přerušovaná čára znamená cestu přes další úrovně (například magnetická rezonance → zobrazení → hodnocení → výkon podle metody → výkon).
82169009 ≡ 72696002 ⊓ ∃272741003.7771000
2471000087103 ≡ 71388002 ⊓ ∃roleGroup.(∃260686004.312250003 ⊓ ∃405813007.82169009)
241641004 ≡ 71388002 ⊓ ∃roleGroup.(∃260686004.312250003 ⊓ ∃405813007.72696002)
82169009 ⊑ 72696002 ⊢ 2471000087103 ⊑ 241641004
71388002 výkon · 72696002 oblast kolene · 82169009 levá oblast kolene · 272741003 lateralita · 7771000 vlevo · 260686004 metoda · 312250003 magnetická rezonance · 405813007 místo výkonu – přímé. Závěr plyne z monotonie ∃: užší hodnota role dává užší pojem.
Číselník nemůže mít kód pro „okolní absces vlevo u segmentu L1/2, regredující při drenáži“. Poskládá se z pojmů, které v něm jsou:
Absces :
{ místo nálezu = okolí segmentu L1/2 ,
lateralita = vlevo ,
průběh = regrese }
předkoordinace – jeden kód pro celou větu. Kombinací je nekonečně mnoho, kódů nikdy dost.
postkoordinace – výraz z pojmů a rolí. Klasifikátor ho zařadí stejně jako hotový kód: je to absces, je to nález v bederní páteři.
Předkoordinace znamená jeden kód pro celý výraz. Kombinací lokalizace, strany, průběhu a rozměru je nekonečně mnoho, takže kódů nikdy nebude dost.
Postkoordinace skládá výraz z existujících pojmů a rolí: absces s místem „okolí segmentu L1/2“, lateralitou „vlevo“ a průběhem „regrese“. Klasifikátor s takovým výrazem pracuje stejně jako s hotovým kódem: ví, že jde o absces a o nález v bederní páteři. Je to strojově čitelná obdoba věty, kterou radiolog píše.
Absces ⊓ ∃roleGroup.(∃místo.OkolíSegmentuL1/2 ⊓ ∃strana.Vlevo ⊓ ∃průběh.Regrese)
V SNOMED CT compositional grammar: Absces : { místo = okolí segmentu L1/2, strana = vlevo, průběh = regrese }.
Známá, stacionární tuberkulózní spondylodiscitida v segmentu L1/2 s destrukcí obratlových těl. Okolní absces vlevo regreduje při zavedené perkutánní drenáži z dorzálního přístupu, reziduum cca 3 × 3 cm.
Spondylodiscitida ⊓ ∃ původce.M. tbc
⊓ ∃ místo.L1/2 ⊓ ∃ průběh.Stacionární
⊓ ∃ morfologie.(Destrukce ⊓ ∃ místo.Těla)
⊓ ∃ komplikace.(Absces ⊓ ∃ strana.Vlevo
⊓ ∃ velikost.3×3cm ⊓ ∃ průběh.(Regrese
⊓ ∃ při.PerkutánníDrenáž))
Známá, stacionární tuberkulózní spondylodiscitida L1/2 s destrukcí obratlových těl. Absces vlevo, v regresi při perkutánní drenáži, reziduum cca 3 × 3 cm.
nálezy ✔ místo ✔ strana ✔ polarita ✔ rozměr ✔
Posuzuje se obsah, ne styl. Chybí-li nález nebo se prohodí strana, zápis B se opraví.
Dataset PARROT obsahuje 2 738 fiktivních radiologických nálezů od radiologů z 21 zemí ve 14 jazycích, každý s anglickým překladem. Nález #625 (CT, Německo) popisuje tuberkulózní spondylodiscitidu L1/2 s regredujícím abscesem při drenáži. Na slidu je v českém znění.
Zda strukturovaný zápis zachytil celý význam, se dá změřit: vstupní nález (A) se převede do deskripční logiky (B), z B se bez pohledu na originál napíše nový nález (C) a A se porovná s C. Porovnává se obsah – přítomnost nálezů, místo, strana, polarita (patologický × normální), rozměry – ne styl. Chybí-li v C něco, co je v A, zápis B byl neúplný.
Zápis B, nález C a porovnání na slidu jsou ilustrace metody, ne výstup konkrétního běhu.
Spondylodiscitida ⊓ ∃původce.MycobacteriumTuberculosis ⊓ ∃místo.SegmentL1/2 ⊓ ∃průběh.Stacionární ⊓ ∃morfologie.(Destrukce ⊓ ∃místo.ObratlováTěla) ⊓ ∃komplikace.(Absces ⊓ ∃strana.Vlevo ⊓ ∃velikost.(3×3 cm) ⊓ ∃průběh.(Regrese ⊓ ∃při.PerkutánníDrenáž))
⊓ = a zároveň; ∃ r.C = má roli r s hodnotou, která je C.
DL reprezentace nálezu PARROT #625
Spondylodiscitida ⊓ ∃ původce.M. tuberculosis
⊓ ∃ místo.SegmentL1/2 ⊓ ∃ průběh.Stacionární
⊓ ∃ morfologie.(Destrukce ⊓ ∃ místo.ObratlováTěla)
⊓ ∃ komplikace.(Absces
⊓ ∃ místo.(Okolí ⊓ ∃ čeho.SegmentL1/2)
⊓ ∃ strana.Vlevo ⊓ ∃ velikost.(3 × 3 cm)
⊓ ∃ průběh.(Regrese ⊓ ∃ při.(PerkutánníDrenáž
⊓ ∃ přístup.Dorzální)))
| DE | Bekannte, konstante tuberkulöse Spondylodiszitis im Segment LWK 1/2 mit Destruktion der Wirbelkörper. Umgebende Abszedierung links regredient bei einliegender perkutaner Drainage von dorsal, ca. 3 x 3 cm Restverhalt. |
| EN | Known, persistent tuberculous spondylodiscitis at the L1/2 segment with destruction of the vertebral bodies. Surrounding abscess on the left is regressing with a percutaneous drainage in place from the dorsal side, approximately 3 x 3 cm residual. |
| CS | Známá, stacionární tuberkulózní spondylodiscitida v segmentu L1/2 s destrukcí obratlových těl. Okolní absces vlevo regreduje při zavedené perkutánní drenáži z dorzálního přístupu, reziduum cca 3 × 3 cm. |
| FR | Spondylodiscite tuberculeuse connue, stable, au niveau L1/L2, avec destruction des corps vertébraux. Abcès gauche adjacent en régression sous drainage percutané par voie postérieure, résidu d’environ 3 × 3 cm. |
Nález #625 existuje v datasetu PARROT německy (originál) a anglicky (překlad). Z jedné DL reprezentace lze nález verbalizovat v libovolném jazyce – na slidu česky a francouzsky jako ilustraci. Nepřekládá se text do textu, ale jednou se text převede do DL a z DL se generuje v cílovém jazyce.
Podmínkou je, aby pojmy měly popisy v cílových jazycích. U SNOMED CT tomu tak je: identifikátor a definice jsou společné, jazykové verze přidávají termíny.
Spondylodiscitida ⊓ ∃původce.MycobacteriumTuberculosis ⊓ ∃místo.SegmentL1/2 ⊓ ∃průběh.Stacionární ⊓ ∃morfologie.(Destrukce ⊓ ∃místo.ObratlováTěla) ⊓ ∃komplikace.(Absces ⊓ ∃místo.(Okolí ⊓ ∃čeho.SegmentL1/2) ⊓ ∃strana.Vlevo ⊓ ∃velikost.(3×3 cm) ⊓ ∃průběh.(Regrese ⊓ ∃při.(PerkutánníDrenáž ⊓ ∃přístup.Dorzální)))
Odkazy: SNOMED International
Känd, oförändrad tuberkulös spondylodiskit i segment L1/2 med destruktion av kotkropparna. Omgivande abscessbildning på vänster sida i regress med inliggande perkutant dränage dorsalt, kvarvarande förändring ca 3 x 3 cm.
Spondylodiscitida ⊓ ∃ původce.M. tbc
⊓ ∃ místo.L1/2 ⊓ ∃ průběh.Stacionární
⊓ ∃ morfologie.(Destrukce ⊓ ∃ místo.Těla)
⊓ ∃ komplikace.(Absces ⊓ ∃ strana.Vlevo
⊓ ∃ velikost.3×3cm ⊓ ∃ průběh.(Regrese
⊓ ∃ při.PerkutánníDrenáž))
Známá, stacionární tuberkulózní spondylodiscitida L1/2 s destrukcí obratlových těl. Absces vlevo, v regresi při perkutánní drenáži, reziduum cca 3 × 3 cm.
nálezy ✔ místo ✔ strana ✔ polarita ✔ rozměr ✔
Posuzuje se obsah, ne styl – i napříč jazyky. Chybí-li nález nebo se prohodí strana, zápis B se opraví.
Stejná kontrola jako u českého nálezu, jen vstup je ve švédském znění – jazyce, kterým lékař příjemce nemluví – a výstup česky.
Vstupní nález (A, švédsky) se převede do deskripční logiky (B), z B se bez pohledu na originál napíše nový nález (C, česky) a A se porovná s C. Porovnává se obsah – přítomnost nálezů, místo, strana, polarita (patologický × normální), rozměry – ne styl ani jazyk. Chybí-li v C něco, co je v A, zápis B byl neúplný. DL zápis nepatří žádnému jazyku, proto vstup a výstup nemusí být ve stejném.
Zápis B, nález C a porovnání na slidu jsou ilustrace metody, ne výstup konkrétního běhu.
Spondylodiscitida ⊓ ∃původce.MycobacteriumTuberculosis ⊓ ∃místo.SegmentL1/2 ⊓ ∃průběh.Stacionární ⊓ ∃morfologie.(Destrukce ⊓ ∃místo.ObratlováTěla) ⊓ ∃komplikace.(Absces ⊓ ∃strana.Vlevo ⊓ ∃velikost.(3×3 cm) ⊓ ∃průběh.(Regrese ⊓ ∃při.PerkutánníDrenáž))
⊓ = a zároveň; ∃ r.C = má roli r s hodnotou, která je C.
Postup ze slidu „Nález → DL → nález“ lze automatizovat nad celým datasetem PARROT. Jazykový model přečte nález a zapíše ho v DL; reasoner zápis ověří a chyby vrátí k opravě. Druhý model vidí jen DL zápis a napíše z něj nález znovu. Třetí model porovná originál s novým nálezem na škále 0–10: body ubírá vypuštěný nález, vymyšlený nález, prohozená strana nebo polarita; styl se nehodnotí. Cokoli pod plných 10 bodů znamená nový pokus s popisem chyby – každý bodový odpočet je věcná chyba, kterou nelze tolerovat.
Klíčové je, že zpětný zápis nevidí originál. Výsledkem je korpus dvojic text ↔ DL, podklad pro strukturované psaní a našeptávání. Procento úspěšnosti na celém datasetu zde neuvádíme.
Tři technologie, tři role. SNOMED CT je slovník: dodává pojmy (absces, vlevo, segment L1/2, regrese, drenáž) s definicemi, takže každý systém ví, co znamenají. Deskripční logika z nich skládá význam konkrétního nálezu – pojmy a vztahy mezi nimi (absces má stranu vlevo, místo L1/2, průběh regrese při drenáži). FHIR je formulář na přepravu: co má kolonku, vyplní do kolonky, zbytek (vztahy, pro které kolonka není) přidá jako rozšíření a celý nález přiloží i jako text.
Zjednodušeně: slovník, věta, obálka. Ani jedno nenahrazuje druhé – slovník bez věty nic netvrdí, věta bez obálky nikam nedojde a obálka bez věty přenáší jen kolonky.
Odkazy: SNOMED International · FHIR R4
FHIR přenáší data v resources – standardizovaných formulářích s pevnou sadou polí (kolonek).
příklad: formulář Patient (vymyšlená data)
| kolonka | pole ve FHIR | hodnota |
|---|---|---|
| jméno | name | Jana Nováková |
| pohlaví | gender | female |
| datum narození | birthDate | 1968-04-12 |
| bydliště | address | Brno |
| pojištění | identifier | pojištěnec č. 123456789 |
Pole = kolonka formuláře. Co kolonku nemá (třeba „bojí se uzavřených prostor“), jde jen do rozšíření – extension.
formuláře pro radiologii
ImagingStudy | vyšetření, série, snímky (DICOM) |
DiagnosticReport | nález jako celek, text, závěr |
Observation | jednotlivé pozorování, měření |
Condition | diagnóza |
Procedure | výkon (drenáž) |
FHIR ⊂ DL. Každé pole FHIR se dá vyjádřit jako role v DL. Naopak to neplatí: DL popíše libovolný vztah mezi nálezy, FHIR jen ty, pro které má pole. Kódy uvnitř polí (code, bodySite) jsou pojmy SNOMED CT.
FHIR (HL7 Fast Healthcare Interoperability Resources) přenáší data v resources – standardizovaných formulářích s pevnou sadou polí. Pole je kolonka formuláře: resource Patient má kolonky name (jméno), gender (pohlaví), birthDate (datum narození), address (bydliště), identifier (identifikátory, například číslo pojištěnce) a další. Údaj, pro který kolonka není – třeba „bojí se uzavřených prostor“ –, lze předat jen jako rozšíření (extension). Pro radiologii jsou podstatné ImagingStudy (vyšetření, série, snímky DICOM), DiagnosticReport (nález jako celek), Observation (jednotlivé pozorování a měření), Condition (diagnóza) a Procedure (výkon).
Každé pole FHIR lze vyjádřit jako roli v DL; naopak to neplatí – DL popíše libovolný vztah mezi nálezy, FHIR jen ty, pro které má pole. Kódy uvnitř FHIR (například code, bodySite) bývají pojmy SNOMED CT, tedy DL. FHIR proto není konkurent DL, ale přepravní formát.
Odkazy: FHIR Patient · FHIR Observation · FHIR R4 – přehled resources
Hotové věty s prázdnými místy:
„Pacient X má adresu Y.“
„Na místě B byla provedena procedura A.“
Na běžné situace skvělá. Co se do ní nevejde, jde do soukromého dodatku (extension) — napsat se to dá, přečíst ne.
Pojmy, které se do prázdných míst dosazují: drenáž, absces, segment L1/2…
Má vlastní malou gramatiku (ℰℒ): umí skládat, ale neumí zapřít ani říct „buď – anebo“. Neřekne tedy ani „žádný konkrement znatelné velikosti“.
Ze slov a vztahů skládá nové věty, které v příručce nejsou.
A pozná, že dvě věty říkají totéž, že jedna plyne z druhé, nebo že si odporují — absces vlevo × absces vpravo na stejném místě.
V příručce je: „Na místě L1/2 byla provedena drenáž.“
V příručce není: „Absces vlevo v okolí segmentu L1/2, který se při drenáži zmenšuje.“ Pro v okolí a při hotová věta neexistuje — musí se složit gramatikou.
FHIR se dá přirovnat ke konverzační příručce: sbírka hotových vět s prázdnými místy – „Pacient X má adresu Y“, „Na místě B byla provedena procedura A“. Na běžné situace funguje výborně, to je jeho pravidlo 80 %. Jakmile je potřeba říct něco neobvyklého, zbývá jen soukromý dodatek – rozšíření (extension). Napsat se tam dá cokoli, ale příjemce, který ho nezná, ho nepřečte. Problém tedy není, že by nález nešel zapsat, ale že mu druhá strana nerozumí.
SNOMED CT je slovník pojmů, které se do prázdných míst dosazují. Není to ale jen slovník: jeho pojmy jsou samy definované v malé gramatice ℰℒ a postkoordinace umožňuje skládat v jejích mezích. ℰℒ ovšem neumí negaci ani disjunkci, takže nevyjádří třeba „žádný konkrement znatelné velikosti“.
Deskripční logika je gramatika: ze slov a rolí skládá věty, které v příručce nejsou – na příkladu nálezu #625 „absces vlevo v okolí segmentu L1/2, který se při drenáži zmenšuje“. Radiolog tyto vztahy vyjadřuje předložkami „v okolí“, „při“, „s“, a právě pro ně FHIR hotovou větu nemá. Navíc je to gramatika s korektorem: dovede rozhodnout, zda dvě věty říkají totéž, zda jedna plyne z druhé, nebo zda si odporují.
| FHIR | deskripční logika | SNOMED CT | |
|---|---|---|---|
| optimalizováno pro | běžného webového programátora – zprovoznit za dny | stroj, který z definic odvozuje | jednotné kódování klinických pojmů |
| vzniklo jako | zjednodušení HL7 v3 / CDA (2011); pravidlo 80 %: jádro jen pro běžné případy, zbytek do rozšíření (extension) | zkrocení predikátové logiky, aby byla rozhodnutelná | sloučení SNOMED RT a Read Codes (2002) |
| jednotka | resource = formulář s pevnými poli | pojem + role, libovolně skládané | pojem s definicí v ℰℒ |
| význam pole | popsán v dokumentaci slovy | formální, strojově ověřitelný | formální (definice) |
| odvozování | ne – kontroluje tvar | podřazenost, rozpor, zařazení | klasifikace hierarchie |
| vztah dvou nálezů | jen kde je na něj pole; jinak extension | libovolná role mezi konkrétními nálezy | ne – popisuje pojmy, ne pacienta |
| negace, nejistota | statusové pole (verificationStatus) | negace ano (od 𝒜ℒ𝒞), nejistota ne | v ℰℒ ne, řeší se kontextem záznamu |
FHIR nezapíše vztah mezi dvěma nálezy, pokud pro něj předem nemá pole. Struktura musí existovat dřív, než na ni text ukáže.
Dělba práce: význam drží DL, pojmy dodává SNOMED CT, přepravu obstará FHIR. Nikdo z nich nedělá práci druhých.
FHIR je optimalizovaný pro běžného webového programátora: zprovoznit rozhraní za dny. Vznikl v roce 2011 jako zjednodušení HL7 v3 a CDA a řídí se pravidlem 80 %: jádro pokrývá běžné případy, zbytek jde do rozšíření (extension). Význam polí je popsaný slovy v dokumentaci, FHIR sám nic neodvozuje a kontroluje jen tvar.
Deskripční logika je optimalizovaná pro stroj, který z definic odvozuje: skládá pojmy a role libovolně a dovede odvodit podřazenost, rozpor i zařazení. SNOMED CT dodává pojmy s definicemi a klasifikovanou hierarchií, ale popisuje pojmy obecně, ne konkrétního pacienta.
Hlavní mez FHIR: vztah mezi dvěma nálezy zapíše jen tam, kde pro něj předem existuje pole. Dělba práce: význam drží DL, pojmy dodává SNOMED CT, přepravu obstará FHIR.
Odkazy: FHIR R4 · FHIR – rozšíření (extensibility)
Nález je vždy text. Jak k němu přiřadit význam? Musí existovat struktura vedle.
Existují mezinárodní (FHIR) i české standardy (DASTA). Ty ale nestačí, nedokážou vyjádřit „kolekce tekutiny v mírné velikostní regresi“.
Dokáže to vyjádřit deskripční logika, což je matematický aparát, na kterém je postavena terminologie SNOMED CT.
Takže vedle textu máme výraz v DL, jehož koncepty pak napojíme na konkrétní segmenty v textu. Obojí pak zabalíme do běžného standardu (FHIR/DASTA).
běžná představa „sémantiky v textu“: obalit slova značkami s kódem
Značka řekne jen „tohle slovo je X“. Vnořená značka přidá „obsahuje“ – geometrii textu, ne anatomii. Značky se nesmí překrývat (text je strom).
Častá představa „sémantiky v textu“: obalit slova značkami s kódem SNOMED, případně odkazem na výřez snímku. Pro vyhledávání to stačí – víme, že v textu je zmíněn pneumotorax. Značka ale vyjádří jen „tento úsek textu je X“; vnoření značek přidá „tento úsek obsahuje tamten“, což je geometrie textu, ne vztah v těle. Značky se navíc nesmějí překrývat, protože značkovaný text je strom.
Nález nejsou slova, ale vztahy mezi nimi: čí je šíře (pneumotoraxu, ne projasnění), že „nejvýše 4 cm“ je horní mez, že projektil je tvar cizího tělesa, že „4.–5. mezižebří“ jsou dvě struktury v jednom slově, že projasnění je v souladu s pneumotoraxem. Role je hrana mezi dvěma věcmi, ne vlastnost jednoho slova, a značka pro ni nemá místo.
DL zápis nálezu – náš ověřovací příklad
.nález:imagingFindingSituation hasFinding hyperlucency hasBodySite rightPleuralSpace consistentWith rightPneumothorax hasObservation observation hasFocus rightPneumothorax hasWidth 4:cm hasComparator atMost hasFinding foreignBodyFinding hasBodySite thoracicWallRegion hasLaterality rightSide hasAnatomicalLine midclavicularLine hasIntercostalSpace fourthIntercostalSpace hasIntercostalSpace fifthIntercostalSpace hasShapeConsistentWith bullet
Ověřeno 20. 8. 2026: DL → text s mapou → zpráva DASTA → zpět do DL. Rekonstrukce je shodná s originálem, i když se přeházejí věty v textu i řádky mapy.
Náš přístup obrací poměr textu a struktury. Význam nese DL graf; text zůstává, jak ho lékař napsal, a vedle něj leží mapa: úsek textu → pojem, a hrany mezi řádky mapy s rolí (šíře, lateralita, tvar). Uzel nemusí mít v textu slovo – celý nález, pozorování nebo každé ze dvou mezižebří zvlášť. Slovosled je prezentace, ne nosič; tentýž graf lze vyjádřit jiným slovosledem i jiným jazykem.
Ověřeno 20. 8. 2026 na příkladu z obrázku: DL zápis → text s mapou → zpráva DASTA → zpět do DL. Rekonstrukce je shodná s originálem, i když se přeházejí věty v textu i řádky mapy. Test ověřuje mechanismus se zástupnými kódy, ne klinický obsah. Vztahy dnes zapisuje do DL program (agent); lékař vybírá pojmy a návrh potvrzuje.
text závěru ve zprávě DS4 – beze změny, jak ho lékař napsal
Projasnění① v pravém pleurálním prostoru, v souladu s pneumotoraxem② šíře nejvýše 4 cm.
kotvy (blok semanticExtension)
| ① | …/text_zaver/ptext@0+10→ kb:projasneni1 |
| ② | …/text_zaver/ptext@53+13→ …/dg_vys/dgz[1] |
kotva = kde v textu (od znaku, kolik znaků) → na co ukazuje
② element zprávy DS4
diagnóza (dg_vys/dgz)
J93.9 Pneumotorax
slovo v textu je propojené s údajem, který DS4 už má
① model nálezu (přibalený ke zprávě)
.projasneni1:hyperlucency hasBodySite rightPleuralSpace consistentWith rightPneumothorax
Dosud: značka v textu = „tohle slovo je pojem X“. Vztahy nikde.
Nově: kotva vede na element zprávy i na uzel modelu – a model nese vztahy.
FHIR totéž: text = Narrative, kotvy = textLink, model = DL extension.
Zpráva DS4 si ponechá text, jak ho lékař napsal. Vedle něj nese blok semanticExtension se dvěma věcmi: kotvami a modelem. Kotva je dvojice „kde v textu → na co ukazuje“: úsek textu se zapíše adresou prvku a pozicí (ptext@0+10 = od znaku 0, deset znaků, tedy slovo „Projasnění“).
Kotva může vést dvěma směry. Kotva ① ukazuje na uzel přibaleného modelu (kb:projasneni1) – instanci pojmu projasnění, která v modelu nese vztahy: místo je pravý pleurální prostor a nález je v souladu s pravostranným pneumotoraxem. Kotva ② ukazuje na element, který DS4 už zná – diagnózu v bloku dg_vys. Slovo „pneumotoraxem“ je tak propojené s diagnózou J93.9, kterou zpráva nese ve strukturované podobě.
Rozdíl proti známé představě „značka v textu“: značka říká jen, že slovo je určitý pojem. Kotva vede buď na údaj zprávy, nebo na uzel modelu, a model nese vztahy mezi pojmy. Ve FHIRu je rozdělení stejné: text je Narrative, kotvy nese textLink a model jede jako DL rozšíření (extension). Mechanismus je ověřený testem, který zapíše všechny čtyři druhy vazeb (prvek → prvek, prvek → model, text → prvek, text → model) a načte je zpět.
semanticExtension = edge* kbModule?; edge = (Src, Dest); kbModule = (head, kb)
Src/Dest: #is[1]/ip/ku/ku_z[1]/text_zaver/ptext@0+10 (úsek textu), #…/dg_vys/dgz[1] (element), kb:projasneni1 (uzel modelu zprávy), sct:… (cizí prostor).
1 · zpětně z hotového nálezu
Hotový text přečte jazykový model a zapíše ho v DL. Reasoner zápis ověří.
Co v textu není, nevznikne:
Použitelné na archiv: statistika, vyhledávání, kontrola. Ne na navázání na snímky.
2 · vzniká při psaní nálezu
Lékař píše text jako dosud. Do textu se vkládají pojmy a vztahy – z prohlížeče snímků, z číselníku, z minulé zprávy.
Model je hotový hned a ví víc:
Jazykový model tu pomáhá nad bohatším vstupem: doplní, přeformuluje, navrhne – a reasoner to kontroluje proti definicím.
Obě cesty dávají tentýž tvar zápisu. Liší se tím, co do něj lze vůbec dostat: zpětně jen to, co je ve větách, při psaní i to, na co lékař ukázal.
Zpětná cesta. Nad archivem hotových nálezů nic jiného nezbývá: jazykový model text přečte a zapíše v DL, reasoner zápis zkontroluje proti definicím a rozporný zápis vrátí k opravě. Tak vznikl i výsledek z datasetu PARROT o dva slajdy dřív. Strop téhle cesty je ale daný textem – vznikne jen to, co v něm je. Měření nemá vazbu na snímek a oblast, kde vzniklo; nález nemá doklad; a dvě zprávy o témže ložisku se nedají spolehlivě spojit, protože ložisko v textu nemá totožnost, jen popis.
Cesta při psaní. V editoru strukturovaného nálezu píše lékař text jako dosud, ale vkládá do něj pojmy a vztahy: měření převzaté z prohlížeče snímků (a s ním odkaz na sérii, snímek a oblast), diagnózu z číselníku, ložisko navázané na totéž ložisko z minulé zprávy. Model tím vzniká zároveň s textem a nese i to, co ve větách není.
Role jazykového modelu se tím nemění, jen dostane lepší vstup. Místo aby význam hádal z vět, pracuje nad textem, který už má označené pojmy a vazby – a co navrhne, ověří reasoner proti definicím. Výsledný tvar zápisu je v obou případech stejný, takže archiv i nově psané nálezy se dají dotazovat společně.
Editor strukturovaného nálezu: rdg.cognitrust.cz
1 · text nálezu, jak ho radiolog napsal nebo nadiktoval
Kolekce① dorzálně epidurálně v úrovni Th10/11② vlevo③, velikosti cca 5–6 mm④, minule 7 mm.
| ① | kolekce tekutiny (SNOMED CT) |
| ② | segment Th10/11 |
| ③ | strana: vlevo |
| ④ | měření na snímku (série, řez) |
text zůstane, jak je; kotva jen řekne, co který úsek znamená
DL pokračuje tam, kde FHIR končí
FHIR / DASTA jádro: nález, místo, strana, velikost, snímek – vše, pro co standard má pole
DL rozšíření: jen to, na co pole není – „tatáž kolekce jako minule“, „zmenšila se“
Text: beze změny
Co z toho má radiolog: klik na číslo otevře snímek s měřením · porovnání s minulým vyšetřením v mm a % · upozornění, když se popis a závěr rozcházejí ve straně · věta s rozměry vznikne z měření sama
Výzkum, který standardy rozšiřuje, neruší je: FHIR, DASTA i SNOMED CT zůstávají beze změny. Systém, který DL nezná, přečte jádro a text a rozšíření přeskočí.
Editor vypadá jako obyčejný textový editor: radiolog píše nebo diktuje nález. Pod textem ale editor drží tři vrstvy. Kotvy spojují úseky textu s pojmy: slovo „kolekce“ s pojmem ze SNOMED CT, „Th10/11“ se segmentem, „vlevo“ se stranou a číslo „cca 5–6 mm“ s měřením na konkrétním snímku. Text se kotvami nemění. Model nálezu v deskripční logice (DL) z těchto pojmů skládá význam včetně vztahů: kolekce leží v epidurálním prostoru Th10/11 vlevo, má změřenou velikost a je to tatáž kolekce jako na minulém vyšetření, která se zmenšila.
Ven jde nález standardem. Všechno, pro co FHIR nebo DASTA mají pole – nález, místo, strana, velikost, odkaz na snímek –, jde do jejich jádra a přečte to každý systém. DL pokračuje tam, kde FHIR končí: vztahy mezi nálezy („tatáž kolekce jako minule“, „zmenšila se“) FHIR pole nemá, proto jdou do standardního rozšíření. Systém, který DL nezná, rozšíření přeskočí a má stále jádro i text. Je to výzkum, který standardy doplňuje, ne nahrazuje; se standardem není v rozporu.
Pro radiologa je podstatné, co editor díky tomu udělá sám: z čísla se proklikne na snímek, porovná měření s minulým vyšetřením, upozorní na rozpor stran mezi popisem a závěrem a větu s rozměry vytvoří z měření. V ukázce na ehr.ezprava.net to běží nad skutečnými snímky MR. Kontroly v ukázce zatím počítají pravidla nad textem; vyhodnocení nad DL modelem je předmětem výzkumu.
RDG nález převádíme do formální logiky. Neděláme to my, ale používáme na to LLM.
Formální logika musí pracovat s přesnými pojmy. Pokud má LLM k dispozici jen text, musí pojmy uhodnout – najít v terminologii, co pisatel měl na mysli.
Náš editor umožňuje vybrat z číselníku během psaní reportu a zároveň vložit přesná měření s vazbou na konkrétní snímky a série.
Tím se přesnost výrazně zvyšuje a kvalitu převodu jsme schopni objektivně měřit.
Pravidla projekce jsou deklarovaná jednou v modelu (pojem → resource, role → pole), ne ručně psaná pro každé rozhraní.
Pojem v DL se do FHIR promítá do tří vrstev. Jádro FHIR: vše, pro co FHIR má pole (code, bodySite, value, interpretation…) – tomu rozumí každý FHIR systém. DL extension: zbytek, typicky vztahy mezi nálezy a okolnosti průběhu, zapsaný jako DL výraz. Text (Narrative): celý význam slovy; FHIR má pro text vygenerovaný z jádra i rozšíření hodnotu stavu extensions.
Pravidla projekce (pojem → resource, role → pole) jsou deklarovaná jednou v modelu, ne ručně psaná pro každé rozhraní.
Odkazy: FHIR Narrative (stav „extensions“) · FHIR – rozšíření (extensibility)
| fakt z DL | FHIR | kam |
|---|---|---|
| tuberkulózní spondylodiscitida, segment L1/2 | Condition.code, Condition.bodySite | jádro |
| známá, stacionární | Condition.clinicalStatus = active | jádro |
| destrukce obratlových těl | Observation.code + bodySite | jádro |
| absces vlevo, 3 × 3 cm, regrese | Observation.bodySite, component, interpretation | jádro |
| perkutánní drenáž z dorzálního přístupu | Procedure | jádro |
| absces leží v okolí segmentu L1/2 | relativní poloha vůči jinému nálezu – pole není | extension |
| regrese při drenáži | vazba průběhu na výkon – pole není | extension |
| vše výše | text, status = extensions | text |
Z nálezu #625 má ve FHIR místo většina faktů: diagnóza a segment (Condition.code, Condition.bodySite), aktivní stav (clinicalStatus), destrukce obratlových těl (Observation), absces s lokalizací, rozměry a regresí (bodySite, component, interpretation), drenáž (Procedure).
Do DL extension jdou vztahy: absces leží v okolí segmentu (relativní poloha vůči jinému nálezu) a regrese probíhá při drenáži (vazba průběhu na výkon). Radiolog je vyjadřuje předložkami „v okolí“, „při“, „s“ – a právě na ně FHIR pole nemá. Vše navíc nese text.
Odkazy: FHIR Condition · FHIR Observation
📦 formulář FHIR „pozorování“ (Observation)
text – „Okolní absces vlevo u L1/2 regreduje při zavedené perkutánní drenáži, reziduum cca 3 × 3 cm.“
rozšíření – absces v okolí L1/2, regrese při drenáži
| co | absces |
| kde | bederní páteř L1/2, vlevo |
| vývoj | regrese |
| rozměry | 3 cm × 3 cm |
kolonky přečte každý FHIR systém
rozšíření přečte systém, který zná DL; ostatní ho přeskočí
text přečte vždy člověk
{
"resourceType": "Observation",
"text": {
"status": "extensions",
"div": "<div>Okolní absces vlevo u L1/2 regreduje při zavedené perkutánní drenáži, reziduum cca 3 × 3 cm.</div>"
},
"extension": [{
"url": "https://ezprava.net/fhir/StructureDefinition/dl-expression",
"valueString": "absces; místo: okolí L1/2; strana: vlevo; průběh: regrese (při: drenáž)Absces ⊓ ∃místo.(Okolí ⊓ ∃čeho.L1/2) ⊓ ∃strana.Vlevo ⊓ ∃průběh.(Regrese ⊓ ∃při.Drenáž)"
}],
"status": "final",
"code": { "text": "absces" },
"bodySite": { "text": "bederní páteř L1/2, vlevo" },
"interpretation": [{ "text": "regrese" }],
"component": [
{ "code": { "text": "rozměr 1" }, "valueQuantity": { "value": 3, "unit": "cm" } },
{ "code": { "text": "rozměr 2" }, "valueQuantity": { "value": 3, "unit": "cm" } }
]
}
Ukázka jednoho Observation pro absces. Oranžově text (text.div, stav extensions) – člověk vidí vždy celý význam. Modře DL extension – systém, který DL nezná, ji smí přeskočit a nic nepravdivého nepřečte. Zeleně jádro – kód, místo, interpretace a dva rozměry, kterým rozumí každý FHIR systém.
Kódy SNOMED CT jsou v ukázce nahrazeny textem kvůli čitelnosti; adresa (URL) extension je návrh.
Absces ⊓ ∃místo.(Okolí ⊓ ∃čeho.SegmentL1/2) ⊓ ∃strana.Vlevo ⊓ ∃průběh.(Regrese ⊓ ∃při.PerkutánníDrenáž)
Obsah DL extension; jádro FHIR nese promítnuté části (code, bodySite, interpretation, component).
Odkazy: FHIR Observation · FHIR Narrative
PARROT, Francie:
„Pas de signe de spondylodiscite.“
Systém, který extension nezná, ji smí ignorovat. Kdyby „ne“ bylo jen v extension, přečte:
spondylodiscitida
Co mění význam, musí do jádra:
| význam | kam |
|---|---|
| vyloučeno | Condition.verificationStatus = refuted |
| podezření | verificationStatus = provisional |
| nepřítomno | Observation.value = nepřítomen |
| jiné, co mění význam | modifierExtension – příjemce ji nesmí ignorovat |
Systém, který extension nezná, ji podle pravidel FHIR smí ignorovat. Kdyby negace („Pas de signe de spondylodiscite“ – bez známek spondylodiscitidy) byla jen v extension, přečetl by příjemce opak: spondylodiscitidu.
Co mění význam, patří do jádra: vyloučení do Condition.verificationStatus = refuted, podezření do provisional, nepřítomnost do hodnoty pozorování. Pro jiné významotvorné údaje má FHIR modifierExtension, kterou příjemce nesmí ignorovat – musí ji pochopit, nebo resource odmítnout. Běžná extension je doplněk: bez ní zbytek zůstává pravdivý.
Odkazy: FHIR modifierExtension · FHIR Condition (verificationStatus)
| příjemce | dostane |
|---|---|
| FHIR systém bez znalosti DL | maximum strukturovaně podle standardu FHIR + celý význam v textu |
| systém se znalostí DL | plnou sémantiku zpět beze ztráty – jádro + DL výraz |
| lékař | celý nález slovy, v každém případě |
Nic se neztratí. FHIR se vytěží na maximum, zbytek jede jako DL výraz a zároveň jako text. Strojově čitelná část mimo FHIR je ale čitelná jen pro systémy, které DL znají – ostatním zůstává text.
FHIR systém bez znalosti DL dostane maximum dat strukturovaně podle standardu a celý význam v textu. Systém se znalostí DL dostane plnou sémantiku beze ztráty: jádro plus DL výraz. Lékař dostane celý nález slovy v každém případě.
Poctivá formulace je „nic se neztratí“, ne „plně interoperabilní pro všechny“: strojově čitelná část mimo jádro FHIR je čitelná jen pro systémy, které DL znají; ostatním zůstává text.
Projekce má inverzi: z jádra FHIR + DL extension se složí zpět původní DL výraz.
DL → FHIR → DL′ ověřit: DL a DL′ znamenají totéžDL ≡ DL′
Ekvivalenci rozhodne reasoner, ne porovnání textů. Stejný princip jako text → DL → text u PARROT, jen přesně.
Tím se ze sémantické interoperability stává testovatelná vlastnost: zpráva, která po cestě ztratila význam, test nesplní – dřív, než se odešle.
Projekce má inverzi: z jádra FHIR a DL extension se složí zpět původní DL výraz. Zda je výsledek shodný s originálem, rozhodne reasoner (ekvivalence pojmů), ne porovnání textů – jde o přesnou obdobu kontroly nález → DL → nález.
Sémantická interoperabilita se tím stává testovatelnou vlastností: zpráva, která po cestě ztratila význam, test nesplní dřív, než se odešle. Kdyby obory v obou registrech ministerstva byly definované pojmy, převod L47 → L47 by tímto testem neprošel.
DL ≡ DL′ ⇔ DL ⊑ DL′ a DL′ ⊑ DL
Ekvivalenci rozhoduje reasoner dvěma dotazy na podřazenost.
FHIR – jiná osa: přeprava. Nese mezi systémy to, co definice řeknou.
Editor strukturovaného nálezu: rdg.cognitrust.cz
Shrnutí oblouku: Aristotelés definoval rodem a rozlišujícím znakem, Frege ukázal, že definice lze vyhodnotit, deskripční logika (1985–2005) to udělala rozhodnutelně a rychle, SNOMED CT tak definuje přes 428 000 pojmů. FHIR na této linii není další stupeň, ale jiná osa: přepravní formát, který definované pojmy nese mezi systémy.
Kód L47 znamená v jednom registru pediatrii a v druhém maxilofaciální chirurgii, protože kód má jen tvar, ne definici; dva pojmy s definicí by se lišily. Jedna DL reprezentace nálezu dá libovolný jazyk i formát. Do FHIR se vytěží maximum, zbytek jede jako DL extension a text – a negace nikdy jen v extension.
L47 = pediatrie v registru poskytovatelů, maxilofaciální chirurgie v registru zdravotnických pracovníků – oba registry ministerstva. Validace projde, význam ne.
39 tvarů adresy · 43 popisů pacienta · 6 číselníků odbornosti v 31 státních rozhraních. FHIR: 1 Address.
≈ 3,6 mld. Kč – převodníky pro 200 nemocnic na 15 let (přepočet z 89,9 mil. za 5 nemocnic Vysočiny).
Spondylodiscitida je přesně zánět, jehož místem je ploténka a obratlová těla
Spondylodiscitida ≡ Zánět ⊓ ∃ místo.Ploténka ⊓ ∃ místo.ObratlováTěla
Hierarchii počítá klasifikátor · víc rodičů · nepopsáno ≠ není (otevřený svět)
DE tuberkulöse Spondylodiszitis LWK 1/2, Abszedierung links regredient…
EN tuberculous spondylodiscitis L1/2, abscess on the left regressing…
CS tuberkulózní spondylodiscitida L1/2, absces vlevo regreduje…
PARROT: 2 738 nálezů, 14 jazyků · text → DL → text, přijato jen při 10/10
vše, pro co FHIR má pole: code, bodySite, value, interpretation, verificationStatus
zbytek jako DL výraz: absces v okolí L1/2, regrese při drenáži
celý význam slovy, Narrative.status = extensions
negace a podezření nikdy do extension – do verificationStatus / modifierExtension
Nic se neztratí: FHIR systém dostane maximum strukturovaně, DL systém plný význam, lékař celý text. Tam a zpět DL → FHIR → DL ověří reasoner.