#Consejos y trucos

0 Seguidores · 150 Publicaciones

Es la experiencia en el sector de la tecnología de InterSystems que resuelve algún problema en particular de una manera elegante o inusual.

Artículo Arsh Hasan · oct 29, 2025 2m read

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.

Configurad la conexión ODBC de IRIS con autenticación de Windows utilizando una cuenta de dominio específica en lugar de la cuenta predeterminada del servidor IRIS

¿Cómo lo solucioné yo?

La raíz del problema

0
0 20
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.com/urlmap" ]
{
<Routes>
    <Route Url="/user" Method="POST" Call="User"/>
    <Route Url="/login" Method="POST" Call="Login"/>
</Routes>
}

Solo aceptará URL en minúsculas, por ejemplo: http://myserver/myproduction/user

2
0 25
Artículo Jose-Tomas Salvador · oct 23, 2025 10m read

Una novedad que apareció en la versión 2024.1 de InterSystems IRIS for Health y que quizá te pasó desapercibida. Se trata de la capacidad de realizar una validación basada en perfiles FHIR.

 

En este artículo os ofreceré una visión general básica de esta funcionalidad.

Si FHIR es importante para vosotros, deberíais probar sin duda esta nueva característica, así que seguid leyendo.

Contexto

El estándar FHIR define una operación llamada $validate. Esta operación está pensada para ofrecer una API que permita validar recursos.

0
0 18
Artículo Sergio Farago · ene 8, 2025 2m read

Hola desarrolladores:

¿Conoces la IA de la Comunidad? Pues si no es así, te estás perdiendo una de las mejores aplicaciones que nos trajeron en 2024. Y te preguntarás ¿En qué consiste? Pues en una herramienta muy intuitiva para obtener respuestas acerca de la tecnología InterSystems. 

¿Dónde la encuentro? 

 

Al lado derecho de la página, justo encima de la columna de eventos, donde pone "Hacer una pregunta a la IA". Vamos a seguir el paso a paso y verás qué sencillo es.

 

4
0 112
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.

¿Qué es Record Mapper?

En esencia, un Record Mapper es una herramienta que permite mapear datos de archivos de texto a mensajes de producción y viceversa. La interfaz del Portal de Administración, por otro lado, permite crear una representación visual de un archivo de texto y un modelo de objeto válido de esos datos para mapearlos a un único objeto de mensaje de producción persistente.

Por lo tanto, si desea importar datos de un archivo CSV a su clase persistente, puede probar con un par de clases entrantes (por FTP o directorio de archivos). ¡Pero no se apresure! Abordaremos cada uno de estos puntos a su debido tiempo.


TIP: Todos los ejemplos y clases descritos en este artículo se pueden descargar desde el siguiente enlace: https://github.com/KurroLopez/iris-recordmap-fordummies.git


¿Cómo empezar?

Vayamos al grano y especifiquemos nuestro escenario.

Necesitamos importar información de nuestros clientes, incluyendo su nombre, fecha de nacimiento, número de identificación nacional, dirección, ciudad y país.

Abra su portal IRIS y seleccione Interoperabilidad – Crear – Record Maps. image

Cree un nuevo Record Maps con el nombre del paquete y la clase. image

En nuestro ejemplo, el nombre del paquete es Demo.Data, mientras que el nombre de la clase es PersonalInfo.

El primer paso es configurar el archivo CSV. Esto significa determinar el carácter separador, si los campos de cadena tienen comillas dobles, etc. image

Si usa el sistema operativo Windows, el terminador de registro común es CRLF (Char(10) Char(12)).

Como mi archivo CSV es estándar, separado por punto y coma (;), debo definir el carácter del separador de campos.

Ahora, voy a declarar los campos del perfil del cliente (nombre, apellidos, fecha de nacimiento, número de identificación nacional, dirección, ciudad y país). image

Esta es una definición básica, pero puedes establecer más condiciones con respecto a tu archivo CSV si lo deseas. image

Recuerda que, por defecto, un campo %String tiene una longitud máxima de 50 caracteres. Por lo tanto, actualizaré este valor para permitir más caracteres en el campo de dirección (un máximo de 100).

También definiré el formato de fecha usando el formato ISO (aaaa-mm-dd), que corresponde al número 3.

Además, haré obligatorios los campos de nombre, apellido y fecha de nacimiento. image

¡Listo! ¡Presionemos el botón "Generar" para crear la clase persistente! image

Let's take a look at the generated class:
/// THIS IS GENERATED CODE. DO NOT EDIT.<br/>
/// RECORDMAP: Generated from RecordMap 'Demo.Data.PersonalInfo'
/// on 2025-07-14 at 08:37:00.646 [2025-07-14 08:37:00.646 UTC]
/// by user SuperUser
Class Demo.Data.PersonalInfo.Record Extends (%Persistent, %XML.Adaptor, Ens.Request, EnsLib.RecordMap.Base) [ Inheritance = right, ProcedureBlock ]
{

Parameter INCLUDETOPFIELDS = 1;

Property Name As %String [ Required ];

Property Surname As %String [ Required ];

Property DateOfBirth As %Date(FORMAT = 3) [ Required ];

Property NationalId As %String;

Property Address As %String(MAXLEN = 100);

Property City As %String;

Property Country As %String;

Parameter RECORDMAPGENERATED = 1;

Storage Default
{
<Data name="RecordDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Name</Value>
</Value>
<Value name="3">
<Value>%Source</Value>
</Value>
<Value name="4">
<Value>DateOfBirth</Value>
</Value>
<Value name="5">
<Value>NationalId</Value>
</Value>
<Value name="6">
<Value>Address</Value>
</Value>
<Value name="7">
<Value>City</Value>
</Value>
<Value name="8">
<Value>Country</Value>
</Value>
<Value name="9">
<Value>Surname</Value>
</Value>
</Data>
<DataLocation>^Demo.Data.PersonalInfo.RecordD</DataLocation>
<DefaultData>RecordDefaultData</DefaultData>
<ExtentSize>2000000</ExtentSize>
<IdLocation>^Demo.Data.PersonalInfo.RecordD</IdLocation>
<IndexLocation>^Demo.Data.PersonalInfo.RecordI</IndexLocation>
<StreamLocation>^Demo.Data.PersonalInfo.RecordS</StreamLocation>
<Type>%Storage.Persistent</Type>
}

}

Como puede ver, cada propiedad tiene el nombre de los campos en nuestro archivo CSV.

En este punto, crearemos un archivo CSV con la siguiente estructura para probar nuestro Record Mapper:

Name;Surname;DateOfBirth;NationalId;Address;City;Country Matthew O.;Wellington;1964-31-07;208-36-1552;1485 Stiles Street;Pittsburgh;USA Deena C.;Nixon;1997-03-03;495-26-8850;1868 Mandan Road;Columbia;USA Florence L.;Guyton;2005-04-10;21 069 835 790;Invalidenstrasse 82;Contwig;Germany Maximilian;Hahn;1945-10-17;92 871 402 258;Boxhagener Str. 97;Hamburg;Germany Amelio;Toledo Zavala;1976-06-07;93789292F;Plaza Mayor, 71;Carbajosa de la Sagrada;Spain

Puedes usarlo como prueba ahora.

Haz clic en "Seleccionar archivo de muestra", selecciona la muestra en /irisrun/repo/Samples y elige PersonalInfo-Test.csv. image

En este momento podrás observar cómo se importan tus datos: image

Los problemas crecen

Justo cuando crees que todo está listo, recibes una nueva especificación de tu jefe:

"Necesitamos los datos para poder cargar el número de teléfono del cliente y almacenar más de uno (fijo, móvil, etc.)".

Uy... Necesito actualizar mi Record Map y agregar un número de teléfono. Sin embargo, debería tener más de uno... ¿Cómo puedo hacerlo?


Nota: Puedes hacerlo directamente en la misma clase. Sin embargo, crearé una nueva para fines explicativos y la guardaré en los ejemplos. De esta manera, puedes revisar y ejecutar el código siguiendo todos los pasos de este artículo.


Bien, es hora de reabrir el Record Map que acabamos de crear.

Agrega el nuevo campo "Phone", pero recuerda indicar que este campo es "Repetido". image

Dado que hemos asignado este campo como "Repetido", debemos definir el carácter separador para los datos replicados. Este indicador se encuentra en el mismo lugar donde normalmente especificamos el separador de campo. image

¡Perfecto! Carguemos el archivo CSV de ejemplo con los números de teléfono separados por #. image

Si echamos un vistazo a la clase persistente que hemos producido, podemos ver que el campo "Phone" es de tipo Lista de %String:

Property Phone As list Of %String(MAXLEN = 20);

Ok, Kurro, pero ¿Cómo podemos subir este archivo?

Es una muy buena pregunta, querido lector.

Intersystems IRIS nos proporciona dos clases de entrada: EnsLib.RecordMap.Service.FileServiceEnsLib.RecordMap.Service.FTPService

No profundizaré en estas clases porque sería demasiado largo. Sin embargo, podemos revisar sus funciones principales.

En resumen, el servicio monitoriza los procesos en una carpeta definida, captura los archivos almacenados en ese directorio, los carga, los lee línea por línea y envía ese registro al proceso de negocio designado.

Esto ocurre tanto en el servidor como en los directorios FTP.

Vayamos al grano…


Nota: Presentaré mis ejemplos utilizando la clase EnsLib.RecordMap.Service.FileService. Sin embargo, la clase EnsLib.RecordMap.Service.FTPService realiza las mismas operaciones.


Si ha descargado el código de ejemplo, verás que se ha creado una producción con dos componentes:

Una clase de servicio (EnsLib.RecordMap.Service.FileService), que cargará los archivos, y una clase de negocio (Demo.BP.ProcessData), que procesará cada uno de los registros leídos del archivo. En este caso, usaremos este último solo para ver los rastros de comunicación.

Es importante configurar algunos parámetros en la clase del Business Service. image

File Path: Es un registro que la clase utiliza para monitorear si hay archivos pendientes de procesamiento. Al colocar un archivo en este directorio, el proceso de carga se activa automáticamente y envía cada registro a la clase definida como Business Process.

File Spec: Es un patrón de archivo para buscar (por defecto, es *, pero podemos definir algunos archivos que deseamos diferenciar de otros procesos). Por ejemplo, podemos tener dos clases de escucha entrantes en el mismo directorio, cada una con una clase RecordMap diferente. Podemos asignar la extensión .pi1 a los archivos que procesará la clase PersonalInfo, mientras que .pi2 marcará los archivos que serán procesados por la clase PersonalInfoPhone.

Archive Path: Es un directorio donde se mueven los archivos después de ser procesados.

Work Path: Es una ruta donde el adaptador debe colocar el archivo de entrada mientras procesa los datos. Esta configuración es útil cuando se usa el mismo nombre de archivo para envíos repetidos. Si no se especifica WorkPath, el adaptador no moverá el archivo durante el procesamiento.

Call Interval: Es la frecuencia (calculada en segundos) de las comprobaciones del adaptador para los archivos de entrada en las ubicaciones especificadas.

RecordMap: Es el nombre de la clase Record Map, que contiene la definición de los datos en el archivo.

Target Config Name: Es el nombre del Proceso de Negocio que maneja los datos almacenados en el archivo.

image

Subdirectory Levels: Es un espacio donde el proceso busca un nuevo archivo. Por ejemplo, si un proceso añade un archivo cada día (lunes, martes, miércoles, jueves y viernes), buscará en todos los subdirectorios, comenzando por el directorio raíz, siempre que especifiquemos el nivel 1. Por defecto, el nivel 0 significa que solo buscará en el directorio raíz.

Delete From Server: Esta función indica que si no se especifica el directorio de los archivos procesados, el archivo se eliminará del directorio raíz.

File Access Timeout: Es un tiempo definido (calculado en segundos) para acceder al archivo. Si el archivo es de solo lectura o hay algún problema que impida el acceso al directorio, se mostrará un error.

Header Count: Es una característica importante que indica el número de encabezados que se deben ignorar. Por ejemplo, si el archivo tiene un encabezado que especifica los campos que contiene, debe indicar cuántas líneas de encabezado contiene para que se puedan ignorar y solo se puedan leer las líneas de datos.

Subir un archivo

Como mencioné anteriormente, el proceso de carga se activa cuando se coloca un archivo en el directorio del proceso.

Nota: Las siguientes instrucciones se basan en el código de ejemplo. En la carpeta "samples", encontrará el archivo PersonalInfoPhone-Test.csv. Debe copiar este archivo a la carpeta del proceso para que se procese automáticamente.


NOTA: Si está trabajando con Docker, use el siguiente comando: docker cp .\PersonalInfoPhone-Test.csv containerId:/opt/irisbuild/process/containerId es el ID de su contenedor, ej: docker cp .\PersonalInfoPhone-Test.csv 66f96b825d43398ba6a1edcb2f02942dc799d09f1b906627e0563b1392a58da1:/opt/irisbuild/process/` image


Para cada registro, lanza una llamada al proceso de negocio con todos los datos. image

¡Excelente trabajo! En tan solo unos pasos, lograste crear un proceso que puede leer archivos de un directorio y administrar esos datos de forma rápida y sencilla. ¿Qué más podrías pedir a tus procesos de interoperabilidad?

Complex Record Map

Nadie quiere tener una vida compleja, pero te prometo que te enamorarás de los Complex Record Map .

Los Complex Record Map son precisamente lo que su nombre indica. Se trata de una combinación de varios Record Maps que nos proporciona información más completa y estructurada.

Imaginemos que nuestro jefe nos contacta y nos plantea los siguientes requisitos:

“Necesitamos información del cliente con más números de teléfono, incluyendo códigos de país y prefijos. También necesitamos más direcciones de contacto, incluyendo códigos postales, países y nombres de estados.

Un cliente puede tener un número de teléfono, dos o ninguno”.

Si necesitamos más información sobre números de teléfono y direcciones, como hemos visto anteriormente, incluir esta información en una sola línea sería demasiado complicado. Separemos las diferentes partes que necesitamos:

  • Información del cliente requerida.
  • Números de teléfono (del 0 al 5).
  • Dirección postal (del 0 al 2).

Para cada sección, crearemos un alias para diferenciar el tipo de información que incluye.

Construyamos cada sección:

Paso 1 Diseña un nuevo Record Maps para la información del cliente (Nombre, Apellidos, Fecha de Nacimiento y Documento Nacional de Identidad) e incluya un identificador para indicar que se trata de la sección USER. image

El nombre de la sección debe ser único para los tipos de datos "USER", ya que son responsables de configurar las columnas y posiciones de cada dato. El contenido debería ser similar al siguiente: USER|Matthew O.;Wellington;1964-07-31;208-36-1552 En NEGRITA, el nombre de la sección, en CURSIVA, el contenido.

Paso 2 Crea las secciones PHONE y ADDRESS para los números de teléfono y las direcciones postales.

Recuerda especificar el nombre de la sección y activar la opción Complez Record Map. imageimage

Ahora deberíamos tener tres clases:

  • Demo.Data.ComplexUser
  • Demo.Data.ComplexPhone
  • Demo.Data.ComplexAddress

Paso 3 Completa el Complex Record Map.

Abre la opción "Complex Record Maps": image

Lo primero que vemos aquí es una estructura con un encabezado y un pie de página. El encabezado puede ser otro mapa de registros para almacenar información del paquete de datos (por ejemplo, información del departamento del usuario, etc.).

Dado que estas secciones son opcionales, las ignoraremos en nuestro ejemplo. image

Establezca el nombre de este registro (por ejemplo, PersonalInfo) y agregue nuevos registros para cada sección. image

Si deseamos que uno de los apartados tenga repeticiones, deberemos indicar los valores mínimos y máximos de repetición. image

De acuerdo a las especificaciones anteriores, el archivo con la información lucirá así:

USER|Matthew O.;Wellington;1964-07-31;208-36-1552
PHONE|1;305;2089160
PHONE|1;805;9473136
ADDR|1485 Stiles Street;Pittsburgh;15286;PA;USA

Si queremos cargar un archivo, necesitamos un servicio que pueda leer este tipo de archivos, e Intersystems IRIS nos proporciona dos clases de entrada para eso:

EnsLib.RecordMap.Service.ComplexBatchFileServiceEnsLib.RecordMap.Service.ComplexBatchFTPService Como mencioné anteriormente, usaremos la clase EnsLib.RecordMap.Service.ComplexBatchFileService como ejemplo. Sin embargo, el proceso para FTP es idéntico.

Utiliza la misma configuración que el Record Map, excepto por el número de línea del encabezado, porque este tipo de archivo no necesita uno: image

Como mencioné anteriormente, el proceso de carga se activa cuando se coloca un archivo en el directorio del proceso.

Nota: Las siguientes instrucciones se basan en el código de ejemplo.

En la carpeta "samples", encontrará el archivo PersonalInfoComplex.txt. Debe copiar este archivo a la carpeta del proceso para que se procese automáticamente.


NOTA: Si trabaja con el ejemplo de Docker, utilice el siguiente comando:

docker cp .\ PersonalInfoComplex.txt containerId:/opt/irisbuild/process/p
containerId es el id de su contenedor, ex: docker cp .\ PersonalInfoComplex.txt 66f96b825d43398ba6a1edcb2f02942dc799d09f1b906627e0563b1392a58da1:/opt/irisbuild/process/

Aquí podemos ver cada fila llamando al Business Service: imageimageimage

Como ya se habrá dado cuenta, los Record Maps son una herramienta potente para importar datos de forma compleja y estructurada. Permiten guardar información en tablas relacionadas o procesar cada dato de forma independiente.

Gracias a esta herramienta, puede crear rápidamente procesos de carga de datos por lotes y almacenarlos sin necesidad de realizar lecturas complejas de datos, separación de campos, validación de tipos de datos, etc.

Espero que este artículo le sea útil.

Nos vemos en el próximo "InterSystems para Dummies".

2
0 33
Artículo Derek Gervais · sep 15, 2025 3m read

¡Hola a todos! Tras incorporarme recientemente a InterSystems, me di cuenta de que, a pesar de tener una Community Edition totalmente gratuita y genial, no está muy claro cómo conseguirla. Decidí escribir una guía destacando todas las diferentes formas en que podéis acceder a la Community Edition de InterSystems IRIS:

Conseguir InterSystems IRIS Community Edition como contenedor

Trabajar con una instancia en contenedor de la Community Edition es el enfoque recomendado para quienes son nuevos en el desarrollo con InterSystems IRIS, y en mi opinión es el más sencillo. InterSystems IRIS Community Edition se puede encontrar en DockerHub; si tenéis una cuenta SSO de InterSystems, también podéis encontrarla en el InterSystems Container Registry.

En cualquiera de los casos, descargaréis la imagen que necesitéis usando la CLI de Docker:

docker pull intersystems/iris-community:latest-em
// or
docker pull containers.intersystems.com/intersystems/iris-community:latest-em

A continuación, tendréis que iniciar el contenedor: para poder interactuar con IRIS desde fuera del contenedor (por ejemplo, para usar el portal de administración) necesitaréis publicar algunos puertos. El siguiente comando ejecutará el contenedor de IRIS Community Edition con los puertos del superserver y del servidor web publicados; tened en cuenta que no podéis tener nada más en ejecución que dependa de los puertos 1972 o 52773.

docker run --name iris -d --publish 1972:1972 --publish 52773:52773 intersystems/iris-community:latest-em
0
0 27
Artículo Dani Fibla · jun 8, 2025 6m read

¿Usas Office 365 y Teams en tu organización? 

Si es así, estás de suerte, te voy a enseñar cómo crear un agente para Copilot que te permitirá buscar información directamente en la documentación de IRIS. Es un proceso rápido y sencillo que te ayudará a agilizar tus búsquedas.

Además, la nueva versión de Office 365 incluye una versión gratuita de Copilot que puedes descargar y anclar fácilmente en Teams. 

Ve al menú Aplicaciones, busca Copilot y haz clic en Agregar. En ese momento comenzará la instalación de Copilot dentro de Teams. 

2
0 137
Artículo Katherine Duran · mayo 27, 2025 7m read

InterSystems IRIS permite ejecutar consultas SQL directamente desde ObjectScript mediante:

  • SQL Embebido (Embedded SQL): consultas SQL compiladas en tiempo de desarrollo, con chequeo de tipos y mayor eficiencia.
  • SQL Dinámico (Dynamic SQL): permite construir y ejecutar sentencias SQL en tiempo de ejecución, ideal para casos flexibles o condicionales.

Que es SQL (Structured Query Language) es un lenguaje estándar utilizado para interactuar con bases de datos relacionales. Permite realizar operaciones como:

3
7 180
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 69
Artículo Jose-Tomas Salvador · abr 1, 2025 6m read

En este artículo, hablaremos sobre los Mensajes Huérfanos.

¿Qué es un Mensaje Huérfano?

Cada cuerpo de mensaje está asociado con un encabezado de mensaje que contiene los metadatos. El encabezado incluye información como el nombre de la configuración de origen, el nombre de la configuración de destino, la hora de creación, la hora de procesamiento, la referencia asociada al cuerpo del mensaje, la información de sesión, el nombre de la clase del cuerpo del mensaje y el estado del mensaje.

0
0 39
Artículo Jose-Tomas Salvador · mar 25, 2025 1m read

Rúbrica de preguntas frecuentes de InterSystems

Esto puede hacerse con TRY-CATCH:

#dim ex As%Exception.AbstractExceptionTRY {
    //Code that causes an error
  }
  CATCH ex {
     do ex.Log()
  }

Si utilizáis ^%ETN, llamadlo desde la entrada BACK (BACK^%ETN).

Echad también un vistazo al artículo relacionado: Cómo obtener errores de aplicación (^ERRORS) utilizando un comando

0
1 44
Artículo Sergio Farago · feb 21, 2025 3m read

Hola Comunidad:

Vamos con el último artículo de cómo grabaros para el bonus de vídeo del Concurso de Artículos. 

No voy a entrar en cómo se hacen en edición cosas muy concretas porque varían según el programa que utilicéis. Los atajos de teclado y menús son diferentes, pero el concepto es el mismo. Vais a utilizar un programa para organizar el material grabado, eliminar lo que sobra y darle estructura. Muchos de estos softwares son gratuitos (Capcut, Canva y si no me equivoco DaVinci tuvo una versión gratuita). Yo edito con Adobe Premiere desde hace ya casi diez años (wow me hago viejo) así que si tenéis dudas de ese programa escribidme sin poblemas.

Ahí van algunos consejos concretos:

0
0 46
Artículo Sergio Farago · feb 18, 2025 4m read

Hola Comunidad:

¿Queréis saber cómo grabaros sin que parezca que habláis desde una cueva? ¿Sois de los que decís que "no salís bien en cámara"? 

Hoy voy a compartiros algunos consejos concretos que aprendí después de grabar varios años entrevistas para televisión y redes. Os recuerdo que son consejos por si estáis pensando aprovecharos del bonus de vídeo del Concurso de Artículos. No obstante, son consejos que seguro os sirven para presentar webinars, videollamadas y grabaros en general.

0
0 51
Anuncio Sergio Farago · feb 11, 2025

¡Hola! 

¿Conocéis ya la IA de la Comunidad? ¿Qué os parece? 

 

Este año intentaremos potenciar mucho esta herramienta. Pronto veréis mejoras en la misma, y espero que le hayáis dado una oportunidad. Sentíos libres de comentar cualquier cosa acerca de ella (o preguntarme por privado si tenéis dudas de cómo usarla). 

¿Os resultan útiles sus respuestas? 

¡Que tengáis muy buen día! 

0
0 36
Artículo Sergio Farago · dic 20, 2024 2m read

¡Hola a todos!

Muchos sabéis que Global Masters está activo de nuevo. Otros quizás no sepáis en qué consiste. 

Global Masters es un programa de recompensas donde se os premia por participar en la comunidad: escribir artículos, comentar, realizar desafíos (conocidos como Asks)

¿Y qué premios podéis conseguir? ¡Vamos a verlo!

0
0 66
Artículo Luis Angel Pérez Ramos · dic 5, 2024 2m read

A la hora de construir una imagen de IRIS, podéis usar archivos CPF Merge.

Aquí tenéis un ejemplo de CPF Merge:

[Actions]
CreateDatabase:Name=IRISAPP_DATA,Directory=/usr/irissys/mgr/IRISAPP_DATA

CreateDatabase:Name=IRISAPP_CODE,Directory=/usr/irissys/mgr/IRISAPP_CODE

CreateNamespace:Name=IRISAPP,Globals=IRISAPP_DATA,Routines=IRISAPP_CODE,Interop=1

ModifyService:Name=%Service_CallIn,Enabled=1,AutheEnabled=48

CreateApplication:Name=/frn,NameSpace=IRISAPP,DispatchClass=Formation.REST.Dispatch,AutheEnabled=48

ModifyUser:Name=SuperUser,PasswordHash=a31d24aecc0bfe560a7e45bd913ad27c667dc25a75cbfd358c451bb595b6bd52bd25c82cafaa23ca1dd30b3b4947d12d3bb0ffb2a717df29912b743a281f97c1,0a4c463a2fa1e7542b61aa48800091ab688eb0a14bebf536638f411f5454c9343b9aa6402b4694f0a89b624407a5f43f0a38fc35216bb18aab7dc41ef9f056b1,10000,SHA512

El archivo CPF Merge es un archivo de texto que, por ejemplo, contiene un conjunto de acciones. En este caso, creamos dos bases de datos, un namespace, habilitamos el servicio CallIn, creamos una aplicación web y un usuario.

El archivo CPF Merge puede ejecutarse cuando IRIS se inicia utilizando esta variable de entorno:

ISC_CPF_MERGE_FILE=/tmp/iris.cpf

Puede ser útil usar esta variable de entorno para construir una imagen de IRIS.

Aquí tenéis un ejemplo de Dockerfile:

ARG IMAGE=intersystemsdc/iris-community:latest
FROM $IMAGE as builder

WORKDIR /irisdev/app
RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /irisdev/app
USER ${ISC_PACKAGE_MGRUSER}

COPY . /irisdev/app

ENV ISC_CPF_MERGE_FILE=/irisdev/app/merge.cpf

RUN iris start IRIS \
    && iris session IRIS < /irisdev/app/iris.script \
    && iris stop IRIS quietly

Durante la construcción, cuando se ejecuta el comando iris start IRIS, se ejecuta el archivo CPF Merge.

¡Esperamos que esto os sea de ayuda!

0
0 42
Artículo Ricardo Paiva · nov 29, 2024 1m read

Rúbrica de preguntas frecuentes de InterSystems

Se puede obtener con una consulta de lista de la clase %SYS.Namespace.  

1. Creáis una rutina como esta:

getnsp
   set statement=##class(%SQL.Statement).%New()
   set status=statement.%PrepareClassQuery("%SYS.Namespace","List")
   set resultset=statement.%Execute()
   while resultset.%Next() {
       write resultset.%Get("Nsp"),!
   }
   quit

2. Ejecutadla en vuestro terminal.

USER>do ^getnsp
%SYS
DOCBOOK
SAMPLES
USER

El método para ejecutar consultas de clase presentado en este artículo se puede aplicar en una variedad de casos.

0
0 63
Artículo Jose-Tomas Salvador · nov 27, 2024 3m read

InterSystems IRIS proporciona un entorno completo para el desarrollo de aplicaciones, diseñado para crear aplicaciones sofisticadas centradas en datos y análisis intensivo, conectando silos de datos y aplicaciones. Está preparado para trabajar con todas las tecnologías comunes de desarrollo de manera abierta y basada en estándares, y admite tanto la programación del lado del servidor como del lado del cliente.

0
0 57
Artículo Alberto Fuentes · nov 27, 2024 1m read

La capacidad de reenviar mensajes fácilmente siempre ha sido una de las características más destacadas de nuestras capacidades de interoperabilidad.

Con la versión 2024.3 que se lanzará pronto (ya disponible como Developer Preview), ¡lo hemos hecho aún más sencillo!

0
0 71
Artículo Luis Angel Pérez Ramos · nov 19, 2024 1m read

Preguntas frecuentes de InterSystems

Por defecto, el orden de las columnas en una tabla lo determina automáticamente el sistema. Para cambiar el orden, estableced explícitamente el orden de cada propiedad utilizando la palabra clave SqlColumnNumber al definir la clase.

Ejemplo:

Property Name As %String [SqlColumnNumber = 2];

Por favor, consultad la documentación a continuación.

SqlColumnNumber

Si queréis cambiar el nombre de la tabla SQL, especificad SqlTableName. Si queréis cambiar el nombre de la columna (nombre del campo), especificad SqlFieldName.  

0
0 54
Artículo Ricardo Paiva · nov 19, 2024 2m read

Preguntas frecuentes de InterSystems

Si el archivo de journal es demasiado grande para buscarlo o filtrarlo mediante el Portal de administración, podemos consultarlo mediante los dos métodos siguientes.

① Usando la utilidad ^JRNDUMP
② Usandolo en código

================================================== ========== 

① Usando la utilidad ^JRNDUMP. Por ejemplo, si deseamos seleccionar todos los registros del archivo de journal que incluyen la referencia global ^ABC, hagamos lo siguiente:

*Ejecuta todos los comandos a continuación en el espacio de nombres %SYS.

0
0 58
Artículo Jose-Tomas Salvador · nov 13, 2024 6m read

He estado trabajando en este proceso con algunos compañeros de equipo y pensé que podría ser útil para otros, especialmente si trabajáis con HL7 y Ensemble/HealthConnect/HealthShare y rara vez os aventuráis más allá de la sección de Interoperabilidad.

Primero, me gustaría establecer que este tutorial es una extensión de la documentación ya existente sobre la importación y exportación de datos SQL, que se encuentra aquí: https://docs.intersystems.com/iris20241/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_impexp#GSQL_impexp_import

0
0 56
Artículo Kate Lau · nov 7, 2024 8m read

Escribo esto para compartir algo que me pasó anoche: ¡¡¡IRIS 2024.3 ya no viene con Python por defecto!!!

¡Eso significa que hay que instalarlo uno mismo como usuario! 😅 La ventaja es que puedo elegir mi versión de Python 😁🤭💃 Pero el problema es que, al principio... no sabía qué hacer 😥. Al revisar la comunidad (me gusta mucho más que la documentación oficial, lo siento equipo de documentación de InterSystems 😓), encontré el siguiente enlace:

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

0
0 64
Artículo Alberto Fuentes · oct 28, 2024 3m read

Hola a todos, hoy comentamos con un ejemplo cómo solucionar problemas relacionados con el TimeOut cuando se hacen llamadas a servicios SOAP.

Tomemos como ejemplo aplicaciones que proporcionen servicios SOAP que utilizan consultas SQL basadas en "DSTIME" para devolver registros que han sido añadidos o modificados recientemente. Como estos registros no cambian con frecuencia, estas consultas suelen devolver un número reducido de registros, lo cual implica un tiempo de procesamiento corto.

0
0 167