🇧🇷 OpenMed-BR Clinical NER — Efficient (PT)

Reconhecimento de entidades clínicas em português, leve o bastante para rodar em CPU. Extrai doenças, sinais/sintomas, medicamentos, procedimentos e estruturas anatômicas de texto médico livre.

Tarefa Token classification / NER (5 tipos)
Idioma Português (BR)
Base OpenMed PT — BioClinicalBERT 110M (Apache-2.0)
Parâmetros 110M — roda em CPU
F1 (held-out) 0.60
Licença CC BY 4.0
Irmão BrazilAI/openmed-br-large-pt (maior F1, cross-lingual)

Por que isto importa

O Brasil gera uma quantidade imensa de texto clínico — evoluções, anamneses, laudos, atestados — e quase tudo fica preso em texto livre. Mesmo com 97,6% das UBS já usando prontuário eletrônico, o conteúdo é escrito em linguagem natural, não estruturado. Isso trava tudo que depende de dado organizado:

  • Codificação clínica (CID-10, CIAP-2, TUSS, SIGTAP) feita à mão, cara e lenta.
  • Glosas no setor privado: R$ 5,8 bilhões em 2024 (15,9% do faturado), das quais só ~2% eram justificadas — a maior parte é problema de documentação/código.
  • Vigilância e pesquisa que precisam garimpar prontuário manualmente.
  • Continuidade do cuidado perdida entre sistemas que não conversam.

O primeiro passo para destravar qualquer um desses problemas é o mesmo: transformar texto clínico em entidades estruturadas. É exatamente o que este modelo faz — e faz em português, de forma aberta e rodando em hardware modesto.

Ecossistema de referência (inglês) como o OpenMed não cobre NER clínico em português (só de-identificação de PII). O OpenMed-BR preenche esse vazio.

O que o modelo reconhece

Entidade Exemplos
DOENCA hipertensão arterial, diabetes mellitus, pneumonia
SINAL_SINTOMA febre, cefaleia, dor abdominal, dispneia
MEDICAMENTO losartana, dipirona, metformina, azitromicina
PROCEDIMENTO tomografia de tórax, hemograma, apendicectomia
ANATOMIA tórax, abdome, ventrículo esquerdo

Aplicações

  • Assistente de codificação — sugerir CID-10/CIAP-2 (doenças), TUSS/SIGTAP (procedimentos) e OBM/CATMAT (medicamentos) a partir da nota clínica, acelerando faturamento e reduzindo glosa. (O modelo extrai a entidade; o mapeamento ao código é a camada seguinte.)
  • Prevenção de glosa — checar se procedimentos/medicamentos citados na evolução estão devidamente registrados na guia.
  • Estruturação de prontuário — montar listas de problemas, medicações em uso e procedimentos a partir de texto livre.
  • Pesquisa e vigilância — construir coortes e indicadores epidemiológicos a partir de grandes volumes de texto.
  • Pipeline de privacidade — combinar com o modelo PII do OpenMed para anonimizar antes de processar (LGPD).

Como usar

from transformers import pipeline

ner = pipeline("token-classification",
               model="BrazilAI/openmed-br-clinical-pt",
               aggregation_strategy="simple")

texto = "Paciente com hipertensão em uso de losartana; solicitada tomografia de tórax."
for e in ner(texto):
    print(e["entity_group"], "->", e["word"], round(e["score"], 2))

Roda em CPU. Para lote, passe uma lista de textos ao pipeline.

Como foi treinado

Estratégia híbrida para contornar a escassez de dado clínico anotado em PT:

  1. Base OpenMed — encoder BioClinicalBERT já adaptado ao português (Apache-2.0).
  2. Dados ouro — fatia médica do MultiCoNER v2 em português (anotação humana).
  3. Dados prata (destilação) — os 13 modelos clínicos pucpr/clinicalnerpt-* (treinados no corpus SemClinBr) atuam como professores, rotulando texto que é então usado no treino. Assim o conhecimento clínico do SemClinBr entra no modelo mesmo com o corpus original sendo de acesso restrito.

Tudo mapeado para um esquema clínico unificado de 5 tipos.

Resultados (teste PT held-out, seqeval, nível de entidade)

Tipo F1
ANATOMIA 0.717
MEDICAMENTO 0.667
DOENCA 0.564
PROCEDIMENTO 0.429
SINAL_SINTOMA 0.421
Geral 0.598

Leitura honesta: este é um ponto de partida sólido, não o estado da arte. O teste held-out é pequeno (77 frases) → números honestos, porém ruidosos. Para MEDICAMENTO este modelo é o melhor da família (0.67). Para doença/procedimento/sintoma, o irmão openmed-br-large-pt vai melhor.

Qual modelo escolher

Precisa de… Use
Rodar em CPU, baixo custo, foco em medicamento este (clinical-pt)
Maior F1 geral (GPU), doença/procedimento/sintoma openmed-br-large-pt

Uso responsável (leia antes de aplicar em saúde)

  • Não é dispositivo médico. É ferramenta assistiva de documentação/estruturação, com humano no circuito. Software não-diagnóstico de apoio administrativo/documental fica fora da ANVISA RDC 657/2022; assim que houver sugestão diagnóstica/terapêutica para um paciente, entra regulação (SaMD).
  • LGPD — dado de saúde é sensível. Processe em contexto de tutela da saúde (Art. 11, II, "f") ou anonimize antes (ex.: modelo PII do OpenMed). Prefira execução local/on-device.
  • Revisão humana obrigatória — não use para decisão clínica.

Roadmap

  • Ligação das entidades a CID-10 / TUSS / SIGTAP / OBM (da extração ao código).
  • Treino/avaliação sobre texto clínico real em PT (ex.: acesso ao SemClinBr cru, parceria hospitalar) rumo ao SOTA (~0.76).
  • Teste held-out maior e mais representativo.

Atribuição e citação (obrigatória — CC BY 4.0)

  • Base: OpenMed — OpenMed/OpenMed-PII-Portuguese-BioClinicalBERT-Base-110M-v1 (Apache-2.0).
  • Dados ouro: MultiCoNER v2 — Fetahu et al., arXiv:2310.13213; SemEval-2023 Task 2, arXiv:2305.06586 (CC BY 4.0).
  • Dados prata (professores): BioBERTpt / clinicalnerpt / SemClinBr — Schneider et al., 2020 (ClinicalNLP@EMNLP); Oliveira et al., J. Biomed. Semantics, 2022; HAILab-PUCPR.
@misc{openmedbr_clinical_pt,
  title  = {OpenMed-BR Clinical NER (Efficient, PT)},
  author = {OpenMed-BR / BrazilAI},
  year   = {2026},
  howpublished = {\url{https://huggingface.co/BrazilAI/openmed-br-clinical-pt}}
}

Licença

CC BY 4.0 — uso livre (inclusive comercial) com atribuição.

Downloads last month
14
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for BrazilAI/openmed-br-clinical-pt

Dataset used to train BrazilAI/openmed-br-clinical-pt

Papers for BrazilAI/openmed-br-clinical-pt

Evaluation results