Corregir desajuste de zona horaria usando fecha local getLocalToday en lugar de UTC ISO

This commit is contained in:
2026-08-12 02:55:20 +00:00
parent e405ff7a82
commit d49250460b
8 changed files with 58 additions and 49 deletions
+31 -31
View File
@@ -60,7 +60,7 @@ import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts';
import type { Laboratorio, Glucemia, AcidoBase, Cultivo, Paciente, ResultadoLaboratorio, Internacion, Evolucion, Cama, EstudioComplementario, Interconsulta, ATB, Indicacion, MovimientoIndicacion, Pendiente } from '@/types';
import { formatDateDDMMYYYY } from '@/lib/utils';
import { formatDateDDMMYYYY, getLocalToday } from '@/lib/utils';
import { SeccionIndicaciones } from './SeccionIndicaciones';
interface HistoriaClinicaProps {
@@ -692,14 +692,14 @@ function SeccionGlucemias({ glucemias, patientId, internacionId, add, update, de
const [dialog, setDialog] = useState(false);
const [evolDialog, setEvolDialog] = useState(false);
const [edit, setEdit] = useState<Glucemia | null>(null);
const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]);
const [fecha, setFecha] = useState(getLocalToday());
const [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const [valor, setValor] = useState('');
const [correccion, setCorreccion] = useState('');
const reset = () => {
setEdit(null);
setFecha(new Date().toISOString().split('T')[0]);
setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5));
setValor('');
setCorreccion('');
@@ -956,7 +956,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
const [evolDialog, setEvolDialog] = useState(false);
const [edit, setEdit] = useState<Laboratorio | null>(null);
const [obsLab, setObsLab] = useState<Laboratorio | null>(null);
const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]);
const [fecha, setFecha] = useState(getLocalToday());
const [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const [observaciones, setObservaciones] = useState('');
const [hto, setHto] = useState('');
@@ -978,7 +978,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
const [rin, setRin] = useState('');
const [parametroEvolucion, setParametroEvolucion] = useState('');
const [importDialog, setImportDialog] = useState(false);
const [importFecha, setImportFecha] = useState(new Date().toISOString().split('T')[0]);
const [importFecha, setImportFecha] = useState(getLocalToday());
const [importHora, setImportHora] = useState(new Date().toTimeString().slice(0, 5));
const [importTexto, setImportTexto] = useState('');
const [importResultados, setImportResultados] = useState<ResultadoLaboratorio[]>([]);
@@ -1049,7 +1049,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
};
const reset = () => {
setFecha(new Date().toISOString().split('T')[0]);
setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5));
setObservaciones('');
setHto(''); setHb(''); setGb(''); setPlaq('');
@@ -1439,7 +1439,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
setImportResultados([]);
setImportObservaciones('');
setImportAcidoBase(null);
setImportFecha(new Date().toISOString().split('T')[0]);
setImportFecha(getLocalToday());
setImportHora(new Date().toTimeString().slice(0, 5));
};
@@ -1523,7 +1523,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
<Button variant="outline" onClick={() => { setImportFecha(new Date().toISOString().split('T')[0]); setImportHora(new Date().toTimeString().slice(0, 5)); setImportTexto(''); setImportResultados([]); setImportObservaciones(''); setImportDialog(true); }}><FileText className="h-4 w-4 mr-2" />Importar</Button>
<Button variant="outline" onClick={() => { setImportFecha(getLocalToday()); setImportHora(new Date().toTimeString().slice(0, 5)); setImportTexto(''); setImportResultados([]); setImportObservaciones(''); setImportDialog(true); }}><FileText className="h-4 w-4 mr-2" />Importar</Button>
</div>
</div>
<Dialog open={dialog} onOpenChange={setDialog}>
@@ -1901,7 +1901,7 @@ function SeccionEvoluciones({ evos, internacionId, add, update, del, canEdit }:
const [dialog, setDialog] = useState(false);
const [edit, setEdit] = useState<Evolucion | null>(null);
const [evoDetalle, setEvoDetalle] = useState<Evolucion | null>(null);
const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]);
const [fecha, setFecha] = useState(getLocalToday());
const [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const effectiveMedico = getNombreProfesional(currentUser);
const [temperatura, setTemperatura] = useState('');
@@ -1922,7 +1922,7 @@ function SeccionEvoluciones({ evos, internacionId, add, update, del, canEdit }:
const [pendientes, setPendientes] = useState('');
const reset = () => {
setFecha(new Date().toISOString().split('T')[0]);
setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5));
setTemperatura('');
setPresionSistolica('');
@@ -2218,7 +2218,7 @@ function SeccionAcidosBase({ ab, patientId, internacionId, add, update, del, can
const [dialog, setDialog] = useState(false);
const [editDialog, setEditDialog] = useState(false);
const [selected, setSelected] = useState<AcidoBase | null>(null);
const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]);
const [fecha, setFecha] = useState(getLocalToday());
const [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const [ph, setPh] = useState('');
const [pco2, setPco2] = useState('');
@@ -2232,7 +2232,7 @@ function SeccionAcidosBase({ ab, patientId, internacionId, add, update, del, can
const [eabSortAsc, setEabSortAsc] = useState(false);
const reset = () => {
setFecha(new Date().toISOString().split('T')[0]);
setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5));
setPh(''); setPco2(''); setPo2(''); setHco3(''); setBe(''); setSato2(''); setLactato(''); setFio2(''); setInterpretacion('');
setSelected(null);
@@ -2438,18 +2438,18 @@ function SeccionCultivos({ cults, patient, internacionId, add, update, del, canE
const [resDialog, setResDialog] = useState(false);
const [editDialog, setEditDialog] = useState(false);
const [selected, setSelected] = useState<Cultivo | null>(null);
const [fechaToma, setFechaToma] = useState(new Date().toISOString().split('T')[0]);
const [fechaToma, setFechaToma] = useState(getLocalToday());
const [protocolo, setProtocolo] = useState('');
const [tipoMuestra, setTipoMuestra] = useState<Cultivo['tipoMuestra']>('HMCx2');
const [observaciones, setObservaciones] = useState('');
const [fechaResultado, setFechaResultado] = useState(new Date().toISOString().split('T')[0]);
const [fechaResultado, setFechaResultado] = useState(getLocalToday());
const [estadoResultado, setEstadoResultado] = useState<Cultivo['estado']>('Parcial');
const [germen, setGermen] = useState('');
const [sensible, setSensible] = useState('');
const [resistente, setResistente] = useState('');
const reset = () => {
setFechaToma(new Date().toISOString().split('T')[0]);
setFechaToma(getLocalToday());
setProtocolo('');
setTipoMuestra('HMCx2');
setObservaciones('');
@@ -2457,7 +2457,7 @@ function SeccionCultivos({ cults, patient, internacionId, add, update, del, canE
};
const resetRes = () => {
setFechaResultado(new Date().toISOString().split('T')[0]);
setFechaResultado(getLocalToday());
setEstadoResultado('Positivo');
setGermen('');
setSensible('');
@@ -2477,7 +2477,7 @@ function SeccionCultivos({ cults, patient, internacionId, add, update, del, canE
const openDefinitivo = (c: Cultivo) => {
setSelected(c);
setProtocolo(c.protocolo || '');
setFechaResultado(c.fechaResultado || new Date().toISOString().split('T')[0]);
setFechaResultado(c.fechaResultado || getLocalToday());
setEstadoResultado(c.estado === 'Parcial' ? 'Positivo' : c.estado);
setGermen(c.germen || '');
setSensible(c.sensible || '');
@@ -2515,7 +2515,7 @@ function SeccionCultivos({ cults, patient, internacionId, add, update, del, canE
germen,
sensible,
resistente,
fechaResultado: selected.fechaResultado || new Date().toISOString().split('T')[0]
fechaResultado: selected.fechaResultado || getLocalToday()
});
setResDialog(false);
resetRes();
@@ -2725,7 +2725,7 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
}) {
const [dialog, setDialog] = useState(false);
const [filtro, setFiltro] = useState<'todos' | 'internacion'>('internacion');
const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]);
const [fecha, setFecha] = useState(getLocalToday());
const [tipo, setTipo] = useState('');
const [resultado, setResultado] = useState('');
const [edit, setEdit] = useState<EstudioComplementario | null>(null);
@@ -2735,7 +2735,7 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
: estudios;
const reset = () => {
setFecha(new Date().toISOString().split('T')[0]);
setFecha(getLocalToday());
setTipo('');
setResultado('');
setEdit(null);
@@ -2743,7 +2743,7 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
const loadEdit = (e: EstudioComplementario) => {
setEdit(e);
setFecha(e.fecha || new Date().toISOString().split('T')[0]);
setFecha(e.fecha || getLocalToday());
setTipo(e.tipo || '');
setResultado(e.resultado || '');
setDialog(true);
@@ -2873,7 +2873,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
canEdit?: boolean;
}) {
const [dialog, setDialog] = useState(false);
const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]);
const [fecha, setFecha] = useState(getLocalToday());
const [servicioInterconsultado, setServicioInterconsultado] = useState('');
const [motivo, setMotivo] = useState('');
const [respuestaInterconsulta, setRespuestaInterconsulta] = useState('');
@@ -2881,7 +2881,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
const [edit, setEdit] = useState<Interconsulta | null>(null);
const reset = () => {
setFecha(new Date().toISOString().split('T')[0]);
setFecha(getLocalToday());
setServicioInterconsultado('');
setMotivo('');
setRespuestaInterconsulta('');
@@ -2893,7 +2893,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
if (!servicioInterconsultado) return;
const datos: Partial<Interconsulta> = { fecha, servicioInterconsultado, motivo, respuestaInterconsulta };
if (respuestaInterconsulta) {
datos.respuestaFecha = respuestaFecha || new Date().toISOString().split('T')[0];
datos.respuestaFecha = respuestaFecha || getLocalToday();
}
if (edit) {
update(edit.id, datos);
@@ -2906,7 +2906,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
const loadEdit = (ic: Interconsulta) => {
setEdit(ic);
setFecha(ic.fecha || new Date().toISOString().split('T')[0]);
setFecha(ic.fecha || getLocalToday());
setServicioInterconsultado(ic.servicioInterconsultado || '');
setMotivo(ic.motivo || '');
setRespuestaInterconsulta(ic.respuestaInterconsulta || '');
@@ -3048,7 +3048,7 @@ function SeccionATB({ atb, internacionId, pacienteId, add, update, del, canEdit
const [dialog, setDialog] = useState(false);
const [edit, setEdit] = useState<ATB | null>(null);
const [antibiotico, setAntibiotico] = useState('');
const [fechaInicio, setFechaInicio] = useState(new Date().toISOString().split('T')[0]);
const [fechaInicio, setFechaInicio] = useState(getLocalToday());
const [fechaFinalizacion, setFechaFinalizacion] = useState('');
const calcularDias = (inicio: string, fin?: string): number => {
@@ -3061,20 +3061,20 @@ function SeccionATB({ atb, internacionId, pacienteId, add, update, del, canEdit
const reset = () => {
setEdit(null);
setAntibiotico('');
setFechaInicio(new Date().toISOString().split('T')[0]);
setFechaInicio(getLocalToday());
setFechaFinalizacion('');
};
const loadEdit = (a: ATB) => {
setEdit(a);
setAntibiotico(a.antibiotico || '');
setFechaInicio(a.fechaInicio || new Date().toISOString().split('T')[0]);
setFechaInicio(a.fechaInicio || getLocalToday());
setFechaFinalizacion(a.fechaFinalizacion || '');
};
const handleGuardar = () => {
if (!antibiotico.trim() || !fechaInicio) return;
const todayStr = new Date().toISOString().split('T')[0];
const todayStr = getLocalToday();
if (edit) {
// 1. Modificar el antibiótico actual agregando como fecha de finalización la fecha actual en qué se modifica (manteniendo el nombre y fecha de inicio original)
update(edit.id, {
@@ -3271,7 +3271,7 @@ function SeccionPendientes({ pacienteId, internacionId, canEdit }: { pacienteId:
internacionId,
...payload,
estado: 'pendiente',
fechaCreacion: new Date().toISOString().split('T')[0],
fechaCreacion: getLocalToday(),
horaCreacion: new Date().toTimeString().slice(0, 5),
profesional,
});
@@ -3289,7 +3289,7 @@ function SeccionPendientes({ pacienteId, internacionId, canEdit }: { pacienteId:
try {
await actualizarPendiente(p.id, {
estado: nuevoEstado,
fechaRealizado: nuevoEstado === 'realizado' ? new Date().toISOString().split('T')[0] : undefined,
fechaRealizado: nuevoEstado === 'realizado' ? getLocalToday() : undefined,
usuarioRealizado: nuevoEstado === 'realizado' && currentUser ? getNombreProfesional(currentUser) : undefined,
});
toast.success(nuevoEstado === 'realizado' ? 'Marcado como realizado' : 'Marcado como pendiente');