diff --git a/package-lock.json b/package-lock.json index 3a03d4c..a5fc875 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "react": "^18.2.0", "react-apexcharts": "^1.7.0", "react-bootstrap": "^2.10.10", + "react-bootstrap-icons": "^1.11.6", "react-dom": "^18.2.0", "react-flatpickr": "^4.0.11", "react-input-mask": "^2.0.4", @@ -30401,6 +30402,18 @@ } } }, + "node_modules/react-bootstrap-icons": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/react-bootstrap-icons/-/react-bootstrap-icons-1.11.6.tgz", + "integrity": "sha512-ycXiyeSyzbS1C4+MlPTYe0riB+UlZ7LV7YZQYqlERV2cxDiKtntI0huHmP/3VVvzPt4tGxqK0K+Y6g7We3U6tQ==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">=16.8.6" + } + }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", diff --git a/package.json b/package.json index 2ee1efb..1b3f407 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "react": "^18.2.0", "react-apexcharts": "^1.7.0", "react-bootstrap": "^2.10.10", + "react-bootstrap-icons": "^1.11.6", "react-dom": "^18.2.0", "react-flatpickr": "^4.0.11", "react-input-mask": "^2.0.4", diff --git a/src/components/patients/PatientForm.jsx b/src/components/patients/PatientForm.jsx index 6d16b63..a64f5be 100644 --- a/src/components/patients/PatientForm.jsx +++ b/src/components/patients/PatientForm.jsx @@ -57,24 +57,47 @@ function PatientForm({ onSave, onCancel, PatientDict }) { estadoCivil: '', rnConvenio: false, - //CAMPOS: INFORMAÇÕES MÉDICAS + // INFORMAÇÕES MÉDICAS tipoSanguineo: '', peso: '', altura: '', imc: '', alergias: '', - // CAMPOS: INFORMAÇÕES DE CONVÊNIO + // INFORMAÇÕES DE CONVÊNIO convenio: '', plano: '', numeroMatricula: '', validadeCarteira: '', validadeIndeterminada: false, + pacienteVip: false, // NOVO CAMPO ADICIONADO - // CAMPO: ANEXOS + // 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, + infoAdicionais: false, + anexos: false, + }); + + // Função para alternar o estado de colapso de uma seção + const handleToggleCollapse = (section) => { + setCollapsedSections(prevState => ({ + ...prevState, + [section]: !prevState[section] + })); + }; + // Lógica para calcular o IMC useEffect(() => { const peso = parseFloat(formData.peso); @@ -95,6 +118,18 @@ function PatientForm({ onSave, onCancel, PatientDict }) { 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 }); } @@ -167,6 +202,7 @@ function PatientForm({ onSave, onCancel, PatientDict }) { numeroMatricula: formData.numeroMatricula, validadeCarteira: formData.validadeCarteira, validadeIndeterminada: formData.validadeIndeterminada, + pacienteVip: formData.pacienteVip, // Adicionando o novo campo }, }); }; @@ -175,266 +211,379 @@ function PatientForm({ onSave, onCancel, PatientDict }) {