Add Indicaciones backend - types, DB table, store, API
This commit is contained in:
@@ -208,6 +208,35 @@ try {
|
|||||||
console.log('Error tabla atb:', e.message);
|
console.log('Error tabla atb:', e.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const existingIndicaciones = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='indicaciones'").get();
|
||||||
|
if (!existingIndicaciones) {
|
||||||
|
db.exec(`
|
||||||
|
CREATE TABLE indicaciones (
|
||||||
|
id TEXT PRIMARY KEY,
|
||||||
|
internacionId TEXT NOT NULL,
|
||||||
|
tipo TEXT NOT NULL,
|
||||||
|
droga TEXT,
|
||||||
|
dosis TEXT,
|
||||||
|
frecuenciaHoras INTEGER,
|
||||||
|
via TEXT,
|
||||||
|
descripcion TEXT,
|
||||||
|
tipoPlan TEXT,
|
||||||
|
cantidadMl INTEGER,
|
||||||
|
tiempoHoras INTEGER,
|
||||||
|
estado TEXT DEFAULT 'Activa',
|
||||||
|
medicoCrea TEXT,
|
||||||
|
fechaCrea TEXT,
|
||||||
|
medicoSuspende TEXT,
|
||||||
|
fechaSuspension TEXT
|
||||||
|
)
|
||||||
|
`);
|
||||||
|
console.log('Tabla indicaciones creada');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log('Error tabla indicaciones:', e.message);
|
||||||
|
}
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
app.use(cors());
|
app.use(cors());
|
||||||
app.use(express.json({ limit: '50mb' }));
|
app.use(express.json({ limit: '50mb' }));
|
||||||
@@ -259,6 +288,7 @@ app.get('/api/state', (req, res) => {
|
|||||||
estudiosComplementarios: queryAll('SELECT * FROM estudiosComplementarios'),
|
estudiosComplementarios: queryAll('SELECT * FROM estudiosComplementarios'),
|
||||||
interconsultas: queryAll('SELECT * FROM interconsultas').map(ic => ({ ...ic, realizada: !!ic.realizada })),
|
interconsultas: queryAll('SELECT * FROM interconsultas').map(ic => ({ ...ic, realizada: !!ic.realizada })),
|
||||||
atb: queryAll('SELECT * FROM atb'),
|
atb: queryAll('SELECT * FROM atb'),
|
||||||
|
indicaciones: queryAll('SELECT * FROM indicaciones'),
|
||||||
vistaActual: 'dashboard',
|
vistaActual: 'dashboard',
|
||||||
currentInternacionId: null
|
currentInternacionId: null
|
||||||
};
|
};
|
||||||
@@ -357,6 +387,14 @@ if (state.laboratorios?.length) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run('DELETE FROM indicaciones');
|
||||||
|
if (state.indicaciones?.length) {
|
||||||
|
const stmt = db.prepare('INSERT INTO indicaciones (id, internacionId, tipo, droga, dosis, frecuenciaHoras, via, descripcion, tipoPlan, cantidadMl, tiempoHoras, estado, medicoCrea, fechaCrea, medicoSuspende, fechaSuspension) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
|
||||||
|
for (const ind of state.indicaciones) {
|
||||||
|
stmt.run(ind.id, ind.internacionId, ind.tipo, ind.droga || null, ind.dosis || null, ind.frecuenciaHoras || null, ind.via || null, ind.descripcion || null, ind.tipoPlan || null, ind.cantidadMl || null, ind.tiempoHoras || null, ind.estado, ind.medicoCrea, ind.fechaCrea, ind.medicoSuspende || null, ind.fechaSuspension || null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
res.json({ ok: true });
|
res.json({ ok: true });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import type {
|
|||||||
EstudioComplementario,
|
EstudioComplementario,
|
||||||
Interconsulta,
|
Interconsulta,
|
||||||
ATB,
|
ATB,
|
||||||
|
Indicacion,
|
||||||
Vista
|
Vista
|
||||||
} from '@/types';
|
} from '@/types';
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ interface HospitalState {
|
|||||||
estudiosComplementarios: EstudioComplementario[];
|
estudiosComplementarios: EstudioComplementario[];
|
||||||
interconsultas: Interconsulta[];
|
interconsultas: Interconsulta[];
|
||||||
atb: ATB[];
|
atb: ATB[];
|
||||||
|
indicadores: Indicacion[];
|
||||||
vistaActual: Vista;
|
vistaActual: Vista;
|
||||||
currentInternacionId?: string | null;
|
currentInternacionId?: string | null;
|
||||||
}
|
}
|
||||||
@@ -58,6 +60,7 @@ const defaultState = (): HospitalState => ({
|
|||||||
interconsultas: [],
|
interconsultas: [],
|
||||||
atb: [],
|
atb: [],
|
||||||
vistaActual: 'dashboard',
|
vistaActual: 'dashboard',
|
||||||
|
indicadores: [],
|
||||||
camas: []
|
camas: []
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -172,4 +172,27 @@ export interface ATB {
|
|||||||
fechaFinalizacion?: string;
|
fechaFinalizacion?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type IndicacionTipo = 'Farmacologica' | 'NoFarmacologica' | 'Hidratacion';
|
||||||
|
export type ViaAdministracion = 'Oral' | 'EV' | 'IM' | 'SC' | 'PorGGT' | 'PorSNG';
|
||||||
|
export type TipoPlanHidratacion = 'SolucionFisiologica09' | 'Dextrosa5' | 'Dextrosa10' | 'Dextrosa25' | 'RingerLactato';
|
||||||
|
|
||||||
|
export interface Indicacion {
|
||||||
|
id: string;
|
||||||
|
internacionId: string;
|
||||||
|
tipo: IndicacionTipo;
|
||||||
|
droga?: string;
|
||||||
|
dosis?: string;
|
||||||
|
frecuenciaHoras?: number;
|
||||||
|
via?: ViaAdministracion;
|
||||||
|
descripcion?: string;
|
||||||
|
tipoPlan?: TipoPlanHidratacion;
|
||||||
|
cantidadMl?: number;
|
||||||
|
tiempoHoras?: number;
|
||||||
|
estado: 'Activa' | 'Suspendida';
|
||||||
|
medicoCrea: string;
|
||||||
|
fechaCrea: string;
|
||||||
|
medicoSuspende?: string;
|
||||||
|
fechaSuspension?: string;
|
||||||
|
}
|
||||||
|
|
||||||
export type Vista = 'dashboard' | 'camas' | 'pacientes' | 'internaciones' | 'evoluciones' | 'laboratorios' | 'acidobase' | 'cultivos' | 'historiaclinica' | 'nuevoingreso' | 'editaringreso';
|
export type Vista = 'dashboard' | 'camas' | 'pacientes' | 'internaciones' | 'evoluciones' | 'laboratorios' | 'acidobase' | 'cultivos' | 'historiaclinica' | 'nuevoingreso' | 'editaringreso';
|
||||||
|
|||||||
Reference in New Issue
Block a user