# Anpheros Symptom Engine: metodika

> Ako sa voľný text symptómov v akomkoľvek jazyku stáva konceptmi WHO ICD-10 a ICD-11: AI normalizátor, detekcia prítomnosti a skúsenosti, slovník overený WHO, výsledky hodnotenia, porovnávanie podobných prípadov a obmedzenia.

Source: https://developers.anpheros.com/sk/guides/symptom-engine

**Anpheros Symptom Engine premieňa to, čo osoba napíše o tom, ako sa cíti, vlastnými slovami a jazykom, na medzinárodné klinické koncepty: stabilný Anpheros identifikátor, kód WHO ICD-10, kód WHO ICD-11 a telesný systém, spolu s informáciou, či je symptóm prítomný, vyriešený, hypotetický alebo sa týka niekoho iného. Funguje v produkcii za Anpheros Daily, publikuje svoje výsledky ako HL7 FHIR R4 Observations na Anpheros Platform a sprístupňuje rovnakú terminológiu akejkoľvek aplikácii prostredníctvom REST a FHIR API.** Táto stránka popisuje, ako funguje, ako bol overený, čo meria a kde sú jeho obmedzenia.

## Stručný prehľad

| | |
|---|---|
| Koncepty | 274 (197 symptómov, 77 nálezov), identifikátory `SYM-0001`…, nikdy znovu nepoužité |
| Klasifikácie | WHO ICD-10 (verzia 2019) a WHO ICD-11 MMS (2025-01), s ekvivalenciou každého mapovania |
| Telesné systémy | 13, prevzaté z blokov kapitoly 21 ICD-11 (nervový, tráviaci, dýchací, kožný atď.) |
| Jazyky | názvy v 20 jazykoch; voľný text v jazyku osoby |
| Varovné príznaky | 32, pre 14 konceptov, citované slovo od slova z CDC a NIDDK |
| Vyhodnotenie normalizátora | 5 jazykov (rumunčina, angličtina, španielčina, nemčina, francúzština): primárny kód 97,5–100 %, prítomnosť a subjekt 92,5–98 %, negované symptómy hlásené ako prítomné 0 % v každom jazyku |
| Klinické hodnotenie | zatiaľ žiadne: `clinical_review: false` pri každej odpovedi |
| Štandardy | HL7 FHIR R4 (`CodeSystem`, `ValueSet`, `ConceptMap`, `Observation`), ICD-10, ICD-11, LOINC pre laboratórne výsledky |

## 1. Pipeline

Príznak prechádza štyrmi krokmi. Text osoby sa nikdy nezmení; každý krok pridáva dáta vedľa neho.

1.  **Zachytávanie.** Surový záznam sa uloží tak, ako bol napísaný, s časom jeho zaznamenania, časovým pásmom telefónu, jazykom a voliteľne intenzitou (1–10), začiatkom a koncom. Nič v neskorších krokoch ho prepisuje.
2.  **Normalizácia (AI).** Veľký jazykový model (Google Gemini na Vertex AI) číta text a pre každý spomenutý príznak vráti: primárny kód ICD-10, voliteľné sekundárne kódy, krátky štítok a dva atribúty, *assertion* (prítomný, neprítomný, vyriešený, hypotetický, neistý) a *subject* (daná osoba alebo niekto iný). Model si môže vybrať kódy iba z Anpheros slovníka; akákoľvek iná odpoveď, vynechaný záznam alebo neplatný primárny kód sa počíta ako neúspešný pokus, nikdy ako „neznámy príznak“.
3.  **Mapovanie konceptov (deterministické).** Kód ICD-10 sa mapuje na Anpheros koncept a z neho na ICD-11 a telesný systém. Tento krok používa pevné tabuľky, nie AI, takže rovnaký kód vždy poskytne rovnaký koncept.
4.  **Publikovanie.** Iba príznaky, ktoré sú **prítomné** a **týkajú sa danej osoby**, sa stanú FHIR Observations v zázname osoby, a to iba po úspešnej normalizácii. Ak neskoršia úprava alebo re-normalizácia toto zmení, Observation sa stiahne; história verzií zostáva.

## 2. Prítomnosť, čas a pôvodca

Klinický text často spomína symptómy, ktoré osoba nemá. Klinické spracovanie prirodzeného jazyka to nazýva detekcia *negácie*, *časovosti* a *pôvodcu* (rodina metód NegEx a ConText). Engine spracováva tie isté tri otázky pomocou atribútov assertion a subject modelu:

| Napísané | Assertion / subject | Publikované ako symptóm osoby? |
|---|---|---|
| "I've had a headache since Tuesday" | present / self | yes |
| "my head doesn't hurt any more" | resolved / self | no |
| "I might get a fever tomorrow" | hypothetical / self | no |
| "my mother has a cough" | present / other | no |

Sťažnosť príbuzného sa nikdy automaticky nepremení na rodinnú anamnézu.

## 3. Slovník a jeho kontrola

