179 lines
6.1 KiB
JavaScript
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();
|