");
-
- var requestOptions = {
- method: 'GET',
- headers: myHeaders,
- redirect: 'follow'
- };
-
- try {
- const response = await fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${id}`, requestOptions);
- const result = await response.json();
- return result.data;
- } catch (error) {
- console.error("Erro ao buscar paciente por ID:", error);
- return null;
- }
- };
-
- const ValidarCPF = async (cpf) => {
- let aviso
- let Erro = false
-
- try {
- const resultadoAPI = await ReceberRespostaAPIdoCPF(cpf)
- const valido = resultadoAPI.valido
- const ExisteNoBancoDeDados = resultadoAPI.existe
- const idPaciente = resultadoAPI.id_paciente
-
- if(valido === false){
- aviso = 'CPF inválido'
- Erro = true
- }
- else if(ExisteNoBancoDeDados === true){
- const paciente = await BuscarPacientePorId(idPaciente);
- if (paciente) {
- setPacienteExistente(paciente);
- setShowModal(true);
- }
- Erro = true
- }
- } catch (error) {
- console.error("Erro na validação do CPF:", error);
- setShowModal404(true);
- Erro = true;
- }
- return [Erro,aviso]
- }
-
- const FormatCPF = (valor) => {
- const digits = String(valor).replace(/\D/g, '').slice(0, 11);
- return digits
- .replace(/(\d{3})(\d)/, '$1.$2')
- .replace(/(\d{3})(\d)/, '$1.$2')
- .replace(/(\d{3})(\d{1,2})$/, '$1-$2');
- }
// Estado para armazenar a URL da foto do avatar
@@ -130,15 +49,13 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) {
const handleChange = (e) => {
const { name, value, type, checked, files } = e.target;
- console.log(formData, name)
+ console.log(formData, name, checked)
- if (type === 'checkbox') {
- setFormData({ ...formData, [name]: checked });
- } else if (type === 'file') {
+ if (type === 'file') {
setFormData({ ...formData, [name]: files[0] });
// Lógica para pré-visualizar a imagem no avatar
- if (name === 'foto' && files[0]) {
+ if (name === 'foto' && files[0]) {
const reader = new FileReader();
reader.onloadend = () => {
setAvatarUrl(reader.result);
@@ -149,13 +66,16 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) {
}}
- if (name.includes('cpf')) {
+ else if (name.includes('cpf')) {
setFormData({...formData, cpf:FormatCPF(value) });
} else if (name.includes('phone')) {
setFormData({ ...formData, [name]: FormatTelefones(value) });
}else if(name.includes('weight') || name.includes('bmi') || name.includes('height')){
setFormData({...formData,[name]: FormatPeso(value) })
- }else{
+ }else if(name.includes('rn') || name.includes('vip')){
+ setFormData({ ...formData, [name]: checked });
+ }
+ else{
setFormData({ ...formData, [name]: value });
}
};
@@ -190,15 +110,11 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) {
}
- const [CPFinvalido] = await ValidarCPF(formData.cpf);
- if(CPFinvalido === true){
-
- }
-
+
onSave({
...formData,bmi:12.0
});
- setShowSuccessModal(true);
+
};
return (
@@ -371,7 +287,7 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) {
{/* CAMPOS MOVIDOS */}
Observações:
-
+
Anexos do Paciente:
@@ -422,10 +338,7 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) {
IMC (kg/m²):
-
- Alergias:
-
-
+
@@ -473,7 +386,7 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) {
{/* PACIENTE VIP */}
-
+
Paciente VIP
@@ -561,7 +474,7 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) {
Salvar Paciente
-
+
Cancelar
@@ -571,51 +484,7 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) {
{/* Modal para paciente existente */}
{showModal && pacienteExistente && (
-
-
-
-
-
Ops! Este CPF já está cadastrado
- setShowModal(false)}>
-
-
-
-
-
-
ID do Paciente: {pacienteExistente.id}
-
Nome Completo: {pacienteExistente.nome}
-
CPF: {pacienteExistente.cpf}
-
Data de Nascimento: {pacienteExistente.data_nascimento}
-
Telefone: {pacienteExistente.contato.telefone1}
-
-
- setShowModal(false)}
- >
- Fechar e Continuar no Cadastro
-
- {
-
- alert(`Navegando para os detalhes do paciente ID: ${pacienteExistente.id}`);
- setShowModal(false);
- }}
- >
- Visualizar Paciente Existente
-
-
-
-
-
+
)}
{/* Modal de sucesso ao salvar paciente */}
diff --git a/src/components/utils/Formatar/Format.js b/src/components/utils/Formatar/Format.js
index 47bf709..a05e132 100644
--- a/src/components/utils/Formatar/Format.js
+++ b/src/components/utils/Formatar/Format.js
@@ -20,4 +20,12 @@ const FormatTelefones = (valor) => {
}
- export {FormatTelefones, FormatPeso}
\ No newline at end of file
+ const FormatCPF = (valor) => {
+ const digits = String(valor).replace(/\D/g, '').slice(0, 11);
+ return digits
+ .replace(/(\d{3})(\d)/, '$1.$2')
+ .replace(/(\d{3})(\d)/, '$1.$2')
+ .replace(/(\d{3})(\d{1,2})$/, '$1-$2');
+ }
+
+ export {FormatTelefones, FormatPeso, FormatCPF}
\ No newline at end of file
diff --git a/src/data/sidebar-items.json b/src/data/sidebar-items.json
index 81762b6..5edc8a4 100644
--- a/src/data/sidebar-items.json
+++ b/src/data/sidebar-items.json
@@ -10,18 +10,6 @@
"icon": "house"
},
- {
- "name": "Cadastro de Pacientes",
- "url": "/pacientes/cadastro",
- "icon": "heart-pulse-fill"
- },
-
- {
- "name": "Cadastro do Médico",
- "url": "/medicos/cadastro",
- "icon": "capsule"
- },
-
{
"name": "Lista de Pacientes",
"icon": "clipboard-heart-fill",
diff --git a/src/pages/Details.jsx b/src/pages/Details.jsx
index 38ef1db..964ba13 100644
--- a/src/pages/Details.jsx
+++ b/src/pages/Details.jsx
@@ -3,7 +3,7 @@ import avatarPlaceholder from '../assets/images/avatar_placeholder.png';
import { useParams } from "react-router-dom";
import API_KEY from "../components/utils/apiKeys";
import {GetByID} from "../components/utils/Functions-Endpoints/Patient"
-
+import { Link } from "react-router-dom";
import { useAuth } from "../components/utils/AuthProvider";
@@ -89,16 +89,29 @@ const Details = () => {
MediConnect
+
+
+ Voltar
+
+
+
+
-
{paciente.nome || "Nome Completo"}
+
{paciente.full_name || "Nome Completo"}
{paciente.cpf || "CPF"}
+
+
+
+ Editar
+
+
@@ -114,7 +127,7 @@ const Details = () => {
Nome social:
-
{paciente.nome_social || "-"}
+
{paciente.social_name || "-"}
Data de nascimento:
@@ -134,55 +147,55 @@ const Details = () => {
Outro documento:
-
{paciente.outros_documentos?.tipo || "-"}
+
{paciente.document_type || "-"}
Número do documento:
-
{paciente.outros_documentos?.numero || "-"}
+
{paciente.document_number || "-"}
Etnia:
-
{paciente.etnia || "-"}
+
{paciente.ethnicity || "-"}
Raça:
-
{paciente.raca || "-"}
+
{paciente.race || "-"}
Naturalidade:
-
{paciente.etniaRaca || "-"}
+
{paciente.naturality || "-"}
Profissão:
-
{paciente.profissao || "-"}
+
{paciente.profession || "-"}
Nome da Mãe:
-
{paciente.nome_mae || "-"}
+
{paciente.mother_name || "-"}
Profissão da mãe:
-
{paciente.profissao_mae || "-"}
+
{paciente.mother_profession || "-"}
Nome do Pai:
-
{paciente.nome_pai || "-"}
+
{paciente.father_name || "-"}
Profissão do pai:
-
{paciente.profissao_pai || "-"}
+
{paciente.father_profession || "-"}
Nome do responsável:
-
{paciente.nome_responsavel || "-"}
+
{paciente.guardian_name || "-"}
CPF do responsável:
-
{paciente.cpf_responsavel || "-"}
+
{paciente.guardian_cpf || "-"}
Estado civil:
-
{paciente.estado_civil || "-"}
+
{paciente.marital_status || "-"}
Nome do esposo(a):
@@ -190,17 +203,17 @@ const Details = () => {
Identificador de outro sistema:
-
{paciente.outro_id || "-"}
+
{paciente.legacy_code || "-"}
Observações:
-
{paciente.observacoes || "-"}
+
{paciente.notes || "-"}
Anexos do Paciente:
@@ -219,15 +232,7 @@ const Details = () => {
-
)}
-
-
- Carregar Um Novo Anexo
-
- setSelectedFile(e.target.files[0])} accept="image/*"/>
- {selectedFile && {selectedFile.name} }
- Enviar
-
+
@@ -238,23 +243,19 @@ const Details = () => {
Tipo Sanguíneo:
-
{paciente.tipoSanguineo || "-"}
+
{paciente.blood_type || "-"}
Peso (kg):
-
{paciente.peso || "-"}
+
{paciente.weight_kg || "-"}
Altura (m):
-
{paciente.altura || "-"}
+
{paciente.height_m || "-"}
IMC (kg/m²):
-
{paciente.imc || "-"}
-
-
-
Alergias:
-
{paciente.alergias || "-"}
+
{paciente.bmi || "-"}
@@ -288,7 +289,7 @@ const Details = () => {
@@ -302,31 +303,31 @@ const Details = () => {
CEP:
-
{paciente.endereco?.cep || "-"}
+
{paciente.cep || "-"}
Rua:
-
{paciente.endereco?.logradouro || "-"}
+
{paciente.street || "-"}
Bairro:
-
{paciente.endereco?.bairro || "-"}
+
{paciente.neighborhood || "-"}
Cidade:
-
{paciente.endereco?.cidade || "-"}
+
{paciente.city || "-"}
Estado:
-
{paciente.endereco?.estado || "-"}
+
{paciente.state || "-"}
Número:
-
{paciente.endereco?.numero || "-"}
+
{paciente.number || "-"}
Complemento:
-
{paciente.endereco?.complemento || "-"}
+
{paciente.complement || "-"}
@@ -338,19 +339,19 @@ const Details = () => {
Email:
-
{paciente.contato?.email || "-"}
+
{paciente.email || "-"}
Telefone:
-
{paciente.contato?.celular || "-"}
+
{paciente.phone_mobile || "-"}
Telefone 2:
-
{paciente.contato?.telefone2 || "-"}
+
{paciente.phone1 || "-"}
Telefone 3:
-
{paciente.contato?.telefone3 || "-"}
+
{paciente.phone2 || "-"}
diff --git a/src/pages/DoctorCadastroManager.jsx b/src/pages/DoctorCadastroManager.jsx
index a4764fb..4b29732 100644
--- a/src/pages/DoctorCadastroManager.jsx
+++ b/src/pages/DoctorCadastroManager.jsx
@@ -4,11 +4,13 @@ import React, { useState } from 'react';
import { useAuth } from '../components/utils/AuthProvider';
import DoctorForm from '../components/doctors/DoctorForm';
import API_KEY from '../components/utils/apiKeys';
+import { Navigate, useNavigate } from 'react-router-dom';
function DoctorCadastroManager( ) {
const [DoctorDict, setDoctorDict] = useState({})
-
+ const navigate = useNavigate();
+
const { getAuthorizationHeader, isAuthenticated } = useAuth();
// Estado do modal de sucesso
@@ -40,10 +42,10 @@ function DoctorCadastroManager( ) {
try {
const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1//doctors", requestOptions);
- const result = await response.json();
- console.log("Médico salvo no backend:", result);
-
- return result;
+
+ console.log("Médico salvo no backend:", response);
+
+ return response;
} catch (error) {
console.error("Erro ao salvar Médico:", error);
throw error;
@@ -80,7 +82,7 @@ function DoctorCadastroManager( ) {
{navigate('/medicos')}}
formData={DoctorDict}
setFormData={setDoctorDict}
/>
diff --git a/src/pages/DoctorDetails.jsx b/src/pages/DoctorDetails.jsx
index e3182c7..ee270c9 100644
--- a/src/pages/DoctorDetails.jsx
+++ b/src/pages/DoctorDetails.jsx
@@ -1,6 +1,6 @@
import React, { useEffect, useState } from "react";
import avatarPlaceholder from '../assets/images/avatar_placeholder.png';
-import { useParams } from "react-router-dom";
+import { useParams,Link } from "react-router-dom";
import { GetDoctorByID } from "../components/utils/Functions-Endpoints/Doctor";
import { useAuth } from "../components/utils/AuthProvider";
@@ -34,9 +34,11 @@ const Details = ({setCurrentPage }) => {
MediConnect
-
setCurrentPage("table")}>
- Voltar
-
+
+
+ Voltar
+
+
@@ -46,9 +48,11 @@ const Details = ({setCurrentPage }) => {
{doctor.cpf || "CPF"}
-
setCurrentPage("edit-page-doctor")}>
- Editar
-
+
+
{console.log(doctor.id)}} >
+ Editar
+
+
diff --git a/src/pages/DoctorTable.jsx b/src/pages/DoctorTable.jsx
index be2c0aa..b2f2b2c 100644
--- a/src/pages/DoctorTable.jsx
+++ b/src/pages/DoctorTable.jsx
@@ -4,7 +4,7 @@ import { useAuth } from "../components/utils/AuthProvider";
import { Link } from "react-router-dom";
function TableDoctor({ setCurrentPage, setPatientID }) {
- const {getAuthorizationHeader, isAuthenticated} = useAuth();
+ const {getAuthorizationHeader, isAuthenticated} = useAuth();
const [medicos, setMedicos] = useState([]);
const [search, setSearch] = useState("");
@@ -95,12 +95,14 @@ function TableDoctor({ setCurrentPage, setPatientID }) {
Médicos Cadastrados
- setCurrentPage("form-layout")}
- >
- Adicionar Médico
-
+
+
+ Adicionar Médico
+
+
diff --git a/src/pages/EditPage.jsx b/src/pages/EditPage.jsx
index 5b1ccda..56b2ac8 100644
--- a/src/pages/EditPage.jsx
+++ b/src/pages/EditPage.jsx
@@ -5,9 +5,10 @@ import PatientForm from '../components/patients/PatientForm'
import {useEffect, useState} from 'react'
import { GetByID } from '../components/utils/Functions-Endpoints/Patient'
import API_KEY from '../components/utils/apiKeys'
-import { useParams } from 'react-router-dom'
+import {useNavigate, useParams } from 'react-router-dom'
import { useAuth } from '../components/utils/AuthProvider'
const EditPage = ( {id, setCurrentPage}) => {
+ const navigate = useNavigate()
const Parametros = useParams()
const [PatientToPUT, setPatientPUT] = useState({})
@@ -53,10 +54,18 @@ const HandlePutPatient = async () => {
const response = await fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients?id=eq.${PatientID}`,requestOptions);
// se o backend retorna JSON
- const result = await response.json();
- console.log("ATUALIZADO COM SUCESSO", result);
-
- return result;
+ console.log("Resposta do servidor:", response.ok);
+ if(response.ok === false){
+ const errorText = await response.text();
+ console.error("Erro ao atualizar paciente:", errorText);
+ }
+ else{
+
+ console.log("ATUALIZADO COM SUCESSO");
+ navigate('/pacientes')
+ }
+
+ return response;
} catch (error) {
console.error("Erro ao atualizar paciente:", error);
throw error;
diff --git a/src/pages/Inicio.jsx b/src/pages/Inicio.jsx
index f383422..68c91de 100644
--- a/src/pages/Inicio.jsx
+++ b/src/pages/Inicio.jsx
@@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
import { FaUser, FaUserPlus, FaCalendarAlt, FaCalendarCheck } from 'react-icons/fa';
import './style/Inicio.css';
import { useAuth } from '../components/utils/AuthProvider';
+import { Link } from 'react-router-dom';
function Inicio({ setCurrentPage }) {
const {setAuthTokens} = useAuth()
@@ -10,8 +11,6 @@ function Inicio({ setCurrentPage }) {
useEffect(() => {
-
-
var myHeaders = new Headers();
myHeaders.append("apikey", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ");
diff --git a/src/pages/PatientCadastroManager.jsx b/src/pages/PatientCadastroManager.jsx
index 08d2fc2..300e261 100644
--- a/src/pages/PatientCadastroManager.jsx
+++ b/src/pages/PatientCadastroManager.jsx
@@ -2,8 +2,10 @@ import {useState} from 'react';
import PatientForm from '../components/patients/PatientForm';
import API_KEY from '../components/utils/apiKeys';
import { useAuth } from '../components/utils/AuthProvider';
+import { useNavigate } from 'react-router-dom';
function PatientCadastroManager( {setCurrentPage} ) {
-
+ const navigate = useNavigate()
+ const [showModal, setShowModal] = useState(false);
const { getAuthorizationHeader, isAuthenticated } = useAuth();
const [formData, setFormData] = useState({})
@@ -11,7 +13,6 @@ function PatientCadastroManager( {setCurrentPage} ) {
const handleSavePatient = async (patientData) => {
const authHeader = getAuthorizationHeader();
-
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("apikey", API_KEY)
@@ -30,34 +31,72 @@ function PatientCadastroManager( {setCurrentPage} ) {
redirect: 'follow'
};
+
+ // 23505 - cpf duplicadoo
+ // 23514 - cpf invalido
try {
const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients", requestOptions);
- const result = await response.json();
- console.log("Paciente salvo no backend:", result);
-
- return result;
- } catch (error) {
- console.error("Erro ao salvar paciente:", error);
- throw error;
+ console.log(response.ok, 'aqui')
+
+ if(response.ok === false){
+ const data = await response.json();
+ console.log("Erro ao salvar paciente:", data);
+ if (data.code === "23505") {
+ setShowModal(true);
+ }
}
+ else{
+
+ console.log("ATUALIZADO COM SUCESSO");
+ navigate('/pacientes')
+ }
+ } catch (error) {
+ console.error("Erro ao salvar paciente:", error);
+ throw error;
+ }
};
return (
<>
+
+ {showModal &&(
+
+
+
+
+
Ops! Este CPF já está cadastrado
+ setShowModal(false)}>
+
+
+
+ setShowModal(false)}
+ >
+ Fechar e Continuar no Cadastro
+
+
+
+
+
+
)}
+
Cadastro de Pacientes
- {/* Aqui está a lógica principal: */}
- {/* Se a view for 'list', mostramos a lista com o botão. */}
- {/* Se for 'form', mostramos o formulário de cadastro. */}
-
{setCurrentPage('table')}}
+ onCancel={() => {navigate('/pacientes')}}
formData={formData}
setFormData={setFormData}
/>