Artículo
· 21 ene, 2026 Lectura de 7 min
Protegiendo un servidor FHIR con OAuth 2.0 mediante IAM

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.

0 0
0 7

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:

0 0
0 11

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.

0 0
0 9

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.

0 0
0 17

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:

0 0
0 29

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.

0 0
0 39
Artículo
· 10 nov, 2025 Lectura de 3 min
_spec para swagger-ui desde la clase de spec

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:

0 0
0 53
Artículo
· 30 oct, 2025 Lectura de 4 min
Complemento IRIS para Home Assistant (HAOS)

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.

1 0
0 41

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.

https://www.youtube.com/embed/WHkoZsg6P-A
[Este es un enlace integrado, pero no puede ver el contenido integrado directamente en el sitio porque rechazó las cookies que se necesitan para acceder a él. Para ver el contenido integrado, debe aceptar todas las cookies desde la Configuración de cookies]

1 0
0 56
Artículo
· 29 sep, 2025 Lectura de 3 min
Todos cometemos errores

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.

2 0
0 27
Artículo
· 22 sep, 2025 Lectura de 6 min
Compartir volúmenes entre pods y zonas en AKS

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.

Desafortunadamente, las clases de almacenamiento integradas en la mayoría de las implementaciones de Kubernetes (ya sea en la nube o en las instalaciones) no ofrecen esta capacidad:

0 0
0 35

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.

0 0
0 54

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.

1 0
0 36

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:

0 0
0 58

Resumen

El proyecto typeorm-iris ofrece soporte experimental para integrar TypeORM con InterSystems IRIS, permitiendo a los desarrolladores interactuar con IRIS usando los conocidos decoradores y abstracciones de repositorio de TypeORM. Esto ofrece una experiencia de desarrollo más familiar para los desarrolladores de JavaScript y TypeScript que crean aplicaciones Node.js con IRIS como base de datos backend.

TypeORM MongoDB Review. I recently started using TypeORM in a… | by Eliezer  Steinbock | Medium

Aunque el proyecto implementa los puntos clave de integración con TypeORM y soporta operaciones básicas con entidades, aún no está probado a fondo ni es adecuado para entornos de producción.

0 0
0 46
Artículo
· 7 ago, 2025 Lectura de 1 min
Importar CSV en CACHÉ

Aquí tenéis un ejemplo práctico de cómo importar datos desde un archivo CSV a InterSystems CACHÉ utilizando ObjectScript.
Suponiendo que vuestro archivo CSV sea simple (por ejemplo, separado por comas y con encabezados), podéis usar `%Stream.FileCharacter` para leerlo línea por línea y analizar los datos.

ClassMethod ImportCSV(filePath As %String) As %Status {
Set stream = ##class(%Stream.FileCharacter).%New()
Set sc = stream.LinkToFile(filePath)
If 'sc Quit sc

0 0
0 35

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.

0 0
0 51