Hola, comunidad:
¿Desarrolláis y gestionáis aplicaciones con InterSystems IRIS SQL?
🎓 ¡Ya están disponibles dos niveles de certificación —especialista y profesional (nuevo)!
SQL is un lenguaje estándar para el almacenamiento, manipulación y recuperación de datos en bases de datos relacionales.
Hola, comunidad:
¿Desarrolláis y gestionáis aplicaciones con InterSystems IRIS SQL?
🎓 ¡Ya están disponibles dos niveles de certificación —especialista y profesional (nuevo)!
Hola a todos,
El equipo de Certificación de InterSystems Learning Services se complace en anunciar el lanzamiento de nuestro nuevo examen profesional de SQL de InterSystems IRIS. Ya está disponible para su compra y programación en el catálogo de exámenes de InterSystems. Este examen está dirigido a expertos en IRIS SQL y aborda una variedad de temas avanzados de IRIS SQL que podéis encontrar en la página del examen.
Esta demostración te guía a través de la nueva funcionalidad de particionamiento de tablas en IRIS SQL, explicando qué hace y cómo funciona. Usaremos solo unas pocas decenas de filas para mostrar el concepto, aunque la funcionalidad está pensada para conjuntos de datos mucho más grandes.
Si queréis una introducción más breve y a alto nivel sobre Table Partitioning, podéis consultar el módulo de formación online Managing Tables with Partitioning in InterSystems IRIS
ℹ️ Table Partitioning está incluido en IRIS 2026.1 como una funcionalidad experimental.
Las versiones de mantenimiento 2025.1.4 y 2024.1.6 de la plataforma de datos InterSystems IRIS®, InterSystems IRIS® for HealthTM y HealthShare® Health Connect ya están disponibles de forma general (GA). Estas versiones incluyen correcciones para una serie de alertas y avisos emitidos recientemente, incluyendo los siguientes:
InterSystems IRIS 2026.1 ya está aquí, y viene cargado de potentes mejoras diseñadas para ayudaros a escalar la gestión de vuestros datos como nunca antes. Tanto si os ocupáis de los aspectos operativos de gestionar conjuntos de datos masivos como si buscáis optimizar los costes de almacenamiento, esta versión incorpora numerosas funcionalidades para simplificar vuestra relación con los datos y afrontar los crecientes retos de los conjuntos de datos muy grandes.
¡Hola, Comunidad!
Estamos muy emocionados de compartir que acabamos de lanzar un nuevo tutorial interactivo y gratuito, diseñado especialmente para quienes son nuevos en InterSystems IRIS y buscan una introducción clara y práctica a sus conceptos fundamentales.
🧑🏫 Modelos de datos de InterSystems IRIS🧑💻

Este recurso gratuito te puede ayudar en tu preparación 👇
Las certificaciones de InterSystems no son sencillas: necesitas practicar con preguntas alineadas a los objetivos reales del examen.
https://exam-prep.es es una plataforma creada para eso: practicar, detectar puntos débiles y llegar mejor preparado al examen.
🧠 ¿Qué encontrarás?
10:47 AM — Los resultados de creatinina de José García llegan al servidor FHIR del hospital. 2.1 mg/dL — un aumento del 35% frente al mes pasado.
¿Qué pasa después?
Sin chatbot. Sin prompts manuales. Sin razonamiento de caja negra.
Esto es soporte a la decisión clínica impulsado por eventos con trazabilidad completa:

✅ Activado automáticamente por eventos FHIR ✅ Razonamiento multiagente (contexto, guías, recomendaciones) ✅ Trazabilidad completa en SQL (cada decisión, cada fuente de evidencia) ✅ Salidas nativas FHIR (DiagnosticReport publicado en el servidor)
Construido con:
Aprenderás: 🖋️ Cómo orquestar flujos de IA agéntica dentro de sistemas de interoperabilidad listos para producción, y por qué la explicabilidad importa más que la precisión por sí sola.
Las versiones de mantenimiento 2025.1.3 de la plataforma de datos InterSystems IRIS®, InterSystems IRIS®for Health™ y HealthShare®Health Connect ya están disponibles de manera general (GA).
ObjectScript permite definir métodos que aceptan un número variable de argumentos usando la sintaxis `args...`. En lugar de fijar cuántos parámetros recibe un método, dejas que el llamante decida cuántos enviar.
Se pueden invocar de dos formas:
1. Con argumentos individuales: `metodo(val1, val2, val3)`
2. Expandiendo un array: `metodo(args...)`
Puedes definir un método con un parámetro fijo y un número variable de extras:
ClassMethodAs%String¡Hola, comunidad!
Estamos encantados de compartir un nuevo vídeo de nuestro YouTube de InterSystems Developers:
⏯ Multihilo en una interfaz HL7 y escalado más allá de las limitaciones FIFO @ Ready 2025
SETasigna un valor a la variable en TIEMPO DE EJECUCIÓN.
#DIM declara la variable y su tipo de datos en TIEMPO DE COMPILACIÓN.
SET |
#DIM |
|
Hace que las variables sean dinámicas. |
Mejora la legibilidad. |
|
Sin declaración de tipo de datos. |
Permite la autocompletación en el IDE. |
|
Tiempo de ejecución |
Útil para referencias a objetos. |
#DIMAs%StringSET o #DIM? Vuestro diseño, vuestras reglas.En el día a día de cualquier organización, la información fluye entre aplicaciones, servicios y sistemas muy distintos entre sí. Integrarlos de forma eficiente puede ser un reto... a menos que uses InterSystems IRIS.
En este nuevo vídeo te muestro cómo construir un flujo completo de integración combinando múltiples tecnologías —APIs REST, ficheros CSV, bases de datos y servicios SOAP— todo dentro del entorno visual que ofrece el motor de interoperabilidad de IRIS.
👉 Puedes ver el vídeo aquí:
Hola a todos. De nuevo, me gustaría compartir lo que estoy estudiando recientemente: crear tablas externas usando SQL a través de JDBC.
Como estoy aprendiendo sobre IRIS BI al mismo tiempo, empecé con este entorno docker de Sample-BI.
https://github.com/intersystems/Samples-BI
Después de iniciar el entorno, iniciad sesión en el portal de administración en http://localhost:52773/csp/sys/UtilHome.csp con el usuario Superuser.
Cambiad el namespace a IRISAPP.
.png)
😀 Veremos que todos los datos de ejemplo están almacenados en este namespace IRISAPP
Me complace anunciar la publicación de gj :: dataLoader, una nueva extensión de VS Code que simplifica la tarea de cargar datos desde archivos CSV locales en tablas SQL de vuestros servidores InterSystems IRIS.
Aquí tenéis un vídeo introductorio:
gj :: dataLoader ya está disponible en Marketplace para su instalación directa en VS Code. Es mi propuesta para el concurso “Bringing Ideas to Reality” 2025 y lleva a la práctica esta idea: https://ideas.intersystems.com/ideas/DPI-I-667
Se agradecen vuestros comentarios.
.png)
Una forma sencilla de conectar, explorar y depurar los Servicios en la Nube de InterSystems mediante JDBC con sqlline.
Hola,
Cuando abrimos un terminal en IRIS, entramos en el shell de ObjectScript. Dentro de este shell, podemos ejecutar comandos de IRIS, como:

En otras palabras, el comando ObjectScript se ejecuta en el shell actual. Pero siempre es bueno recordar que IRIS tiene otros shells.
Un aspecto muy interesante son los atajos. Podemos acceder a estos shells mediante sus llamadas o a través de atajos, como se muestra en la tabla siguiente:
|
Shell |
Llamada |
Atajo |
|
SQL |
Do $SYSTEM.SQL.Shell() |
:sql |
|
Python |
Do $SYSTEM.Python. |
Hola comunidad,
Quería compartir mi experiencia trabajando en proyectos con grandes volúmenes de datos. A lo largo de los años, he tenido la oportunidad de manejar enormes cantidades de datos de pacientes, datos de aseguradoras y registros transaccionales mientras trabajaba en la industria hospitalaria. He tenido la oportunidad de crear informes muy extensos que requerían usar lógicas avanzadas para obtener datos de múltiples tablas, cuyos índices no me ayudaban a escribir un código eficiente.
Esto es lo que he aprendido sobre cómo gestionar grandes volúmenes de datos de manera eficiente.
Elegir el método de acceso a datos adecuado
Como todos sabemos en esta comunidad, IRIS ofrece múltiples formas de acceder a los datos. Elegir el método correcto dependerá de lo que necesitemos.
Set ToDate=+H
Set FromDate=+$H-1 For Set FromDate=$O(^PatientD("Date",FromDate)) Quit:FromDate>ToDate Do
. Set PatId="" For Set PatId=$Order(^PatientD("Date",FromDate,PatID)) Quit:PatId="" Do
. . Write $Get(^PatientD("Date",FromDate,PatID)),!Tuve el mismo problema que contaba Jerry en el siguiente enlace al conectar IRIS con el servidor SQL. Mi conexión ODBC está configurada para autenticarse mediante autenticación nativa de Windows.
¿Cómo lo solucioné yo?
Me uní a InterSystems hace menos de un año. Sumergirme en ObjectScript e IRIS fue emocionante, pero también estuvo lleno de pequeñas sorpresas que me hicieron tropezar al principio. En este artículo recojo los errores más comunes que yo, y muchos compañeros nuevos, cometemos, explico por qué ocurren y muestro ejemplos concretos junto con soluciones prácticas. Mi objetivo es ayudar a otros desarrolladores que empiezan a ahorrar tiempo y evitar los mismos obstáculos en el camino.
¡Hola a todos!
Es muy fácil importar datos CSV en IRIS. Pero, ¿qué pasa si queremos preservar los IDs originales del CSV?
Recientemente me encontré con la situación en la que necesitaba importar dos CSVs en IRIS que estaban vinculados por una columna que hacía referencia a la columna de otro CSV: una situación típica de clave primaria y clave externa, donde csv1 contiene esta columna como clave primaria, y csv2 como clave externa con IDs relacionados con csv1.

