#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 Jose-Tomas Salvador · jun 6, 2024 2m read

Al desarrollar una nueva Producción de Interoperabilidad, es bastante natural que los parámetros se añadan inicialmente en la Producción.

Sin embargo, en cuanto queréis mover la Producción de desarrollo a un entorno de prueba o staging, queda claro que algunos parámetros de configuración como Servidores HTTP, direcciones IP y/o puertos necesitan ser cambiados. Para evitar que estos parámetros se sobrescriban durante un redepliegue posterior, es esencial que mováis estos parámetros de la Producción a los Parámetros Predeterminados del Sistema.

Crear Parámetros Predeterminados del Sistema manualmente es posible, pero se vuelve complicado cuando tenéis muchos Componentes de Negocio en vuestra producción. Por lo tanto, @Wietze Drost pidió a @Theo Stolker desarrollar una herramienta que automatice este proceso permitiendo especificar qué parámetros o configuraciones deben crearse como Predeterminadas del Sistema usando una expresión de filtro. Esta expresión puede definirse como ":HTTPServer,SSLConfig", donde " * " significa "para cualquier Nombre de Clase de host". Después de los dos puntos, sigue una lista de parámetros a mover. Así, esta expresión significa "crear o actualizar Parámetros Predeterminados del Sistema para todos los parámetros que se denominen 'HTTPServer' y 'SSLConfig'". Podéis definir múltiples expresiones de filtro separadas por un punto y coma, por ejemplo, ":HTTPServer,SSLConfig;FullClassName2:xxx,yyy".

Basándome en su solicitud, escribí el Método de Clase o Class Method denominado GetSettingsFromProduction, que hace precisamente eso:

ClassMethod GetSettingsFromProduction(production As %String, filter As %String = "", removeFromProduction As %Boolean = 0, updateSettings As %Boolean = 1) As %Status

production - El nombre de la producción, si se deja en blanco se usará el nombre de la producción que se está ejecutando actualmente. filter - Un filtro para seleccionar parámetros, como "*:HTTPServer,SSLConfig". Podéis añadir múltiples filtros separados por ";", y se permite usar nombres de clases específicos. Si el filtro se deja en blanco, se procesarán todos los parámetros. removeFromProduction - Si se establece en 1, los parámetros de configuración seleccionados por el filtro se eliminarán de la producción. updateSettings - Si se establece en 0, los parámetros de configuración no se actualizarán en los Parámetros Predeterminados del Sistema.

Al ejecutarse, se escribirá información sobre las acciones tomadas en la terminal.

¡Vuestras preguntas y comentarios son bienvenidos!

0
0 115
InterSystems Official Mario Sanchez Macias · jun 4, 2024

A partir del lanzamiento de la plataforma de datos InterSystems IRIS® 2022.3, InterSystems corrigió el mecanismo de aplicación de licencias para incluir solicitudes REST y SOAP. Debido a este cambio, los entornos con licencias no basadas en core que utilizan REST o SOAP pueden experimentar una mayor utilización de licencias después de la actualización. Para determinar si este aviso se aplica a vuestra licencia de InterSystems seguid las instrucciones de las preguntas frecuentes enlazadas a continuación.

Este cuadro resume la aplicación de la normativa

0
0 140
Artículo Jose-Tomas Salvador · jun 3, 2024 1m read

Añadid una credencial para iniciar sesión en la interfaz REST de FHIR - en este caso considerad sólo una autenticación básica

 

Añadid Registro de Servicios - en este caso considerad sólo una autenticación básica

- Configurad un servicio HTTP

- Introducid la ruta al servidor FHIR

- Introducid la URL del servicio FHIR

- Usad la credencial añadida previamente 

 

Añadid una "HS.FHIRServer.Interop.HTTPOperation"

Elegid el Nombre del Servicio

Probad el cliente FHIR

Rastread/seguid el resultado de la prueba

0
1 121
Artículo Carlos Castro · mayo 19, 2024 10m read

Buenas a todos,

en capítulos anteriores, vimos como "Como controlar el acceso a tus recursos con OAuth2". En este primer artículo explicábamos como preparar un acceso seguro a nuestros recursos utilizando la potente herramienta que nos ofrece Intersytems del servidor de Autenticación. Al finalizar el mismo, comentábamos que si quisiéramos podríamos aplicar un control extra a este acceso y esto nos lleva a este artículo, por lo que seguiremos el siguiente índice:

