diff --git a/server/server.js b/server/server.js index 9bb16d8..a296592 100644 --- a/server/server.js +++ b/server/server.js @@ -85,6 +85,7 @@ db.exec(` pacienteId TEXT NOT NULL, internacionId TEXT, fecha TEXT NOT NULL, + hora TEXT, tipo TEXT, resultados TEXT, observaciones TEXT, @@ -150,6 +151,12 @@ try { // La columna ya existe } +try { + db.exec("ALTER TABLE laboratorios ADD COLUMN hora TEXT"); +} catch (e) { + // La columna ya existe +} + const app = express(); app.use(cors()); app.use(express.json({ limit: '50mb' })); @@ -254,9 +261,9 @@ app.put('/api/state', (req, res) => { } if (state.laboratorios?.length) { - const stmt = db.prepare('INSERT INTO laboratorios (id, pacienteId, fecha, tipo, resultados, observaciones) VALUES (?, ?, ?, ?, ?, ?)'); + const stmt = db.prepare('INSERT INTO laboratorios (id, pacienteId, fecha, hora, tipo, resultados, observaciones) VALUES (?, ?, ?, ?, ?, ?, ?)'); for (const l of state.laboratorios) { - stmt.run(l.id, l.pacienteId, l.fecha, l.tipo, JSON.stringify(l.resultados), l.observaciones); + stmt.run(l.id, l.pacienteId, l.fecha, l.hora || null, l.tipo, JSON.stringify(l.resultados), l.observaciones || null); } } diff --git a/src/sections/HistoriaClinica.tsx b/src/sections/HistoriaClinica.tsx index adcc4b3..4e129d2 100644 --- a/src/sections/HistoriaClinica.tsx +++ b/src/sections/HistoriaClinica.tsx @@ -572,6 +572,7 @@ function SeccionLaboratorios({ lab, patientId, add, update, del, addAcidoBase }: const [edit, setEdit] = useState(null); const [obsLab, setObsLab] = useState(null); const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]); + const [hora, setHora] = useState(new Date().toTimeString().slice(0, 5)); const [observaciones, setObservaciones] = useState(''); const [resultados, setResultados] = useState([]); const [hto, setHto] = useState(''); @@ -668,6 +669,7 @@ return res; const reset = () => { setFecha(new Date().toISOString().split('T')[0]); + setHora(new Date().toTimeString().slice(0, 5)); setObservaciones(''); setHto(''); setHb(''); setGb(''); setPlaq(''); setGluc(''); setUrea(''); setCreat(''); @@ -851,9 +853,11 @@ for (const linea of lineas) { addAcidoBase(importAcidoBase); } + const horaActual = new Date().toTimeString().slice(0, 5); add({ pacienteId: patientId, fecha: importFecha, + hora: horaActual, resultados: importResultados, observaciones: importObservaciones }); @@ -869,6 +873,7 @@ for (const linea of lineas) { const loadEdit = (l: Laboratorio) => { setEdit(l); setFecha(l.fecha); + setHora(l.hora || ''); setObservaciones(l.observaciones || ''); setHto(getValorRaw(l, 'Hematocrito')); setHb(getValorRaw(l, 'Hemoglobina')); @@ -893,16 +898,18 @@ for (const linea of lineas) { const handleGuardar = () => { const resultadosLaboratorio = buildResultados(); if (edit) { - update(edit.id, { fecha, resultados: resultadosLaboratorio, observaciones }); + update(edit.id, { fecha, hora, resultados: resultadosLaboratorio, observaciones }); } else { - add({ pacienteId: patientId || '', fecha, resultados: resultadosLaboratorio, observaciones }); + add({ pacienteId: patientId || '', fecha, hora, resultados: resultadosLaboratorio, observaciones }); } setDialog(false); reset(); }; const labs = lab.filter(l => l.pacienteId === patientId).sort((a, b) => { - const diff = new Date(b.fecha).getTime() - new Date(a.fecha).getTime(); + const dateA = new Date(a.fecha + 'T' + (a.hora || '00:00')).getTime(); + const dateB = new Date(b.fecha + 'T' + (b.hora || '00:00')).getTime(); + const diff = dateB - dateA; return labSortAsc ? -diff : diff; }); @@ -1172,7 +1179,7 @@ for (const linea of lineas) { {labs.map(l => ( - {l.fecha} + {l.fecha} {l.hora || ''} {getValor(l, 'Hematocrito')} {getValor(l, 'Hemoglobina')} {getValor(l, 'Leucocitos')} diff --git a/src/types/index.ts b/src/types/index.ts index c802883..5637f1b 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -96,6 +96,7 @@ export interface Laboratorio { pacienteId: string; internacionId?: string; fecha: string; + hora: string; tipo?: 'Hemograma' | 'Química sanguínea' | 'Urianálisis' | 'Coagulación' | 'Microbiología' | 'Inmunología' | 'Otros'; resultados: ResultadoLaboratorio[]; observaciones?: string;