Excessoes: tentativa 1
This commit is contained in:
parent
83f88e34d7
commit
350e63d692
@ -5,11 +5,22 @@ import { useState, useEffect } from "react";
|
|||||||
|
|
||||||
const FormNovaConsulta = ({ onCancel, patientID }) => {
|
const FormNovaConsulta = ({ onCancel, patientID }) => {
|
||||||
|
|
||||||
|
const [isModoEmergencia, setIsModoEmergencia] = useState(false);
|
||||||
const [selectedFile, setSelectedFile] = useState(null);
|
const [selectedFile, setSelectedFile] = useState(null);
|
||||||
const [anexos, setAnexos] = useState([]);
|
const [anexos, setAnexos] = useState([]);
|
||||||
const [loadingAnexos, setLoadingAnexos] = useState(false);
|
const [loadingAnexos, setLoadingAnexos] = useState(false);
|
||||||
const [paciente, setPaciente] = useState({})
|
const [paciente, setPaciente] = useState({})
|
||||||
const [acessibilidade, setAcessibilidade] = useState({cadeirante:false,idoso:false,gravida:false,bebe:false, autista:false })
|
const [acessibilidade, setAcessibilidade] = useState({cadeirante:false,idoso:false,gravida:false,bebe:false, autista:false })
|
||||||
|
const [dadosAtendimento, setDadosAtendimento] = useState({
|
||||||
|
profissional: '',
|
||||||
|
tipoAtendimento: '',
|
||||||
|
unidade: '',
|
||||||
|
dataAtendimento: '',
|
||||||
|
inicio: '',
|
||||||
|
termino: '',
|
||||||
|
solicitante: '',
|
||||||
|
observacoes: ''
|
||||||
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!patientID) return;
|
if (!patientID) return;
|
||||||
@ -165,9 +176,73 @@ const FormNovaConsulta = ({ onCancel, patientID }) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleAtendimentoChange = (e) => {
|
||||||
|
const { value, name } = e.target;
|
||||||
|
setDadosAtendimento(prev => ({
|
||||||
|
...prev,
|
||||||
|
[name]: value
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSubmitExcecao = async () => {
|
||||||
|
console.log("Modo Emergência Ativado: Tentando criar Exceção com novo endpoint.");
|
||||||
|
|
||||||
|
const { profissional, dataAtendimento, tipoAtendimento, inicio, termino, observacoes } = dadosAtendimento;
|
||||||
|
|
||||||
|
if (!profissional || !dataAtendimento || !tipoAtendimento || !inicio || !termino) {
|
||||||
|
alert("Por favor, preencha o Profissional, Data, Tipo e Horários para a exceção.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const payload = {
|
||||||
|
doctor_id: profissional,
|
||||||
|
date: dataAtendimento,
|
||||||
|
start_time: inicio + ":00", // Adiciona ":00" se o input type="time" retornar apenas HH:MM
|
||||||
|
end_time: termino + ":00", // Adiciona ":00"
|
||||||
|
kind: "liberacao", // Usando 'excecao' ou 'consulta' ao invés de 'bloqueio'
|
||||||
|
reason: tipoAtendimento,
|
||||||
|
//observation: observacoes || "Agendamento fora da grade horária padrão.",
|
||||||
|
};
|
||||||
|
|
||||||
|
var myHeaders = new Headers();
|
||||||
|
myHeaders.append("Content-Type", "application/json");
|
||||||
|
|
||||||
|
var requestOptions = {
|
||||||
|
method: 'POST',
|
||||||
|
headers: myHeaders,
|
||||||
|
body: JSON.stringify(payload),
|
||||||
|
redirect: 'follow'
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch("https://mock.apidog.com/m1/1053378-0-default/rest/v1/doctor_exceptions", requestOptions);
|
||||||
|
const result = await response.json();
|
||||||
|
|
||||||
|
if (response.ok || response.status === 201) {
|
||||||
|
console.log("Exceção de emergência criada com sucesso:", result);
|
||||||
|
alert(`Consulta de emergência agendada como exceção! Detalhes: ${JSON.stringify(result)}`);
|
||||||
|
} else {
|
||||||
|
console.error("Erro ao criar exceção de emergência:", result);
|
||||||
|
alert(`Erro ao agendar exceção. Status: ${response.status}. Detalhes: ${result.message || JSON.stringify(result)}`);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Erro na requisição para criar exceção:", error);
|
||||||
|
alert("Erro de comunicação com o servidor ou formato de resposta inválido.");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSubmitPadrao = () => {
|
||||||
|
console.log("Salvando agendamento.");
|
||||||
|
alert("Agendamento salvo!");
|
||||||
|
};
|
||||||
|
|
||||||
const handleSubmit = (e) => {
|
const handleSubmit = (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
alert("Agendamento salvo!");
|
if (isModoEmergencia) {
|
||||||
|
handleSubmitExcecao();
|
||||||
|
} else {
|
||||||
|
handleSubmitPadrao();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -259,10 +334,21 @@ const FormNovaConsulta = ({ onCancel, patientID }) => {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<h2 className="section-title">Informações do atendimento</h2>
|
<h2 className="section-title">Informações do atendimento</h2>
|
||||||
|
<div className="emergencia-toggle-container">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className={`btn ${isModoEmergencia ? 'btn-danger' : 'btn-secondary'}`}
|
||||||
|
onClick={() => setIsModoEmergencia(prev => !prev)}
|
||||||
|
style={{ marginBottom: '15px' }}
|
||||||
|
>
|
||||||
|
{isModoEmergencia ? 'Modo: EMERGÊNCIA Ativo' : 'Ativar Modo: Emergência (Exceção)'}
|
||||||
|
</button>
|
||||||
|
{isModoEmergencia && (
|
||||||
|
<p className="alerta-emergencia">⚠️ As informações de data e horário serão enviadas como uma exceção fora da grade normal.</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="icons-container">
|
<div className="icons-container">
|
||||||
|
|
||||||
<div className={`icons-div ${ acessibilidade.cadeirante === true ? 'acessibilidade-ativado' : ''} `} id='cadeirante' onClick={(e) => handleclickAcessibilidade(e.currentTarget.id)}>
|
<div className={`icons-div ${ acessibilidade.cadeirante === true ? 'acessibilidade-ativado' : ''} `} id='cadeirante' onClick={(e) => handleclickAcessibilidade(e.currentTarget.id)}>
|
||||||
|
|
||||||
<span className="material-symbols-outlined icon">accessible</span>
|
<span className="material-symbols-outlined icon">accessible</span>
|
||||||
@ -288,16 +374,25 @@ const FormNovaConsulta = ({ onCancel, patientID }) => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="campo-informacoes-atendimento">
|
<div className="campo-informacoes-atendimento">
|
||||||
|
|
||||||
<div className="campo-de-input">
|
<div className="campo-de-input">
|
||||||
<label>Nome do profissional *</label>
|
<label>Nome do profissional *</label>
|
||||||
<input type="text" name="profissional" required />
|
<input
|
||||||
|
type="text"
|
||||||
|
name="profissional"
|
||||||
|
required
|
||||||
|
value={dadosAtendimento.profissional}
|
||||||
|
onChange={handleAtendimentoChange}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div className="campo-de-input">
|
<div className="campo-de-input">
|
||||||
<label>Tipo de atendimento *</label>
|
<label>Tipo de atendimento *</label>
|
||||||
<input type="text" name="tipoAtendimento" required />
|
<input
|
||||||
|
type="text"
|
||||||
|
name="tipoAtendimento"
|
||||||
|
required
|
||||||
|
value={dadosAtendimento.tipoAtendimento}
|
||||||
|
onChange={handleAtendimentoChange}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -307,35 +402,59 @@ const FormNovaConsulta = ({ onCancel, patientID }) => {
|
|||||||
<div className="campo-informacoes-atendimento">
|
<div className="campo-informacoes-atendimento">
|
||||||
<div className='campo-de-input'>
|
<div className='campo-de-input'>
|
||||||
<label>Unidade *</label>
|
<label>Unidade *</label>
|
||||||
<select name="unidade">
|
<select
|
||||||
|
name="unidade"
|
||||||
|
value={dadosAtendimento.unidade}
|
||||||
|
onChange={handleAtendimentoChange}
|
||||||
|
>
|
||||||
<option value="" disabled invisible selected>Selecione a unidade</option>
|
<option value="" disabled invisible selected>Selecione a unidade</option>
|
||||||
<option value="centro">Núcleo de Especialidades Integradas</option>
|
<option value="centro">Núcleo de Especialidades Integradas</option>
|
||||||
<option value="leste">Unidade Leste</option>
|
<option value="leste">Unidade Leste</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div className="campo-de-input">
|
<div className="campo-de-input">
|
||||||
<label>Data *</label>
|
<label>Data *</label>
|
||||||
<input type="date" name="dataAtendimento" required />
|
<input
|
||||||
|
type="date"
|
||||||
|
name="dataAtendimento"
|
||||||
|
required
|
||||||
|
value={dadosAtendimento.dataAtendimento}
|
||||||
|
onChange={handleAtendimentoChange}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="campo-informacoes-atendimento">
|
<div className="campo-informacoes-atendimento">
|
||||||
<div className="campo-de-input">
|
<div className="campo-de-input">
|
||||||
<label>Início *</label>
|
<label>Início *</label>
|
||||||
<input type="time" name="inicio" required />
|
<input
|
||||||
|
type="time"
|
||||||
|
name="inicio"
|
||||||
|
required
|
||||||
|
value={dadosAtendimento.inicio}
|
||||||
|
onChange={handleAtendimentoChange}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="campo-de-input">
|
<div className="campo-de-input">
|
||||||
<label>Término *</label>
|
<label>Término *</label>
|
||||||
<input type="time" name="termino" required />
|
<input
|
||||||
|
type="time"
|
||||||
|
name="termino"
|
||||||
|
required
|
||||||
|
value={dadosAtendimento.termino}
|
||||||
|
onChange={handleAtendimentoChange}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="campo-de-input">
|
<div className="campo-de-input">
|
||||||
<label>Profissional solicitante</label>
|
<label>Profissional solicitante</label>
|
||||||
<select name="solicitante">
|
<select
|
||||||
|
name="solicitante"
|
||||||
|
value={dadosAtendimento.solicitante}
|
||||||
|
onChange={handleAtendimentoChange}
|
||||||
|
>
|
||||||
<option value="" disabled invisible selected>Selecione o solicitante</option>
|
<option value="" disabled invisible selected>Selecione o solicitante</option>
|
||||||
<option value="secretaria">Secretária</option>
|
<option value="secretaria">Secretária</option>
|
||||||
<option value="medico">Médico</option>
|
<option value="medico">Médico</option>
|
||||||
@ -346,10 +465,15 @@ const FormNovaConsulta = ({ onCancel, patientID }) => {
|
|||||||
|
|
||||||
<section className="informacoes-atendimento-segunda-linha-direita">
|
<section className="informacoes-atendimento-segunda-linha-direita">
|
||||||
|
|
||||||
|
|
||||||
<div className="campo-de-input">
|
<div className="campo-de-input">
|
||||||
<label>Observações</label>
|
<label>Observações</label>
|
||||||
<textarea name="observacoes" rows="4" cols="1"></textarea>
|
<textarea
|
||||||
|
name="observacoes"
|
||||||
|
rows="4"
|
||||||
|
cols="1"
|
||||||
|
value={dadosAtendimento.observacoes}
|
||||||
|
onChange={handleAtendimentoChange}
|
||||||
|
></textarea>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user