1.- Introducción

   1.1..- De donde venimos

2.- Problema

   2.1.- ¿Cómo funciona la llave (Token)?

3
0 224
Artículo Ricardo Paiva · mayo 28, 2024 1m read

Principio: Tras dividir el artículo cargado por el usuario en frases mediante Python, se obtiene el valor incrustado y se almacena en la base de datos Iris. A continuación, la similitud entre las frases se compara a través de la búsqueda vectorial Iris, y finalmente se muestra en la página front-end.

0
0 86
Artículo Daniel Aguilar · mayo 19, 2024 4m read

   

📜 Santa Tecla, versículo 8: "Extiende tu ratón sobre la pantalla, y el mar de datos abrirá un sendero delante de ti!!"

Hola comunidad, lo primero perdón si a alguien le ha ofendido la blasfemia 😔 

¿Alguna vez has pensado que sería interesante tener separado el código fuente de los datos de la base de datos?. Quizás te gustaría poder hacer copias de seguridad de tu código sin tener que copiar gigas de información de los datos de tus clientes.

A continuación os explico los pasos para separar en 2 bases de datos distintas vuestro mar formado por el código fuente y los datos de un namespace.

0
1 199
InterSystems Official Mario Sanchez Macias · mayo 17, 2024

InterSystems se complace en anunciar la disponibilidad general de

  • InterSystems IRIS Data Platform 2024.1.0.267.2
  • InterSystems IRIS for Health 2024.1.0.267.2
  • HealthShare Health Connect 2024.1.0.267.2

Esta versión añade compatibilidad con el sistema operativo Ubuntu 24.04.  Ubuntu 24.04 incluye Linux kernel 6.8, mejoras de seguridad, junto con mejoras en el instalador y en la interfaz de usuario.  InterSystems IRIS IntegratedML aún no está disponible en Ubuntu 24.04.

Además, esta versión soluciona dos defectos para todas las plataformas

0
0 104
Artículo Ricardo Paiva · mayo 15, 2024 3m read

Configuración de producción

Esta demostración tiene una producción de interoperabilidad con 16 elementos.

Configuración de producción HL7 + Kafka Producer

La primera parte de esta demostración consiste en enviar un archivo HL7 SIU que será transmitido a los otros 2 flujos HL7 (HTTP y TCP), y transformado y transmitido al servidor Kafka. Los flujos HTTP y TCP transformarán los mensajes HL7 del mismo modo antes de enviarlos también a Kafka.

  • 3 Servicios HL7
  • 1 Enrutador HL7
  • 2 Operaciones HL7
  • 1 Operación de Negocio que envía los mensajes transformados a Kafka

Reglas de negocio

0
0 147
Artículo Alberto Fuentes · mayo 15, 2024 4m read

La documentación de IKO es robusta. Una única página web, que consta de unas 50 páginas reales de documentación. Para los principiantes eso puede ser un poco abrumador. Como dice el refrán: ¿cómo se come un elefante? Mordisco a mordisco. Empecemos con el primer bocado: Helm.

¿Qué es Helm?

Helm es a Kubernetes lo que el InterSystems Package Manager (IPM, antes ObjectScript Package Manager - ZPM) es a IRIS.

0
0 76
InterSystems Official Jose-Tomas Salvador · mayo 13, 2024

Se ha publicado una versión preliminar actualizada para desarrolladores de InterSystems IRIS 2024.2 e InterSystems IRIS for Health 2024.2 en el sitio de versiones preliminares para desarrolladores del WRC.  Esta versión contiene algunos cambios dignos de mención:

0
0 103
Artículo Luis Angel Pérez Ramos · mayo 8, 2024 2m read

Hola a todos,

Cuando estamos diseñando un BP que necesita ser reutilizado, a menudo necesitamos desarrollar un componente con un objeto <call> configurable, donde establecemos el destino de la llamada al objeto.

@process.TargetConfigName

Sí, se puede lograr.

Aquí está el código completo:

2
0 119
Artículo Ricardo Paiva · mayo 8, 2024 1m read

Preguntas Frecuentes de InterSystems

Si necesita migrar su servidor por algún motivo, se puede reducir el trabajo de configuración del nuevo entorno. Bastará copiar la información de configuración del entorno previo al nuevo entorno. 

