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:
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>` : ''}
|
||||
|
||||
Reference in New Issue
Block a user