// src/PagesMedico/DoctorRelatorioManager.jsx import API_KEY from '../components/utils/apiKeys'; import { Link } from 'react-router-dom'; import { useState, useEffect } from 'react'; import { useAuth } from '../components/utils/AuthProvider'; import { GetPatientByID } from '../components/utils/Functions-Endpoints/Patient'; import { GetDoctorByID } from '../components/utils/Functions-Endpoints/Doctor'; import { useNavigate } from 'react-router-dom'; import html2pdf from 'html2pdf.js'; import TiptapViewer from './TiptapViewer'; const DoctorRelatorioManager = () => { const navigate = useNavigate(); const { getAuthorizationHeader } = useAuth(); const authHeader = getAuthorizationHeader(); const [RelatoriosFiltrados, setRelatorios] = useState([]); const [PacientesComRelatorios, setPacientesComRelatorios] = useState([]); const [MedicosComRelatorios, setMedicosComRelatorios] = useState([]); const [showModal, setShowModal] = useState(false); const [index, setIndex] = useState(); // busca lista de relatórios useEffect(() => { const fetchReports = async () => { try { var myHeaders = new Headers(); myHeaders.append('apikey', API_KEY); myHeaders.append('Authorization', authHeader); var requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; const res = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/reports?select=*", requestOptions); const data = await res.json(); setRelatorios(data || []); } catch (err) { console.error('Erro listar relatórios', err); setRelatorios([]); } }; fetchReports(); }, [authHeader]); // depois que RelatoriosFiltrados mudar, busca pacientes e médicos correspondentes useEffect(() => { const fetchRelData = async () => { const pacientes = []; const medicos = []; for (let i = 0; i < RelatoriosFiltrados.length; i++) { const rel = RelatoriosFiltrados[i]; // paciente try { const pacienteRes = await GetPatientByID(rel.patient_id, authHeader); pacientes.push(Array.isArray(pacienteRes) ? pacienteRes[0] : pacienteRes); } catch (err) { pacientes.push(null); } // médico: tenta created_by ou requested_by id se existir try { const doctorId = rel.created_by || rel.requested_by || null; if (doctorId) { // se created_by é id (uuid) usamos GetDoctorByID, senão se requested_by for nome, guardamos nome const docRes = await GetDoctorByID(doctorId, authHeader); medicos.push(Array.isArray(docRes) ? docRes[0] : docRes); } else { medicos.push({ full_name: rel.requested_by || '' }); } } catch (err) { medicos.push({ full_name: rel.requested_by || '' }); } } setPacientesComRelatorios(pacientes); setMedicosComRelatorios(medicos); }; if (RelatoriosFiltrados.length > 0) fetchRelData(); else { setPacientesComRelatorios([]); setMedicosComRelatorios([]); } }, [RelatoriosFiltrados, authHeader]); const BaixarPDFdoRelatorio = (nome_paciente) => { const elemento = document.getElementById("folhaA4"); const opt = { margin: 0, filename: `relatorio_${nome_paciente || "paciente"}.pdf`, html2canvas: { scale: 2 }, jsPDF: { unit: "mm", format: "a4", orientation: "portrait" } }; html2pdf().set(opt).from(elemento).save(); }; return (
Clinica Rise up
Dr - CRM/SP 123456
Avenida - (79) 9 4444-4444
Paciente: {PacientesComRelatorios[index]?.full_name}
Data de nascimento: {PacientesComRelatorios[index]?.birth_date}
Data do exame: {RelatoriosFiltrados[index]?.due_at || ''}
{/* Exibe conteúdo salvo (content_html) */}Conteúdo do Relatório:
Dr {MedicosComRelatorios[index]?.full_name || RelatoriosFiltrados[index]?.requested_by}
Emitido em: {RelatoriosFiltrados[index]?.created_at || '—'}
| Paciente | Doutor | ||||||
|---|---|---|---|---|---|---|---|
| {PacientesComRelatorios[idx]?.full_name} | {MedicosComRelatorios[idx]?.full_name || relatorio.requested_by || '-'} |
|
|||||
| Nenhum paciente encontrado. | |||||||