Se puede migrar la siguiente información de configuración.

  • iris.cpf
  • configuración del SQL gateway 
  • configuración del web gateway *Nota 1
  • rutinas de usuario, etc... almacenadas en la base de datos IRISSYS *Nota 2
  • configuración de seguridad 
  • configuración de tareas
0
0 106
Artículo Alberto Fuentes · mayo 7, 2024 2m read

InterSystems ha trabajado estrechamente con el equipo de Red Hat Insights para implementar un conjunto de recomendaciones dirigidas a los administradores de sistemas con el fin de garantizar la mejor experiencia de uso de InterSystems IRIS en Red Hat Enterprise Linux (RHEL). Incluido en todas las suscripciones a RHEL, el servicio Insights identifica de forma proactiva los problemas potenciales de las plataformas y aplicaciones supervisadas que se ejecutan en RHEL. A través de nuestra colaboración conjunta, Insights ahora vigila los escenarios comunes que disminuyen el rendimiento de IRIS en la

0
0 112
InterSystems Official Mario Sanchez Macias · mayo 6, 2024

Alerta: La consulta SQL que utiliza "NOT %INLIST" no devuelve resultado

InterSystems ha corregido un problema que puede provocar que un pequeño número de consultas SQL devuelvan resultados incorrectos. Consultad a continuación los detalles de las consultas afectadas

Este problema existe en las versiones enumeradas de los siguientes productos

  • InterSystems IRIS® data platform
  • InterSystems IRIS for Health
  • HealthShare® Health Connect

Así como en:

  • Otros productos InterSystems basados en los productos mencionados arriba. 

Versiones impactadas:

0
0 124
Artículo Luis Angel Pérez Ramos · mayo 3, 2024 6m read

En nuestro artículo anterior presentábamos los conceptos generales así como la problemática que queríamos resolver mediante el uso del motor de tareas integrado en InterSystems IRIS, en el artículo de hoy veremos como configuramos una producción de interoperabilidad para proveer una solución.

Configuración del motor de Workflow

Primeramente vamos a definir los roles de las tareas que vamos a manejar, en nuestro ejemplo vamos a definir dos tipos:

0
0 170
Artículo Ricardo Paiva · mayo 2, 2024 2m read

Preguntas frecuentes de InterSystems

Este error ocurre cuando una instancia de la clase ya está abierta en el momento de la compilación.

Hay dos formas de abordar este problema:

  1. Terminar el proceso o aplicación que tiene la instancia abierta
  2. Opciones de compilación en el menú de compilación de Studio: marque el indicador de compilación "Compilar clases en uso" y compile.

Si desea determinar qué proceso está utilizando la clase, pruebe la rutina de ejemplo siguiente.

0
0 106
InterSystems Official Jose-Tomas Salvador · abr 29, 2024

Ya están disponibles las versiones de mantenimiento 2022.1.5 y 2023.1.4 de InterSystems IRIS, IRIS for Health y HealthShare HealthConnect

Ya están disponibles dos versiones de mantenimiento ampliado de InterSystems IRIS, InterSystems IRIS for Health y HealthShare Health Connect.

2022.1.5

La versión 2022.1.5 proporciona correcciones de errores para cualquiera de las versiones anteriores a 2022.1.x.

Podéis encontrar listas detalladas de cambios y listas de comprobación de actualizaciones en estas páginas:

2023.1.4

0
0 102
Artículo Luis Angel Pérez Ramos · abr 29, 2024 6m read

Desde hace un tiempo tenía pendiente hacer algún tipo de prueba de concepto con la funcionalidad de Workflow, la cual, como tantas otras funcionalidades presentes en IRIS, suele pasar bastante desapercibida para nuestros clientes (y por lo cual entono el mea culpa). Por ello me decidí hace unos días a desarrollar un ejemplo de cómo configurar y explotar esta funcionalidad conectándola con una interfaz de usuario desarrollada en Angular.

0
1 176
InterSystems Official Jose-Tomas Salvador · abr 12, 2024

La primera versión preliminar para desarrolladores de InterSystems IRIS 2024.2 e InterSystems IRIS for Health 2024.2 se ha publicado en el sitio de versiones preliminares para desarrolladores del WRC. Los contenedores no están disponibles para esta versión preliminar, pero nos aseguraremos de publicarlos la próxima vez.

