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
```