AnpherosAnpheros PlatformDevelopers

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

Motor de Síntomas Anpheros: metodología

Cómo los síntomas en texto libre en cualquier idioma se convierten en conceptos ICD-10 e ICD-11 de la OMS: el normalizador de IA, detección de presencia y experimentador, el vocabulario verificado por la OMS, resultados de evaluación, coincidencia de casos similares y límites.

El Anpheros Symptom Engine transforma lo que una persona escribe sobre cómo se siente, en sus propias palabras e idioma, en conceptos clínicos internacionales: un identificador estable de Anpheros, un código ICD-10 de la OMS, un código ICD-11 de la OMS y un sistema corporal, junto con si el síntoma está presente, resuelto, hipotético o sobre otra persona. Se ejecuta en producción detrás de Anpheros Daily, publica sus resultados como Observaciones HL7 FHIR R4 en Anpheros Platform y expone la misma terminología a cualquier aplicación a través de una API REST y FHIR. Esta página describe cómo funciona, cómo se verificó, qué mide y cuáles son sus límites.

De un vistazo

Conceptos 274 (197 síntomas, 77 hallazgos), identificadores SYM-0001…, nunca reutilizados
Clasificaciones WHO ICD-10 (Versión 2019) y WHO ICD-11 MMS (2025-01), con la equivalencia de cada mapeo
Sistemas corporales 13, tomados de los bloques del capítulo 21 de la ICD-11 (nervioso, digestivo, respiratorio, piel…)
Idiomas nombres en 20 idiomas; texto libre en el idioma propio de la persona
Señales de advertencia 32, para 14 conceptos, citadas palabra por palabra de CDC y NIDDK
Evaluación del normalizador 5 idiomas (rumano, inglés, español, alemán, francés): código primario 97.5–100 %, presencia y sujeto 92.5–98 %, síntomas negados reportados como presentes 0 % en cada idioma
Revisión clínica ninguna hasta ahora: clinical_review: false en cada respuesta
Estándares HL7 FHIR R4 (CodeSystem, ValueSet, ConceptMap, Observation), ICD-10, ICD-11, LOINC para resultados de laboratorio

1. El pipeline

Un síntoma pasa por cuatro pasos. El texto de la persona nunca se modifica; cada paso añade datos junto a él.

  1. Captura. La entrada bruta se almacena tal como se escribió, junto con el momento en que se anotó, la zona horaria del teléfono, el idioma y, opcionalmente, la intensidad (1-10), el inicio y el fin. Nada posterior lo reescribe.
  2. Normalización (IA). Un modelo de lenguaje grande (Google Gemini en Vertex AI) lee el texto y devuelve, para cada síntoma que menciona: un código ICD-10 primario, códigos secundarios opcionales, una etiqueta corta y dos atributos, afirmación (presente, ausente, resuelto, hipotético, incierto) y sujeto (la persona u otra persona). El modelo solo puede elegir códigos del vocabulario de Anpheros; cualquier otra respuesta, una entrada omitida o un código primario no válido cuenta como un intento fallido, nunca como "síntoma desconocido".
  3. Mapeo de conceptos (determinista). El código ICD-10 se mapea al concepto de Anpheros y, a partir de él, a ICD-11 y al sistema corporal. Este paso utiliza tablas fijas, no IA, por lo que el mismo código siempre da el mismo concepto.
  4. Publicación. Solo los síntomas que están presentes y son sobre la persona se convierten en Observaciones FHIR en el registro de la persona, y solo después de que la normalización tenga éxito. Si una edición posterior o una renormización cambian eso, la Observación se retira; el historial de versiones permanece.

2. Presencia, tiempo y experimentador

El texto clínico a menudo menciona síntomas que la persona no tiene. El procesamiento del lenguaje natural clínico llama a esto detección de negación, temporalidad y experimentador (la familia de métodos NegEx y ConText). El motor maneja las mismas tres preguntas con los atributos de aserción y sujeto del modelo:

Escrito Aserción / sujeto ¿Publicado como síntoma de la persona?
"He tenido dolor de cabeza desde el martes" presente / yo sí
"ya no me duele la cabeza" resuelto / yo no
"podría tener fiebre mañana" hipotético / yo no
"mi madre tiene tos" presente / otro no

La queja de un familiar nunca se convierte automáticamente en historial familiar.

3. El vocabulario y cómo se verificó

El vocabulario cubre el capítulo XVIII de la CIE-10 (R00–R94, y desde la versión 2026.10.3 sus subcategorías no residuales como R06.0 disnea) y, donde la OMS clasifica un síntoma en otro capítulo, el código de la OMS: estreñimiento K59.0, tinnitus H93.1, visión doble H53.2, visión borrosa H53.8, picazón L29.9, dolor articular M25.5, dolor de espalda M54, problemas de sueño G47.

4. Evaluación

El normalizador se evalúa en un conjunto fijo de 100 casos sintéticos escritos en rumano (el idioma de la mayoría de los usuarios actuales), cada uno con el código primario, la afirmación y el sujeto esperados. 32 de los casos no están presentes deliberadamente: negados, resueltos, hipotéticos, inciertos o sobre otra persona. Resultados con el prompt actual (versión 3, 15 de octubre de 2026):

Métrica Resultado Objetivo
Código primario correcto 100 % ≥ 85 %
Afirmación y sujeto ambos correctos 98 % —
Síntomas negados reportados como presentes 0 % ≤ 3 %

Los dos errores fueron entradas administrativas ("una cita con el cardiólogo el martes", "quiero perder 5 kg") clasificadas como hipotéticas en lugar de presentes; ninguna de ellas es un síntoma. El conjunto de pruebas no ha sido revisado por un clínico, por lo que las puntuaciones son indicativas.

Otros idiomas (16 de octubre de 2026). 40 de los casos, que cubren todas las categorías, se tradujeron al inglés, español, alemán y francés, con las mismas respuestas esperadas; los casos informales se reescribieron en el estilo informal propio de cada idioma. Las instrucciones para el modelo se mantuvieron iguales.

Idioma Casos Código primario Presencia y sujeto Negados reportados como presentes
Rumano 100 100 % 98 % 0 %
Inglés 40 100 % 97.5 % 0 %
Español 40 97.5 % 92.5 % 0 %
Alemán 40 100 % 97.5 % 0 %
Francés 40 100 % 95 % 0 %

La mayoría de los errores restantes son las mismas entradas administrativas ("cita con el cardiólogo el martes", "chequeo, todo bien") o una elección entre dos estados no presentes ("sin fiebre hoy" como resuelto en lugar de ausente); ninguno de ellos publica un síntoma. La única diferencia de codificación fue en español "escalofríos y malestar" codificado como malestar (R53) con escalofríos (R68) como código secundario, en lugar de al revés.

Los nombres que se muestran a las personas siguen su idioma: la aplicación muestra el nombre del concepto en el idioma del usuario (nombre común primero) y la nota de presencia ("resuelto", "otra persona") en los 20 idiomas de la aplicación.

En producción (16 de octubre de 2026), después de que el vocabulario se verificara contra la OMS, cada síntoma almacenado se normalizó de nuevo. En los registros de usuarios reales: todos los síntomas normalizados, 0 síntomas presentes quedaron como "inciertos", y 0 síntomas que no están presentes se publicaron como propios de la persona (auditoría independiente de las Observaciones publicadas).

5. Casos similares (en desarrollo)

El siguiente componente compara personas por sus síntomas y resultados de laboratorio anómalos, para sugerir, solo con consentimiento explícito, personas que reportan algo muy similar.

No sugiere un diagnóstico ni una enfermedad.

6. Cómo lo usan las aplicaciones

7. Límites

Relacionado

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