Add motivo field to interconsultas with dark mode badges
This commit is contained in:
+8
-2
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user