La imagen fue generada por ChatGPT, así que no lo culpéis: hizo lo mejor que pudo al generar países como claves primarias con una relación countries.csv–cities.csv :)
Algo que he aprendido a lo largo de los años es que, por muy pulida que esté vuestra lógica de aplicación, el rendimiento de la base de datos acabará haciendo o deshaciendo la experiencia de usuario. Trabajando con InterSystems IRIS, recientemente me topé con esto de primera mano. Un cliente nuestro estaba construyendo un panel de informes que funcionaba a la perfección en las pruebas, pero cuando el conjunto de datos de producción creció hasta millones de registros, los tiempos de respuesta se arrastraban.
A primera vista, parecía un problema de hardware.
En el artículo anterior vimos cómo construir un agente de IA de atención al cliente con smolagents e InterSystems IRIS, combinando SQL, RAG con búsquedas vectoriales e interoperabilidad.
En ese caso, utilizamos modelos en la nube (OpenAI) para el LLM y los embeddings.
En esta ocasión daremos un paso más: ejecutar el mismo agente, pero con modelos locales gracias a Ollama.
Las preguntas de atención al cliente pueden abarcar datos estructurados (pedidos, productos 🗃️), conocimiento no estructurado (docs/FAQs 📚) y otros sistemas integrados (actualizaciones de envío 🚚). En este post vamos a construir un agente de IA compacto que cubre los tres—usando:
Al comenzar con InterSystems IRIS o Caché, los desarrolladores a menudo se encuentran con tres conceptos fundamentales: Dynamic Objects, Globals y Relational Table. Cada uno tiene su papel en la construcción de soluciones escalables y mantenibles. En este artículo recorreremos ejemplos prácticos de código, destacaremos buenas prácticas y mostraremos cómo estos conceptos se relacionan entre sí.
1. Trabajando con Dynamic Objects:
Los objetos dinámicos (%DynamicObject y %DynamicArray) permiten a los desarrolladores manipular estructuras similares a JSON directamente en ObjectScript.
El artículo de la August Article Bounty en Global Masters llamó mi atención, y uno de los temas propuestos me pareció bastante interesante para tratarlo. Así que esto es lo que me gustaría contarles a mis estudiantes sobre las tablas en IRIS y cómo se relacionan con el modelo de objetos.
Ante todo, InterSystems IRIS cuenta con un modelo de datos unificado. Esto significa que, cuando trabajáis con datos, no estáis atados a un único paradigma. Los mismos datos pueden ser accedidos y manipulados como una tabla SQL tradicional, como un objeto nativo o incluso como un array multidimensional (un global).
Esto quiere decir que, cuando creáis una tabla en SQL, IRIS genera automáticamente una clase de objeto correspondiente. Y, cuando definís una clase de objeto, IRIS la pone automáticamente a disposición como una tabla SQL. Los datos en sí mismos se almacenan una sola vez en el motor de almacenamiento multidimensional de IRIS, que es muy eficiente. El motor SQL y el motor de objetos son simplemente diferentes “lentes” para ver y trabajar con los mismos datos.
Primero, veamos la correlación entre el modelo relacional y el modelo de objetos:
| Relacional | Objeto |
| Tabla | Clase |
| Columna | Propiedad |
| Fila | Objeto |
| Clave primaria | Identificador de objeto |
No siempre hay una correlación 1:1, ya que podéis tener varias tablas que representen una misma clase, por ejemplo. Pero es una regla general.
La inyección SQL sigue siendo una de las vulnerabilidades más críticas en las aplicaciones basadas en bases de datos, ya que permite a los atacantes manipular consultas y, potencialmente, acceder o comprometer datos sensibles. En InterSystems IRIS, los desarrolladores tienen acceso tanto a SQL Dinámico como a SQL Embebido, cada uno con características distintas. Comprender cómo usarlos de forma segura es esencial para prevenir la inyección SQL.
El SQL Dinámico construye consultas como cadenas durante la ejecución.
Quizá esto sea bien conocido, pero quería ayudar a compartirlo.
Considerad que tenéis las siguientes definiciones de clases persistentes:
Una clase Factura con una propiedad que referencia a Proveedor.
ClassExtends%PersistentAsy Proveedor
Si llamáis al método Build en Sample.Invoice, podéis consultar esto con SQL.
Asy veréis
.png)
El área que trata este artículo es cómo decidir crear una dimensión sobre Proveedor.
Lo que he comprobado que funciona bien es seguir este patrón.
InterSystems IRIS permite crear APIs REST utilizando clases ObjectScript y el framework %CSP.REST. Esta funcionalidad permite desarrollar servicios modernos para exponer datos a aplicaciones web, móviles o integraciones externas.
En este artículo aprenderás cómo crear una API REST básica en InterSystems IRIS, incluyendo:
GET y POSTDemo.ProductoClass Demo.Producto Extends (%Persistent, %JSON.Adaptor) {
Property Nombre As %String;
Property Precio As %Numeric(10,2);
}¡Hola desarrolladores!
El Cuarto Concurso de Artículos Técnicos ha terminado. ¡Gracias a todos los participantes!
🤩 Habéis aportado 10 ARTÍCULOS INCREÍBLES, y ya podemos anunciar los ganadores.
Un fuerte aplauso para estos desarrolladores y sus artículos:
🏆 Nominación de los expertos - los ganadores han sido elegidos por un jurado especialmente formado para el concurso:
🥇 1er puesto: Carlos Castro con ¡POLICIA POLICIA! ¡¡Hay un intruso!! (Notificaciones Telegram y manejo URLs OAUTH2)