Slovník pokrýva kapitolu XVIII ICD-10 (R00–R94 a od verzie 2026.10.3 jej nepriradené podkategórie ako R06.0 dýchavičnosť) a kde WHO klasifikuje symptóm v inej kapitole, kód WHO: zápcha K59.0, tinnitus H93.1, dvojité videnie H53.2, rozmazané videnie H53.8, svrbenie L29.9, bolesť kĺbov M25.5, bolesť chrbta M54, problémy so spánkom G47.

- **ICD-10.** Každý kód a anglický názov bol skontrolovaný pomocou prehliadača WHO ICD-10 Verzia 2019, vrátane poznámok o zahrnutí a vylúčení každého kódu. Tam, kde poznámky presunuli symptóm inam (napríklad R19.4 vylučuje zápchu), slovník nasledoval WHO.
- **ICD-11.** Každý koncept je mapovaný na kód ICD-11 MMS 2025-01 prevzatý z WHO Simple Tabulation a porovnaný s oficiálnou tabuľkou mapovania WHO ICD-10 → ICD-11. Motor používa kód symptómu z kapitoly 21 *symptóm* namiesto kódu choroby (bolesť hlavy → MB4D, nie 8A8Z "poruchy bolesti hlavy"); každé z 21 odchýlok od štatistickej tabuľky WHO je uvedené s dôvodom v súbore vydania. 67 mapovaní je ekvivalentných, zvyšné sú označené ako širšie, užšie alebo nepresné.
- **Dokumentované voľby.** "Migréna" napísaná osobou je kódovaná ako bolesť hlavy (R51) a neurčená hnačka ako R19, pretože alternatívne kódy WHO (G43, A09) sú diagnózy; motor zaznamenáva hlásené symptómy, nie diagnózy.
- **Preklady.** Anglické názvy sú názvy WHO. Názvy v 18 ďalších jazykoch sú strojové preklady revidované termín po termíne, s pomocou AI, oproti názvom WHO (`review: ai_reviewed`); päť bolo prepísaných v každom jazyku, kde význam nezodpovedal kódu. Žiadny profesionálny lekársky prekladateľ ich zatiaľ neskontroloval.
- **Varovné príznaky.** Citované slovo od slova, nikdy parafrázované, z verejne dostupných stránok CDC (mŕtvica, infarkt) a NIDDK (hnačka, zápcha), každý s uvedením zdroja, licencie a poznámky, že nejde o diagnózu. Tam, kde citácia uvádza 9-1-1, poznámka pridáva európske 112.

## 4. Vyhodnotenie

Normalizátor je vyhodnotený na pevnej sade 100 syntetických prípadov napísaných v rumunčine (jazyk väčšiny súčasných používateľov), každý s očakávaným primárnym kódom, tvrdením a subjektom. 32 z prípadov nie je zámerne prítomných: negovaných, vyriešených, hypotetických, neistých alebo sa týkajúcich inej osoby. Výsledky s aktuálnym promptom (verzia 3, 15. októbra 2026):

| Metrika | Výsledok | Cieľ |
|---|---|---|
| Primárny kód správny | 100 % | ≥ 85 % |
| Tvrdenie a subjekt oboje správne | 98 % | — |
| Negované symptómy hlásené ako prítomné | 0 % | ≤ 3 % |

Dve chyby boli administratívne záznamy ("návšteva u kardiológa v utorok", "chcem schudnúť 5 kg") klasifikované ako hypotetické namiesto prítomných; ani jeden nie je symptóm. Testovacia sada nebola preskúmaná klinickým lekárom, takže skóre sú orientačné.

**Iné jazyky (16. októbra 2026).** 40 prípadov, pokrývajúcich každú kategóriu, bolo preložených do angličtiny, španielčiny, nemčiny a francúzštiny s rovnakými očakávanými odpoveďami; neformálne prípady boli prepísané v neformálnom štýle každého jazyka. Inštrukcie pre model zostali rovnaké.

| Jazyk | Prípady | Primárny kód | Prítomnosť a subjekt | Negované hlásené ako prítomné |
|---|---|---|---|---|
| Rumunčina | 100 | 100 % | 98 % | 0 % |
| Angličtina | 40 | 100 % | 97.5 % | 0 % |
| Španielčina | 40 | 97.5 % | 92.5 % | 0 % |
| Nemčina | 40 | 100 % | 97.5 % | 0 % |
| Francúzština | 40 | 100 % | 95 % | 0 % |

Väčšina zostávajúcich chýb sú rovnaké administratívne záznamy ("návšteva u kardiológa v utorok", "preventívna prehliadka, všetko v poriadku") alebo voľba medzi dvoma neprítomnými stavmi ("dnes bez horúčky" ako vyriešené namiesto neprítomné); žiadny z nich nepublikuje symptóm. Jediný rozdiel v kódovaní bol v španielčine "escalofríos y malestar" (zimnica a nevoľnosť) kódovaný ako nevoľnosť (R53) so zimnicou (R68) ako sekundárnym kódom, namiesto obrátene.

