import React, { useState } from 'react'; import InputMask from "react-input-mask"; function DoctorForm({ onSave, onCancel, PatientDict }) { const FormatTelefones = (valor) => { const digits = String(valor).replace(/\D/g, '').slice(0, 11); return digits .replace(/(\d)/, '($1') // 123 -> 123. .replace(/(\d{2})(\d)/, '$1) $2' ) .replace(/(\d)(\d{4})/, '$1 $2') .replace(/(\d{4})(\d{4})/, '$1-$2') } const FormatCPF = (valor) => { const digits = String(valor).replace(/\D/g, '').slice(0, 11); return digits .replace(/(\d{3})(\d)/, '$1.$2') // 123 -> 123. .replace(/(\d{3})(\d)/, '$1.$2') // 123.456 -> 123.456. .replace(/(\d{3})(\d{1,2})$/, '$1-$2'); // 123.456.789 -> 123.456.789-01 } const [formData, setFormData] = useState({ foto: null, nome: PatientDict.nome, nomeSocial: PatientDict.nome_social, dataNascimento: PatientDict.data_nascimento, genero: PatientDict.sexo, cpf: PatientDict.cpf, profissao: PatientDict.profissao , nomeConjuge: '', outroId: '', cep: '', cidade: PatientDict.cidade, estado: PatientDict.estado, bairro: PatientDict.bairro, rua: PatientDict.logradouro, numero: '', complemento: '', email: PatientDict.email, telefone1: PatientDict.celular, telefone2: '', telefone3: '', observacoes: '', rg: '', documentoTipo: '', numeroDocumento: '', etniaRaca: '', naturalidade: '', nacionalidade: '', estadoCivil: '', // INFORMAÇÕES MÉDICAS tipoSanguineo: '', peso: '', altura: '', imc: '', alergias: '', // ANEXO anexos: null, }); // Estado para armazenar a URL da foto do avatar const [avatarUrl, setAvatarUrl] = useState(null); // Estado para controlar quais seções estão colapsadas const [collapsedSections, setCollapsedSections] = useState({ dadosPessoais: true, // Alterado para true para a seção ficar aberta por padrão infoMedicas: false, infoConvenio: false, endereco: false, contato: false, }); // Função para alternar o estado de colapso de uma seção const handleToggleCollapse = (section) => { setCollapsedSections(prevState => ({ ...prevState, [section]: !prevState[section] })); }; const handleChange = (e) => { const { name, value, type, checked, files } = e.target; if (type === 'checkbox') { setFormData({ ...formData, [name]: checked }); } else if (type === 'file') { setFormData({ ...formData, [name]: files[0] }); // Lógica para pré-visualizar a imagem no avatar if (name === 'foto' && files[0]) { const reader = new FileReader(); reader.onloadend = () => { setAvatarUrl(reader.result); }; reader.readAsDataURL(files[0]); } else if (name === 'foto' && !files[0]) { setAvatarUrl(null); // Limpa o avatar se nenhum arquivo for selecionado } } else { setFormData({ ...formData, [name]: value }); } if (name.includes('cpf')) { let cpfFormatado = FormatCPF(value); setFormData(prev => ({ ...prev, [name]: cpfFormatado })); } else if (name.includes('telefone')) { let telefoneFormatado = FormatTelefones(value); setFormData(prev => ({ ...prev, [name]: telefoneFormatado })); } }; // Função para buscar endereço pelo CEP const handleCepBlur = async () => { const cep = formData.cep.replace(/\D/g, ''); if (cep.length === 8) { try { const response = await fetch(`https://viacep.com.br/ws/${cep}/json/`); const data = await response.json(); if (!data.erro) { setFormData((prev) => ({ ...prev, rua: data.logradouro || '', bairro: data.bairro || '', cidade: data.localidade || '', estado: data.uf || '' })); } else { alert('CEP não encontrado!'); } } catch (error) { alert('Erro ao buscar o CEP.'); } } }; const handleSubmit = () => { if (!formData.nome || !formData.cpf || !formData.genero || !formData.dataNascimento || !formData.email) { alert('Por favor, preencha: Nome ,CPF, Gênero, Data de Nascimento e Email.'); return; } onSave( { ...formData, endereco: { cep: formData.cep, cidade: formData.cidade, estado: formData.estado, bairro: formData.bairro, logradouro: formData.rua, numero: formData.numero, complemento: formData.complemento, }, contato: { email: formData.email, telefone1: formData.telefone1, telefone2: formData.telefone2, telefone3: formData.telefone3, }, infoMedicas: { tipoSanguineo: formData.tipoSanguineo, peso: formData.peso, altura: formData.altura, imc: formData.imc, alergias: formData.alergias, } } ); }; return (

MediConnect

{/* DADOS PESSOAIS */}

handleToggleCollapse('dadosPessoais')} style={{ fontSize: '1.8rem' }}> Dados Pessoais {collapsedSections.dadosPessoais ? '▲' : '▼'}

{/* AVATAR E INPUT DE FOTO */}
{avatarUrl ? ( Avatar do Médico ) : (
)}
{formData.foto && {formData.foto.name}}
{/* CADASTRO */}
{/* CAMPOS MOVIDOS */}
{formData.anexos ? formData.anexos.name : 'Nenhum arquivo escolhido'}
{/* ENDEREÇO */}

handleToggleCollapse('endereco')} style={{ fontSize: '1.8rem' }}> Endereço {collapsedSections.endereco ? '▲' : '▼'}

{/* CONTATO */}

handleToggleCollapse('contato')} style={{ fontSize: '1.8rem' }}> Contato {collapsedSections.contato ? '▲' : '▼'}

{/* Botões */}
//
//

MediConnect

// {/* ------------------ DADOS PESSOAIS ------------------ */} //
Dados Pessoais
//
//
// // //
//
// // //
//
// // //
//
// // //
//
// // //
//
// // //
//
// {/* ------------------ ENDEREÇO ------------------ */} //
Endereço
//
//
// // //
//
// // //
//
// // //
//
// // //
//
// // //
//
// // //
//
// // //
//
// {/* ------------------ CONTATO ------------------ */} //
Contato
//
//
// // //
//
// // //
//
// // //
//
// // //
//
// {/* ------------------ INFORMAÇÕES ADICIONAIS ------------------ */} //
Informações Adicionais
//
// // //
// {/* Botões */} //
// // //
//
); } export default DoctorForm;