Esta es la primera vez en el ciclo de lanzamiento que hemos publicado una versión preliminar para desarrolladores y no hay ninguna característica digna de destacar que esté completa. Las iré listando a medida que se vayan completando en futuras versiones preliminares.

0
0 102
Artículo Ricardo Paiva · mar 4, 2022 11m read

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

En ese artículo revisamos cómo crear y definir mensajes que se utilizan para enviar y recibir datos entre componentes.

En este artículo, explicaré cómo crear una business operation a partir de los métodos para crear componentes.

Revisaremos rápidamente el código al referirnos a la muestra.。

imagen

Nombre del componenteFunción
Start.FileBSUn servicio (BS) que utiliza el adaptador para la entrada de archivos para leer los archivos ubicados en un directorio específico a intervalos regulares.
Start.NonAdapterBSServicios (BS) que permiten a las aplicaciones y a los usuarios introducir información directamente sin utilizar un adaptador.
Start.WS.WebServiceBSServicios (BS) que permiten introducir información mediante servicios web.
Start.WeatherCheckProcessUn proceso (BP) que controla el procedimiento para adquirir información meteorológica y después registrarla en una base de datos.
Start.GetKionOperationLa operación (BO) para transmitir del nombre de la ciudad al servicio web que proporciona la información meteorológica y la devuelve.
Start.SQLInsertOperationOperaciones (BO) que utilizan adaptadores de salida SQL para solicitar el registro de la información meteorológica y de la compra en la base de datos.
Start.InsertOperationOperaciones (BO) que realizan actualizaciones en las tablas de InterSystems IRIS sin utilizar adaptadores.

Nota: BS significa "Business Service", BP significa "Business Process" y BO significa "Business Operation".

Hay que escribir ObjectScript en Business Services y Business Operations y se pueden crear en VSCode o en Studio. Los Business Processes también se pueden llevar a cabo en el Portal de Administración.

No hay un orden particular para crearlos, pero el sitio externo al que se conectará es un sitio público y puede utilizarse inmediatamente en este ejemplo. En este caso, es conveniente comenzar con la business operation para que las pruebas sean más fáciles.

Después de crear los componentes, hay una página de prueba en la producción para los business processes y las business operations. Sin embargo, las pruebas están desactivadas de forma predeterminada en la definición de la producción, para evitar pruebas aleatorias en el entorno de producción.

Para saber más sobre cómo permitir las "Pruebas activadas" en la producción, utiliza la siguiente configuración (la producción de muestra se ha configurado como "Pruebas activadas" de forma anticipada):

imagen

1) Business Operations

En el ejemplo, aparecen dos tipos de business operations.

Una de las operaciones consiste en transmitir el nombre de la ciudad a una API web externa mediante REST y solicitar que se obtenga la información meteorológica. La otra operación consiste en dar la información meteorológica y el nombre del producto comprado a la base de datos de InterSystems IRIS y solicitar el proceso actualizado.

1)-1 Business Operations de REST

Comencemos creando una operación que llame a una API web externa por medio de REST.

Esta operación inicia el método GetKion() cuando se introduce un mensaje Start.Request, consulta a un sitio externo y devuelve la información meteorológica en un mensaje Start.Response.

Consulta aquí los detalles del código.

Para crear una business operation para REST, deberá heredarla de EnsLib.REST.Operation.

Class Start.GetKionOperation Extends EnsLib.REST.Operation

La herencia de esta clase ofrece los siguientes métodos en IRIS que coinciden con los métodos de HTTP. Consulta la documentación para obtener más información.

  • GetURL(): se utiliza para las operaciones GET de HTTP.
  • PostURL(): se utiliza en las operaciones POST de HTTP.
  • PutURL(): se utiliza en las operaciones PUT de HTTP.
  • DeleteURL(): se utiliza en las operaciones DELETE de HTTP.

Para REST, utiliza el adaptador EnsLib.HTTP.OutboundAdapter. Establece el nombre del adaptador en el parámetro ADAPTER y la propiedad Adapter, como se muestra en el ejemplo.

El parámetro INVOCATION configura la Fila.

Parameter ADAPTER = "EnsLib.HTTP.OutboundAdapter";

Property Adapter As EnsLib.HTTP.OutboundAdapter;

