Possibilidade do paciente apagar e editar uma consulta

This commit is contained in:
joao_pedro 2025-11-04 08:30:57 -03:00
parent c502b73a95
commit 49e25c0511
7 changed files with 114 additions and 74 deletions

View File

@ -226,12 +226,6 @@ const deleteConsulta = (selectedPatientId) => {
return ListaDiasDatas return ListaDiasDatas
} }
const handleClickAgendamento = (agendamento) => {
if (agendamento.status !== 'vazio') return
else setPageConsulta(true)
};
const handleClickCancel = () => setPageConsulta(false) const handleClickCancel = () => setPageConsulta(false)
@ -278,7 +272,7 @@ const deleteConsulta = (selectedPatientId) => {
</div> </div>
</section> </section>
{tabela === "diario" && <TabelaAgendamentoDia handleClickAgendamento={handleClickAgendamento} agendamentos={DictAgendamentosOrganizados} {tabela === "diario" && <TabelaAgendamentoDia agendamentos={DictAgendamentosOrganizados}
setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} setDictInfo={setDictInfo} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} setDictInfo={setDictInfo}
listaConsultasID={[]} setListaConsultaID={setListaConsultaID} coresConsultas={coresConsultas}/>} listaConsultasID={[]} setListaConsultaID={setListaConsultaID} coresConsultas={coresConsultas}/>}

View File

