← Todos los artículos
Italiano · English
01001101 01000101 01000100 01001001 01001100 01001111 01000111
01000001 01000111 01000101 01001110 01010100 01010011 00100000
S O L V E I
Studio · Ostinatamente · Le · Veloci · Evoluzioni · Informatiche
Innovative Applicative Software
Solvei logo
MediLog logo
Stefano Berrettini
Stefano Berrettini Creador
Plataforma de inteligencia artificial
solveiAgents
Plataforma de IA abierta

Doce agentes.
Una red.
Un sistema que nunca duerme.

De una interfaz Next.js a un orquestador FastAPI, hasta una constelación de agentes especializados que se ejecutan en local — y, por encima de todo, MediLog: la historia clínica electrónica a un clic de distancia.

Junio de 2026 Versión 1.0
En breve

solveiAgents es una plataforma multiagente de IA que funciona íntegramente en hardware privado, sin enviar datos sensibles a servicios cloud de terceros: un orquestador FastAPI coordina doce agentes especializados, cada uno impulsado por modelos open-weight ejecutados en local mediante Ollama. MediLog, el módulo principal, es la historia clínica electrónica completa — diagnóstico por imagen DICOM con visor OHIF, chat de paciente multimodal y telemedicina mediante mediasoup.

La visión

Una infraestructura de IA que vive en tu casa

solveiAgents es una plataforma multiagente de IA diseñada para funcionar íntegramente en hardware privado o VPS — sin enviar datos sensibles a servicios cloud de terceros. Una interfaz web moderna conversa con un orquestador central, que a su vez coordina un equipo de agentes especializados: cada uno con un dominio preciso, cada uno impulsado por modelos de lenguaje open-weight ejecutados en local mediante Ollama.

La arquitectura sigue un principio sencillo: un agente especializado siempre supera a un generalista. Un modelo entrenado para razonar sobre informes médicos no es el mismo que analiza mercados financieros. Un agente que conoce tu wiki personal produce resultados distintos de uno que navega por Wikipedia al azar. La especialización no es un límite — es una decisión de calidad.

El principio fundacional

Imagina un hospital universitario. No hay un solo médico que lo sepa todo: está el cardiólogo, el radiólogo, el neurocirujano, el médico de familia. Y está el jefe de servicio que coordina. solveiAgents es exactamente así — pero para tu flujo de trabajo digital. Cada agente sobresale en su dominio y el orquestador sabe siempre a quién preguntar.

Arquitectura de la plataforma
Next.js
Interfaz de usuario
→
Orchestratore FastAPI
LLM coordinador · Clerk Auth
→
Financiero
Wiki
Médico
Imágenes
Video
Noticias
Blog
Docling
El equipo especializado

Doce mentes, un solo objetivo

La plataforma incluye hoy doce agentes operativos, cada uno expuesto en un puerto dedicado y activado bajo demanda por el orquestador. El principio bajo demanda evita el desperdicio de recursos: los agentes duermen hasta que hacen falta, despiertan en pocos segundos y vuelven a dormirse tras un periodo de inactividad. Cada agente y cada servicio de infraestructura común vive en su propio "contenedor docker".

:8001 Financiero — análisis de cartera, mercados, noticias económicas
:8002 Wiki — base de conocimiento corporativa con OCR y grafo conceptual
:8003 Médico — literatura científica, análisis clínico, FHIR
:8004 Imágenes — análisis visual, descripción, clasificación
:8005 Vídeo — transcripción, análisis, resumen de vídeos
:8010 Noticias — agregación, síntesis, sentimiento a partir de fuentes múltiples
:8012 Blog — generación de artículos SEO con Hugo CMS integrado
:8014 Docling — conversión de PDF/DOCX/XLSX/PPTX/HTML → Markdown
:8015 PHR — historia clínica, DICOM, FHIR, chat de paciente
:8016 Whisper — transcripción de audio con faster-whisper large-v3-turbo
🏠 Privacidad desde el diseño

Todos los modelos LLM funcionan en local mediante Ollama. Los datos, especialmente los sanitarios, no salen nunca del servidor. No se envía ningún dato a OpenAI, Anthropic, Google ni otros proveedores cloud. Para las funciones que requieren conexión (literatura científica, noticias financieras), los datos transmitidos son exclusivamente consultas de texto anonimizadas.

"La verdadera inteligencia distribuida no consiste en tener un modelo más grande, sino en tener el modelo adecuado para cada tarea."
Cimientos sólidos

El stack que lo sostiene todo

Cada componente de la plataforma se elige por razones precisas: fiabilidad, interoperabilidad con los estándares abiertos y capacidad de funcionar sin dependencias cloud obligatorias.

Frontend

Interfaz y acceso

  • Next.js 14 con App Router y React Server Components
  • Clerk para la autenticación multiaplicación (agents + medilog)
  • Tailwind CSS con shadcn/ui y design tokens
  • WebSocket para el streaming de respuestas en tiempo real
  • nginx con terminación SSL/TLS y enrutamiento por vhost