Parameter INVOCATION = "Queue";

Es necesario especificar la clave de la API OpenWeather que se obtendrá en el momento de la ejecución. Hay una forma de mostrar la configuración que varía según el entorno en la configuración de la producción.

El procedimiento es el siguiente:

  1. Define las propiedades
  2. Especifica el nombre de la propiedad que se creó en el parámetro SETTINGS (si hay varias propiedades, sepáralas con comas). De manera opcional, también se puede especificar una categoría (utilizando “property name: category name”).

A continuación se muestra un código de ejemplo.

/// APIキーを指定します
Property appid As %String;
/// specify lang option for OpenWeather API (default = ja = japanese)
Property lang As %String [ InitialExpression = "ja" ];

Parameter SETTINGS = "lang:OpenWeatherMap,appid:OpenWeatherMap";

La página de Configuración de la producción se muestra lo siguiente. La descripción que aparece en la línea inmediatamente anterior a la definición de la propiedad también se muestra en la página de configuración de la producción, como se muestra en la figura.

imagenDespués, revisaremos el mapa de mensajes, que es un escenario esencial para business operations.

La definición anterior permite que el método GetKion() funcione cuando se envíe el mensaje Start.Request.

En el método GetKion(), el nombre de la ciudad puede obtenerse a partir de la propiedad Area para solicitar mensajes transmitidos como información de entrada.

Estableciendo el nombre de la ciudad como parámetro de la URL publicada por la API web externa y llamándolo, se puede obtener la información meteorológica.

La configuración del servidor HTTP y de la URL se realiza en la página de Producción del Portal de Administración. Para obtener la configuración, utiliza la propiedad del Adapter que le proporciona el adaptador de salida de HTTP.

Ejemplo) para especificar una URL, utiliza ..Adapter.URL

Utiliza el método GetURL() que proporcionan las business operations de REST para llamar a un sitio externo. El primer parámetro es la URL que se ejecutará (es decir, la URL que se especifica en los parámetros requeridos como el nombre de la ciudad). El segundo parámetro es la respuesta de HTTP con parámetros transmitidos como referencia.

Como la información meteorológica se almacena en formato JSON en la respuesta HTTP, la operación se completa cuando los datos se registran en el mensaje de respuesta (=pResponse).

imagenEl nombre de la clase de los mensajes de respuesta se especifica en el segundo parámetro del método creado cuando se transmite la referencia.

Method GetKion(pRequest As Start.Request, Output pResponse As Start.Response) As %Status

Para devolver un mensaje de respuesta a la persona que lo llama, crea una instancia del mensaje de respuesta, almacénalo en la segunda variable del parámetro (pResponse), y establece la información necesaria en las propiedades.

set pResponse.AreaDescription=weatherinfo.weather.%Get(0).description
set pResponse.KionMax=weatherinfo.main."temp_max"
set pResponse.KionMin=weatherinfo.main."temp_min"
set pResponse.Area=weatherinfo.name
// this code is fit to Japan time because weatherinfo.dt is UTC
set unixEpochFormat=weatherinfo.dt+32400
set dt=$system.SQL.Functions.DATEADD("s",unixEpochFormat,"1970-01-01 00:00:00")
set pResponse.AreaPublicTime=dt

Como las respuestas HTTP de los sitios externos se devuelven en formato JSON, el flujo que podría obtenerse de la respuesta HTTP se utiliza para convertirla en un objeto dinámico que sea cómodo para llevar a cabo operaciones JSON dentro de IRIS.

set weatherinfo={}.%FromJSON(tHttpResponse.Data)

El siguiente es un ejemplo de una cadena JSON de respuesta:

{
    "coord": {
        "lon": 135.5022,
        "lat": 34.6937
    },
    "weather": [
        {
            "id": 803,
            "main": "Clouds",
            "description": "broken clouds",
            "icon": "04d"
        }
    ],
    "base": "stations",
    "main": {
        "temp": 11.38,
        "feels_like": 8.33,
        "temp_min": 11,
        "temp_max": 12.22,
        "pressure": 1007,
        "humidity": 62
    },
    "visibility": 10000,
    "wind": {
        "speed": 2.57,
        "deg": 220
    },
    "clouds": {
        "all": 75
    },
    "dt": 1611820991,
    "sys": {
        "type": 1,
        "id": 8032,
        "country": "JP",
        "sunrise": 1611784750,
        "sunset": 1611822143
    },
    "timezone": 32400,
    "id": 1853909,
    "name": "Osaka",
    "cod": 200
}

