Las Producciones de InterSystems IRIS proporcionan un marco potente para conectar sistemas heterogéneos a través de distintos protocolos y formatos de mensajes de forma fiable, observable y escalable. intersystems_pyprod, abreviatura de InterSystems Python Productions, es una biblioteca de Python que permite a los desarrolladores construir estos componentes de interoperabilidad completamente en Python.
IRIS 2026.1 proporcionó tablas particionadas como una nueva opción para grandes conjuntos de datos. Es una gran mejora, ya que ofrece estandarización de esta funcionalidad.
Sin embargo: antes también era posible hacerlo, cumpliendo los requisitos y dejando espacio para la creatividad. Era menos elegante, con un poco más de código y menos automatismos.
Una canalización (pipeline) de entrenamiento continuo (CT) formaliza un modelo de aprendizaje automático (ML) desarrollado mediante la experimentación en ciencia de datos, utilizando los datos disponibles en un momento dado. Prepara el modelo para su despliegue, al tiempo que permite actualizaciones autónomas a medida que se dispone de nuevos datos, junto con capacidades sólidas de monitorización del rendimiento, registro (logging) y registro de modelos para fines de auditoría.
InterSystems IRIS ya proporciona casi todos los componentes necesarios para soportar un pipeline de este tipo.
Hola comunidad,
Echad un vistazo a estos nuevos vídeos en el aprendizaje online y familiarizaos con las nuevas funcionalidades e interfaces de la última versión de los productos de InterSystems®. Todos los vídeos también están disponibles en el canal de YouTube de Learning Services.
Además, echad un vistazo a un vídeo para nuevos desarrolladores de ObjectScript y a una guía para usuarios de HealthShare® que estén actualizando sus despliegues.
Vídeos de la última versión de los productos de InterSystems
Hola a todos. ¡Soy yo otra vez! 😀😀
Recientemente estuve intentando organizar algunos materiales de aprendizaje sobre InterSystems IRIS 😆, y me di cuenta de que los recursos están bastante dispersos 🤐.
Así que he reunido aquí una lista —agrupada por categorías— para cualquiera que:
- sea nuevo en InterSystems
- o quiera profundizar en áreas específicas
También añado parte de mi propia experiencia sobre lo que me funcionó (y lo que no, aunque quizá solo no me funcionó a mí 🤫🤐).
1. Para empezar
Si no sabéis por dónde empezar, comenzad aquí:
El teorema PACELC fue creado por Daniel Abadi (Universidad de Maryland, College Park) en 2010 como una extensión del teorema CAP (creado por Eric Brewer: consistencia, disponibilidad y tolerancia a particiones). Ambos ayudan a diseñar cómo arquitecturar el funcionamiento más adecuado de las plataformas de datos en entornos distribuidos bajo los aspectos de consistencia frente a disponibilidad. La diferencia es que PACELC también permite analizar la mejor opción para entornos no distribuidos, convirtiéndose en el estándar de referencia para considerar todos los escenarios posibles al definir vuestra topología de despliegue y arquitectura.
El teorema CAP establece que en sistemas distribuidos no es posible tener simultáneamente consistencia, disponibilidad y tolerancia a particiones, por lo que requiere elegir dos de las tres, según el siguiente diagrama.

