/** * EXEMPLO DE USO: Automação n8n para Notificação de Laudos * * Este arquivo demonstra como usar a função criarLaudo com integração n8n * para criar um laudo e notificar automaticamente o paciente. */ import { criarLaudo, CriarLaudoData } from '@/lib/reports'; /** * Exemplo 1: Uso básico - criar um laudo simples */ export async function exemploBasico() { try { const laudoData: CriarLaudoData = { pacienteId: 'patient-uuid-123', // ID do paciente (obrigatório) textoLaudo: 'Paciente apresenta boa saúde geral. Sem achados relevantes.', }; const novoLaudo = await criarLaudo(laudoData); console.log('✓ Laudo criado com sucesso!'); console.log('ID do laudo:', novoLaudo.id); console.log('Mensagem:', novoLaudo.mensagem); return novoLaudo; } catch (erro) { console.error('✗ Erro ao criar laudo:', erro); throw erro; } } /** * Exemplo 2: Criar laudo com dados médicos completos */ export async function exemploCompleto() { try { const laudoData: CriarLaudoData = { pacienteId: 'patient-uuid-789', medicoId: 'doctor-uuid-456', // Opcional textoLaudo: ` AVALIAÇÃO CLÍNICA COMPLETA Queixa Principal: Dor de cabeça persistente História Presente: Paciente relata dor de cabeça tipo tensional há 2 semanas, intensidade 5/10, sem irradiação. Exame Físico: - PA: 120/80 mmHg - FC: 72 bpm - Sem alterações neurológicas Impressão Diagnóstica: Cefaleia tensional Conduta: - Repouso adequado - Analgésicos conforme necessidade - Retorno em 2 semanas se persistir `, exame: 'Consulta Neurologia', diagnostico: 'Cefaleia tensional', conclusao: 'Prescrição: Dipirona 500mg 6/6h conforme necessidade', cidCode: 'G44.2', // CID da cefaleia tensional status: 'concluido', }; const novoLaudo = await criarLaudo(laudoData); console.log('✓ Laudo completo criado com sucesso!'); console.log('ID:', novoLaudo.id); console.log('Status:', novoLaudo.status); console.log('CID:', novoLaudo.cid_code); return novoLaudo; } catch (erro) { console.error('✗ Erro:', erro); throw erro; } } /** * Exemplo 3: Integração em um componente React * Este exemplo mostra como usar a função em um formulário * * NOTA: Este código deve ser usado em um arquivo .tsx (não .ts) * e com o import de React importado corretamente */ export async function exemploComponenteReact() { // Este é apenas um exemplo de estrutura para o componente // Copie o código abaixo para um arquivo .tsx: /* 'use client'; import React from 'react'; import { criarLaudo, CriarLaudoData } from '@/lib/reports'; export function ComponenteLaudoExemplo() { const [carregando, setCarregando] = React.useState(false); const [mensagem, setMensagem] = React.useState(''); const handleCriarLaudo = async (formData: any) => { setCarregando(true); setMensagem(''); try { const laudoData: CriarLaudoData = { pacienteId: formData.pacienteId, medicoId: formData.medicoId, textoLaudo: formData.texto, exame: formData.exame, diagnostico: formData.diagnostico, conclusao: formData.conclusao, cidCode: formData.cid, status: 'concluido', }; const resultado = await criarLaudo(laudoData); setMensagem(`✓ ${resultado.mensagem}`); console.log('Laudo criado:', resultado.id); // Você pode fazer mais algo aqui, como: // - Redirecionar para página do laudo // - Atualizar lista de laudos // - Limpar formulário } catch (erro) { setMensagem(`✗ Erro: ${erro instanceof Error ? erro.message : String(erro)}`); } finally { setCarregando(false); } }; return (
{ e.preventDefault(); const formData = new FormData(e.currentTarget); handleCriarLaudo(Object.fromEntries(formData)); }}>