fix(HistoriaClinica): agregar handlers de otrosLaboratorios en store y corregir ReferenceError

This commit is contained in:
2026-08-12 22:18:27 +00:00
parent ed31b23159
commit 6fb825778f
12 changed files with 851 additions and 32 deletions
+143
View File
@@ -0,0 +1,143 @@
const fs = require('fs');
// 1. UPDATE db-mongodb.js
let code = fs.readFileSync('server/db-mongodb.js', 'utf8');
// add memStore
code = code.replace("laboratorios: [],", "laboratorios: [],\n otrosLaboratorios: [],");
// add methods
const addMethods = `
export async function getAllOtrosLaboratorios() {
if (db) {
const records = await db.collection('otros-laboratorios').find().toArray();
return cleanDocs(records);
}
return [...memStore.otrosLaboratorios];
}
export async function createOtroLaboratorio(record) {
const doc = {
id: record.id,
pacienteId: record.pacienteId,
internacionId: record.internacionId,
fecha: record.fecha,
hora: record.hora,
observaciones: record.observaciones,
createdAt: new Date().toISOString()
};
if (db) {
await db.collection('otros-laboratorios').insertOne(doc);
return cleanDoc(doc);
}
memStore.otrosLaboratorios.push(doc);
return doc;
}
export async function updateOtroLaboratorio(id, updates) {
if (db) {
await db.collection('otros-laboratorios').updateOne(
{ id },
{ $set: { ...updates, updatedAt: new Date().toISOString() } }
);
return { success: true };
}
const idx = memStore.otrosLaboratorios.findIndex(x => x.id === id);
if (idx !== -1) {
memStore.otrosLaboratorios[idx] = { ...memStore.otrosLaboratorios[idx], ...updates, updatedAt: new Date().toISOString() };
return { success: true };
}
return { success: false };
}
export async function deleteOtroLaboratorio(id) {
if (db) {
await db.collection('otros-laboratorios').deleteOne({ id });
return { success: true };
}
const idx = memStore.otrosLaboratorios.findIndex(x => x.id === id);
if (idx !== -1) {
memStore.otrosLaboratorios.splice(idx, 1);
return { success: true };
}
return { success: false };
}
`;
code = code + "\n" + addMethods;
// exportAllData & importAllData
code = code.replace("laboratorios: await getAllLaboratorios(),", "laboratorios: await getAllLaboratorios(),\n otrosLaboratorios: await getAllOtrosLaboratorios(),");
code = code.replace("if (data.laboratorios) memStore.laboratorios = data.laboratorios;", "if (data.laboratorios) memStore.laboratorios = data.laboratorios;\n if (data.otrosLaboratorios) memStore.otrosLaboratorios = data.otrosLaboratorios;");
fs.writeFileSync('server/db-mongodb.js', code);
// 2. UPDATE api-mongodb.js
let apiCode = fs.readFileSync('server/api-mongodb.js', 'utf8');
apiCode = apiCode.replace("getAllLaboratorios, createLaboratorio, updateLaboratorio, deleteLaboratorio,", "getAllLaboratorios, createLaboratorio, updateLaboratorio, deleteLaboratorio,\n getAllOtrosLaboratorios, createOtroLaboratorio, updateOtroLaboratorio, deleteOtroLaboratorio,");
apiCode = apiCode.replace("laboratorios: (await getAllLaboratorios()).map(l => ({ ...l, resultados: typeof l.resultados === 'string' ? JSON.parse(l.resultados) : l.resultados })),", "laboratorios: (await getAllLaboratorios()).map(l => ({ ...l, resultados: typeof l.resultados === 'string' ? JSON.parse(l.resultados) : l.resultados })),\n otrosLaboratorios: await getAllOtrosLaboratorios(),");
const apiMethods = `
// ========== OTROS LABORATORIOS ==========
app.get('/api/otros-laboratorios', async (req, res) => {
try {
const records = await getAllOtrosLaboratorios();
res.json(records);
} catch (error) {
console.error('Error fetching otros-laboratorios:', error);
res.status(500).json({ error: 'Failed to fetch otros-laboratorios' });
}
});
app.post('/api/otros-laboratorios', async (req, res) => {
try {
const { pacienteId, fecha, observaciones } = req.body;
if (!pacienteId || !fecha || !observaciones) {
return res.status(400).json({ error: 'pacienteId, fecha and observaciones are required' });
}
const record = {
id: generateUUID(),
...req.body
};
const newRecord = await createOtroLaboratorio(record);
res.status(201).json(newRecord);
} catch (error) {
console.error('Error creating otro laboratorio:', error);
res.status(500).json({ error: 'Failed to create otro laboratorio' });
}
});
app.put('/api/otros-laboratorios/:id', async (req, res) => {
try {
const result = await updateOtroLaboratorio(req.params.id, req.body);
if (!result.success) return res.status(404).json({ error: 'Record not found' });
res.json(result);
} catch (error) {
console.error('Error updating otro laboratorio:', error);
res.status(500).json({ error: 'Failed to update otro laboratorio' });
}
});
app.delete('/api/otros-laboratorios/:id', async (req, res) => {
try {
const result = await deleteOtroLaboratorio(req.params.id);
if (!result.success) return res.status(404).json({ error: 'Record not found' });
res.json({ message: 'Deleted successfully' });
} catch (error) {
console.error('Error deleting otro laboratorio:', error);
res.status(500).json({ error: 'Failed to delete otro laboratorio' });
}
});
`;
apiCode = apiCode.replace("// ========== GLUCEMIAS ==========", apiMethods + "\n// ========== GLUCEMIAS ==========");
fs.writeFileSync('server/api-mongodb.js', apiCode);