Fuente: https://medium.com/nerd-for-tech/understand-cap-theorem-751f0672890e
Preguntas frecuentes de InterSystems
Las propiedades definidas en colecciones de listas (Property XXX As list of %String;) se pueden manipular mediante las funciones SQL: $LISTBUILD() y $LISTFROMSTRING().
Para obtener más información sobre cada función SQL, consulte la página de documentación que se indica a continuación.
InterSystems SQL Reference - $LISTBUILD() [IRIS]
IRIS SQL Reference - $LISTFROMSTRING() [IRIS]
Caché SQL Reference - $LISTBUILD()
Caché SQL Reference - $LISTFROMSTRING()
/// Class definition exampleClassExtendsBienvenidos al resumen mensual de actualizaciones y lanzamientos de VS Code y de las extensiones relacionadas con InterSystems, relevantes para los desarrolladores de IRIS.
Si estáis migrando de InterSystems Studio a VS Code, o queréis profundizar vuestro conocimiento, consultad los cursos de formación de VS Code de George James Software: georgejames.com/vscode-training.
Versión 1.
En el panorama sanitario moderno, encontrar pacientes clínicamente similares a menudo es como buscar una aguja en un pajar. Las búsquedas tradicionales por palabras clave suelen fallar porque el lenguaje médico es muy matizado; una búsqueda de "Heart Failure" podría no encontrar un registro que contenga "Congestive Cardiac Failure".
Me complace compartir iris-medmatch, un motor de emparejamiento de pacientes impulsado por IA y desarrollado sobre InterSystems IRIS for Health
Preguntas frecuentes de InterSystems
El comando $ZF(-100) se utiliza en el siguiente formato.
$ZF100El argumento "/shell" es requerido al ejecutar comandos del sistema operativo (OS).
Por ejemplo, usad mkdir así:
// mkdir C:\temp\newdir
Si un comando tiene múltiples argumentos, ponedlos entre comillas y separadlos con comas, como en este ejemplo.
También, usad la ejecución síncrona/asíncrona así.
Consultad la documentación para más detalles.
En este artículo, pretendo demostrar un par de métodos para añadir fácilmente validación a las APIs REST en InterSystems IRIS Data Platform. Creo que un enfoque specification-first es una idea excelente para el desarrollo de APIs. IRIS ya dispone de funcionalidades para generar un esqueleto de implementación a partir de una especificación y publicar esa especificación para desarrolladores externos (usadlo junto con iris-web-swagger-ui para obtener los mejores resultados). Lo único importante que aún no está implementado en la plataforma es el validador de solicitudes. ¡Vamos a solucionarlo!
¡Hola!
En mi último artículo, hice una guía paso a paso sobre cómo podéis probar a desplegar InterSystems IRIS Community Edition, o IRIS for Health Community Edition, gratis en AWS. En este seguimiento, os mostraré lo mismo para el siguiente mayor proveedor de nube, Microsoft Azure.
Al igual que con AWS, Azure también ofrece una opción gratuita al registraros, aunque es un poco menos generosa: recibís 200 $ de crédito gratis para gastar en el primer mes.
Durante el último año, el equipo de desarrollo de CCR ha priorizado cambios en la aplicación CCR para mostrar y fomentar mejores prácticas en su uso. Este artículo destaca algunas de las áreas en las que nos hemos centrado:
- Panel de organización
- Alertas del sistema
- Higiene de ramas
En cada una de estas áreas, hemos aumentado la visibilidad de posibles problemas en el uso de CCR y proporcionado herramientas para que los usuarios los aborden de manera proactiva.
Panel de organización
Hemos seguido ampliando la información disponible en la página de detalles de la organización.
.png)
InterSystems API Manager (IAM) es un componente clave de la plataforma de datos InterSystems IRIS y ofrece una gestión centralizada de APIs con un fuerte enfoque en la seguridad. IAM simplifica todo el ciclo de vida de las APIs, desde su creación hasta su retirada, y proporciona un portal de desarrolladores para facilitar el descubrimiento y la integración de APIs. Las funciones de control de acceso permiten a los administradores definir permisos precisos, y IAM se integra de forma fluida con la plataforma de datos IRIS, mejorando las capacidades de gestión e integración de datos.
InterSystems IRIS se basa en una arquitectura que separa la organización lógica de los datos (namespaces - espacios de nombres) de su ubicación física de almacenamiento (bases de datos). Comprender esta separación y la distinción entre espacios de nombres y bases de datos es fundamental para una gestión de datos eficaz, la seguridad y, especialmente, para compartir datos con alto rendimiento.
En este artículo, explicaré estos componentes fundamentales y ofreceré una guía práctica sobre cómo aprovechar los mapeos de globals para compartir estructuras de datos nativas (globals) entre diferentes entornos lógicos.
Bases de datos: la realidad física
Una base de datos representa la realidad física de dónde se almacenan los datos en el disco. Antes que nada, es un archivo en un sistema de archivos llamado IRIS.dat (por ejemplo, <carpeta de instalación>\mgr\user\IRIS.DAT). El tamaño máximo de este archivo es de 32 TB. Es el contenedor de todos los datos y del código. Las bases de datos son gestionadas por el núcleo de IRIS, que se encarga del caché, el registro en diario (journaling) y el registro de transacciones a nivel de archivo físico.
Al instalar el DBMS de InterSystems IRIS, se crean automáticamente las siguientes bases de datos:

A veces es más conveniente, más eficiente y más seguro limitar las búsquedas FHIR a "listas" de recursos predefinidas.
Desde la versión v2025.1, soportamos varias funcionalidades relacionadas con listas en nuestro servidor FHIR.
Aquí las destacaré y os proporcionaré algunos ejemplos.
También en versiones anteriores podíais definir vuestro servidor FHIR para aceptar solicitudes mediante OAuth 2.0 (por ejemplo, para un cliente SMART on FHIR), pero hoy en día, con la versión v2024.3, que se lanzó hace ya un tiempo, existe una nueva funcionalidad que permite hacerlo de forma más sencilla: el OAuth FHIR Client QuickStart.
.png)
Rúbrica de preguntas frecuentes de InterSystems
Para ejecutar SQL en la terminal, usad $system.SQL.Shell().
Consultad el siguiente ejemplo.
SAMPLES>do $System.SQL.Shell()
SQL Command Line Shell
---------------------------------------------------- The command prefix is currently set to: <>.
Enter q to quit, ? for help.
SAMPLES>>select * from Sample.Vendor
1. select * from Sample.
Hay un patrón con el que me he encontrado varias veces en el que necesito usar un archivo o carpeta temporal y que se limpie en algún momento más adelante.
Lo natural aquí es seguir los patrones de "Robust Error Handling and Cleanup in ObjectScript" usando un try/catch/pseudo-finally o un objeto registrado para gestionar la limpieza en el destructor. %Stream.File* también tiene una propiedad “RemoveOnClose” que podéis activar… pero usadla con cuidado, porque podríais eliminar accidentalmente un archivo importante, y este indicador se reinicia al llamar a %Save(), así que tendréis que volver a ponerlo a 1 después de hacerlo.
Pero hay un caso complicado: imaginad que necesitáis que el archivo temporal sobreviva en un nivel de pila superior. Por ejemplo:
Rúbrica de preguntas frecuentes de InterSystems
Al exportar usando el método Export() de la clase %Library.Global, si el formato de exportación (cuarto argumento: OutputFormat) está establecido en 7, “Block format/Caché block format (%GOF)”, no se pueden exportar globals mapeadas (solo se exportan las globals de la base de datos global predeterminada del espacio de nombres). Para exportar globals mapeadas en “Block format/Caché block format (%GOF)”, especificad el directorio de la base de datos a la que queréis mapearlas en el primer parámetro de %Library.Global.Export().
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.
- SQL
- Python
- TSQL
- MDX
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. |
En mi artículo anterior en el que presentaba gj :: configExplorer señalé cómo un aparente error en los elementos de Windows de la API nativa para Node.js hace que actualmente no sea posible ejecutarlo en VS Code en un escritorio Windows. En un comentario a ese artículo ofrecí una solución alternativa, pero esta requiere un host Linux con Docker al que podáis conectaros por SSH.
Si no tenéis un destino adecuado, ahora es posible aprovechar vuestro Docker Desktop local de Windows. Aquí os explico cómo:
- Abrid una nueva ventana de VS Code.
Seguramente queríais usar la especificación OpenAPI (OAS) en formato JSON que utilizasteis para vuestra clase spec en el paquete iris-web-swagger-ui de IRIS.
La OAS generada por el método ##class(%REST.API).GetWebRESTApplication(...) es muy básica, sin descripciones de los parámetros ni de la estructura esperada de las respuestas.
Así que, después de crear vuestra aplicación REST a partir de una OAS, deberíais tener:
- Una clase
application.disp.clsgenerada - Una clase
application.spec.cls

Complemento de InterSystems IRIS Community Edition para HAOS
Ejecutad InterSystems IRIS dentro de Home Assistant, como un complemento. Antes de que descartéis este artículo pensando que se trata solo de una curiosidad, os invito a deteneros un momento y ver lo fácil que es lanzar aplicaciones basadas en IRIS usando esta plataforma. Si echáis un vistazo a Open Exchange, veréis decenas y decenas de aplicaciones que merecen ser utilizadas, pero que en la práctica quedan abandonadas como simples proyectos en Git, y que solo pueden ejecutarse si estáis dispuestos a enfrascaros en una batalla con containerd o Docker. Con un simple repositorio de Git y una especificación, ahora podéis construir vuestra aplicación en IRIS y hacer que se ejecute a través de un marketplace, reduciendo al mínimo las complicaciones para vuestros usuarios finales. Ejecutadla junto a Ollama y las implementaciones de LLM/LAM, exponed cualquier elemento de IRIS como un sensor o cread un endpoint para que vuestra aplicación en IRIS interactúe con cualquier cosa que tengáis conectada a HAOS. ¿Queréis reiniciar una producción de IRIS con solo accionar un interruptor físico o mediante una IA asistida? Podéis hacerlo con este complemento, o con uno propio, justo al lado de los entusiastas de la automatización del hogar.
gj :: configExplorer es una nueva extensión de VS Code que se integra con Server Manager y aprovecha Structurizr para generar diagramas de configuración de vuestros servidores.
Aquí tenéis un breve video introductorio.
Al usar la API Nativa de InterSystems IRIS para Node.js se evita la necesidad de instalar cualquier código de soporte en los servidores. Esta elección tecnológica también le permite participar en el concurso actual de la Comunidad de Desarrolladores.
Todavía recuerdo el primer código que escribí en Object Script
Viniendo de Python, al principio me resultó muy extraño, pero con el tiempo empecé a ver por qué el lenguaje está construido de esa manera.
Si estáis empezando, tened en cuenta que ObjectScript puede parecer un poco de nicho y ligado sobre todo a los productos IRIS, pero la forma de trabajar con él realmente compensa: desarrollo rápido, una base de datos potente y una plataforma sólida para aprender.
A veces se siente como si hubierais entrado en un mundo que es a la vez familiar y diferente.
Contexto
Por una variedad de razones, los usuarios pueden desear montar un volumen persistente en dos o más pods que abarquen varias zonas de disponibilidad. Un caso de uso de este tipo es poner a disposición de ambos miembros del espejo los datos almacenados fuera de IRIS en caso de una conmutación por error.
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.
Muchas veces, al trabajar con datos FHIR, por ejemplo con IRIS For Health, resulta útil crear una operación FHIR personalizada. El estándar FHIR incluye un conjunto de operaciones definidas (como $everything), pero una operación personalizada es práctica cuando necesitáis añadir funcionalidades adicionales que van más allá del conjunto de operaciones estándar de FHIR. La documentación lo explica paso a paso (aunque este comentario puede resultar útil para quienes estáis empezando).
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.