CoolFace
Modelpublic

BrazilAI/openmed-br-clinical-pt

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes15downloads
Model Card

🇧🇷 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.
TarefaToken classification / NER (5 tipos)
IdiomaPortuguês (BR)
BaseOpenMed PT — BioClinicalBERT 110M (Apache-2.0)
Parâmetros110M — roda em CPU
F1 (held-out)0.60
LicençaCC 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

EntidadeExemplos
DOENCAhipertensão arterial, diabetes mellitus, pneumonia
SINAL_SINTOMAfebre, cefaleia, dor abdominal, dispneia
MEDICAMENTOlosartana, dipirona, metformina, azitromicina
PROCEDIMENTOtomografia de tórax, hemograma, apendicectomia
ANATOMIAtó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

python
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. 1.Base OpenMed — encoder BioClinicalBERT já adaptado ao português (Apache-2.0).
  2. 2.Dados ouro — fatia médica do MultiCoNER v2 em português (anotação humana).
  3. 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)

TipoF1
ANATOMIA0.717
MEDICAMENTO0.667
DOENCA0.564
PROCEDIMENTO0.429
SINAL_SINTOMA0.421
Geral0.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 medicamentoeste (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.
bibtex
@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.