Artículo Kurro Lopez · dic 18, 2025 2m read

Hola a todos.

Os voy a dar un consejo rápido de como implementar un agente IA para realizar búsquedas en la documentación de Intersystems integrado en Teams.

Si, ya se que la página de la documentación tiene su propio buscador IA y es bastante eficaz, pero de esta forma tendríamos un acceso más rápido, sobre todo si Teams es la herramienta corporativa de tu empresa.

También se puede crear otro agente IA para realizar búsquedas en los artículos publicados en la comunidad de desarrolladores (que también tiene su buscador IA integrado).

0
0 39
Pregunta Kurro Lopez · dic 16, 2025

Hola a todos.

Tengo una duda con respecto a la prioridad a la hora de aplicar una configuración por defecto.

Tengo unos Business Services que utilizan la misma clase, por lo que quiero que todos ellos tengan una configuración de "Schedule" común.

Pero hay uno de ellos que no quiero que se le aplique esta configuración por defecto, por lo que he intentado ponerle el valor vacío de Schedule para ese elemento por el nombre:

En este caso, tengo los elementos que utilicen la clase Kurro.BS.SFTP.Marca tengan por defecto el valor CargaFicheros

Pero uno de los elementos (Kurro.BS.SFTP.

1
0 32
Artículo Kurro Lopez · oct 23, 2025 1m read

Hola a todos,

Este es un rápido consejo de como usar URL en servicios RES API sin distinción de mayúsculas y minúsculas.

Si tienes una clase que extiende de %CSP.REST y Ens.BusinessService, para crear un servicoi REST API, y tienes definido tu WebApplication en minúsculas

XData UrlMap [ XMLNamespace = "http://www.intersystems.
2
0 58
Pregunta Kurro Lopez · oct 21, 2025

Hola comunidad,

Tengo un servicio que utiliza EnsLib.RecordMap.Service.FTPService para capturar ficheros en un directorio FTP.

Necesitaría que en lugar de cargarlos todos a la vez, los hiciera de uno en uno.

Tengo una clase que extiende de esta clase porque hace procesos previos, lo guarda todo en la clase RecordMap y luego los procesa todos los registros a la vez.

Cuando invoco al BP, lo hace a través del método set tStatus = ..SendRequest(message, 1)

He puesto el flag SynchronousSend = 1, pero sigue procesando todos a la

4
0 79
Artículo Kurro Lopez · sep 29, 2025 13m read

Estoy muy emocionado de continuar con mi serie de artículos "InterSystems para Dummies", y hoy queremos contarles todo sobre una de las funciones más potentes que tenemos para la interoperabilidad.

Aunque ya las hayan probado, planeamos analizar a fondo cómo sacarles el máximo provecho y mejorar aún más nuestra producción.

2
0 67
Pregunta Kurro Lopez · sep 5, 2025

Hola comunidad.

Tengo una solicitud de un cliente que desea hacer lo siguiente.
Actualmente, tienen un proceso de carga de datos vía FTP en el que han implementado un RecordMap para almacenar la información de los archivos CSV que se suben al directorio FTP.
Ahora quieren tener otro directorio para que solo se ejecute mediante una instrucción externa, no cuando se sube el archivo.

¿Es posible crear un proceso que lea el directorio FTP bajo demanda? Es decir, que solo ejecute el servicio EnsLib.FTP.InboundAdapter cuando se lo indiquemos.

0
0 44
Artículo Kurro Lopez · jun 30, 2025 16m read

Aprenda a diseñar agentes de IA escalables y autónomos que combinen razonamiento, búsqueda vectorial e integración de herramientas utilizando LangGraph.

cover

Demasiado Largo; No lo Leí

  • Los agentes de IA son sistemas proactivos que combinan memoria, contexto e iniciativa para automatizar tareas que van más allá de los chatbots tradicionales.
  • LangGraph es un framework que nos permite crear flujos de trabajo complejos de IA, utilizando nodos (tareas) y aristas (conexiones) con gestión de estado integrada.
2
0 92
Pregunta Kurro Lopez · jun 23, 2025

Hola a todos,

Estamos desarrollando una aplicación de citas médicas que conecta las agendas de los médicos con un proveedor de citas.

El proveedor nos está devolviendo la cita en el siguiente formato:

Thu Jul 03 08:20:00 CEST 2025

Significa, 03 de julio de 2025 a las 08:20:00 Hora de verano de Europa central (UTC+2)

Pero necesitamos el siguiente formato:

2025-07-03 08:20:00+02:00

¿Existe alguna opción para convertir el código horario de zona (CEST) a UTC+x?

¿Cómo convertir el código horario de zona (CEST, CET, ET, EDT, etc..) en su zona horaria UTC (UTC+2, UTC+1, UTC-5, etc..)?

Saludos cordiales

2
0 52
Pregunta Kurro Lopez · mayo 28, 2025

Hola comunidad,

Me preguntaba si sería posible usar algo como EnsLib.SQL.InboundAdapter con tablas en IRIS.

Esta biblioteca monitoriza cuándo se inserta un registro en una tabla de una base de datos externa, por lo que requiere un DSN para conectarse a dicha base de datos.

Mi objetivo es realizar una llamada a una API externa que tarda mucho tiempo, podría tardar casi una hora (o más) en completar sus procesos, pero no quiero bloquear el proceso principal.

4
0 50
Artículo Kurro Lopez · abr 14, 2025 15m read

 

Como todos sabemos, InterSystems es una gran empresa.

Sus productos pueden ser tan útiles como complejos.

Sin embargo, a veces nuestro orgullo nos impide admitir que quizá no entendamos algunos conceptos o productos que InterSystems nos ofrece.

Hoy comenzamos una serie de artículos que explican, de forma sencilla y clara, cómo funcionan algunos de los complejos productos de InterSystems.

En este ensayo, aclararé qué es el Machine Learning y cómo aprovecharlo... porque esta vez, SABRÁS con certeza de qué estoy hablando.

0
0 88
Artículo Kurro Lopez · abr 1, 2025 1m read

Hola a todos,

Como parte del desarrollo de una API para saber a qué instancia de IRIS está conectada, he encontrado algunos métodos para obtener información sobre el servidor que pueden ser útiles.

Obtener el nombre del servidor: $SYSTEM.INetInfo.LocalHostName()

Obtener la IP del servidor: $SYSTEM.INetInfo.HostNameToAddr($SYSTEM.INetInfo.LocalHostName())

Obtener el nombre de la instancia: $PIECE($SYSTEM,":",2)

Entonces, he creado el siguiente código como clase BS:

Class St.Common.Api Extends (%CSP.REST, Ens.BusinessService)
{
{

XData UrlMap [ XMLNamespace = "http://www.intersystems.
0
0 84
Pregunta Kurro Lopez · oct 18, 2024

Hola a todos,

Tenemos una restricción en una base de datos de SQL con un índice único.

Queremos capturar la excepción cuando intenta insertar o actualizar un valor que incumpla la condición del índice único.

// run the querySet tSC = ..Adapter.ExecuteUpdateParmArray(.nrows,SQL,.param)

// Check if there is any errorIf$$$ISERR(tSC)
{
	Set msgError = $System.Status.GetErrorText(tSC) 
	// Check here if the native error code is 2601 (Cannot insert duplicate key row into object 'MYPATIENTS' with unique index 'UQ_UNIQUE_INDEX')
	??????
}

He intentado capturar el valor de .

1
0 77
Pregunta Kurro Lopez · jul 7, 2024

Hola a todos,

Hace unos días vi a un youtuber hablando de cómo crear una red neuronal (en español)

En resumen, utiliza la red neuronal para aprender a convertir grados Celsius a grados Fahrenheit.
Grados Fahrenheit= (Grados  Celsius × 9/5) +32

En este vídeo utiliza Python para crear la red neuronal, donde crea una tabla con los valores de grados Celsius y grados Fahrenheit.
Luego hace 1000 entrenamientos al modelo que ha creado, cuando consulta la predicción a un valor que no está en la tabla que ha utilizado para entrenar, le da un valor correcto (o bastante cercano).

2
0 231
Artículo Kurro Lopez · mayo 21, 2024 10m read

Siguiendo con la serie de artículos sobre gestión de archivos de voz, vamos a ver cómo podemos convertir texto en audio y recibir el archivo con la voz elegida.
También exploraremos cómo un servicio de OpenAI puede ayudarnos a analizar un texto y determinar el estado de ánimo expresado en él.
Analicemos cómo puedes crear tu propio archivo de voz y cómo puede "leer" tus sentimientos.

0
0 121
Pregunta Kurro Lopez · abr 10, 2024

Hola comunidad,

Estoy llamando a una API que está devolviendo el contenido de un fichero como Content del response. Estoy capturando el binariu pero necesito convertir este Stream a uan cadena Base64.

Estoy intentando convertir un %Stream.GlobalBinary a Base64 usando el siguiente código, pero no funciona.

do stream1.Rewind()
set response = ""while 'stream1.AtEnd {
    set temp=stream.Read(4000)
    set temp=$systemEncryption.
1
0 171
Artículo Kurro Lopez · mar 3, 2024 5m read

Hola comunidad,

El objetivo de este artículo es explicar como crear mensajes entre IRIS y Microsoft Teams.

En mi empresa, tenermos que monitorear mensajes de error, y usamos la clase Ens.Alerts para redireccionar esos mensajes a través de un Business Operation que envía un email.
El problema está en que enviamos esos errores a una cuenta de soporte donde habían muchos emails. Queremos algo específico para un específico equipo.

Por lo que investigamos como hacer que esos mensajes lleguén al equpo de desarrollo directamente y ellos pordrían tener, en tiempo real, una notificación de un error en producción. 
En nuestra empresa usamos Microsoft Teams como herramienta corportaiva, por lo que nos preguntamos: ¿Cómo podemos hacer que esos mensajes lleguen al equipo de desarrollo de IRIS?

4
0 442
Artículo Kurro Lopez · feb 14, 2024 3m read
Escenario

IRIS tiene adaptadores de entrada SQL para usar con SQL gateways como EnsLib.SQL.InboundAdapter para consultar repetidamente las conexiones de SQL Gateway. Apareció un escenario en el que queríamos consultar una base de datos interna para obtener algunos datos, pero no vimos un "servicio listo para usar" para esto.

Requisito deseado

Tener un servicio genérico que pueda sondear SQL interno para trabajar con otros componentes.

El cómo

Lo que no estaba claro era "¿Cómo envío un conjunto de resultados en sentido descendente?".

0
0 188
Artículo Kurro Lopez · feb 13, 2024 2m read

Recientemente, necesitaba ejecutar WebGateway en un puerto adicional, pero con una novedad: este puerto debería publicar solo una aplicación web.
Al principio, pensé en configurar WebGateway para permitir solo aplicaciones web específicas (~urls), pero la configuración de WebGateway depende de la configuración de Apache:

LoadModule csp_module_sa "/opt/webgateway/bin/CSPa24.
0
0 201
Pregunta Kurro Lopez · feb 12, 2024

Hola a todos,

Como sabéis, es muy complicado depurar una API Rest de Business Service porque el objeto se crea cuando las aplicaciones reciben una solicitud, por lo que no podemos tener el JobId que podemos usar para depurar.

https://docs.intersystems.com/iris20211/csp/docbook/DocBook.UI.Page.cls…

Entonces, estoy tratando de obtener el JobId cuando se crea la clase, escribir una traza en el método OnInit() y escribir el JobId en es traza.

Method OnInit() As%Status
{
	$$$LOGINFO("JobId: "_$JOB)
	hang20breakQuit.
2
0 264
Artículo Kurro Lopez · feb 9, 2024 2m read

Interactuar con usuarios en la terminal: una guía para usar %Library.Prompt en IRIS

 

¿Alguna vez te has preguntado cómo comandos como ^DATABASE atraen a los usuarios en la terminal? O tal vez esté escribiendo una rutina de automatización y desee formas de especificar opciones directamente desde la terminal. Afortunadamente, la clase %Library.Prompt en IRIS ofrece una forma sencilla de hacerlo.

Entradas de texto

Para entradas básicas, como pedirle al usuario que proporcione una ruta de archivo o un espacio de nombres, utilice el siguiente código:

set status = ##class(%Library.Prompt).
0
0 180
Pregunta Kurro Lopez · feb 8, 2024

Hola a todos,

Tenemos una clase response heredada de %JSON.Adaptor con las siguientes propiedades, también sus clases dependientes:

 

Kurro.app.Msg.Search.Response

 

Kurro.app.

2
0 233
Pregunta Kurro Lopez · feb 7, 2024

Hola comunidad,

Si, ya sé que hay otra pregunta con el mismo problema "VS Code - debugging doesn't work", pero mi instancia de IRIS no está usando IIS.

Hace tiempo, podía depurar sin problemas, pero después de algunas actualizaciones de Visual Studio, tengo el siguiente error

Failed to start the debug session. Check that the Intersystems server's web server supports WebSockets

He activado el protocolo WebSocket en el servidor (Windows Server 2019) pero sigue sin funcionar.

La instancia de IRIS no está usando IIS, creo que está usando el Apache por defecto.

¿Necesito hacer algo en especial?

2
0 177
Artículo Kurro Lopez · feb 2, 2024 9m read

Considerar el nuevo interés empresarial en la aplicación de IA generativa a información y datos privados locales comercialmente sensibles, sin exposición a nubes públicas. Al igual que una cerilla necesita la energía del golpe para encenderse, el nuevo desafío de "energía de activación" del líder tecnológico es revelar cómo la inversión en hardware GPU podría respaldar nuevas capacidades competitivas. La capacidad puede revelar los casos de uso que brindan nuevo valor y ahorro.

Afilar este hacha comienza con un protocolo funcional para ejecutar LLM en un portátil local.

0
0 315
Pregunta Kurro Lopez · ene 31, 2024

Hola comunidad.

Hemos desarrollado una nueva versión de una producción, todo el código es nuevo y ha cambiado BP. Esta aplicación carga información para algunas marcas y la almacena en la base de datos.

El cliente quiere implementar los cambios solo para algunas marcas porque quiere verificar las marcas pequeñas antes de implementarlos para todas las marcas.

Mi propuesta es crear un nuevo namespace, con el nuevo código, y deshabilitar todas las marcas excepto la marca que quiere probar.

Me pregunto cuál es la mejor manera de clonar el namespace.

6
0 224
Artículo Kurro Lopez · ene 19, 2024 2m read

Actualmente, muchos artistas digitales utilizan la tecnología de IA generativa como soporte para acelerar la entrega de sus trabajos. Hoy en día es posible generar una imagen correspondiente a partir de una frase de texto. Existen varias soluciones en el mercado para esto, incluidas algunas disponibles para ser utilizadas a través de API. Mira algunos en este enlace: https://www.analyticsvidhya.com/blog/2023/08/ai-image-generators/.

Creé una nueva aplicación para usar en IRIS aprovechando una de estas API. Elegí la API Imagine.

0
0 118