#InterSystems IRIS for Health

0 Seguidores · 498 Publicaciones

InterSystems IRIS for Health™ es la primera y única plataforma de datos global diseñada específicamente para desarrollar aplicaciones que permitan a los servicios médicos administrar los datos más importantes del mundo. Incluye poderosas funciones listas para utilizarse: procesamiento y análisis de transacciones, un modelo flexible para la información de los servicios médicos, implementación de soluciones basadas en FHIR, soporte para las normas de compatibilidad operativa entre los servicios médicos, y mucho más. Todas estas funciones permiten que los desarrolladores realicen aplicaciones valiosas y novedosas rápidamente. Obtener más información.

Artículo Muhammad Waseem · sep 29, 2021 1m read

https://www.appeon.com/products/powerbuilder

Appeon PowerBuilder es una herramienta de desarrollo empresarial que permite crear componentes y aplicaciones empresariales basadas en datos.
Es un producto de una suite de Appeon que ofrece las herramientas para desarrollar aplicaciones cliente/servidor, web, móviles y distribuidas.

En este artículo, mostraré los pasos para conectarse a Caché con Appeon PowerBuilder usando ODBC.
 

Paso 1 : Asegúrate de que la opción "ODBC Driver" está seleccionada al instalar IRIS:

0
0 361
Artículo Ricardo Paiva · sep 16, 2021 3m read

Como ayuda para aquellos que quieren utilizar las funciones de la Base de datos documental (DocDB) dentro de InterSystems IRIS, y específicamente la API REST que proporciona, reuní una ColecciónPostman que ofrece muestras para varias llamadas básicas.

Por ejemplo:

En el ejemplo se utilizan documentos de "Color", por ejemplo, Rojo, Azul, etc., utilizando una estructura JSON de muestra desde [aquí](https://www.sitepoint.com/colors-json-example/).

La Colección incluye llamadas de diferentes "categorías":

  • Crear metadatos: crear la base de datos y las propiedades relacionadas
  • Obtener metadatos: entender qué bases de datos y propiedades están definidas
  • CUD: crear/actualizar/eliminar documentos
  • Buscar y obtener documentos: recuperar documentos según el ID o ciertos valores o criterios
  • Eliminar metadatos: eliminar propiedades o bases de datos

El orden de las solicitudes en la Colección tiene cierta lógica interna (por ejemplo, primero crear la base de datos y las propiedades, luego insertar algunos datos y después recuperarlos), pero por supuesto puedes utilizarlos en el orden o los cambios que desees.

El orden también funciona bien si se ejecuta Collection Runner de Postman. Añadí algunos scripts de prueba básicos, que permiten que Postman muestre el estado Aprobado o Fallido para cada llamada.

Por ejemplo:

Ten en cuenta que la última llamada elimina todas las bases de datos de documentos dentro de un Namespace, así que no ejecutes esto a menos que realmente quieras hacerlo... no lo hagas manualmente y tampoco como parte de la ejecución de toda la Colección.

Para conseguir que las llamadas funcionen en varios entornos, utilicé la función variables de Postman.

Esto permite cambiar el nombre/la IP del servidor, el puerto y el namespace -

Así que cada llamada se parece a esto:

Seguramente también necesitarás adaptar la parte de autenticación.

Actualmente tengo "Basic Authentication" simplemente con "SuperUser" y "sys":

  Solo para añadir un cambio "multimodelo" a esto, aquí también hay un ejemplo de acceso a estos datos a través de SQL:

Esta es la estructura de la tabla (como se ve en la extensión SQL Tools en VSCode):

Este es un resultado SELECT sencillo:

Y aquí hay un SELECT con una cláusula WHERE sobre una de las propiedades que definimos:

0
0 329
Artículo Ricardo Paiva · sep 9, 2021 4m read

Este artículo es una continuación de esta publicación.

El objetivo de este artículo es explicar cómo funciona el menú de interoperabilidad para la integración del sistema.

imagen

La parte izquierda de la figura representa la ventana para aceptar información enviada desde sistemas externos.

Hay varias maneras de recibir información, como monitorizar el directorio especificado a intervalos regulares para leer archivos, consultar periódicamente la base de datos, esperar a que se introduzcan datos, o llamar directamente y que se pasen desde aplicaciones en otros sistemas.

En el mecanismo de integración del sistema creado en el menú Interoperabilidad de IRIS, la información recibida se almacena en un objeto llamado mensaje. El mensaje se envía al componente responsable de su procesamiento posterior.

Se puede crear un mensaje utilizando toda la información recibida o solo una parte de ella.

Supón que deseas enviar la información contenida en el mensaje a un sistema externo. En ese caso, es necesario que envíes el mensaje al componente responsable de solicitar a la red externa que lo procese (la parte derecha de la figura). El componente que recibe el mensaje solicitará al sistema externo que lo procese.

Además, supón que un mensaje requiere que una persona lo revise, conversión de datos o adjuntar datos. En ese caso, el mensaje se envía al componente situado en el centro del diagrama (BPM), que es el encargado de coordinar el flujo del proceso.

Los mensajes se utilizan para enviar y recibir datos entre cada componente. Cuando se envía o se recibe un mensaje, este se almacena automáticamente en la base de datos.

Como los mensajes se almacenan en la base de datos, se puede revisar la diferencia entre antes y después de la conversión de datos. Revisa el mensaje que fue la fuente de un problema durante una operación o vuelva a empezar (reenvío) desde la mitad del proceso. Verifica el estado utilizando mensajes en cada etapa de desarrollo, prueba y operación.

Una imagen sencilla de la integración del sistema se dividiría en tres componentes (business services, business processes y business operations), como se muestra en la siguiente figura.

También hay una definición llamada "producción" que almacena información sobre los componentes que se van a utilizar (por ejemplo, la información de la conexión).

imagen

La función de cada componente es la siguiente:

Business services
Responsables de recibir información de fuentes externas, crear mensajes y enviar mensajes a otros componentes.

Business processes
Esta función se activa cuando se recibe un mensaje. Es responsable de coordinar el proceso (llamando a los componentes en el orden definido, esperando respuestas, esperando los resultados de la revisión humana, etc.).

Business operations Esta función se activa cuando se recibe un mensaje. Tiene la función de solicitar al sistema externo que procese el mensaje.

Los mensajes se utilizan para enviar y recibir datos entre componentes.

Los componentes que son distintos de los business services inician el procesamiento cuando reciben un mensaje.

La pregunta es: ¿cuál es el propósito de crear y utilizar este mensaje?

Los mensajes se crean mediante la recuperación de la información que quieres transmitir al sistema externo a partir de los datos introducidos en el business service.

Dado que no todos los sistemas externos conectados a IRIS utilizan el mismo tipo de formato de datos para transmitir, y el contenido a transmitir varía, la producción puede definir libremente las clases de mensaje de acuerdo con la información.

Hay dos tipos de mensajes: solicitudes (= mensaje de solicitud) y respuesta (= mensaje de respuesta). El mensaje que desencadena la activación del componente se denomina solicitud (= mensaje de solicitud), y el mensaje al que responde el componente después de su procesamiento se denomina respuesta (= mensaje de respuesta).

Estos mensajes se diseñarán mientras se considera el proceso de transmisión.

En los siguientes artículos, utilizaremos un caso de estudio para describir la creación de producciones, mensajes y componentes.

0
0 485
Artículo Mario Sanchez Macias · sep 3, 2021 3m read

Hola a todos.

Me encontré con algunos problemas cuando configuré los scripts por lotes de freeze/thaw para usarlos con VMWare en un ecosistema de Windows, y quería compartir lo que encontré por si pudiera ayudar a otros. Esto se llevó a cabo en un entorno que utiliza HealthConnect 2019.1.x.

IRIS no se ejecutó (2)

Parece que el script de ejemplo de la documentación, en mi caso, me indicaba que el entorno no se estaba ejecutando (a pesar de que se estaba ejecutando). Para corregir esto, proporcioné la ruta de acceso a la ubicación de Mgr, de la siguiente forma:

c:\InterSystems\HealthConnect\bin\irisdb -s"C:\InterSystems\HealthConnect\Mgr" -U%%SYS ##Class(Backup.General).ExternalFreeze() <C:\InterSystems\BackupScripts\login.scr

Esto podría deberse a que tenía más de un equipo de HealthConnect en este entorno, sin embargo, persistió después de que se desinstaló la otra instancia y se reinició.

Script en ejecución

El segundo problema al que me enfrenté fue el de conseguir que los scripts se ejecutaran cuando se realizaba la copia de seguridad. Después de investigar un poco, descubrí que VMWare ejecutará todos los scripts en la carpeta "C:\Program Files\VMware\VMware Tools\backupScripts.d" en orden alfabético usando el comando "freeze", y después ejecutará cada script en orden inverso usando el comando "thaw". En mi caso, necesitaba crear esta carpeta dentro del directorio "VMWare Tools".

Para evitar gestionar varios archivos y restringir qué comando se puede ejecutar contra ellos, combiné freeze y thaw en un solo script, y añadí una sentencia "if" al inicio del único archivo batch para dirigirlo a freeze y thaw:

if "%1" == "freeze" goto doFreeze
if "%1" == "thaw" goto doThaw

Niveles de error en el Script

Si el freeze acaba con éxtio, irisdb.exe devolverá el nivel de error como 5. Sin embargo, VMWare (y algunos otros) leerán una respuesta distinta de cero como un error. Por lo tanto, necesitaba sobrescribir el código de salida dependiendo de la respuesta en el nivel de error, ya que de lo contrario se detiene la ejecución de la copia de seguridad inactiva:

:FreezeOK
echo SYSTEM IS FROZEN
rem Error levels from freeze do not match standard convention, so we return 0 when successful.
EXIT /b 0

:FreezeFAIL
echo SYSTEM FREEZE FAILED
EXIT /b 1

Nota: utilicé 1 para el error simplemente porque era distinto de cero.

Resultado final

Al juntar todo esto, obtuve lo siguiente:

@echo off
rem VMTools should pass in either freeze or thaw.
if "%1" == "freeze" goto doFreeze
if "%1" == "thaw" goto doThaw

echo Nothing Matched. Exiting...
EXIT /b

:doFreeze
rem Call external freeze and provide credential file stored in separate folder.
c:\InterSystems\HealthConnect\bin\irisdb -s"C:\InterSystems\HealthConnect\Mgr" -U%%SYS ##Class(Backup.General).ExternalFreeze() <C:\InterSystems\BackupScripts\login.scr
rem note that we need to check errorlevel from highest to lowest here....
if errorlevel 5 goto FreezeOK
if errorlevel 3 goto FreezeFAIL
rem If here, errorlevel did not match an expected output.
rem Assume Failure.
echo errorlevel returned unexpected value
goto FreezeFAIL

:FreezeOK
echo SYSTEM IS FROZEN
rem Error levels from freeze do not match standard convention, so we return 0 when successful.
EXIT /b 0

:FreezeFAIL
echo SYSTEM FREEZE FAILED
EXIT /b 1

:doThaw
c:\InterSystems\HealthConnect\bin\irisdb -s"C:\InterSystems\HealthConnect\Mgr" -U%%SYS ##Class(Backup.General).ExternalThaw()
EXIT /b 0

Mejoras/Siguientes pasos

El bloque doThaw es bastante débil ya que asume el éxito, y esto podría ser una buena oportunidad para escribir a un log de registro y anotar cualquier fallo. Además, añadiría una llamada a ##Class(Backup.General).ExternalSetHistory() para asegurar que el entorno registra correctamente cuándo se realizaron las copias de seguridad y se activaron las purgas de journal.

0
0 130
Artículo Mathew Lambert · sep 1, 2021 2m read

¡Hola a todos!

Hace poco aprendí algo nuevo mientras trabajaba en un problema con el Centro de Soporte Internacional (WRC), y quería compartirlo con todos por si pudiera ayudar a alguien más.

Escenario:

Tienes archivos que se escriben inexplicablemente en una carpeta de tu servidor y, debido a la cantidad de archivos en la carpeta y al rendimiento general del sistema, no es posible trabajar sobre los archivos para localizar el origen.

0
0 1329
Anuncio Esther Sanchez · ago 31, 2021

¡Hola Comunidad!

Os traemos un nuevo vídeo, ya disponible en el Canal de YouTube de la Comunidad de Desarrolladores en inglés.

Es la grabación de una de las ponencias realizadas en la Convención Anual de InterSystems del año pasado, así que el idioma del vídeo es el inglés. Pero recordad que podéis activar los subtítulos en inglés, por si os resulta más fácil entender el vídeo leyendo el texto.

Gestión de APIs de FHIR (Virtual Summit 2020)

0
0 91
Artículo Ricardo Paiva · jul 22, 2021 3m read

Posiblemente te hayas encontrado con esto y no supiste cómo evitarlo; o tal vez ni siquiera te diste cuenta...

Pero cuando se tienen componentes empresariales de la Producción de Interoperabilidad TCP (por ejemplo, un business service HL7), probablemente tienes (dependiendo de tu configuración de StayConnected) muchas entradas en el Registro de Eventos (Event log) de tipo Info. Cada entrada registraría una conexión o desconexión.

Por ejemplo:

0
0 156
InterSystems Official Mario Sanchez Macias · jul 22, 2021

InterSystems ha corregido un defecto que puede ocasionar resultados incorrectos en consultas SQL. Este defecto afecta a:

  • Todas las versiones principales y versiones de mantenimiento de InterSystems IRIS e InterSystems IRIS for Health, desde 2019.1.0

Un bloque de SQL puede encontrarse con el defecto sólo si se cumplen las siguientes condiciones:

  • El bloque contiene una condición GROUP BY pero no incluye ningún agregado, como COUNT(*).
  • La condición SELECT incluye un campo que no está en la condición GROUP BY*, y el bloque contiene una condición WHERE en ese campo.
  • Los resultados del bloque de SQL se pueden determinar totalmente desde un índice único, y ese índice empieza con el campo en la condición GROUP BY del bloque.
0
0 97
Artículo Mario Sanchez Macias · jul 19, 2021 17m read

Siguiendo la serie de artículos de mi compañero Murray vamos a centrarnos en el artículo donde analizamos la CPU.

Un cliente me pidió que le aconsejara sobre el siguiente escenario: sus servidores de producción se están acercando al final de su vida útil y es el momento de actualizar el hardware. También están pensando en consolidar los servidores por medio de la virtualización y quieren ajustar la capacidad, ya sea con servidores de hardware dedicado o virtualizados.

Hoy analizaremos la CPU. En artículos posteriores explicaré el enfoque para dimensionar correctamente otros "grupos alimenticios de hardware": la memoria y las Entradas/Salidas.

Entonces las preguntas son:

  • ¿Cómo se traducen los requisitos de un procesador de hace más de cinco años a los procesadores actuales?
  • De los procesadores actuales, ¿cuáles son adecuados?
  • ¿Cómo afecta la virtualización a la planificación de la capacidad de la CPU?

Añadido en junio de 2017: Para profundizar en los aspectos específicos de las consideraciones y la planificación de la CPU en VMware y para conocer algunas preguntas y problemas comunes, puedes consultar esta publicación: Virtualización de grandes bases de datos: Planificación de la capacidad de la CPU en VMware


[Aquí puedes ver un listado con otros artículos de esta serie >>](https://community.intersystems.com/post/capacity-planning-and-performance-series-index)

Cómo comparar el rendimiento de la CPU usando los análisis de rendimiento (benchmarks) spec.org

Para traducir el uso de la CPU entre los distintos tipos de procesadores para aplicaciones desarrolladas con las plataformas de datos de InterSystems (Caché, Ensemble, HealthShare), puedes usar los análisis de rendimiento de SPECint como un cálculo aproximado para escalar entre procesadores. La página web http://www.spec.org ofrece resultados fiables de un conjunto de análisis de rendimiento estandarizados, ejecutados por proveedores de hardware.

Específicamente, SPECint es una forma de comparar distintos modelos de procesadores de los mismos proveedores y de diferentes proveedores (por ejemplo: Dell, HP, Lenovo e Intel, AMD, IBM POWER y SPARC). Puedes utilizar SPECint para entender los requisitos esperados de la CPU para tu aplicación cuando se vaya a actualizar el hardware o si tu aplicación se implementará en varios hardwares de distintos clientes y necesitas establecer una línea de base para una métrica de tamaño, por ejemplo, máximo número de transacciones por núcleo de la CPU para Intel Xeon E5-2680 (o cualquier procesador que elijas).

En el sitio web de SPECint se utilizan varios análisis de rendimiento, pero los resultados de SPECint_rate_base2006 son los mejores para Caché, ya que se han confirmado a lo largo de muchos años analizando datos de clientes y en nuestros propios análisis de rendimiento.

Como ejemplo, en este artículo vamos a comparar la diferencia entre el servidor Dell PowerEdge de los clientes con procesadores Xeon 5570, y un servidor Dell actual con procesadores Intel Xeon E5-2680 V3. La misma metodología se puede aplicar con los procesadores de servidor Intel Xeon V4 disponibles de forma generalizada.

Ejemplo: Comparando procesadores

Busca SPECint2006_Rates en la base de datos de spec.org, por nombre del procesador, por ejemplo E5-2680 V3. Puedes afinar aún más los resultados de tu búsqueda si conoces la marca y el modelo de tu servidor objetivo (por ejemplo, Dell R730); si no, utiliza un proveedor popular. En mi experiencia, creo que los modelos de Dell o HP son buenas bases de referencia de servidores estándar, generalmente no hay gran variación entre los procesadores de diferentes proveedores de hardware.

Al final de esta publicación mostraré un ejemplo paso a paso de cómo buscar resultados con el sitio web spec.org

Supongamos que buscaste en spec.org y encontraste el servidor actual y un posible servidor nuevo, así:

Actual: Dell PowerEdge R710 con Xeon 5570, 2.93 GHz: 8 núcleos, 2 chips, 4 núcleos/chips, 2 hilos/núcleos: SPECint_rate_base2006 = 251

Nuevo: PowerEdge R730 con Intel Xeon E5-2680 v3, 2.50 GHz: 24 núcleos, 2 chips, 12 núcleos/chips, 2 hilos/núcleos: SPECint_rate_base2006 = 1030

No sorprende que el nuevo servidor de 24 núcleos aumente más de 4 veces el rendimiento del análisis de rendimiento SPECint_rate_base2006 con respecto al servidor anterior de 8 núcleos, a pesar de que el servidor nuevo tiene una menor velocidad del reloj. Ten en cuenta que los ejemplos son servidores de dos procesadores que tienen ambas ranuras del procesador ocupadas.

¿Por qué se utiliza SPECint_rate_base2006 para Caché?

El sitio web spec.org tiene explicaciones de las distintos análisis de rendimiento, pero el resumen es que el análisis de rendimiento SPECint_rate2006 es un punto de referencia completo a nivel de sistema que utiliza todos los CPU con HyperThreading.

Para un análisis de rendimiento SPECint_rate2006 en particular, se reportan dos métricas: base y pico. Base es un análisis de rendimiento conservador, mientras que Pico es agresivo. Para planificar la capacidad, utiliza los resultados de SPECint_rate_base2006..

¿Un SPECint_rate_base2006 cuatro veces mayor significa una capacidad cuatro veces mayor para usuarios o transacciones?

Posiblemente si se utilizaran los 24 núcleos, el rendimiento de la aplicación pudiera escalar a cuatro veces la capacidad del servidor anterior. Sin embargo, hay varios factores que pueden hacer que los resultados sean distintos. SPECint te permitirá conocer el tamaño y el rendimiento que debería ser posible, pero hay algunas advertencias.

Aunque SPECint ofrece una buena comparación entre los dos servidores del ejemplo anterior, no garantiza que el servidor E5-2680 V3 tenga un 75% más de capacidad para los picos de usuarios concurrentes o para el pico de rendimiento de las transacciones que el servidor anterior basado en Xeon 5570. Hay que tener en cuenta otros factores, como el hecho de que los demás componentes de hardware de nuestros "grupos alimenticios de hardware" estén actualizados, por ejemplo, si el almacenamiento nuevo o el actual es capaz de dar servicio al aumento del rendimiento (pronto publicaré un análisis profundo sobre el almacenamiento).

Basado en mi experiencia analizando el rendimiento de Caché y observando los datos de rendimiento de los clientes, Caché es capaz de escalar linealmente a tasas de rendimiento extremadamente altas en un solo servidor a medida que se añaden recursos informáticos (núcleos de la CPU). Esto es aún más cierto con las mejoras que Caché recibe año tras año. Dicho de otro modo, veo un escalado lineal del rendimiento máximo de la aplicación, por ejemplo de las transacciones de la aplicación o reflejado en las glorefs (referencias globales) de Caché conforme se añaden núcleos en la CPU. Sin embargo, si hay cuellos de botella en las aplicaciones, pueden empezar a aparecer con tasas de transacción más altas y repercutir en el escalado lineal. En artículos posteriores explicaré dónde se pueden buscar síntomas de cuellos de botella en las aplicaciones. Una de las mejores medidas que se pueden tomar para mejorar la capacidad de rendimiento de las aplicaciones es actualizar Caché a la última versión.

Nota: Para Caché, los servidores Windows 2008 con más de 64 núcleos lógicos no son compatibles. Por ejemplo, un servidor de 40 núcleos debe tener desactivado el Hyper Threading. Para Windows 2012 se admiten hasta 640 procesadores lógicos. No hay límites en Linux.

¿Cuántos núcleos necesita la aplicación?

Las aplicaciones varían y cada uno conoce el perfil de sus propias aplicaciones, pero el enfoque común que utilizo cuando planifico la capacidad de la CPU para un servidor (o máquina virtual) es a partir de la monitorización cuidadosa del sistema, comprender que un cierto número de núcleos de CPU de un determinado procesador "estándar" puede sostener una tasa de transacción máxima de n transacciones por minuto. Estas podrían ser episodios, o encuentros, o pruebas de laboratorio o lo que sea. El punto es que el rendimiento del procesador estándar se basa en las métricas que ha recogido en tu sistema actual o un sistema de clientes.

Si conoces el pico de uso de recursos actual de la CPU en un procesador conocido con n núcleos, se puede traducir al número de núcleos necesarios en un procesador más nuevo o diferente para la misma tasa de transacciones utilizando los resultados de SPECint. Con un escalado lineal esperado, 2 x n transacciones por minuto se traduce aproximadamente en 2 x el número de núcleos necesarios.

Cómo elegir un procesador

Como se puede ver en spec.org o analizando la oferta de tu proveedor, hay muchas opciones de procesadores. El cliente de este ejemplo está contento con Intel, por lo que me limitaré a recomendarle servidores Intel actuales. Una forma de proceder es buscar la mejor relación coste-beneficio, o la mejor relación SPECint_rate_base2006 por dólar y por núcleo. Por ejemplo, el siguiente gráfico muestra los servidores básicos de Dell - tu precio variará, pero esto ilustra que hay puntos más favorables en el precio y recuentos de núcleo más altos adecuados para la consolidación de los servidores utilizando la virtualización. Creé el gráfico fijando el precio de un servidor de producción de calidad, por ejemplo, el Dell R730, y luego examinando distintas opciones de procesadores.

mo

Según los datos del gráfico y la experiencia en sitios de los clientes, el procesador E5-2680 V3 presenta un buen rendimiento a un precio adecuado por SPECint, o por núcleo.

También entran en juego otros factores, por ejemplo, si estás buscando procesadores de servidor para la implementación virtualizada, puede ser más barato aumentar el número de núcleos por procesador, lo que tiene un coste mayor pero logra reducir el número total de servidores necesarios para soportar todas tus máquinas virtuales. De esta forma ahorrarás en software (p. ej. VMware o sistemas operativos) que cobran licencias por ranura de procesador. También tendrás que equilibrar el número de servidores con los requisitos de alta disponibilidad (HA). En artículos posteriores volveré a hablar de VMware y HA.

Por ejemplo, un clúster de VMware HA formado por tres servidores host de 24 núcleos proporciona una buena disponibilidad y una potencia de procesamiento significativa (por número de núcleos), permitiendo configuraciones flexibles de máquinas virtuales de producción y de no producción. Recuerda que VMware HA tiene un tamaño de N+1 servidores, por lo que tres servidores de 24 núcleos equivalen a un total de 48 núcleos disponibles para tus máquinas virtuales.

Núcleos vs GHz: ¿Qué es lo mejor para Caché?

Si tienes que elegir entre núcleos de CPU más rápidos o más núcleos de CPU, debes considerar lo siguiente:

  • Si tu aplicación requiere muchos hilos/procesos de cache.exe, un mayor número de núcleos permitirá que más de ellos se ejecuten exactamente al mismo tiempo.
  • Si tu aplicación tiene menos procesos, desearás que cada uno se ejecute lo más rápido posible.

Otra forma de ver esto es pensar que si tienes una aplicación de tipo cliente/servidor con muchos procesos, por ejemplo, uno o más por usuario simultáneo, querrás tener más núcleos disponibles. Para aplicaciones basadas en el navegador que utilizan CSP, en las que los usuarios se agrupan en menos procesos de servidor CSP muy ocupados, tu aplicación se beneficiaría de tener un número potencialmente menor de núcleos, pero más rápidos.

En un mundo ideal, ambos tipos de aplicaciones se beneficiarían de contar con muchos núcleos rápidos, asumiendo que no hay contención de recursos cuando varios procesos cache.exe se ejecutan simultáneamente en todos esos núcleos. Como señalé anteriormente, pero merece la pena repetirlo, cada versión de Caché presenta mejoras en el uso de los recursos de la CPU, por lo que actualizar las aplicaciones a las últimas versiones de Caché puede beneficiarse de más núcleos disponibles.

Otra consideración importante es maximizar los núcleos por servidor cuando se utiliza la virtualización. Es posible que las máquinas virtuales individuales no tengan un elevado número de núcleos, pero en conjunto hay que encontrar un equilibrio entre el número de servidores necesarios para la disponibilidad y minimizar el número de hosts para la administración y la consideración de los costes mediante el aumento del número de núcleos.

Virtualización de VMware y CPU

La virtualización de VMware funciona bien para Caché cuando se utiliza con los componentes de almacenamiento y del servidor actuales. Al seguir las mismas reglas que la planificación de la capacidad física, no hay un impacto significativo en el rendimiento usando la virtualización de VMware en el almacenamiento, la red y los servidores configurados correctamente. La compatibilidad con la virtulaización es mucho mejor en procesadores Intel Xeon posteriores, en concreto solo deberías considerar la virtualización en Intel Xeon 5500 (Nehalem) y versiones posteriores, es decir: Intel Xeon 5500, 5600, 7500, serie E7 y serie E5.


Ejemplo: Actualización de hardware, cómo calcular los requerimientos mínimos de CPU

Poniendo en práctica los consejos y procedimientos anteriores, nuestro ejemplo es una actualización de servidor de una carga de trabajo que se ejecuta en Dell PowerEdge R710 con 8 núcleos (dos procesadores de 4 núcleos Xeon 5570).

Al hacer un gráfico del uso actual de la CPU en el servidor de producción primario en el cliente, vemos que el servidor está alcanzando un máximo de menos del 80% durante la parte más activa del día. La fila de ejecución no está bajo presión. La Entrada/Salida y la aplicación también funcionan bien, por lo que no hay cuellos de botella que superen supriman la CPU.

mo

Regla general: Comienza por dimensionar los sistemas para un uso máximo del 80% de la CPU al final de la vida útil del hardware, teniendo en cuenta el crecimiento esperado (por ejemplo, un aumento de usuarios/transacciones). Esto permite crecimientos inesperados, eventos inusuales o picos inesperados de actividad.

Para que los cálculos sean más claros, vamos a suponer que no se espera un crecimiento del rendimiento durante la vida del nuevo hardware:

El escalado por núcleo se puede calcular como: (251/8) (1030/24) o un aumento del 26% en el rendimiento por núcleo.

El 80% de la CPU con 8 núcleos en el servidor anterior equivale aproximadamente al 80% de la CPU con 6 núcleos en los nuevos procesadores E5-2680 V3. Así, el mismo número de transacciones podría estar soportado por seis núcleos.

El cliente tiene varias opciones, puede comprar nuevos servidores hardware dedicados que cumplan el requisito mínimo de seis núcleos de CPU E5-2680 V3 o su equivalente, o avanzar con sus planes para virtualizar su carga de trabajo de producción en VMware.

Virtualizar tiene sentido para aprovechar las ventajas de la consolidación, flexibilidad y alta disponibilidad de los servidores. Dado que hemos calculado los requisitos de la CPU, el cliente puede avanzar con confianza para ajustar correctamente el tamaño de las máquinas virtuales de producción en VMware. Como nota al margen, comprar servidores actuales con una baja cantidad de núcleos es una opción cara o de difícil acceso, lo cual hace que la virtualización sea una opción aún más atractiva.

Virtualizar también ofrece ventajas si se espera un crecimiento significativo. Los requisitos de la CPU se pueden calcular en función del crecimiento en los primeros años. Si se realiza una monitorización constante, una estrategia válida es añadir recursos adicionales solo cuando sea necesario y antes de necesitarlos.


Consideraciones sobre la CPU y la virtualización

Como hemos visto, los sistemas de producción en Caché son dimensionados en función de los análisis de rendimiento y las medidas realizadas en los clientes. También es válido dimensionar los requerimientos de la CPU virtual (vCPU) de VMware a partir de la monitorización de los equipos de hardware dedicado. La virtualización por medio del almacenamiento compartido añade muy poca sobrecarga a la CPU comparado con el hardware dedicado**. Para los sistemas de producción, utiliza una estrategia de ajustar el tamaño inicial del sistema igual que los núcleos de CPU de hardware dedicado.

**Nota: Para implementaciones de VMware VSAN debes añadir un búfer de la CPU a nivel host del 10% para el procesamiento de vSAN.

Se deben considerar las siguientes reglas para asignar CPUs virtuales:

Recomendación: No asignes más CPUs virtuales de las necesarias para lograr un rendimiento adecuado.

  • Aunque se puede asignar un gran número de CPUs virtuales a una máquina virtual, la práctica recomendada es no asignar más de las necesarias, ya que puede haber una sobrecarga de rendimiento (normalmente baja) para administrar las CPUs virtuales no utilizadas. La clave es monitorizar tus sistemas frecuentemente para asegurarse de que las máquinas virtuales tengan el tamaño adecuado.

Recomendación: Los sistemas de producción, especialmente los servidores de bases de datos, inicialmente ajustan el tamaño para 1 CPU física = 1 CPU virtual.

  • Se espera que los servidores de producción, especialmente los de bases de datos, tengan un alto nivel de uso. Si necesitas seis núcleos físicos, ajusta el tamaño para seis núcleos virtuales. Consulta también la nota sobre el Hyper Treading que se encuentra más abajo.

Sobresuscripción

La sobresuscripción se refiere a varios métodos por los cuales más recursos de los disponibles en el servidor físico se pueden asignar hacia los servidores virtuales que son compatibles con ese host. En general, es posible consolidar los servidores por medio de la sobresuscripción de recursos de procesamiento, memoria y almacenamiento en máquinas virtuales.

La sobresuscripción del servidor sigue siendo posible cuando se ejecutan bases de datos de producción en Caché; sin embargo, para ajustar el tamaño inicial de los sistemas de producción se asume que la CPU virtual tiene dedicación completa del núcleo. Por ejemplo, si tienes un servidor E5-2680 V3 de 24 núcleos (2 de 12 núcleos), ajusta el tamaño para una capacidad total de hasta 24 CPUs virtuales, sabiendo que podría haber espacio libre disponible para consolidación. En esta configuración se asume que el Hyper Threading está habilitado a nivel del servidor. Una vez que hayas pasado tiempo monitorizando la aplicación, el sistema operativo y el rendimiento de VMware durante las horas pico de procesamiento, puedes decidir si es posible una mayor consolidación.

Si estás mezclando máquinas virtuales que no son de producción, una regla general que uso a menudo para ajustar el tamaño del sistema y calcular los núcleos de CPU totales es ajustar inicialmente las CPUs que no son de producción en 2:1 físicas a virtuales. Sin embargo, esta es definitivamente un área en la que los resultados podrían variar y se deberá monitorizar el sistema para ayudar a planificar la capacidad. Si tienes dudas o no tienes experiencia, puedes separar las máquinas virtuales de producción de las que no lo son a nivel de servidor o por medio de la configuración de vSphere hasta comprender las cargas de trabajo.

VMware vRealize Operations y otras herramientas de terceros ofrecen la posibilidad de monitorizar los sistemas a lo largo del tiempo, y sugerir la consolidación o alertar de que se requieren más recursos para las máquinas virtuales. En un artículo posterior hablaré sobre otras herramientas de monitorización disponibles.

La conclusión es que, en el ejemplo de nuestros clientes, pueden estar seguros de que su máquina virtual de producción con 6 CPUs virtuales funcionará bien; siempre y cuando los otros "grupos alimenticios" principales, como las Entradas/Salidas y el almacenamiento, tengan capacidad suficiente ;-D

Hyper Threading y planificación de la capacidad

Un buen punto de partida para ajustar el tamaño de las máquinas virtuales basado en reglas conocidas para los servidores físicos es calcular los requisitos de la CPU del servidor físico, con el objetivo por procesador con Hyper Threading activado, y después simplemente hacer la traducción:

una CPU física (incluido el Hyper Threading) = una CPU virtual (incluido el Hyper Threading).

Un concepto erróneo común es que el Hyper Threading duplica de alguna manera la capacidad de la CPU virtual. Esto NO es cierto para los servidores físicos o para las CPUs virtuales lógicas. Como regla general, el Hyper Threading en un servidor de hardware dedicado puede ofrecer un 30% de capacidad de rendimiento adicional comparado con el mismo servidor sin Hyper Threading. La misma regla del 30% se aplica a los servidores virtualizados.

Licencias y CPUs virtuales

En vSphere, se puede configurar una máquina virtual con una cierta cantidad de ranuras o núcleos. Por ejemplo, si tienes una máquina virtual con doble procesador, se puede configurar para que tenga dos ranuras de CPU, o una única ranura con dos núcleos de CPU. Desde el punto de vista de la ejecución no hay mucha diferencia porque el hipervisor decidirá en última instancia si la máquina virtual se ejecuta en una o dos ranuras físicas. Sin embargo, especificar que la máquina virtual de doble CPU en realidad tiene dos núcleos en lugar de dos ranuras podría marcar una diferencia para las licencias de software que no son de Caché.


Resumen

En este artículo describí cómo comparar procesadores entre proveedores, servidores o modelos usando los resultados del análisis de rendimiento SPECint. También cómo planificar la capacidad y elegir los procesadores en función del rendimiento y la arquitectura, tanto si se utiliza la virtualización como si no.

Estos son temas complejos, en los que es fácil irse por las ramas… Por eso, al igual que en mis otras publicaciones, no dejes de hacer comentarios o preguntas si deseas profundizar en algún tema relacionado.

EJEMPLO: Búsqueda de resultados de SPECint_rate2006.

En la siguiente imagen se muestra la selección de los resultados de SPECint_rate2006.

mo

Utiliza la pantalla de búsqueda para reducir resultados.

Ten en cuenta que también se pueden descargar todos los registros a un archivo .csv de aproximadamente 20 MB para su procesamiento local, por ejemplo con Excel.

Los resultados de la búsqueda muestran el Dell R730.

mo

mo

Selecciona HTML para dar el resultado completo del análisis de rendimiento.

mo

Puedes ver los siguientes resultados para servidores con los procesadores de nuestro ejemplo.

Dell PowerEdge R710 con 2.93 GHz: 8 núcleos, 2 chips, 4 núcleos/chips, 2 hilos/núcleos con Xeon 5570: SPECint_rate_base2006 = 251

PowerEdge R730 (Intel Xeon E5-2680 v3, 2.50 GHz) de 24 núcleos, 2 chips, 12 núcleos/chips, 2 hilos/núcleos con Xeon E5-2680 v3: SPECint_rate_base2006 = 1030

0
0 224
Artículo Ricardo Paiva · jul 9, 2021 2m read

Hola todos,

Quiero compartir un sencillo y rápido método que puede usarse para habilitar ssl con un certificado auto-firmado en una instancia de desarrollo local de IRIS/HealthShare. Esto permite probar funciones específicas de https, como OAuth.

1. Instalar OpenSSL

Windows: https://slproweb.com/download/Win64OpenSSL_Light-1_1_1g.exe

Debian Linux: $ sudo apt-get -y install openssl

RHEL: $ sudo yum install openssl
1
0 202
Artículo Ricardo Paiva · jul 1, 2021 3m read

¡Hola a todos!

InterSystems IRIS tiene un menú llamado Interoperabilidad.

Ofrece mecanismos que permiten crear fácilmente integraciones de sistemas (adaptadores, mapas de registros, BPMs, conversiones de datos, etc.), para que diferentes sistemas puedan conectarse fácilmente.

En el proceso de transmisión de datos se pueden incluir diversas operaciones, por ejemplo: para conectar sistemas que normalmente no están conectados, se pueden recibir (o enviar) datos según las especificaciones del sistema de destino. Además, se puede adquirir y añadir información desde otro sistema antes de enviar los datos. La información también se puede adquirir y actualizar a partir de una base de datos (IRIS u otra).

En esta serie de artículos, comentaremos los siguientes temas, mientras vemos ejemplos de códigos para ayudarte a comprender cómo funciona y qué tipo de desarrollo se requiere cuando se integran sistemas con Interoperabilidad.

En primer lugar, os presento el caso de estudio que utilizaremos en esta serie de artículos:

Una empresa gestiona una tienda online y está cambiando el orden en que se muestra la información de los productos para que coincida con las estaciones del año.
Sin embargo, algunos artículos se venden bien independientemente de la estación del año, mientras otros se venden en momentos inesperados, lo que no coincide con la regla actual de cambiar el orden.
Por lo tanto, estudiamos la posibilidad de cambiar el orden para que coincida con la temperatura del día en lugar de con la estación del año. Fue necesario saber la temperatura de los productos comprados en ese momento.
Como se dispone de una API web externa para comprobar la información meteorológica, planeamos recopilar la información meteorológica en el momento de la compra y registrarla en la base de datos.

Es muy sencillo, pero es necesario utilizar una “API web externa” para recoger la información, y se debe combinar la información obtenida y la de compra para registrarla en la base de datos.

Las instrucciones específicas se comentarán en un artículo relacionado (no incluye la creación de un sitio web). ¡Échale un vistazo!

En cuanto a la "API web externa" que estamos utilizando en esta ocasión, estamos usando los Datos meteorológicos actuales de OpenWeather.

(Si quieres probarlo, debes registrar una cuenta y obtener un ID de API ).

Lo siguiente es el resultado de una solicitud GET de un cliente REST (lo ejecutaremos en el mecanismo que implementaremos en Interoperabilidad).

El JSON de la respuesta HTTP es el siguiente:

{
    "coord": {
        "lon": 135.5022,
        "lat": 34.6937
    },
    "weather": [
        {
            "id": 803,
            "main": "Clouds",
            "description": "broken clouds",
            "icon": "04d"
        }
    ],
    "base": "stations",
    "main": {
        "temp": 17.05,
        "feels_like": 13.33,
        "temp_min": 16,
        "temp_max": 18,
        "pressure": 1017,
        "humidity": 55
    },
    "visibility": 10000,
    "wind": {
        "speed": 4.63,
        "deg": 70
    },
    "clouds": {
        "all": 75
    },
    "dt": 1611635756,
    "sys": {
        "type": 1,
        "id": 8032,
        "country": "JP",
        "sunrise": 1611612020,
        "sunset": 1611649221
    },
    "timezone": 32400,
    "id": 1853909,
    "name": "Osaka",
    "cod": 200
}

En el siguiente artículo, comentaremos cómo funciona el menú de Interoperabilidad para la integración del sistema.

0
0 233
InterSystems Official Mario Sanchez Macias · jun 18, 2021

De vez en cuando, InterSystems discontinúa el desarrollo de una tecnología, cuando hay disponibles otras opciones mejores y más modernas. Sin embargo, el soporte a esas funcionalidades continúa de la misma forma que los productos fuera de la Versión Minima Soportada.

0
0 190
Artículo Mathew Lambert · jun 18, 2021 1m read

Introducción

Este es Iris-key-uploader, un front-end en Angular con su API REST.

El objetivo de este proyecto es importar fácilmente archivos de claves a IRIS desde una interfaz de usuario web.

¿Por qué este proyecto?

Desafortunadamente el panel de IRIS para cambiar la clave no da la oportunidad de subir la licencia.

Panel

Como se puede ver, solo se puede navegar desde el lado del servidor.

¿Qué pasa si no se tiene un acceso directo a él?

Te gustaría tener una página web sencilla para subir la nueva clave y activarla.

Ese es el propósito de este proyecto.

Demo

Demostración

Interfaz de Usuario

http://localhost:52773/keyuploader/index.html

Compilación

Ejecute el servidor

docker-compose up -d

Instalar con ZPM

zpm "install iris-key-uploader"

Observaciones finales

Esto funciona incluso si la instancia no tiene ninguna clave. De hecho, sin clave, IRIS tiene una LU (Unidad de Licencia) disponible.

0
0 108
InterSystems Official David Reche · jun 17, 2021

InterSystems anuncia el lanzamiento de la versión 2021.1 de InterSystems IRIS Data Platform, InterSystems IRIS for Health y HealthShare Health Connect, ya disponible para clientes y partners.

Las mejoras en esta versión ofrecen a los desarrolladores más libertad para crear aplicaciones robustas y de alto rendimiento en el lenguaje que elijan, tanto del lado del servidor como del cliente. Esta versión también permite a los usuarios consumir grandes cantidades de información de forma más efectiva, a través de nuevas y más rápidas funciones analíticas.

Esperamos que sean muchos los clientes y partners que actualicen sus instalaciones de Caché y Ensemble a esta versión de InterSystems IRIS y que la transición pueda realizarse de forma provechosa y sencilla. La mayoría de las aplicaciones obtendrán beneficios en su rendimiento de forma inmediata, solo por ejecutarse en IRIS, antes incluso de descubrir las numerosas e impactantes funcionalidades de IRIS.

Os invitamos a uniros a nuestro webinar en el que presentaremos las novedades de la versión 2021.1, hoy jueves 17 de junio a las 11AM EDT. El webinar será grabado y estará disponible para ser reproducido más tarde.

0
0 128
Artículo Ricardo Paiva · jun 17, 2021 2m read

Cómo utilizar Java Gateway para acelerar el desarrollo

InterSystems IRIS incluye Object Gateways dinámicos para Java, .NET y (ahora) Python. Estos gateways permiten que tu aplicación IRIS utilice bibliotecas en estos lenguajes, eliminando la necesidad de crear todo desde cero en ObjectScript.

En este ejemplo, utilizamos las bibliotecas iTextPdf y Apache PdfBox para leer un archivo de texto y producir un PDF básico a partir de él. Estas bibliotecas son controles PDF profundos y ricos, por lo que un poco de desarrollo podría producir una aplicación de ejemplo que ofrezca resultados mucho más convincentes para tus necesidades. También he incluído un archivo de clase corto el cual hace que su uso desde ObjectScript sea muy sencillo.  

Repositorio de GitHub

Las fuentes de la demostración están disponibles en el github de la Comunidad de InterSystems.

    https://github.com/intersystems-community/iris-pdf-generator/

Instalación

La instalación de TextToPDF requiere que tengas suficiente acceso a tu servidor IRIS para trabajar con gateways y clases.

1. Clonar este repositorio

Clona este repositorio en un directorio de tu servidor IRIS:

git clone https://github.com/intersystems-community/iris-pdf-generator.git

2. Crear un Java Gateway

En la consola de administración, ve a System Administration > Configuration > Connectivity > Object Gateways y elige "Create New Gateway"

Object Gateway For:  Java
Gateway Name: iris-pdf-generator
Port: 54545
Class Path: (directory where you cloned the repo)/target/iris-pdf-generator-0.1.0-jar-with-dependencies.jar

Deja todo lo demás como predeterminado y haz clic en Save.

3. Cargar el archivo de clase

En la consola de administración, asegúrate de que estás en el namespace del usuario, ve a System Explorer > Classes, y elige "Import". Busca el directorio donde clonaste este repositorio y elige "all files" en el desplegable con los tipos de archivos. Selecciona el archivo PdfGenerator.cls. Haz clic en "Next" y luego en "Import".

Uso

Ahora que todo está instalado, puedes usarlo desde IRIS. Abre una consola y haz lo siguiente, sustituyendo "" con el nombre del directorio en el que clonaste este repositorio en:

set status = ##class(User.PdfGenerator).TextToPdf("<clone dir>\example.txt", "<clone dir>\example.pdf")

Eso creará example.pdf como una versión PDF de example.txt.

0
0 268
Anuncio Jose-Tomas Salvador · jun 17, 2021

¡Estamos buscando desarrolladores en Python para participar en nuestro programa de acceso preliminar a Python embebido (EAP IRIS Embedded Python)! Si tu, o alguien que conozcas, es un desarrollador en Python y estais interesados, por favor, ponte en contacto con nosotros a través del email que indicamos abajo.

InterSystems está incorporando la potencia y simplicidad de Python a IRIS. Estamos trabajando decididamente para integrar Python en el kernel de IRIS, poniéndose a la par con ObjectScript.

0
0 126
Artículo Alberto Fuentes · jun 15, 2021 2m read

¿Os gustaría poder acceder al Terminal Web directamente desde vuestro VSCode?

Este es otro genial artículo de la serie de Tani Frankel sobre "Trucos y consejos de VSCode" y es bastante similar al anterior sobre el Asistente SOAP.

Es el mismo principio y se obtiene el mismo resultado, aunque el caso de uso es diferente.

Supongamos que quieres abrir desde VSCode el WebTerminal (para quienes aún no están familiarizados con esta excelente herramienta diseñada por el increíble @Nikita Savchenko, consulten la web del proyecto).

Puedes adoptar un enfoque similar al del artículo anterior. Describimos nuevamente cuáles son los pasos:

  • En la configuración (settings) de JSON, abre la extensión de ObjectScript
  • En el objeto "conn", añade un objeto "links"
  • Dentro de "links" añade esta línea:
            "$(terminal) WebTerminal": "${serverUrl}/terminal/?ns=${ns}${serverAuth}"

Esto se verá así:

 

Una vez hecho esto, cuando hagas clic en la opción Connection en la parte inferior de la barra de estado de VSCode, deberías encontrar el Terminal web en el menú.

Esto se mencionó en este debate sobre Problemas con VSCode que se encuentra en el GitHub VSCode ObjectScript (acerca de las variables ${...} que se utilizaron en la URL anterior), con comentarios de @John Murray 

Os dejo un breve GIF mostrando el proceso (comienza con el menú estándar y termina con la opción de lanzar el Terminal web).

 

0
1 288
Artículo Alberto Fuentes · jun 8, 2021 3m read

Otro artículo sobre "Trucos y consejos de VSCode" -

¿Quieres ver esta opción en VSCode?

Esta vez nos centraremos en cómo obtener el Asistente SOAP (*SOAP Wizard*) tal y como estaba disponible en Studio — para definir un cliente de servicio web SOAP basado en WSDL (y *Business Operation*), o servicio —.

Si trabajas con Servicios web (Web services), lo más probable es que hayas utilizado el Asistente SOAP en Studio. Lo abrirías en Tools > Add-Ins:

Y este abría una "Server Template":

En VSCode, puede que te preguntes cómo puedes acceder a eso.

Bueno, el hecho básico que hay que comprender es que realmente este complemento o asistente es simplemente una página web, que se muestra en Studio como hemos visto anteriormente y, como tal, también se puede acceder a ella desde un simple navegador. VSCode facilita la apertura de dicho navegador con el contenido deseado (construyendo la URL correcta con el nombre del servidor, el puerto, la aplicación web, etc.).

El resultado sería el mismo que ver una opción para abrir el Portal de administración o la Referencia de clase (con las URLs correspondientes) al hacer clic en la Conexión del servidor sobre la barra de estado inferior de VSCode, por ejemplo:

También verás una entrada para el Asistente SOAP.

Puedes conseguir esto al añadir una entrada 'links' a tu objeto 'conn' que se encuentra en tu configuración de JSON de tu extensión ObjectScript, y especificando la URL deseada (utilizando las variables correspondientes).

Esto se mencionó en un debate sobre Problemas con VSCode que se encuentra en el GitHub VSCode ObjectScript, como problema "Asistente SOAP", con comentarios de @John Murray y @Ondřej Hoferek, y también se menciona en esta respuesta de @Timothy Leavitt a una pregunta de la Comunidad.
 

El valor JSON sería:

"SOAP Wizard": "${serverUrl}/isc/studio/templates/%25ZEN.Template.AddInWizard.SOAPWizard.cls?Namespace=${namespace}${serverAuth}"

Y esta parte se vería así:

Una vez que tengas esto, verás una opción adicional cuando hagas clic en la Conexión -

Y al elegir esa opción accederás al esperado asistente (abierto en un navegador):

Os dejo un breve GIF mostrando este proceso (comienza por el menú normal al hacer clic en la Conexión, y termina con el menú que incluye el Asistente SOAP).

 

Fíjate que hay otros asistentes (o plantillas) que puedes añadir de esta manera (como el Asistente XSD, por ejemplo).

2
1 1128
Anuncio Esther Sanchez · jun 3, 2021

¡Hola Comunidad!

Hemos extendido hasta el día 2 de junio la duración del concurso InterSystems FHIR Accelerator, así que el plazo ha terminado definitivamente y hoy empieza la fase de votación, que durará hasta este domingo 6 de junio.

Vamos a elegir las mejores soluciones desarrolladas usando InterSystems IRIS FHIR Accelerator Service (FHIRaaS) en AWS.

➡️ ¡Aquí puedes elegir y votar la mejor!

¿Cómo se vota?

0
0 102
Artículo Alberto Fuentes · jun 1, 2021 4m read

¡Hola Comunidad!

¿Necesitas conectar tu VSCode a un servidor de InterSystems? Le echamos un vistazo hoy a un gran truco que nos pasa Tani Frankel

¿Has oído hablar de esta opción?

Con cada vez más personas usando VSCode como IDE para nuestros productos, pensé que podría ser beneficioso ir ofreciendo pequeños trucos y consejos para ayudar a la gente a empezar a utilizarlo y a ser más productiva. Así que, con esta publicación, comienzo la serie de pequeños artículos.

Unas aclaraciones importantes:

  1. Esto no pretende ser un tutorial ni un método de aprendizaje formal - si buscas uno de ellos, puedes echar un vistazo a este excelente ejercicio online o revisar esta estupenda sesión de nuestro último Virtual Summit. 

  2. Estos "Trucos y consejos" no son de mi invención - normalmente ya están documentados o se mencionan en algún lugar, yo solo quería reunirlos y quizá ofrecer un poco más de orientación o ejemplos. Trataré de referirme a la fuente cuando sea importante.

  3. Aunque ya he anotado algunas ideas y temas que quiero cubrir en esta "serie", no sé cómo de rápido voy a ser capaz de publicarlas, así que no puedo comprometerme con la frecuencia con la que aparecerán...

Aquí va el primero de los "trucos y consejos":

Una de las primeras cosas que tendrás que hacer en VSCode es definir tus conexiones al servidor. Puedes hacerlo manualmente dentro del archivo de Configuración (Settings) de JSON en la extensión InterSystems Server Manager, o pulsando el signo (+) mientras intentas conectarte a un servidor (y respondes a las indicaciones), pero si estás en Windows, simplemente puedes importar tus definiciones del servidor desde el Registro de Windows.

De hecho, esto está documentado como parte de la documentación de la extensión InterSystems Server Manager - en el Marketplace de extensiones de VSCode, en el archivo Readme del Repositorio GitHub, y como se muestra en la página de Detalles de la extensión dentro del propio VSCode, realmente todo el mismo texto...) -

En Windows, puedes ejecutar Import Servers from Registry desde Command Palette para crear entradas de conexión para todas las conexiones que hayas definido previamente con InterSystems Server Manager.

  Cuando instalas una instancia en un equipo con Windows, o defines servidores para un cliente por medio de la herramienta Server Manager, se actualiza el Registro de Windows.

Por ejemplo, tenía un cliente con 9 servidores diferentes, a los que podría querer conectarse (entornos de Producción / Desarrollo / Pruebas, LAN vs. DMZ, etc.); otro cliente tiene incluso más (muchos más). Hacer esto uno por uno en VSCode podría ser tedioso (y propenso a errores humanos). 

Supongamos que, por ejemplo, tengo esta situación en mi equipo, como se define en InterSystems Server Manager -

Puedo utilizar la opción "Import Servers From Registry" en la extensión InterSystems Server Manager.

Simplemente abre Command Palette (View -> Command Palette... o Ctrl+Mayúscula+P), empieza a escribir "InterSystems" después del carácter > y deberías ver esta opción -

Otra opción que puedes utilizar es hacer click en los ... (3 puntos) en la esquina superior derecha del panel de InterSystems Tools, y te aparecerá la opción:

A continuación, se te pedirá un nombre de usuario (Username) para conectarse a uno de los servidores (no tienes que introducir uno si no quieres que se guarde, sino que se te pedirá cada vez que te conectes), luego una contraseña, si quieres guardar la contraseña para todos los demás servidores también (no tienes que guardar la contraseña en absoluto si no quieres) y entonces se añadirán todas las definiciones del servidor.

Por ejemplo, según la imagen del Server Manager de arriba (y asumiendo que proporcioné un nombre de usuario de SuperUser, así es como se verá la configuración de JSON después de la importación -

Aquí os dejo un breve GIF mostrando este rápido proceso (comienza con solo tener definidas las 3 conexiones predeterminadas del servidor, y termina con los 5 servidores adicionales según el ejemplo anterior):

 

0
0 168
Anuncio Esther Sanchez · mayo 25, 2021

¡Hola Comunidad!

Os traemos un nuevo vídeo, ya disponible en el Canal de YouTube de la Comunidad de Desarrolladores en inglés.

Es la grabación de una de las ponencias realizadas en la Convención Anual de InterSystems del año pasado, así que el idioma del vídeo es el inglés. Pero recordad que podéis activar los subtítulos en inglés, por si os resulta más fácil entender el vídeo leyendo el texto.

Descripción general de FHIR (Virtual Summit 2020)

0
0 99
Artículo Eduardo Anglada · mayo 24, 2021 4m read

Qué te parece si te digo que muy pronto te podrás conectar a IRIS desde la aplicación escrita en Rust...

¿Qué es Rust?

Rust es un lenguaje de programación multiparadigma diseñado teniendo en cuenta el rendimiento, la seguridad y especialmente que la concurrencia sea segura. Rust es sintácticamente similar a C++, pero puede garantizar la seguridad de la memoria mediante el uso de un verificador de préstamos para validar las referencias. Rust logra la seguridad de la memoria sin emplear un recolector de basura, y el conteo de referencias es opcional. (c) Wikipedia

Es el lenguaje más valorado durante los últimos cinco años en la  encuesta de Stack Overflow 2020.

0
0 180
InterSystems Official David Reche · mayo 20, 2021

Con el lanzamiento de PEX en InterSystems IRIS 2020.1 e InterSystems IRIS for Health 2020.1, los clientes tienen una mejor manera de incorporar Java en las producciones que con Java Business Host.PEX ofrece un completo conjunto de APIs para construir componentes de interoperabilidad y está disponible tanto en Java como en .NET.

Java Business Host ha sido eliminado de InterSystems IRIS e InterSystems IRIS for Health desde la versión 2020.4. Los clientes que utilizan Java Business Host deben migrar a PEX.

0
0 79
Artículo Alberto Fuentes · mayo 19, 2021 1m read

En Studio, podías abrir una clase directamente usando su nombre, sin tener que recorrer completamente el árbol de paquetes con un montón de clics hasta llegar a la clase deseada.

Con Ctrl + O o (File -> Open) podías escribir el nombre de la clase de forma sencilla, por ejemplo:

Pulsabas Enter y voilà!, la clase se abría.

¿Cómo se logra esto en VSCode?

En realidad es bastante sencillo, con Ctrl + T (por ejemplo, en Windows), o Go -> Go to Symbol en el espacio de trabajo..., escribes el nombre de la clase... ¡y listo!

Por ejemplo:

Esta solución fue mencionada por @Dmitry Maslennikov como una sugerencia para un informe de incidencias en GitHub (marcada como enhacement request, mejora del productopara este tipo de funciones - "Abrir la clase por su nombre desde el servidor".

Este es un breve GIF para demostrar cómo funciona:

 

0
0 974
Anuncio David Reche · mayo 6, 2021

¡Hola Comunidad!

ya está preparado el nuevo concurso de programación de InterSystems:

🏆 InterSystems FHIR Accelerator🏆

Envía una aplicación que utilice InterSystems FHIR-as-a-service en AWS o que ayude a desarrollar soluciones utilizando InterSystems IRIS FHIR Accelerator.

Estará activo durante cuatro semanas: del 10 de mayo al 6 de junio de 2021.

Total en premios: $8,750 


0
0 152
Artículo Ricardo Paiva · mayo 6, 2021 8m read

¡Hola, desarrolladores!

En este artículo mostraré cómo configurar un repositorio FHIR + configuración del servidor de autorización/de recursos OAuth2 en IRIS for Health, como continuación del artículo anterior.

En la Parte 1, presentamos los preparativos preliminares, configuramos el servidor de autorización OAuth2 y obtuvimos el token de acceso.
En la Parte 2, mostraremos cómo crear un repositorio FHIR y cómo configurar un servidor de recursos/cliente OAuth2.

La configuración del repositorio FHIR y del servidor de recursos/cliente OAuth2 que haremos hoy se pueden utilizar por separado de la instancia IRIS del servidor de autorización OAuth2 que configuramos en la parte 1 anterior, o pueden tener una ubicación conjunta en la misma instancia. En este artículo, vamos a configurarlo en la misma instancia.

Cómo crear el repositorio FHIR y especificar el nombre del cliente OAuth

En este documento se describe como crear un repositorio FHIR: “Como instalar y configurar un servidor FHIR”.

En la siguiente pantalla, después de crearlo, haza clic en la URL del endpoint /csp/healthshare/fhirserver/fhir/r4 para abrir la pantalla de la configuración.

En la pantalla de configuración, introduce el nombre de configuración del cliente OAuth2 que vas a crear en el campo OAuth Client Name. Si ya has configurado un cliente OAuth2, haz coincidir su nombre.

En este ejemplo, utilizaremos la cadena "FHIRResource". Para cambiarla, haz clic en el botón “Edit” de la pantalla anterior y, a continuación, haz clic en “Update” para guardar los cambios.

Configuración del cliente OAuth2

A continuación, vamos a crear la configuración del cliente OAuth2.

Ve a System Administration → Security → OAuth2.0 en el Portal de Administración y selecciona “Client” en lugar de “Server”, a diferencia de la parte 1 anterior.

En la siguiente pantalla, haz clic en “Create Server Description” para crear la configuración para conectarse al servidor de autorización OAuth2. imagen

Para el endpoint del emisor, la página Server Description introduce el endpoint del servidor de autorización que se configuró en la Parte 1.

A continuación se muestra la pantalla de configuración del servidor de autorización OAuth2 que se configuró en la Parte 1.

imagen

Para la configuración SSL/TLS, introduce la configuración SSL/TLS “SSL4CLIENT” creada en los preparativos de la Parte 1.

Después de introducir los elementos, ¡ejecuta “Discover and Save” para obtener la información del servidor de autorización OAuth2!

imagen

Si el acceso funciona, se mostrará la información obtenida, como se muestra a continuación. Tenga en cuenta que puede ocurrir un error durante este proceso si el certificado SSL que especifica el hostname que preparaste previamente en los preparativos de la Parte 1 no se crea correctamente y no se reconoce.

Atención: Incluso si estás utilizando el archivo docker-container DL en la parte 1 de esta serie, puedes tener problemas para acceder al IRIS container -> Apache container al especificar el hostname. En este caso, puedes resolver el problema introduciendo el hostname y la dirección IP de tu equipo en el archivo docker-compose.yml como extra_hosts, como se muestra a continuación.

  extra_hosts:
    - <yourhostname>:<your ip address>

imagen

imagen

Una vez que hayas guardado la configuración, haga cliz en “Save” para volver a la siguiente página, y después selecciona “Client Configuration” para crear la configuración del repositorio FHIR.

Cómo añadir la configuración del cliente en el cliente OAuth2

Es un título complicado, pero el siguiente paso es agregar la configuración del cliente (la información sobre el repositorio FHIR específico, la aplicación CSP, etc. que quieres conectar al servidor de autorización OAuth2 como un cliente OAuth2) a la configuración del cliente OAuth2 que acabas de crear (con información sobre el servidor de autorización OAuth2 al que conectar).

imagen

En la siguiente pantalla, haz clic en “Create Client Configuration” para mostrar la siguiente pantalla y establecer los elementos necesarios.

Si primero seleccionas client type = Resource Server, la pantalla de entrada será la misma que la siguiente.

Application NameFHIRResource: pon el valor que pusiste para "OAuth Client Name" en la configuración del Repositorio FHIR.
Client NameEs el nombre del cliente que se registrará en el servidor de autorización OAuth2. Puede ser el mismo que el nombre de la aplicación; sin embargo, hemos elegido un nombre diferente.
DescriptionIntroduce una descripción para esta configuración.
Type of clientSelecciona “Resource Server”.
SSL/TLS configurationEspecifica la configuración SSL/TLS que preparaste previamente en los preparativos de la Parte 1.

imagen

Después de completar el formulario, haz clic en el botón “Dynamic Registration and Save” para guardar y registrar el archivo en el servidor. Es un poco confuso, pero cuando el botón cambia de “Dynamic Registration and Save” a “Get Update Metadata and Save”, el registro ha salido bien.

Vamos a echar un vistazo a la información de la configuración del lado del servidor de autorización OAuth2 y comprobaremos si está registrado.

En la página Management Portal→System Administration→Security Management→OAuth2.0→Server, haz clic en “Client Description”, y verás que está registrado, como se muestra a continuación imagen

Confirma que el nombre es el que especificaste en el client name.

En la Parte 1, cuando probamos el acceso desde Postman, copiamos manualmente el ID del cliente y la clave privada que se muestra más abajo en la pantalla del descriptor del cliente. Sin embargo, esta vez, esta información se pasa al lado del cliente durante el proceso de registro dinámico.

Cómo acceder al repositorio FHIR desde Postman usando un token de acceso OAuth2

Por último, ¡es el momento de acceder a él desde Postman!

En primer lugar, necesitamos obtener un token de acceso. El método básico es el mismo que utilizamos al final de la Parte 1, pero necesitamos agregar un parámetro de audiencia para indicar dónde se emitirá el token de acceso.

aud=https://[hostname]/csp/healthshare/fhirserver/fhir/r4

Para añadirlo específicamente en Postman, añadelo como un parámetro a la URL del endpoint del Código de Autorización de la siguiente forma: (Debido a las limitaciones de la pantalla de Postman, no puedes ver todos los parámetros, pero incluye todos los de arriba aud=https://[hostname]/csp/healthshare/fhirserver/fhir/r4 )

Atención: No es necesario cambiar el Client ID y el Client Secret que pusiste en Postman a los emitidos anteriormente en el registro dinámico del servidor de recursos. Utiliza el Client ID y la clave secreta (Secret key) emitida para Postman que añadiste en la parte 1.

Después de obtener el token de acceso, copia su contenido.

En Postman, si dejas TYPE of Authorization como OAuth2, se activará una función para enviar el token de acceso. Sin embargo, en el repositorio FHIR de IRIS for Health, también es necesario enviar la información del usuario y la contraseña de la Basic Auth.

Para ello, al acceder desde Postman, el TYPE of Authorization (lo cual es un poco molesto) debe ser Basic Auth, se debe introducir el nombre de usuario y la contraseña, y se debe enviar el token de acceso como un Parámetro en la solicitud REST para el repositorio FHIR.

De manera detallada: primero, introduce el nombre de usuario y la contraseña como se muestra en la siguiente pantalla. Esta información de usuario se comprobará para ver si coincide con la información de usuario en el sub token de acceso; por eso, debe ser el mismo usuario que la información de usuario que introdujiste cuando obtuviste el token de acceso.

En la pestaña Params, para access_token, escribe el valor del token de acceso que acabas de introducir para el parámetro.

Si acabas de crear el repositorio FHIR, no hay datos en el repositorio, ¡pero puedes solicitar datos de pacientes!

Para la URL de la solicitud (Request URL), escribe https://[hostname]/csp/healthshare/fhirserver/fhir/r4/Patient, y selecciona GET como el método HTTP (como se muestra en la figura anterior).

¡Haz clic en el botón “Send” para enviar la solicitud! Si obtienes el paquete FHIR como se muestra a continuación, ¡has accedido al repositorio FHIR por medio del token de acceso!

Para obtener más información sobre cómo registrar y buscar datos en el repositorio FHIR, consulta la documentación de IRIS for Health y los artículos de la comunidad.

Documentación del Repositorio de recursos para IRIS for Health 2020.3.

¿Cómo fue tu experiencia al acceder al repositorio FHIR?

La configuración descrita en esta serie es la más sencilla. En un proyecto FHIR real, el alcance de los datos que van a ser devueltos dependerá del alcance aprobado por el usuario, y esto deberá ser considerado e implementado.

Os seguiremos informando sobre FHIR.

0
0 325
Artículo Ricardo Paiva · abr 29, 2021 16m read

¡Hola desarrolladores!

En este artículo, nos centraremos en OAuth2, un protocolo que se utiliza cada vez con más frecuencia en combinación con FHIR para realizar la autorización.

En esta primera parte, comenzaremos con el contenedor Docker para IRIS for Health y Apache, configuraremos la función del servidor de autorización OAuth2 en IRIS for Health, accederemos a él desde la herramienta de desarrollo Postman para REST y obtendremos un token de acceso. Además, en la Parte 2 y en las siguientes, añadiremos las funciones del repositorio FHIR a IRIS for Health, también agregaremos la configuración del servidor de recursos OAuth2, y explicaremos cómo ejecutar las solicitudes de FHIR utilizando los tokens de acceso desde Postman.

En la Comunidad de Desarrolladores ya se han publicado varios artículos excelentes donde se explican las funciones de OAuth2 en los productos de InterSystems; sin embargo, me gustaría explicar nuevamente cómo configurar la última versión. Cómo implementar la estructura de InterSystems IRIS Open Authorization (OAuth 2.0) - Parte 1

En este artículo, utilizaremos la última versión de InterSystems IRIS for Health 2020.3 (es una versión de prueba). Si quieres desarrollar un entorno basado en este artículo, asegúrate de utilizar esta versión o una posterior del kit. Algunas características no están incluidas en los productos anteriores a esta versión.

Preparativos preliminares

El primer paso es hacer unos preparativos preliminares. Son muchas las cosas que deben prepararse para crear un entorno seguro.

La versión de prueba de IRIS for Health 2020.3 solo está disponible en una versión para el contenedor Docker (InterSystems Docker Hub/IRIS for Health). Para efectuar la configuración de OAuth2, también deberás realizar la configuración del servidor web y de SSL. En este artículo, utilizaremos Apache. Al realizar la configuración de SSL en Apache, el certificado de configuración de SSL debe coincidir con el nombre del servidor. Ten en cuenta este punto.

Cómo obtener los archivos de muestra del repositorio intersystems-jp de GitHub

El archivo docker-compose.yml/Dockerfile y otros archivos de muestra utilizados en esta configuración están disponibles en el repositorio de GitHub reservado para la Comunidad de Desarrolladores de InterSystems. En primer lugar, descomprime este archivo en tu entorno utilizando el siguiente comando. (También puedes hacerlo desde el archivo adjunto que se encuentra en este artículo). Este archivo docker-compose.yml/Dockerfile y otros archivos se crean tomando como referencia la aplicación iris-webgateway-example publicada en OpenExchange.

git clone https://github.com/Intersystems-jp/IRIS4H-OAuth2-handson.git

Cómo cambiar la configuración para que coincida con el kit que se está utilizando

En este archivo docker-compose.yml, se configuran dos contenedores para iniciarse: el contenedor de IRIS for Health y el contenedor de Apache (httpd) se crearán por el comando docker build. El archivo docker-compose.yml, disponible en GitHub, hace referencia a la versión de prueba 2020.3.200.0 de la Community Edition de IRIS for Health. La Community Edition puede utilizarse para evaluar los productos de InterSystems.

iris:
    image: store/intersystems/irishealth-community:2020.3.0.200.0

Si utilizas una versión diferente (la versión oficial o una más reciente), cambia esta parte de la especificación.

El contenedor Apache se creará con el contenido del Dockerfile, que requiere un kit WebGateway para conectarse a IRIS desde Apache. Para saber cómo conseguir el kit, contacta con el Centro de Soporte Internacional (WRC) de Intersystems. Para consultas sobre el SO del servidor, puedes ponerte en contacto con nosotros en esta dirección.

Modifica las siguientes partes del Dockerfile según el producto que hayas obtenido. Independientemente del SO del servidor (Windows/Ubuntu/CentOS), la plataforma será lnxubuntux64 porque el SO base del contenedor httpd es Debian.

ARG version=2020.3.0.200.0 
ARG platform=lnxubuntux64
ADD WebGateway-${version}-${platform}.tar.gz /tmp/

Cómo preparar un certificado SSL

En el siguiente paso, se prepara un certificado SSL. Cuando se accede a la autorización OAuth2, debe comprobarse si el certificado SSL establecido en el servidor web coincide con la URL a la que se tiene acceso. No es necesario utilizar un certificado oficial, es posible utilizar OpenSSL, etc. Introduce el nombre del servidor en el campo "Common Name" al crear el certificado.

Además, como el certificado que acabas de crear se cargará automáticamente durante el arranque, debes cambiar el archivo por uno que no requiera una contraseña. Consulta el siguiente comando.

$ openssl rsa -in cert.key.org -out cert.key

Coloca los archivos CRT y KEY que se crearon, en el mismo directorio con el Dockerfile, con los nombres de archivo server.crt / server.key respectivamente.

Además de utilizarlo con el servidor web Apache, necesitarás un certificado SSL para la configuración de OAuth2. Estos no requieren que introduzcas un nombre de servidor, etc., pero debes crear tres conjuntos (En las configuraciones posteriores, aparecen como auth.cer/auth.key, client.cer/client.key, resserver.cer/resserver.key).

Cómo crear e iniciar un contenedor docker

¡Ya estás listo! Además de los cuatro archivos que descargaste, ahora tienes un kit de instalación Web Gateway y dos certificados SSL en tu directorio. Ten cuidado con los permisos de acceso y ejecución de cada archivo (por ejemplo, yo añadí el permiso de ejecución para webgateway-entrypoint.sh).

docker-compose build
docker-compose up -d

Una vez iniciado, utiliza el comando docker ps para verificar que los dos contenedores están en ejecución.

Apache Container name:<directoryname>_web
IRIS for Health container name:store/intersystems/irishealth-community:2020.3.0.200.0(or other name depend on kit)

Ahora, intenta acceder al portal de administración mediante alguna de estas tres formas. Si el tercer método funciona, ¡tu configuración SSL a través del servidor web Apache es un éxito!

http://[hostname]:52773/csp/sys/UtilHome.csp :A esta URL se accede a través del servidor Apache privado en el contenedor IRIS. Este no pasa por el Apache que se configuró.

http://[hostname]/csp/sys/UtilHome.csp :Esta URL accede al portal de administración a través del Apache que se configuró.

https://[hostname]/csp/sys/UtilHome.csp :Esta URL accede al Portal de administración utilizando una conexión SSL a través del Apache que se configuró.

Cómo crear una configuración SSL

Ahora que IRIS for Health está listo y en funcionamiento, y tenemos acceso al Portal de administración, vamos a crear la configuración SSL para los últimos preparativos.

Ve a Management Portal -> System Administration -> Security -> SSL/TLS Configuration y crea tres configuraciones SSL utilizando los tres pares de certificado/llave que preparaste.

Puedes seleccionar el nombre que quieras, pero en este artículo utilizaremos SSL4AUTH/SSL4CLIENT/SSL4RESSERVER, siguiendo los artículos anteriores relacionados con OAuth2.

imagen

*Acerca de compartir directorios entre servidores y contenedores

En la siguiente especificación de volúmenes que se encuentra en el archivo docker-compose se muestra la ubicación actual del directorio host = /ISC en el contenedor. Utiliza este directorio cuando especifiques el archivo del certificado en la configuración anterior, etc.

    volumes:
      - .:/ISC

Este directorio no solo contendrá archivos, sino también archivos de la base de datos IRIS y archivos de la configuración. Consulta el documento “Persistencia de %SYS para almacenar datos de instancias persistentes” para obtener más información.

Cómo configurar OAuth2 en IRIS for Health

¡Ahora es el momento de entrar en los detalles del acceso a IRIS for Health utilizando OAuth2!

Configuración del servidor de autorización OAuth2

Primero, vamos a configurar el servidor de autorización OAuth2. Ve a Management Portal → System Administration → Security → OAuth 2.0 → Server.

Sigue estas instrucciones para ajustar la configuración.

Configuración en la pestaña “General”
Issuer endpoint: Host nameEscribe el nombre actual del servidor
Issuer endpoint: PrefixPuedes escribir cualquier valor que quieras, pero aquí lo establecimos como “authserver”.
Supported grant typesEn este artículo, solo utilizaremos “Authorization Code”, pero si quieres probar otros “Grant Types”, añade una marca de verificación. Además, añade una verificación a la “JWT authorization”
SSL/TLS configurationEspecifica la configuración SSL que acabas de añadir.

imagen

En la pestaña “Scopes", haz clic en “Add Supported Scope” para añadirlos. Más adelante, la pantalla de inicio de sesión del Código de Autorización mostrará la “Descripción” que escribiste aquí.

imagen

No hagas cambios de la configuración predeterminada en la pestaña “Intervals". En la pestaña “JWT Settings”, seleccionaremos “RS512” como el algoritmo de firma.

imagen

En la última pestaña de “Customization”, cambia la especificación Generate Token Class a %OAuth2.Server.JWT.

imagen

Una vez que hayas introducido la información, haz clic en el botón “Save” para guardar la configuración.

Ahora que tienes la configuración necesaria para que IRIS for Health se ejecute como un servidor de autorización de OAuth2, ¡estás listo para probarlo! ¡Intentaremos acceder desde Postman y veremos si podemos obtener un token de acceso!

Sin embargo, antes de hacer eso, necesitamos configurar dos cosas más.

Añadir la descripción del cliente

En primer lugar, añade la información de Postman para acceder como un cliente de OAuth2. El registro de clientes de OAuth2 se puede añadir por medio del registro dinámico u otros métodos.

Haz clic en “Client Description” en la página de configuración del servidor para continuar.

imagen

Haz clic en “Create Client Description” para añadir una entrada.

Sigue estas instrucciones para crear una suscripción de cliente.

Configuración en la pestaña “General”
NameEscribe el nombre que quieras. En este caso, hemos elegido “postman”.
Client TypeElige “Confidential”
Redirect URLsHaz clic en el botón “Add URL” para añadir una URL de redirección para Postman. https://www.getpostman.com/oauth2/callback como la URL de redirección para Postman.
Supported grant typesEspecifica el mismo “Authorization Code” (Código de autorización) configurado en la configuración del servidor de autorización de OAuth2. (Predeterminado) Añade una marca si quieres probar también otros tipos de permisos. Sin embargo, la configuración debe ser la misma que la del servidor de autorización. Además, marca la casilla “JWT authorization”. Especifícalo aquí
Authenticated Signing AlgorithmMarca la opción "Autorización JWT" en Supported grant Types para que se pueda seleccionar. Selecciona “RS512”.

imagen

Una vez que hayas introducido la información, haz clic en el botón “Save” para guardar la descripción del cliente.

Haz clic en la pestaña “Client Credentials” para ver el client ID y la clave privada del cliente para esta entrada. Necesitarás este ID y la clave privada cuando realices las pruebas desde POSTMAN.

imagen

Añadir una aplicación web

Es necesario agregar una configuración más antes de acceder desde POSTMAN. La pantalla de configuración del servidor de autorización OAuth2 ha determinado que el endpoint para esta configuración es https://<hostname>/authserver/oauth2. Para que el acceso a este endpoint sea administrado correctamente por IRIS, necesitamos añadir una aplicación web para esta ruta de URL.

Ve a System Administration→Security→Applications→Web Applications, y haz clic en “Create a new web application”.

imagen

Se proporciona una plantilla de aplicación web OAuth2, así que primero, selecciona “/oauth2” desde “Copy from”.

Configuración de “Edit Web Application”
Copy From“/oauth2” : Siempre selecciona este primero desde el menú desplegable.
Name/authserver/oauth2
EnableMarca el botón de la opción “REST”.

Después de introducir cada valor, guárdalo.

imagen

Cómo probar OAuth2 desde POSTMAN

Lo vamos a probar desde POSTMAN. Las pruebas también se pueden ejecutar desde otras herramientas o desde el propio programa. La explicación detallada de POSTMAN va más allá del alcance de este artículo, pero cabe señalar que la verificación del certificado SSL debe cambiar a OFF en la configuración de POSTMAN.

Después de crear una nueva solicitud en POSTMAN, selecciona “OAuth 2.0” en la pestaña TYPE of Authorization y haz clic en “Get New Access Token”.

En la siguiente pantalla, introduce los valores según lo siguiente.

Configuración「GET NEW ACCESS TOKEN」
Token NameEscriba el nombre que quieras.
Grant TypeSelecciona “Authorization Code”.
Callback URLhttps://www.getpostman.com/oauth2/callback
Auth URL"https://<hostname>/authserver/oauth2/authorize" Introduce el valor del endpoint +/"authorize". Al añadir "? ui_locales=ja", puedes mostrar la pantalla de inicio de sesión en japonés.
Auth Token URLhttps:///authserver/oauth2/token. Introduce el valor del endpoint +/"token".
Client IDIntroduce el client ID que aparece en la pestaña de Client Credentials después de registrarte para la descripción del cliente.
Client SecretIntroduce la clave privada del cliente, que se muestra en la pestaña Client Credentials después de registrar la descripción del cliente.
ScopeIntroduce el scope registrado en la configuración del servidor de autorización, por ejemplo, “scope1”. También puedes especificar varios scopes separados por espacios.
StateIntroduce el parámetro State, que se utiliza para las medidas contra el CSRF. No se utiliza explícitamente, pero no se puede dejar en blanco, por lo que se introduce una cadena arbitraria.

Después de introducir los parámetros y hacer clic en el botón “Request Token”, verás la pantalla de inicio de sesión:

imagen

Intenta iniciar sesión con la información del usuario (por ejemplo, _SYSTEM) con acceso al Portal de administración.

En la siguiente pantalla después del inicio de sesión, puedes decidir conceder permisos a esta aplicación. Después de hacer clic en “Allow”, si el token de acceso aparece en la siguiente pantalla, como se muestra a continuación, ¡la prueba de adquisición del token de acceso se realizó con éxito!

Cómo probar OpenID Connect

IRIS for Health puede llevar a cabo el procesamiento de autorización de OAuth2, así como el procesamiento de autenticación compatible con OpenID Connect. Consulta este documento para obtener más información.

En esta configuración, OpenID Connect está habilitado, ¡así que vamos a probar si también podemos obtener el token de ID de OpenID Connect!

Es fácil de implementar. En la pantalla GET NEW ACCESS TOKEN, añade “openid” al scope y realiza una solicitud.

OpenID Connect también se mostrará en la página de solicitud de autorización. Después de que hayas iniciado sesión y hayas dado tus permisos, asegúrate de obtener también un token de identificación (id_token) cuando veas la siguiente pantalla. (Es posible que necesites desplazarse hacia abajo por la pantalla.)

¿Pudiste obtener el token de acceso y el id_token?

Aunque hay algunos preparativos, como los certificados que requieren un poco de tiempo y esfuerzo, podríamos construir un servidor de autorización OAuth2 muy sencillo utilizando IRIS for Health.

En el siguiente artículo de esta serie, finalmente os mostraré cómo crear un repositorio FHIR y registrarlo como un servidor de recursos OAuth2. Y también cómo acceder con REST al repositorio FHIR por medio de un token de acceso OAuth2 desde POSTMAN.

0
0 428
Pregunta Dani Fibla · abr 27, 2021

Tengo una duda referente al Visual Studio Code,  el Studio del Iris permite hacer debug de cualquier business operation/proces que este en la producción añadiendo el proceso que se le haya asignado dentro de las opciones Debug(Attach), al reenviar un mensaje que entre dentro de esta operación/proceso se parará en nuestro punto de interrupción.

¿Como puedo conseguir esto con el Visual Studio Code?

He revisado varios pluggins para hacer debug pero he sido incapaz de conseguirlo.

4
0 333