Backend

Orquestación y agentes

  • FastAPI + SQLAlchemy async para todos los servicios
  • PostgreSQL con esquemas separados (phr, ref, fhir)
  • Alembic para la migración controlada de la base de datos
  • MinIO para el almacenamiento de objetos (documentos, imágenes)
  • Grafana + Prometheus + Loki para una observabilidad completa
✦
Módulo principal · Historia clínica electrónica

MediLog: el PHR que
piensa contigo

No un simple registro de pacientes. Una plataforma clínica completa con IA integrada: desde la recogida de datos hasta la videoconsulta, desde el análisis de los informes hasta el archivo DICOM, todo en un único sistema de código abierto que funciona en local y respeta la privacidad de los datos sanitarios.

29+ Migraciones de BD
160k Fármacos AIFA
16k Códigos ICD-9-CM
140+ Tests automáticos
Núcleo clínico

Historia clínica completa

El corazón de MediLog es el esquema phr de PostgreSQL: pacientes, alergias, eventos clínicos con código ICD-9-CM italiano, terapias farmacológicas con fármacos AIFA, observaciones diarias, documentos adjuntos y estudios DICOM, todo enlazado y consultable.

👤

Pacientes y anamnesis

Gestión del paciente con datos demográficos, antecedentes familiares, alergias (fármacos/alimentos/ambiente), terapias con dosis, frecuencia y fármaco AIFA.

📅

Línea de tiempo clínica

Línea de tiempo cronológica de los eventos con código ICD-9-CM, descripción, fechas y pins de documentos/DICOM asociados. Visualización de calendario interactiva.

📄

Archivo de documentos

Carga de documentos (PDF, imágenes, audio, Markdown) con almacenamiento en MinIO. OCR automático mediante Docling, resumen con IA, búsqueda de texto completo en todas las entidades.

🔍

Búsqueda global

GET /search?q= unificada sobre pacientes, eventos, documentos, fármacos, centros, ICD-9-CM. Navegación desde la barra superior con Enter.

📋 Bases de datos integradas

MediLog incluye cargadores listos para: fármacos AIFA (~160k entradas, clase A/C/SOP/H/OTC), centros sanitarios AIFA (~3,3k, cp1252), ICD-9-CM del Ministerio de Sanidad (~16,2k códigos, parser de formato no estándar), LOINC para análisis de laboratorio. Todos actualizables mediante el endpoint administrativo POST /phr/admin/ref/update.

Diagnóstico por imagen

DICOM nativo con visor OHIF

Los estudios de diagnóstico por imagen (RX, TC, RM, ecografías) se cargan directamente en el sistema mediante subida de carpeta, incluso con archivos sin extensión. Orthanc gestiona el almacenamiento DICOM con deduplicación por StudyInstanceUID: volver a cargar un estudio ya presente actualiza el recuento de series sin crear duplicados.

El visor OHIF lo sirve directamente nginx, accesible tanto desde agents.solvei.it como desde medilog.solvei.it, con autenticación Clerk mediante el auth-validator interno. La URL de visualización se construye en el frontend a partir de window.origin + StudyInstanceUID, usando rutas dicom-web relativas.

Integración clínica

Cada estudio DICOM puede fijarse (pin) en la línea de tiempo clínica: un icono CalendarPlus en cada fila de los estudios abre un diálogo que permite vincular el estudio a un evento existente o crear uno nuevo. En la línea de tiempo, la insignia DICOM es pulsable y abre directamente el visor OHIF.

Asistencia clínica con IA

Chat de paciente con análisis multimodal

El chat clínico integrado no es un chatbot genérico: accede a la historia del paciente, lee los documentos adjuntos, analiza las imágenes DICOM mediante modelos de visión (qwen3-vl) y consulta la literatura científica internacional (PubMed, Europe PMC, Semantic Scholar), adjuntando las fuentes citadas con enlaces directos al texto completo en acceso abierto.

El flujo técnico: agent-phr prepara los adjuntos de MinIO/Orthanc en una carpeta compartida /data/uploads y hace de proxy hacia agent-medical mediante SSE streaming. El token de Clerk se renueva en cada petición mediante registerTokenGetter, evitando el problema del token en caché a 60 s que causaba 401 silenciosos.

🧠

Análisis visual de DICOM

El médico puede pedir "dime qué ves en esta ecografía": el chat analiza las imágenes DICOM con qwen3-vl mediante Ollama. Se admiten secuencias multi-frame.

📚

Literatura científica

Flag cite_sources: cada respuesta sobre diagnósticos o terapias se enriquece con enlaces a publicaciones pertinentes de PubMed/PMC en acceso abierto.

🔬

Consultas de laboratorio en NLP

"Muéstrame las últimas 5 glucemias": /labs/parse-query interpreta la petición en lenguaje natural y recupera los valores LOINC correspondientes.

📎

Adjuntos contextuales

