2
respostas

Criação de Algoritmo de Inteligência Artificial (IA) para Análise de Queixas Técnicas (QT) e Eventos Adversos (EA) Graves decorrentes de Dispositivos Médicos (DM).

PARTE II - Projeto Completo Estruturado pelo Modelo do Duplo Diamante

Criação de Algoritmo de Inteligência Artificial (IA) para Análise de Queixas Técnicas
(QT) e Eventos Adversos (EA) Graves decorrentes de Dispositivos Médicos (DM). 

1. Introdução e Justificativa

Eventos Adversos Graves (EAS) relacionados a Dispositivos Médicos (DM) representam
risco elevado à segurança do paciente, podendo resultar em sequelas permanentes 
ou óbito. 

A Tecnovigilância, responsável por monitorar o ciclo de vida dos dispositivos, enfrenta 
desafios como volume crescente de notificações, variabilidade na análise e necessidade
de rastreabilidade regulatória.

O projeto propõe o desenvolvimento de um algoritmo de Inteligência Artificial (IA) capaz 
de apoiar a análise de Queixas Técnicas (QT) e EAS, funcionando como um checklist
inteligente, auditável e alinhado às normas da ANVISA e padrões internacionais.

2. Estruturação pelo Duplo Diamante

# 2.1. Primeiro Diamante — Problema

# 2.1.1. Descobrir — Exploração Ampla
1. Principais achados:
•	EAS relacionados a DM podem gerar desfechos graves, comparáveis a falhas 
catastróficas em sistemas aeronáuticos.
•	A análise atual é manual, lenta e sujeita a vieses.
•	Há necessidade de padronização e rastreabilidade para auditorias.
•	Regulamentações como RDC 657/2022, RDC 751/2022 e ISO 13485 exigem 
documentação robusta.
•	Profissionais de Tecnovigilância relatam dificuldade em acompanhar o volume 
crescente de notificações.

2. Problemas identificados:
•	Falta de padronização na classificação de conformidades.
•	Dificuldade em identificar falhas de design, fabricação ou uso.
•	Ausência de ferramentas inteligentes para análise textual de notificações.
•	Tempo elevado entre notificação e conclusão da análise.

# 2.1.2.  Defiinir: Delimitação do Problema

1. Problema central:
“Como reduzir o tempo e aumentar a precisão da análise de QT/EAS em DM,
garantindo conformidade regulatória, rastreabilidade e suporte à decisão?”

2. Objetivo geral:
•	Criar um algoritmo de IA que classifique notificações de QT/EAS e identifique 
conformidade, não conformidade ou falha relacionada ao evento.

3. Objetivos específicos:
•	Automatizar a leitura e interpretação de notificações.
•	Comparar automaticamente com bases regulatórias.
•	Gerar relatórios auditáveis.
•	Apoiar a investigação de causa raiz (RCA).
•	Reduzir variabilidade entre analistas.

3. Segundo Diamante — Solução

# 3.1. Desenvolver: Exploração de Múltiplas Soluções

# 3.1.1. Arquiteturas de IA Consideradas
•	Árvores de decisão — interpretabilidade.
•	Random Forest — robustez.
•	Gradient Boosting (XGBoost) — alta performance.
•	Redes neurais explicáveis (XAI) — LIME, SHAP.
•	Modelos de PLN — BERTimbau, spaCy, transformers.

# 3.1.2. Pipeline Computacional Proposto

1. Etapa 1 — Pré-processamento
•	Tokenização, lematização, remoção de ruído.
•	Extração de entidades regulatórias (NER): “falha”, “rompimento”, “esterilidade”, 
“prazo de validade”.

2. Etapa 2 — Extração de Features
•	Vetorização TF-IDF.
•	Embeddings com BERTimbau.
•	Features regulatórias (match com RDCs).

3. Etapa 3 — Classificação
•	Modelo supervisionado com quatro classes: 
1. Conformidade
2. Não conformidade não relacionada
3. Não conformidade relacionada
4. Falha relacionada ao evento

4. Etapa 4 — Explicabilidade
•	SHAP para explicar decisões.
•	Geração de mapa de calor de termos relevantes.

5. Etapa 5 — Relatório Auditável
•	Exportação em PDF/JSON.
•	Hash criptográfico SHA-256 para rastreabilidade.


# 3.2. Entregar — Validação e Implementação
# 3.2.1. Protótipo Funcional
1. Componentes:
•	Backend em FastAPI.
•	Banco de dados PostgreSQL.
•	Módulo de IA em Python (scikit-learn, TensorFlow, spaCy).
•	Interface web em React.
•	Logs imutáveis com hash SHA-256.
•	Módulo de auditoria com trilha de decisões.

# 3.2.2. Validação
•	Testes com analistas de Tecnovigilância.
•	Comparação entre análise humana e IA.
•	Ajustes iterativos com feedback.
•	Estudo piloto em hospital da rede FHEMIG.

