// src/PagesMedico/EditPageRelatorio.jsx import React, { useEffect, useState } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import API_KEY from '../components/utils/apiKeys'; import { useAuth } from '../components/utils/AuthProvider'; import TiptapEditor from '../PagesMedico/TiptapEditor'; import { GetPatientByID } from '../components/utils/Functions-Endpoints/Patient'; import { GetDoctorByID } from '../components/utils/Functions-Endpoints/Doctor'; const EditPageRelatorio = () => { const params = useParams(); const navigate = useNavigate(); const { getAuthorizationHeader } = useAuth(); const authHeader = getAuthorizationHeader(); const [loading, setLoading] = useState(true); const [report, setReport] = useState(null); const [patient, setPatient] = useState(null); const [doctor, setDoctor] = useState(null); const [html, setHtml] = useState(''); const generateTemplate = (r = {}, p = {}, d = {}) => { const patientName = p?.full_name || '[NOME DO PACIENTE]'; const birthDate = p?.birth_date || ''; const exam = r?.exam || ''; const doctorName = d?.full_name || r?.requested_by || ''; return `

Clinica Rise up

Dr - CRM/SP 123456

Avenida - (79) 9 4444-4444


Paciente: ${patientName}

Data de nascimento: ${birthDate}

Data do exame:

Exame: ${exam}


Diagnóstico:

${r?.diagnosis || ''}


Conclusão:

${r?.conclusion || ''}


Dr ${doctorName}

Emitido em: 0

`; }; useEffect(() => { const load = async () => { setLoading(true); try { const myHeaders = new Headers(); myHeaders.append("apikey", API_KEY); if (authHeader) myHeaders.append("Authorization", authHeader); const requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; // Pega relatório por id (supabase geralmente retorna array para ?id=eq.X) const resp = await fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/reports?id=eq.${params.id}`, requestOptions); const data = await resp.json(); const rep = Array.isArray(data) ? data[0] : data; if (!rep) throw new Error('Relatório não encontrado'); setReport(rep); // busca paciente if (rep.patient_id) { const p = await GetPatientByID(rep.patient_id, authHeader); setPatient(Array.isArray(p) ? p[0] : p); } // busca doctor se tiver created_by/requested_by id (tentamos fallback) if (rep.created_by) { try { const d = await GetDoctorByID(rep.created_by, authHeader); setDoctor(Array.isArray(d) ? d[0] : d); } catch (e) { // ignore } } // content_html preferencial let initial = rep.content_html || rep.content || rep.diagnosis || rep.conclusion || ''; if (!initial || initial.trim() === '') { initial = generateTemplate(rep, patient || {}, doctor || {}); } setHtml(initial); } catch (err) { console.error('Erro carregar relatório', err); alert('Erro ao carregar relatório. Veja console.'); } finally { setLoading(false); } }; load(); // eslint-disable-next-line }, [params.id, authHeader]); const handleSave = async () => { setLoading(true); try { const myHeaders = new Headers(); myHeaders.append('apikey', API_KEY); if (authHeader) myHeaders.append('Authorization', authHeader); myHeaders.append('Content-Type', 'application/json'); myHeaders.append('Accept', 'application/json'); // pedir que o Supabase retorne a representação do registro atualizado (opcional) myHeaders.append('Prefer', 'return=representation'); const body = JSON.stringify({ content_html: html }); const res = await fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/reports?id=eq.${params.id}`, { method: 'PATCH', headers: myHeaders, body }); if (!res.ok) { let txt; try { txt = await res.text(); } catch (e) { txt = 'erro lendo resposta'; } console.error('Erro PATCH', res.status, txt); throw new Error('Erro na API'); } // Recebe o dado atualizado e atualiza o estado do componente let updatedData; try { updatedData = await res.json(); } catch (e) { updatedData = null; } const updatedReport = Array.isArray(updatedData) ? updatedData[0] : updatedData; if (updatedReport) { setReport(updatedReport); setHtml(updatedReport.content_html || ''); } alert('Relatório atualizado com sucesso!'); navigate('/medico/relatorios'); } catch (err) { console.error(err); alert('Erro ao salvar. Veja console.'); } finally { setLoading(false); } }; if (loading) return
Carregando...
; return (

Editar Relatório do Paciente: {patient?.full_name || '...'}

Conteúdo do Relatório
setHtml(newHtml)} />
); }; export default EditPageRelatorio;