La temperatura máxima, mínima y el tiempo se pueden obtener de la siguiente manera:

set pResponse.AreaDescription=weatherinfo.weather.%Get(0).description
set pResponse.KionMax=weatherinfo.main."temp_max"
set pResponse.KionMin=weatherinfo.main."temp_min"

Si quieres saber más sobre la manipulación de JSON en IRIS, consulta la documentación.

Ahora, utilizaremos la herramienta para realizar pruebas de producción para ver si podemos obtener la información meteorológica de forma correcta.

Abre la página de Producción (Management Portal> Interoperability> Configuration> Production), haz clic en Start.GetKionOperation y, a continuación, haga clic en el botón "Test" en la pestaña "Action".

Especifica un nombre de ciudad (Naha, Sapporo, Nagano, Shinjuku, etc.) en Area, y haz clic en el botón “Run Test Service”.

Aquí puedes ver los resultados de la prueba, con las temperaturas máximas y mínimas y el tiempo registrado.

imagenContinúa para saber cómo utilizar la página Trace.

imagenAl seleccionar un rectángulo horizontal como image en la pantalla izquierda hace que la información en la pantalla derecha, se modifique.

Los mensajes que se envían y reciben durante el proceso de integración del sistema se guardan automáticamente en la base de datos. Mediante la página de mensajes de Visual Trace, se puede ver en detalle qué mensajes se enviaron a qué componentes en orden cronológico y si hubo respuesta o no.

Además, si se produce un error

"Se produjo un error al enviar/recibir/recibir □ mensaje al componente de ○ a △".

aparecerá una marca roja donde se produjo el error para que se pueda ver. Por supuesto, además del seguimiento, también tenemos una página para registrar eventos. (Management Portal > [Interoperability] > [View] > [Event Log])

Seguimos. Vamos a revisar la operación para solicitar una actualización a la base de datos.

1)-2 Business Operations que solicitan actualizaciones a la base de datos

La muestra ofrece dos tipos de operaciones: Start.SQLInsertOperation y Start.InsertOperation.

Cada una de ellas es una operación para solicitar una actualización de la base de datos, pero Start.SQLInsertOperation utiliza el adaptador de salida de SQL, mientras que Start.InsertOperation no tiene ningún adaptador.

La diferencia entre ambos es

se asume que se accede mediante conexiones ODBC/JDBC a la operación que utiliza el adaptador de salida SQL, por lo que el destino de la conexión a la base de datos puede cambiarse en la configuración de la producción.

Para las operaciones que no utilizan adaptadores, se asume que el destino de la actualización de la BD es una base de datos dentro del rango de visibilidad de la configuración de producción y que no se produce ningún cambio en el destino de la conexión.

La base de datos IRIS puede utilizarse para almacenar datos arbitrarios durante la integración del sistema. Sin embargo, supongamos que la configuración del sistema cambia por cualquier razón unos años más tarde, y surge la necesidad de conectarse a una base de datos ubicada en un servidor diferente. En ese caso, la operación sin el adaptador no podrá continuar .

En cambio, las operaciones que utilizan el adaptador de salida SQL pueden funcionar si no hay cambios que procesen el contenido de las especificaciones del destino (si no hay ningún problema con la sentencia SQL que se ejecutará, puede conectarse con bases de datos de diferentes productos).

Durante la integración del sistema, puede haber casos en los que la información de la conexión cambia debido a razones externas al sistema. Por ello, es vital poseer un diseño que pueda responder con flexibilidad a los cambios. Por esta razón, se recomienda crear componentes que soporten conexiones externas de una forma libre de acoplamientos.

Sin embargo, supongamos que no hay ningún cambio en la configuración en el futuro. En ese caso, se podrá acceder a la base de datos en IRIS sin utilizar la conexión ODBC/JDBC, por lo que se podrá optar por utilizar el adaptador o no, dependiendo del tipo de uso.

Vamos a ver el código Start.SQLInsertOperation que utiliza el adaptador.

