AnpherosAnpheros PlatformDevelopers

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

Motor de Sintomas Anpheros: metodologia

Como sintomas em texto livre em qualquer idioma se tornam conceitos ICD-10 e ICD-11 da OMS: o normalizador de IA, deteção de presença e experienciador, o vocabulário verificado pela OMS, resultados de avaliação, correspondência de casos semelhantes e limites.

O Anpheros Symptom Engine transforma o que uma pessoa escreve sobre como se sente, nas suas próprias palavras e idioma, em conceitos clínicos internacionais: um identificador Anpheros estável, um código WHO ICD-10, um código WHO ICD-11 e um sistema corporal, juntamente com se o sintoma está presente, resolvido, hipotético ou sobre outra pessoa. Funciona em produção por trás do Anpheros Daily, publica os seus resultados como HL7 FHIR R4 Observations na Anpheros Platform e expõe a mesma terminologia a qualquer aplicação através de uma API REST e FHIR. Esta página descreve como funciona, como foi verificado, o que mede e onde estão os seus limites.

Resumo

Conceitos 274 (197 sintomas, 77 achados), identificadores SYM-0001…, nunca reutilizados
Classificações OMS ICD-10 (Versão 2019) e OMS ICD-11 MMS (2025-01), com a equivalência de cada mapeamento
Sistemas do corpo 13, retirados dos blocos do capítulo 21 da ICD-11 (nervoso, digestivo, respiratório, pele…)
Idiomas nomes em 20 idiomas; texto livre no idioma da pessoa
Sinais de alerta 32, para 14 conceitos, citados palavra por palavra do CDC e NIDDK
Avaliação do normalizador 5 idiomas (Romeno, Inglês, Espanhol, Alemão, Francês): código primário 97,5–100 %, presença e sujeito 92,5–98 %, sintomas negados reportados como presentes 0 % em todos os idiomas
Revisão clínica ainda nenhuma: clinical_review: false em cada resposta
Normas HL7 FHIR R4 (CodeSystem, ValueSet, ConceptMap, Observation), ICD-10, ICD-11, LOINC para resultados de laboratório

1. O pipeline

Um sintoma passa por quatro etapas. O texto da pessoa nunca é alterado; cada etapa adiciona dados ao lado dele.

  1. Captura. A entrada bruta é armazenada como escrita, com o momento em que foi registada, o fuso horário do telefone, o idioma e, opcionalmente, a intensidade (1–10), o início e o fim. Nada a jusante a reescreve.
  2. Normalização (IA). Um modelo de linguagem grande (Google Gemini no Vertex AI) lê o texto e retorna, para cada sintoma que menciona: um código ICD-10 primário, códigos secundários opcionais, um rótulo curto e dois atributos, asserção (presente, ausente, resolvido, hipotético, incerto) e sujeito (a pessoa, ou outra pessoa). O modelo só pode escolher códigos do vocabulário Anpheros; qualquer outra resposta, uma entrada omitida ou um código primário inválido conta como uma tentativa falhada, nunca como "sintoma desconhecido".
  3. Mapeamento de conceitos (determinístico). O código ICD-10 é mapeado para o conceito Anpheros e, a partir dele, para ICD-11 e o sistema corporal. Esta etapa utiliza tabelas fixas, não IA, pelo que o mesmo código dá sempre o mesmo conceito.
  4. Publicação. Apenas os sintomas que estão presentes e são sobre a pessoa se tornam Observações FHIR no registo da pessoa, e apenas após a normalização ter sucesso. Se uma edição posterior ou re-normalização alterar isso, a Observação é retirada; o histórico de versões permanece.

2. Presença, tempo e experienciador

O texto clínico menciona frequentemente sintomas que a pessoa não tem. O processamento de linguagem natural clínico chama a isto deteção de negação, temporalidade e experienciador (a família de métodos NegEx e ConText). O motor lida com as mesmas três questões com os atributos de asserção e sujeito do modelo:

Escrito Asserção / sujeito Publicado como sintoma da pessoa?
"Tenho tido dores de cabeça desde terça-feira" presente / próprio sim
"já não me dói a cabeça" resolvido / próprio não
"posso ter febre amanhã" hipotético / próprio não
"a minha mãe tem tosse" presente / outro não

A queixa de um familiar nunca é transformada automaticamente em historial familiar.

3. O vocabulário e como foi verificado

O vocabulário abrange o capítulo XVIII da ICD-10 (R00–R94 e, desde a versão 2026.10.3, as suas subcategorias não residuais como R06.0 dispneia) e, onde a OMS classifica um sintoma noutro capítulo, o código da OMS: obstipação K59.0, acufenos H93.1, visão dupla H53.2, visão turva H53.8, prurido L29.9, dor articular M25.5, dor nas costas M54, problemas de sono G47.

4. Avaliação

O normalizador é avaliado num conjunto fixo de 100 casos sintéticos escritos em romeno (a língua da maioria dos utilizadores atuais), cada um com o código primário, a afirmação e o sujeito esperados. 32 dos casos estão deliberadamente ausentes: negados, resolvidos, hipotéticos, incertos ou sobre outra pessoa. Resultados com o prompt atual (versão 3, 15 de outubro de 2026):

Métrica Resultado Meta
Código primário correto 100 % ≥ 85 %
Afirmação e sujeito ambos corretos 98 % —
Sintomas negados relatados como presentes 0 % ≤ 3 %

Os dois erros foram entradas administrativas ("uma consulta com o cardiologista na terça-feira", "quero perder 5 kg") classificadas como hipotéticas em vez de presentes; nenhuma delas é um sintoma. O conjunto de testes não foi revisto por um clínico, pelo que as pontuações são indicativas.

Outras línguas (16 de outubro de 2026). 40 dos casos, cobrindo todas as categorias, foram traduzidos para inglês, espanhol, alemão e francês, com as mesmas respostas esperadas; os casos informais foram reescritos no estilo informal de cada língua. As instruções para o modelo permaneceram as mesmas.

Língua Casos Código primário Presença e sujeito Negados relatados como presentes
Romeno 100 100 % 98 % 0 %
Inglês 40 100 % 97.5 % 0 %
Espanhol 40 97.5 % 92.5 % 0 %
Alemão 40 100 % 97.5 % 0 %
Francês 40 100 % 95 % 0 %

A maioria dos erros restantes são as mesmas entradas administrativas ("consulta de cardiologia na terça-feira", "check-up, tudo bem") ou uma escolha entre dois estados não presentes ("sem febre hoje" como resolvido em vez de ausente); nenhum deles publica um sintoma. A única diferença de codificação foi o espanhol "escalofríos y malestar" (calafrios e mal-estar) codificado como mal-estar (R53) com calafrios (R68) como código secundário, em vez do inverso.

Os nomes mostrados às pessoas seguem a sua língua: a aplicação exibe o nome do conceito na língua do utilizador (nome leigo primeiro) e a nota de presença ("resolvido", "outra pessoa") nas 20 línguas da aplicação.

Em produção (16 de outubro de 2026), após o vocabulário ter sido verificado contra a OMS, todos os sintomas armazenados foram renormalizados. Nos registos de utilizadores reais: todos os sintomas normalizados, 0 sintomas presentes deixados como "incertos", e 0 sintomas que não estão presentes publicados como sendo da própria pessoa (auditoria independente das Observações publicadas).

5. Casos semelhantes (em desenvolvimento)

O próximo componente compara pessoas com base nos seus sintomas e resultados anormais de laboratório, para sugerir, apenas com consentimento explícito, pessoas que relatam algo muito semelhante.

Não sugere um diagnóstico ou uma doença.

6. Como as aplicações o utilizam

7. Limites

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