Los documentos de MinIO y los estudios de Orthanc se preparan y se dejan listos (staging) automáticamente antes de cada llamada al modelo de visión.

Análisis de laboratorio

Extracción estructurada de los informes

Carga un informe de sangre en PDF o imagen: MediLog lo procesa con el OCR de Docling y luego lo envía a agent-medical para la extracción estructurada de los valores: nombre del analito, valor numérico, unidad de medida, intervalo de referencia, código LOINC. El resultado se presenta en una revisión interactiva antes de guardarlo: el clínico puede corregir valores erróneos o añadir notas.

Los valores guardados alimentan la vista Exámenes con gráficos recharts de cada analito a lo largo del tiempo. Más de 60 analitos admitidos en el mapeo LOINC: glucemia, hemograma completo, función renal y hepática, lípidos, hormonas tiroideas, marcadores cardíacos, coagulación, vitamina D, HbA1c, dímero D.

🏷️ Estándares LOINC y UCUM

Cada observación se codifica según LOINC (Logical Observation Identifiers Names and Codes) y UCUM (Unified Code for Units of Measure). Los valores también se pueden exportar como recursos FHIR R4 Observation hacia HAPI FHIR. El intervalo de referencia se deriva automáticamente de formatos italianos ("da X a Y", "< 200", "superiore a 60").

Telemedicina

Videovisita con mediasoup SFU

MediLog incluye un sistema completo de videollamada SFU (Selective Forwarding Unit) basado en mediasoup 3.20, la misma tecnología que usan Zoom y Teams, pero ejecutada en local sin dependencias cloud.

Sala de espera
El paciente crea una sala (phr.call_rooms) y comparte el enlace. El médico accede con un token guest UNIQUE, sin necesidad de cuenta de Clerk.
En la llamada
Vídeo + audio bidireccional, compartición de pantalla (replaceTrack sobre un único producer de vídeo, compatible con todos los navegadores), late-join con producers existentes, expulsión automática de peers obsoletos (stale-peer eviction).
Grabación
Grabación en el servidor mediante PlainTransport + ffmpeg. Se puede elegir solo audio o audio+vídeo. Al terminar, agent-whisper (faster-whisper large-v3-turbo) transcribe automáticamente el archivo y se guarda como documento con transcripción editable.
Infraestructura
agent-call Node.js 22 (:2000) + servidor TURN coturn (:3478, network_mode:host). MEDIASOUP_ANNOUNCED_IP = IP LAN (crítico: no 127.0.0.1, Docker Desktop no reenvía UDP al loopback).
Interoperabilidad clínica

FHIR R4 y Patient Summary IPS

Todos los datos clínicos de MediLog están disponibles en formato FHIR R4 mediante HAPI FHIR (:8080). El Patient Summary conforme al estándar IPS (International Patient Summary) se genera como Bundle FHIR e incluye: Patient, AllergyIntolerance, MedicationStatement, Condition (ICD-9-CM → codificación ICD-10 para FHIR), Observation (valores de laboratorio LOINC), DocumentReference para los documentos adjuntos.

El endpoint GET /phr/fhir/bundle genera el bundle bajo demanda. Los datos FHIR también están cubiertos por la copia de seguridad diaria pg_dump, ya que HAPI usa el mismo PostgreSQL (currentSchema=fhir).

Fiabilidad en producción

Siempre activo, a prueba de reinicios, con copias de seguridad

La copia de seguridad diaria (3:00 UTC) lo cubre todo: la base de datos relacional PostgreSQL mediante pg_dump (esquemas phr/ref/fhir), los blobs de MinIO (documentos e imágenes) y los estudios de Orthanc, todos montados en solo lectura en el contenedor del orquestador y archivados en la carpeta del host ./data/backups.

✦
Stack tecnológico

Todo el software que alimenta la plataforma

Infraestructura:

nginx Docker Compose PostgreSQL 16 Alembic MinIO Grafana Prometheus Loki

Backend:

FastAPI SQLAlchemy async Pydantic v2 Ollama faster-whisper Docling HAPI FHIR Orthanc DICOM

Frontend:

Next.js 14 React 18 Clerk Auth v5 Tailwind CSS shadcn/ui Recharts OHIF Viewer

Comunicación en tiempo real:

mediasoup 3.20 socket.io coturn WebRTC SSE streaming WebSocket
🚀 Hoja de ruta: próximos pasos

En desarrollo: VM GPU OCI A10.1 Frankfurt para inferencia de visión acelerada (qwen3-vl:4b ahora parcialmente en CPU → ~5 min/estudio; objetivo <30 s en A10). Arquitectura decidida: CPU siempre activa (Ollama con modelos pequeños) + GPU bajo demanda con facturación en pausa al detenerla, en una VCN privada de OCI sin que los datos PHI salgan de la región.

▶ Demo
solveiAgents en acción — vídeo de demostración
La plataforma solveiAgents en funcionamiento: orquestador, agentes especializados y MediLog PHR en una demo completa.