Add motivo field to interconsultas with dark mode badges

This commit is contained in:
2026-04-20 03:01:56 -03:00
parent 69daa80cad
commit b7cd526986
3 changed files with 29 additions and 6 deletions
+8 -2
View File
@@ -167,6 +167,7 @@ try {
internacionId TEXT NOT NULL, internacionId TEXT NOT NULL,
fecha TEXT, fecha TEXT,
servicioInterconsultado TEXT, servicioInterconsultado TEXT,
motivo TEXT,
respuestaInterconsulta TEXT, respuestaInterconsulta TEXT,
respuestaFecha TEXT respuestaFecha TEXT
) )
@@ -178,6 +179,11 @@ try {
} catch (e) { } catch (e) {
// Column already exists // Column already exists
} }
try {
db.exec("ALTER TABLE interconsultas ADD COLUMN motivo TEXT");
} catch (e) {
// Column already exists
}
} }
} catch (e) { } catch (e) {
console.log('Error tabla interconsultas:', e.message); console.log('Error tabla interconsultas:', e.message);
@@ -337,9 +343,9 @@ if (state.laboratorios?.length) {
run('DELETE FROM interconsultas'); run('DELETE FROM interconsultas');
if (state.interconsultas?.length) { if (state.interconsultas?.length) {
const stmt = db.prepare('INSERT INTO interconsultas (id, pacienteId, internacionId, fecha, servicioInterconsultado, respuestaInterconsulta, respuestaFecha) VALUES (?, ?, ?, ?, ?, ?, ?)'); const stmt = db.prepare('INSERT INTO interconsultas (id, pacienteId, internacionId, fecha, servicioInterconsultado, motivo, respuestaInterconsulta, respuestaFecha) VALUES (?, ?, ?, ?, ?, ?, ?, ?)');
for (const ic of state.interconsultas) { for (const ic of state.interconsultas) {
stmt.run(ic.id, ic.pacienteId, ic.internacionId, ic.fecha, ic.servicioInterconsultado, ic.respuestaInterconsulta || null, ic.respuestaFecha || null); stmt.run(ic.id, ic.pacienteId, ic.internacionId, ic.fecha, ic.servicioInterconsultado, ic.motivo || null, ic.respuestaInterconsulta || null, ic.respuestaFecha || null);
} }
} }
+20 -4
View File
@@ -2081,6 +2081,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
const [dialog, setDialog] = useState(false); const [dialog, setDialog] = useState(false);
const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]); const [fecha, setFecha] = useState(new Date().toISOString().split('T')[0]);
const [servicioInterconsultado, setServicioInterconsultado] = useState(''); const [servicioInterconsultado, setServicioInterconsultado] = useState('');
const [motivo, setMotivo] = useState('');
const [respuestaInterconsulta, setRespuestaInterconsulta] = useState(''); const [respuestaInterconsulta, setRespuestaInterconsulta] = useState('');
const [respuestaFecha, setRespuestaFecha] = useState(''); const [respuestaFecha, setRespuestaFecha] = useState('');
const [edit, setEdit] = useState<Interconsulta | null>(null); const [edit, setEdit] = useState<Interconsulta | null>(null);
@@ -2088,6 +2089,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
const reset = () => { const reset = () => {
setFecha(new Date().toISOString().split('T')[0]); setFecha(new Date().toISOString().split('T')[0]);
setServicioInterconsultado(''); setServicioInterconsultado('');
setMotivo('');
setRespuestaInterconsulta(''); setRespuestaInterconsulta('');
setRespuestaFecha(''); setRespuestaFecha('');
setEdit(null); setEdit(null);
@@ -2095,7 +2097,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
const handleGuardar = () => { const handleGuardar = () => {
if (!servicioInterconsultado) return; if (!servicioInterconsultado) return;
const datos: any = { fecha, servicioInterconsultado, respuestaInterconsulta }; const datos: any = { fecha, servicioInterconsultado, motivo, respuestaInterconsulta };
if (respuestaInterconsulta) { if (respuestaInterconsulta) {
datos.respuestaFecha = respuestaFecha || new Date().toISOString().split('T')[0]; datos.respuestaFecha = respuestaFecha || new Date().toISOString().split('T')[0];
} }
@@ -2112,6 +2114,7 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
setEdit(ic); setEdit(ic);
setFecha(ic.fecha); setFecha(ic.fecha);
setServicioInterconsultado(ic.servicioInterconsultado); setServicioInterconsultado(ic.servicioInterconsultado);
setMotivo(ic.motivo || '');
setRespuestaInterconsulta(ic.respuestaInterconsulta || ''); setRespuestaInterconsulta(ic.respuestaInterconsulta || '');
setRespuestaFecha(ic.respuestaFecha || ''); setRespuestaFecha(ic.respuestaFecha || '');
setDialog(true); setDialog(true);
@@ -2146,6 +2149,14 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
placeholder="Ej: Cardiología, Neurología, Infectología, etc." placeholder="Ej: Cardiología, Neurología, Infectología, etc."
/> />
</div> </div>
<div>
<Label>Motivo</Label>
<Input
value={motivo}
onChange={e => setMotivo(e.target.value)}
placeholder="Motivo de la interconsulta"
/>
</div>
<div> <div>
<Label>Fecha de Respuesta</Label> <Label>Fecha de Respuesta</Label>
@@ -2190,16 +2201,21 @@ function SeccionInterconsultas({ interconsultas, pacienteId, internacionId, add,
{!ic.respuestaInterconsulta ? ( {!ic.respuestaInterconsulta ? (
<Badge className="bg-orange-500 text-white hover:bg-orange-600">Pendiente</Badge> <Badge className="bg-orange-500 text-white hover:bg-orange-600">Pendiente</Badge>
) : ( ) : (
<Badge className="bg-green-600 text-white hover:bg-green-700">Respondida</Badge> <Badge className="bg-green-600 text-white hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600">Respondida</Badge>
)} )}
</div> </div>
<h4 className="font-semibold text-gray-900 dark:text-white">{ic.servicioInterconsultado}</h4> <h4 className="font-semibold text-gray-900 dark:text-white">{ic.servicioInterconsultado}</h4>
{ic.motivo && (
<p className="text-sm text-gray-600 dark:text-gray-400 mt-1">{ic.motivo}</p>
)}
{ic.respuestaInterconsulta && ( {ic.respuestaInterconsulta && (
<> <>
{ic.respuestaFecha && ( {ic.respuestaFecha && (
<p className="text-xs text-green-600 font-medium">Fecha de respuesta: {ic.respuestaFecha}</p> <Badge variant="outline" className="mt-2 bg-green-50 text-green-700 border-green-200 dark:bg-green-950 dark:text-green-300 dark:border-green-800">
Respuesta: {ic.respuestaFecha}
</Badge>
)} )}
<p className="text-sm text-gray-600 dark:text-gray-300 mt-1 whitespace-pre-wrap">{ic.respuestaInterconsulta}</p> <p className="text-sm text-gray-600 dark:text-gray-300 mt-2 whitespace-pre-wrap">{ic.respuestaInterconsulta}</p>
</> </>
)} )}
</div> </div>
+1
View File
@@ -158,6 +158,7 @@ export interface Interconsulta {
internacionId: string; internacionId: string;
fecha: string; fecha: string;
servicioInterconsultado: string; servicioInterconsultado: string;
motivo?: string;
respuestaInterconsulta?: string; respuestaInterconsulta?: string;
respuestaFecha?: string; respuestaFecha?: string;
} }