El adaptador que se utiliza en el ejemplo es un adaptador de salida SQL, que permite solicitar a la base de datos que ejecute sentencias SQL. Distintos adaptadores ofrecen diferentes métodos. Consulta la documentación para más detalles sobre los métodos que proporcionan los adaptadores.

imagenDespués, revisa el código de Start.InsertOperation, sin utilizar el adaptador.

Tanto si se utiliza un adaptador como si no, se requiere el mapa de mensajes y las definiciones de los métodos de la operación. Si no se utiliza un adaptador, no se necesita definir “Paramter” y “Property” para el adaptador.

Business Operations sin adaptadores: En Start.InsertOperation, SQL se ejecuta usando ObjectScript (el comentario de la afirmación es el proceso de actualización en las operaciones de objetos).

La implementación es satisfactoria si la base de datos que se actualiza no se separa de IRIS.

Descubrimos que las operaciones que utilizan adaptadores ofrecen un método fiable para solicitar el procesamiento desde el destino. También confirmamos que es posible crear operaciones sin utilizar adaptadores y escribir código de forma libre para ellas.

En el siguiente artículo, me gustaría explicar cómo crear un business process que llame a las operaciones para obtener información meteorológica y actualizar la base de datos en el orden correcto.

2
0 461
InterSystems Official Mario Sanchez Macias · mar 26, 2024

Al evaluar una notificación de soporte de IBM, InterSystems ha determinado un impacto potencial para nuestros clientes. La notificación en cuestión es:

Memory Leak in std::string for programs built with xlclang++ 16.1.0 in the presence of the 17.1.1 libc++.a

Este problema afecta a las versiones 2022.x y 2023.x de:

  • InterSystems IRIS® data platform
  • InterSystems IRIS for Health™
  • HealthShare® Health Connect

También afecta a otros productos de InterSystems basados en la familia de productos InterSystems IRIS.

0
0 129
InterSystems Official Jose-Tomas Salvador · mar 26, 2024

La versión 2024.1 de InterSystems IRIS® for HealthTM, y HealthShare®Health Connect ya está disponible de forma general (GA - Generally Available).

❗Este anuncio no se aplica a InterSystems IRIS®.

Novedades destacadas de la actualización

De esta versión se espera una serie de actualizaciones interesantes, incluyendo:

  1. Compatibilidad con Smart en FHIR 2.0.0
  2. Generación de modelos de objetos FHIR R4
  3. Mejora del rendimiento de las FHIR queries
  4. Eliminación del Private Web Server (PWS - Servidor Web Privado)
  5. y mucho más.
0
0 163
Artículo Alberto Fuentes · feb 21, 2024 2m read

Quería compartiros hoy un pequeño truco para personalizar cómo se muestran los mensajes en el Visor de Mensajes. En concreto, cómo mostrar mensajes JSON directamente en el Visor de Mensajes en lugar de serializados como XML.

image

Los mensajes son los objetos que utilizamos para comunicar componentes de una producción de interoperabilidad. En mi caso me había definido un mensaje que utilizaba después para pasar a JSON y enviar a una API. Este mensaje está definido como un mensaje convencional y también como %JSON.Adaptor para poder exportar / importar directamente a JSON.

Class interop.msg.DeviceOrderReq Extends (Ens.Request, %JSON.Adaptor)
{

Parameter %JSONNULL As BOOLEAN = 1;

Property externalOrderId As %String(MAXLEN = "");

Property orderStatus As %String;

Property requestedServiceId As %String(MAXLEN = "");

Property patientData As interop.msg.elements.PatientData;

}

El mensaje funciona correctamente cuando hago diferentes pruebas en mi producción, sin embargo en el Visor de Mensajes aparece con la representación por defecto XML:

image

La representación es correcta, pero me sería mucho más intuitivo ver el mensaje representado directamente en JSON. Para ello, podemos sobreescribir el método %ShowContents en nuestro mensaje.

En mi caso, para poder reutilizar código me he creado una clase llamada JSONMessage. Esta clase sobreescribe el %ShowContents para mostrar la representación en JSON formateada del objeto.

