feat: multi-archivo órdenes visible en enfermero, domicilios y órdenes médicas

- OrdenMedica::filtrarCampos(): agrega domicilio_id al whitelist
- Domicilio::obtener(): consulta secundaria archivos_ordenes[] con fallback
- Enfermera::agenda(): bulk-query archivos_ordenes[] por domicilio_id
- api/lab/link_ordenes_domicilio.php: API POST vincula orden_ids a domicilio_id
- conversations.php guardar(): trackea allOrdenIds[], llama link API post-save
- lab_domicilios.php: renderOrdenesDetail() multi-archivo en detalle
- enfermero_portal.php: renderOrdenesEnfermero() multi-archivo en cards
- lab_ordenes.php: botón 'Ver domicilio' cuando domicilio_id está vinculado
- migrations/: ALTER TABLE lab_ordenes_medicas ADD domicilio_id + índice
This commit is contained in:
Lizandro Guarnizo
2026-03-24 21:51:29 -05:00
parent aa17dc299b
commit 2abce6d4c2
10 changed files with 262 additions and 51 deletions
+18 -2
View File
@@ -111,7 +111,7 @@ class Domicilio {
* Domicilio por ID con todos los datos relacionados.
*/
public function obtener(int $id): ?array {
return $this->db->fetch("
$dom = $this->db->fetch("
SELECT
d.*,
p.nombre_completo AS paciente_nombre,
@@ -133,7 +133,23 @@ class Domicilio {
LEFT JOIN lab_enfermeras e ON e.id = a.enfermera_id
LEFT JOIN admin_users adm ON adm.id = d.creado_por
WHERE d.id = ?
", [$id]) ?: null;
", [$id]);
if (!$dom) return null;
// Todos los archivos de órdenes vinculados a este domicilio
$archivos = $this->db->fetchAll(
"SELECT id AS orden_id, local_file
FROM lab_ordenes_medicas
WHERE domicilio_id = ? AND local_file IS NOT NULL
ORDER BY id ASC",
[$id]
);
// Fallback para domicilios creados antes de la migración (usan orden_id FK)
if (empty($archivos) && !empty($dom['orden_local_file'])) {
$archivos = [['orden_id' => $dom['orden_id'], 'local_file' => $dom['orden_local_file']]];
}
$dom['archivos_ordenes'] = $archivos;
return $dom;
}
/**