Mená zobrazované ľuďom sledujú ich jazyk: aplikácia zobrazuje názov konceptu v jazyku používateľa (najprv bežný názov) a poznámku o prítomnosti ("vyriešené", "niekto iný") v 20 jazykoch aplikácie.

**V produkcii (16. októbra 2026)**, po skontrolovaní slovníka oproti WHO, bol každý uložený symptóm znovu normalizovaný. Na záznamoch skutočných používateľov: všetky symptómy normalizované, 0 prítomných symptómov ponechaných ako "nevyjasnené" a 0 symptómov, ktoré nie sú prítomné, publikovaných ako vlastné osoby (nezávislý audit publikovaných Pozorovaní).

## 5. Podobné prípady (vo vývoji)

Nasledujúci komponent porovnáva ľudí na základe ich symptómov a abnormálnych laboratórnych výsledkov, aby navrhol, iba s výslovným súhlasom, ľudí, ktorí hlásia niečo veľmi podobné.

- **Profil.** Prezentované, vlastnoručne nahlásené symptómy za posledných 90 dní podľa konceptu Anpheros a laboratórne výsledky za posledných 180 dní mimo referenčného rozsahu vytlačeného laboratóriom, podľa kódu LOINC. Profily sú nezávislé od jazyka a krajiny: laboratórna správa v rumunčine a správa v angličtine sa mapujú na rovnaký kód LOINC.
- **Skóre.** Vážený Jaccardov index: zdieľané príznaky / všetky príznaky oboch osôb. Veľmi bežné symptómy (bolesť hlavy, bolesť brucha, únava, horúčka, kašeľ, závraty...) majú váhu 0.25, špecifické symptómy 1, abnormálny laboratórny výsledok 1.5. Od 50 účastníkov sa váhy tiež škálujú podľa toho, aký zriedkavý je príznak v populácii (inverzná frekvencia dokumentov). Dva rôzne príznaky v rovnakom telesnom systéme získavajú čiastočné kredity.
- **Pravidlo.** Pár sa zvažuje iba vtedy, ak existujú najmenej tri zdieľané špecifické symptómy, alebo dva plus zdieľaný abnormálny laboratórny výsledok: bežné sťažnosti samy o sebe nikdy neurobia dvoch ľudí „podobnými“. Pozvánka sa ponúka od skóre 0.70; osoba vidí podobné prípady od 0.80.
- **Ochrana osobných údajov.** Len dospelí držitelia účtov, výslovný súhlas (GDPR čl. 9), kedykoľvek odvolateľný s okamžitým vymazaním. Osoba vidí počty a zdieľané príznaky, nikdy nie to, kto sú ostatní.

Nenavrhuje diagnózu ani chorobu.

## 6. Ako aplikácie používajú dáta

- **Anpheros Daily** (iOS, Android, Mac, web): každý symptóm, ktorý osoba zaznamená, prechádza vyššie uvedeným procesom; osoba si môže výsledok pozrieť a opraviť.
- **Anpheros Platform**: symptómy sú uložené ako FHIR `Observation`s s kategóriou `urn:anpheros:observation-category|symptom`, pričom obe zahŕňajú kódy aj vlastný text osoby. Akákoľvek aplikácia s povolením osoby si ich môže prečítať.
- **Vaša aplikácia**: vyhľadávajte koncepty pomocou `GET /v1/terminology/symptoms`, rozbaľte FHIR `ValueSet`, prekladajte kódy pomocou `ConceptMap`s do ICD-10 a ICD-11 a validujte Observations voči profilu `anpheros-symptom`. Pozrite si [Symptom data API](https://developers.anpheros.com/sk/guides/symptom-data-api) pre požiadavky a odpovede.
- **AI asistenti a agenti** čítajú rovnaké štruktúrované dáta prostredníctvom [Context API](https://developers.anpheros.com/sk/guides/ai-agents-medical-data) namiesto voľného textu, takže ich odpovede môžu citovať kódy.

## 7. Obmedzenia

- Názvy a kódy príznakov generuje engine; nediagnostikuje, neradí príčiny ani nespája príznaky s chorobami.
- Žiaden klinický lekár zatiaľ neskúmal slovník, preklady ani varovné signály.
- Hodnotiace sady sú syntetické; 15 z 20 jazykov zatiaľ nemá hodnotiace sady.
- ICD-11 je licencovaný WHO pod CC BY-ND 3.0 IGO; kódy a názvy sú reprodukované nezmenené.

## Súvisiace

- [Symptom data API](https://developers.anpheros.com/sk/guides/symptom-data-api): koncepty, terminológia FHIR a symptómy hlásené pacientom
- [Anpheros Search](https://developers.anpheros.com/sk/guides/anpheros-search): rovnaké symptómy spolu s diagnózami a liečbami v jednom verejnom katalógu, každá položka s jej zdrojmi
- [FHIR code systems](https://developers.anpheros.com/sk/guides/fhir-code-systems)
- [Longitudinal patient data API](https://developers.anpheros.com/sk/guides/longitudinal-patient-data-api)