# 3.2.3. Indicadores de Sucesso
•	Redução do tempo de análise (meta: -40%).
•	Aumento da precisão na classificação (meta: +25%).
•	Aderência regulatória comprovada.
•	Aceitação pelos analistas (meta: >80% de aprovação).

3.3. Exemplo de Pseudocódigo

def analisar_qt_eas(texto_notificacao):
    texto_limpo = preprocessar(texto_notificacao)
    entidades = extrair_entidades(texto_limpo)
    features = gerar_features(texto_limpo, entidades)
    classe = modelo.predict(features)
    explicacao = shap_explain(modelo, features)
    regulacao = comparar_com_rdc(texto_limpo)
    
    return {
        "classificacao": classe,
        "explicacao": explicacao,
        "regulacao": regulacao,
        "hash_registro": gerar_hash(texto_notificacao)
    }
2 respostas

4. Inovação, Impacto e Potencial de Patente

# 4.1. Inovação
•	Primeira solução nacional dedicada à Tecnovigilância automatizada.
•	Uso de IA explicável para decisões regulatórias.
•	Integração com normas ANVISA e ISO.
•	Geração de relatórios auditáveis e rastreáveis.

# 4.2. Impacto
•	Aumento da segurança do paciente.
•	Redução de falhas recorrentes.
•	Melhoria da eficiência operacional.
•	Fortalecimento da FHEMIG como referência nacional.

# 4.3. Potencial de Patente
•	Algoritmo de classificação regulatória.
•	Pipeline de análise com explicabilidade integrada.
•	Sistema de auditoria com hash criptográfico.
  1. Cronograma (12 meses)
| Mês | Atividade | 
| -------- | -------- | 
| 1-2    | Levantamento de requisitos, entrevistas, mapeamento de jornada    |
| -------- | -------- | 
| 2-4     | Construção do dataset e pré-processamento    |
| -------- | -------- | 
| 5-7    | Desenvolvimento dos modelos de IA     |
| -------- | -------- | 
| 8-9    | Construção do backend e frontend     |
| -------- | -------- | 
| 10    | Integração e testes internos   |
| -------- | -------- | 
|11    | Estudo Piloto   |
| -------- | -------- | 
| 12     | Ajustes finais, relatório e submissão para patente   |

6. Recursos Necessários

1. Equipe: médico, engenheiro de software, cientista de dados, especialista em Tecnovigilância.
2. Infraestrutura: servidor GPU, banco de dados, ambiente de testes.
3. Acesso a notificações anonimizadas.
4. Consultoria regulatória.

7. Código Completo do Pré-projeto de Software as a Medical Device, baseado em IA

Python

from docx import Document
from docx.shared import Pt, Inches
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Preformatted
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import inch

# Criar documento Word
doc = Document()

# Capa Word
doc.add_paragraph("Artigo Científico Original – 9º Fórum Científico da FHEMIG", 'Title')
doc.add_paragraph("Ricardo Costa Val do Rosário, MD, PhD\n2025", 'Subtitle')

doc.add_paragraph("\n\n\n")
doc.add_paragraph("Sugestão de capa ilustrativa: um dispositivo médico em destaque, com algoritmos e checklist digital em segundo plano, transmitindo a ideia de auditoria tecnológica.", style="Intense Quote")

doc.add_page_break()

# Estrutura do Artigo
sections = {
    "Resumo": """Eventos adversos graves (SAE) e queixas técnicas (QT) relacionadas a dispositivos médicos representam um risco elevado à segurança do paciente. 
Este artigo propõe um pré-projeto de Software as a Medical Device (SaMD), baseado em Inteligência Artificial, para análise de QT/SAE, com classificação auditável em conformidade regulatória. 
Metodologias de Machine Learning (ML) e Processamento de Linguagem Natural (PLN) são empregadas para criar relatórios rastreáveis, visando reduzir falhas e fortalecer a Tecnovigilância nacional.""",

    "Introdução": """Falhas em dispositivos médicos, incluindo softwares embarcados, podem resultar em eventos adversos catastróficos, comparáveis a acidentes aéreos. 
A Tecnovigilância no Brasil, regida por normas como a RDC 657/2022 (SaMD) e RDC 751/2022 (classificação de risco), exige metodologias robustas para identificar causas raiz de falhas. 
Apesar dos avanços, ainda não existe um algoritmo específico para análise estruturada de QT e SAE. Este estudo tem como objetivo propor a criação de um SaMD capaz de apoiar profissionais de Tecnovigilância em investigações automatizadas e auditáveis.""",

    "Metodologia": """O desenho do estudo é de pesquisa aplicada em Engenharia de Software Médico. A arquitetura proposta segue as boas práticas internacionais (IEC 62304, ISO 13485, ISO 14971, IEC 62366).
Fluxo de dados: coleta → processamento (ML/PLN) → classificação → relatório auditável.
O sistema deve classificar notificações em três categorias: (i) Conformidade, (ii) Não conformidade não relacionada ao evento, (iii) Falha relacionada ao evento.

Continuação do Código

Exemplo de pseudocódigo em Python:""",

    "Resultados Esperados": """- Protótipo de algoritmo testado em ambiente hospitalar piloto;
- Redução no tempo de análise de notificações de Tecnovigilância;
- Melhoria da acurácia na identificação de falhas críticas;
- Relatórios auditáveis e rastreáveis, em conformidade com LGPD e normas regulatórias.""",

    "Discussão": """O projeto representa avanço inédito no campo da Tecnovigilância computacional. A utilização de algoritmos de IA explicáveis permite maior transparência nas investigações de SAE. 
Trecho de exemplo de código com árvore de decisão para ilustrar aplicabilidade:""",

    "Conclusão": """O artigo propõe a criação de um SaMD específico para análise de QT/SAE, unindo IA auditável, regulamentações nacionais e boas práticas internacionais. 
A iniciativa fortalece a cultura de segurança em saúde e posiciona a FHEMIG como referência nacional em inovação regulatória.""",

    "Referências": """1. ANVISA. RDC nº 657, de 24 de março de 2022.
2. ANVISA. RDC nº 751, de 15 de setembro de 2022.
3. ISO 13485:2016 – Medical devices – Quality management systems.
4. IEC 62304:2006 – Medical device software – Software life cycle processes.
5. ISO 14971:2019 – Risk management for medical devices.
6. IEC 62366-1:2015 – Usability engineering for medical devices."""
}

