diff --git a/src/PagesMedico/DoctorAgendamentoEditPage.jsx b/src/PagesMedico/DoctorAgendamentoEditPage.jsx
new file mode 100644
index 00000000..07cebfa4
--- /dev/null
+++ b/src/PagesMedico/DoctorAgendamentoEditPage.jsx
@@ -0,0 +1,90 @@
+import React, { useState, useEffect } from 'react'
+
+import FormNovaConsulta from '../components/AgendarConsulta/FormNovaConsulta'
+import API_KEY from '../components/utils/apiKeys'
+import { useAuth } from '../components/utils/AuthProvider'
+import { UserInfos } from '../components/utils/Functions-Endpoints/General'
+
+const DoctorAgendamentoEditPage = ({DictInfo, setDictInfo}) => {
+
+ const {getAuthorizationHeader} = useAuth();
+
+ const [consultaToPut, setConsultaToPUT] = useState({})
+ const [idUsuario, setIdUsuario] = useState("")
+
+
+ const authHeader = getAuthorizationHeader()
+
+
+ useEffect(() => {
+ //console.log(DictInfo.scheduled_at.split("T")[0])
+ setDictInfo({...DictInfo, dataAtendimento:DictInfo?.scheduled_at?.split("T")[0]})
+
+ const fetchUserInfo = async () => {
+ const InfosUser = await UserInfos(authHeader)
+ console.log("Informações", InfosUser)
+ setIdUsuario(InfosUser.id)
+ }
+
+ fetchUserInfo()
+
+
+
+ }, [])
+
+ const handleSave = (DictParaPatch) => {
+ var myHeaders = new Headers();
+ myHeaders.append("Content-Type", "application/json");
+ myHeaders.append('apikey', API_KEY)
+ myHeaders.append("authorization", authHeader)
+
+ console.log(DictParaPatch)
+
+ var raw = JSON.stringify({"patient_id": DictParaPatch.patient_id,
+ "doctor_id": DictParaPatch.doctor_id,
+
+ "duration_minutes": 30,
+
+ "chief_complaint": "Dor de cabeça há 3 ",
+
+ "created_by": idUsuario,
+
+ "scheduled_at": `${DictParaPatch.dataAtendimento}T${DictParaPatch.horarioInicio}:00.000Z`,
+
+ "appointment_type": DictParaPatch.tipo_consulta,
+
+ "patient_notes": "Prefiro horário pela manhã",
+ "insurance_provider": DictParaPatch.convenio,
+ "status": DictParaPatch.status,
+ "created_by": idUsuario
+
+
+ });
+
+ // console.log(DictParaPatch)
+ //console.log(id)
+
+ var requestOptions = {
+ method: 'PATCH',
+ headers: myHeaders,
+ body: raw,
+ redirect: 'follow'
+ };
+
+ fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${DictInfo.id}`, requestOptions)
+ .then(response => response.text())
+ .then(result => console.log(result))
+ .catch(error => console.log('error', error));
+ }
+
+
+
+
+ return (
+
+
+
+ )
+}
+
+export default DoctorAgendamentoEditPage
\ No newline at end of file
diff --git a/src/PagesMedico/DoctorAgendamentoManager.jsx b/src/PagesMedico/DoctorAgendamentoManager.jsx
index 518f5c84..efd7e219 100644
--- a/src/PagesMedico/DoctorAgendamentoManager.jsx
+++ b/src/PagesMedico/DoctorAgendamentoManager.jsx
@@ -13,7 +13,7 @@ import { useAuth } from '../components/utils/AuthProvider.js';
// ✨ NOVO: Caminho de importação corrigido com base na sua estrutura de pastas
import AgendamentosMes from '../components/AgendarConsulta/DadosConsultasMock.js';
-
+import { UserInfos } from '../components/utils/Functions-Endpoints/General.js';
import dayjs from 'dayjs';
import "../pages/style/Agendamento.css";
import '../pages/style/FilaEspera.css';
@@ -35,11 +35,15 @@ const Agendamento = ({setDictInfo}) => {
const [DictAgendamentosOrganizados, setAgendamentosOrganizados ] = useState({})
const [showDeleteModal, setShowDeleteModal] = useState(false)
- const [AgendamentoFiltrado, setAgendamentoFiltrado] = useState()
-
- const [ListaDeMedicos, setListaDeMedicos] = useState([])
- const [FiltredTodosMedicos, setFiltredTodosMedicos] = useState([])
- const [searchTermDoctor, setSearchTermDoctor] = useState('');
+ const [showConfirmModal, setShowConfirmModal] = useState(false)
+
+ const [coresConsultas, setCoresConsultas] = useState([])
+
+ const [listaConsultasID, setListaConsultaID] = useState([])
+
+ const [motivoCancelamento, setMotivoCancelamento] = useState("")
+
+ const [user, setUser] = useState({})
let authHeader = getAuthorizationHeader()
@@ -51,14 +55,14 @@ const Agendamento = ({setDictInfo}) => {
let paciente = await GetPatientByID(patient_id, authHeader);
let dicionario = {
- agendamento: agendamento,
- Infos: {
- nome_nedico: medico.full_name,
+ ...agendamento,
+
+ nome_medico: medico[0].full_name,
doctor_id: medico.id,
patient_id: paciente[0].id,
paciente_nome: paciente[0].full_name,
paciente_cpf: paciente[0].cpf
- }
+
};
return dicionario;
};
@@ -69,17 +73,19 @@ const Agendamento = ({setDictInfo}) => {
// 1. Agrupamento (igual ao seu código original)
for (const agendamento of listaTodosAgendamentos) {
if (agendamento.status === 'requested') {
- // Recomenda-se usar Promise.all para melhorar a performance
- // mas, para manter a estrutura, mantemos o await no loop.
+
let v = await ConfigurarFiladeEspera(agendamento.patient_id, agendamento.doctor_id, agendamento);
ListaFilaDeEspera.push(v);
} else {
- const DiaAgendamento = agendamento.scheduled_at.split("T")[0];
+
+ const DiaAgendamento = agendamento.scheduled_at?.split("T")[0];
+
+ let novoAgendamento = await ConfigurarFiladeEspera(agendamento.patient_id, agendamento.doctor_id, agendamento);
if (DiaAgendamento in DictAgendamentosOrganizados) {
- DictAgendamentosOrganizados[DiaAgendamento].push(agendamento);
+ DictAgendamentosOrganizados[DiaAgendamento].push(novoAgendamento);
} else {
- DictAgendamentosOrganizados[DiaAgendamento] = [agendamento];
+ DictAgendamentosOrganizados[DiaAgendamento] = [novoAgendamento];
}
}
}
@@ -117,8 +123,23 @@ const Agendamento = ({setDictInfo}) => {
setfilaEsperaData(ListaFilaDeEspera);
};
+useEffect(() => {
+
+console.log(user, "usuario")
+
+}, [user])
+
// Requisição inicial para mostrar os agendamentos do banco de dados
useEffect(() => {
+
+ async function fetchDadosUser (){
+ let dado = await UserInfos(authHeader)
+ setUser(dado)
+ }
+
+ fetchDadosUser()
+
+
var myHeaders = new Headers();
myHeaders.append("Authorization", authHeader);
myHeaders.append("apikey", API_KEY)
@@ -129,84 +150,41 @@ const Agendamento = ({setDictInfo}) => {
redirect: 'follow'
};
- fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?select&doctor_id&patient_id&status&scheduled_at&order&limit&offset", requestOptions)
+ fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?doctor_id=eq.${"078d2a67-b4c1-43c8-ae32-c1e75bb5b3df"}`, requestOptions)
.then(response => response.json())
- .then(result => {FiltrarAgendamentos(result);})
+ .then(result => {FiltrarAgendamentos(result); console.log(result, "RESULTRADO DA API")})
.catch(error => console.log('error', error));
- const PegarTodosOsMedicos = async () => {
- let lista = []
- const TodosOsMedicos = await GetAllDoctors(authHeader)
-
- for(let d = 0; TodosOsMedicos.length > d; d++){
- lista.push({nomeMedico: TodosOsMedicos[d].full_name, idMedico: TodosOsMedicos[d].id })}
- setListaDeMedicos(lista)
- }
- PegarTodosOsMedicos()
+
}, [])
- useEffect(() => {
- console.log("mudou FiltredTodosMedicos:", FiltredTodosMedicos);
- if (FiltredTodosMedicos.length === 1) {
- const unicoMedico = FiltredTodosMedicos[0];
- console.log(unicoMedico)
- const idMedicoFiltrado = unicoMedico.idMedico;
- console.log(`Médico único encontrado: ${unicoMedico.nomeMedico}. ID: ${idMedicoFiltrado}`);
-
- const agendamentosDoMedico = filtrarAgendamentosPorMedico(
- DictAgendamentosOrganizados,
- idMedicoFiltrado
- );
- console.log(`Total de agendamentos filtrados para este médico: ${agendamentosDoMedico.length}`);
- console.log("Lista completa de Agendamentos do Médico:", agendamentosDoMedico);
- FiltrarAgendamentos(agendamentosDoMedico)
-
- }
- }, [FiltredTodosMedicos]);
const deleteConsulta = (selectedPatientId) => {
- console.log("tentando apagar")
- var myHeaders = new Headers();
- myHeaders.append("Authorization", authHeader);
- myHeaders.append("apikey", API_KEY)
+ var myHeaders = new Headers();
+ myHeaders.append("Content-Type", "application/json");
+ myHeaders.append('apikey', API_KEY)
+ myHeaders.append("authorization", authHeader)
-var requestOptions = {
- method: 'DELETE',
- redirect: 'follow',
- headers: myHeaders
-};
-fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${selectedPatientId}`, requestOptions)
- .then(response => response.json())
- .then(result => console.log(result))
- .catch(error => console.log('error', error));
-
+ var raw = JSON.stringify({ "status":"cancelled",
+ "cancellation_reason": motivoCancelamento
+ });
+
+
+ var requestOptions = {
+ method: 'PATCH',
+ headers: myHeaders,
+ body: raw,
+ redirect: 'follow'
+ };
+
+ fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${selectedPatientId}`, requestOptions)
+ .then(response => {if(response.status !== 200)(console.log(response))})
+ .then(result => console.log(result))
+ .catch(error => console.log('error', error));
}
-
-/**
- * Filtra todos os agendamentos em um objeto aninhado (data -> [agendamentos])
- * com base no ID do médico.
- *
- * @param {Object} dictAgendamentos - O dicionário de agendamentos.
- * @param {string} idMedicoFiltrado - O ID do médico (doctor_id) para ser usado como filtro.
- * @returns {Array} Um array contendo todos os agendamentos que correspondem ao idMedicoFiltrado.
- */
-const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
-
- // O corpo da função deve usar esses nomes de variáveis:
- const todasAsListasDeAgendamentos = Object.values(dictAgendamentos);
-
- const todosOsAgendamentos = todasAsListasDeAgendamentos.flat();
-
- const agendamentosFiltrados = todosOsAgendamentos.filter(agendamento =>
- agendamento.doctor_id === idMedicoFiltrado
- );
-
- return agendamentosFiltrados;
-};
-
// Lógica para filtrar os dados da AGENDA (AgendamentosMes)
@@ -249,26 +227,30 @@ const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
return ListaDiasDatas
}
- const handleClickAgendamento = (agendamento) => {
- if (agendamento.status !== 'vazio') return
- else setPageConsulta(true)
-};
-
-
-const handleSearchMedicos = (term) => {
- setSearchTermDoctor(term);
- if (term.trim() === '') {
- setFiltredTodosMedicos([]);
- return;
- }
-
- // Lógica simples de filtragem:
- const filtered = ListaDeMedicos.filter(medico =>
- medico.nomeMedico.toLowerCase().includes(term.toLowerCase())
- );
- setFiltredTodosMedicos(filtered);
-};
+const confirmConsulta = (selectedPatientId) => {
+ var myHeaders = new Headers();
+ myHeaders.append("Content-Type", "application/json");
+ myHeaders.append('apikey', API_KEY)
+ myHeaders.append("authorization", authHeader)
+
+
+ var raw = JSON.stringify({ "status":"confirmed"
+ });
+
+
+ var requestOptions = {
+ method: 'PATCH',
+ headers: myHeaders,
+ body: raw,
+ redirect: 'follow'
+ };
+
+ fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${selectedPatientId}`, requestOptions)
+ .then(response => {if(response.status !== 200)(console.log(response))})
+ .then(result => console.log(result))
+ .catch(error => console.log('error', error));
+}
const handleClickCancel = () => setPageConsulta(false)
@@ -289,78 +271,10 @@ const handleSearchMedicos = (term) => {
-
-
-
-
-
-
- handleSearchMedicos(e.target.value)} // Chama a nova função de filtro
- />
-
-
-
- {/* DROPDOWN (RENDERIZAÇÃO CONDICIONAL) */}
- {searchTermDoctor && FiltredTodosMedicos.length > 0 && (
-
- {FiltredTodosMedicos.map((medico) => (
-
{
- // Ação ao selecionar o médico
- setSearchTermDoctor(medico.nomeMedico); // Preenche o input
- //setFiltredTodosMedicos([]); // Fecha o dropdown
- // Lógica adicional, como selecionar o ID do médico...
- }}
- >
-
{medico.nomeMedico}
-
- ))}
-
- )}
-
-
-
-
-
- Unidade
- Unidade Central
- Unidade Zona Norte
- Unidade Zona Oeste
-
-
-
-
-
- {
- setFiladeEspera(false);
- setSearchTerm('');
- }}
- >
- Agenda
-
- {
- setFiladeEspera(true);
- setSearchTerm('');
- }}
- >
- Fila de espera
-
-
-
+
- {FiladeEspera === false ?
- (
+
@@ -383,80 +297,34 @@ const handleSearchMedicos = (term) => {
- {tabela === "diario" &&
}
- {tabela === 'semanal' &&
}
- {tabela === 'mensal' && }
+ {tabela === "diario" && }
+
+
+ {tabela === 'semanal' && }
+
+
+ {tabela === 'mensal' && }
- )
- :
- (
-
-
- setSearchTerm(e.target.value)}
- />
-
Fila de Espera
-
-
-
-
- Nome
- Telefone
-
- Telefone
- Entrou na fila de espera
- Ações
-
-
-
- {filaEsperaData.map((item, index) => (
-
- {item.Infos?.paciente_nome}
- {}
- {}
- {}
-
-
- {
- console.log(item, 'item')
- navigate(`${2}/edit`)
- setDictInfo(item)
- }}
- >
- Editar
-
-
-
- {
- setSelectedId(item.agendamento.id)
- setShowDeleteModal(true);
- }}
- >
- Excluir
-
-
-
- ))}
-
-
-
- )
- }
-
+
+
) : (
-
+
)}
- {showDeleteModal && (
+
+ {showConfirmModal &&(
{
}
>
+
+
+
+
+ Confirmação de edição
+
+
+
+
+
+
+ Tem certeza que deseja retirar o cancelamento ?
+
+
+
+
+
+ {setShowConfirmModal(false); setSelectedId("")}}
+ >
+ Cancelar
+
+
+
+ {confirmConsulta(selectedID);setShowConfirmModal(false)
+ let lista_cores = coresConsultas
+
+ let lista = listaConsultasID
+
+ lista.push(selectedID)
+ lista_cores.push("confirmed")
+
+ setCoresConsultas(lista_cores)
+
+ setListaConsultaID(lista)
+ }}
+
+ >
+ Confirmar
+
+
+
+
+
)}
+
+ {showDeleteModal && (
+
+ e.target.classList.contains("modal") && setShowDeleteModal(false)
+ }
+ >
+
- Confirmação de Exclusão
+ Confirmação de Cancelamento
{
- Tem certeza que deseja excluir este agendamento?
+ Qual o motivo do cancelamento?
+
+
+
@@ -493,7 +428,10 @@ const handleSearchMedicos = (term) => {
setShowDeleteModal(false)}
+ onClick={() => {
+ setShowDeleteModal(false);
+
+ }}
>
Cancelar
@@ -502,7 +440,24 @@ const handleSearchMedicos = (term) => {
{deleteConsulta(selectedID);setShowDeleteModal(false)}}
+ onClick={() => {
+
+ deleteConsulta(selectedID)
+ setShowDeleteModal(false)
+ let lista_cores = coresConsultas
+
+ let lista = listaConsultasID
+
+ lista.push(selectedID)
+ lista_cores.push("cancelled")
+
+ setCoresConsultas(lista_cores)
+
+ setListaConsultaID(lista)
+
+ console.log("lista", lista)
+
+ }}
>
Excluir
@@ -512,6 +467,8 @@ const handleSearchMedicos = (term) => {
)}
+
+
)
diff --git a/src/PagesPaciente/CardConsultaPaciente.jsx b/src/PagesPaciente/CardConsultaPaciente.jsx
index 2cb9ef69..5e1413c6 100644
--- a/src/PagesPaciente/CardConsultaPaciente.jsx
+++ b/src/PagesPaciente/CardConsultaPaciente.jsx
@@ -13,7 +13,6 @@ const CardConsultaPaciente = ({consulta, setConsulta, setSelectedId, setShowDel
const authHeader = getAuthorizationHeader()
-
const ids = useMemo(() => {
return {
@@ -45,9 +44,6 @@ const CardConsultaPaciente = ({consulta, setConsulta, setSelectedId, setShowDel
}, [ids, authHeader]);
-
- console.log(consulta, "dento do card")
-
let horario = consulta.scheduled_at.split("T")[1]
let Data = consulta.scheduled_at.split("T")[0]
diff --git a/src/PagesPaciente/ConsultaCadastroManager.jsx b/src/PagesPaciente/ConsultaCadastroManager.jsx
index e8eb64e9..055ae1af 100644
--- a/src/PagesPaciente/ConsultaCadastroManager.jsx
+++ b/src/PagesPaciente/ConsultaCadastroManager.jsx
@@ -30,14 +30,16 @@ const ConsultaCadastroManager = () => {
}, [])
const handleSave = (Dict) => {
+
let DataAtual = dayjs()
var myHeaders = new Headers();
myHeaders.append("apikey", API_KEY);
myHeaders.append("Authorization", authHeader);
myHeaders.append("Content-Type", "application/json");
+
var raw = JSON.stringify({
- "patient_id": Dict.patient_id,
+ "patient_id": "6e7f8829-0574-42df-9290-8dbb70f75ada",
"doctor_id": Dict.doctor_id,
"scheduled_at": `${Dict.dataAtendimento}T${Dict.horarioInicio}:00.000Z`,
"duration_minutes": 30,
diff --git a/src/PagesPaciente/ConsultaEditPage.jsx b/src/PagesPaciente/ConsultaEditPage.jsx
index 9c68373d..3c7ffed2 100644
--- a/src/PagesPaciente/ConsultaEditPage.jsx
+++ b/src/PagesPaciente/ConsultaEditPage.jsx
@@ -9,7 +9,7 @@ import { GetPatientByID } from '../components/utils/Functions-Endpoints/Patient'
// 1. Importe o useNavigate
import { useNavigate } from 'react-router-dom'
-const ConsultaEditPage = ({ dadosConsulta }) => {
+const ConsultaEditPage = ({ DictInfo }) => {
// 2. Crie a instância do navigate
const navigate = useNavigate();
@@ -17,20 +17,23 @@ const ConsultaEditPage = ({ dadosConsulta }) => {
const authHeader = getAuthorizationHeader();
const [idUsuario, setIDusuario] = useState(null);
- const [DictInfo, setDict] = useState({});
+ const [Dict, setDict] = useState({});
const [Medico, setMedico] = useState(null);
const [Paciente, setPaciente] = useState(null);
+ console.log("dentro do edit", DictInfo)
+
+
useEffect(() => {
- setDict({ ...dadosConsulta });
+ setDict({ ...DictInfo });
const fetchInitialData = async () => {
- if (dadosConsulta.doctor_id) {
- const medicoData = await GetDoctorByID(dadosConsulta.doctor_id, authHeader);
+ if (DictInfo.doctor_id) {
+ const medicoData = await GetDoctorByID(DictInfo.doctor_id, authHeader);
setMedico(medicoData[0]);
}
- if (dadosConsulta.patient_id) {
- const pacienteData = await GetPatientByID(dadosConsulta.patient_id, authHeader);
+ if (DictInfo.patient_id) {
+ const pacienteData = await GetPatientByID(DictInfo.patient_id, authHeader);
setPaciente(pacienteData[0]);
}
};
@@ -43,17 +46,17 @@ const ConsultaEditPage = ({ dadosConsulta }) => {
fetchUserInfo();
fetchInitialData();
- }, [dadosConsulta, authHeader]);
+ }, [DictInfo, authHeader]);
useEffect(() => {
if (Medico) {
setDict(prevDict => ({
...prevDict,
medico_nome: Medico?.full_name,
- dataAtendimento: dadosConsulta.scheduled_at?.split("T")[0]
+ dataAtendimento: DictInfo.scheduled_at?.split("T")[0]
}));
}
- }, [Medico, dadosConsulta.scheduled_at]);
+ }, [Medico, DictInfo.scheduled_at]);
const handleSave = async (DictParaPatch) => {
try {
@@ -112,7 +115,7 @@ const ConsultaEditPage = ({ dadosConsulta }) => {
{}
{
+import { UserInfos } from '../components/utils/Functions-Endpoints/General'
+import dayjs from 'dayjs'
+import TabelaAgendamentoDia from "../components/AgendarConsulta/TabelaAgendamentoDia"
+
+const ConsultasPaciente = ({ setDictInfo }) => {
const { getAuthorizationHeader } = useAuth()
-
+ const [agendamentosOrganizados, setAgendamentosOrganizados] = useState({})
+ const [listaTodasConsultas, setListaTodasConsultas] = useState([])
+ const [patientID, setPatientID] = useState("")
const [showDeleteModal, setShowDeleteModal] = useState(false)
const [selectedID, setSelectedId] = useState("")
let authHeader = getAuthorizationHeader()
+ const [motivoCancelamento, setMotivoCancelamento] = useState("")
+
const [consultas, setConsultas] = useState([])
+
+ const [consultasOrganizadas, setConsultasOrganizadas] = useState({})
+ const [filaDeEspera, setFilaDeEspera] = useState([])
+ const [viewFila, setViewFila] = useState(false)
- const FiltrarAgendamentos = (agendamentos, id) => {
- if (!agendamentos || !Array.isArray(agendamentos)) {
- console.error("A lista de agendamentos é inválida.");
- setConsultas([]);
- return;
- }
+ const [listaConsultasID, setListaConsultaID] = useState([])
+ const [coresConsultas,setCoresConsultas] = useState([])
- const consultasFiltradas = agendamentos.filter(agendamento => {
- return agendamento.patient_id && agendamento.patient_id.toString() === id.toString();
- });
+ const [showConfirmModal, setShowConfirmModal] = useState(false)
- console.log(consultasFiltradas)
- setConsultas(consultasFiltradas);
- }
useEffect(() => {
+
+ console.log(listaConsultasID, coresConsultas, "ojwhdofigewfey7few0fr74r")
+
+ }, [coresConsultas, listaConsultasID])
+
+ useMemo(() => {
+ let conjuntoConsultas = {}
+ let filaEspera = []
+
+ const fetchInfosConsultas = async (consulta) => {
+ //console.log(doctor, "PACIENTE TRAZIDO PELO ")
+
+ //let consultaMelhorada = {...consulta, paciente_nome:paciente[0].full_name, medico_nome:doctor[0].full_name }
+
+ //console.log(consultaMelhorada,"ID DO MEDICO")
+
+ for(let i = 0; listaTodasConsultas.length > i; i++){
+
+ let consulta = listaTodasConsultas[i]
+
+ let doctor = await GetDoctorByID(consulta.doctor_id, authHeader)
+ let paciente = await GetPatientByID(consulta.patient_id, authHeader)
+
+ consulta = {...consulta, medico_nome:doctor[0]?.full_name, paciente_nome:paciente[0]?.full_name}
+
+
+
+
+ if(consulta.status === "requested"){
+
+ filaEspera.push(consulta)
+
+ }else{
+
+ let data = consulta.scheduled_at.split("T")[0]
+ let chavesConsultas = Object.keys(conjuntoConsultas)
+
+ if(chavesConsultas.includes(data)){
+ let lista = conjuntoConsultas[data]
+
+ lista.push(consulta)
+
+ conjuntoConsultas = {...conjuntoConsultas, [data]:lista}
+ }else{
+ conjuntoConsultas = {...conjuntoConsultas, [data]:[consulta] }
+ }
+ }
+ }
+
+
+ setConsultasOrganizadas(conjuntoConsultas)
+ setFilaDeEspera(filaEspera)
+
+ }
+
+ console.log("so muda")
+ if(!listaTodasConsultas.length) return
+
+ console.log(filaEspera, "fila de espera")
+ fetchInfosConsultas();
+
+ }, [listaTodasConsultas])
+
+
+ useEffect(() => {
+ let userInfos = UserInfos(authHeader)
+
const fetchConsultas = async () => {
try {
const myHeaders = new Headers();
@@ -43,18 +115,45 @@ const ConsultasPaciente = ({ setConsulta }) => {
redirect: 'follow'
};
- const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?select=*", requestOptions);
+ const response = await fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?patient_id=eq.${"6e7f8829-0574-42df-9290-8dbb70f75ada"}`, requestOptions);
const result = await response.json();
- FiltrarAgendamentos(result, "6e7f8829-0574-42df-9290-8dbb70f75ada");
+ setListaTodasConsultas(result);
} catch (error) {
console.log('error', error);
}
};
fetchConsultas();
- }, [authHeader]);
+ }, []);
const navigate = useNavigate()
+
+
+const confirmConsulta = (selectedPatientId) => {
+ var myHeaders = new Headers();
+ myHeaders.append("Content-Type", "application/json");
+ myHeaders.append('apikey', API_KEY)
+ myHeaders.append("authorization", authHeader)
+
+
+ var raw = JSON.stringify({ "status":"confirmed"
+ });
+
+
+ var requestOptions = {
+ method: 'PATCH',
+ headers: myHeaders,
+ body: raw,
+ redirect: 'follow'
+ };
+
+ fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${selectedPatientId}`, requestOptions)
+ .then(response => {if(response.status !== 200)(console.log(response))})
+ .then(result => console.log(result))
+ .catch(error => console.log('error', error));
+
+}
+
const deleteConsulta = async (ID) => {
try {
const myHeaders = new Headers();
@@ -62,7 +161,7 @@ const ConsultasPaciente = ({ setConsulta }) => {
myHeaders.append('apikey', API_KEY);
myHeaders.append("authorization", authHeader);
- const raw = JSON.stringify({ "status": "cancelled" });
+ const raw = JSON.stringify({ "status": "cancelled", "cancellation_reason":motivoCancelamento });
const requestOptions = {
method: 'PATCH',
@@ -96,50 +195,227 @@ const ConsultasPaciente = ({ setConsulta }) => {
{ navigate("criar") }}>
Adicionar Consulta
+ {!viewFila ?
+ setViewFila(true)}> Fila de espera
+ :
+ setViewFila(false)}>Consultas
+ }
Seus próximos atendimentos
-
- {consultas.map((consulta) => (
-
- ))}
-
- {showDeleteModal &&
-
-
-
-
- Confirmação de Exclusão
-
- setShowDeleteModal(false)}
- >
-
-
-
- Tem certeza que deseja excluir este agendamento?
-
-
-
- setShowDeleteModal(false)}
- >
- Cancelar
-
- { deleteConsulta(selectedID); setShowDeleteModal(false) }}
- >
- Excluir
-
-
-
-
}
+ {viewFila ?
+
+
+ setSearchTerm(e.target.value)}
+ />
+
Fila de Espera
+
+
+
+ Nome do Paciente {/* Ajustado o cabeçalho */}
+ CPF {/* Ajustado o cabeçalho */}
+ Médico Solicitado {/* Ajustado o cabeçalho */}
+ Data da Solicitação {/* Ajustado o cabeçalho */}
+ Ações
+
+
+
+ {filaDeEspera.map((item, index) => (
+
+ {item?.paciente_nome}
+ {item?.paciente_cpf}
+ {item?.medico_nome}
+ {dayjs(item?.created_at).format('DD/MM/YYYY HH:mm')}
+
+
+ {
+ console.log(item, 'item')
+ navigate(`${2}/edit`)
+
+ }}
+ >
+ Editar
+
+
+
+ {
+ setSelectedId(item.id)
+ setShowDeleteModal(true);
+ }}
+ >
+ Excluir
+
+
+
+ ))}
+
+
+
+ :
+
+
+ }
+
+ {showDeleteModal && (
+
+ e.target.classList.contains("modal") && setShowDeleteModal(false)
+ }
+ >
+
+
+
+
+
+ Confirmação de Cancelamento
+
+ setShowDeleteModal(false)}
+ >
+
+
+
+
+ Qual o motivo do cancelamento?
+
+
+
+
+
+
+
+
+ {setShowDeleteModal(false);
+
+ }}
+ >
+ Cancelar
+
+
+
+ {
+
+ deleteConsulta(selectedID)
+ setShowDeleteModal(false)
+ let lista_cores = coresConsultas
+
+ let lista = listaConsultasID
+
+ lista.push(selectedID)
+ lista_cores.push("cancelled")
+
+ setCoresConsultas(lista_cores)
+
+ setListaConsultaID(lista)
+
+ console.log("lista", lista)
+
+ }}
+
+ >
+ Excluir
+
+
+
+
+
)}
+
+ {showConfirmModal &&(
+
+ e.target.classList.contains("modal") && setShowDeleteModal(false)
+ }
+ >
+
+
+
+
+
+ Confirmação de edição
+
+
+
+
+
+
+ Tem certeza que deseja retirar o cancelamento ?
+
+
+
+
+
+ {setShowConfirmModal(false); setSelectedId("")}}
+ >
+ Cancelar
+
+
+
+ {confirmConsulta(selectedID);setShowConfirmModal(false)
+ let lista_cores = coresConsultas
+
+ let lista = listaConsultasID
+
+ lista.push(selectedID)
+ lista_cores.push("confirmed")
+
+ setCoresConsultas(lista_cores)
+
+ setListaConsultaID(lista)
+ }}
+
+ >
+ Confirmar
+
+
+
+
+
)
+
+
+
+ }
+
+
)
}
diff --git a/src/PagesPaciente/FormConsultaPaciente.jsx b/src/PagesPaciente/FormConsultaPaciente.jsx
index 59e4a22e..daf3cafc 100644
--- a/src/PagesPaciente/FormConsultaPaciente.jsx
+++ b/src/PagesPaciente/FormConsultaPaciente.jsx
@@ -169,7 +169,7 @@ const formatarHora = (datetimeString) => {
const handleSubmit = (e) => {
e.preventDefault();
alert("Agendamento salvo!");
- navigate("/paciente/agendamento")
+
onSave({...agendamento, horarioInicio:horarioInicio})
};
diff --git a/src/components/AgendarConsulta/CardConsulta.jsx b/src/components/AgendarConsulta/CardConsulta.jsx
index 3eae64b5..88f15808 100644
--- a/src/components/AgendarConsulta/CardConsulta.jsx
+++ b/src/components/AgendarConsulta/CardConsulta.jsx
@@ -8,7 +8,6 @@ const CardConsulta = ( {DadosConsulta, TabelaAgendamento, setShowDeleteModal, se
const navigate = useNavigate();
-
const {getAuthorizationHeader} = useAuth()
const authHeader = getAuthorizationHeader()
const [Paciente, setPaciente] = useState()
@@ -17,16 +16,15 @@ const CardConsulta = ( {DadosConsulta, TabelaAgendamento, setShowDeleteModal, se
const [decidirBotton, setDecidirBotton] = useState("")
-
- const ids = useMemo(() => {
+ /* const ids = useMemo(() => {
return {
doctor_id: DadosConsulta?.doctor_id,
patient_id: DadosConsulta?.patient_id,
status: DadosConsulta?.status
};
}, [DadosConsulta]);
-
-
+ */
+ /*
useEffect(() => {
const BuscarMedicoEPaciente = async () => {
if (!ids.doctor_id || !ids.patient_id || ids.status === 'nada') return;
@@ -45,24 +43,15 @@ const CardConsulta = ( {DadosConsulta, TabelaAgendamento, setShowDeleteModal, se
};
BuscarMedicoEPaciente();
- }, [ids, authHeader]);
-
- let nameArrayPaciente = Paciente?.full_name.split(' ')
-
- let nameArrayMedico = Medico?.full_name.split(' ')
-
+ }, [ids, authHeader]);*/
+ let nameArrayPaciente = DadosConsulta?.paciente_nome?.split(' ')
+ let nameArrayMedico = DadosConsulta?.medico_nome?.split(' ')
let indice_cor = listaConsultasID.indexOf(DadosConsulta.id)
- // console.log(coresConsultas)
- //console.log(indice_cor,"indice no cores")
-
-
-
return (
-
{DadosConsulta.id?
@@ -86,8 +75,10 @@ const CardConsulta = ( {DadosConsulta, TabelaAgendamento, setShowDeleteModal, se
{navigate(`2/edit`)
- setDictInfo({...DadosConsulta,paciente_cpf:Paciente.cpf, paciente_nome:Paciente.full_name, nome_medico:Medico.full_name})
+ onClick={() => {navigate(`edit`)
+
+ console.log(DadosConsulta)
+ setDictInfo({...DadosConsulta,paciente_cpf:DadosConsulta?.paciente_cpf, paciente_nome:DadosConsulta?.paciente_nome, nome_medico:DadosConsulta?.nome_medico})
}}
>
diff --git a/src/components/AgendarConsulta/FormNovaConsulta.jsx b/src/components/AgendarConsulta/FormNovaConsulta.jsx
index 2dc2ef5d..bc261a6a 100644
--- a/src/components/AgendarConsulta/FormNovaConsulta.jsx
+++ b/src/components/AgendarConsulta/FormNovaConsulta.jsx
@@ -69,8 +69,16 @@ const FormNovaConsulta = ({ onCancel, onSave, setAgendamento, agendamento }) =>
}, [authHeader]);
useEffect(() => {
+<<<<<<< HEAD
ChamarMedicos();
}, [ChamarMedicos]);
+=======
+ console.log("Horario","tessssste" )
+ if (agendamento?.scheduled_at) {
+ setHorarioInicio(formatarHora(agendamento.scheduled_at));
+ }
+ }, [])
+>>>>>>> melhoriasAgendamentos
useEffect(() => {
if (!agendamento.dataAtendimento || !agendamento.doctor_id) return;
@@ -324,7 +332,35 @@ const FormNovaConsulta = ({ onCancel, onSave, setAgendamento, agendamento }) =>
+<<<<<<< HEAD
+=======
+
+
+ {/* Dropdown de Início (Não modificado) */}
+
+ Início *
+ setHorarioInicio(e.target.value)}
+ >
+ Selecione a hora de início
+ {opcoesDeHorario?.map((opcao, index) => (
+
+ {opcao.label}
+ {opcao.disabled && " (Indisponível)"}
+
+ ))}
+
+
+>>>>>>> melhoriasAgendamentos
diff --git a/src/components/AgendarConsulta/TabelaAgendamentoDia.jsx b/src/components/AgendarConsulta/TabelaAgendamentoDia.jsx
index a7d3ebfa..5f8be3a1 100644
--- a/src/components/AgendarConsulta/TabelaAgendamentoDia.jsx
+++ b/src/components/AgendarConsulta/TabelaAgendamentoDia.jsx
@@ -2,14 +2,30 @@ import React, { useState, useEffect } from 'react';
import CardConsulta from './CardConsulta';
import "./style/styleTabelas/tabeladia.css";
-const TabelaAgendamentoDia = ({ handleClickAgendamento, agendamentos, setShowDeleteModal, setDictInfo,selectedID, setSelectedId, setShowConfirmModal, coresConsultas, setListaConsultaID, listaConsultasID }) => {
- const [indiceAcesso, setIndiceAcesso] = useState(0)
+import Spinner from '../Spinner';
+
+const TabelaAgendamentoDia = ({ agendamentos, setShowDeleteModal, setDictInfo,selectedID, setSelectedId, setShowConfirmModal, coresConsultas, setListaConsultaID, listaConsultasID }) => {
+ const [indiceAcesso, setIndiceAcesso] = useState(null)
const [Dia, setDia] = useState()
const agendamentosDoDia = agendamentos?.semana1?.segunda || [];
const nomeMedico = agendamentosDoDia.find(item => item.medico)?.medico || 'Profissional';
let ListaDiasComAgendamentos = Object.keys(agendamentos)
+ const [showSpinner, setShowSpinner] = useState(true);
+
+
+useEffect(() => {
+ if (!agendamentos) return;
+
+ const dias = Object.keys(agendamentos);
+ if (dias.length > 0) {
+ setIndiceAcesso(0); // começa no primeiro dia disponível
+ setDia(dias[0]); // seta o Dia inicial
+
+ setShowSpinner(false)
+ }
+}, [agendamentos]);
//console.log(Dia, "hshdhshhsdhs")
@@ -71,12 +87,20 @@ const TabelaAgendamentoDia = ({ handleClickAgendamento, agendamentos, setShowDel
{`${horario[0]}:${horario[1]}`}
- handleClickAgendamento(agendamento)}>
+
)})}
+ {showSpinner &&
+
+
+
+
+
+ }
+
diff --git a/src/components/AgendarConsulta/TabelaAgendamentoMes.jsx b/src/components/AgendarConsulta/TabelaAgendamentoMes.jsx
index 33128d92..471b4ea5 100644
--- a/src/components/AgendarConsulta/TabelaAgendamentoMes.jsx
+++ b/src/components/AgendarConsulta/TabelaAgendamentoMes.jsx
@@ -6,15 +6,23 @@ import "./style/styleTabelas/tabelames.css";
import { useEffect, useState } from 'react';
import { useMemo } from 'react';
+import Spinner from '../Spinner';
+
const TabelaAgendamentoMes = ({ ListarDiasdoMes, agendamentos, setShowDeleteModal, setSelectedId ,setDictInfo, setShowConfirmModal, coresConsultas ,setListaConsultaID, listaConsultasID }) => {
const dataHoje = dayjs();
const AnoAtual = dataHoje.year();
const mes = dataHoje.month() + 1;
+ const [showSpinner, setShowSpinner] = useState(true)
+
+
+
+ console.log(agendamentos)
+
let ListaDiasDatas = ListarDiasdoMes(AnoAtual, mes);
const [AgendamentosSemanaisOrganizados, setAgendamentosSemanaisOrganizados] = useState({})
- const [indice, setIndice] = useState("10")
+ const [indice, setIndice] = useState(mes.toString())
const [AgendamentosMensaisOrganizados, setAgendamentosMensaisOrganizados] = useState({
"01": { "nomeDoMes": "janeiro" },
@@ -32,15 +40,25 @@ const TabelaAgendamentoMes = ({ ListarDiasdoMes, agendamentos, setShowDeleteModa
})
+
+ useEffect(() => {
+ if (!agendamentos) return;
+ const meses = Object.keys(agendamentos);
+ if (meses.length > 0) {
+ // começa no primeiro dia disponível
+ setIndice(mes.toString()); // seta o Dia inicial
+ setShowSpinner(false)
+ }
+ }, [agendamentos]);
+
const OrganizarAgendamentosSemanais = useMemo(() => {
if (!agendamentos || Object.keys(agendamentos).length === 0) return {};
const DiasComAtendimentos = Object.keys(agendamentos)
const semanas = {}
-
-
+
for (let i = 0; i < DiasComAtendimentos.length; i++) {
const DiaComAtendimento = DiasComAtendimentos[i]
const [_, MesDoAgendamento, DiaDoAgendamento] = DiaComAtendimento.split("-")
@@ -215,8 +233,16 @@ const TabelaAgendamentoMes = ({ ListarDiasdoMes, agendamentos, setShowDeleteModa
))
}
-
)})}
+ {showSpinner &&
+
+
+
+
+
+
+
+ }
diff --git a/src/components/AgendarConsulta/TabelaAgendamentoSemana.jsx b/src/components/AgendarConsulta/TabelaAgendamentoSemana.jsx
index c7c71cf3..fd2b5316 100644
--- a/src/components/AgendarConsulta/TabelaAgendamentoSemana.jsx
+++ b/src/components/AgendarConsulta/TabelaAgendamentoSemana.jsx
@@ -4,6 +4,11 @@ import "./style/styleTabelas/tabelasemana.css";
import dayjs from 'dayjs';
import { useEffect, useState, useMemo } from 'react';
import weekOfYear from 'dayjs/plugin/weekOfYear'
+
+
+import Spinner from '../Spinner';
+
+
dayjs.extend(weekOfYear)
const TabelaAgendamentoSemana = ({ agendamentos, ListarDiasdoMes, setShowDeleteModal ,setSelectedId ,setDictInfo, setShowConfirmModal, coresConsultas ,setListaConsultaID, listaConsultasID}) => {
@@ -12,6 +17,21 @@ const TabelaAgendamentoSemana = ({ agendamentos, ListarDiasdoMes, setShowDeleteM
const [semanasOrganizadas, setSemanasOrganizadas] = useState({});
// Controla qual semana está sendo exibida (o índice da chave no objeto)
const [Indice, setIndice] = useState(0);
+ const [showSpinner, setShowSpinner] = useState(true)
+
+
+ useEffect(() => {
+ if (!agendamentos) return;
+
+ const semanas = Object.keys(agendamentos);
+ if (semanas.length > 0) {
+
+ setIndice(0)
+ setShowSpinner(false)
+
+ }
+ }, [agendamentos]);
+
console.log(agendamentos, "agendamentos diarios")
@@ -129,10 +149,10 @@ const TabelaAgendamentoSemana = ({ agendamentos, ListarDiasdoMes, setShowDeleteM
? `Semana ${chaveDaSemanaAtual.replace('semana', '')} / ${AnoAtual}`
: 'Nenhuma semana encontrada';
- // --- RENDERIZAÇÃO ---
+
return (
- {/* Container de Navegação */}
+
)})}
+
+{showSpinner &&
+
+
+
+
+
+
+
+}
diff --git a/src/components/FormCriarExcecao.jsx b/src/components/FormCriarExcecao.jsx
index 9323a4f8..5b5ff9f4 100644
--- a/src/components/FormCriarExcecao.jsx
+++ b/src/components/FormCriarExcecao.jsx
@@ -1,13 +1,13 @@
-import React, { useState } from "react";
+import React, { useState, useEffect } from "react";
import { useAuth } from "./utils/AuthProvider";
import API_KEY from "./utils/apiKeys";
import "./AgendarConsulta/style/formagendamentos.css";
+import { GetAllDoctors } from './utils/Functions-Endpoints/Doctor';
const ENDPOINT_CRIAR_EXCECAO = "https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/doctor_exceptions";
const FormCriarExcecao = ({ onCancel, doctorID }) => {
-
const { getAuthorizationHeader, user, getUserInfo } = useAuth();
const [dadosAtendimento, setDadosAtendimento] = useState({
profissional: doctorID || '',
@@ -18,6 +18,13 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => {
motivo: ''
});
+ const [todosProfissionais, setTodosProfissionais] = useState([]);
+ const [profissionaisFiltrados, setProfissionaisFiltrados] = useState([]);
+ const [isDropdownOpen, setIsDropdownOpen] = useState(false);
+
+ const [doctorSearchName, setDoctorSearchName] = useState('');
+ const [searchingDoctor, setSearchingDoctor] = useState(false);
+
const handleAtendimentoChange = (e) => {
const { value, name } = e.target;
setDadosAtendimento(prev => ({
@@ -26,6 +33,52 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => {
}));
};
+ useEffect(() => {
+ const loadDoctors = async () => {
+ setSearchingDoctor(true);
+ let authHeader = '';
+ try { authHeader = getAuthorizationHeader ? getAuthorizationHeader() : ''; } catch {}
+ try {
+ const Medicos = await GetAllDoctors(authHeader);
+ setTodosProfissionais(Array.isArray(Medicos) ? Medicos : []);
+ } catch (err) {
+ console.error('Erro ao carregar médicos:', err);
+ setTodosProfissionais([]);
+ } finally {
+ setSearchingDoctor(false);
+ }
+ };
+ loadDoctors();
+ }, [getAuthorizationHeader]);
+
+ const handleSearchProfissional = (e) => {
+ const term = e.target.value;
+ setDoctorSearchName(term);
+ if (term.trim() === '') {
+ setProfissionaisFiltrados([]);
+ setIsDropdownOpen(false);
+ return;
+ }
+ const filtered = todosProfissionais.filter(p =>
+ (p.full_name || '').toLowerCase().includes(term.toLowerCase())
+ );
+ setProfissionaisFiltrados(filtered);
+ setIsDropdownOpen(filtered.length > 0);
+ };
+
+ const handleSelectProfissional = (profissional) => {
+ setDadosAtendimento(prev => ({
+ ...prev,
+ profissional: profissional.id
+ }));
+ setDoctorSearchName(profissional.full_name || '');
+ setProfissionaisFiltrados([]);
+ setIsDropdownOpen(false);
+ };
+
+ // lista simples de valores permitidos
+ const ALLOWED_KINDS = ['disponibilidade_extra', 'bloqueio'];
+
const handleSubmitExcecao = async (e) => {
e.preventDefault();
console.log("Tentando criar Exceção.");
@@ -37,6 +90,13 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => {
return;
}
+ // usa diretamente o value selecionado (já definido no
) e valida
+ const mappedKind = tipoAtendimento;
+ if (!ALLOWED_KINDS.includes(mappedKind)) {
+ alert(`Tipo inválido: "${tipoAtendimento}". Tipos aceitos: ${ALLOWED_KINDS.join(', ')}`);
+ return;
+ }
+
const startTime = inicio ? inicio + ":00" : null;
const endTime = termino ? termino + ":00" : null;
@@ -70,13 +130,13 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => {
const raw = JSON.stringify({
doctor_id: profissional,
date: dataAtendimento,
- kind: tipoAtendimento,
+ kind: mappedKind,
start_time: startTime,
end_time: endTime,
reason: motivo,
created_by: createdBy
});
-
+
var myHeaders = new Headers();
if (authHeader) myHeaders.append("Authorization", authHeader);
myHeaders.append("Content-Type", "application/json");
@@ -119,13 +179,36 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => {
Informações da Nova Exceção
+ {/* Busca por nome usando filtragem local */}
+
+
Nome do médico
+
+ {isDropdownOpen && profissionaisFiltrados.length > 0 && (
+
+ {profissionaisFiltrados.map(p => (
+
handleSelectProfissional(p)}>
+ {p.full_name}
+
+ ))}
+
+ )}
+ {searchingDoctor &&
Carregando médicos... }
+
+ {/* ID do profissional (preenchido ao selecionar) */}
ID do profissional *
-
@@ -134,12 +217,11 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => {
Tipo de exceção *
- Selecione o tipo de exceção
- Liberação (Criar Slot)
- Bloqueio (Remover Slot)
+ Selecione o tipo de exceção
+ Liberação
+ Bloqueio
-
@@ -586,10 +597,6 @@ const handleSearchMedicos = (term) => {
)}
-
-
-
-
{showConfirmModal &&(
{
setCoresConsultas(lista_cores)
setListaConsultaID(lista)
-
-
}}
>
diff --git a/src/pages/AgendamentoCadastroManager.jsx b/src/pages/AgendamentoCadastroManager.jsx
index 6fa24bcc..f7cc8af9 100644
--- a/src/pages/AgendamentoCadastroManager.jsx
+++ b/src/pages/AgendamentoCadastroManager.jsx
@@ -5,7 +5,7 @@ import { useAuth } from '../components/utils/AuthProvider'
import { useEffect,useState } from 'react'
import dayjs from 'dayjs'
import { UserInfos } from '../components/utils/Functions-Endpoints/General'
-const AgendamentoCadastroManager = ({setPageConsulta}) => {
+const AgendamentoCadastroManager = ({setPageConsulta, Dict}) => {
const {getAuthorizationHeader} = useAuth()
const [agendamento, setAgendamento] = useState({status:'confirmed'})
@@ -16,6 +16,12 @@ const AgendamentoCadastroManager = ({setPageConsulta}) => {
useEffect(() => {
+ if(!Dict){setAgendamento({})}
+ else{
+ console.log(Dict)
+ setAgendamento(Dict)
+ }
+
const ColherInfoUsuario =async () => {
const result = await UserInfos(authHeader)
@@ -43,7 +49,7 @@ const AgendamentoCadastroManager = ({setPageConsulta}) => {
"duration_minutes": 30,
"appointment_type": Dict.tipo_consulta,
- "patient_notes": "Prefiro horário pela manhã",
+ "patient_notes": "",
"insurance_provider": Dict.convenio,
"status": Dict.status,
"created_by": idUsuario
diff --git a/src/pages/AgendamentoEditPage.jsx b/src/pages/AgendamentoEditPage.jsx
index 9cfc0cff..24dfc2e2 100644
--- a/src/pages/AgendamentoEditPage.jsx
+++ b/src/pages/AgendamentoEditPage.jsx
@@ -16,12 +16,12 @@ const AgendamentoEditPage = ({setDictInfo, DictInfo}) => {
let id = params.id
- console.log(DictInfo, "DENTRO DO EDITAR")
+
//console.log(DictInfo, 'aqui')
useEffect(() => {
- setDictInfo({...DictInfo, dataAtendimento:DictInfo.scheduled_at.split("T")[0]})
+ setDictInfo({...DictInfo, dataAtendimento:DictInfo.scheduled_at.split("T")[0]})
const ColherInfoUsuario =async () => {
const result = await UserInfos(authHeader)
@@ -51,9 +51,7 @@ const AgendamentoEditPage = ({setDictInfo, DictInfo}) => {
"doctor_id": DictParaPatch.doctor_id,
"duration_minutes": 30,
-
"chief_complaint": "Dor de cabeça há 3 ",
-
"created_by": idUsuario,
"scheduled_at": `${DictParaPatch.dataAtendimento}T${DictParaPatch.horarioInicio}:00.000Z`,
diff --git a/src/pages/Login.jsx b/src/pages/Login.jsx
index 4245152c..831b94af 100644
--- a/src/pages/Login.jsx
+++ b/src/pages/Login.jsx
@@ -127,6 +127,8 @@ function Login({ onEnterSystem }) {
navigate(`/medico/`);
} else if (UserData?.roles?.includes("financeiro")) {
navigate(`/financeiro/`);
+ } else if (UserData?.roles?.includes("paciente")) {
+ navigate(`/paciente/`);
}
}else{
console.log("ERROROROROROOR")
diff --git a/src/perfis/Perfil_medico/PerfilMedico.jsx b/src/perfis/Perfil_medico/PerfilMedico.jsx
index ed464ac5..c8e2648b 100644
--- a/src/perfis/Perfil_medico/PerfilMedico.jsx
+++ b/src/perfis/Perfil_medico/PerfilMedico.jsx
@@ -1,6 +1,6 @@
import { Routes, Route } from "react-router-dom";
import Sidebar from "../../components/Sidebar";
-
+import { useState } from "react";
import DoctorRelatorioManager from "../../PagesMedico/DoctorRelatorioManager";
import Prontuario from "../../PagesMedico/prontuario";
import Relatorio from "../../PagesMedico/relatorio";
@@ -11,7 +11,13 @@ import FormNovoRelatorio from "../../PagesMedico/FormNovoRelatorio";
import EditPageRelatorio from "../../PagesMedico/EditPageRelatorio";
import BotaoVideoChamada from '../../components/BotaoVideoChamada';
+import DoctorAgendamentoEditPage from "../../PagesMedico/DoctorAgendamentoEditPage";
+
function PerfilMedico() {
+
+ const [dictInfo, setDictInfo] = useState({})
+
+
return (
@@ -23,7 +29,8 @@ function PerfilMedico() {
} />
} />
} />
- } />
+ } />
+ } />
} />
diff --git a/src/perfis/Perfil_paciente/Perfilpaciente.jsx b/src/perfis/Perfil_paciente/Perfilpaciente.jsx
index ac173294..45e99719 100644
--- a/src/perfis/Perfil_paciente/Perfilpaciente.jsx
+++ b/src/perfis/Perfil_paciente/Perfilpaciente.jsx
@@ -12,7 +12,9 @@ import BotaoVideoPaciente from "../../components/BotaoVideoPaciente";
function PerfilPaciente({ onLogout }) {
-const [dadosConsulta, setConsulta] = useState({})
+
+
+const [DictInfo, setDictInfo] = useState({})
return (
@@ -23,9 +25,9 @@ const [dadosConsulta, setConsulta] = useState({})
} />
- } />
+ } />
} />
- } />
+ } />
} />
Página não encontrada} />
diff --git a/src/perfis/perfil_secretaria/PerfilSecretaria.jsx b/src/perfis/perfil_secretaria/PerfilSecretaria.jsx
index c3b090c2..b63733b4 100644
--- a/src/perfis/perfil_secretaria/PerfilSecretaria.jsx
+++ b/src/perfis/perfil_secretaria/PerfilSecretaria.jsx
@@ -37,7 +37,7 @@ function PerfilSecretaria({ onLogout }) {
} />
} />
} />
- } />
+ } />
} />
} />
}/>