Supongamos que has desarrollado tu propia aplicación web con las tecnologías de InterSystems y ahora quieres realizar una validación de Captcha en el lado del cliente para saber si el usuario es humano o no y hacerla más segura. Existen algunos frameworks modernos para abordar el problema de Captcha, pero la mayoría de ellos necesita acceso a Internet para generar códigos y, a veces, son complejos de implementar. Toma esto como un ejemplo básico, teniendo en cuenta que el reconocimiento de imágenes se ha vuelto demasiado bueno.
¡Hola a todos los miembros de la Comunidad!
En este vídeo que os mostramos, aprenderéis a usar el "Data Transformation Wizard" del portal InterSystems IRIS® data platform para convertir mensajes a otros formatos:
⏯ Transforming Healthcare Messages in InterSystems Integrations
¡Hola a todos los miembros de la Comunidad!
Estamos muy orgullosos de anunciar que la Comunidad de Desarrolladores de InterSystems ha logrado tres nuevos récords:
📝 10 000 publicaciones
👥 11 000 usuarios registrados
👁 5 000 000 de visualizaciones (¡cinco millones!)

¡Hola desarrolladores!
Me gustaría compartir con vosotros un truco útil para presentar código de ObjectScript en ficheros Script en VSCode.
Los ficheros Script son simplemente ficheros con líneas de ObjectScript que introducimos en cualquier sitio, por ejemplo en IRIS durante el procedimiento Docker baking.
Caso de uso típico - este es el Scriptfile
este es el Dockerfile donde lo introducimos.
Y así es como se ve normalmente en VSCode:

Podría ser más elegante, ¿verdad?
¡Hola a todos!
El módulo de exportación es esencial en muchos de mis proyectos y se usa a menudo en todos mis servidores de productos.
He implementado varios escenarios en el módulo de iniciación del atributo invoke, ambos mayormente con muchos proyectos adicionales para demostrar en GCR , y mínimamente para instalar nativamente en instancia de producción.
zpm "install appmsw-sql2xlsx -Dzpm.demo=none"
Para mostrar las posibilidades, usé los proyectos fileserver y csvgen.
Gracias a las últimas mejoras al soporte de Python en IRIS y al continuo trabajo en el soporte a la DB-API de Python por parte de InterSystems, he implementado el soporte de IRIS en el proyecto Django, en el que la DB-API de Python se usa para trabajar con otras bases de datos.
Vamos a probar una sencilla aplicación en Django, que almacena sus datos en IRIS.