# Adicionar conteúdo ao Word
for title, content in sections.items():
    doc.add_heading(title, level=1)
    doc.add_paragraph(content)
    if title == "Metodologia":
        code_example = """
def classificar_evento(notificacao):
    if notificacao["causa"] in ["falha_design", "falha_software"]:
        return "Não Conformidade Relacionada ao Evento"
    elif notificacao["irregularidade_documental"]:
        return "Não Conformidade Não Relacionada ao Evento"
    else:
        return "Conformidade"
"""
        doc.add_paragraph(code_example, style="Intense Quote")
    if title == "Discussão":
        code_example = """
from sklearn.tree import DecisionTreeClassifier

X = [[1,0,0], [0,1,0], [0,0,1], [0,0,0]]
y = ["Relacionado ao Evento", "Relacionado ao Evento",
     "Não Relacionado ao Evento", "Conformidade"]

modelo = DecisionTreeClassifier()
modelo.fit(X, y)
print(modelo.predict([[0,1,0]]))  # → "Relacionado ao Evento"
"""
        doc.add_paragraph(code_example, style="Intense Quote")

word_filename = "/mnt/data/Artigo_Cientifico_SaMD_Tecnovigilancia.docx"
doc.save(word_filename)

# Criar PDF com ReportLab
pdf_filename = "/mnt/data/Artigo_Cientifico_SaMD_Tecnovigilancia.pdf"
pdf = SimpleDocTemplate(pdf_filename, pagesize=A4)
styles = getSampleStyleSheet()
story = []

title_style = ParagraphStyle('TitleStyle', parent=styles['Title'], fontSize=20, alignment=1, spaceAfter=20)
subtitle_style = ParagraphStyle('SubTitle', parent=styles['Normal'], fontSize=12, alignment=1, textColor=colors.grey)

# Capa PDF
story.append(Paragraph("Artigo Científico Original – 9º Fórum Científico da FHEMIG", title_style))
story.append(Paragraph("Ricardo Costa Val do Rosário, MD, PhD<br/>2025", subtitle_style))
story.append(Spacer(1, 1*inch))
story.append(Paragraph("Sugestão de capa ilustrativa: um dispositivo médico em destaque, com algoritmos e checklist digital em segundo plano, transmitindo a ideia de auditoria tecnológica.", styles['Italic']))
story.append(Spacer(1, 1.5*inch))

# Conteúdo PDF
for title, content in sections.items():
    story.append(Paragraph(f"<b>{title}</b>", styles['Heading2']))
    story.append(Paragraph(content, styles['Normal']))
    if title == "Metodologia":
        code1 = """def classificar_evento(notificacao):
    if notificacao["causa"] in ["falha_design", "falha_software"]:
        return "Não Conformidade Relacionada ao Evento"
    elif notificacao["irregularidade_documental"]:
        return "Não Conformidade Não Relacionada ao Evento"
    else:
        return "Conformidade"
"""
        story.append(Preformatted(code1, styles['Code']))
    if title == "Discussão":
        code2 = """from sklearn.tree import DecisionTreeClassifier

X = [[1,0,0], [0,1,0], [0,0,1], [0,0,0]]
y = ["Relacionado ao Evento", "Relacionado ao Evento",
     "Não Relacionado ao Evento", "Conformidade"]

modelo = DecisionTreeClassifier()
modelo.fit(X, y)
print(modelo.predict([[0,1,0]]))  # → "Relacionado ao Evento"
"""
        story.append(Preformatted(code2, styles['Code']))
    story.append(Spacer(1, 0.3*inch))

pdf.build(story)

word_filename, pdf_filename

FIM
```