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
+3 -3
View File
@@ -1,6 +1,6 @@
import { useState, useEffect, useCallback } from 'react'; import { useState, useEffect, useCallback } from 'react';
import { toast } from 'sonner'; import { toast } from 'sonner';
import { getNombreProfesional, isCamaFueraDeGrupo, computeSector, sortCamas } from '@/lib/utils'; import { getNombreProfesional, isCamaFueraDeGrupo, computeSector, sortCamas, getLocalToday } from '@/lib/utils';
import type { import type {
Paciente, Paciente,
Cama, Cama,
@@ -255,7 +255,7 @@ export function useHospitalStore() {
const nuevoPaciente: Paciente = { const nuevoPaciente: Paciente = {
...paciente, ...paciente,
id: generateUUID(), id: generateUUID(),
fechaRegistro: new Date().toISOString().split('T')[0], fechaRegistro: getLocalToday(),
}; };
try { try {
await apiCall('POST', '/pacientes', nuevoPaciente); await apiCall('POST', '/pacientes', nuevoPaciente);
@@ -1343,7 +1343,7 @@ const actualizarInternacion = useCallback(async (internacionId: string, datos: P
const nuevoPendiente: Pendiente = { const nuevoPendiente: Pendiente = {
...datos, ...datos,
id: generateUUID(), id: generateUUID(),
fechaCreacion: datos.fechaCreacion || new Date().toISOString().split('T')[0], fechaCreacion: datos.fechaCreacion || getLocalToday(),
horaCreacion: datos.horaCreacion || new Date().toTimeString().slice(0, 5), horaCreacion: datos.horaCreacion || new Date().toTimeString().slice(0, 5),
estado: datos.estado || 'pendiente', estado: datos.estado || 'pendiente',
prioridad: datos.prioridad || 'media', prioridad: datos.prioridad || 'media',
+8
View File
@@ -14,6 +14,14 @@ export function formatDateDDMMYYYY(dateString: string): string {
return `${day}-${month}-${year}`; return `${day}-${month}-${year}`;
} }
export function getLocalToday(): string {
const d = new Date();
const year = d.getFullYear();
const month = String(d.getMonth() + 1).padStart(2, '0');
const day = String(d.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
export function getNombreProfesional(user?: Usuario | null): string { export function getNombreProfesional(user?: Usuario | null): string {
if (!user) return 'Admin'; if (!user) return 'Admin';
const apellido = user.apellido?.trim() || ''; const apellido = user.apellido?.trim() || '';
+3 -2
View File
@@ -7,6 +7,7 @@ import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label'; import { Label } from '@/components/ui/label';
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog';
import type { AcidoBase, Paciente } from '@/types'; import type { AcidoBase, Paciente } from '@/types';
import { getLocalToday } from '@/lib/utils';
interface AcidoBaseProps { interface AcidoBaseProps {
acidosBase: AcidoBase[]; acidosBase: AcidoBase[];
@@ -39,7 +40,7 @@ export function AcidoBaseSection({
// Formulario // Formulario
const [pacienteSeleccionado, setPacienteSeleccionado] = useState(''); const [pacienteSeleccionado, setPacienteSeleccionado] = useState('');
const [busquedaPaciente, setBusquedaPaciente] = useState(''); const [busquedaPaciente, setBusquedaPaciente] = useState('');
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 [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const [ph, setPh] = useState(''); const [ph, setPh] = useState('');
const [pco2, setPco2] = useState(''); const [pco2, setPco2] = useState('');
@@ -53,7 +54,7 @@ export function AcidoBaseSection({
const resetFormulario = () => { const resetFormulario = () => {
setPacienteSeleccionado(''); setPacienteSeleccionado('');
setBusquedaPaciente(''); setBusquedaPaciente('');
setFecha(new Date().toISOString().split('T')[0]); setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5)); setHora(new Date().toTimeString().slice(0, 5));
setPh(''); setPh('');
setPco2(''); setPco2('');
+3 -3
View File
@@ -11,7 +11,7 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigge
import { toast } from 'sonner'; import { toast } from 'sonner';
import type { Evolucion, Internacion, Paciente, Cama, SignosVitales, ExamenFisico } from '@/types'; import type { Evolucion, Internacion, Paciente, Cama, SignosVitales, ExamenFisico } from '@/types';
import { useHospitalStore } from '@/hooks/useHospitalStore'; import { useHospitalStore } from '@/hooks/useHospitalStore';
import { getNombreProfesional } from '@/lib/utils'; import { getNombreProfesional, getLocalToday } from '@/lib/utils';
interface EvolucionesProps { interface EvolucionesProps {
@@ -46,7 +46,7 @@ export function Evoluciones({
const [evolucionDetalle, setEvolucionDetalle] = useState<Evolucion | null>(null); const [evolucionDetalle, setEvolucionDetalle] = useState<Evolucion | null>(null);
const [evolucionEditando, setEvolucionEditando] = useState<Evolucion | null>(null); const [evolucionEditando, setEvolucionEditando] = 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 [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const effectiveMedico = getNombreProfesional(currentUser); const effectiveMedico = getNombreProfesional(currentUser);
@@ -68,7 +68,7 @@ export function Evoluciones({
const [pendientes, setPendientes] = useState(''); const [pendientes, setPendientes] = useState('');
const resetFormulario = () => { const resetFormulario = () => {
setFecha(new Date().toISOString().split('T')[0]); setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5)); setHora(new Date().toTimeString().slice(0, 5));
setTemperatura(''); setTemperatura('');
setPresionSistolica(''); setPresionSistolica('');
+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 { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts'; 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 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'; import { SeccionIndicaciones } from './SeccionIndicaciones';
interface HistoriaClinicaProps { interface HistoriaClinicaProps {
@@ -692,14 +692,14 @@ function SeccionGlucemias({ glucemias, patientId, internacionId, add, update, de
const [dialog, setDialog] = useState(false); const [dialog, setDialog] = useState(false);
const [evolDialog, setEvolDialog] = useState(false); const [evolDialog, setEvolDialog] = useState(false);
const [edit, setEdit] = useState<Glucemia | null>(null); 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 [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const [valor, setValor] = useState(''); const [valor, setValor] = useState('');
const [correccion, setCorreccion] = useState(''); const [correccion, setCorreccion] = useState('');
const reset = () => { const reset = () => {
setEdit(null); setEdit(null);
setFecha(new Date().toISOString().split('T')[0]); setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5)); setHora(new Date().toTimeString().slice(0, 5));
setValor(''); setValor('');
setCorreccion(''); setCorreccion('');
@@ -956,7 +956,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
const [evolDialog, setEvolDialog] = useState(false); const [evolDialog, setEvolDialog] = useState(false);
const [edit, setEdit] = useState<Laboratorio | null>(null); const [edit, setEdit] = useState<Laboratorio | null>(null);
const [obsLab, setObsLab] = 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 [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const [observaciones, setObservaciones] = useState(''); const [observaciones, setObservaciones] = useState('');
const [hto, setHto] = useState(''); const [hto, setHto] = useState('');
@@ -978,7 +978,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
const [rin, setRin] = useState(''); const [rin, setRin] = useState('');
const [parametroEvolucion, setParametroEvolucion] = useState(''); const [parametroEvolucion, setParametroEvolucion] = useState('');
const [importDialog, setImportDialog] = useState(false); 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 [importHora, setImportHora] = useState(new Date().toTimeString().slice(0, 5));
const [importTexto, setImportTexto] = useState(''); const [importTexto, setImportTexto] = useState('');
const [importResultados, setImportResultados] = useState<ResultadoLaboratorio[]>([]); const [importResultados, setImportResultados] = useState<ResultadoLaboratorio[]>([]);
@@ -1049,7 +1049,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
}; };
const reset = () => { const reset = () => {
setFecha(new Date().toISOString().split('T')[0]); setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5)); setHora(new Date().toTimeString().slice(0, 5));
setObservaciones(''); setObservaciones('');
setHto(''); setHb(''); setGb(''); setPlaq(''); setHto(''); setHb(''); setGb(''); setPlaq('');
@@ -1439,7 +1439,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
setImportResultados([]); setImportResultados([]);
setImportObservaciones(''); setImportObservaciones('');
setImportAcidoBase(null); setImportAcidoBase(null);
setImportFecha(new Date().toISOString().split('T')[0]); setImportFecha(getLocalToday());
setImportHora(new Date().toTimeString().slice(0, 5)); setImportHora(new Date().toTimeString().slice(0, 5));
}; };
@@ -1523,7 +1523,7 @@ function SeccionLaboratorios({ lab, patientId, internacionId, add, update, del,
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </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>
</div> </div>
<Dialog open={dialog} onOpenChange={setDialog}> <Dialog open={dialog} onOpenChange={setDialog}>
@@ -1901,7 +1901,7 @@ function SeccionEvoluciones({ evos, internacionId, add, update, del, canEdit }:
const [dialog, setDialog] = useState(false); const [dialog, setDialog] = useState(false);
const [edit, setEdit] = useState<Evolucion | null>(null); const [edit, setEdit] = useState<Evolucion | null>(null);
const [evoDetalle, setEvoDetalle] = 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 [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const effectiveMedico = getNombreProfesional(currentUser); const effectiveMedico = getNombreProfesional(currentUser);
const [temperatura, setTemperatura] = useState(''); const [temperatura, setTemperatura] = useState('');
@@ -1922,7 +1922,7 @@ function SeccionEvoluciones({ evos, internacionId, add, update, del, canEdit }:
const [pendientes, setPendientes] = useState(''); const [pendientes, setPendientes] = useState('');
const reset = () => { const reset = () => {
setFecha(new Date().toISOString().split('T')[0]); setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5)); setHora(new Date().toTimeString().slice(0, 5));
setTemperatura(''); setTemperatura('');
setPresionSistolica(''); setPresionSistolica('');
@@ -2218,7 +2218,7 @@ function SeccionAcidosBase({ ab, patientId, internacionId, add, update, del, can
const [dialog, setDialog] = useState(false); const [dialog, setDialog] = useState(false);
const [editDialog, setEditDialog] = useState(false); const [editDialog, setEditDialog] = useState(false);
const [selected, setSelected] = useState<AcidoBase | null>(null); 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 [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const [ph, setPh] = useState(''); const [ph, setPh] = useState('');
const [pco2, setPco2] = useState(''); const [pco2, setPco2] = useState('');
@@ -2232,7 +2232,7 @@ function SeccionAcidosBase({ ab, patientId, internacionId, add, update, del, can
const [eabSortAsc, setEabSortAsc] = useState(false); const [eabSortAsc, setEabSortAsc] = useState(false);
const reset = () => { const reset = () => {
setFecha(new Date().toISOString().split('T')[0]); setFecha(getLocalToday());
setHora(new Date().toTimeString().slice(0, 5)); setHora(new Date().toTimeString().slice(0, 5));
setPh(''); setPco2(''); setPo2(''); setHco3(''); setBe(''); setSato2(''); setLactato(''); setFio2(''); setInterpretacion(''); setPh(''); setPco2(''); setPo2(''); setHco3(''); setBe(''); setSato2(''); setLactato(''); setFio2(''); setInterpretacion('');
setSelected(null); setSelected(null);
@@ -2438,18 +2438,18 @@ function SeccionCultivos({ cults, patient, internacionId, add, update, del, canE
const [resDialog, setResDialog] = useState(false); const [resDialog, setResDialog] = useState(false);
const [editDialog, setEditDialog] = useState(false); const [editDialog, setEditDialog] = useState(false);
const [selected, setSelected] = useState<Cultivo | null>(null); 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 [protocolo, setProtocolo] = useState('');
const [tipoMuestra, setTipoMuestra] = useState<Cultivo['tipoMuestra']>('HMCx2'); const [tipoMuestra, setTipoMuestra] = useState<Cultivo['tipoMuestra']>('HMCx2');
const [observaciones, setObservaciones] = useState(''); 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 [estadoResultado, setEstadoResultado] = useState<Cultivo['estado']>('Parcial');
const [germen, setGermen] = useState(''); const [germen, setGermen] = useState('');
const [sensible, setSensible] = useState(''); const [sensible, setSensible] = useState('');
const [resistente, setResistente] = useState(''); const [resistente, setResistente] = useState('');
const reset = () => { const reset = () => {
setFechaToma(new Date().toISOString().split('T')[0]); setFechaToma(getLocalToday());
setProtocolo(''); setProtocolo('');
setTipoMuestra('HMCx2'); setTipoMuestra('HMCx2');
setObservaciones(''); setObservaciones('');
@@ -2457,7 +2457,7 @@ function SeccionCultivos({ cults, patient, internacionId, add, update, del, canE
}; };
const resetRes = () => { const resetRes = () => {
setFechaResultado(new Date().toISOString().split('T')[0]); setFechaResultado(getLocalToday());
setEstadoResultado('Positivo'); setEstadoResultado('Positivo');
setGermen(''); setGermen('');
setSensible(''); setSensible('');
@@ -2477,7 +2477,7 @@ function SeccionCultivos({ cults, patient, internacionId, add, update, del, canE
const openDefinitivo = (c: Cultivo) => { const openDefinitivo = (c: Cultivo) => {
setSelected(c); setSelected(c);
setProtocolo(c.protocolo || ''); setProtocolo(c.protocolo || '');
setFechaResultado(c.fechaResultado || new Date().toISOString().split('T')[0]); setFechaResultado(c.fechaResultado || getLocalToday());
setEstadoResultado(c.estado === 'Parcial' ? 'Positivo' : c.estado); setEstadoResultado(c.estado === 'Parcial' ? 'Positivo' : c.estado);
setGermen(c.germen || ''); setGermen(c.germen || '');
setSensible(c.sensible || ''); setSensible(c.sensible || '');
@@ -2515,7 +2515,7 @@ function SeccionCultivos({ cults, patient, internacionId, add, update, del, canE
germen, germen,
sensible, sensible,
resistente, resistente,
fechaResultado: selected.fechaResultado || new Date().toISOString().split('T')[0] fechaResultado: selected.fechaResultado || getLocalToday()
}); });
setResDialog(false); setResDialog(false);
resetRes(); resetRes();
@@ -2725,7 +2725,7 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
}) { }) {
const [dialog, setDialog] = useState(false); const [dialog, setDialog] = useState(false);
const [filtro, setFiltro] = useState<'todos' | 'internacion'>('internacion'); 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 [tipo, setTipo] = useState('');
const [resultado, setResultado] = useState(''); const [resultado, setResultado] = useState('');
const [edit, setEdit] = useState<EstudioComplementario | null>(null); const [edit, setEdit] = useState<EstudioComplementario | null>(null);
@@ -2735,7 +2735,7 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
: estudios; : estudios;
const reset = () => { const reset = () => {
setFecha(new Date().toISOString().split('T')[0]); setFecha(getLocalToday());
setTipo(''); setTipo('');
setResultado(''); setResultado('');
setEdit(null); setEdit(null);
@@ -2743,7 +2743,7 @@ function SeccionEstudiosComplementarios({ estudios, internacionId, pacienteId, a
const loadEdit = (e: EstudioComplementario) => { const loadEdit = (e: EstudioComplementario) => {
setEdit(e); setEdit(e);
setFecha(e.fecha || new Date().toISOString().split('T')[0]); setFecha(e.fecha || getLocalToday());
setTipo(e.tipo || ''); setTipo(e.tipo || '');
setResultado(e.resultado || ''); setResultado(e.resultado || '');
setDialog(true); setDialog(true);
@@ -2873,7 +2873,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
canEdit?: boolean; canEdit?: boolean;
}) { }) {
const [dialog, setDialog] = useState(false); 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 [servicioInterconsultado, setServicioInterconsultado] = useState('');
const [motivo, setMotivo] = useState(''); const [motivo, setMotivo] = useState('');
const [respuestaInterconsulta, setRespuestaInterconsulta] = useState(''); const [respuestaInterconsulta, setRespuestaInterconsulta] = useState('');
@@ -2881,7 +2881,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
const [edit, setEdit] = useState<Interconsulta | null>(null); const [edit, setEdit] = useState<Interconsulta | null>(null);
const reset = () => { const reset = () => {
setFecha(new Date().toISOString().split('T')[0]); setFecha(getLocalToday());
setServicioInterconsultado(''); setServicioInterconsultado('');
setMotivo(''); setMotivo('');
setRespuestaInterconsulta(''); setRespuestaInterconsulta('');
@@ -2893,7 +2893,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
if (!servicioInterconsultado) return; if (!servicioInterconsultado) return;
const datos: Partial<Interconsulta> = { fecha, servicioInterconsultado, motivo, respuestaInterconsulta }; const datos: Partial<Interconsulta> = { fecha, servicioInterconsultado, motivo, respuestaInterconsulta };
if (respuestaInterconsulta) { if (respuestaInterconsulta) {
datos.respuestaFecha = respuestaFecha || new Date().toISOString().split('T')[0]; datos.respuestaFecha = respuestaFecha || getLocalToday();
} }
if (edit) { if (edit) {
update(edit.id, datos); update(edit.id, datos);
@@ -2906,7 +2906,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
const loadEdit = (ic: Interconsulta) => { const loadEdit = (ic: Interconsulta) => {
setEdit(ic); setEdit(ic);
setFecha(ic.fecha || new Date().toISOString().split('T')[0]); setFecha(ic.fecha || getLocalToday());
setServicioInterconsultado(ic.servicioInterconsultado || ''); setServicioInterconsultado(ic.servicioInterconsultado || '');
setMotivo(ic.motivo || ''); setMotivo(ic.motivo || '');
setRespuestaInterconsulta(ic.respuestaInterconsulta || ''); setRespuestaInterconsulta(ic.respuestaInterconsulta || '');
@@ -3048,7 +3048,7 @@ function SeccionATB({ atb, internacionId, pacienteId, add, update, del, canEdit
const [dialog, setDialog] = useState(false); const [dialog, setDialog] = useState(false);
const [edit, setEdit] = useState<ATB | null>(null); const [edit, setEdit] = useState<ATB | null>(null);
const [antibiotico, setAntibiotico] = useState(''); const [antibiotico, setAntibiotico] = useState('');
const [fechaInicio, setFechaInicio] = useState(new Date().toISOString().split('T')[0]); const [fechaInicio, setFechaInicio] = useState(getLocalToday());
const [fechaFinalizacion, setFechaFinalizacion] = useState(''); const [fechaFinalizacion, setFechaFinalizacion] = useState('');
const calcularDias = (inicio: string, fin?: string): number => { const calcularDias = (inicio: string, fin?: string): number => {
@@ -3061,20 +3061,20 @@ function SeccionATB({ atb, internacionId, pacienteId, add, update, del, canEdit
const reset = () => { const reset = () => {
setEdit(null); setEdit(null);
setAntibiotico(''); setAntibiotico('');
setFechaInicio(new Date().toISOString().split('T')[0]); setFechaInicio(getLocalToday());
setFechaFinalizacion(''); setFechaFinalizacion('');
}; };
const loadEdit = (a: ATB) => { const loadEdit = (a: ATB) => {
setEdit(a); setEdit(a);
setAntibiotico(a.antibiotico || ''); setAntibiotico(a.antibiotico || '');
setFechaInicio(a.fechaInicio || new Date().toISOString().split('T')[0]); setFechaInicio(a.fechaInicio || getLocalToday());
setFechaFinalizacion(a.fechaFinalizacion || ''); setFechaFinalizacion(a.fechaFinalizacion || '');
}; };
const handleGuardar = () => { const handleGuardar = () => {
if (!antibiotico.trim() || !fechaInicio) return; if (!antibiotico.trim() || !fechaInicio) return;
const todayStr = new Date().toISOString().split('T')[0]; const todayStr = getLocalToday();
if (edit) { 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) // 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, { update(edit.id, {
@@ -3271,7 +3271,7 @@ function SeccionPendientes({ pacienteId, internacionId, canEdit }: { pacienteId:
internacionId, internacionId,
...payload, ...payload,
estado: 'pendiente', estado: 'pendiente',
fechaCreacion: new Date().toISOString().split('T')[0], fechaCreacion: getLocalToday(),
horaCreacion: new Date().toTimeString().slice(0, 5), horaCreacion: new Date().toTimeString().slice(0, 5),
profesional, profesional,
}); });
@@ -3289,7 +3289,7 @@ function SeccionPendientes({ pacienteId, internacionId, canEdit }: { pacienteId:
try { try {
await actualizarPendiente(p.id, { await actualizarPendiente(p.id, {
estado: nuevoEstado, estado: nuevoEstado,
fechaRealizado: nuevoEstado === 'realizado' ? new Date().toISOString().split('T')[0] : undefined, fechaRealizado: nuevoEstado === 'realizado' ? getLocalToday() : undefined,
usuarioRealizado: nuevoEstado === 'realizado' && currentUser ? getNombreProfesional(currentUser) : undefined, usuarioRealizado: nuevoEstado === 'realizado' && currentUser ? getNombreProfesional(currentUser) : undefined,
}); });
toast.success(nuevoEstado === 'realizado' ? 'Marcado como realizado' : 'Marcado como pendiente'); toast.success(nuevoEstado === 'realizado' ? 'Marcado como realizado' : 'Marcado como pendiente');
+2 -2
View File
@@ -11,7 +11,7 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu';
import { toast } from 'sonner'; import { toast } from 'sonner';
import type { Internacion, Paciente, Cama, Grupo, Evolucion, Laboratorio, Cultivo } from '@/types'; import type { Internacion, Paciente, Cama, Grupo, Evolucion, Laboratorio, Cultivo } from '@/types';
import { formatDateDDMMYYYY, getNombreProfesional, sortCamas } from '@/lib/utils'; import { formatDateDDMMYYYY, getNombreProfesional, sortCamas, getLocalToday } from '@/lib/utils';
import { useHospitalStore } from '@/hooks/useHospitalStore'; import { useHospitalStore } from '@/hooks/useHospitalStore';
interface InternacionesProps { interface InternacionesProps {
@@ -202,7 +202,7 @@ export function Internaciones({
const abrirDialogoEgreso = (internacion: Internacion) => { const abrirDialogoEgreso = (internacion: Internacion) => {
setInternacionSeleccionada(internacion); setInternacionSeleccionada(internacion);
setFechaEgreso(new Date().toISOString().split('T')[0]); setFechaEgreso(getLocalToday());
setDialogoEgresoAbierto(true); setDialogoEgresoAbierto(true);
}; };
+2 -2
View File
@@ -19,7 +19,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';
import { toast } from 'sonner'; import { toast } from 'sonner';
import type { Pendiente, Internacion, Paciente, Cama } from '@/types'; import type { Pendiente, Internacion, Paciente, Cama } from '@/types';
import { formatDateDDMMYYYY, getNombreProfesional } from '@/lib/utils'; import { formatDateDDMMYYYY, getNombreProfesional, getLocalToday } from '@/lib/utils';
import { useHospitalStore } from '@/hooks/useHospitalStore'; import { useHospitalStore } from '@/hooks/useHospitalStore';
interface PendientesSalaProps { interface PendientesSalaProps {
@@ -115,7 +115,7 @@ export function PendientesSala({
try { try {
await onActualizarPendiente(p.id, { await onActualizarPendiente(p.id, {
estado: nuevoEstado, estado: nuevoEstado,
fechaRealizado: nuevoEstado === 'realizado' ? new Date().toISOString().split('T')[0] : undefined, fechaRealizado: nuevoEstado === 'realizado' ? getLocalToday() : undefined,
usuarioRealizado: nuevoEstado === 'realizado' && currentUser ? getNombreProfesional(currentUser) : undefined, usuarioRealizado: nuevoEstado === 'realizado' && currentUser ? getNombreProfesional(currentUser) : undefined,
}); });
toast.success(nuevoEstado === 'realizado' ? 'Marcado como realizado' : 'Marcado como pendiente'); toast.success(nuevoEstado === 'realizado' ? 'Marcado como realizado' : 'Marcado como pendiente');
+6 -6
View File
@@ -11,7 +11,7 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@
import { Plus, Pencil, Trash2, X } from 'lucide-react'; import { Plus, Pencil, Trash2, X } from 'lucide-react';
import type { Indicacion, IndicacionTipo, ViaAdministracion, TipoPlanHidratacion, TipoInsulina, ATB } from '@/types'; import type { Indicacion, IndicacionTipo, ViaAdministracion, TipoPlanHidratacion, TipoInsulina, ATB } from '@/types';
import { useHospitalStore } from '@/hooks/useHospitalStore'; import { useHospitalStore } from '@/hooks/useHospitalStore';
import { getNombreProfesional } from '@/lib/utils'; import { getNombreProfesional, getLocalToday } from '@/lib/utils';
export function SeccionIndicaciones({ recomendaciones, internacionId, pacienteId, add, update, del, movimientos, onAgregarMovimiento, canEdit, atbList = [], addATB, updateATB }: { export function SeccionIndicaciones({ recomendaciones, internacionId, pacienteId, add, update, del, movimientos, onAgregarMovimiento, canEdit, atbList = [], addATB, updateATB }: {
recomendaciones: Indicacion[]; recomendaciones: Indicacion[];
@@ -142,7 +142,7 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, pacienteId
tipo, tipo,
estado: 'Activa', estado: 'Activa',
medicoCrea: effectiveMedico, medicoCrea: effectiveMedico,
fechaCrea: new Date().toISOString().split('T')[0], fechaCrea: getLocalToday(),
}; };
if (tipo === 'Farmacologica' || tipo === 'Farmacologica Profilactica' || tipo === 'Farmacologica Antibiótico') { if (tipo === 'Farmacologica' || tipo === 'Farmacologica Profilactica' || tipo === 'Farmacologica Antibiótico') {
@@ -170,7 +170,7 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, pacienteId
} }
const now = new Date(); const now = new Date();
const fecha = now.toISOString().split('T')[0] + ' ' + now.toTimeString().split(' ')[0].substring(0, 5); const fecha = getLocalToday() + ' ' + now.toTimeString().split(' ')[0].substring(0, 5);
if (edit) { if (edit) {
if (edit.tipo === 'Farmacologica Antibiótico' && updateATB && addATB && atbList && pacienteId) { if (edit.tipo === 'Farmacologica Antibiótico' && updateATB && addATB && atbList && pacienteId) {
const oldDrug = edit.droga || ''; const oldDrug = edit.droga || '';
@@ -182,7 +182,7 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, pacienteId
!a.fechaFinalizacion !a.fechaFinalizacion
); );
if (activeATB) { if (activeATB) {
const todayStr = now.toISOString().split('T')[0]; const todayStr = getLocalToday();
try { try {
await updateATB(activeATB.id, { fechaFinalizacion: todayStr }); await updateATB(activeATB.id, { fechaFinalizacion: todayStr });
await addATB({ await addATB({
@@ -241,7 +241,7 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, pacienteId
const handleSuspender = async (i: Indicacion, suspendioMedico: string) => { const handleSuspender = async (i: Indicacion, suspendioMedico: string) => {
const now = new Date(); const now = new Date();
const fecha = now.toISOString().split('T')[0] + ' ' + now.toTimeString().split(' ')[0].substring(0, 5); const fecha = getLocalToday() + ' ' + now.toTimeString().split(' ')[0].substring(0, 5);
try { try {
if (onAgregarMovimiento) { if (onAgregarMovimiento) {
await onAgregarMovimiento({ await onAgregarMovimiento({
@@ -255,7 +255,7 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, pacienteId
} }
if (i.tipo === 'Farmacologica Antibiótico' && updateATB && atbList) { if (i.tipo === 'Farmacologica Antibiótico' && updateATB && atbList) {
const fechaFin = now.toISOString().split('T')[0]; const fechaFin = getLocalToday();
const activeATB = atbList.find(a => const activeATB = atbList.find(a =>
a.internacionId === internacionId && a.internacionId === internacionId &&
a.antibiotico.toLowerCase() === (i.droga || '').toLowerCase() && a.antibiotico.toLowerCase() === (i.droga || '').toLowerCase() &&