Add Farmacologica Insulina type with NPH/Glargina and schedule options
This commit is contained in:
+24
-4
@@ -250,14 +250,34 @@ try {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
// column may already exist
|
// column may already exist
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
db.exec("ALTER TABLE indicaciones ADD COLUMN fechaModificacion TEXT");
|
db.exec("ALTER TABLE recomendaciones ADD COLUMN fechaModificacion TEXT");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// column may already exist
|
// column may already exist
|
||||||
}
|
}
|
||||||
}
|
try {
|
||||||
|
db.exec("ALTER TABLE recomendaciones ADD COLUMN tipoInsulina TEXT");
|
||||||
|
} catch (e) {
|
||||||
|
// column may already exist
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
db.exec("ALTER TABLE recomendaciones ADD COLUMN unidadesDesayuno INTEGER");
|
||||||
|
} catch (e) {
|
||||||
|
// column may already exist
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
db.exec("ALTER TABLE recomendaciones ADD COLUMN unidadesAlmuerzo INTEGER");
|
||||||
|
} catch (e) {
|
||||||
|
// column may already exist
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
db.exec("ALTER TABLE recomendaciones ADD COLUMN unidadesNoche INTEGER");
|
||||||
|
} catch (e) {
|
||||||
|
// column may already exist
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('Error tabla indicaciones:', e.message);
|
console.log('Error tabla recomendaciones:', e.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { Label } from '@/components/ui/label';
|
|||||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
|
||||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';
|
||||||
import { Plus, Pencil, Trash2, X } from 'lucide-react';
|
import { Plus, Pencil, Trash2, X } from 'lucide-react';
|
||||||
import type { Indicacion, IndicacionTipo, ViaAdministracion, TipoPlanHidratacion } from '@/types';
|
import type { Indicacion, IndicacionTipo, ViaAdministracion, TipoPlanHidratacion, TipoInsulina } from '@/types';
|
||||||
|
|
||||||
export function SeccionIndicaciones({ recomendaciones, internacionId, add, update, del }: {
|
export function SeccionIndicaciones({ recomendaciones, internacionId, add, update, del }: {
|
||||||
recomendaciones: Indicacion[];
|
recomendaciones: Indicacion[];
|
||||||
@@ -31,12 +31,17 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, add, updat
|
|||||||
const [cantidadMl, setCantidadMl] = useState<number | ''>('');
|
const [cantidadMl, setCantidadMl] = useState<number | ''>('');
|
||||||
const [cantidadMl2, setCantidadMl2] = useState<number | ''>('');
|
const [cantidadMl2, setCantidadMl2] = useState<number | ''>('');
|
||||||
const [tiempoHoras, setTiempoHoras] = useState<number | ''>(24);
|
const [tiempoHoras, setTiempoHoras] = useState<number | ''>(24);
|
||||||
|
const [tipoInsulina, setTipoInsulina] = useState<TipoInsulina>('NPH');
|
||||||
|
const [unidadesDesayuno, setUnidadesDesayuno] = useState<number | ''>('');
|
||||||
|
const [unidadesAlmuerzo, setUnidadesAlmuerzo] = useState<number | ''>('');
|
||||||
|
const [unidadesNoche, setUnidadesNoche] = useState<number | ''>('');
|
||||||
const [medico, setMedico] = useState('');
|
const [medico, setMedico] = useState('');
|
||||||
const [showHistorial, setShowHistorial] = useState(false);
|
const [showHistorial, setShowHistorial] = useState(false);
|
||||||
|
|
||||||
const vias: ViaAdministracion[] = ['Oral', 'EV', 'IM', 'SC', 'Por GGT', 'Por SNG'];
|
const vias: ViaAdministracion[] = ['Oral', 'EV', 'IM', 'SC', 'Por GGT', 'Por SNG'];
|
||||||
const planes: TipoPlanHidratacion[] = ['SF 0.9%', 'Dextrosa 5%', 'Dextrosa 10%', 'Dextrosa 25%', 'Ringer Lactato'];
|
const planes: TipoPlanHidratacion[] = ['SF 0.9%', 'Dextrosa 5%', 'Dextrosa 10%', 'Dextrosa 25%', 'Ringer Lactato'];
|
||||||
const tipos: IndicacionTipo[] = ['Farmacologica', 'No Farmacologica', 'PHP', 'Paralelo', 'Alterno'];
|
const tiposInsulina: TipoInsulina[] = ['NPH', 'Glargina'];
|
||||||
|
const tipos: IndicacionTipo[] = ['Farmacologica', 'Farmacologica Insulina', 'No Farmacologica', 'PHP', 'Paralelo', 'Alterno'];
|
||||||
|
|
||||||
const reset = () => {
|
const reset = () => {
|
||||||
setEdit(null);
|
setEdit(null);
|
||||||
@@ -51,6 +56,10 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, add, updat
|
|||||||
setCantidadMl('');
|
setCantidadMl('');
|
||||||
setCantidadMl2('');
|
setCantidadMl2('');
|
||||||
setTiempoHoras(24);
|
setTiempoHoras(24);
|
||||||
|
setTipoInsulina('NPH');
|
||||||
|
setUnidadesDesayuno('');
|
||||||
|
setUnidadesAlmuerzo('');
|
||||||
|
setUnidadesNoche('');
|
||||||
setMedico('');
|
setMedico('');
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -67,6 +76,10 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, add, updat
|
|||||||
setCantidadMl(i.cantidadMl || '');
|
setCantidadMl(i.cantidadMl || '');
|
||||||
setCantidadMl2(i.cantidadMl2 || '');
|
setCantidadMl2(i.cantidadMl2 || '');
|
||||||
setTiempoHoras(i.tiempoHoras || 24);
|
setTiempoHoras(i.tiempoHoras || 24);
|
||||||
|
setTipoInsulina(i.tipoInsulina || 'NPH');
|
||||||
|
setUnidadesDesayuno(i.unidadesDesayuno || '');
|
||||||
|
setUnidadesAlmuerzo(i.unidadesAlmuerzo || '');
|
||||||
|
setUnidadesNoche(i.unidadesNoche || '');
|
||||||
setMedico(i.medicoCrea);
|
setMedico(i.medicoCrea);
|
||||||
setDialog(true);
|
setDialog(true);
|
||||||
};
|
};
|
||||||
@@ -74,6 +87,7 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, add, updat
|
|||||||
const handleGuardar = () => {
|
const handleGuardar = () => {
|
||||||
if (!medico.trim()) return;
|
if (!medico.trim()) return;
|
||||||
if (tipo === 'Farmacologica' && (!droga.trim() || !dosis.trim())) return;
|
if (tipo === 'Farmacologica' && (!droga.trim() || !dosis.trim())) return;
|
||||||
|
if (tipo === 'Farmacologica Insulina' && (!unidadesDesayuno && !unidadesAlmuerzo && !unidadesNoche)) return;
|
||||||
if (tipo === 'No Farmacologica' && !descripcion.trim()) return;
|
if (tipo === 'No Farmacologica' && !descripcion.trim()) return;
|
||||||
if ((tipo === 'PHP' || tipo === 'Paralelo') && !cantidadMl) return;
|
if ((tipo === 'PHP' || tipo === 'Paralelo') && !cantidadMl) return;
|
||||||
if (tipo === 'Alterno' && (!cantidadMl || !cantidadMl2)) return;
|
if (tipo === 'Alterno' && (!cantidadMl || !cantidadMl2)) return;
|
||||||
@@ -91,6 +105,11 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, add, updat
|
|||||||
data.dosis = dosis;
|
data.dosis = dosis;
|
||||||
data.frecuenciaHoras = frecuenciaHoras || undefined;
|
data.frecuenciaHoras = frecuenciaHoras || undefined;
|
||||||
data.via = via;
|
data.via = via;
|
||||||
|
} else if (tipo === 'Farmacologica Insulina') {
|
||||||
|
data.tipoInsulina = tipoInsulina;
|
||||||
|
data.unidadesDesayuno = unidadesDesayuno || undefined;
|
||||||
|
data.unidadesAlmuerzo = unidadesAlmuerzo || undefined;
|
||||||
|
data.unidadesNoche = unidadesNoche || undefined;
|
||||||
} else if (tipo === 'No Farmacologica') {
|
} else if (tipo === 'No Farmacologica') {
|
||||||
data.descripcion = descripcion;
|
data.descripcion = descripcion;
|
||||||
} else if (tipo === 'PHP' || tipo === 'Paralelo') {
|
} else if (tipo === 'PHP' || tipo === 'Paralelo') {
|
||||||
@@ -176,6 +195,17 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, add, updat
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{tipo === 'Farmacologica Insulina' && (
|
||||||
|
<>
|
||||||
|
<div><Label>Tipo de Insulina</Label><Select value={tipoInsulina} onValueChange={(v: TipoInsulina) => setTipoInsulina(v)}><SelectTrigger><SelectValue /></SelectTrigger><SelectContent>{tiposInsulina.map(t => <SelectItem key={t} value={t}>{t}</SelectItem>)}</SelectContent></Select></div>
|
||||||
|
<div className="grid grid-cols-3 gap-2">
|
||||||
|
<div><Label>Pre Desayuno (U)</Label><Input type="number" value={unidadesDesayuno} onChange={e => setUnidadesDesayuno(e.target.value ? parseInt(e.target.value) : '')} placeholder="U" /></div>
|
||||||
|
<div><Label>Pre Almuerzo (U)</Label><Input type="number" value={unidadesAlmuerzo} onChange={e => setUnidadesAlmuerzo(e.target.value ? parseInt(e.target.value) : '')} placeholder="U" /></div>
|
||||||
|
<div><Label>23hs (U)</Label><Input type="number" value={unidadesNoche} onChange={e => setUnidadesNoche(e.target.value ? parseInt(e.target.value) : '')} placeholder="U" /></div>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
{tipo === 'No Farmacologica' && (
|
{tipo === 'No Farmacologica' && (
|
||||||
<div><Label>Descripción *</Label><textarea className="w-full p-2 border rounded-md text-sm min-h-[80px] bg-transparent dark:bg-input/30" value={descripcion} onChange={e => setDescripcion(e.target.value)} placeholder="Ej: Control de signos vitales, Dieta, etc." /></div>
|
<div><Label>Descripción *</Label><textarea className="w-full p-2 border rounded-md text-sm min-h-[80px] bg-transparent dark:bg-input/30" value={descripcion} onChange={e => setDescripcion(e.target.value)} placeholder="Ej: Control de signos vitales, Dieta, etc." /></div>
|
||||||
)}
|
)}
|
||||||
@@ -226,6 +256,13 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, add, updat
|
|||||||
{ind.tipo === 'Farmacologica' && (
|
{ind.tipo === 'Farmacologica' && (
|
||||||
<div className="font-medium">{ind.droga} {ind.dosis} {ind.frecuenciaHoras ? `c/${ind.frecuenciaHoras}hs` : ''} {ind.via}</div>
|
<div className="font-medium">{ind.droga} {ind.dosis} {ind.frecuenciaHoras ? `c/${ind.frecuenciaHoras}hs` : ''} {ind.via}</div>
|
||||||
)}
|
)}
|
||||||
|
{ind.tipo === 'Farmacologica Insulina' && (
|
||||||
|
<div className="font-medium">{ind.tipoInsulina}
|
||||||
|
{ind.unidadesDesayuno && ` - Desayuno: ${ind.unidadesDesayuno}U`}
|
||||||
|
{ind.unidadesAlmuerzo && ` - Almuerzo: ${ind.unidadesAlmuerzo}U`}
|
||||||
|
{ind.unidadesNoche && ` - 23hs: ${ind.unidadesNoche}U`}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
{ind.tipo === 'No Farmacologica' && (
|
{ind.tipo === 'No Farmacologica' && (
|
||||||
<div className="font-medium">{ind.descripcion}</div>
|
<div className="font-medium">{ind.descripcion}</div>
|
||||||
)}
|
)}
|
||||||
@@ -291,10 +328,10 @@ export function SeccionIndicaciones({ recomendaciones, internacionId, add, updat
|
|||||||
<TableCell>{ind.medicoSuspende || '-'}</TableCell>
|
<TableCell>{ind.medicoSuspende || '-'}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
{ind.tipo === 'Farmacologica' && `${ind.droga} ${ind.dosis} ${ind.frecuenciaHoras ? `c/${ind.frecuenciaHoras}hs` : ''} ${ind.via}`}
|
{ind.tipo === 'Farmacologica' && `${ind.droga} ${ind.dosis} ${ind.frecuenciaHoras ? `c/${ind.frecuenciaHoras}hs` : ''} ${ind.via}`}
|
||||||
|
{ind.tipo === 'Farmacologica Insulina' && `${ind.tipoInsulina}${ind.unidadesDesayuno ? ` - Desayuno: ${ind.unidadesDesayuno}U` : ''}${ind.unidadesAlmuerzo ? ` - Almuerzo: ${ind.unidadesAlmuerzo}U` : ''}${ind.unidadesNoche ? ` - 23hs: ${ind.unidadesNoche}U` : ''}`}
|
||||||
{ind.tipo === 'No Farmacologica' && ind.descripcion}
|
{ind.tipo === 'No Farmacologica' && ind.descripcion}
|
||||||
{(ind.tipo === 'PHP' || ind.tipo === 'Paralelo') && `${ind.tipoPlan} ${ind.cantidadMl}ml en ${ind.tiempoHoras}hs`}
|
{(ind.tipo === 'PHP' || ind.tipo === 'Paralelo') && `${ind.tipoPlan} ${ind.cantidadMl}ml en ${ind.tiempoHoras}hs`}
|
||||||
{ind.tipo === 'Alterno' && `${ind.tipoPlan} ${ind.cantidadMl}ml + ${ind.tipoPlan2} ${ind.cantidadMl2}ml en ${ind.tiempoHoras}hs`}
|
{ind.tipo === 'Alterno' && `${ind.tipoPlan} ${ind.cantidadMl}ml + ${ind.tipoPlan2} ${ind.cantidadMl2}ml en ${ind.tiempoHoras}hs`}
|
||||||
{ind.tipo === 'Alterno' && `${ind.tipoPlan} ${ind.cantidadMl}ml + ${ind.tipoPlan2} ${ind.cantidadMl2}ml`}
|
|
||||||
</TableCell>
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
))}
|
))}
|
||||||
|
|||||||
+6
-1
@@ -172,7 +172,8 @@ export interface ATB {
|
|||||||
fechaFinalizacion?: string;
|
fechaFinalizacion?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type IndicacionTipo = 'Farmacologica' | 'No Farmacologica' | 'PHP' | 'Paralelo' | 'Alterno';
|
export type IndicacionTipo = 'Farmacologica' | 'Farmacologica Insulina' | 'No Farmacologica' | 'PHP' | 'Paralelo' | 'Alterno';
|
||||||
|
export type TipoInsulina = 'NPH' | 'Glargina';
|
||||||
export type ViaAdministracion = 'Oral' | 'EV' | 'IM' | 'SC' | 'Por GGT' | 'Por SNG';
|
export type ViaAdministracion = 'Oral' | 'EV' | 'IM' | 'SC' | 'Por GGT' | 'Por SNG';
|
||||||
export type TipoPlanHidratacion = 'SF 0.9%' | 'Dextrosa 5%' | 'Dextrosa 10%' | 'Dextrosa 25%' | 'Ringer Lactato';
|
export type TipoPlanHidratacion = 'SF 0.9%' | 'Dextrosa 5%' | 'Dextrosa 10%' | 'Dextrosa 25%' | 'Ringer Lactato';
|
||||||
|
|
||||||
@@ -190,6 +191,10 @@ export interface Indicacion {
|
|||||||
cantidadMl?: number;
|
cantidadMl?: number;
|
||||||
cantidadMl2?: number;
|
cantidadMl2?: number;
|
||||||
tiempoHoras?: number;
|
tiempoHoras?: number;
|
||||||
|
tipoInsulina?: TipoInsulina;
|
||||||
|
unidadesDesayuno?: number;
|
||||||
|
unidadesAlmuerzo?: number;
|
||||||
|
unidadesNoche?: number;
|
||||||
estado: 'Activa' | 'Suspendida';
|
estado: 'Activa' | 'Suspendida';
|
||||||
medicoCrea: string;
|
medicoCrea: string;
|
||||||
fechaCrea: string;
|
fechaCrea: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user