Class interop.msg.JSONMessage Extends (Ens.Request, %JSON.Adaptor)
{

/// This method is called by the Management Portal to determine the content type that will be returned by the <method>%ShowContents</method> method.
/// The return value is a string containing an HTTP content type.
Method %GetContentType() As %String
{
	Quit "text/html"
}

/// This method is called by the Management Portal to display a message-specific content viewer.<br>
/// This method displays its content by writing out to the current device.
/// The content should match the type returned by the <method>%GetContentType</method> method.<br>
Method %ShowContents(pZenOutput As %Boolean = 0)
{
   do ..%JSONExportToString(.jsonExport)
    set formatter = ##class(%JSON.Formatter).%New()
    do formatter.FormatToString(jsonExport, .json)
    &html<<pre>#(json)#</pre>>
}

}

Por último, sólo queda cambiar la definición del mensaje original para que herede de JSONMessage:

Class interop.msg.DeviceOrderReq Extends (JSONMessage, Ens.Request)
{

Parameter %JSONNULL As BOOLEAN = 1;

Property externalOrderId As %String(MAXLEN = "");

Property orderStatus As %String;

Property requestedServiceId As %String(MAXLEN = "");

Property patientData As interop.msg.elements.PatientData;

}
2
0 295
Pregunta Miguel Ángel Jiménez Santana · ene 29, 2024

Buenos días.

Queremos distribuir y proporcionar desarrollos, para Partners y Clientes, con los puedan configurar sus producciones creando Operaciones y Servicios de Negocio basados en Clases Base que ya hemos desarrollado y empaquetado, ellos luego podrán incluir sus propios mapeos, rutas y demás en sus producciones, pero sin poder acceder a la implementación de esas clases base que nosotros proporcionamos. Sería el equivalente a ofrecer una librería con objetos compilados en C y el archivo .H con sus interfaces, pero no el código.

12
1 351
Artículo Luis Angel Pérez Ramos · feb 16, 2024 7m read

En el pasado artículo presentamos la arquitectura de nuestro proyecto de SMART On FHIR, así que es hora de meternos en harina y empezar a configurar todos los elementos que vamos a necesitar.

Primeramente comenzaremos con Auth0.

Configuración de AUTH0

Comenzaremos creando una cuenta de Auth0 con un correo válido, una vez dados de alta deberemos crear nuestra primera aplicación, y lo haremos desde el menú de la izquieda:

En nuestro ejemplo la aplicación será del tipo Single Page Web Application al tratarse una aplicación desarrollada en Angular 16. Seleccionamos dicha opción y pulsamos "Create".

0
0 227
Anuncio Jose-Tomas Salvador · feb 15, 2024

La versión 2023.3 de InterSystems IRIS Adaptive Analytics ya está disponible en la página de Distribución de Software de InterSystems. Esta versión incluye AtScale 2023.3 con ajustes adicionales, mejoras en la API y estas nuevas funcionalidades:

  • Soporte a Qlik Sense como una herramienta de Business Intelligence cualificada, además del soporte existente a Tableau, Microsoft PowerBI, Microsoft Excel y Looker
    • Tened en cuenta que Qlik Sense está soportado en modo Import; consultad la documentación de AtScale para más información
  • Conectores de Collibra y Alation para soportar la integración entre los cubos de AtScale y los proveedores de catálogos de datos más populares
  • Elementos adicionales del lenguaje DAX del lado del cliente - funciones y operadores - para mejorar el soporta a Microsoft PowerBI
0
0 150
Artículo Luis Angel Pérez Ramos · feb 14, 2024 4m read

Introducción

Recientemente participé en un hands-on fantásticamente organizado por @Patrick Jamieson en el que se configuraba una aplicación de Angular junto con un servidor FHIR de IRIS siguiendo los protocolos definidos por SMART On FHIR y me resultó fráncamente interesante, por lo que me puse por mi cuenta a desarrollar mi propia aplicación de Angular y así aprovechar lo aprendido para publicarlo en la comunidad.

SMART On FHIR

Veamos que nos dice Google de SMART On FHIR:

0
0 212
Artículo Kurro Lopez · feb 14, 2024 3m read
Escenario

IRIS tiene adaptadores de entrada SQL para usar con SQL gateways como EnsLib.SQL.InboundAdapter para consultar repetidamente las conexiones de SQL Gateway. Apareció un escenario en el que queríamos consultar una base de datos interna para obtener algunos datos, pero no vimos un "servicio listo para usar" para esto.

Requisito deseado

Tener un servicio genérico que pueda sondear SQL interno para trabajar con otros componentes.

El cómo
0
0 180