
Asociación Española de Esofagitis Eosinofílica
La Esofagitis Eosinofílica (EoE) es una enfermedad inflamatoria crónica del esófago de origen inmunoalergénico. Se caracteriza por una acumulación anormal de un tipo de glóbulos blancos llamados eosinófilos en la mucosa del esófago, lo que provoca inflamación, disfunción y rigidez en este conducto.
A menudo se le llama coloquialmente "el asma del esófago" debido a su naturaleza alérgica y crónica.
Síntomas Principales
Los síntomas varían considerablemente según la edad del paciente:
- En adultos y adolescentes:
- Disfagia: Dificultad para tragar alimentos sólidos (el síntoma más común).
- Impactación alimentaria: Alimentos que se quedan atascados en el esófago, requiriendo a veces atención médica de urgencia.
- Dolor en el pecho (que no responde a antiácidos).
- Ardor de estómago o reflujo persistente.
- En niños:
- Dificultad para alimentarse o rechazo a la comida.
- Vómitos frecuentes y dolor abdominal.
- Retraso en el crecimiento o pérdida de peso.
Causas y Desencadenantes
Aunque se considera una enfermedad mediada por el sistema inmunitario, los desencadenantes principales suelen ser ambientales:
- Alergenos alimentarios: Es la causa más frecuente. Los alimentos más comúnmente implicados son la leche de vaca, el trigo/gluten, el huevo, la soja, los frutos secos y los mariscos.
- Alergenos ambientales (aéreos): El polen, los ácaros del polvo o el pelo de animales pueden empeorar los síntomas en ciertas épocas del año.
- Componente genético: Existe una predisposición familiar. Es común que estos pacientes tengan otras condiciones alérgicas como asma, dermatitis atópica o rinitis.
Diagnóstico
El diagnóstico de la EoE no se puede hacer solo con los síntomas, ya que se confunde fácilmente con el Reflujo Gastroesofágico (ERGE). Se requiere:
- Endoscopia digestiva alta: Para observar el estado del esófago (suele presentar anillos, estrías longitudinales o estrechamiento).
- Biopsia esofágica: Es el estándar de oro. Se toman muestras de tejido y se confirma el diagnóstico si se contabilizan $\ge$ 15 eosinófilos por campo de gran aumento (hpf) bajo el microscopio.
Tratamiento actual
El tratamiento es personalizado y se basa en las "3 Ds": Dieta, Medicamentos (Drugs) y Dilatación.
| Tipo de Tratamiento | Descripción |
| Dietético | Dieta de eliminación (retirar los alimentos sospechosos y reintroducirlos gradualmente para identificar el causante). |
| Farmacológico |
Inhibidores de la Bomba de Protones (IBP): Reducen el ácido y tienen efecto antiinflamatorio. Corticoides tópicos deglutidos: (Como la budesonida o fluticasona) que actúan directamente en la mucosa del esófago sin pasar masivamente a la sangre. |
| Endoscópico | Dilatación esofágica: Se reserva para casos avanzados donde el esófago se ha estrechado gravemente (estenosis), permitiendo ensanchar el conducto. |
Nota importante: Al ser una enfermedad crónica, la EoE requiere un seguimiento a largo plazo por parte de un gastroenterólogo y, en muchos casos, de un alergólogo, ya que suspender el tratamiento suele provocar la reaparición de la inflamación.
Conoce más sobre la EoE y sus síntomas con el Hospital Gregorio Marañón
Este vídeo explica de forma clara las causas, síntomas específicos por edad y el manejo clínico de la esofagitis eosinofílica.
{source}<?php
defined('_JEXEC') or die('Acceso restringido');
function generarThumbnailJoomla($url, $nombreArchivo, $ancho = 800) {$rutaDestino = JPATH_SITE . '/images/thumbnails/noticias/' . $nombreArchivo;
if (!is_writable(JPATH_SITE . '/images/thumbnails/noticias/')) {
return "Error: La carpeta /images/thumbnails/noticias/ no tiene permisos de escritura.";
}
$urlLimpia = trim($url);
if (!preg_match("~^(?:f|ht)tps?://~i", $urlLimpia)) {
$urlLimpia = "http://" . $urlLimpia;
}
$urlLimpia = str_replace(' ', '%20', $urlLimpia);
$apiUrl = "https://api.apiflash.com/v1/urltoimage?access_key=5073ba864a4640458fc659013ecb2ae3&width=1920&format=webp&height=1920&thumbnail_width=1024&no_cookie_banners=true&no_ads=true&no_tracking=true&user_agent=Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36&fail_on_status=400%2C404%2C500-511&url=" . urlencode($urlLimpia);
$ch = curl_init($apiUrl);
$fp = fopen($rutaDestino, 'wb');
if (!$fp) {
return "Error: No se pudo crear el archivo.";
}
// --- SOLUCIÓN AL DEADLOCK (Autobloqueo) ---
if (session_status() === PHP_SESSION_ACTIVE) {
session_write_close();
}
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Reducimos el timeout
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);
fclose($fp);
if ($httpCode == 200 && file_exists($rutaDestino) && filesize($rutaDestino) > 1000) {
if (@getimagesize($rutaDestino) !== false) {
return true;
}
}
@unlink($rutaDestino);
if (strpos($curlError, 'timed out') !== false) {
return "Error: La API tardó demasiado (Timeout).";
}
return "Error API (HTTP " . $httpCode . "). " . $curlError;
}
date_default_timezone_set('UTC');
$db = \Joomla\CMS\Factory::getContainer()->get('DatabaseDriver');
$app = \Joomla\CMS\Factory::getApplication();
// --- CONFIGURACIÓN DE LÍMITES Y PAGINACIÓN ---
$maxRegistrosAbsolutos = 32; // LÍMITE ESTRICTO DE RESULTADOS EN TOTAL
$limitePorPagina = 32; // 32 elementos = 8 filas exactas de 4 columnas
$paginaActual = $app->input->getInt('pagina', 1);
if ($paginaActual < 1) $paginaActual = 1;
// 1. Obtener el total de registros en la base de datos (SIN WHERE)
$queryTotal = $db->getQuery(true);
$queryTotal->select('COUNT(*)')->from($db->quoteName('noticiaseerr'));
$db->setQuery($queryTotal);
$totalRegistrosReales = (int) $db->loadResult();
// CORTAR el total de registros al límite máximo de 48
$totalRegistros = min($totalRegistrosReales, $maxRegistrosAbsolutos);
$totalPaginas = ceil($totalRegistros / $limitePorPagina);
// Seguridad: Si alguien fuerza una página mayor en la URL, ajustarla a la última válida
if ($paginaActual > $totalPaginas && $totalPaginas > 0) {$paginaActual = $totalPaginas;
}
// Calcular Offset
$offset = ($paginaActual - 1) * $limitePorPagina;
// Calcular cuántos registros pedir exactamente en la página actual para no pasarse de 48
$registrosAPedir = min($limitePorPagina, $totalRegistros - $offset);
// 2. Obtener los registros limitados (SIN WHERE)
$resultados = [];
if ($registrosAPedir > 0) {$query = $db->getQuery(true);
$query->select($db->quoteName(['fecha', 'titular', 'url', 'enfermedad']))
->from($db->quoteName('noticiaseerr'))
->where($db->quoteName('enfermedad') . ' = ' . $db->quote('Esofagitis eosinofílica'))
->order($db->quoteName('fecha') . ' DESC, ' . $db->quoteName('nid') . ' DESC')
->setLimit($registrosAPedir, $offset);
$db->setQuery($query);
$resultados = $db->loadObjectList();
}
echo "<h2>Últimas noticias</h2>";
if ($resultados) {// --- CONTENEDOR GRID DE 4 COLUMNAS ---
echo "<div style='display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-bottom: 30px;'>";
$nt = $offset + 1;
foreach ($resultados as $row) {
$urlObjetivo = $row->url;
$nombreImagen = "thumb_" . md5($urlObjetivo) . ".webp";
$rutaDestino = JPATH_SITE . '/images/thumbnails/noticias/' . $nombreImagen;
$urlImagen = \Joomla\CMS\Uri\Uri::root() . "images/thumbnails/noticias/" . $nombreImagen;
// Estilos para cada "celda" de la tabla/grid
echo "<div style='display: flex; flex-direction: column; font-size:14px; padding:15px; border: 1px solid #eaeaea; border-radius: 8px; background-color: #fcfcfc;'>";
echo "<div style='color: #666; font-size: 12px; margin-bottom: 8px;'><strong>#" . $nt . " | " . $row->fecha . "</strong></div>";
echo "<div style='flex-grow: 1; margin-bottom: 15px;'>";
echo "<a href='" . $urlObjetivo . "' target='_blank' style='text-decoration:none; font-weight:bold; color: #0056b3; line-height: 1.3;'>";
echo htmlspecialchars($row->titular) . "</a></div>";
$logError = "";
if (!file_exists($rutaDestino)) {
$status = generarThumbnailJoomla($urlObjetivo, $nombreImagen, 800);
if ($status !== true) {
$logError = $status;
}
}
if (file_exists($rutaDestino)) {
$imgSrc = $urlImagen . "?v=" . filemtime($rutaDestino);
echo "<a href='" . $urlObjetivo . "' target='_blank' style='display:block; text-align:center;'>";
echo "<img src='" . $imgSrc . "' style='width: 100%; height: auto; object-fit: cover; border: 1px solid #ccc; border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);'>";
echo "</a>";
} else {
echo "<div style='background: #ffe3e3; padding: 10px; border-radius: 4px;'><span style='color:#d9534f; font-size:11px; font-weight:bold;'>[" . $logError . "]</span></div>";
}
echo "</div>";
$nt++;
}
echo "</div>"; // Cierra el Grid
// --- RENDERIZAR NAVEGACIÓN DE PAGINACIÓN ---
if ($totalPaginas > 1) {
$uri = \Joomla\CMS\Uri\Uri::getInstance();
echo "<div style='text-align: center; margin-top: 20px; font-family: sans-serif;'>";
// Botón Anterior
if ($paginaActual > 1) {
$uri->setVar('pagina', $paginaActual - 1);
echo "<a href='" . $uri->toString() . "' style='display: inline-block; padding: 8px 12px; margin: 0 4px; background: #eee; color: #333; text-decoration: none; border-radius: 4px;'>« Anterior</a>";
}
// Números de Página
for ($i = 1; $i <= $totalPaginas; $i++) {
$uri->setVar('pagina', $i);
$estiloActivo = ($i == $paginaActual) ? "background: #0056b3; color: white;" : "background: #eee; color: #333;";
echo "<a href='" . $uri->toString() . "' style='display: inline-block; padding: 8px 12px; margin: 0 4px; text-decoration: none; border-radius: 4px; " . $estiloActivo . "'>" . $i . "</a>";
}
// Botón Siguiente
if ($paginaActual < $totalPaginas) {
$uri->setVar('pagina', $paginaActual + 1);
echo "<a href='" . $uri->toString() . "' style='display: inline-block; padding: 8px 12px; margin: 0 4px; background: #eee; color: #333; text-decoration: none; border-radius: 4px;'>Siguiente »</a>";
}
echo "</div>";
}
} else {echo "<p>No hay noticias disponibles.</p>";
}
?>{/source}