import React, { useEffect, useState, useRef } from 'react'; import { useNavigate } from 'react-router-dom'; import API_KEY from '../components/utils/apiKeys'; import { useAuth } from '../components/utils/AuthProvider'; import TiptapEditor from './TiptapEditor'; import { GetAllPatients, GetPatientByID } from '../components/utils/Functions-Endpoints/Patient'; import { GetAllDoctors, GetDoctorByID } from '../components/utils/Functions-Endpoints/Doctor'; import './styleMedico/FormNovoRelatorio.css'; const FormNovoRelatorio = () => { const { getAuthorizationHeader } = useAuth(); const authHeader = getAuthorizationHeader(); const navigate = useNavigate(); const [patients, setPatients] = useState([]); const [doctors, setDoctors] = useState([]); const [loadingPatients, setLoadingPatients] = useState(true); const [loadingDoctors, setLoadingDoctors] = useState(true); // formulário const [form, setForm] = useState({ patient_id: '', patient_name: '', patient_birth: '', doctor_id: '', doctor_name: '', contentHtml: '', }); // campos de busca (texto) const [patientQuery, setPatientQuery] = useState(''); const [doctorQuery, setDoctorQuery] = useState(''); // dropdown control const [showPatientDropdown, setShowPatientDropdown] = useState(false); const [showDoctorDropdown, setShowDoctorDropdown] = useState(false); const patientRef = useRef(); const doctorRef = useRef(); useEffect(() => { // carregar pacientes let mounted = true; const loadPatients = async () => { setLoadingPatients(true); try { const list = await GetAllPatients(authHeader); if (mounted && Array.isArray(list)) setPatients(list); } catch (err) { console.error('Erro GetAllPatients:', err); } finally { if (mounted) setLoadingPatients(false); } }; const loadDoctors = async () => { setLoadingDoctors(true); try { const list = await GetAllDoctors(authHeader); if (mounted && Array.isArray(list)) setDoctors(list); } catch (err) { console.error('Erro GetAllDoctors:', err); } finally { if (mounted) setLoadingDoctors(false); } }; loadPatients(); loadDoctors(); return () => { mounted = false; }; }, [authHeader]); // fechar dropdowns quando clicar fora useEffect(() => { const handleClick = (e) => { if (patientRef.current && !patientRef.current.contains(e.target)) setShowPatientDropdown(false); if (doctorRef.current && !doctorRef.current.contains(e.target)) setShowDoctorDropdown(false); }; document.addEventListener('click', handleClick); return () => document.removeEventListener('click', handleClick); }, []); const generateTemplate = (patientName = '', birthDate = '', doctorName = '') => { return `
Clinica Rise up
Dr - CRM/SP 123456
Avenida - (79) 9 4444-4444
Paciente: ${patientName}
Data de nascimento: ${birthDate}
Data do exame:
Exame:
Diagnóstico:
Conclusão:
Dr ${doctorName}
Emitido em: 0