Limpiar filtro
Anuncio
Esther Sanchez · 26 nov, 2020
¡Hola a tod@s!
Os invitamos a un nuevo webinar en español: "Sacando el máximo rendimiento a Kubernetes", el miércoles 9 de diciembre, a las 4:00 PM (CET).
En este webinar, vamos a ver las características básicas de Kubernetes y cómo instanciar la plataforma de datos InterSystems IRIS en Alta Disponibilidad. Para ello, vamos a emplear diferentes centros de datos de Google Cloud.
No es necesario que tengas conocimientos previos de orquestación de Kubernetes. Aprenderás a provisionar contenedores, a actualizarlos y a conseguir que tu aplicación escale y tenga tolerancia a fallos.
¡Os esperamos!
➡️ Podeis registraros aquí >> ¡Recordad! Hoy miércoles 9 es el webinar gratuito sobre cómo sacar el máximo rendimiento a Kubernetes.
A las 16:00 PM (CET) 👍
Aún podéis registraros aquí >>
Artículo
Jose-Tomas Salvador · 13 ene, 2021
Algunos clientes me preguntan sobre la migración de Caché a IRIS. ¿Por qué migrar a IRIS? Caché es excelente, estable y ofrece un buen rendimiento...
Estos clientes tienen razón pero, en los últimos años, la transformación digital requiere soluciones más completas para adaptarse a las nuevas necesidades. E InterSystems fue visionaria en entenderlo y por ello lanzó IRIS al mercado.InterSystems IRIS es una plataforma de datos lista para el reto de la transformación digital. Y para demostrarlo, he creado una Propuesta de Valor ("Value Canvas").
Las Propuestas de Valor son una herramienta perfecta para mostrar en unos pocos minutos el valor del cambio.
Si queréis crear una Propuesta de Valor nueva para este tema o para cualquier otro, podéis descargar la versión en PowerPoint aquí: https://github.com/yurimarx/valuecanvas/blob/master/valuecanvasiris.pptx?raw=true
Espero que os resulte útil.
Artículo
Ricardo Paiva · 11 jul, 2023
¡Hola Comunidad!
Seguramente habéis tod@s escuchado algo sobre Salesforce – la empresa y su software. En este articulo nos dedicaremos a la conectividad al software de CRM – Salesforce CRM. De una manera muy genérica, Salesforce CRM tiene la capacidad de administrar las interacciones con los clientes de una organización a través de varios métodos, como llamadas telefónicas, consultas por correo electrónico, comunidades, medios y redes sociales. Se dice que Salesforce maneja todas las relaciones con los clientes - centrándose en los procesos de ventas, soporte y marketing. Este servicio/software está disponible en la nube.
Qué bueno sería que pudiésemos conectarnos a Salesforce desde nuestro entorno InterSystems IRIS o cualquier otro producto de InterSystems.
La verdad es que acceder a los objetos (datos) de Salesforce es bastante simple e intuitivo. Este artículo se dedica a describir los pasos necesarios para establecer conectividad y acceder a los datos disponibles en Salesforce.
APIs de Salesforce
Salesforce dispone de una multiplicidad de APIs. Para nosotros, y a lo largo de este artículo, nos dedicaremos a la API REST. Esta API proporciona una interfaz de servicios web basada en REST - poderosa, conveniente y simple para interactuar con Salesforce. Sus ventajas incluyen la facilidad de integración y desarrollo, siendo una excelente opción tecnológica para usar con aplicaciones móviles y proyectos web. Para determinados proyectos, puede utilizarse la API REST con otras APIs de Salesforce. Para más información sobre las APIs de Salesforce, podéis consultarlo aquí.
Configuración en Salesforce
Aún que no sea el objetivo de este artículo, os dejo aquí el enlace al tutorial de configuración del REST endpoint en Salesforce - se trata de la guía en la base de este articulo. De manera muy resumida, los pasos necesarios son:
Paso 1: Regístrese en Salesforce Developer Edition proporciona una solución fácil y gratuita para que pueda utilizar Salesforce para pruebas y desarrollo.
Paso 2: configurar la autenticación para enviar solicitudes con éxito, la API REST requiere un token de acceso obtenido mediante autenticación. Es cierto que uno puede crear y autenticarse en su propia ConnectedApp (aplicación conectada). Sin embargo, usaremos la CLI de Salesforce para mayor comodidad. Salesforce CLI es una ConnectedApp que puede autenticar y no requiere ningún trabajo para configurar. Para ello habrá que acceder a la consola de Salesforce:
Navegar a Apps -> App Manager -> Create ConnectedApp
Los parámetros de configuración son:
Connected App Name
API Name
Contact Email
Enable OAuth Settings: sí
Callback URL: https://localhost
Selected OAuth Scopes: Full access (full)
Grabar/Continuar (podrá tardar hasta unos 10 minutos)
En cuanto se termine la generación del endpoint tendremos nuestro ConsumerKey y ConsumerSecret – habrá que copiar y guardarlos.
Paso 3: Nos falta una última configuración en Salesforce.
Acceder a Setup -> Platform Tools -> Apps -> Connected Apps -> Manage Connected Apps
Editar las características de la App:
Desde nuestra ConnectedApp hemos de editar las políticas (edit policies) y cambiar los siguientes parámetros tal y como se adjunta:
Permitted Users: all users may self-authorize
IP Relaxation: Relax IP restrictions for activated devices
Desde InterSystems IRIS:
Paso 1: Usaremos Python embebido para nuestra conexión a Salesforce. Lo primero que hemos de hacer es instalar el paquete necesario para establecer las conexiones HTTP – Requests. De manera a instalarlo en un container es necesario:
$ pip3 install --target /usr/irissys/mgr/python requests
Paso 2: A continuación, tenemos una clase ejemplo con código de muestra para acceder a los recursos de Salesforce. En este caso se hace una solicitud para obtener los objectos disponibles. Antes de probar este ejemplo, hay que asegúrese de completar los requisitos previos y obtener un token de acceso en la configuración de Salesforce.
Class salesforce.PyConnTest
{
ClassMethod connTest() [ Language = python ]
{
import requests
#create access token
CONSUMER_KEY='XXXXXXXXXX'
CONSUMER_SECRET='XXXXXXXXXX'
DOMAIN_NAME='https://intersystems4-dev-ed.develop.my.salesforce.com'
USERNAME='mymail@domain.com'
PASSWORD='mypassword'
json_data={
'grant_type': 'password',
'client_id': CONSUMER_KEY,
'client_secret': CONSUMER_SECRET,
'username': USERNAME,
'password': PASSWORD
}
response_access_token=requests.post(DOMAIN_NAME + '/services/oauth2/token', data=json_data)
print(response_access_token.status_code)
print(response_access_token.reason)
print(response_access_token.json())
if response_access_token.status_code == 200:
access_token_id=response_access_token.json()['access_token']
print('access token created')
#retrieve available objects
headers={
'Authorization': 'Bearer ' + access_token_id
}
response_sObject=requests.get(DOMAIN_NAME + '/services/data/v53.0/sobjects', headers=headers)
print(response_sObject.reason)
print(response_sObject.json())
}
}
Los parámetros más relevantes son:
grant_type: en este ejemplos usamos 'password'.
client_id: se trata del identificador publico para la App. Es generado en el momento de creación de la ConnectedApp.
client_secret: se trata de un secreto conocido solamente por el servidor de Autorización y por la App. Se genera en el momento de creación de la ConnectedApp.
username: usuario registrado en Salesforce
password: contraseña del usuario de Salesforce.
Con esta configuración básica se establece la conexión entre InterSystems IRIS (o cualquier otro producto de InterSystems) y Salesforce. Este articulo se basa en la guía rápida de Salesforce y se dedica a la API REST de Salesforce.
Artículo
Jose-Tomas Salvador · 11 mayo, 2022
Una de las formas más sencillas de configurar entornos de desarrollo repetibles es utilizar contenedores para ellos. Descubrí que cuando cambian rápidamente, era muy conveniente alojar una instancia de vscode dentro de mi contenedor de desarrollo. De este modo, he creado un script de contenedor sencillo que permite añadir en un contenedor IRIS un vscode basado en un navegador. Esto debería funcionar para la mayoría de los contenedores 2021.1 y posteriores. [El repositorio de mi código se puede encontrar aquí](https://github.com/nickmitchko/Hosting-vscode-in-a-container)
> El contenedor de InterSystems IRIS con vscode y pre-conectado
| Cred | Value |
|--------------|:--------:|
| User | _SYSTEM |
| Password | SYS |

## Visión general
Este proyecto crea un contenedor IRIS con una versión servidor (basada en web) de vscode disponible en el mismo contenedor IRIS. Esto ofrece:
* Edición del código en el mismo contenedor
* Pre-conexión a la instancia del contenedor de IRIS
* Enlaces desde el Management Portal
* Arranque automático del IDE con el contenedor
# Inicio rápido
1. [Descarga](https://github.com/nickmitchko/Hosting-vscode-in-a-container/archive/refs/heads/master.zip) o `git clone https://github.com/nickmitchko/Hosting-vscode-in-a-container.git`
2. En la raíz del proyecto, ejecuta `docker build . -t vscode-irishealth-ml:latest --no-cache`
3. Ejecuta `docker-compose up`
* No usas docker compose? Echa un vistazo [aquí](#No-Docker-Compose)
4. Ve al [Management Portal](http://localhost:52773/csp/sys/%25CSP.Portal.Home.zen)
5. Inicia sesión con el usuario y contraseña mostrada anteriormente
6. Haz clic en el enlace a VSCODE en el panel Favoritos
7. Cuando te pregunte, utiliza la misma contraseña en vscode para conectar con la instancia de IRIS.
```bash
# New folder for project
mkdir vscode-iris
cd vscode-iris
# Clone repo here
git clone https://github.com/nickmitchko/Hosting-vscode-in-a-container.git .
# Build image
docker build . -t vscode-irishealth-ml:latest --no-cache
# Only Run (A) or (B)
#
# (A) Run compose file
docker-compose up
# OR (B) if you want a daemon
docker-compose up -d
```
## Añadiendo Persistencia
Si quieres una instancia de IRIS persistente, descomenta las lineas 16 a 20 en el fichero docker-compose.yml. Esto monta un volumen de almacenamiento persistente al contenedor.
```yml
volumes:
- "./durable/:/durable/"
environment:
- ISC_DATA_DIRECTORY=/durable/iconfig
```
## Cambiando la imagen de base
Esta imagen se construye sobre las imágenes zpm de la Comunidad de Desarrolladores de InterSystems ([las puedes encontrar aquí](https://hub.docker.com/r/intersystemsdc/iris-community/tags)). Estas imágenes incluyen el comando zpm que nos permite instalar fácilmente desde el repositorio, pero solo tiene una licencia "community" de 90 días.
La etiqueta de imagen usada para builds es:
```dockerfile
FROM intersystemsdc/irishealth-ml-community:latest
```
Si quieres cambiar la imagen, cambia la primera línea del archivo docker a tu etiqueta de imagen deseada (o una instancia de IRIS modificada o [una oficialmente soportada](https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_containerregistry#PAGE_containerregistry_public)). Por ejemplo:
```dockerfile
FROM containers.intersystems.com/intersystems/irishealth-community:2021.2.0.651.0
```
# Sin Docker-Compose
Si no usas docker compose, aún puedes ejecutar el contenedor así:
```bash
# After building the container
# --after command is required
docker run --name vscode -d \
--publish 1972:1972 \
--publish 52773:52773 \
--publish 51773:51773 \
--publish 53773:53773 \
--publish 8080:8080 \
--publish 8888:8888 \
vscode-irishealth-ml:latest \
--after "/bin/bash /install/boot.sh"
```
Este artículo ha sido etiquetado como "Mejores prácticas" ("Best practices").
Los artículos con la etiqueta "Mejores prácticas" incluyen recomendaciones sobre cómo desarrollar, probar, implementar y administrar mejor las soluciones de InterSystems.
Anuncio
Esther Sanchez · 25 mayo, 2020
¡La Comunidad de Desarrolladores de InterSystems en español cumple un año! 🎉🎉Y para celebrarlo con todos vosotros, hemos preparado un SORTEO.
🎁 El premio son 2 tarjetas regalo de Amazon valoradas en 50€ cada una, solo para miembros registrados en la Comunidad. Los empleados de InterSystems no podrán participar en el sorteo.
Para participar, debéis:
➡️ Buscar cual es la "APP de la semana" en la Comunidad de Desarrolladores.➡️ Poner la respuesta en un comentario a esta publicación.➡️ Decirnos qué amigo desarrollador se llevará la otra tarjeta.
Además...
🎁 Habrá más premios sorpresa para las primeras personas que respondan correctamente.
🗓️ Podéis participar hasta el domingo 31 de mayo a las 24h.
🍀 El lunes 1 de junio haremos el sorteo e informaremos de los ganadores.
¡Muchísimas gracias por seguirnos y usar la Comunidad durante este año! Esperamos seguir cumpliendo juntos muchos años más! 🎊 La app de la semana es: Native Api Contest Template.
Y la tarjeta sería para Jorge Prieto La App es: Native Api Contest Template
Nota: El 28/05/2020 ha cambiado de app y ahora es IRIS OData Client
Y la otra tarjeta, se la regalo a @Félix.deFederico Esther no lo ha dicho pero los empleados de InterSystems lamentablemente no podemos participar... No te preocupes, que si me toca te compro un libro en Amazon Cierto, David. Ya he añadido esa restricción en el anuncio.
Gracias La App es de la semana Native Api Contest Templat
La otra tarjeta para @Perla.Escarcega Participando 🎊 La app de la semana es: Native Api Contest Template.
La tarjeta de regalo sería para Gaspar Sepulveda, nuestro amigo desarrollador de eHealth Care!👩🏼🔬 La App es de la semana Native Api Contest Template
La otra tarjeta para @Carlos.CollazoFernández La App es: Native Api Contest Template
Y la otra tarjeta, es para @Carlos.CollazoFernández La App es: Native Api Contest Template
Y la otra tarjeta es para: Jacobo Rios Bordas Hola a todos
La app de la semana es: IRIS OData Client , o eso me aparece a mi arriba a la derecha 😉
La otra tarjeta seria para @Joan-Baptista.Fabregas
Muy buena iniciativa sobre todo si nos toca a nosotros ¡Felicidades a todos!
Gracias por las excelentes traducciones de mis artículos.
Y espero tus votos en el Contest OpenExchange
Y la tarjeta sería para @Francisco.López1549 La app de la semana es: Native Api Contest Template.
Y la tarjeta sería para Ivan Ruiz Gomez Hola a todos,
la app de la semana es IRIS ODATA CLIENT y la otra tarjeta sería para @Salvador Rigau Arespacochaga.
Saludos! Hola a todos,
la app de la semana es IRIS ODATA CLIENT y la otra tarjeta sería para @Javier Lorenzo Mesa La app de la semana es: Native Api Contest Template.
La otra tarjeta es para Elena Gutiérrez
@Elena Gutiérrez La app de la semana es: Native Api Contest Template.
Y la tarjeta sería para
@Lorenzo Contador La app de la semana es IRIS ODATA CLIENT y la otra tarjeta sería para @Miguel Leganes La app de la semana es IRIS ODATA CLIENT y la tarjeta otra es para @Josefa Borrego
Anuncio
Esther Sanchez · 23 dic, 2020
¡Hola Comunidad!
Global Masters, el Programa de Fidelización de InterSystems, está estrechamente relacionado con la Comunidad de Desarrolladores - cualquier contribución que se realice en la Comunidad, da puntos en Global Masters.
Por eso, hemos elaborado una guía sobre cómo obtener puntos en Global Masters:
CÓMO CONSEGUIR PUNTOS EN GLOBAL MASTERS
Escribir una publicación en la CD en inglésEscribir una publicación en la CD en español
200400
Primer comentario en cualquier Comunidad de Desarrolladores (*)Cada comenterio posterior en la CD en inglésCada comentario posterior en la CD en español
3003060
Primera respuesta que te marquen como "Respuesta aceptada"Cada respuesta posterior marcada como "Aceptada"5 / 10 / 25 / 50 respuestas marcadas como "Aceptadas"
1 0001504 000 / 8 000 / 20 000 / 40 000
Traducir un artículo / una pregunta publicados en la CD
150 / 30
Publicar 1 / 5 / 10 / 25 / 50 artículos en la CD
1 500 / 7 500 / 15 000 / 40 000 / 75 000
Hacer 1 / 5 / 10 / 25 / 50 preguntas en la CD
500 / 2 000 / 5 000 / 15 000 / 30 000
Cada aplicación publicada en Open ExchangePor cada aplicación ZPM, puntos extraPublicar 1 / 5 / 10 / 25 aplicaciones en Open Exchange
8004001 000 / 10 000 / 25 000 / 75 000
Hacer publicaciones que tengan más de 750 / 2000 / 5000 / 15 000 visualizaciones
600 / 2 500 / 7 000 / 20 000
Leer un artículo publicado en la CDVer un vídeo publicado en la CDCompartir un artículo / vídeo en redes sociales
102040
Escribir 1 / 2 / 3 / 4 / 5 artículos etiquetados como "Mejores prácticas"
1 000 / 3 000 / 7 000 / 10 000 / 15 000
Conseguir 50 / 100 / 250 / 500 / 1 000 descargas de tu aplicación en Open Exchange
2 500 / 5 000 / 7 500 / 12 500 / 25 000
Hacer una reseña para InterSystems / sus productos
2 000 - 3 000
Invitar a colegas a la CD
600
Hacer un vídeo sobre tu aplicación publicada en OE
3 000
(*) solo cuentan los comentarios hechos después de registrarse en Global Masters.
Completa los retos, gana insignias y sube en los niveles: Insider > Advocate > Specialist > Expert > VIP.
¡Cuanto mayor sea tu nivel, podrás optar a mejores premios!
Además... consulta la información adicional sobre Global Masters:
Cómo unirse a Global Masters
Descripción de las Insignias de Global Masters
Descripción de los Niveles de Global Masters
Cambios en Global Masters
Si aún no perteneces al Programa de Fidelización de InterSystems, ¡te puedes dar de alta ahora mismo!
Si tienes alguna duda, puedes dejarnos un comentario en esta publicación y te responderemos al momento.
Artículo
Esther Sanchez · 6 jun, 2023
¡Hola Comunidad!
Estoy segura de que a muchos de vosotros os hubiera encantado asistir al Global Summit 2023, pero no habéis podido por una razón u otra. Por eso haré un resumen de cada día aquí en Florida, empezando por el domingo y el lunes.
Aunque la ceremonia de inauguración oficial no era hasta el domingo por la tarde, había muchas actividades interesantes antes del inicio de la Convención. Algunas de las más destacadas, especialmente para los aficionados a los deportes, fueron los torneos de golf y de fútbol. No puedo comentar nada del fútbol porque no estuve allí, aunque me contaron que fue muy interesante. Y si alguno de vosotros estuvo en el torneo, podéis contarnos vuestra experiencia y/o añadir fotos en los comentarios!). Yo os puedo hablar del torneo de golf 😊
Empezó a las 6 (!) de la mañana y continuó hasta las 2 de la tarde. Al principio, el cielo estaba nublado e incluso llovió un rato. Pero un par de horas después, el sol apareció y hasta hizo falta usar el protector solar.
Para hacerlo incluso más interesante, la fauna local decidió salir a jugar también.
Después de anunciar los ganadores de cada torneo y comer, volvimos al hotel para asistir a otros eventos.
Por ejemplo, por la tarde hubo un evento para mujeres.
Lo que nos llevó a la actividad principal del domingo - ¡la recepción de bienvenida! Fue el mejor momento para reencontrarse con caras conocidas y volver a hablar con colegas y amigos.
Por ejemplo, estuve con @Muhammad.Waseem y @Dmitry.Maslennikov, moderadores de la Comunidad en inglés:
Y con @Lorenzo.Scalese, @Dmitry.Maslennikov y @Guillaume.Rongier7183, de la Comunidad en francés:
Y esto fue todo el día "previo". ¡Lo más importante empezaba el lunes!
El Presidente de InterSystems, Terry Ragon, inauguró el Global Summit 2023. En su discurso, recordó a todos que cualquier empresa de éxito tiene que innovar para seguir siendo relevante. ¡E InterSystems es una de esas empresas!
Además, felicitó a todos por el 45 aniversario de InterSystems y el 30 aniversario de los Global Summits! ¿No es increíble? No sé vosotros, pero yo ni había nacido cuando se fundó la empresa!
Tras el discurso inaugural, las primeras ponencias estaban dedicadas a la atención sanitaria. @Donald.Woodlock, entre otras cosas, habló sobre IA y cómo puede acercar a los desarrolladores a los clientes y no al revés.
Después de la comida, todos nos dispersamos en diferentes sesiones, charlas, reuniones etc. Yo volví al stand de la Comunidad de Desarrolladores en el "Tech Exchange".
Si estás en el Global Summit, no te olvides de pasarte por aquí - te daré encantada algún regalito. Y si conoces a alguien que aún no pertenece a la Comunidad, anímale a venir y a recoger su regalo 😉
Estar en el stand de la Comunidad me ha permitido conocer a mucha gente nueva y encontrarme con otros moderadores que se han pasado por aquí, como @Guillaume.Rongier7183 y @Dmitry.Maslennikov
@Lorenzo.Scalese, @Dmitry.Maslennikov y @Francisco.López1549
Si estás interesado en la presentación que se proyecta detrás de nosotros, es esta:
Además, estar en el área "Tech Exchange" significa que puedo asistir a todas las presentaciones que se hacen allí. Puedo aprender de contenedores, por ejemplo 😉
Y tras este ajetreado día, nos dirigimos a la cena y las demos.
Jugamos a algunos juegos y lo pasamos muy bien.
Y esto ha sido todo durante los dos primeros días del Global Summit 2023.
¡Estad atentos a las próximas crónicas! 😁
Pregunta
Ignacio Valdes · 1 dic, 2019
Cuando impiezo una google cloud docker container la port es 52773 pero quiero tener port 9100 9101 tambien. Yo veo en documentos que no es posible cambiarlo ante que esta andado. Que hago? -- IV Los puertos por defecto de IRIS son 52773 (web) y 51773 (tcp superport).
Cuando ejecutas el contenedor Docker puedes elegir cómo exponer estos puertos en tu máquina local para que puedas acceder.
Por ejemplo, si quieres utilizar los puertos 9100 y 9101 que comentas puedes hacer:
docker run --name iris -p 9100:52773 -p 9101:51773 store/intersystems/iris-community:2019.4.0.379.0
De esa forma, tendrías disponible el Portal de Gestión en http://localhost:9100/csp/sys/UtilHome.csp
Puedes echar un vistazo a la documentación o al Container Bootcamp que se hizo para el Global Summit.
Anuncio
Esther Sanchez · 31 mar, 2022
¡Hola Comunidad!
Hemos grabado el webinar que hicimos ayer y lo hemos subido al canal de YouTube de la Comunidad de Desarrolladores en español. Si os perdisteis el webinar o lo queréis volver a ver con más detalle, ya está disponible la grabación!
Eduardo Anglada mostró toda la potencia de Python, el nuevo lenguaje de programación añadido a IRIS. Explicó cómo crear datos anónimos, desarrollar cuadros de mando interactivos... ¡y muchas cosas más! Por eso, si queréis conocer la nueva funcionalidad de InterSystems IRIS, ¡no os perdáis el vídeo!
⏯ Explorando las nuevas funcionalidades de IRIS: Python Embebido
Por cierto, en las listas de reproducción del canal de YouTube de la Comunidad de Desarrolladores en español podéis ver todos los webinars que hemos realizado (¡ya llevamos diecisiete!), varios tutoriales, trucos, demos...
¡Echadle un ojo y dadle al play! ▶️
Artículo
Laura Blázquez García · 23 mayo, 2025
Os presento FHIRCraft, una herramienta ligera para generar recursos FHIR sintéticos.
Quizás estéis pensando:“Pero... ¿no existe ya Synthea, que genera un montón de recursos FHIR?”Exactamente — y por eso mismo creé esta aplicación.
FHIRCraft está diseñada para generar recursos FHIR más simples, pequeños y enfocados. A diferencia de Synthea, no pretende simular historiales clínicos completos ni flujos asistenciales. Está pensada para quienes están empezando con FHIR, quieren hacer pruebas de forma progresiva o explorar cómo funciona un recurso específico en aislamiento.
En su versión actual, FHIRCraft puede generar:
Patient
Practitioner
Appointment
Observation
Y gracias a su diseño modular, es muy fácil ampliarla para soportar nuevos tipos de recursos.
¡Probadla y decidme qué os parece! 🚀
P.D. Esta aplicación fue desarrollada como parte del concurso InterSystems FHIR and Digital Health Interoperability Contest.
Anuncio
Esther Sanchez · 12 jul, 2021
¡Hola desarrolladores!
Os invitamos a un nuevo webinar en español: "Continuando con ObjectScript - Persistencia e Integración", el lunes 19 de julio, a las 4:00 PM (CEST).
En este webinar continuaremos introduciendo ObjectScript, el lenguaje de programación de InterSystems. Trabajaremos con Clases Persistentes y comenzaremos a trabajar con Producciones para integrar sistemas.
Es un webinar dirigido a programadores que empiezan a utilizar ObjectScript y también a aquellos que quieren revisar conceptos.
Como en el anterior webinar de ObjectScript, haremos una ginkana en directo para demostrar lo aprendido. ¡Y los tres primeros clasificados ganarán varios premios!
¡Os esperamos!
➡️ Podéis registraros aquí >>
El próximo lunes es el webinar de ObjectScript.
Además de aprender, pasaremos un rato muy divertido jugando a un juego de preguntas y respuestas online sobre lo explicado en el webinar. Competiremos unos contra otros y el podio final mostrará a los ganadores!
¡Apúntate antes de que se te olvide! :D
Empieza la cuenta atrás... ¡hoy es el webinar!
¡Os esperamos!
Artículo
Eduardo Anglada · 30 mar, 2022
¡Hola desarrolladores!
Para el concurso de Opendataset he desarrollado una aplicación, en formato docker, que utiliza InterSystems IRIS y Openflights Dataset en un contenedor y un segundo contenedor con Apache Zeppelin. Puedes encontrar los detalles aquí:
Con esto, se puede consultar el conjunto de datos de Opendflights desde Apache Zepplin sin necesidad de realizar ninguna configuración. Los contenedores están en hub.docker por lo que se puede utilizar de forma muy sencilla.
Si observamos el panel de control de Docker, veremos que hay un grupo llamado **openflights_demo**:

Apache Zeppelin está disponible por medio de:
http://localhost:8080
Como puedes ver en la captura de pantalla, el puerto de la base de datos también está expuesto, así que puedes conectar IRIS directamente como te guste.
Además, echa un vistazo al súper complejo y sofisticado video de youtube! ;-)
Para conectar el sonido, recomiendo un dispositivo Dolby Atmos ;-)
Artículo
Nancy Martínez · 18 ene, 2023
En la Comunidad de Desarrolladores hay muchos artículos interesantes que muestran cómo utilizar Jupyter e InterSystems IRIS juntos, y os animo a echarles un vistazo - al final de esta publicación tenéis un enlace a los artículos.
Este es otro de esos artículos. La diferencia con los otros está en la sencillez. ¿Solo quieres iniciar un contenedor en el que Jupyter ya está conectado a una instancia de IRIS? ¡Entonces esto es para ti!
Solo con ejecutar `docker-compose up` ya podrás acceder a un entorno de trabajo con un par de ejemplos.
No quiero estropear la sencillez, así que probadlo.

Más artículos sobre IRIS y Jupyter:
* En español: [Artículos sobre IRIS y Jupyter](https://es.community.intersystems.com/smartsearch?search=jupyter&type=articles&sort=0&members=&typesearchuser=users)
* En inglés: [Jupyter+IRIS Articles](https://community.intersystems.com/smartsearch?search=jupyter&type=articles&sort=0&members=&typesearchuser=users)
Artículo
Ricardo Paiva · 18 ene, 2023
Schematron es un lenguaje de validación basado en reglas para hacer aserciones/afirmaciones sobre la presencia o ausencia de ciertos patrones en documentos XML. Un Schematron se refiere a una colección de una o más reglas que contienen pruebas. Los Schematron están escritos en una forma de XML, lo que los hace relativamente fáciles de inspeccionar, comprender y escribir para todos, incluso los que no son programadores.
Esencialmente, un Schematron realiza dos acciones en secuencia:
Encuentra nodos de contexto de interés en el documento. Un "nodo de contexto" puede ser un elemento de un tipo particular o un elemento específico en un lugar determinado del documento, un atributo o un valor de atributo. Por ejemplo, supone que quieres verificar si la suma de los elementos <Percent> dentro de cada un nodo contexto es de 100%. En este caso, el nodo de contexto sería el elemento <Total>. Para cada uno de esos nodos de interés, comprueba si una declaración específica es verdadera o falsa. Por ejemplo, puede tener una regla escrita para responder a la pregunta "¿Es la suma total de 100%?".
El recurso idóneo para buscar más detalle sobre el tema sería: https://www.schematron.com/. Para nosotros lo que importa es que podamos validar nuestro documento XML en base a una definición Schematron. Para ello hay que tener en cuenta que hay múltiples proyectos open source con implementaciones de Schematron para XSLT. Uno de los más interesantes lo tenéis disponible en https://github.com/schxslt/schxslt.git.
En este artículo se pretende apalancar las capacidades de Python disponibles en InterSystems IRIS (for Health) o HealthShare (Health Connect).
Para ello necesitamos una instancia de InterSystems IRIS o HealthShare Health Connect. Para nuestro ejemplo usaremos un contenedor con la última community edition de InterSystems IRIS for Health. Hemos de arrancar la instancia publicando las puertas default y mapeando el directorio corriente a la carpeta durable en el container.
$ docker run --name iris4health -d --publish 51773:51773 --publish 52773:52773 --volume $(pwd):/durable containers.intersystems.com/intersystems/irishealth-community:2022.3.0.589.0
Ahora que ya tenemos nuestra instancia en ejecución podremos arrancar una consola en el container.
$ docker exec -it <containerID> bash
Ahora ya nos podemos dedicar al modulo Python. Usaremos lxml. Se trata de un enlace Python para las bibliotecas C libxml2 y libxslt. Es único en el sentido de que combina la velocidad y la integridad de las funciones XML de estas bibliotecas con la simplicidad de una API Python nativa, en su mayoría compatible con la conocida API de ElementTree. Para más información sobre lxml https://lxml.de/index.html
Asumiendo que el gestor de paquetes pip3 (y por supuesto Python 3) ya está instalado en la instancia, habrá que instalar el modulo debido.
$ pip3 install --target /usr/irissys/mgr/python lxml
El método ejemplo que usaremos estará codificado en Python y estará encargado del parseo y validación de las reglas del schematron. El código de la clase que usaremos es el siguiente:
Class dc.schematron Extends %RegisteredObject
{
/// Description
ClassMethod simpleTest() [ Language = python ]
{
from lxml import isoschematron
from lxml import etree
print("Validating File...\n")
# def runsch(rulesFile, xmlFile):
#open files
rules = open('/durable/test-schema.sch', 'rb') # Schematron schema
XMLhere = open('/durable/test-file.xml', 'rb') # XML file to check
#Parse schema
sct_doc= etree.parse(rules)
schematron=isoschematron.Schematron(sct_doc, store_report=True)
#Parse XML
doc = etree.parse(XMLhere)
#Validate against schema
validationResult = schematron.validate(doc)
report = schematron._validation_report
#Check result
if validationResult:
print("passed")
else:
print("failed")
print(report)
}
}
La verdad es que se trata de un método bastante sencillo. Abre 2 ficheros – el fichero con las reglas (schematron) y un fichero ejemplo. La regla es verificar si la suma de los elementos <Percent> dentro de cada nodo <Total> es de 100%. Para ejecutarlo habrá que lanzar el siguiente comando desde la consola:
d ##class(dc.schematron).simpleTest()
El resultado se presentará en la consola. La misma lógica se podrá usar en una producción de interoperabilidad.
El código fuente conteniendo todos los elementos esta disponible aquí.
Artículo
Ricardo Paiva · 22 abr, 2025
Migrar desde Oracle, MSSQL u otros sistemas de bases de datos puramente relacionales a un sistema multimodelo como InterSystems IRIS es una decisión estratégica que requiere una planificación y ejecución cuidadosas. Aunque esta transición ofrece beneficios significativos, como un mejor rendimiento, escalabilidad y soporte para arquitecturas modernas, también conlleva desafíos. En este artículo destacaré algunas de las consideraciones relacionadas con la codificación para asegurar una migración exitosa. Dejaré fuera del alcance de este artículo todo lo relacionado con la migración real de estructuras y datos.
Primero, cuando estáis considerando migrar a un sistema de base de datos diferente, necesitáis comprender vuestra lógica de negocio, ya sea del lado de la aplicación (servidor de aplicaciones) o del servidor de bases de datos. Básicamente, ¿dónde tenéis vuestras sentencias SQL que potencialmente tendréis que reescribir?
Cuando vuestra lógica de aplicación depende en gran medida de SQL ejecutado directamente dentro del código de la aplicación (en lugar de procedimientos almacenados o triggers en la base de datos), migrar desde una base de datos relacional a InterSystems IRIS requiere un examen cuidadoso de vuestras sentencias SQL. Veamos algunos de los factores más importantes que debéis tener en cuenta.
Diferencias en el dialecto SQL. SQL de IRIS admite el estándar SQL-92. Esto no significa que no estén implementadas algunas funcionalidades más modernas. Simplemente significa que necesitáis comprobarlo de antemano. Por ejemplo, las funciones de ventana aparecieron en SQL:2003, pero aún así podéis escribirlas en IRIS.
--window function
select id, rating
from (select a.id,
r.rating,
avg(r.rating) over () as avg_rating
from SQLUSER.Actor a join SQLUser.Review r on a.id = r.Reviews) as sub
where rating > avg_rating
Al mismo tiempo, los nuevos tipos de datos complejos, como XML, JSON, Arrays y tipos de datos geográficos, no están soportados. Así que la siguiente consulta:
SELECT a.id,
a.firstname,
ARRAY_AGG(r.rating) AS ratings
FROM SQLUSER.Actor a LEFT JOIN SQLUser.Review r ON a.id = r.Reviews
GROUP BY a.firstname
devolverá un error: ERROR #5540: SQLCODE: -359 Message: User defined SQL function 'SQLUSER.ARRAY_AGG' does not exist
Pero no es el fin del mundo. Hay muchas funciones integradas que os permitirán reescribir las consultas para obtener el resultado esperado.
2. Funciones integradas. Los distintos sistemas de gestión de bases de datos tienen diferentes funciones integradas. Por lo tanto, necesitáis comprender cómo se corresponden con las disponibles en IRIS. Aquí tenéis varios ejemplos de lo que os estoy comentando: funciones usadas en Oracle y sus equivalentes en IRIS.
Oracle
IRIS
NVL
ISNULL(field, default_value)
substr
$extract(field, start_pos, end_pos)
instr
$find(field, text_to_find)
concat
{fn CONCAT(string1,string2)}
Cuando vuestra lógica SQL principal reside dentro de la base de datos (por ejemplo, procedimientos almacenados, triggers, vistas), migrar a InterSystems IRIS requiere un enfoque diferente. Aquí tenéis algunas consideraciones:
Migración de objetos de base de datos
Todos los procedimientos almacenados deben reescribirse usando ObjectScript. Esta también puede ser una buena oportunidad para cambiar al modelo orientado a objetos, ya que obtendréis una tabla igualmente al crear una clase. Sin embargo, trabajar con clases os permitirá escribir métodos (que pueden llamarse como procedimientos almacenados) y usar todo el potencial del paradigma orientado a objetos.
Los triggers, índices y vistas están todos soportados por IRIS. Incluso podéis dejar las vistas tal como están si las columnas de las tablas se mantienen iguales y no utilizan funciones o sintaxis no soportadas (ved el punto anterior).
La migración de definiciones también es importante y puede presentar algunos desafíos. Primero, debéis hacer una correspondencia cuidadosa de los tipos de datos de vuestra base de datos anterior con los de IRIS, especialmente si estáis usando tipos de datos complejos. Además, al tener más flexibilidad con los índices, quizás queráis redefinirlos de forma distinta.
Aquí tenéis algunas cosas que debéis considerar al decidir migrar a InterSystems IRIS desde otra base de datos relacional. Es una decisión estratégica que puede desbloquear beneficios significativos, incluyendo una mayor escalabilidad, rendimiento y eficiencia. Sin embargo, una planificación cuidadosa es crucial para asegurar una transición fluida y abordar necesidades de compatibilidad, transformación de datos y refactorización de la aplicación.