forked from RiseUP/riseup-squad23
acesso de agendamento para o médico
This commit is contained in:
parent
0f94fc4446
commit
0b7e863461
@ -41,6 +41,12 @@ const Agendamento = ({setDictInfo}) => {
|
|||||||
const [FiltredTodosMedicos, setFiltredTodosMedicos] = useState([])
|
const [FiltredTodosMedicos, setFiltredTodosMedicos] = useState([])
|
||||||
const [searchTermDoctor, setSearchTermDoctor] = useState('');
|
const [searchTermDoctor, setSearchTermDoctor] = useState('');
|
||||||
|
|
||||||
|
const [coresConsultas, setCoresConsultas] = useState([])
|
||||||
|
|
||||||
|
const [listaConsultasID, setListaConsultaID] = useState([])
|
||||||
|
|
||||||
|
const [motivoCancelamento, setMotivoCancelamento] = useState("")
|
||||||
|
|
||||||
|
|
||||||
let authHeader = getAuthorizationHeader()
|
let authHeader = getAuthorizationHeader()
|
||||||
|
|
||||||
@ -51,14 +57,14 @@ const Agendamento = ({setDictInfo}) => {
|
|||||||
let paciente = await GetPatientByID(patient_id, authHeader);
|
let paciente = await GetPatientByID(patient_id, authHeader);
|
||||||
|
|
||||||
let dicionario = {
|
let dicionario = {
|
||||||
agendamento: agendamento,
|
...agendamento,
|
||||||
Infos: {
|
|
||||||
nome_nedico: medico.full_name,
|
nome_medico: medico[0].full_name,
|
||||||
doctor_id: medico.id,
|
doctor_id: medico.id,
|
||||||
patient_id: paciente[0].id,
|
patient_id: paciente[0].id,
|
||||||
paciente_nome: paciente[0].full_name,
|
paciente_nome: paciente[0].full_name,
|
||||||
paciente_cpf: paciente[0].cpf
|
paciente_cpf: paciente[0].cpf
|
||||||
}
|
|
||||||
};
|
};
|
||||||
return dicionario;
|
return dicionario;
|
||||||
};
|
};
|
||||||
@ -69,17 +75,19 @@ const Agendamento = ({setDictInfo}) => {
|
|||||||
// 1. Agrupamento (igual ao seu código original)
|
// 1. Agrupamento (igual ao seu código original)
|
||||||
for (const agendamento of listaTodosAgendamentos) {
|
for (const agendamento of listaTodosAgendamentos) {
|
||||||
if (agendamento.status === 'requested') {
|
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);
|
let v = await ConfigurarFiladeEspera(agendamento.patient_id, agendamento.doctor_id, agendamento);
|
||||||
ListaFilaDeEspera.push(v);
|
ListaFilaDeEspera.push(v);
|
||||||
} else {
|
} 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) {
|
if (DiaAgendamento in DictAgendamentosOrganizados) {
|
||||||
DictAgendamentosOrganizados[DiaAgendamento].push(agendamento);
|
DictAgendamentosOrganizados[DiaAgendamento].push(novoAgendamento);
|
||||||
} else {
|
} else {
|
||||||
DictAgendamentosOrganizados[DiaAgendamento] = [agendamento];
|
DictAgendamentosOrganizados[DiaAgendamento] = [novoAgendamento];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -129,84 +137,41 @@ const Agendamento = ({setDictInfo}) => {
|
|||||||
redirect: 'follow'
|
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(response => response.json())
|
||||||
.then(result => {FiltrarAgendamentos(result);})
|
.then(result => {FiltrarAgendamentos(result); console.log(result, "RESULTRADO DA API")})
|
||||||
.catch(error => console.log('error', error));
|
.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) => {
|
const deleteConsulta = (selectedPatientId) => {
|
||||||
console.log("tentando apagar")
|
var myHeaders = new Headers();
|
||||||
var myHeaders = new Headers();
|
myHeaders.append("Content-Type", "application/json");
|
||||||
myHeaders.append("Authorization", authHeader);
|
myHeaders.append('apikey', API_KEY)
|
||||||
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)
|
var raw = JSON.stringify({ "status":"cancelled",
|
||||||
.then(response => response.json())
|
"cancellation_reason": motivoCancelamento
|
||||||
.then(result => console.log(result))
|
});
|
||||||
.catch(error => console.log('error', error));
|
|
||||||
|
|
||||||
|
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)
|
// Lógica para filtrar os dados da AGENDA (AgendamentosMes)
|
||||||
@ -254,20 +219,6 @@ const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
|
|||||||
else setPageConsulta(true)
|
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)
|
const handleClickCancel = () => setPageConsulta(false)
|
||||||
@ -289,78 +240,10 @@ const handleSearchMedicos = (term) => {
|
|||||||
<div className='atendimento-eprocura'>
|
<div className='atendimento-eprocura'>
|
||||||
|
|
||||||
<div className='busca-atendimento-container'>
|
<div className='busca-atendimento-container'>
|
||||||
|
|
||||||
<div className='input-e-dropdown-wrapper'>
|
|
||||||
|
|
||||||
<div className='busca-atendimento'>
|
|
||||||
<div>
|
|
||||||
<i className="fa-solid fa-calendar-day"></i>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
placeholder="Filtrar atendimento por médico..."
|
|
||||||
value={searchTermDoctor}
|
|
||||||
onChange={(e) => handleSearchMedicos(e.target.value)} // Chama a nova função de filtro
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{/* DROPDOWN (RENDERIZAÇÃO CONDICIONAL) */}
|
|
||||||
{searchTermDoctor && FiltredTodosMedicos.length > 0 && (
|
|
||||||
<div className='dropdown-medicos'>
|
|
||||||
{FiltredTodosMedicos.map((medico) => (
|
|
||||||
<div
|
|
||||||
key={medico.id}
|
|
||||||
className='dropdown-item'
|
|
||||||
onClick={() => {
|
|
||||||
// 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...
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<p>{medico.nomeMedico} </p>
|
|
||||||
</div>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div className='unidade-selecionarprofissional'>
|
|
||||||
<select>
|
|
||||||
<option value="" disabled selected >Unidade</option>
|
|
||||||
<option value="">Unidade Central</option>
|
|
||||||
<option value="">Unidade Zona Norte</option>
|
|
||||||
<option value="">Unidade Zona Oeste</option>
|
|
||||||
</select>
|
|
||||||
<input type="text" placeholder='Selecionar profissional' />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='container-btns-agenda-fila_esepera'>
|
|
||||||
<button
|
|
||||||
className={`btn-agenda ${FiladeEspera === false ? "opc-agenda-ativo" : ""}`}
|
|
||||||
onClick={() => {
|
|
||||||
setFiladeEspera(false);
|
|
||||||
setSearchTerm('');
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Agenda
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
className={`btn-fila-espera ${FiladeEspera === true ? "opc-filaespera-ativo" : ""}`}
|
|
||||||
onClick={() => {
|
|
||||||
setFiladeEspera(true);
|
|
||||||
setSearchTerm('');
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Fila de espera
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<section className='calendario-ou-filaespera'>
|
<section className='calendario-ou-filaespera'>
|
||||||
{FiladeEspera === false ?
|
|
||||||
(
|
|
||||||
<div className='calendario'>
|
<div className='calendario'>
|
||||||
<div>
|
<div>
|
||||||
<section className='btns-e-legenda-container'>
|
<section className='btns-e-legenda-container'>
|
||||||
@ -383,74 +266,23 @@ const handleSearchMedicos = (term) => {
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{tabela === "diario" && <TabelaAgendamentoDia handleClickAgendamento={handleClickAgendamento} agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} setDictInfo={setDictInfo} />}
|
{tabela === "diario" && <TabelaAgendamentoDia handleClickAgendamento={handleClickAgendamento} agendamentos={DictAgendamentosOrganizados}
|
||||||
{tabela === 'semanal' && <TabelaAgendamentoSemana agendamentos={DictAgendamentosOrganizados} ListarDiasdoMes={ListarDiasdoMes} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} setDictInfo={setDictInfo}/>}
|
setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} setDictInfo={setDictInfo}
|
||||||
{tabela === 'mensal' && <TabelaAgendamentoMes ListarDiasdoMes={ListarDiasdoMes} aplicarCores={true} agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} setDictInfo={setDictInfo} />}
|
listaConsultasID={[]} setListaConsultaID={setListaConsultaID} coresConsultas={coresConsultas}/>}
|
||||||
|
|
||||||
|
|
||||||
|
{tabela === 'semanal' && <TabelaAgendamentoSemana agendamentos={DictAgendamentosOrganizados} ListarDiasdoMes={ListarDiasdoMes}
|
||||||
|
setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} setDictInfo={setDictInfo}
|
||||||
|
listaConsultasID={[]} setListaConsultaID={setListaConsultaID} coresConsultas={coresConsultas} />}
|
||||||
|
|
||||||
|
|
||||||
|
{tabela === 'mensal' && <TabelaAgendamentoMes ListarDiasdoMes={ListarDiasdoMes} aplicarCores={true} agendamentos={DictAgendamentosOrganizados}
|
||||||
|
setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} setDictInfo={setDictInfo} listaConsultasID={[]}
|
||||||
|
setListaConsultaID={setListaConsultaID} coresConsultas={coresConsultas}/>}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
|
||||||
:
|
</section>
|
||||||
(
|
|
||||||
<div className="fila-container">
|
|
||||||
<div className="fila-header">
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
placeholder="Pesquisar na fila de espera..."
|
|
||||||
className="busca-fila-espera"
|
|
||||||
value={searchTerm}
|
|
||||||
onChange={(e) => setSearchTerm(e.target.value)}
|
|
||||||
/>
|
|
||||||
<h2 className="fila-titulo">Fila de Espera</h2>
|
|
||||||
</div>
|
|
||||||
<table className="fila-tabela">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Nome</th>
|
|
||||||
<th>Telefone</th>
|
|
||||||
|
|
||||||
<th>Telefone</th>
|
|
||||||
<th>Entrou na fila de espera</th>
|
|
||||||
<th>Ações</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{filaEsperaData.map((item, index) => (
|
|
||||||
<tr key={index}>
|
|
||||||
<td> <p>{item.Infos?.paciente_nome} </p> </td>
|
|
||||||
<td><p>{} </p></td>
|
|
||||||
<td>{}</td>
|
|
||||||
<td>{}</td>
|
|
||||||
<td> <div className="d-flex gap-2">
|
|
||||||
|
|
||||||
<button className="btn btn-sm btn-edit"
|
|
||||||
onClick={() => {
|
|
||||||
console.log(item, 'item')
|
|
||||||
navigate(`${2}/edit`)
|
|
||||||
setDictInfo(item)
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<i className="bi bi-pencil me-1"></i> Editar
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
className="btn btn-sm btn-delete"
|
|
||||||
onClick={() => {
|
|
||||||
setSelectedId(item.agendamento.id)
|
|
||||||
setShowDeleteModal(true);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<i className="bi bi-trash me-1"></i> Excluir
|
|
||||||
</button>
|
|
||||||
</div></td>
|
|
||||||
</tr>
|
|
||||||
))}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</section>
|
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<AgendamentoCadastroManager setPageConsulta={setPageConsulta} />
|
<AgendamentoCadastroManager setPageConsulta={setPageConsulta} />
|
||||||
@ -468,12 +300,12 @@ const handleSearchMedicos = (term) => {
|
|||||||
e.target.classList.contains("modal") && setShowDeleteModal(false)
|
e.target.classList.contains("modal") && setShowDeleteModal(false)
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<div className="modal-dialog modal-dialog-centered">
|
<div className="modal-dialog modal-dialog-centered">
|
||||||
<div className="modal-content">
|
<div className="modal-content">
|
||||||
|
|
||||||
<div className="modal-header bg-danger bg-opacity-25">
|
<div className="modal-header bg-danger bg-opacity-25">
|
||||||
<h5 className="modal-title text-danger">
|
<h5 className="modal-title text-danger">
|
||||||
Confirmação de Exclusão
|
Confirmação de Cancelamento
|
||||||
</h5>
|
</h5>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@ -484,8 +316,12 @@ const handleSearchMedicos = (term) => {
|
|||||||
|
|
||||||
<div className="modal-body">
|
<div className="modal-body">
|
||||||
<p className="mb-0 fs-5">
|
<p className="mb-0 fs-5">
|
||||||
Tem certeza que deseja excluir este agendamento?
|
Qual o motivo do cancelamento?
|
||||||
</p>
|
</p>
|
||||||
|
<div className='campo-de-input'>
|
||||||
|
|
||||||
|
<textarea className='input-modal' value={motivoCancelamento} onChange={(e) => setMotivoCancelamento(e.target.value)} />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="modal-footer">
|
<div className="modal-footer">
|
||||||
@ -493,7 +329,9 @@ const handleSearchMedicos = (term) => {
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="btn btn-primary"
|
className="btn btn-primary"
|
||||||
onClick={() => setShowDeleteModal(false)}
|
onClick={() => {setShowDeleteModal(false);
|
||||||
|
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
Cancelar
|
Cancelar
|
||||||
</button>
|
</button>
|
||||||
@ -502,7 +340,22 @@ const handleSearchMedicos = (term) => {
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="btn btn-danger"
|
className="btn btn-danger"
|
||||||
onClick={() => {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)
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
>
|
>
|
||||||
<i className="bi bi-trash me-1"></i> Excluir
|
<i className="bi bi-trash me-1"></i> Excluir
|
||||||
|
|||||||
@ -34,27 +34,24 @@ const ConsultasPaciente = ({ setConsulta }) => {
|
|||||||
let filaEspera = []
|
let filaEspera = []
|
||||||
|
|
||||||
const fetchInfosConsultas = async (consulta) => {
|
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")
|
for(let i = 0; listaTodasConsultas.length > i; i++){
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("so muda")
|
|
||||||
if(!listaTodasConsultas.length) return
|
|
||||||
|
|
||||||
for(let i = 0; listaTodasConsultas.length > i; i++){
|
|
||||||
|
|
||||||
let consulta = listaTodasConsultas[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"){
|
if(consulta.status === "requested"){
|
||||||
@ -81,11 +78,15 @@ const ConsultasPaciente = ({ setConsulta }) => {
|
|||||||
|
|
||||||
setConsultasOrganizadas(conjuntoConsultas)
|
setConsultasOrganizadas(conjuntoConsultas)
|
||||||
setFilaDeEspera(filaEspera)
|
setFilaDeEspera(filaEspera)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("so muda")
|
||||||
|
if(!listaTodasConsultas.length) return
|
||||||
|
|
||||||
console.log(filaEspera, "fila de espera")
|
console.log(filaEspera, "fila de espera")
|
||||||
|
fetchInfosConsultas();
|
||||||
|
|
||||||
|
|
||||||
}, [listaTodasConsultas])
|
}, [listaTodasConsultas])
|
||||||
|
|
||||||
|
|
||||||
@ -186,10 +187,10 @@ const ConsultasPaciente = ({ setConsulta }) => {
|
|||||||
<tbody>
|
<tbody>
|
||||||
{filaDeEspera.map((item, index) => (
|
{filaDeEspera.map((item, index) => (
|
||||||
<tr key={index}>
|
<tr key={index}>
|
||||||
<td> <p>{item?.patient_id} </p> </td>
|
<td> <p>{item?.paciente_nome} </p> </td>
|
||||||
<td><p>{item?.paciente_cpf} </p></td>
|
<td><p>{item?.paciente_cpf} </p></td>
|
||||||
<td><p>{item.Infos?.nome_medico} </p></td>
|
<td><p>{item?.medico_nome} </p></td>
|
||||||
<td>{dayjs(item.agendamento?.created_at).format('DD/MM/YYYY HH:mm')}</td>
|
<td>{dayjs(item?.created_at).format('DD/MM/YYYY HH:mm')}</td>
|
||||||
<td> <div className="d-flex gap-2">
|
<td> <div className="d-flex gap-2">
|
||||||
|
|
||||||
<button className="btn btn-sm btn-edit"
|
<button className="btn btn-sm btn-edit"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import "./style/card-consulta.css"
|
|||||||
const CardConsulta = ( {DadosConsulta, TabelaAgendamento, setShowDeleteModal, setDictInfo, setSelectedId, setShowConfirmModal, corModal, selectedID, coresConsultas, setListaConsultaID, listaConsultasID} ) => {
|
const CardConsulta = ( {DadosConsulta, TabelaAgendamento, setShowDeleteModal, setDictInfo, setSelectedId, setShowConfirmModal, corModal, selectedID, coresConsultas, setListaConsultaID, listaConsultasID} ) => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
|
console.log(DadosConsulta)
|
||||||
|
|
||||||
const {getAuthorizationHeader} = useAuth()
|
const {getAuthorizationHeader} = useAuth()
|
||||||
const authHeader = getAuthorizationHeader()
|
const authHeader = getAuthorizationHeader()
|
||||||
@ -47,9 +47,9 @@ const CardConsulta = ( {DadosConsulta, TabelaAgendamento, setShowDeleteModal, se
|
|||||||
BuscarMedicoEPaciente();
|
BuscarMedicoEPaciente();
|
||||||
}, [ids, authHeader]);
|
}, [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)
|
let indice_cor = listaConsultasID.indexOf(DadosConsulta.id)
|
||||||
|
|||||||
@ -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
|
// Se estiver na página de edição esse useEffect pega o horario de inicio para coloca-lo no horarioInicio
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log("Horario", )
|
console.log("Horario", )
|
||||||
setHorarioInicio(formatarHora(agendamento.scheduled_at))
|
if (agendamento?.scheduled_at) {
|
||||||
|
setHorarioInicio(formatarHora(agendamento.scheduled_at));
|
||||||
|
}
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,6 @@ const TabelaAgendamentoDia = ({ handleClickAgendamento, agendamentos, setShowDel
|
|||||||
|
|
||||||
let ListaDiasComAgendamentos = Object.keys(agendamentos)
|
let ListaDiasComAgendamentos = Object.keys(agendamentos)
|
||||||
|
|
||||||
console.log(agendamentos, "tentativa colocar consultas")
|
|
||||||
|
|
||||||
//console.log(Dia, "hshdhshhsdhs")
|
//console.log(Dia, "hshdhshhsdhs")
|
||||||
|
|
||||||
|
|||||||
@ -324,8 +324,7 @@ const handleSearchMedicos = (term) => {
|
|||||||
<div>
|
<div>
|
||||||
<div className='spinner'></div>
|
<div className='spinner'></div>
|
||||||
<h1>Agendar nova consulta</h1>
|
<h1>Agendar nova consulta</h1>
|
||||||
|
|
||||||
|
|
||||||
<div className="btns-gerenciamento-e-consulta" style={{ display: 'flex', gap: '10px', marginBottom: '20px' }}>
|
<div className="btns-gerenciamento-e-consulta" style={{ display: 'flex', gap: '10px', marginBottom: '20px' }}>
|
||||||
<button className="btn btn-primary" onClick={() => setPageConsulta(true)}>
|
<button className="btn btn-primary" onClick={() => setPageConsulta(true)}>
|
||||||
<i className="bi bi-plus-circle"></i> Adicionar Consulta
|
<i className="bi bi-plus-circle"></i> Adicionar Consulta
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import { useAuth } from '../components/utils/AuthProvider'
|
|||||||
import { useEffect,useState } from 'react'
|
import { useEffect,useState } from 'react'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { UserInfos } from '../components/utils/Functions-Endpoints/General'
|
import { UserInfos } from '../components/utils/Functions-Endpoints/General'
|
||||||
const AgendamentoCadastroManager = ({setPageConsulta}) => {
|
const AgendamentoCadastroManager = ({setPageConsulta, Dict}) => {
|
||||||
|
|
||||||
const {getAuthorizationHeader} = useAuth()
|
const {getAuthorizationHeader} = useAuth()
|
||||||
const [agendamento, setAgendamento] = useState({status:'confirmed'})
|
const [agendamento, setAgendamento] = useState({status:'confirmed'})
|
||||||
@ -16,6 +16,11 @@ const AgendamentoCadastroManager = ({setPageConsulta}) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
||||||
|
if(!Dict){setAgendamento({})}
|
||||||
|
else{
|
||||||
|
setAgendamento(...Dict)
|
||||||
|
}
|
||||||
|
|
||||||
const ColherInfoUsuario =async () => {
|
const ColherInfoUsuario =async () => {
|
||||||
const result = await UserInfos(authHeader)
|
const result = await UserInfos(authHeader)
|
||||||
|
|
||||||
@ -43,7 +48,7 @@ const AgendamentoCadastroManager = ({setPageConsulta}) => {
|
|||||||
"duration_minutes": 30,
|
"duration_minutes": 30,
|
||||||
"appointment_type": Dict.tipo_consulta,
|
"appointment_type": Dict.tipo_consulta,
|
||||||
|
|
||||||
"patient_notes": "Prefiro horário pela manhã",
|
"patient_notes": "",
|
||||||
"insurance_provider": Dict.convenio,
|
"insurance_provider": Dict.convenio,
|
||||||
"status": Dict.status,
|
"status": Dict.status,
|
||||||
"created_by": idUsuario
|
"created_by": idUsuario
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user