Buscar

Limpiar filtro
Artículo
Sergio Farago · 28 mar, 2025

¡Así fue nuestro meetup de desarrolladores!

Hola a todos 😁 Como quizás sabéis, ayer tuvimos un meetup en las oficinas de Iberia. Pudimos hablar de la comunidad, InterSystems y sobre todo: lo pasamos genial 🎉 @LuisAngel.PérezRamos nos dio una buenísima charla de IA y RAG, viendo ejemplos prácticos, y siempre con el humor que le caracteriza (en la foto está serio, pero rebosa emoción por dentro). Es difícil mantener a un público enganchado durante toda la charla. Su dinamismo y constantes bromas lo consiguieron. Es un orgullo poder contar con él. Cabe mencionar la introducción de @David.Reche, que nos puso en contexto y amenizó la tarde. Fuimos de lo general a lo concreto, entendiendo conceptos básicos como LLM, modelos, RAG... para acabar aterrizándolos en casos prácticos. Estuvo muy bien que en todo momento los asistentes participaron. Pudimos ver la opinión de otros desarrolladores, resolver dudas, etc. Hubo mucha participación y debate, y era lo que queríamos ¡Fantástico! Por supuesto, hubo tiempo para picar y beber algo. En este rato tuvimos conversaciones más informales, presentaciones y vivos perspectivas de diferentes perfiles: analistas, investigadoras, matemáticos, desarrolladores, arquitectos, expertos en formación, etc. Y como iba a faltar... ¡nuestro kahoot! Tuvimos un emocionante Kahoot que estuvo reñido hasta la última pregunta. Nuestros tres vencedores se llevaron un premio extra a casa. Fue una jornada muy divertida, y como todos pedís... seguramente habrá más pronto. Esperamos veros por allí. Gracias por venir, apoyar a la comunidad y vuestro ánimo!
Anuncio
Sergio Farago · 3 hr atrás

\[Vídeo] Grabación del Meetup de desarrolladores de julio - Creación y evaluación de sistemas de recuperación generativa con agentes

Hola, comunidad: La semana pasada, el equipo de InterSystems celebró nuestro encuentro mensual de desarrolladores en un nuevo lugar por primera vez. En la oficina de AWS en Boston, en el Seaport, más de 71 asistentes se reunieron para charlar, hacer networking y escuchar las charlas de dos ponentes increíbles. El evento fue todo un éxito; tuvimos el lugar lleno, muchísima participación y preguntas, ¡y asistentes haciendo cola para hablar con nuestros ponentes después! Jayesh presenta sobre marcos de prueba para Agentic Systems ante un auditorio lleno. El topic del encuentro de julio fue la creación y evaluación de sistemas de recuperación generativa con agentes, y cada ponente abordó un aspecto distinto de estos sistemas. Primero, @Jayesh.Gupta explicó cómo medir cuantitativamente las mejoras en sistemas de agentes utilizando marcos de prueba. Luego, Suprateem Banerjee se adentró en técnicas más avanzadas para la recuperación de agentes más allá de la búsqueda por vectores. Si no pudisteis asistir a Boston la semana pasada, no os preocupéis: por primera vez, ¡también hemos grabado ambas charlas del encuentro y las estamos compartiendo en formato virtual! Podéis ver ambas sesiones en los enlaces a continuación: ⏯️ Configuración de marcos de prueba para medir cuantitativamente mejoras en sistemas con agentes ⏯️ Recuperación con agentes: técnicas más allá de la búsqueda por vectores
Artículo
Nancy Martínez · 9 jun, 2020

Configuración manual de Sharding

Para conocer un poco más sobre Sharding decidí crear un conjunto "por mi cuenta".Para ello, creé 1 Master (Win10) y 2 Shard "slaves" en Ubuntu64.La instalación fue bien y empecé a seguir un curso online, sin tener ningún problema: > Introducción a Sharding en InterSystems IRIS>>> InterSystems: ISC1125 Curso básico de Sharding: Planificación e Implementación>>>>> 2. Implementación y Uso de Cluster>>>>>>> IMPLEMENTACIÓN USANDO API Todo iba bien y según lo descrito. ¡Pero no pude crear una Tabla Shard!{ I skip all fruitless attempts } Al realizar un diagnóstico de lo que salió mal: MASTER>s sc=$SYSTEM.Sharding.ListShards()Shard Host Port Namespc Mirror Role VIP1 192.168.0.104 51773 SHARD2 192.168.0.103 51773 SHARD MASTER>zw scsc=1 esto aún se ve bien, pero: MASTER>s sc=$SYSTEM.Sharding.VerifyShards()MASTER>do $system.OBJ.DisplayError(sc) ERROR #9355: 2 shards failed verificationERROR #9354: Shard 1 failed verificationERROR #5002: ObjectScript error: <SUBSCRIPT>getConnection+28^%SYS.BigData.ECP *() Subscript 1 is ""ERROR #9354: Shard 2 failed verificationERROR #5002: ObjectScript error: <SUBSCRIPT>getConnection+28^%SYS.BigData.ECP *() Subscript 1 is "" primer aprendizaje adicional: MASTER>s sc=$system.Sharding.SetOption("MASTER","AutoVerify",1) Ahora la ejecución se verifica directamente después de añadir un Shard.Esto es muy útil al principio.Después de que recibí un consejo de @Michael.Braam revisé mi red local Y eso no estaba escrito en ninguna parte (o simplemente no lo encontré):Los host que se utilizaron y sus hostname deben ser visibles y accesibles desde el MASTER y los servidores Shard. En lugar de configurar un servidor DNS privado únicamente para este caso, se debe configurarun archivo hosts file { on Win10 >>>> C:\Windows\System32\drivers\etc\hosts ubuntu >>>> /etc/hosts ubuntu >>>> /etc/hostname} Ahora se podría añadir Shards con nombres de servidores "reales", lo que podría dar como resultado una configuración que funcione. MASTER>s sc=$SYSTEM.Sharding.ListShards() zw sc Shard Host Port Namespc Mirror Role VIP1 ubuntu64c 51773 SHARD2 ubuntu64d 51773 SHARDsc=1MASTER>s sc=$SYSTEM.Sharding.VerifyShards() zw scsc=1 Ahora, la creación de Tablas Shard fue así de fácil como se muestra en la formación online.No investigué si con la configuración del servidor para el Master en Shard sólo habría sido suficiente ya que esto únicamente era una interrupción/más allá de tenerlo para todos los servidores involucrados y ya no sufrir más dolores de cabeza.
Artículo
Muhammad Waseem · 22 dic, 2021

Cómo crear y validar cualquier recurso FHIR usando el esquema FHIR con la ayuda de IntelliSense y la función de autocompletado en VS Code

La interoperabilidad en la asistencia sanitaria es esencial para mejorar la atención a los pacientes, reducir los costes de los proveedores de atención médica y ofrecer una imagen más precisa a los proveedores. Pero con tantos sistemas diferentes, los datos se presentan en diferentes formatos. Se han creado muchos estándares para tratar de resolver este problema, incluyendo HL7v2, HL7v3 y CDA, pero cada una tiene sus limitaciones. FHIR, o Fast Healthcare Interoperability Resources, es un estándar para el intercambio de datos de salud, que tiene como objetivo resolver estos problemas. Fue desarrollado por Health Level Seven International (HL7), una organización que también desarrolló HL7v2, HL7v3 y CDA. En este artículo descubriremos cómo crear y validar recursos FHIR usando el esquema FHIR con la ayuda de IntelliSense y la función de autocompletado en VS Code. **Paso 1**: Descargar el archivo JSON Schema para Validación de Recursos desde la web oficial de FHIR: https://www.hl7.org/fhir/ ![](/sites/default/files/inline/images/images/image(2432).png) ![](/sites/default/files/inline/images/images/image(2433).png) **Paso 2:** Crear una carpeta (en este ejemplo estoy usando la carpeta Patient y el recurso Patient) y copiar el archivo fhir.schema.json extraído, en la misma carpeta. A continuación, abrir la carpeta desde VS Code  ![](/sites/default/files/inline/images/images/image(2434).png)   **Paso 3:** Configurar el código VS para reconocer el esquema FHIR modificando el archivo setting.json. Presionar CTRL+SHIFT+P y escribir en el espacio de trabajo settings.json ![](/sites/default/files/inline/images/images/image(2435).png)   **Paso 4:** Crear un nuevo archivo patient.fhir.json, en la misma carpeta. Pulsar Ctrl+ESPACIO y se obtendrán todos los atributos de los recursos de FHIR a través de IntelliSense # ![](/sites/default/files/inline/images/images/image(2436).png) Escribir "resourceType": "Patient" y todos los atributos relacionados con el recurso Patient comenzarán a aparecer en el IntelliSense. ![](/sites/default/files/inline/images/images/image(2437).png) **VS Code validará automáticamente la estructura y la sintaxis del recurso.** ![](/sites/default/files/inline/images/images/image(2438).png)   Con la ayuda de IntelliSense y la función de autocompletado hemos creado y validado nuestro recurso para los pacientes. ![](/sites/default/files/inline/images/images/image(2439).png) Paso 5: Publicar el recurso creado en el servidor FHIR de InterSystems usando la API Rest de Postman ![](/sites/default/files/inline/images/images/image(2440).png) Recuperar el recurso de Patient Creado utilizando el método GET ![](/sites/default/files/inline/images/images/image(2441).png) ¡Enhorabuena! Hemos creado y validado nuestro recurso Patient, y lo hemos publicado y recuperado correctamente en el Servidor FHIR de InterSystems usando Postman. De esta manera podemos crear y validar fácilmente cualquier Recurso FHIR.
Pregunta
Yone Moreno · 13 jun, 2022

Persistencia en %GlobalCharacterStream

Hola buenos días, Agradeceríamos si ustedes nos leen y responden: Disponemos de 2 entornos: INTegracion en HealthConnect 2020 y PREproduccion en Ensemble 2018 ¿Que un tipo de dato sea %GlobalCharacterStream influye? en concreto: ¿se generan ficheros .stream en el servidor si subimos clases que hagan uso de %GlobalCharacterStream? Ojeando la documentación, parece que explica lo siguiente: Parece que NO sería persistente , parece que "almacena caracteres en nodos de datos globales" https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?&LIBRARY=%25SYS&PRIVATE=1&CLASSNAME=%25Library.GlobalCharacterStream %Library.GlobalCharacterStream deprecated stream class %Library.GlobalCharacterStream extiende %Library.CharacterStream, %Library.GlobalStreamAdaptorDeprecated in favor of %Stream.GlobalCharacter. Stream class that stores character data in global nodes. Aunque nuestra duda viene por el hecho de que en PRE 2018 la propiedad la guarda como %Library.CacheStorage: Sin embargo, en INT 2020 como: "%Storage.Persistent" Por favor, nos podrían responder a la cuestión: ¿este uso de tipo de datos %GlobalCharacterStream repercute en caché , huérfanos, etc...? Hemos observado que se encuentra deprecado: Deprecated in favor of %Stream.GlobalCharacter Significa eso que ¿ustedes nos recomiendan cambiar a %Stream.GlobalCharacter? En ese caso: ¿%Stream.GlobalCharacter? y/o %GlobalCharacterStream repercuten en caché , huérfanos, etc; es decir generan ficheros .stream persistentes en el servidor...? Muchas gracias por atendernos Un saludo Hola Yone, Comentarte que las preguntas enviadas a la comunidad no tienen porqué ser respondidas por personal de InterSystems. La comunidad está abierta a que todos compartamos nuestra dudas y soluciones (incluidos los empleados de InterSystems, que, de vez en cuando también preguntamos). Si necesitas algo urgente y quieres estar segura de obtener respuesta por nuestra parte, lo mejor es que nos abras un caso en soporte desde el WRC. Respecto a tu pregunta, todo lo que se guarda el un global de una base de datos distinta a la temporal, va a ser persistente. En el caso de los GlobalCharacter, se van a guardar en un global y por tanto va a ser persistente (es decir, que una vez guardado, si reinicias el servidor, el dato va a estar ahí). Al ser persistente, si los mensajes no se purgan correctamente, podría dejar nodos huérfanos. Todo dependerá de como hayas implementado la clase y las purgas. Si tienes dudas al respecto, te animo a que abras otro nuevo hilo. Finalmente, tal y como indica la documentación, lo suyo es que uses el tipo %Stream.GlobalCharacter, que tiene la misma función y es el que se va a mantener en futuras versiones. El tipo anterior, por estar "deprecated" dejará de funcionar en alguna versión futura. Hola Yone, Los Streams se utilizan para almacenar cadenas de datos sin límite de tamaño. Si en una clase persistente, incluyes propiedades de tipo Stream serán persistentes. `%Stream.GlobalCharacter`, `%Stream.GlobalBinary`: persisten los datos en globals (en la base de datos). `%Stream.FileCharacter`, `%Stream.FileBinary`: persisten los datos en ficheros (.stream). Lo que te recomienda la documentación es que utilices estas clases en lugar de sus versiones antiguas, por ejemplo: * Utiliza `%Stream.GlobalCharacter` en lugar de la antigua `%GlobalCharacterStream`. * Utiliza `%Stream.FileCharacter` en lugar de la antigua `%FileCharacterStream`. La gestión de los mensajes huérfanos es como siempre. Si tienes un árbol de clases persistente que cuelga de un mensaje de interoperabilidad (incluya o no Streams), recuerda siempre implementar el método `%OnDelete` para borrar su contenido adecuadamente.
Artículo
Laura Blázquez García · 17 feb, 2023

Cómo importar todas las clases desde local a un servidor de IRIS

No sé si alguna vez os ha ocurrido. Nosotros trabajamos con VSCode para programar en IRIS, sincronizamos las clases con un servidor de desarrollo y lo tenemos conectado a un repositorio Git. Tenemos proyectos que tienen cientos de clases, algunos hasta miles. Nos ocurre a menudo que, estamos realizando un desarrollo en un Namespace, y sin terminarlo, surge una incidencia que hay que solventar (o un nuevo desarrollo más prioritario). Dejamos el desarrollo que estamos haciendo, comiteando todo lo realizado hasta el momento. Creamos una rama nueva con la versión de Producción para solventar la incidencia, pero... resulta que en el servidor de desarrollo está la versión en la que estábamos trabajando previamente. ¿Qué hacemos? Lo primero, no entrar en modo pánico. Primero hacemos una copia del contenido del Namespace. Desde el portal, vamos a Explorador > Clases: Vamos a nuestro Namespace, buscamos las clases de nuestro proyecto, las seleccionamos todas y las exportamos (hacemos un backup): ¿Por qué un backup? Nos gusta hacerlo por si acaso, no sea que se nos haya olvidado exportar algún archivo modificado desde el Portal al VSCode, por ejemplo Una vez hecho el backup, las eliminamos: Con esto hemos dejado el Namespace vacío. Ahora, en el VSCode nos posicionamos en la rama que hemos creado desde Producción. Esto nos traerá todo el código a nuestro equipo local. Vamos al sistema de archivos, donde tengamos el repositorio, y comprimimos la carpeta src: Cogemos este archivo src.zip, lo subimos al servidor de desarrollo y lo descomprimimos: Entramos a la carpeta src y borramos todo lo que no sean clases: Si como nosotros, trabajas con Mac, lo más probable es que tengas archivos ocultos en varias carpetas llamados .DS_Store. Los buscamos, y los borramos también: ¿Para qué todo esto? Ya llego, tranquilos... Ahora tenemos un Namespace vacío y una carpeta en el servidor con nuestras clases. Cómo las importamos? Podríamos, desde el mismo VSCode, importar y compilar todas las clases. Pero... este proyecto tiene miles de clases, y acaba dando timeout. Podemos ir por lotes, pero podemos tardar una eternidad... Así que... Si tenemos instalada la aplicación WebTerminal, todo será mucho más sencillo Sino, desde un terminal también se puede ejecutar. Accedemos al terminal, nos posicionamos en nuestro Namespace, y escribimos la siguiente instrucción (con la ruta donde hemos descomprimido la carpeta src): set sc = $System.OBJ.ImportDir("C:\\InterSystems\despliegues\TEST\src\","*","ck",.error,1,.imported,0,.list) Al lanzar esta instrucción se importarán y compilarán todas las clases que hemos descomprimido en el servidor, directamente en nuestro Namespace. Cuando acabe, si todo ha ido bien, aparecerá un mensaje como el siguiente: Si por el contrario hubiese habido algún error, veremos esto: Para saber qué ha ocurrido exactamente, podemos escribir lo que tenga la propiedad error: (Veis? Por eso borramos los archivos .DS_Store, porque sino son muy molestos a la hora de importar, y generan confusión al importar las clases ) --------------------------------------------- Con esto restauramos en desarrollo la versión que había en Producción, permitiéndonos corregir la incidencia sin mezclar desarrollos en diferentes ramas. Espero que os sea de utilidad! P.D.: Gracias al equipo de Intersystems por darnos la idea de utilizar esa instrucción Muy interesante Laura, gracias por compartirlo y mucha suerte en el concurso ¡Muchas gracias por publicar el artículo, Laural! ¡Y mucha suerte en el Concurso de Artículos!
Artículo
Daniel Aguilar · 3 jul, 2023

IRIS Api Tester (Español)

Hola Comunidad!! Acabo de subir mi última aplicación "IRIS Api Tester" al Open Exchange. Es un proyecto docker con InterSystems IRIS + Newman que permite lanzar test sobre tus colecciones de Postman de una manera rápida y fácil. El proyecto viene listo para funcionar, solo debes clonar el repositorio: https://github.com/daniel-aguilar-garcia/irisapitester Arrancar el fichero docker-compose: Abrir esta url en tu navegador: http://localhost:52773/csp/user/index.html Luego en Postman, añade algunos test a tu colección: En este ejemplo he añadido un test global para todas las entradas de la colección añadiendo el test en la sección "Test" de la colección pero también se pueden añadir test individuales para cada entrada en la sección "Test" de cada una de ellas. Para esta prueba estoy comprobando que el código de respuesta recibido sea igual a 200, en caso que el código de respuesta sea distinto a 200 el item aparecerá como error en el informe. Después de añadir los test, exporta la colección en formato json: Arrastra el fichero json a la página de IRIS APi Tester y presiona el botón "Run test": Después de unos segundos serás redirigido a la página del informe: Donde podrás navegar por el informe y examinar todas las entradas en detalle: Si lo prefieres también puedes usar el proyecto sin interfaz gráfica, puedes lanzar la siguiente petición: Petición tipo POST para ejecutar los test: localhost:52773/run_tests Ejemplo del cuerpo de la llamada (es el contenido del fichero de la colección exportado desde Postman): { "collection" : { "info": { "_postman_id": "79cfb5de-a2ab-4548-aa54-4a1712bf67a4", "name": "TestNewman", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "_exporter_id": "838575" }, "item": [ { "name": "test_ok", "event": [ { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "localhost:52773/test_ok", "host": [ "localhost" ], "port": "52773", "path": [ "test_ok" ] } }, "response": [] }, { "name": "test_ko", "request": { "method": "GET", "header": [], "url": { "raw": "localhost:52773/test_ko", "host": [ "localhost" ], "port": "52773", "path": [ "test_ko" ] } }, "response": [] } ], "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "exec": [ "" ] } }, { "listen": "test", "script": { "type": "text/javascript", "exec": [ "pm.test(\"Verificar código de cabecera\", function () {", " pm.response.to.not.have.status(500);", "});" ] } } ] } } Una vez ejecutado puedes recuperar el informe en html. Lanza una petición GET a y listo: localhost:52773/show_report Por si quieres probar la aplicación, he dejado un fichero de pruebas dentro del proyecto para que puedas probar: Espero que esta app pueda serte de utilidad. Y si te ha gustado recuerda que puedes votarme para el concurso hasta el día 09/07/23: https://openexchange.intersystems.com/contest/32#334 Gracias por leerme!! Como extra os dejo un video del funcionamiento: ¡Gracias por el artículo, Daniel! Y desarrolladores... ¡no os olvidéis de votar por su aplicación en el Gran Premio de Programación de InterSystems! ✅
Anuncio
David Reche · 1 abr, 2020

Ya está disponible Health Connect 2020.1

La versión 2020.1 de HealthShare Health Connect ya ha sido lanzada. Los kits para la instalación y las imágenes del contenedor están disponibles en la página de distribución de software del Centro de Soporte Internacional (WRC). El número de compilación de estas versiones es 2020.1.0.215.0. HealthShare Health Connect 2020.1 incluye muchas funcionalidades nuevas: Healthcare Interoperability FHIR R4 Support HL7 Productivity Tools API Management InterSystems API Manager Open API/Swagger Specification-First REST Development New Look in the Management Portal SQL Enhancements Universal Query Cache Interoperability Production Enhancements New Framework for Coding Interoperability Business Hosts in Java and .NET Port Authority for Monitoring Port Usage in Interoperability Productions X12 Validation Enhancements Enhanced DTL Support for X12 X12 Import X12 Schemas from XSD Files MQTT Adapters Infrastructure and Cloud Deployment Improvements New Automatic Configuration Customization Analytics Enhancements Selective Cube Build PowerBI Connector Pivot Table Preview Other Enhancements and Efficiency Improvements La documentación está disponible aquí: Documentación de Health Connect 2020.1 Las plataformas soportadas para producción se detallan en el documento de plataformas soportadas.
Anuncio
Esther Sanchez · 8 mar, 2021

Cómo participar en la Comunidad de Desarrolladores

¡Hola desarrolladores! Últimamente nos han preguntado varias personas cómo participar en la Comunidad y ser un miembro activo y útil en ella. Es muy sencillo. Podéis: 1. Responder preguntas Hay muchas preguntas sin respuesta y también preguntas sin una respuesta aceptada. Todos los miembros de la Comunidad pueden responder a las preguntas, compartir su conocimiento y ayudar a otros. 2. Publicar artículos Todos los miembros de la Comunidad pueden escribir artículos que describan su experiencia con la tecnología de InterSystems: la solución que utilizan, su conocimiento, trucos... Hay muchos ejemplos de artículos que han sido y siguen siendo muy útiles para la Comunidad. También se pueden traducir artículos a español, portugués, inglés o japonés. 3. Contribuir en Open Exchange Todos los miembros de la Comunidad pueden compartir librerías, soluciones y herramientas en Open Exchange - a través de Github, Gitlab o cualquier otro repositorio público. No dudéis en preguntar cualquier duda o dejar vuestros comentarios en esta publicación. Todas las colaboraciones, ideas y propuestas son bienvenidas, para hacer que la Comunidad sea lo más útil posible para todos, en todo el mundo. Gracias por traducir este articulo @Esther.Sanchez Muchas Gracias! Gracias por tu mensaje, Adrián! Y bienvenido a la Comunidad de Desarrolladores en español! Si tuvieras cualquier duda o consulta, puedes publicar una pregunta en la Comunidad. También puedes aprender mucho leyendo los artículos de tu tema de interés (buscando por hashtag, por ejemplo). O si quieres contribuir con artículos escritos por ti, eso estaría genial! :D ¡Nos vemos!
Artículo
Rob Tweed · 7 ene, 2022

Lectura para las vacaciones: ¡Lo que hay por debajo!

Para aquellos que sois nuevos en IRIS, e incluso para los que habéis utilizado Cache o IRIS durante un tiempo pero queréis explorar más allá de los límites y prácticas normalmente admitidos, puede que os guste bucear en esta investigación detallada del motor de la base de datos, situado en su centro, y descubrir lo que realmente podéis hacer con él, yendo más allá de lo que InterSystems ha hecho con él por vosotros. Descubriréis que en realidad es un motor de almacenamiento increíblemente sencillo, además de extremadamente potente, que permite modelar cualquier tipo de base de datos de vuestra elección, una vez que se entienden y dominan sus principios, básicos y sencillos. Su modelo de almacenamiento puede denominarse como "Almacenamiento Global", que puede ser modelado sobre cualquier motor de almacenamiento de datos jerárquico, e incluso sobre la base de datos NoSQL Redis. Sin embargo, las implementaciones "nativas", es decir, en IRIS y Cache, son las más rápidas con un margen significativo, superando a la que el mundo de las bases de datos reconoce normalmente como la base de datos más rápida del planeta (es decir, LMDB). El Almacenamiento Global es (tristemente) uno de los secretos mejor guardados del mundo de las bases de datos, pero he condensado en este conjunto de artículos mis cuarenta y tantos años de conocimiento y experiencia en el uso y esfuerzo de llevar esta tecnología de base de datos a sus límites. Es mi intento de hacerla al menos un poco menos secreta y abrir vuestros ojos a lo que realmente hay por debajo! Así que... abrochaos los cinturones y seguid leyendo aquí: https://github.com/robtweed/global_storage
Anuncio
Jose-Tomas Salvador · 23 dic, 2022

Cómo registrarse en un Programa de Acceso Temprano (EAP)

El Programa de Acceso Temprano (Early Access Program, EAP, en inglés) es una manera de ofrecer funcionalidades específicas a un grupo de personas antes que a nadie, que probarán y darán su opinión sobre dichas funcionalidades. Durante los últimos años, InterSystems ha lanzado diferentes versiones (o componentes) de software y mejorado funcionalidades antes de su lanzamiento. Algunos ejemplos hasta ahora son: Columnar Storage; Built-in Python; FHIRSQL; y otros. Pero una característica de los EAPs es que no están disponibles para todo el mundo. Hay que apuntarse en el Programa. En el caso de la discontinuación de la instalación del servidor web Apache (NoPWS), la manera de registrarse es enviando un email a nopws@intersystems.com. Utiliza este mismo email para tus comentarios. Una vez te haya llegado un email de confirmación, verás los EAPs a los que tienes acceso, en la página de Servicios de evaluación. Tienes que iniciar sesión para ver el contenido. Una vez iniciada sesión: 1) Los EAPs están en la parte derecha de la pantalla: Haz clic en "Download Early Access Programs" (Descargar Programas de Acceso Temprano) y ve a la siguiente pantalla. 2) Elige el EAP en el que estás registrado. En nuestro ejemplo, sería NoPWS: Recuerda que solo podrás ver los EAPs a los que tienes acceso. 3) Después de elegir un EAP, podrás ver todos los documentos y softwares disponibles para ese programa: Sí, estás obligado a aceptar los Términos del Servicio. Después, el botón de Download (Descargar) estará disponible para ti. Y una última cosa... ¡Por favor, dadnos vuestra opinión! Queremos escucharos.
Artículo
Muhammad Waseem · 26 jul, 2022

Conversión de zona horaria usando Python Embebido

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. Librerías requeridas datetime - Soporte básico de tipo fecha y hora - https://docs.python.org/3/library/datetime.html pytz - librería de base de datos tz - https://pypi.org/project/pytz/ Cómo instalar Una vez instalado IRIS, ve a la carpeta bin de InterSystems (\Intersystems\IRIS\bin) y ejecuta Windows: irispip install --target <source>\Intersystems\IRIS\mgr\python datetime irispip install --target <source>\Intersystems\IRIS\mgr\python pytz Linux: pip3 install --target /InterSystems/IRIS/mgr/python datetime pip3 install --target /InterSystems/IRIS/mgr/python pytz Cómo gestionar una librería en IRIS Class Utility.TimezoneConversion { /// Convierta la fecha y hora y regrese como objeto DateTime /// CTime - Introducir fecha y hora /// ToTimezone - Qué formato necesitamos para cambiar la fecha y la hora ClassMethod Convert(CTime As %String, ToTimezone As %String) As %String { Set ret = $$$OK try { #;datetime library to calculate the date or time Set DateTime = ##class(%SYS.Python).Import("datetime") #;timezone library to convert the one timezone to another timezone Set Pytz = ##class(%SYS.Python).Import("pytz") #; timezone apply Set DateTimeConeverted = DateTime.datetime(+$P(CTime,":",1),+$P(CTime,":",2),+$P($P(CTime,":",3)," ",1),+$P($P(CTime,":",3)," ",2),+$P(CTime,":",4),+$P(CTime,":",5)).now(Pytz.timezone(ToTimezone)) Set ret = DateTime.datetime.now(Pytz.timezone(ToTimezone)) } catch(ex) { Set ret = ex.AsStatus() } Quit ret } /// Convert date time into one timezone format to another timezone format /// Input Format - YYYY:MM:DD HH:MM:SS ClassMethod DisplayConversion() As %Status { Set ToFormat = "%Y:%m:%d %H:%M:%S" Set CTime = "2022:07:12 12:00:00" Set ToTimezone = "America/Mexico_City" Set ret = ..Convert(CTime,ToTimezone) If $IsObject(ret){ Write "InputDateTime:"_CTime,! Write "ConvertedDateTime:"_ret.strftime(ToFormat),! Write "Timezone Name:"_ret.tzname(),! Write "Timezone detail:"_ToTimezone,! }Else{ Write "Error:"_ret,! } } } Salida Lista de todas las zonas horarias de Python Spoiler Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara Africa/Asmera Africa/Bamako Africa/Bangui Africa/Banjul Africa/Bissau Africa/Blantyre Africa/Brazzaville Africa/Bujumbura Africa/Cairo Africa/Casablanca Africa/Ceuta Africa/Conakry Africa/Dakar Africa/Dar_es_Salaam Africa/Djibouti Africa/Douala Africa/El_Aaiun Africa/Freetown Africa/Gaborone Africa/Harare Africa/Johannesburg Africa/Juba Africa/Kampala Africa/Khartoum Africa/Kigali Africa/Kinshasa Africa/Lagos Africa/Libreville Africa/Lome Africa/Luanda Africa/Lubumbashi Africa/Lusaka Africa/Malabo Africa/Maputo Africa/Maseru Africa/Mbabane Africa/Mogadishu Africa/Monrovia Africa/Nairobi Africa/Ndjamena Africa/Niamey Africa/Nouakchott Africa/Ouagadougou Africa/Porto-Novo Africa/Sao_Tome Africa/Timbuktu Africa/Tripoli Africa/Tunis Africa/Windhoek America/Adak America/Anchorage America/Anguilla America/Antigua America/Araguaina America/Argentina/Buenos_Aires America/Argentina/Catamarca America/Argentina/ComodRivadavia America/Argentina/Cordoba America/Argentina/Jujuy America/Argentina/La_Rioja America/Argentina/Mendoza America/Argentina/Rio_Gallegos America/Argentina/Salta America/Argentina/San_Juan America/Argentina/San_Luis America/Argentina/Tucuman America/Argentina/Ushuaia America/Aruba America/Asuncion America/Atikokan America/Atka America/Bahia America/Bahia_Banderas America/Barbados America/Belem America/Belize America/Blanc-Sablon America/Boa_Vista America/Bogota America/Boise America/Buenos_Aires America/Cambridge_Bay America/Campo_Grande America/Cancun America/Caracas America/Catamarca America/Cayenne America/Cayman America/Chicago America/Chihuahua America/Coral_Harbour America/Cordoba America/Costa_Rica America/Creston America/Cuiaba America/Curacao America/Danmarkshavn America/Dawson America/Dawson_Creek America/Denver America/Detroit America/Dominica America/Edmonton America/Eirunepe America/El_Salvador America/Ensenada America/Fort_Nelson America/Fort_Wayne America/Fortaleza America/Glace_Bay America/Godthab America/Goose_Bay America/Grand_Turk America/Grenada America/Guadeloupe America/Guatemala America/Guayaquil America/Guyana America/Halifax America/Havana America/Hermosillo America/Indiana/Indianapolis America/Indiana/Knox America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Tell_City America/Indiana/Vevay America/Indiana/Vincennes America/Indiana/Winamac America/Indianapolis America/Inuvik America/Iqaluit America/Jamaica America/Jujuy America/Juneau America/Kentucky/Louisville America/Kentucky/Monticello America/Knox_IN America/Kralendijk America/La_Paz America/Lima America/Los_Angeles America/Louisville America/Lower_Princes America/Maceio America/Managua America/Manaus America/Marigot America/Martinique America/Matamoros America/Mazatlan America/Mendoza America/Menominee America/Merida America/Metlakatla America/Mexico_City America/Miquelon America/Moncton America/Monterrey America/Montevideo America/Montreal America/Montserrat America/Nassau America/New_York America/Nipigon America/Nome America/Noronha America/North_Dakota/Beulah America/North_Dakota/Center America/North_Dakota/New_Salem America/Ojinaga America/Panama America/Pangnirtung America/Paramaribo America/Phoenix America/Port-au-Prince America/Port_of_Spain America/Porto_Acre America/Porto_Velho America/Puerto_Rico America/Rainy_River America/Rankin_Inlet America/Recife America/Regina America/Resolute America/Rio_Branco America/Rosario America/Santa_Isabel America/Santarem America/Santiago America/Santo_Domingo America/Sao_Paulo America/Scoresbysund America/Shiprock America/Sitka America/St_Barthelemy America/St_Johns America/St_Kitts America/St_Lucia America/St_Thomas America/St_Vincent America/Swift_Current America/Tegucigalpa America/Thule America/Thunder_Bay America/Tijuana America/Toronto America/Tortola America/Vancouver America/Virgin America/Whitehorse America/Winnipeg America/Yakutat America/Yellowknife Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Macquarie Antarctica/Mawson Antarctica/McMurdo Antarctica/Palmer Antarctica/Rothera Antarctica/South_Pole Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Arctic/Longyearbyen Asia/Aden Asia/Almaty Asia/Amman Asia/Anadyr Asia/Aqtau Asia/Aqtobe Asia/Ashgabat Asia/Ashkhabad Asia/Baghdad Asia/Bahrain Asia/Baku Asia/Bangkok Asia/Barnaul Asia/Beirut Asia/Bishkek Asia/Brunei Asia/Calcutta Asia/Chita Asia/Choibalsan Asia/Chongqing Asia/Chungking Asia/Colombo Asia/Dacca Asia/Damascus Asia/Dhaka Asia/Dili Asia/Dubai Asia/Dushanbe Asia/Gaza Asia/Harbin Asia/Hebron Asia/Ho_Chi_Minh Asia/Hong_Kong Asia/Hovd Asia/Irkutsk Asia/Istanbul Asia/Jakarta Asia/Jayapura Asia/Jerusalem Asia/Kabul Asia/Kamchatka Asia/Karachi Asia/Kashgar Asia/Kathmandu Asia/Katmandu Asia/Khandyga Asia/Kolkata Asia/Krasnoyarsk Asia/Kuala_Lumpur Asia/Kuching Asia/Kuwait Asia/Macao Asia/Macau Asia/Magadan Asia/Makassar Asia/Manila Asia/Muscat Asia/Nicosia Asia/Novokuznetsk Asia/Novosibirsk Asia/Omsk Asia/Oral Asia/Phnom_Penh Asia/Pontianak Asia/Pyongyang Asia/Qatar Asia/Qyzylorda Asia/Rangoon Asia/Riyadh Asia/Saigon Asia/Sakhalin Asia/Samarkand Asia/Seoul Asia/Shanghai Asia/Singapore Asia/Srednekolymsk Asia/Taipei Asia/Tashkent Asia/Tbilisi Asia/Tehran Asia/Tel_Aviv Asia/Thimbu Asia/Thimphu Asia/Tokyo Asia/Tomsk Asia/Ujung_Pandang Asia/Ulaanbaatar Asia/Ulan_Bator Asia/Urumqi Asia/Ust-Nera Asia/Vientiane Asia/Vladivostok Asia/Yakutsk Asia/Yekaterinburg Asia/Yerevan Atlantic/Azores Atlantic/Bermuda Atlantic/Canary Atlantic/Cape_Verde Atlantic/Faeroe Atlantic/Faroe Atlantic/Jan_Mayen Atlantic/Madeira Atlantic/Reykjavik Atlantic/South_Georgia Atlantic/St_Helena Atlantic/Stanley Australia/ACT Australia/Adelaide Australia/Brisbane Australia/Broken_Hill Australia/Canberra Australia/Currie Australia/Darwin Australia/Eucla Australia/Hobart Australia/LHI Australia/Lindeman Australia/Lord_Howe Australia/Melbourne Australia/NSW Australia/North Australia/Perth Australia/Queensland Australia/South Australia/Sydney Australia/Tasmania Australia/Victoria Australia/West Australia/Yancowinna Brazil/Acre Brazil/DeNoronha Brazil/East Brazil/West CET CST6CDT Canada/Atlantic Canada/Central Canada/East-Saskatchewan Canada/Eastern Canada/Mountain Canada/Newfoundland Canada/Pacific Canada/Saskatchewan Canada/Yukon Chile/Continental Chile/EasterIsland Cuba EET EST EST5EDT Egypt Eire Etc/GMT Etc/GMT+0 Etc/GMT+1 Etc/GMT+10 Etc/GMT+11 Etc/GMT+12 Etc/GMT+2 Etc/GMT+3 Etc/GMT+4 Etc/GMT+5 Etc/GMT+6 Etc/GMT+7 Etc/GMT+8 Etc/GMT+9 Etc/GMT-0 Etc/GMT-1 Etc/GMT-10 Etc/GMT-11 Etc/GMT-12 Etc/GMT-13 Etc/GMT-14 Etc/GMT-2 Etc/GMT-3 Etc/GMT-4 Etc/GMT-5 Etc/GMT-6 Etc/GMT-7 Etc/GMT-8 Etc/GMT-9 Etc/GMT0 Etc/Greenwich Etc/UCT Etc/UTC Etc/Universal Etc/Zulu Europe/Amsterdam Europe/Andorra Europe/Astrakhan Europe/Athens Europe/Belfast Europe/Belgrade Europe/Berlin Europe/Bratislava Europe/Brussels Europe/Bucharest Europe/Budapest Europe/Busingen Europe/Chisinau Europe/Copenhagen Europe/Dublin Europe/Gibraltar Europe/Guernsey Europe/Helsinki Europe/Isle_of_Man Europe/Istanbul Europe/Jersey Europe/Kaliningrad Europe/Kiev Europe/Kirov Europe/Lisbon Europe/Ljubljana Europe/London Europe/Luxembourg Europe/Madrid Europe/Malta Europe/Mariehamn Europe/Minsk Europe/Monaco Europe/Moscow Europe/Nicosia Europe/Oslo Europe/Paris Europe/Podgorica Europe/Prague Europe/Riga Europe/Rome Europe/Samara Europe/San_Marino Europe/Sarajevo Europe/Simferopol Europe/Skopje Europe/Sofia Europe/Stockholm Europe/Tallinn Europe/Tirane Europe/Tiraspol Europe/Ulyanovsk Europe/Uzhgorod Europe/Vaduz Europe/Vatican Europe/Vienna Europe/Vilnius Europe/Volgograd Europe/Warsaw Europe/Zagreb Europe/Zaporozhye Europe/Zurich GB GB-Eire GMT GMT+0 GMT-0 GMT0 Greenwich HST Hongkong Iceland Indian/Antananarivo Indian/Chagos Indian/Christmas Indian/Cocos Indian/Comoro Indian/Kerguelen Indian/Mahe Indian/Maldives Indian/Mauritius Indian/Mayotte Indian/Reunion Iran Israel Jamaica Japan Kwajalein Libya MET MST MST7MDT Mexico/BajaNorte Mexico/BajaSur Mexico/General NZ NZ-CHAT Navajo PRC PST8PDT Pacific/Apia Pacific/Auckland Pacific/Bougainville Pacific/Chatham Pacific/Chuuk Pacific/Easter Pacific/Efate Pacific/Enderbury Pacific/Fakaofo Pacific/Fiji Pacific/Funafuti Pacific/Galapagos Pacific/Gambier Pacific/Guadalcanal Pacific/Guam Pacific/Honolulu Pacific/Johnston Pacific/Kiritimati Pacific/Kosrae Pacific/Kwajalein Pacific/Majuro Pacific/Marquesas Pacific/Midway Pacific/Nauru Pacific/Niue Pacific/Norfolk Pacific/Noumea Pacific/Pago_Pago Pacific/Palau Pacific/Pitcairn Pacific/Pohnpei Pacific/Ponape Pacific/Port_Moresby Pacific/Rarotonga Pacific/Saipan Pacific/Samoa Pacific/Tahiti Pacific/Tarawa Pacific/Tongatapu Pacific/Truk Pacific/Wake Pacific/Wallis Pacific/Yap Poland Portugal ROC ROK Singapore Turkey UCT US/Alaska US/Aleutian US/Arizona US/Central US/East-Indiana US/Eastern US/Hawaii US/Indiana-Starke US/Michigan US/Mountain US/Pacific US/Pacific-New US/Samoa UTC Universal W-SU WET Zulu Rendimiento En cuanto al rendimiento, en comparación con el contenedor, Python Embebido ofrece una respuesta más rápida y fácil de implementar.
Artículo
Henrique Dias · 29 ago, 2020

Descripción general de iris-fhir-portal

Desarrollé la solucion IRIS-FHIR-Portal como parte del concurso InterSystems IRIS for Health FHIR. El objetivo de la aplicación es mostrar cómo de fácil es crear un repositorio FHIR de pacientes y sus datos clínicos utilizando la solucion IRIS for Health.En conjunto, con esta solucion también estamos empoderando al paciente con sus datos clínicos y ellos los podrán usar como quieran. Características Lista de pacientes En el panel izquierdo, hay una lista de pacientes con una barra de filtro en la parte superior. Detalles del paciente El formulario proporciona la siguiente información: FHIR Patient ID SSN (Social Security Number) First Name Last Name Date of Birth Gender Address City State Country Después del formulario de Datos del paciente, tenemos un desplegable con cuatro bloques de información. Los recursos de FHIR que ofrecen esa información son: AllergyIntolerance Observation Category: vital-signs Category: laboratory Immunization Las columnas de la derecha muestran el total de resultados de cada elemento. P.D.: Escribí sobre cómo obtuve toda esta información de FHIR Resources en mi artículo anterior. https://community.intersystems.com/post/my-experience-working-fhir Como ejemplo, aquí tenemos una captura de pantalla de los resultados del laboratorio: Para una aproximación transparente con datos del paciente, al final de la página hay un modal con toda la información que ofrecen los recursos de FHIR. ¡Aquí puedes probar la aplicación aquí!http://iris-fhir-portal.eastus.cloudapp.azure.com:32783/csp/user/fhirUI/patientlist.html
Pregunta
Mathew Lambert · 22 oct, 2021

Trabajando con distintas zonas horarias

Tenemos un escenario bastante complejo pero creo que es sencillo de explicar y que quede claro. Estamos desarrollando un ejecutador de tareas que corre en un servidor con una timezone indiferente. Las tareas se tienen que ejecutar cada dia pero a una hora definida para una cierta timezone Guardamos en base de datos la hora a la que queremos ejecutar la tarea y de que timezone es (no vayas al pozo de guardar en UTC, ya que cuando tengas DST será a horas distintas) Lo que queremos es que cuando obtengamos nuestra tarea de la DB, convertir el 02:00 Europe/Madrid ya sea a UTC o a local (servidor) He encontrado la clase HS.Timezone.Server.Service pero no soluciona ningun problema. ¿Hay algun método en intersystems para hacer estas conversiones a timezone y a utc o local? Hola Mathew, ¿Le has echado un vistazo a [Ens.Util.Time](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?&LIBRARY=ENSLIB&CLASSNAME=Ens.Util.Time)? ``` USER>set now = $horolog USER>write $zdt(now,3) 2021-10-29 11:23:49 USER>write ##class(Ens.Util.Time).ConvertDateTime(now,"%q(3)","%K(-6)%Y-%m-%d %H:%M:%S",,.status,) 2021-10-29 05:23:49 ``` Te puede servir para convertir horas entre zonas horarias, sabiendo el offset sobre UTC. Si, pero el problema radica ahí, en saber el offset. Otros sistemas integran la tzdatabase a fecha de lanzamiento (py, java) y a priori parecería que HS.Timezone.Server.Service también, pero no estamos seguros
Artículo
Alberto Fuentes · 29 dic, 2021

VSCode-ObjectScript en GitHub

No hace mucho GitHub introdujo una nueva funcionalidad que permite ejecutar muy rápidamente VSCode en el navegador para cualquier repositorio alojado allí. Haz clic en la tecla . en cualquier repositorio o pull-request, o intercambia .com con .dev en la URL, para ir directamente a un entorno VS Code en tu navegador. Este VSCode es una versión light de la versión de escritorio, pero funciona totalmente en el navegador. Debido a esto, están limitadas las extensiones permitidas para trabajar así. Aquí podemos utilizar la flamante nueva versión 1.2.1 de la extensión VSCode-ObjectScript , que ahora puede ser ejecutada en modo Navegador. Lo que necesitarás hacer es abrir cualquier repositorio en este nuevo entorno, ir a extensions, buscar e instalar la extensión VSCode-ObjectScript. Una vez instalada, estará disponible para cualquier repositorio que abras después. Es la misma extensión pero por ahora solo tiene la funcionalidad básica. Sólo resaltado de sintaxis. No tiene acceso para ejecutar IRIS, pero algunas funcionalidad nuevas, que están disponibles offline, aparecerán en el futuro. Sin GitHub Hay una opción más, si quieres ejecutar VSCode en navegador, pero no vinculado a ningún repositorio GitHub, y sólo abrir algunos de tus archivos locales, puedes utilizar https://vscode.dev. La extensión VSCode-ObjectScript está disponible allí también. Este artículo está 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.