riseup-squad18/MEDICONNECT 2/create-aurora-appointment.cjs

129 lines
4.2 KiB
JavaScript

const axios = require("axios");
const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co";
const SUPABASE_ANON_KEY =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ";
async function createAppointment() {
try {
console.log("🔐 Fazendo login como Aurora...");
// Login como Aurora
const loginResponse = await axios.post(
`${SUPABASE_URL}/auth/v1/token?grant_type=password`,
{
email: "aurora-nascimento94@gmx.com",
password: "auroranasc94",
},
{
headers: {
apikey: SUPABASE_ANON_KEY,
"Content-Type": "application/json",
},
}
);
const auroraToken = loginResponse.data.access_token;
console.log("✅ Login realizado como Aurora");
// Buscar o patient_id da Aurora
console.log("\n👤 Buscando dados da paciente...");
const patientResponse = await axios.get(
`${SUPABASE_URL}/rest/v1/patients?user_id=eq.${loginResponse.data.user.id}`,
{
headers: {
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${auroraToken}`,
},
}
);
if (!patientResponse.data || patientResponse.data.length === 0) {
throw new Error("Paciente não encontrada");
}
const patientId = patientResponse.data[0].id;
console.log(`✅ Patient ID: ${patientId}`);
// Buscar disponibilidade do Dr. Fernando para segunda-feira
console.log("\n📅 Buscando disponibilidade do Dr. Fernando...");
const availabilityResponse = await axios.get(
`${SUPABASE_URL}/rest/v1/doctor_availability?doctor_id=eq.6dad001d-229b-40b5-80f3-310243c4599c&weekday=eq.monday`,
{
headers: {
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${auroraToken}`,
},
}
);
if (!availabilityResponse.data || availabilityResponse.data.length === 0) {
throw new Error("Disponibilidade não encontrada");
}
const availability = availabilityResponse.data[0];
console.log(
`✅ Disponibilidade encontrada: ${availability.start_time} - ${availability.end_time}`
);
// Criar consulta para próxima segunda-feira às 10:00
const today = new Date();
const daysUntilMonday = (1 - today.getDay() + 7) % 7 || 7; // Próxima segunda
const appointmentDate = new Date(today);
appointmentDate.setDate(today.getDate() + daysUntilMonday);
appointmentDate.setHours(10, 0, 0, 0);
const scheduledAt = appointmentDate.toISOString();
console.log(`\n📝 Criando consulta para ${scheduledAt}...`);
const appointmentData = {
patient_id: patientId,
doctor_id: "6dad001d-229b-40b5-80f3-310243c4599c",
scheduled_at: scheduledAt,
duration_minutes: 30,
appointment_type: "presencial",
chief_complaint: "Consulta de rotina",
};
const appointmentResponse = await axios.post(
`${SUPABASE_URL}/rest/v1/appointments`,
appointmentData,
{
headers: {
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${auroraToken}`,
"Content-Type": "application/json",
Prefer: "return=representation",
},
}
);
console.log("\n✅ Consulta criada com sucesso!");
console.log("\n📋 Detalhes da consulta:");
console.log(` - Paciente: Aurora Sabrina Clara Nascimento`);
console.log(` - Médico: Dr. Fernando Pirichowski`);
console.log(` - Data/Hora: ${scheduledAt}`);
console.log(` - Duração: 30 minutos`);
console.log(` - Tipo: presencial`);
if (appointmentResponse.data && appointmentResponse.data.length > 0) {
console.log(` - ID da consulta: ${appointmentResponse.data[0].id}`);
console.log(
` - Order Number: ${appointmentResponse.data[0].order_number}`
);
console.log(` - Status: ${appointmentResponse.data[0].status}`);
}
} catch (error) {
console.error(
"❌ Erro ao criar consulta:",
error.response?.data || error.message
);
if (error.response?.data) {
console.error("Detalhes:", JSON.stringify(error.response.data, null, 2));
}
}
}
createAppointment();