diff --git a/historia_clinica_generator.html b/historia_clinica_generator.html new file mode 100644 index 0000000..2aee996 --- /dev/null +++ b/historia_clinica_generator.html @@ -0,0 +1,753 @@ + + +
+ +Hace clic en el botón para generar el PDF con las 5 páginas del formulario en blanco.
+ + + + + + diff --git a/server/server.js b/server/server.js index a296592..beb88a8 100644 --- a/server/server.js +++ b/server/server.js @@ -157,6 +157,22 @@ try { // La columna ya existe } +try { + db.exec(` + CREATE TABLE IF NOT EXISTS interconsultas ( + id TEXT PRIMARY KEY, + pacienteId TEXT NOT NULL, + internacionId TEXT NOT NULL, + fecha TEXT, + servicioInterconsultado TEXT, + realizada INTEGER DEFAULT 0, + respuestaInterconsulta TEXT + ) + `); +} catch (e) { + console.log('Tabla interconsultas ya existe o error:', e.message); +} + const app = express(); app.use(cors()); app.use(express.json({ limit: '50mb' })); @@ -206,6 +222,7 @@ app.get('/api/state', (req, res) => { acidosBase: queryAll('SELECT * FROM acidosbase'), cultivos: queryAll('SELECT * FROM cultivos'), estudiosComplementarios: queryAll('SELECT * FROM estudiosComplementarios'), + interconsultas: queryAll('SELECT * FROM interconsultas').map(ic => ({ ...ic, realizada: !!ic.realizada })), vistaActual: 'dashboard', currentInternacionId: null }; @@ -288,6 +305,14 @@ if (state.laboratorios?.length) { } } + run('DELETE FROM interconsultas'); + if (state.interconsultas?.length) { + const stmt = db.prepare('INSERT INTO interconsultas (id, pacienteId, internacionId, fecha, servicioInterconsultado, realizada, respuestaInterconsulta) VALUES (?, ?, ?, ?, ?, ?, ?)'); + for (const ic of state.interconsultas) { + stmt.run(ic.id, ic.pacienteId, ic.internacionId, ic.fecha, ic.servicioInterconsultado, ic.realizada ? 1 : 0, ic.respuestaInterconsulta || null); + } + } + res.json({ ok: true }); }); diff --git a/src/App.tsx b/src/App.tsx index 6d2877b..a1217db 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -144,6 +144,7 @@ function AppContent() { acidosBase={store.getAcidosBaseByPaciente(paciente.id)} cultivos={store.getCultivosByPaciente(paciente.id)} estudiosComplementarios={store.estudiosComplementarios.filter(e => e.pacienteId === paciente.id)} + interconsultas={store.interconsultas.filter(ic => ic.internacionId === internacion.id)} onAgregarEvolucion={store.agregarEvolucion} onActualizarEvolucion={store.actualizarEvolucion} onEliminarEvolucion={store.eliminarEvolucion} @@ -159,6 +160,9 @@ function AppContent() { onAgregarEstudioComplementario={(e) => store.agregarEstudioComplementario({ ...e, internacionId: internacion.id })} onActualizarEstudioComplementario={store.actualizarEstudioComplementario} onEliminarEstudioComplementario={store.eliminarEstudioComplementario} + onAgregarInterconsulta={(ic) => store.agregarInterconsulta({ ...ic, internacionId: internacion.id })} + onActualizarInterconsulta={store.actualizarInterconsulta} + onEliminarInterconsulta={store.eliminarInterconsulta} onActualizarInternacion={store.actualizarInternacion} onActualizarCama={store.actualizarCama} onVolver={() => store.setVista('internaciones')} diff --git a/src/hooks/useHospitalStore.ts b/src/hooks/useHospitalStore.ts index 4007457..62d3822 100644 --- a/src/hooks/useHospitalStore.ts +++ b/src/hooks/useHospitalStore.ts @@ -9,6 +9,7 @@ import type { AcidoBase, Cultivo, EstudioComplementario, + Interconsulta, Vista } from '@/types'; @@ -35,6 +36,7 @@ interface HospitalState { acidosBase: AcidoBase[]; cultivos: Cultivo[]; estudiosComplementarios: EstudioComplementario[]; + interconsultas: Interconsulta[]; vistaActual: Vista; currentInternacionId?: string | null; } @@ -51,6 +53,7 @@ const defaultState = (): HospitalState => ({ acidosBase: [], cultivos: [], estudiosComplementarios: [], + interconsultas: [], vistaActual: 'dashboard', camas: [] }); @@ -349,6 +352,30 @@ const finalizarInternacion = useCallback((internacionId: string, datos: { })); }, []); + // Acciones de interconsultas + const agregarInterconsulta = useCallback((interconsulta: OmitSección Interconsultas en desarrollo
-No hay interconsultas
+{ic.respuestaInterconsulta}
+ )} +