Cada mañana, el sistema de gestión hospitalaria genera y deja en una carpeta un archivo Excel con el inventario completo de la farmacia. Veinticinco mil registros. Una hoja con miles de filas, columnas con código nacional, descripción, almacén, unidades, importe. Todo lo que hay en cada uno de los almacenes del Servicio y del Hospital, congelado a una hora fija. Un dato útil, sí. Pero un dato que, abierto en bruto en una hoja de cálculo, no se puede mirar. Hay que llegar al despacho, abrirlo, recordar qué se quería buscar y empezar a peinar columnas. Cuando terminaba la mañana, el archivo estaba sin tocar.
Hace pocos meses lo intenté de otra manera. Ya tenía a Clowe, y quise que ese mismo dato, en lugar de quedarse en un Excel pesado en una carpeta, llegara cada día convertido en un cuadro de mando que se pudiera leer en un golpe de vista. Necesitaba una herramienta que respondiera a la pregunta más vieja del Servicio: ¿qué hay, dónde, que importe tiene y, en casos concretos como los antídotos, falta algo? Y la respuesta tenía que ser rápida de ejecutar.
El resultado actual es este. Un dashboard ligero, en HTML estático, que se puede abrir en cualquier dispositivo y que se actualiza solo cada día, tras alimentarlo de forma manual con el archivo Excel.

Cada caja del cabecero responde a una pregunta concreta. El valor total del inventario para saber cuánto dinero hay parado en farmacia. Las terapias avanzadas separadas, porque distorsionan cualquier media si se mezclan con el resto. Los almacenes activos, para saber cuántos puntos de stock se están moviendo. Y debajo, la evolución diaria del mes y la lista de los almacenes ordenados por importe. La pestaña por almacén muestra lo mismo aterrizado a un punto concreto del Servicio, con los productos que más capital tienen inmovilizado.

El flujo, contado en una imagen, es bastante simple por debajo. Yo descargo el Excel desde el software de gestión del hospital y lo dejo en una carpeta de Dropbox que Clowe vigila por mí. A partir de ahí no toco nada. El cron horario detecta el archivo, lo valida, lo limpia, transforma los veinticinco mil registros, los guarda en la base de datos y regenera el HTML del dashboard. Sincroniza el resultado a otra carpeta de Dropbox y, cuando abro el portátil, el dashboard está actualizado. Mi parte se reduce a dejar el Excel; la suya, a convertirlo en algo legible.

El dashboard, sin embargo, es solo la mitad. La otra mitad es lo que se puede preguntar encima del dashboard. Y aquí es donde la combinación de una base de datos del inventario con un agente capaz de interrogarla cambia bastante las cosas. Un día, sin más motivo que la curiosidad, le mandé un mensaje por Telegram pidiendo algo que un Excel no responde sin trabajo: dame los medicamentos que llevan más de cuatro meses sin moverse, almacén por almacén, con código, descripción, unidades e importe.
La respuesta llegó en un par de minutos. Mil setecientos treinta y dos referencias sin movimiento de stock desde el 1 de octubre de 2025, repartidas entre los almacenes del Servicio, sumando un valor de stock parado de algo más de dos millones setecientos mil euros. La cifra es lo bastante llamativa por sí misma para llevarla a una reunión, pero lo verdaderamente útil fue el Excel detallado que le pedí que generara junto con el resumen.

Pero la historia interesante de este caso de uso es la que vino después, no la primera ejecución. Al revisar las cifras, algo no me cuadraba, era todo muy excesivo. Algunos códigos que aparecían como sin movimiento no se correspondían con comprobaciones manuales que hice.lo que recordaba. Le pasé la duda directamente, con casos concretos, para revisar los criterios y que estaba pasando. Y detecto el problema, un stock que desaparecía un día quedándose a cero, no lo consideraba cambio de stock. Siempre siempre tenemos que aplicar nuestro criterio profesional, y no creer a ciegas lo que nos dice el agente.
Con el criterio cambiado, volvió a procesarlo, y esta vez salió mucha menos cantidad. Esa diferencia entre la primera versión y la corregida, expuesta sin maquillar, es lo que separa un dato útil de un dato que se publica sin contrastar.
De la conversación salió, casi por inercia, una pestaña nueva en el dashboard. La idea era que ese análisis dejara de ser puntual y quedara como vista permanente, permitiendo verificar por almacén y medicamento su gráfica de evolución de inventario.
Luego llegaron dos pestañas más. Una para los artículos sin pacto, donde se ve qué referencias están sin pacto establecido en cada momento, y otra para los antídotos, donde un código de colores avisa cuando alguno está por debajo del stock mínimo definido.


Al mirar el conjunto con perspectiva, hay tres cosas que merecen apuntarse. La primera es que la herramienta no sustituye el criterio, lo libera. El tiempo que antes se iba en extraer y limpiar datos vuelve disponible para mirarlos. La segunda es que el agente se equivoca, pero lo hace de una manera con la que se puede trabajar: si se le señala el error, lo reconoce y lo corrige. Eso, que parece menor, es lo que diferencia un colaborador de una caja negra. Y la tercera, quizá la más importante para cualquier responsable que esté pensando en algo parecido, es que un dashboard útil no nace cerrado. Las pestañas que más uso ahora no estaban en el diseño original; aparecieron porque una pregunta concreta se repetía y mereció su sitio fijo. Esa iteración solo es posible si la herramienta es lo bastante propia como para tocarla cuando hace falta.
El conjunto, hoy, es un sistema modesto en lo técnico y útil en lo cotidiano. No resuelve la gestión del Servicio. Pero pone delante de los ojos, todos los días, lo que antes había que perseguir.
Y a ti, ¿cuántas mañanas se te van en obtener un dato que ya tienes en algún sitio del sistema, pero al que no llegas sin trabajarlo?
Caso descrito por Javier, asistido en la redacción por Clowe 🦞.