feat: enfermero_portal - mostrar todos los datos del paciente en tarjeta de domicilio

La tarjeta ahora muestra: documento, fecha de nacimiento, EPS,
teléfono (clickeable), correo (clickeable), exámenes solicitados
y tipo de cliente (particular/seguro con nombre del seguro).

Cambios:
- Enfermera::agenda() amplía SELECT con email, fecha_nacimiento,
  numero_documento, tipo_documento, eps, examenes_solicitados,
  tipo_cliente, seguro_nombre, ciudad, indicaciones_dir, notas_admin
- my_agenda.php simplificado: ya no re-consulta lab_domicilios por
  los campos que ahora vienen directo en la query
- enfermero_portal.php _cardHTML() muestra todos los campos nuevos
This commit is contained in:
Lizandro Guarnizo
2026-03-12 22:05:47 -05:00
parent bce9a8c6b5
commit 12e7b411d7
3 changed files with 47 additions and 13 deletions
+1 -7
View File
@@ -32,19 +32,13 @@ try {
// Agenda del día con pleno detalle
$agenda = $enf->agenda($eid, $fecha);
// Enriquecer con servicios extra y estado de asignación
// Enriquecer con servicios extra (el resto ya viene de la query agenda())
$db = Database::getInstance();
foreach ($agenda as &$item) {
$item['servicios_extra'] = $db->fetchAll(
"SELECT * FROM lab_servicios_extra WHERE domicilio_id = ? ORDER BY created_at ASC",
[(int)$item['domicilio_id']]
);
// Info completa del domicilio (notas, indicaciones)
$extra = $db->fetch(
"SELECT notas_admin, indicaciones_dir, barrio, ciudad FROM lab_domicilios WHERE id = ?",
[(int)$item['domicilio_id']]
);
if ($extra) $item = array_merge($item, $extra);
}
unset($item);
+18 -6
View File
@@ -93,17 +93,29 @@ class Enfermera {
$fecha = $fecha ?: date('Y-m-d');
return $this->db->fetchAll("
SELECT
d.id AS domicilio_id,
d.id AS domicilio_id,
d.fecha_programada,
d.hora_programada,
d.estado AS domicilio_estado,
d.estado AS domicilio_estado,
d.direccion,
d.barrio,
d.ciudad,
d.indicaciones_dir,
d.notas_admin,
d.tipo_servicio,
p.nombre_completo AS paciente_nombre,
p.telefono AS paciente_telefono,
a.estado AS asignacion_estado,
a.id AS asignacion_id
d.examenes_solicitados,
d.tipo_cliente,
d.seguro_nombre,
p.id AS paciente_id,
p.nombre_completo AS paciente_nombre,
p.telefono AS paciente_telefono,
p.email AS paciente_email,
p.fecha_nacimiento AS paciente_fecha_nacimiento,
p.tipo_documento AS paciente_tipo_documento,
p.numero_documento AS paciente_numero_documento,
p.eps AS paciente_eps,
a.estado AS asignacion_estado,
a.id AS asignacion_id
FROM lab_asignaciones a
JOIN lab_domicilios d ON d.id = a.domicilio_id
JOIN lab_pacientes p ON p.id = d.paciente_id
+28
View File
@@ -367,11 +367,31 @@ const portal = {
<div class="fw-bold mb-1">
<i class="fas fa-user me-1 text-primary"></i>${esc(item.paciente_nombre || '—')}
</div>
<!-- Documento y fecha de nacimiento -->
${(item.paciente_numero_documento || item.paciente_fecha_nacimiento) ? `
<div class="small text-muted mb-1">
${item.paciente_tipo_documento && item.paciente_numero_documento
? `<i class="fas fa-id-card me-1"></i>${esc(item.paciente_tipo_documento)} ${esc(item.paciente_numero_documento)}`
: ''}
${item.paciente_fecha_nacimiento
? `<span class="ms-2"><i class="fas fa-birthday-cake me-1"></i>${esc(item.paciente_fecha_nacimiento)}</span>`
: ''}
</div>` : ''}
<!-- EPS -->
${item.paciente_eps
? `<div class="small text-muted mb-1"><i class="fas fa-hospital me-1"></i>${esc(item.paciente_eps)}</div>`
: ''}
${item.paciente_telefono
? `<a href="tel:${esc(item.paciente_telefono)}" class="d-block small text-muted mb-1">
<i class="fas fa-phone me-1"></i>${esc(item.paciente_telefono)}
</a>`
: ''}
<!-- Correo -->
${item.paciente_email
? `<a href="mailto:${esc(item.paciente_email)}" class="d-block small text-muted mb-1">
<i class="fas fa-envelope me-1"></i>${esc(item.paciente_email)}
</a>`
: ''}
<div class="small text-secondary mb-1">
<i class="fas fa-map-marker-alt me-1 text-danger"></i>${esc(item.direccion || '—')}
@@ -383,6 +403,14 @@ const portal = {
${item.notas_admin
? `<div class="small text-info mb-2"><i class="fas fa-sticky-note me-1"></i>${esc(item.notas_admin)}</div>`
: ''}
<!-- Exámenes solicitados -->
${item.examenes_solicitados
? `<div class="small text-secondary mb-1"><i class="fas fa-flask me-1 text-primary"></i>${esc(item.examenes_solicitados)}</div>`
: ''}
<!-- Tipo cliente / seguro -->
${item.tipo_cliente === 'seguro'
? `<div class="small mb-2"><span class="badge bg-info text-dark"><i class="fas fa-shield-alt me-1"></i>Seguro${item.seguro_nombre ? ': ' + esc(item.seguro_nombre) : ''}</span></div>`
: ''}
<!-- Servicios extra registrados -->
${seSuf ? `<div class="d-flex flex-wrap gap-1 mb-2">${seSuf}</div>` : ''}