@ -9,7 +9,7 @@ import { GetPatientByID } from '../components/utils/Functions-Endpoints/Patient'
// 1. Importe o useNavigate // 1. Importe o useNavigate
import { useNavigate } from 'react-router-dom' import { useNavigate } from 'react-router-dom'
const ConsultaEditPage = ({ dadosConsulta }) => { const ConsultaEditPage = ({ DictInfo }) => {
// 2. Crie a instância do navigate // 2. Crie a instância do navigate
const navigate = useNavigate(); const navigate = useNavigate();
@ -17,20 +17,23 @@ const ConsultaEditPage = ({ dadosConsulta }) => {
const authHeader = getAuthorizationHeader(); const authHeader = getAuthorizationHeader();
const [idUsuario, setIDusuario] = useState(null); const [idUsuario, setIDusuario] = useState(null);
const [DictInfo, setDict] = useState({}); const [Dict, setDict] = useState({});
const [Medico, setMedico] = useState(null); const [Medico, setMedico] = useState(null);
const [Paciente, setPaciente] = useState(null); const [Paciente, setPaciente] = useState(null);
console.log("dentro do edit", DictInfo)
useEffect(() => { useEffect(() => {
setDict({ ...dadosConsulta }); setDict({ ...DictInfo });
const fetchInitialData = async () => { const fetchInitialData = async () => {
if (dadosConsulta.doctor_id) { if (DictInfo.doctor_id) {
const medicoData = await GetDoctorByID(dadosConsulta.doctor_id, authHeader); const medicoData = await GetDoctorByID(DictInfo.doctor_id, authHeader);
setMedico(medicoData[0]); setMedico(medicoData[0]);
} }
if (dadosConsulta.patient_id) { if (DictInfo.patient_id) {
const pacienteData = await GetPatientByID(dadosConsulta.patient_id, authHeader); const pacienteData = await GetPatientByID(DictInfo.patient_id, authHeader);
setPaciente(pacienteData[0]); setPaciente(pacienteData[0]);
} }
}; };
@ -43,17 +46,17 @@ const ConsultaEditPage = ({ dadosConsulta }) => {
fetchUserInfo(); fetchUserInfo();
fetchInitialData(); fetchInitialData();
}, [dadosConsulta, authHeader]); }, [DictInfo, authHeader]);
useEffect(() => { useEffect(() => {
if (Medico) { if (Medico) {
setDict(prevDict => ({ setDict(prevDict => ({
...prevDict, ...prevDict,
medico_nome: Medico?.full_name, 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) => { const handleSave = async (DictParaPatch) => {
try { try {
@ -112,7 +115,7 @@ const ConsultaEditPage = ({ dadosConsulta }) => {
<div> <div>
{} {}
<FormConsultaPaciente <FormConsultaPaciente
agendamento={DictInfo} agendamento={Dict}
setAgendamento={setDict} setAgendamento={setDict}
onSave={handleSave} onSave={handleSave}
onCancel={handleCancel} onCancel={handleCancel}

View File

@ -12,7 +12,7 @@ import { UserInfos } from '../components/utils/Functions-Endpoints/General'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import TabelaAgendamentoDia from "../components/AgendarConsulta/TabelaAgendamentoDia" import TabelaAgendamentoDia from "../components/AgendarConsulta/TabelaAgendamentoDia"
const ConsultasPaciente = ({ setConsulta }) => { const ConsultasPaciente = ({ setDictInfo }) => {
const { getAuthorizationHeader } = useAuth() const { getAuthorizationHeader } = useAuth()
const [agendamentosOrganizados, setAgendamentosOrganizados] = useState({}) const [agendamentosOrganizados, setAgendamentosOrganizados] = useState({})
const [listaTodasConsultas, setListaTodasConsultas] = useState([]) const [listaTodasConsultas, setListaTodasConsultas] = useState([])
@ -21,6 +21,8 @@ const ConsultasPaciente = ({ setConsulta }) => {
const [selectedID, setSelectedId] = useState("") const [selectedID, setSelectedId] = useState("")
let authHeader = getAuthorizationHeader() let authHeader = getAuthorizationHeader()
const [motivoCancelamento, setMotivoCancelamento] = useState("")
const [consultas, setConsultas] = useState([]) const [consultas, setConsultas] = useState([])
const [consultasOrganizadas, setConsultasOrganizadas] = useState({}) const [consultasOrganizadas, setConsultasOrganizadas] = useState({})
@ -34,8 +36,6 @@ const ConsultasPaciente = ({ setConsulta }) => {
let filaEspera = [] let filaEspera = []
const fetchInfosConsultas = async (consulta) => { const fetchInfosConsultas = async (consulta) => {
//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 }
@ -117,6 +117,7 @@ const ConsultasPaciente = ({ setConsulta }) => {
}, []); }, []);
const navigate = useNavigate() const navigate = useNavigate()
const deleteConsulta = async (ID) => { const deleteConsulta = async (ID) => {
try { try {
const myHeaders = new Headers(); const myHeaders = new Headers();
@ -124,7 +125,7 @@ const ConsultasPaciente = ({ setConsulta }) => {
myHeaders.append('apikey', API_KEY); myHeaders.append('apikey', API_KEY);
myHeaders.append("authorization", authHeader); myHeaders.append("authorization", authHeader);
const raw = JSON.stringify({ "status": "cancelled" }); const raw = JSON.stringify({ "status": "cancelled", "cancellation_reason":motivoCancelamento });
const requestOptions = { const requestOptions = {
method: 'PATCH', method: 'PATCH',
@ -158,8 +159,11 @@ const ConsultasPaciente = ({ setConsulta }) => {
<button className="btn btn-primary" onClick={() => { navigate("criar") }}> <button className="btn btn-primary" onClick={() => { navigate("criar") }}>
<i className="bi bi-plus-circle"></i> Adicionar Consulta <i className="bi bi-plus-circle"></i> Adicionar Consulta
</button> </button>
{!viewFila ?
<button onClick={() => setViewFila(true)}> Fila de espera</button> <button onClick={() => setViewFila(true)}> Fila de espera</button>
:
<button onClick={() => setViewFila(false)}>Consultas </button>
}
<h2>Seus próximos atendimentos</h2> <h2>Seus próximos atendimentos</h2>
{viewFila ? {viewFila ?
@ -221,15 +225,27 @@ const ConsultasPaciente = ({ setConsulta }) => {
</div> </div>
: :
<TabelaAgendamentoDia agendamentos={consultasOrganizadas} listaConsultasID={[]}/> <TabelaAgendamentoDia agendamentos={consultasOrganizadas} listaConsultasID={[]} setDictInfo={setDictInfo} selectedID={selectedID} setSelectedId={setSelectedId} setShowDeleteModal={setShowDeleteModal}/>
} }
{showDeleteModal && {showDeleteModal && (
<div
className="modal fade show"
style={{
display: "block",
backgroundColor: "rgba(0, 0, 0, 0.5)",
}}
tabIndex="-1"
onClick={(e) =>
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"
@ -237,30 +253,59 @@ const ConsultasPaciente = ({ setConsulta }) => {
onClick={() => setShowDeleteModal(false)} onClick={() => setShowDeleteModal(false)}
></button> ></button>
</div> </div>
<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">
<button <button
type="button" type="button"
className="btn btn-primary" className="btn btn-primary"
onClick={() => setShowDeleteModal(false)} onClick={() => {setShowDeleteModal(false);
}}
> >
Cancelar Cancelar
</button> </button>
<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
</button> </button>
</div> </div>
</div> </div>
</div>}
</div> </div>
</div>)}
</div>
</div> </div>
) )
} }

View File

@ -80,6 +80,8 @@ const CardConsulta = ( {DadosConsulta, TabelaAgendamento, setShowDeleteModal, se
<button className="btn btn-sm btn-edit-custom" <button className="btn btn-sm btn-edit-custom"
onClick={() => {navigate(`edit`) onClick={() => {navigate(`edit`)
console.log(DadosConsulta)
setDictInfo({...DadosConsulta,paciente_cpf:"", paciente_nome:DadosConsulta?.paciente_nome, nome_medico:DadosConsulta?.medico_nome}) setDictInfo({...DadosConsulta,paciente_cpf:"", paciente_nome:DadosConsulta?.paciente_nome, nome_medico:DadosConsulta?.medico_nome})
}} }}

View File

@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react';
import CardConsulta from './CardConsulta'; import CardConsulta from './CardConsulta';
import "./style/styleTabelas/tabeladia.css"; import "./style/styleTabelas/tabeladia.css";
const TabelaAgendamentoDia = ({ handleClickAgendamento, agendamentos, setShowDeleteModal, setDictInfo,selectedID, setSelectedId, setShowConfirmModal, coresConsultas, setListaConsultaID, listaConsultasID }) => { const TabelaAgendamentoDia = ({ agendamentos, setShowDeleteModal, setDictInfo,selectedID, setSelectedId, setShowConfirmModal, coresConsultas, setListaConsultaID, listaConsultasID }) => {
const [indiceAcesso, setIndiceAcesso] = useState(0) const [indiceAcesso, setIndiceAcesso] = useState(0)
const [Dia, setDia] = useState() const [Dia, setDia] = useState()
const agendamentosDoDia = agendamentos?.semana1?.segunda || []; const agendamentosDoDia = agendamentos?.semana1?.segunda || [];
@ -70,7 +70,7 @@ const TabelaAgendamentoDia = ({ handleClickAgendamento, agendamentos, setShowDel
<td className='coluna-horario'><p className='horario-texto'>{`${horario[0]}:${horario[1]}`}</p></td> <td className='coluna-horario'><p className='horario-texto'>{`${horario[0]}:${horario[1]}`}</p></td>
<td className='mostrar-horario'> <td className='mostrar-horario'>
<div onClick={() => handleClickAgendamento(agendamento)}> <div>
<CardConsulta DadosConsulta={agendamento} TabelaAgendamento={'dia'} setShowDeleteModal={setShowDeleteModal} setDictInfo={setDictInfo} setSelectedId={setSelectedId} selectedID={selectedID} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID}/> <CardConsulta DadosConsulta={agendamento} TabelaAgendamento={'dia'} setShowDeleteModal={setShowDeleteModal} setDictInfo={setDictInfo} setSelectedId={setSelectedId} selectedID={selectedID} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID}/>
</div> </div>
</td> </td>

View File

@ -252,12 +252,6 @@ const confirmConsulta = (selectedPatientId) => {
} }
const handleClickAgendamento = (agendamento) => {
if (agendamento.status !== 'vazio') return
else setPageConsulta(true)
};
useEffect(() => { useEffect(() => {
console.log("mudou FiltredTodosMedicos:", FiltredTodosMedicos); console.log("mudou FiltredTodosMedicos:", FiltredTodosMedicos);
if (MedicoFiltrado.id != "vazio" ) { if (MedicoFiltrado.id != "vazio" ) {
@ -435,7 +429,7 @@ const handleSearchMedicos = (term) => {
</section> </section>
{/* Componentes de Tabela - Adicionado props de delete da main */} {/* Componentes de Tabela - Adicionado props de delete da main */}
{tabela === "diario" && <TabelaAgendamentoDia handleClickAgendamento={handleClickAgendamento} agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID} />} {tabela === "diario" && <TabelaAgendamentoDia agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID} />}
{tabela === 'semanal' && <TabelaAgendamentoSemana agendamentos={DictAgendamentosOrganizados} ListarDiasdoMes={ListarDiasdoMes} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID}/>} {tabela === 'semanal' && <TabelaAgendamentoSemana agendamentos={DictAgendamentosOrganizados} ListarDiasdoMes={ListarDiasdoMes} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID}/>}
{tabela === 'mensal' && <TabelaAgendamentoMes ListarDiasdoMes={ListarDiasdoMes} aplicarCores={true} agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID}/>} {tabela === 'mensal' && <TabelaAgendamentoMes ListarDiasdoMes={ListarDiasdoMes} aplicarCores={true} agendamentos={DictAgendamentosOrganizados} setShowDeleteModal={setShowDeleteModal} setSelectedId={setSelectedId} selectedID={selectedID} setDictInfo={setDictInfo} setShowConfirmModal={setShowConfirmModal} coresConsultas={coresConsultas} setListaConsultaID={setListaConsultaID} listaConsultasID={listaConsultasID}/>}
</div> </div>

View File

@ -10,6 +10,8 @@ function PerfilPaciente({ onLogout }) {
const [dadosConsulta, setConsulta] = useState({}) const [dadosConsulta, setConsulta] = useState({})
const [DictInfo, setDictInfo] = useState({})
return ( return (
@ -19,9 +21,9 @@ const [dadosConsulta, setConsulta] = useState({})
<div id="main"> <div id="main">
<Routes> <Routes>
<Route path="/" element={<LaudoManager />} /> <Route path="/" element={<LaudoManager />} />
<Route path="agendamento" element={<ConsultasPaciente setConsulta={setConsulta}/>} /> <Route path="agendamento" element={<ConsultasPaciente setDictInfo={setDictInfo}/>} />
<Route path="agendamento/criar" element={<ConsultaCadastroManager />} /> <Route path="agendamento/criar" element={<ConsultaCadastroManager />} />
<Route path="agendamento/edit" element={<ConsultaEditPage dadosConsulta={dadosConsulta} />} /> <Route path="agendamento/edit" element={<ConsultaEditPage DictInfo={DictInfo} />} />
<Route path="laudo" element={<LaudoManager />} /> <Route path="laudo" element={<LaudoManager />} />
<Route path="*" element={<h2>Página não encontrada</h2>} /> <Route path="*" element={<h2>Página não encontrada</h2>} />
</Routes> </Routes>