Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Движок симптомов Anpheros: методология
Как свободные текстовые описания симптомов на любом языке превращаются в концепции ВОЗ ICD-10 и ICD-11: нормализатор ИИ, обнаружение присутствия и переживающего, проверенный ВОЗ словарь, результаты оценки, сопоставление схожих случаев и ограничения.
Anpheros Symptom Engine преобразует то, что человек пишет о своих ощущениях, своими словами и на своем языке, в международные клинические концепции: стабильный идентификатор Anpheros, код ВОЗ ICD-10, код ВОЗ ICD-11 и системную локализацию, а также информацию о том, присутствует ли симптом, разрешен ли он, является ли гипотетическим или относится к другому человеку. Он работает в производственной среде за Anpheros Daily, публикует свои результаты в виде HL7 FHIR R4 Observations на Anpheros Platform и предоставляет ту же терминологию любому приложению через REST и FHIR API. На этой странице описано, как он работает, как он был проверен, что он измеряет и каковы его ограничения.
Обзор
| Концепции | 274 (197 симптомов, 77 результатов), идентификаторы SYM-0001…, никогда не повторяются |
| Классификации | WHO ICD-10 (версия 2019) и WHO ICD-11 MMS (2025-01) с эквивалентностью каждого сопоставления |
| Системы органов | 13, взяты из блоков главы 21 ICD-11 (нервная, пищеварительная, дыхательная, кожная и т. д.) |
| Языки | названия на 20 языках; свободный текст на родном языке человека |
| Предупреждающие знаки | 32, для 14 концепций, дословно цитируемые из CDC и NIDDK |
| Оценка нормализатора | 5 языков (румынский, английский, испанский, немецкий, французский): основной код 97,5–100 %, наличие и субъект 92,5–98 %, отрицательные симптомы, сообщаемые как присутствующие, 0 % на каждом языке |
| Клинический обзор | пока нет: clinical_review: false по каждому ответу |
| Стандарты | HL7 FHIR R4 (CodeSystem, ValueSet, ConceptMap, Observation), ICD-10, ICD-11, LOINC для результатов лабораторных исследований |
1. Конвейер обработки
Симптом проходит через четыре этапа. Текст пациента никогда не изменяется; каждый этап добавляет данные рядом с ним.
- Захват. Исходная запись сохраняется как есть, с указанием момента ее фиксации, часового пояса телефона, языка и, опционально, интенсивности (1–10), начала и окончания. Никакие последующие этапы не перезаписывают ее.
- Нормализация (ИИ). Большая языковая модель (Google Gemini на Vertex AI) читает текст и возвращает для каждого упомянутого симптома: основной код ICD-10, дополнительные коды (опционально), краткую метку и два атрибута: утверждение (присутствует, отсутствует, разрешен, гипотетический, неопределенный) и субъект (сам пациент или кто-то другой). Модель может выбирать коды только из словаря Anpheros; любой другой ответ, пропущенная запись или недействительный основной код считаются неудачной попыткой, но никогда "неизвестным симптомом".
- Сопоставление концепций (детерминированное). Код ICD-10 сопоставляется с концепцией Anpheros и, исходя из нее, с ICD-11 и системой органов. Этот этап использует фиксированные таблицы, а не ИИ, поэтому один и тот же код всегда дает одну и ту же концепцию.
- Публикация. Только симптомы, которые присутствуют и относятся к пациенту, становятся FHIR Observations в записи пациента, и только после успешной нормализации. Если последующее редактирование или повторная нормализация изменяют это, Observation отзывается; история версий сохраняется.
2. Присутствие, время и субъект
Клинический текст часто упоминает симптомы, которых у человека нет. Клиническая обработка естественного языка называет это обнаружением отрицания, временной характеристики и субъекта (семейство методов NegEx и ConText). Движок обрабатывает те же три вопроса с помощью атрибутов утверждения (assertion) и субъекта (subject) модели:
| Написано | Утверждение / субъект | Опубликовано как симптом человека? |
|---|---|---|
| "У меня головная боль с вторника" | present / self | yes |
| "у меня больше не болит голова" | resolved / self | no |
| "у меня может подняться температура завтра" | hypothetical / self | no |
| "у моей матери кашель" | present / other | no |
Жалоба родственника никогда автоматически не превращается в семейный анамнез.
3. Словарный запас и как он проверялся
Словарный запас охватывает главу XVIII МКБ-10 (R00–R94, а с версии 2026.10.3 — ее не остаточные подкатегории, такие как R06.0 одышка) и, где ВОЗ классифицирует симптом в другой главе, код ВОЗ: запор K59.0, шум в ушах H93.1, двоение в глазах H53.2, нечеткое зрение H53.8, зуд L29.9, боль в суставах M25.5, боль в спине M54, проблемы со сном G47.
- МКБ-10. Каждый код и английское название были проверены в браузере ВОЗ МКБ-10 Версии 2019 года, включая примечания о включении и исключении для каждого кода. Там, где примечания перемещали симптом в другое место (например, R19.4 исключает запор), словарный запас следовал за ВОЗ.
- МКБ-11. Каждое понятие сопоставляется с кодом МКБ-11 MMS 2025-01 из таблицы ВОЗ Simple Tabulation и сравнивается с официальной таблицей сопоставления ВОЗ МКБ-10 → МКБ-11. Движок использует код симптома из главы 21, а не код заболевания (головная боль → MB4D, а не 8A8Z "расстройства головной боли"); каждое из 21 отклонений от статистической таблицы ВОЗ перечислено с указанием причины в файле выпуска. 67 сопоставлений эквивалентны, остальные отмечены как более широкие, более узкие или неточные.
- Документированные решения. "Мигрень", написанная человеком, кодируется как головная боль (R51), а неуточненная диарея — как R19, поскольку альтернативные коды ВОЗ (G43, A09) являются диагнозами; движок записывает сообщаемые симптомы, а не диагнозы.
- Переводы. Английские названия — это заголовки ВОЗ. Названия на 18 других языках являются машинным переводом, проверенным пословным сравнением с заголовками ВОЗ с помощью ИИ (
review: ai_reviewed); пять были переписаны на каждом языке, где значение не соответствовало коду. Профессиональные медицинские переводчики их еще не проверяли. - Предупреждающие знаки. Цитаты дословно, никогда не перефразированные, с общедоступных страниц CDC (инсульт, сердечный приступ) и NIDDK (диарея, запор), каждая с указанием источника, лицензии и примечанием о том, что это не диагноз. Там, где в цитате указано 9-1-1, в примечании добавляется европейский номер 112.
4. Оценка
Нормализатор оценивается на фиксированном наборе из 100 синтетических случаев, написанных на румынском языке (язык большинства текущих пользователей), каждый с ожидаемым основным кодом, утверждением и субъектом. 32 случая намеренно отсутствуют: отрицательные, разрешенные, гипотетические, неопределенные или касающиеся другого человека. Результаты с текущим запросом (версия 3, 15 октября 2026 г.):
| Метрика | Результат | Цель |
|---|---|---|
| Основной код верен | 100 % | ≥ 85 % |
| Утверждение и субъект оба верны | 98 % | — |
| Отрицательные симптомы, сообщенные как присутствующие | 0 % | ≤ 3 % |
Две ошибки были связаны с административными записями ("прием у кардиолога во вторник", "я хочу похудеть на 5 кг"), классифицированными как гипотетические вместо присутствующих; ни одно из них не является симптомом. Тестовый набор не был рассмотрен клиницистом, поэтому оценки являются ориентировочными.
Другие языки (16 октября 2026 г.). 40 случаев, охватывающих каждую категорию, были переведены на английский, испанский, немецкий и французский языки с теми же ожидаемыми ответами; неформальные случаи были переписаны в неформальном стиле каждого языка. Инструкции для модели остались прежними.
| Язык | Случаи | Основной код | Присутствие и субъект | Отрицательные, сообщенные как присутствующие |
|---|---|---|---|---|
| Румынский | 100 | 100 % | 98 % | 0 % |
| Английский | 40 | 100 % | 97.5 % | 0 % |
| Испанский | 40 | 97.5 % | 92.5 % | 0 % |
| Немецкий | 40 | 100 % | 97.5 % | 0 % |
| Французский | 40 | 100 % | 95 % | 0 % |
Большинство оставшихся ошибок — это те же административные записи ("прием у кардиолога во вторник", "осмотр, все в порядке") или выбор между двумя отсутствующими состояниями ("сегодня нет температуры" как разрешенное, а не отсутствующее); ни одно из них не публикует симптом. Единственное кодовое различие было в испанском "escalofríos y malestar" (озноб и недомогание), закодированном как недомогание (R53) с ознобом (R68) в качестве вторичного кода, а не наоборот.
Имена, отображаемые людям, соответствуют их языку: приложение отображает название концепции на языке пользователя (сначала обычное название) и примечание о присутствии ("разрешено", "кто-то другой") на 20 языках приложения.
В продакшене (16 октября 2026 г.) после проверки словаря по данным ВОЗ каждый сохраненный симптом был повторно нормализован. В записях реальных пользователей: все симптомы нормализованы, 0 присутствующих симптомов оставлены как "неясные", и 0 симптомов, которые не присутствуют, опубликованы как собственные для человека (независимый аудит опубликованных наблюдений).
5. Похожие случаи (в разработке)
Следующий компонент сравнивает людей по их симптомам и аномальным результатам лабораторных исследований, чтобы предложить, только с явного согласия, людей, сообщающих об очень похожих случаях.
- Профиль. Представлены симптомы за последние 90 дней, сообщенные самим человеком, по концепции Anpheros, и результаты лабораторных исследований за последние 180 дней вне референсного диапазона, напечатанные лабораторией, по коду LOINC. Профили не зависят от языка и страны: лабораторный отчет на румынском и отчет на английском языке соответствуют одному и тому же коду LOINC.
- Оценка. Взвешенный индекс Жаккара: общие признаки, деленные на все признаки обоих людей. Очень распространенные симптомы (головная боль, боль в животе, усталость, лихорадка, кашель, головокружение…) имеют вес 0,25, специфические симптомы — 1, аномальный результат лабораторного исследования — 1,5. Из 50 участников веса также масштабируются в зависимости от редкости признака в популяции (обратная частота документов). Два разных признака в одной и той же системе организма приносят частичный зачет.
- Правило. Пара рассматривается только при наличии как минимум трех общих специфических симптомов или двух симптомов плюс общий аномальный результат лабораторного исследования: одни только распространенные жалобы никогда не делают двух людей «похожими». Приглашение предлагается при оценке 0,70; человек видит похожие случаи при оценке 0,80.
- Конфиденциальность. Только совершеннолетние владельцы учетных записей, явное согласие (GDPR Ст. 9), которое может быть отозвано в любое время с немедленным удалением. Человек видит количество и общие признаки, но никогда не видит, кто эти другие люди.
Это не предполагает постановку диагноза или заболевания.
6. Как приложения используют это
- Anpheros Daily (iOS, Android, Mac, web): каждый симптом, который отмечает человек, проходит через описанный выше конвейер; человек может видеть и корректировать результат.
- Anpheros Platform: симптомы хранятся как FHIR
Observations с категориейurn:anpheros:observation-category|symptom, включая как коды, так и собственный текст человека. Любое приложение с согласия человека может их читать. - Ваше приложение: ищите концепции с помощью
GET /v1/terminology/symptoms, расширяйте FHIRValueSet, переводите коды с помощьюConceptMaps в ICD-10 и ICD-11, а также проверяйте Observations на соответствие профилюanpheros-symptom. См. Symptom data API для запросов и ответов. - AI-ассистенты и агенты читают те же структурированные данные через Context API вместо свободного текста, поэтому их ответы могут ссылаться на коды.
7. Ограничения
- Движок называет и кодирует симптомы; он не ставит диагнозы, не ранжирует причины и не связывает симптомы с заболеваниями.
- Ни один клиницист еще не просмотрел словарь, переводы или предупреждающие знаки.
- Наборы для оценки являются синтетическими; 15 из 20 языков пока не имеют набора для оценки.
- ICD-11 лицензирован ВОЗ по лицензии CC BY-ND 3.0 IGO; коды и названия воспроизведены без изменений.
Связанные материалы
- API данных о симптомах: концепции, терминология FHIR и симптомы, сообщенные пациентом
- Anpheros Search: те же симптомы вместе с состояниями и методами лечения в одном общедоступном каталоге, каждая запись с указанием источников
- Системы кодов FHIR
- API продольных данных пациента
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card