Esta es el cuarta de una serie de lanzamientos que forman parte del programa de versiones de prueba 2022.2 para desarrolladores. Las próximas versiones de prueba se espera que sean actualizadas cada dos semanas, aproximadamente, y añadiremos funcionalidades según estén listas. Se han añadido muchas actualizaciones y mejoras en 2022.2, en la gestión de SQL, integración cloud, adaptadores Kafka y JMS, SQL Loader y otras áreas.
La aplicación Carbon Footprint Counter utiliza el GHG Protocol para medir las emisiones de carbono en las empresas. El Protocolo de Gases de Efecto Invernadero (GHG Protocol) establece marcos estandarizados globales integrales para medir y gestionar las emisiones de gases de efecto invernadero (GHG) de las operaciones del sector público y privado, las cadenas de valor y las acciones de mitigación.
Sobre la base de una asociación de 20 años entre el Instituto de Recursos Mundiales (WRI) y el Consejo Empresarial Mundial para el Desarrollo Sostenible (WBCSD), el GHG Protocol trabaja con gobiernos, asociaciones industriales, ONGs, empresas y otras organizaciones. (fuente: https://ghgprotocol.org/about-us).
La aplicación Carbon Footprint Counter utiliza InterSystems IRIS para implementar APIs REST y la base de datos SQL para administrar el inventario de emisiones de carbono en las empresas. La interfaz es Angular 12 con el framework PrimeNG (líder de código abierto para Angular).
Al igual que los servidores hardware, los servidores virtuales en nubes públicas y privadas pueden generar cuellos de botella en los recursos, según aumentan las cargas de trabajo. Si utilizas y administras instancias de InterSystems IRIS implementadas en nubes públicas o privadas, es posible que te hayas encontrado la situación en la que para solucionar problemas de rendimiento o de otro tipo se requiere aumentar la capacidad del servidor de una instancia (es decir, escalar verticalmente).
Un motivo frecuente es la memoria insuficiente.
¡Hola Comunidad!
Estamos encantados de anunciar que vuelven los webinars de la Comunidad!
Os invitamos al webinar Cómo escalar el servidor FHIR de InterSystems en Amazon Web Services con ECP.
⏱ Fecha: Jueves 18 de agosto, 14:00 (CEST)
👨🏫 Ponente: @sween, Full Stack Architect en Integration Required
➡️ El webinar será en inglés
7) Necesitas el driver adecuado
Si quieres ejecutar el comando sql LOAD DATA, tienes que elegir el driver desde 2021.2! Si seleccionaste el driver incorrecto y utilizas el comando sql LOAD DATA, obtienes algo así:
Error: [SQLCODE: <-1>:<Invalid SQL statement>]
[Location: <Prepare>]
[%msg: < LITERAL ('%qpar') expected, : found^LOAD DATA FROM FILE :%qpar>]He bifurcado el repositorio con los drivers https://github.com/intersystems-community/iris-driver-distribution y añadido el driver desde InterSystems IRIS Versión 2021.2.0.617
Puedes descargar el intersystems-jdbc-3.3.0.
¡Hola desarrolladores!
Solo quiero compartir una antigua pero muy relevante buena práctica en el cambio de namespaces que @Dmitry Maslennikov compartió conmigo.
Consideremos el método:
classmethod DoSomethingInSYS() as %Status
{
set sc=$$$OK
set ns=$namespace
zn "%SYS"
// try-catch in case there will be an error
try {
// do something, e.g. config change
}
catch {}
zn ns ; returning back to the namespace we came in the routine
return sc
}Buenos días,
Nos gustaría compartir lo que estamos investigando y en lo que necesitamos su apoyo, para continuar con ello:
1) Hemos desarrollado un Circuito REST: Servicio REST + Proceso + Operacion REST.
Los cuales reciben un fichero de estudios de imágenes médicas .dcm y lo envían tal cual. Para ello enviamos mediante el simulador dcm4che y en concreto mediante la línea:
/stowrs --disableTM --allowAnyHost --url https://[IP del ESB]:[Puerto del ESB]/aplicaciones/scs/cconcertadostest/almacenarImagen /opt/contenedor/PACS/dcm4che-5.27.0-bin/dcm4che-5.27.0/bin/shared/dicom/d1I00012.
¡Hola desarrolladores!
Tenemos nuevos artículos súper interesantes para leer y disfrutar este verano, gracias a los maravillosos participantes del 3er Concurso de Artículos Técnicos: Edición Python. Hemos recibido
Y ya podemos anunciar los ganadores...
Mientras pensaba en lo que podría desarrollar para el Concurso Full Stack de InterSystems, vi esta pregunta:
https://community.intersystems.com/post/how-access-production-items-through-objectscript
Desarrollé ProductionManager.csp. Muestra elementos en la producción activa. También muestra la Clase en uso y la fecha y hora del último mensaje. Creo que estos puntos de datos pueden ayudar a tomar decisiones sobre qué elementos eliminar de la producción.
– 15 artículos
– 10 anuncios
– 2 preguntas
Durante una actualización a una versión principal (major) es aconsejable recompilar las clases y rutinas de todos tus namespaces (ver Tareas tras la instalación de una versión major).
do $system.OBJ.CompileAllNamespaces("u")do ##Class(%Routine).CompileAllNamespaces()
Para automatizar esta tarea de administración y mantener un registro de cualquier error, os muestro un ejemplo de una clase para importar y compilar en el namespace USER, que puedes usar después de cada actualización: admin.utils.cls
¡Hola desarrolladores!
Hemos introducido una nueva funcionalidad en la Comunidad de Desarrolladores – Preguntas clave de los Desarrolladores.
Hemos añadido una etiqueta especial: #PreguntaClave para destacar preguntas relacionadas con InterSystems y que sean consideradas especialmente relevantes.
Cada mes, expertos de InterSystems elegirán las preguntas y los autores serán premiados.
¿Cuál es el premio? Os contamos todos los detalles más abajo en esta publicación.

Docker 20.10.14 (lanzado el 23 de marzo de 2022) cambia las funcionalidades que Linux da a los contenedores de una manera que es incompatible con el Linux capability checkeren los contenedores de InterSystems IRIS 2021.1 (y posteriores).
Los usuarios ejecutando Docker 20.10.14 en Linux encontrarán que los contenedores de IRIS 2021.1+ fallarán al iniciarse y los logs reportarán de forma incorrecta que las funcionalidades requeridas de Linux no se encuentran. Por ejemplo:
[ERROR] Required Linux capability cap_setuid is missing. [ERROR] Required Linux capability cap_dac_override is missing.
![ObjectScript Kernel Logo][ObjectScript Kernel Logo]
Jupyter Notebook es un entorno interactivo formado por celdas que permiten ejecutar código en un gran número de lenguajes de marcado y programación diferentes.
Para hacer esto, Jupyter debe conectarse a un kernel apropiado. No había un Kernel ObjectScript, por lo que decidí crear uno.
Puedes probarlo aquí.
Este es un adelanto de los resultados:

Jupyter Kernels 101
Hay varias formas de crear un Jupyter Kernel. Decidí hacer un kernel contenedor de Python.
Tenemos que crear una subclase de ipykernel.
En este artículo, me gustaría hablar sobre el enfoque spec-first para el desarrollo de una API REST.
Mientras que el desarrollo tradicional code-first de una API REST es así:
- Escribir el código
- Habilitarlo en REST
- Documentarlo (como una API REST)
Spec-first sigue los mismos pasos, pero a la inversa. Comenzamos con una especificación, — que también actúa como documentación — , generamos el código base de la aplicación REST a partir de ella, y finalmente escribimos la lógica de negocio concreta que nos haga falta.
Esto ofrece varias ventajas:
Esta es el tercera de una serie de lanzamientos que forman parte del programa de versiones de prueba para desarrolladores. Las próximas versiones de prueba se espera que sean actualizadas cada dos semanas, aproximadamente, y añadiremos funcionalidades según estén listas. Se han añadido muchas actualizaciones y mejoras en 2022.2, en la gestión de SQL, integración cloud, adaptadores Kafka y JMS, SQL Loader y otras áreas.
La fecha y la hora son factores importantes en nuestra vida. Porque todas las aplicaciones son interesantes según la fecha y la hora. Pero el mundo está dividido en múltiples zonas horarias. Si nuestro producto se lanza al mundo, para mantener el historial de eventos, debemos convertir todas las horas a nuestra hora local o UTC (Tiempo Universal Coordinado). Por lo que sé, muchos lenguajes de programación conocidos de C#, JavaScript, Java, etc., ofrecían la librería para convertir la fecha y la hora, es decir, con un nombre de zona horaria podemos convertir sin conocer la diferencia horaria.
La base de datos TZ no existe en los productos de InterSystems. En el pasado, escribí la función en C# (C# tiene una librería para esto) y la usé dentro de InterSystems como una clase contenedora.
Pero ahora, IRIS comenzó a ser compatible con Python Embebido. Por eso, podemos usar la conversión de zona horaria de Python en InterSystems fácilmente.
Servir el café: Cómo crear y programar una tarea
¿No te gustaría que una taza de café caliente te esperara justo al llegar a la oficina? ¡Vamos a automatizar eso!
Cache e IRIS incorporan un Administrador de tareas, que debería resultar familiar a quienes estén acostumbrados a utilizar el programador de tareas de Windows o a usar cron en Linux. Tu cuenta de usuario requerirá tener acceso al recurso %Admin_Task para utilizarlo, y puedes acceder a él desde el portal de administración en System Operation -> Task Manager. Cuando se instala por primera vez, hay aproximadamente 20 tipos de tareas que puedes programar.
Si quieres añadir tus propias tareas, empieza creando una clase que extienda %SYS.Task.Definition. Como mínimo, debes sobreescribir el método OnTask, que tiene una firma de Method OnTask() As %Status. El código de ese método se ejecutará cada vez que se lance la tarea. De hecho, si tu tarea arroja "Error #5003: No implementado (Error #5003: Not Implemented)" cada vez que se ejecuta, es porque este método no se sobreescribió correctamente. De manera muy básica, podría ser:
¡Hola Comunidad!
Os invitamos a participar en la tercera edición del Concurso de Artículos Técnicos en Inglés:
🐍 Concurso de Artículos Técnicos de InterSystems en Inglés: Edición Python 🐍
Escribe un artículo en inglés sobre cualquier tema relacionado con el uso de Python con las tecnologías de InterSystems.
Duración: del 20 de junio al 31 de julio - ¡ampliado!
🎁 Premios para todos los participantes: Todas las personas que publiquen un artículo en inglés durante la vigencia del concurso recibirán un premio
🏆 Premios principales: Auriculares inalámbricos Apple AirPods Max; Reloj inteligente Apple Watch SE; Altavoz inteligente Apple HomePod mini / Lápiz inteligente Apple Pencil
Google tiene una interesante herramienta llamada Google Data Studio. Esta aplicación permite crear cuadros de mando (dashboards) interactivos, con tus datos, disponibles en internet. Además, ofrece cientos de conectores con cualquier fuente de datos, desarrollados por la comunidad. Y también visualizadores desarrollados por la comunidad. Lo más importante es que Google ofrece una forma de desarrollar tu propio conector con tus datos.
FHIRaaS ofrece una REST API, y está disponible desde internet. Así que he decidido probar a crear un informe básico con los datos almacenados allí. Y al final, conseguí esto.
Hola a todos,
Acabo de actualizar la versión de WebTerminal usando el link, pero ahora no funciona.
Cuando llamas a /terminal está mostrando el siguiente error:
{
"errors":[ {
"code":5002,
"domain":"%ObjectErrors",
"error":"ERROR #5002: Error de cache: <INVALID OREF>zWrite+5^WebTerminal.StaticContent.1",
"id":"ObjectScriptError",
"params":["<INVALID OREF>zWrite+5^WebTerminal.StaticContent.1"
]
}
],
"summary":"ERROR #5002: Error de cache: <INVALID OREF>zWrite+5^WebTerminal.StaticContent.¡Hola desarrolladores!
Solo quiero compartir con vosotros mi conocimiento, es decir, experiencia en algo que os puede hacer ahorrar unas cuantas horas algún día.
Si estás creando una REST API con IRIS que contiene más de un nivel de "/", por ejemplo: '/patients/all', no te olvides de añadir el parámetro 'recurse=1' en tu script de despliegue en %Installer. Si no, todas las entradas de nivel secundario y de mayor profundidad no funcionarán. Y todas las entradas de nivel primario funcionarán.
/patients
- funcionará, pero
/patients/all
- no funcionará.
Este es un ejemplo de sección CSPApplication que arregla el problema y que puede que quieras usar en tu clase %Installer:
¡Hola Comunidad!
Acabamos de publicar los vídeos de todas las ponencias del Global Summit.
Podéis ver todas las sesiones de las tardes > y la mayoría de las presentaciones generales (keynotes) de las mañanas >
Así que... ¡no os las perdáis! ¡Hay más de 60 ponencias para elegir!
Dadle al Play... ¡y a disfrutar! 
Nota: no hemos podido publicar algunas de las presentaciones de los ponentes externos.



.png)



