diff --git a/src/PagesMedico/DoctorAgendamentoManager.jsx b/src/PagesMedico/DoctorAgendamentoManager.jsx
index 518f5c84..ac7f50a7 100644
--- a/src/PagesMedico/DoctorAgendamentoManager.jsx
+++ b/src/PagesMedico/DoctorAgendamentoManager.jsx
@@ -41,6 +41,12 @@ const Agendamento = ({setDictInfo}) => {
const [FiltredTodosMedicos, setFiltredTodosMedicos] = useState([])
const [searchTermDoctor, setSearchTermDoctor] = useState('');
+ const [coresConsultas, setCoresConsultas] = useState([])
+
+ const [listaConsultasID, setListaConsultaID] = useState([])
+
+ const [motivoCancelamento, setMotivoCancelamento] = useState("")
+
let authHeader = getAuthorizationHeader()
@@ -51,14 +57,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 +75,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];
}
}
}
@@ -129,84 +137,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)
@@ -254,20 +219,6 @@ const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
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 handleClickCancel = () => setPageConsulta(false)
@@ -289,78 +240,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,74 +266,23 @@ 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
-
-
-
- ))}
-
-
-
- )
- }
-
+
+
) : (
@@ -468,12 +300,12 @@ const handleSearchMedicos = (term) => {
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 +329,9 @@ const handleSearchMedicos = (term) => {
setShowDeleteModal(false)}
+ onClick={() => {setShowDeleteModal(false);
+
+ }}
>
Cancelar
@@ -502,7 +340,22 @@ 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
diff --git a/src/PagesPaciente/ConsultasPaciente.jsx b/src/PagesPaciente/ConsultasPaciente.jsx
index d7f63050..36f0674f 100644
--- a/src/PagesPaciente/ConsultasPaciente.jsx
+++ b/src/PagesPaciente/ConsultasPaciente.jsx
@@ -34,27 +34,24 @@ const ConsultasPaciente = ({ setConsulta }) => {
let filaEspera = []
const fetchInfosConsultas = async (consulta) => {
- let doctor = await GetDoctorByID(consulta.doctor_id, authHeader)
+
- let paciente = await GetPatientByID(consulta.patient_id, authHeader)
+ //console.log(doctor, "PACIENTE TRAZIDO PELO ")
- console.log(doctor, "PACIENTE TRAZIDO PELO ")
+ // let consultaMelhorada = {...consulta, paciente_nome:paciente[0].full_name, medico_nome:doctor[0].full_name }
- let consultaMelhorada = {...consulta, paciente_nome:paciente[0].full_name, medico_nome:doctor[0].full_name }
+ //console.log(consultaMelhorada,"ID DO MEDICO")
- console.log(consultaMelhorada,"ID DO MEDICO")
-
-
- }
-
- console.log("so muda")
- if(!listaTodasConsultas.length) return
-
- for(let i = 0; listaTodasConsultas.length > i; i++){
+ for(let i = 0; listaTodasConsultas.length > i; i++){
let consulta = listaTodasConsultas[i]
- fetchInfosConsultas(consulta);
+ 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"){
@@ -81,11 +78,15 @@ const ConsultasPaciente = ({ setConsulta }) => {
setConsultasOrganizadas(conjuntoConsultas)
setFilaDeEspera(filaEspera)
+
+ }
+
+ console.log("so muda")
+ if(!listaTodasConsultas.length) return
console.log(filaEspera, "fila de espera")
-
-
-
+ fetchInfosConsultas();
+
}, [listaTodasConsultas])
@@ -186,10 +187,10 @@ const ConsultasPaciente = ({ setConsulta }) => {
{filaDeEspera.map((item, index) => (
- {item?.patient_id}
+ {item?.paciente_nome}
{item?.paciente_cpf}
- {item.Infos?.nome_medico}
- {dayjs(item.agendamento?.created_at).format('DD/MM/YYYY HH:mm')}
+ {item?.medico_nome}
+ {dayjs(item?.created_at).format('DD/MM/YYYY HH:mm')}
{
const navigate = useNavigate();
-
+ console.log(DadosConsulta)
const {getAuthorizationHeader} = useAuth()
const authHeader = getAuthorizationHeader()
@@ -47,9 +47,9 @@ const CardConsulta = ( {DadosConsulta, TabelaAgendamento, setShowDeleteModal, se
BuscarMedicoEPaciente();
}, [ids, authHeader]);
- let nameArrayPaciente = Paciente?.full_name.split(' ')
+ let nameArrayPaciente = DadosConsulta.medico_nome?.split(' ')
- let nameArrayMedico = Medico?.full_name.split(' ')
+ let nameArrayMedico = DadosConsulta?.paciente_nome.split(' ')
let indice_cor = listaConsultasID.indexOf(DadosConsulta.id)
diff --git a/src/components/AgendarConsulta/FormNovaConsulta.jsx b/src/components/AgendarConsulta/FormNovaConsulta.jsx
index 692c7e07..2effd7c2 100644
--- a/src/components/AgendarConsulta/FormNovaConsulta.jsx
+++ b/src/components/AgendarConsulta/FormNovaConsulta.jsx
@@ -90,7 +90,9 @@ const [isDropdownOpen, setIsDropdownOpen] = useState(false);
// Se estiver na página de edição esse useEffect pega o horario de inicio para coloca-lo no horarioInicio
useEffect(() => {
console.log("Horario", )
- setHorarioInicio(formatarHora(agendamento.scheduled_at))
+ if (agendamento?.scheduled_at) {
+ setHorarioInicio(formatarHora(agendamento.scheduled_at));
+ }
}, [])
diff --git a/src/components/AgendarConsulta/TabelaAgendamentoDia.jsx b/src/components/AgendarConsulta/TabelaAgendamentoDia.jsx
index cee2f9c0..5662aff5 100644
--- a/src/components/AgendarConsulta/TabelaAgendamentoDia.jsx
+++ b/src/components/AgendarConsulta/TabelaAgendamentoDia.jsx
@@ -10,7 +10,6 @@ const TabelaAgendamentoDia = ({ handleClickAgendamento, agendamentos, setShowDel
let ListaDiasComAgendamentos = Object.keys(agendamentos)
- console.log(agendamentos, "tentativa colocar consultas")
//console.log(Dia, "hshdhshhsdhs")
diff --git a/src/pages/Agendamento.jsx b/src/pages/Agendamento.jsx
index 2e819a7e..5320bb9b 100644
--- a/src/pages/Agendamento.jsx
+++ b/src/pages/Agendamento.jsx
@@ -324,8 +324,7 @@ const handleSearchMedicos = (term) => {
Agendar nova consulta
-
-
+
setPageConsulta(true)}>
Adicionar Consulta
diff --git a/src/pages/AgendamentoCadastroManager.jsx b/src/pages/AgendamentoCadastroManager.jsx
index 6fa24bcc..b10335cf 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,11 @@ const AgendamentoCadastroManager = ({setPageConsulta}) => {
useEffect(() => {
+ if(!Dict){setAgendamento({})}
+ else{
+ setAgendamento(...Dict)
+ }
+
const ColherInfoUsuario =async () => {
const result = await UserInfos(authHeader)
@@ -43,7 +48,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