Artículo Muhammad Waseem · abr 25, 2022 2m read

En este artículo, explicaré el uso de las tablas %SQL_Diag.Result y %SQL_Diag.Message junto con la nueva funcionalidad LOAD DATA.

Se recomienda revisar primero la documentación LOAD DATA.

Después del éxito de una operación, LOAD DATA inserta un registro en la tabla %SQL_Diag.Result y los detalles se insertan en la tabla %SQL_Diag.Message

A continuación se muestra el comando básico cuando la tabla ya está creada y el archivo de origen no contiene una fila de encabezado.

LOAD DATA FROM FILE 'C://TEMP/mydata.txt' 
INTO MyTable

El nombre del archivo debe incluir un sufijo .txt o .csv (valores separados por comas) y tanto el origen como el destino tienen la misma secuencia de columnas de datos.

0
0 160
Artículo Jose-Tomas Salvador · abr 25, 2022 2m read

Hace poco he empezado a utilizar más Docker Desktop en mi equipo con Windows 11, sobre todo junto con la extensión Remote - Containers de VS Code y el repositorio iris-python-template de @Guillaume Rongier

A veces el contenedor se inicia sin problemas, pero otras veces falla y reporta que no puede usar un puerto.

Al final, localicé el problema. Aparentemente, el servicio Windows NAT Driver utiliza un OS facility para reservar un gran rango de puertos.

0
0 436
Artículo Ricardo Paiva · abr 22, 2022 3m read

¡Hola Comunidad!

Compartí mi experiencia trabajando por primera vez con FHIR en este artículo.

En esa publicación, escribí cómo exploré los recursos FHIR y comenté la información que encontré útil en la documentación FHIR.

La primera versión de mi app solo muestra la información que ofrecen los Recursos FHIR. 

Quería hacer que el usuario pudiera actualizar los detalles del paciente, así que busqué un ejemplo de cómo hacerlo. 

La página Github de fhir.js tiene un ejemplo de cómo actualizar un recurso. 

Viendo este ejemplo me dí cuenta de que era fácil. 

0
0 202
Artículo Rizmaan Marikar · abr 21, 2022 13m read

Hay varias maneras de generar ficheros Excel usando tecnología InterSystems: por ejemplo utilizando informes generados con InterSystems Reports, o los antiguos informes ZEN, o incluso haciendo uso de librerías Java de terceros. Las posibilidades son casi infinitas.

Pero, ¿qué pasa si quieres crear una sencilla hoja de cálculo sólo con ObjectScript? (sin aplicaciones de terceros)

En mi caso, necesito generar informes que contengan muchos datos sin procesar (a los financieros les encantan), pero mi antiguo informe ZEN fallaba y me da lo que me gusta llamar un "archivo con cero bytes". Básicamente, Java se queda sin memoria y provoca una sobrecarga en el servidor de informes.

0
0 196
Pregunta Kurro Lopez · abr 20, 2022

Hola a todos.

Queremos hacer la migración de las producciones y bases de datos de Ensemble 2017 al nuevo IRIS 2021.1.

Mi primera intención era utilizar las copias backups y cargarlas directamente en IRIS usando DO ^BACKUP pero como es lógico, avisa que el fichero de backup no es un backup de IRIS

Mi siguiente intento es hacer un Freeze de la base de datos de Ensemble 2017 y copiar el fichero DAT directamente, pero antes de hacer nada me imagino que la estrcutura es diferente.

¿Cual es la mejor forma de migrar todo lo que tenemos en Ensemble 2017 a IRIS?

Un saludo,
Kurro

4
0 204
Pregunta Yone Moreno · abr 1, 2022

Buenos días,

Agradecer a ustedes el tiempo dedicado en leer y responder a esta duda

Necesitamos indagar la forma de mostrar un EnsLib.DICOM.Document mediante LOGINFO, en las trazas

Hemos tratado de emplear:

set writer=##class(%XML.Writer).%New()

set status=writer.OutputToString()

set status=writer.RootObject(..DocumentFromService)

set xml= writer.GetXMLString()

$$$LOGINFO("..DocumentFromService en xml: "_xml)

 

En la traza nos informa de que el método "RootObject" para los documentos DICOM, los EnsLib.DICOM.Document, no existe:

1
0 227
Artículo Jose-Tomas Salvador · abr 20, 2022 1m read

Encontré este pequeño artículo de @Brendan Bannon de hace unos años... pero creo que es muy útil para cuando tengamos estructuras de almacenamiento basadas puramente en globals y queramos tener la posibilidad de acceder a ellas desde el punto de vista de Objetos y/o Relacional.

El fichero ZIP adjunto contiene un paquete de ejemplos de mapeos SQL Storage (válido para IRIS y Caché) que he hecho y recopilado a lo largo de estos años.

0
0 158
Artículo Eduardo Anglada · abr 19, 2022 3m read

Gracias a @Yuri Marx hemos visto un buen ejemplo de Migración de Bases de datos de Postgres a IRIS.
Mi problema personal es el uso de DBeaver como una herramienta de migración.
En especial, como una de las fortalezas de IRIS (y también Caché) es la disponibilidad de los SQLgateways que permiten el acceso a cualquier base de datos externa, siempre y cuando se puedan acceder usando ODBC/JDBC. Así que he ampliado el paquete para demostrarlo.

0
1 247
Anuncio Esther Sanchez · abr 19, 2022

¡Hola desarrolladores!

Día a día, el equipo de la Comunidad de Desarrolladores hace que ésta sea un lugar mejor para los desarrolladores de InterSystems. En esta nueva publicación os mostramos cómo hemos mejorado la Comunidad en los últimos meses.

Principales novedades:

  • Edición del perfil de usuario
  • Nueva página de Concursos para los concursos de artículos técnicos
  • Contador de caracteres y palabras

Os explicamos cada cambio más abajo.

0
0 96
Anuncio Esther Sanchez · abr 19, 2022

¡Hola Comunidad!

Ya están publicados los títulos y descripciones de las Sesiones Técnicas ("Focus Sessions") que se celebrarán en la Convención Anual ("Global Summit") de InterSystems.

Listado de Sesiones Técnicas, por orden alfabético >>

Pronto publicaremos los horarios de todas las Sesiones y así podréis organizar vuestra agenda para el evento.

¡Os mantendremos informados!


0
0 118
Artículo Muhammad Waseem · abr 18, 2022 2m read

Antecedentes

En las versiones de InterSystems IRIS >=2021.2 podemos usar irispython para escribir directamente código python encima de nuestras instancias IRIS. Esto nos permite usar paquetes de python, llamar a métodos, hacer consultas SQL y hacer casi cualquier cosa en Objectscript excepto pythonic.

Por ejemplo, a continuación compruebo si hay un namespace:

#!/usr/irissys/bin/irispython
import iris
# call arbitrary class methods
result = iris.cls('%SYS.Namespace').Exists('USER')
if result == 1:
    print(f"Namespace USER is present")
0
0 201
InterSystems Official Jose-Tomas Salvador · abr 13, 2022

Hola!! Hemos abierto una plaza de Sales Engineer en InterSystems para nuestra oficina de Madrid.

No se requieren conocimientos de nuestra tecnología aunque, por supuesto, tenerlos puede ser un gran plus. Lo más importante es que te apasione la tecnología, te guste compartir conocimiento, aprender de otros y enseñar,... y no te asusten los retos, para encontrar soluciones innovadoras junto con nuestros partners a las necesidades que se les plantean, en areas como rendimiento de BBDDs, interoperabilidad, desarrollo de aplicaciones críticas, IA,....

0
0 197
Anuncio David Reche · abr 7, 2022

Nos encanta anunciaros que hemos creado un nuevo Portal de Sugerencias: InterSystems Ideas.

El objetivo del Portal es mejorar los mecanismos para que podáis sugerir cómo mejorar nuestros productos y cómo hacerlos evolucionar para satisfacer vuestras necesidades. La sección de Preguntas es una excelente manera de interactuar con otros colegas sobre problemas específicos de código; y elSoporte a Clientes es la forma de obtener la solución a un problema.

0
0 144
Anuncio Esther Sanchez · abr 6, 2022

Hola desarrolladores:

Como ya os anunciamos hace unos días, InterSystems va a ser uno de los patrocinadores de la conferencia Internacional "J On The Beach" que tendrá lugar en Málaga los días 28-29 de abril.

El primer día de la Conferencia @David Reche @Eduardo.Angladadarán una ponencia titulada "Capitán Kirk, descubierto un exoplaneta en la ruta usando AutoML"

Y, además, InterSystems contará con un stand que, como siempre, tendrá sorpresas... 😁

¿Quieres saber qué han preparado?? Sigue leyendo...

 

0
0 161
Artículo Muhammad Waseem · abr 6, 2022 7m read

¡Hola Comunidad!

Esta publicación es una introducción a mi aplicación iris-globals-graphDB en Open Exchange.

En este artículo, mostraré cómo guardar y recuperar Graph Data en InterSystems Globals con la ayuda del frameworkPython Flask Web y la librería PYVIS Interactive network visualizations.

Recomendación

Paso 1: Establecer conexión con IRIS Globals mediante el SDK nativo de Python

0
0 223
Anuncio Esther Sanchez · abr 6, 2022

Si tu app en Open Exchange tiene una demo online o una demo que puede ser descargada, puedes añadir el enlace a ella en el perfil de tu app.
Para hacerlo:

  1. Inicia sesión en Open Exchange
  2. Ve a tu cuenta, a la sección "Applications" en ella
  3. Haz clic en la app que tiene una demo 
  4. Ve a Settings -> Edit
  5. Pon tu enlace a la demo en el campo Demo URL
  6. Guarda los cambios 
  7. Envía la aplicación para aprobación

Ejemplo de demo de la app iris-python-faker

0
0 130
Anuncio David Reche · abr 6, 2022

InterSystems anuncia la versión 2.0.0 del Language Server para VS Code. Language Server incrementa la extensión VS Code ObjectScript para ofrecer un mejor resaltado de sintaxis, documentación embebida, autocompletado de código y más.

Todos los detalles están disponibles en el archivo README del repositorio de GitHub. La versión 2.0.0 añade soporte a varias arquitecturas de plataformas, incluyendo M1 Macs! También reduce el tamaño del paquete, mejora el coloreado del SQL y arregla otros problemas que se detallan en el CHANGELOG. 

0
0 152
Artículo Eduardo Anglada · abr 5, 2022 5m read

Si estás implementando más de un entorno/región/nube/cliente, inevitablemente te encontrarás con el problema de la gestión de la configuración.

Aunque todas (o solo varias de) tus implementaciones pueden compartir el mismo código fuente, algunas partes, como la configuración (ajustes, contraseñas) son diferentes de una implementación a otra y se deben gestionar de alguna manera.

En este artículo, intentaré ofrecer varios consejos sobre ese tema. Y comentaré principalmente las implementaciones de los contenedores.

0
0 188
Anuncio David Reche · abr 5, 2022

Me complace anunciar el lanzamiento de la versión 1.4.4 de la extensión VS Code, que contiene las siguientes mejoras y correcciones de fallos. Los enlaces que llevan a las issues de GitHub han sido corregidos. Como siempre, si ya tienes la extensión instalada, VS Code debería actualizar automáticamente tu extensión. Si no la tienes instalada, sigue estas instrucciones para empezar. 

Registro de cambios

0
0 133
Anuncio Esther Sanchez · abr 5, 2022

🎉 🎉 🎉 

¡Gracias a todos los que compartís vuestras aplicaciones en Open Exchange!

Y sois más que bienvenidos a visitarlo si aún no lo conocéis.

Open Exchange es una galería de aplicaciones, conectores y librerías, que los desarrolladores de InterSystems publican para compartir formas de trabajar, enfoques y hacer negocio. Todas las aplicaciones están o construidas con InterSystems Data Platform o pensadas para ser usadas en desarrollos con nuestra tecnología.

 

0
0 104
Artículo Alberto Fuentes · abr 5, 2022 2m read

¿Te suenan OAuth2 / OpenID Connect pero no estás seguro de cómo se utilizan? ¿Has necesitado implementar alguna vez Single Sign On, servicios web seguros basados en tokens? ¿Has necesitado incorporar autenticación / autorización a tus aplicaciones web o servicios y no sabías por dónde empezar?

¿Que te parecería poder configurar paso a paso un servidor de autorización, un cliente y un servidor de recursos? Aquí tenéis un ejemplo donde se configuran instancias Intersystems IRIS para actuar como cada uno de esos roles de OAuth2.

Una breve introducción

2
0 359
Pregunta Eduard Lebedyuk · mar 17, 2022

He definido una clase con una propiedad de objeto dinámico:

 

Mi clase

Class test.Dyn Extends %Persistent
{

Property json As %DynamicObject;

/// do ##class(test.Dyn).test()
ClassMethod test()
{
  do ..%KillExtent()
  for len = 100, $$$MaxStringLength - 1, $$$MaxStringLength, $$$MaxStringLength+1, $$$MaxStringLength *2 {
    set sc = ..save(len)
    write "Len: ",len, " Result: ",$case($$$ISERR(sc), $$$YES: $System.Status.GetErrorText(sc), : "OK"),!
  }
}

ClassMethod save(len)
{
  set json = {}
  set stream = ..getStream(len-8) // -8 because {"a":""}
  do json.%Set("a", stream, "stream")
 
  set obj = ..%New()
  set obj.json = json
  quit obj.%Save()
}

ClassMethod getStream(len)
{
  set stream = ##class(%Stream.TmpCharacter).%New()
 
  if len<$$$MaxStringLength {
    do stream.Write($tr($j("",len)," ","A"))
  } else {
    for i=1:$$$MaxStringLength:len {
      do stream.Write($tr($j("",$$$MaxStringLength)," ","A"))
    }
    do stream.Write($tr($j("",len-i)," ","A"))
  }
  quit stream
}
}

El problema que me encuentro es que si la longitud de una propiedad json serializada es de más de 3641144 símbolos, el objeto no puede guardarla, con el siguiente error (MAXSTRING o STRINGSTACK):

Length: 100 Result: OK
Length: 3641143 Result: OK
Length: 3641144 Result: OK
Length: 3641145 Result: ERROR #5002: ObjectScript error: <MAXSTRING>%GetSerial+1^%Library.DynamicAbstractObject.1
Length: 7282288 Result: ERROR #5002: ObjectScript error: <STRINGSTACK>%GetSerial+1^%Library.DynamicAbstractObject.1

¿Hay algún método alternativo? Necesito almacenar jsons relativamente grandes (10-15 Mb) y las propiedades de objetos dinámicos permiten un acceso muy práctico.

$ZSTORAGE está establecido en -1.

2
0 166
Pregunta Kurro Lopez · oct 29, 2021

Hola a todos.

Estoy intentando crear una regla de enrutamiento para llamar a un web service según el valor de un parámetro de un mensaje.

Mi primer intento es el siguiente:

Tengo una clase común con toda la información, BuscarHuecoRequest, y comprubea cual es el valor de la propiedad "CodigoProveedor".

La tabla T_PROVEEDOR contiene la lista de códigos de los proveedores, si es F, llama a WSF, si es C, llama WSC, etc... Usando un transformador para convertir los valores para este proveedor.

Lanza un error, porque no la propiedad CodigoProveedor no existe.

He depurado y he visto el siguiente código:

1
0 109
Anuncio Esther Sanchez · abr 1, 2022

Desarrolladores... ¡vuelve el Global Summit! 

Después de dos años de videoconferencias y encuentros virtuales, estamos felices de poder reunirnos con todos nuestros clientes y partners de forma presencial en la nueva Convención Anual de InterSystems (Global Summit 2022). Es el primer evento en persona desde que empezó la pandemia y en la conferencia principal contaremos con la presencia de líderes y desarrolladores a la vanguardia de sus sectores. ¡Ya está abierto el plazo de inscripción!

➡️ Global Summit 2022

🗓 Fecha: 20-23 de junio, 2022

📍 Ubicación: Seattle, WA, Estados Unidos

0
0 160
Anuncio Esther Sanchez · abr 1, 2022

¡Hola desarrolladores!

Hemos hecho algunos cambios en los sitios web de las Comunidades de Desarrolladores de InterSystems:

  • Nueva función de búsqueda
  • Estadísticas generales de la Comunidad
  • Conexión con el perfil de Facebook
  • Cambios en las páginas de las publicaciones: etiquetas, información del autor, resaltado del borrador

Vamos a explicar en detalle cada uno de ellos. 

0
0 100