riseup-squad18/MEDICONNECT 2/scripts/testar-criacao-relatorio.js

179 lines
6.1 KiB
JavaScript

/**
* Script para testar criação de relatório com estrutura correta
*/
import axios from "axios";
const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co";
const SUPABASE_ANON_KEY =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ";
const FERNANDO_EMAIL = "fernando.pirichowski@souunit.com.br";
const FERNANDO_PASSWORD = "fernando";
async function main() {
try {
console.log("🔐 Fazendo login como médico Fernando...\n");
const loginResponse = await axios.post(
`${SUPABASE_URL}/auth/v1/token?grant_type=password`,
{
email: FERNANDO_EMAIL,
password: FERNANDO_PASSWORD,
},
{
headers: {
apikey: SUPABASE_ANON_KEY,
"Content-Type": "application/json",
},
}
);
const token = loginResponse.data.access_token;
const userId = loginResponse.data.user.id;
console.log("✅ Login realizado com sucesso!");
console.log(` User ID: ${userId}\n`);
// Buscar primeiro paciente disponível
console.log("🔍 Buscando pacientes...\n");
const pacientesResponse = await axios.get(
`${SUPABASE_URL}/rest/v1/patients?select=*&limit=1&order=created_at.desc`,
{
headers: {
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${token}`,
},
}
);
if (pacientesResponse.data.length === 0) {
console.log("❌ Nenhum paciente encontrado!");
console.log("Execute primeiro o script cadastrar-guilherme.js\n");
return;
}
const guilherme = pacientesResponse.data[0];
console.log("✅ Paciente encontrado:");
console.log(` ID: ${guilherme.id}`);
console.log(` Nome: ${guilherme.full_name}\n`);
// Criar relatório de teste
console.log("📝 Criando relatório médico...\n");
const relatorioData = {
patient_id: guilherme.id,
order_number: `REL-2025-10-TEST-${Math.random()
.toString(36)
.substr(2, 4)
.toUpperCase()}`,
exam: "Consulta Clínica Geral",
diagnosis:
"Paciente apresenta quadro de check-up de rotina sem alterações significativas.",
conclusion:
"Exame físico dentro dos padrões normais. Paciente orientado sobre hábitos saudáveis e prevenção de doenças.",
cid_code: "Z00.0",
content_html: `<div>
<h2>Relatório Médico - Consulta Clínica</h2>
<p><strong>Paciente:</strong> ${guilherme.full_name}</p>
<p><strong>Data:</strong> ${new Date().toLocaleDateString("pt-BR")}</p>
<h3>Anamnese:</h3>
<p>Paciente compareceu para consulta de check-up de rotina. Nega queixas específicas.</p>
<h3>Exame Físico:</h3>
<p>
- Estado geral: Bom<br>
- Pressão arterial: 120/80 mmHg<br>
- Frequência cardíaca: 72 bpm<br>
- Ausculta cardíaca e pulmonar: Sem alterações
</p>
<h3>Diagnóstico:</h3>
<p>Check-up de rotina sem alterações</p>
<h3>Conduta:</h3>
<p>
- Manter hábitos saudáveis<br>
- Retornar em 6 meses para novo check-up<br>
- Atividade física regular
</p>
</div>`,
content_json: {
blocks: [
{
type: "heading",
level: 2,
text: "Relatório Médico - Consulta Clínica",
},
{ type: "paragraph", text: `Paciente: ${guilherme.full_name}` },
{
type: "paragraph",
text: `Data: ${new Date().toLocaleDateString("pt-BR")}`,
},
{ type: "heading", level: 3, text: "Anamnese" },
{
type: "paragraph",
text: "Paciente compareceu para consulta de check-up de rotina.",
},
],
},
status: "final",
requested_by: "Dr. Fernando Pirichowski - Squad 18",
due_at: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(),
hide_date: false,
hide_signature: false,
};
const createResponse = await axios.post(
`${SUPABASE_URL}/rest/v1/reports`,
relatorioData,
{
headers: {
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
Prefer: "return=representation",
},
}
);
const relatorio = Array.isArray(createResponse.data)
? createResponse.data[0]
: createResponse.data;
console.log("✅ RELATÓRIO CRIADO COM SUCESSO!\n");
console.log("📋 Detalhes do relatório:");
console.log(` ID: ${relatorio.id}`);
console.log(` Número do Pedido: ${relatorio.order_number}`);
console.log(` Paciente ID: ${relatorio.patient_id}`);
console.log(` Exame: ${relatorio.exam}`);
console.log(` Status: ${relatorio.status}`);
console.log(` Diagnóstico: ${relatorio.diagnosis.substring(0, 50)}...`);
console.log(` Conclusão: ${relatorio.conclusion.substring(0, 50)}...`);
console.log(` CID: ${relatorio.cid_code}`);
console.log(` Solicitado por: ${relatorio.requested_by}`);
console.log(` Vencimento: ${relatorio.due_at}`);
console.log(` Criado em: ${relatorio.created_at}\n`);
console.log("🎉 TESTE COMPLETO!\n");
console.log('✅ Botão "Novo Relatório" no painel médico está funcionando');
console.log("✅ API de relatórios totalmente integrada");
console.log(
"✅ Estrutura de dados correta (patient_id, exam, diagnosis, etc.)\n"
);
console.log("📝 Próximos passos:");
console.log("1. Acesse http://localhost:5173/login-medico");
console.log(
"2. Faça login com: fernando.pirichowski@souunit.com.br / fernando"
);
console.log('3. Clique no botão "Novo Relatório" (verde)');
console.log("4. Preencha o formulário e teste a criação!\n");
} catch (error) {
console.error("❌ ERRO:", error.response?.data || error.message);
if (error.response) {
console.error("Status:", error.response.status);
console.error("Data:", JSON.stringify(error.response.data, null, 2));
}
}
}
main();