AnpherosAnpheros PlatformDevelopers

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. Захват. Исходная запись сохраняется как есть, с указанием момента ее фиксации, часового пояса телефона, языка и, опционально, интенсивности (1–10), начала и окончания. Никакие последующие этапы не перезаписывают ее.
  2. Нормализация (ИИ). Большая языковая модель (Google Gemini на Vertex AI) читает текст и возвращает для каждого упомянутого симптома: основной код ICD-10, дополнительные коды (опционально), краткую метку и два атрибута: утверждение (присутствует, отсутствует, разрешен, гипотетический, неопределенный) и субъект (сам пациент или кто-то другой). Модель может выбирать коды только из словаря Anpheros; любой другой ответ, пропущенная запись или недействительный основной код считаются неудачной попыткой, но никогда "неизвестным симптомом".
  3. Сопоставление концепций (детерминированное). Код ICD-10 сопоставляется с концепцией Anpheros и, исходя из нее, с ICD-11 и системой органов. Этот этап использует фиксированные таблицы, а не ИИ, поэтому один и тот же код всегда дает одну и ту же концепцию.
  4. Публикация. Только симптомы, которые присутствуют и относятся к пациенту, становятся 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.

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. Похожие случаи (в разработке)

Следующий компонент сравнивает людей по их симптомам и аномальным результатам лабораторных исследований, чтобы предложить, только с явного согласия, людей, сообщающих об очень похожих случаях.

Это не предполагает постановку диагноза или заболевания.

6. Как приложения используют это

7. Ограничения

Связанные материалы

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy