Limpiar filtro
Artículo
Sergio Farago · 28 mar, 2025
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
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
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
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/
.png)
.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
.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
.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
# .png)
Escribir "resourceType": "Patient" y todos los atributos relacionados con el recurso Patient comenzarán a aparecer en el IntelliSense.
.png)
**VS Code validará automáticamente la estructura y la sintaxis del recurso.**
.png)
Con la ayuda de IntelliSense y la función de autocompletado hemos creado y validado nuestro recurso para los pacientes.
.png)
Paso 5: Publicar el recurso creado en el servidor FHIR de InterSystems usando la API Rest de Postman
.png)
Recuperar el recurso de Patient Creado utilizando el método GET
.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
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
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
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
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
¡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
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
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
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
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
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
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.