From 350e63d692c975576968e72b3b3200f29e335d86 Mon Sep 17 00:00:00 2001 From: Eduarda-SS <137419071+Eduarda-SS@users.noreply.github.com> Date: Wed, 15 Oct 2025 16:50:35 -0300 Subject: [PATCH 1/2] Excessoes: tentativa 1 --- .../AgendarConsulta/FormNovaConsulta.jsx | 234 ++++++++++++++---- 1 file changed, 179 insertions(+), 55 deletions(-) diff --git a/src/components/AgendarConsulta/FormNovaConsulta.jsx b/src/components/AgendarConsulta/FormNovaConsulta.jsx index 435bc8ee..68f72eac 100644 --- a/src/components/AgendarConsulta/FormNovaConsulta.jsx +++ b/src/components/AgendarConsulta/FormNovaConsulta.jsx @@ -5,11 +5,22 @@ import { useState, useEffect } from "react"; const FormNovaConsulta = ({ onCancel, patientID }) => { + const [isModoEmergencia, setIsModoEmergencia] = useState(false); const [selectedFile, setSelectedFile] = useState(null); const [anexos, setAnexos] = useState([]); const [loadingAnexos, setLoadingAnexos] = useState(false); const [paciente, setPaciente] = useState({}) 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(() => { 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) => { e.preventDefault(); - alert("Agendamento salvo!"); + if (isModoEmergencia) { + handleSubmitExcecao(); + } else { + handleSubmitPadrao(); + } }; return ( @@ -259,10 +334,21 @@ const FormNovaConsulta = ({ onCancel, patientID }) => { )}
⚠️ As informações de data e horário serão enviadas como uma exceção fora da grade normal.
+ )} +