Agregar hora a laboratorios: campo, sort, display

This commit is contained in:
2026-04-16 14:49:49 -03:00
parent 4be83f58e3
commit 143b9f21de
3 changed files with 21 additions and 6 deletions
+9 -2
View File
@@ -85,6 +85,7 @@ db.exec(`
pacienteId TEXT NOT NULL, pacienteId TEXT NOT NULL,
internacionId TEXT, internacionId TEXT,
fecha TEXT NOT NULL, fecha TEXT NOT NULL,
hora TEXT,
tipo TEXT, tipo TEXT,
resultados TEXT, resultados TEXT,
observaciones TEXT, observaciones TEXT,
@@ -150,6 +151,12 @@ try {
// La columna ya existe // La columna ya existe
} }
try {
db.exec("ALTER TABLE laboratorios ADD COLUMN hora TEXT");
} catch (e) {
// La columna ya existe
}
const app = express(); const app = express();
app.use(cors()); app.use(cors());
app.use(express.json({ limit: '50mb' })); app.use(express.json({ limit: '50mb' }));
@@ -254,9 +261,9 @@ app.put('/api/state', (req, res) => {
} }
if (state.laboratorios?.length) { 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) { 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);
} }
} }
+11 -4
View File
@@ -572,6 +572,7 @@ function SeccionLaboratorios({ lab, patientId, add, update, del, addAcidoBase }:
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(new Date().toISOString().split('T')[0]);
const [hora, setHora] = useState(new Date().toTimeString().slice(0, 5));
const [observaciones, setObservaciones] = useState(''); const [observaciones, setObservaciones] = useState('');
const [resultados, setResultados] = useState<ResultadoLaboratorio[]>([]); const [resultados, setResultados] = useState<ResultadoLaboratorio[]>([]);
const [hto, setHto] = useState(''); const [hto, setHto] = useState('');
@@ -668,6 +669,7 @@ return res;
const reset = () => { const reset = () => {
setFecha(new Date().toISOString().split('T')[0]); setFecha(new Date().toISOString().split('T')[0]);
setHora(new Date().toTimeString().slice(0, 5));
setObservaciones(''); setObservaciones('');
setHto(''); setHb(''); setGb(''); setPlaq(''); setHto(''); setHb(''); setGb(''); setPlaq('');
setGluc(''); setUrea(''); setCreat(''); setGluc(''); setUrea(''); setCreat('');
@@ -851,9 +853,11 @@ for (const linea of lineas) {
addAcidoBase(importAcidoBase); addAcidoBase(importAcidoBase);
} }
const horaActual = new Date().toTimeString().slice(0, 5);
add({ add({
pacienteId: patientId, pacienteId: patientId,
fecha: importFecha, fecha: importFecha,
hora: horaActual,
resultados: importResultados, resultados: importResultados,
observaciones: importObservaciones observaciones: importObservaciones
}); });
@@ -869,6 +873,7 @@ for (const linea of lineas) {
const loadEdit = (l: Laboratorio) => { const loadEdit = (l: Laboratorio) => {
setEdit(l); setEdit(l);
setFecha(l.fecha); setFecha(l.fecha);
setHora(l.hora || '');
setObservaciones(l.observaciones || ''); setObservaciones(l.observaciones || '');
setHto(getValorRaw(l, 'Hematocrito')); setHto(getValorRaw(l, 'Hematocrito'));
setHb(getValorRaw(l, 'Hemoglobina')); setHb(getValorRaw(l, 'Hemoglobina'));
@@ -893,16 +898,18 @@ for (const linea of lineas) {
const handleGuardar = () => { const handleGuardar = () => {
const resultadosLaboratorio = buildResultados(); const resultadosLaboratorio = buildResultados();
if (edit) { if (edit) {
update(edit.id, { fecha, resultados: resultadosLaboratorio, observaciones }); update(edit.id, { fecha, hora, resultados: resultadosLaboratorio, observaciones });
} else { } else {
add({ pacienteId: patientId || '', fecha, resultados: resultadosLaboratorio, observaciones }); add({ pacienteId: patientId || '', fecha, hora, resultados: resultadosLaboratorio, observaciones });
} }
setDialog(false); setDialog(false);
reset(); reset();
}; };
const labs = lab.filter(l => l.pacienteId === patientId).sort((a, b) => { 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; return labSortAsc ? -diff : diff;
}); });
@@ -1172,7 +1179,7 @@ for (const linea of lineas) {
<TableBody> <TableBody>
{labs.map(l => ( {labs.map(l => (
<TableRow key={l.id}> <TableRow key={l.id}>
<TableCell>{l.fecha}</TableCell> <TableCell>{l.fecha} {l.hora || ''}</TableCell>
<TableCell className={getValorStyle(l, 'Hematocrito')}>{getValor(l, 'Hematocrito')}</TableCell> <TableCell className={getValorStyle(l, 'Hematocrito')}>{getValor(l, 'Hematocrito')}</TableCell>
<TableCell className={getValorStyle(l, 'Hemoglobina')}>{getValor(l, 'Hemoglobina')}</TableCell> <TableCell className={getValorStyle(l, 'Hemoglobina')}>{getValor(l, 'Hemoglobina')}</TableCell>
<TableCell className={getValorStyle(l, 'Leucocitos')}>{getValor(l, 'Leucocitos')}</TableCell> <TableCell className={getValorStyle(l, 'Leucocitos')}>{getValor(l, 'Leucocitos')}</TableCell>
+1
View File
@@ -96,6 +96,7 @@ export interface Laboratorio {
pacienteId: string; pacienteId: string;
internacionId?: string; internacionId?: string;
fecha: string; fecha: string;
hora: string;
tipo?: 'Hemograma' | 'Química sanguínea' | 'Urianálisis' | 'Coagulación' | 'Microbiología' | 'Inmunología' | 'Otros'; tipo?: 'Hemograma' | 'Química sanguínea' | 'Urianálisis' | 'Coagulación' | 'Microbiología' | 'Inmunología' | 'Otros';
resultados: ResultadoLaboratorio[]; resultados: ResultadoLaboratorio[];
observaciones?: string; observaciones?: string;