BrazilAI/openmed-br-clinical-pt
🇧🇷 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.
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
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:
- Base OpenMed — encoder BioClinicalBERT já adaptado ao português (Apache-2.0).
- Dados ouro — fatia médica do MultiCoNER v2 em português (anotação humana).
- 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)
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
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.
