Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Anpheros Symptom Engine: Methodik
Wie Freitext-Symptome in jeder Sprache zu WHO ICD-10 und ICD-11 Konzepten werden: der KI-Normalisierer, Erkennung von Anwesenheit und Erlebendem, das von der WHO geprüfte Vokabular, Evaluationsergebnisse, ähnliche Fälle und Grenzen.
Die Anpheros Symptom Engine wandelt das, was eine Person in ihren eigenen Worten und ihrer eigenen Sprache über ihr Befinden schreibt, in internationale klinische Konzepte um: eine stabile Anpheros-ID, einen WHO ICD-10-Code, einen WHO ICD-11-Code und ein Körpersystem, zusammen mit der Angabe, ob das Symptom vorhanden, behoben, hypothetisch oder auf eine andere Person bezogen ist. Sie läuft in der Produktion hinter Anpheros Daily, veröffentlicht ihre Ergebnisse als HL7 FHIR R4 Observations auf der Anpheros Platform und stellt dieselbe Terminologie über eine REST- und FHIR-API für jede Anwendung bereit. Diese Seite beschreibt, wie sie funktioniert, wie sie überprüft wurde, was sie misst und wo ihre Grenzen liegen.
Auf einen Blick
| Konzepte | 274 (197 Symptome, 77 Befunde), Identifikatoren SYM-0001…, niemals wiederverwendet |
| Klassifikationen | WHO ICD-10 (Version 2019) und WHO ICD-11 MMS (2025-01), mit der Äquivalenz jeder Zuordnung |
| Körpersysteme | 13, entnommen aus den ICD-11-Kapitel 21 Blöcken (Nerven, Verdauung, Atmung, Haut…) |
| Sprachen | Namen in 20 Sprachen; Freitext in der Sprache der Person |
| Warnzeichen | 32, für 14 Konzepte, wörtlich zitiert von CDC und NIDDK |
| Normalizer-Evaluierung | 5 Sprachen (Rumänisch, Englisch, Spanisch, Deutsch, Französisch): Primärcode 97,5–100 %, Anwesenheit und Subjekt 92,5–98 %, negierte Symptome als vorhanden gemeldet 0 % in jeder Sprache |
| Klinische Überprüfung | noch keine: clinical_review: false bei jeder Antwort |
| Standards | HL7 FHIR R4 (CodeSystem, ValueSet, ConceptMap, Observation), ICD-10, ICD-11, LOINC für Laborergebnisse |
1. Die Pipeline
Ein Symptom durchläuft vier Schritte. Der Text der Person wird nie verändert; jeder Schritt fügt Daten daneben hinzu.
- Erfassung. Der Rohdatensatz wird so gespeichert, wie er eingegeben wurde, zusammen mit dem Zeitpunkt der Erfassung, der Zeitzone des Telefons, der Sprache und optional Intensität (1–10), Beginn und Ende. Nichts nachgelagert schreibt ihn um.
- Normalisierung (KI). Ein großes Sprachmodell (Google Gemini auf Vertex AI) liest den Text und gibt für jedes erwähnte Symptom zurück: einen primären ICD-10-Code, optionale sekundäre Codes, ein kurzes Label und zwei Attribute, Assertion (present, absent, resolved, hypothetical, uncertain) und subject (the person, or someone else). Das Modell darf nur Codes aus dem Anpheros-Vokabular auswählen; jede andere Antwort, ein ausgelassener Eintrag oder ein ungültiger primärer Code zählt als fehlgeschlagener Versuch, niemals als "unbekanntes Symptom".
- Konzeptzuordnung (deterministisch). Der ICD-10-Code wird dem Anpheros-Konzept und von dort ICD-11 und dem Körpersystem zugeordnet. Dieser Schritt verwendet feste Tabellen, keine KI, sodass derselbe Code immer dasselbe Konzept ergibt.
- Veröffentlichung. Nur Symptome, die present und about the person sind, werden zu FHIR Observations im Datensatz der Person, und das erst nach erfolgreicher Normalisierung. Wenn eine spätere Bearbeitung oder Re-Normalisierung dies ändert, wird die Observation zurückgezogen; die Versionshistorie bleibt erhalten.
2. Präsenz, Zeit und Erlebender
Klinische Texte erwähnen oft Symptome, die die Person nicht hat. Die klinische Verarbeitung natürlicher Sprache nennt dies Negation, Temporalität und Erlebender-Erkennung (die Methoden der NegEx- und ConText-Familie). Die Engine behandelt dieselben drei Fragen mit den Attributen "assertion" und "subject" des Modells:
| Geschrieben | Assertion / subject | Als Symptom der Person veröffentlicht? |
|---|---|---|
| "Ich habe seit Dienstag Kopfschmerzen" | present / self | ja |
| "Mein Kopf tut nicht mehr weh" | resolved / self | nein |
| "Ich könnte morgen Fieber bekommen" | hypothetical / self | nein |
| "Meine Mutter hat Husten" | present / other | nein |
Die Beschwerde eines Verwandten wird niemals automatisch in die Familiengeschichte übernommen.
3. Das Vokabular und dessen Überprüfung
Das Vokabular umfasst ICD-10 Kapitel XVIII (R00–R94 und seit Release 2026.10.3 dessen nicht-residuelle Unterkategorien wie R06.0 Dyspnoe) und, wo die WHO ein Symptom in einem anderen Kapitel klassifiziert, den WHO-Code: Obstipation K59.0, Tinnitus H93.1, Doppeltsehen H53.2, verschwommenes Sehen H53.8, Juckreiz L29.9, Gelenkschmerzen M25.5, Rückenschmerzen M54, Schlafstörungen G47.
- ICD-10. Jeder Code und jeder englische Titel wurde gegen den WHO ICD-10 Version 2019 Browser geprüft, einschließlich der Ein- und Ausschlussnotizen jedes Codes. Wo die Notizen ein Symptom woandershin verschoben (z. B. R19.4 schließt Obstipation aus), folgte das Vokabular der WHO.
- ICD-11. Jedes Konzept wird einem ICD-11 MMS 2025-01 Code aus der WHO Simple Tabulation zugeordnet und mit der offiziellen WHO ICD-10 → ICD-11 Mapping-Tabelle verglichen. Die Engine verwendet den Kapitel 21 Symptom-Code anstelle eines Krankheits-Codes (Kopfschmerzen → MB4D, nicht 8A8Z "Kopfschmerzerkrankungen"); jede der 21 Abweichungen von der WHO-Statistik-Tabelle ist mit ihrem Grund in der Release-Datei aufgeführt. 67 Mappings sind äquivalent, die restlichen sind als breiter, schmaler oder ungenau markiert.
- Dokumentierte Entscheidungen. "Migräne", wie von einer Person geschrieben, wird als Kopfschmerzen (R51) kodiert, und unspezifische Durchfallerkrankungen als R19, da die alternativen WHO-Codes (G43, A09) Diagnosen sind; die Engine erfasst gemeldete Symptome, keine Diagnosen.
- Übersetzungen. Englische Namen sind die WHO-Titel. Namen in 18 weiteren Sprachen sind maschinelle Übersetzungen, die Begriff für Begriff mit KI-Unterstützung gegen die WHO-Titel überprüft wurden (
review: ai_reviewed); fünf wurden in jeder Sprache neu geschrieben, in der die Bedeutung nicht mit dem Code übereinstimmte. Bisher hat kein professioneller medizinischer Übersetzer diese überprüft. - Warnhinweise. Wortwörtlich zitiert, niemals paraphrasiert, von Public-Domain-Seiten der CDC (Schlaganfall, Herzinfarkt) und NIDDK (Durchfall, Verstopfung), jeweils mit Quelle, Lizenz und dem Hinweis, dass es sich nicht um eine Diagnose handelt. Wo ein Zitat 9-1-1 angibt, fügt die Notiz die europäische 112 hinzu.
4. Evaluierung
Der Normalisierer wird anhand eines festen Satzes von 100 synthetischen Fällen in rumänischer Sprache (der Sprache der meisten aktuellen Benutzer) evaluiert, wobei jeder Fall den erwarteten Primärcode, die Assertion und das Subjekt enthält. 32 der Fälle sind absichtlich nicht vorhanden: negiert, aufgelöst, hypothetisch, unsicher oder betreffen eine andere Person. Ergebnisse mit dem aktuellen Prompt (Version 3, 15. Oktober 2026):
| Metrik | Ergebnis | Ziel |
|---|---|---|
| Primärcode korrekt | 100 % | ≥ 85 % |
| Assertion und Subjekt beide korrekt | 98 % | — |
| Negierte Symptome als vorhanden gemeldet | 0 % | ≤ 3 % |
Die beiden Fehler waren administrative Einträge ("ein Termin beim Kardiologen am Dienstag", "Ich möchte 5 kg abnehmen"), die als hypothetisch statt als vorhanden klassifiziert wurden; keiner davon ist ein Symptom. Der Testdatensatz wurde nicht von einem Kliniker überprüft, daher sind die Ergebnisse indikativ.
Andere Sprachen (16. Oktober 2026). 40 der Fälle, die jede Kategorie abdecken, wurden ins Englische, Spanische, Deutsche und Französische übersetzt, mit denselben erwarteten Antworten; die informellen Fälle wurden in der jeweiligen informellen Sprache neu formuliert. Die Anweisungen an das Modell blieben gleich.
| Sprache | Fälle | Primärcode | Anwesenheit und Subjekt | Negierte als vorhanden gemeldet |
|---|---|---|---|---|
| Rumänisch | 100 | 100 % | 98 % | 0 % |
| Englisch | 40 | 100 % | 97,5 % | 0 % |
| Spanisch | 40 | 97,5 % | 92,5 % | 0 % |
| Deutsch | 40 | 100 % | 97,5 % | 0 % |
| Französisch | 40 | 100 % | 95 % | 0 % |
Die meisten verbleibenden Fehler sind dieselben administrativen Einträge ("Kardiologentermin am Dienstag", "Check-up, alles in Ordnung") oder eine Wahl zwischen zwei nicht vorhandenen Zuständen ("kein Fieber heute" als aufgelöst statt abwesend); keiner davon veröffentlicht ein Symptom. Der einzige Kodierungsunterschied war das spanische "escalofríos y malestar" (Schüttelfrost und Unwohlsein), das als Unwohlsein (R53) mit Schüttelfrost (R68) als Sekundärcode kodiert wurde, anstatt umgekehrt.
Die Personen angezeigten Namen folgen ihrer Sprache: Die App zeigt den Konzeptnamen in der Sprache des Benutzers (zuerst den Laiennamen) und die Anwesenheitsnotiz ("aufgelöst", "jemand anderes") in den 20 Sprachen der App an.
In Produktion (16. Oktober 2026), nachdem das Vokabular gegen die WHO geprüft wurde, wurde jedes gespeicherte Symptom neu normalisiert. In den Aufzeichnungen echter Benutzer: alle Symptome normalisiert, 0 vorhandene Symptome als "unklar" belassen und 0 nicht vorhandene Symptome als die des Benutzers veröffentlicht (unabhängige Prüfung der veröffentlichten Beobachtungen).
5. Ähnliche Fälle (in Entwicklung)
Die nächste Komponente vergleicht Personen anhand ihrer Symptome und abnormalen Laborergebnisse, um – nur mit ausdrücklicher Zustimmung – Personen vorzuschlagen, die etwas sehr Ähnliches berichten.
- Profil. Aktuelle, selbstberichtete Symptome der letzten 90 Tage nach Anpheros-Konzept und Laborergebnisse der letzten 180 Tage außerhalb des vom Labor gedruckten Referenzbereichs nach LOINC-Code. Profile sind unabhängig von Sprache und Land: Ein Laborbericht in Rumänisch und einer in Englisch werden demselben LOINC-Code zugeordnet.
- Score. Ein gewichteter Jaccard-Index: gemeinsame Anzeichen geteilt durch alle Anzeichen beider Personen. Sehr häufige Symptome (Kopfschmerzen, Bauchschmerzen, Müdigkeit, Fieber, Husten, Schwindel…) wiegen 0,25, spezifische Symptome 1, ein abnormales Laborergebnis 1,5. Ab 50 Teilnehmern werden die Gewichte auch danach skaliert, wie selten ein Anzeichen in der Population ist (inverse Dokumentfrequenz). Zwei verschiedene Anzeichen im selben Körpersystem erhalten Teilpunkte.
- Regel. Ein Paar wird nur berücksichtigt, wenn mindestens drei gemeinsame spezifische Symptome vorliegen oder zwei plus ein gemeinsames abnormales Laborergebnis: Häufige Beschwerden allein machen zwei Personen nie "ähnlich". Eine Einladung wird ab einem Score von 0,70 angeboten; die Person sieht ähnliche Fälle ab 0,80.
- Datenschutz. Nur erwachsene Kontoinhaber, ausdrückliche Zustimmung (DSGVO Art. 9), jederzeit mit sofortiger Löschung widerrufbar. Eine Person sieht Zählungen und die gemeinsamen Anzeichen, niemals, wer die anderen sind.
Es wird keine Diagnose oder Krankheit vorgeschlagen.
6. Wie Anwendungen es nutzen
- Anpheros Daily (iOS, Android, Mac, Web): Jedes Symptom, das eine Person notiert, durchläuft die obige Pipeline; die Person kann das Ergebnis sehen und korrigieren.
- Anpheros Platform: Symptome werden als FHIR
Observations mit Kategorieurn:anpheros:observation-category|symptomgespeichert, sowohl Codes als auch der eigene Text der Person. Jede Anwendung mit der Zustimmung der Person kann sie lesen. - Ihre Anwendung: Suchen Sie nach Konzepten mit
GET /v1/terminology/symptoms, erweitern Sie die FHIRValueSet, übersetzen Sie Codes mit denConceptMaps zu ICD-10 und ICD-11 und validieren Sie Observations gegen dasanpheros-symptomProfil. Siehe Symptom Data API für Anfragen und Antworten. - KI-Assistenten und Agenten lesen dieselben strukturierten Daten über die Context API anstelle von Freitext, sodass ihre Antworten Codes zitieren können.
7. Einschränkungen
- Die Engine benennt und kodiert Symptome; sie diagnostiziert keine Krankheiten, ordnet Ursachen nicht ein oder verknüpft Symptome mit Krankheiten.
- Kein Kliniker hat bisher das Vokabular, die Übersetzungen oder die Warnhinweise überprüft.
- Die Evaluationsdatensätze sind synthetisch; 15 der 20 Sprachen haben noch keinen Evaluationsdatensatz.
- ICD-11 ist von der WHO unter CC BY-ND 3.0 IGO lizenziert; Codes und Titel werden unverändert wiedergegeben.
Verwandte Themen
- Symptom-Daten-API: Konzepte, FHIR-Terminologie und vom Patienten berichtete Symptome
- Anpheros Search: dieselben Symptome zusammen mit Erkrankungen und Behandlungen in einem öffentlichen Katalog, jeder Eintrag mit seinen Quellen
- FHIR-Codesysteme
- Longitudinal-Patientendaten-API
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card