Nouvelle publication

Encontrar

Article
· Avr 30, 2024 3m de lecture

LowCode simple demo transforming HL7 SIU messages to Kafka, then consuming Kafka messages to store them into IRIS via SQL

Gitter

Production Configuration

This demo has an interoperability production with 16 items. 

Production Configuration HL7 + Kafka Producer

The first part of this demonstration consists of sending an HL7 SIU file which will be transmitted to the 2 other HL7 flows (HTTP and TCP), and transformed and transmitted to the Kafka server. HTTP and TCP flows will transform HL7 messages in the same way before sending them to Kafka as well.

  • 3 HL7 Business Services
  • 1 HL7 router
  • 2 HL7 Business Operations
  • one Business Operation sending the transformed messages to Kafka

Business Rule

The production has a business process with is a HL7 router, which transforms and sends HL7 message to Kafka. 

Data Transformation

The Data Transformation Builder allows the edition of the definition of a transformation between HL7v2 SIU sources into Kafka Messages. Data Transformation 

Visual Trace

After an HL7 message has been processed, ie: by copying some messages from /data/HL7/test into /data/HL7/in directory), you can see its Visual Trace   You can see here the message with I/O and the HL7 ACK 

Kafka Manager

Then, you can check the messages in Kafka, using KafkaManager interface and fetching data from the different topics.  And the content of one topic : 

Production Configuration Kafka Consumer + SQL IRIS

The second part of this demonstration consists of consuming Kafka messages and route them to IRIS tables through SQL components.

  • 3 Kafka Business Services consuming 3 Topics of Kafka
  • 1 router
  • 3 SQL Business Operations inserting data into IRIS database

Business Rule

The production has a business process with is a Kafka router, which sends Kafka messages to IRIS SQL components. 

Visual Trace

Each time a Kafka topic is consumed, it is sent to the Kafka router process which performs content-based routing of Kafka messages, to the appropriate SQL tables into IRIS. If you look carefully to the messages, you can notice that the message is sent directly to IRIS without being transformed (same message ID).   You can see here the message with I/O and the SQL insert result 

SQL

You can then see the results inside IRIS database through SQL queries.

  • TrakCare table

* Surg table

* And thanks to inheritance, you can also query all the data by just querying the root table, here data.kafka

ClassExplorer

The Class Explorer allow you to see the data model of IRIS classes. 

Default Settings

In order to simplify the process of copying a production definition from one environment to another, and ensure watertight separation between the parameters of the different environments, it is recommended to set settings outside of the production class, in the system default settings.  So you will see the settings in blue in the production configuration 

Prerequisites

Make sure you have git and Docker desktop installed.

Installation: ZPM

Open IRIS Namespace with Interoperability Enabled. Open Terminal and call: USER>zpm "install hl7v2-to-kafka"

Installation: Docker

1. Clone/git pull the repo into any local directory

$ git clone https://github.com/SylvainGuilbaud/hl7v2-to-kafka.git

2. Open the terminal in this directory and run:

$ docker-compose build

3. Run the IRIS container with your project:

$ docker-compose up -d

How to Run the Sample

  1. copy some HL7 messages from /data/HL7/test into /data/HL7/in
  2. check the Visual Trace
  3. see a full trace
  4. go to Kafka Manager and fetch data from the different topics
3 Comments
Discussion (3)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Avr 30, 2024 2m de lecture

Monitoring InterSystems IRIS environments with Red Hat Insights

InterSystems worked closely with the Red Hat Insights team to implement a curated set of recommendations for system administrators to ensure the best experience running InterSystems IRIS on Red Hat Enterprise Linux (RHEL). Included with all RHEL subscriptions, the Insights service proactively identifies potential issues with monitored platforms and applications running on RHEL. Through our joint collaboration, Insights now watches for common scenarios that decrease the performance of IRIS in most cases and offers an InterSystems-approved recommendation for consideration.  

Ten recommendations are currently implemented and can be found under the “InterSystems” topic within the Insights Advisor service.  Advisor recommendations help in areas including:

  1. Performance Tuning Guidance. We provide best practices for configuring HugePages, Transparent HugePages (THP), swappiness, shmmax kernel parameters, and more.
  2. Product Compatibility. Insights highlights which versions of InterSystems products are encouraged to be used to provide the best experience.
  3. Journaling and High-availability Configuration Suggestions, like Write Image Journaling (WIJ) drive mapping, identifying an arbiter to support automatic failure, or enabling FreezeOnError for better integrity and recoverability of InterSystems IRIS database.

Every recommendation contains details about the detected RHEL version, InterSystems IRIS instance information, and system-specific step-by-step instructions to remediate the detected issue.  Links to the InterSystems documentation are also provided for further reference.

Enable Insights with InterSystems today.

Registering your systems with Red Hat Insights is very straightforward and typically requires only a single command to be executed. Alternatively, the Red Hat registration assistant application can be used to complete the necessary steps based on your setup. Analysis of InterSystems IRIS workloads does not require additional steps and is enabled once systems are registered with Insights. Specific recommendations can easily be turned off if they are not applicable to your environment.  

Head to Red Hat Insights to learn more about the service and get started with the registration assistant.

Talk with Red Hat experts at InterSystems Global Summit 2024.

Red Hat will be exhibiting at InterSystems Global Summit June 9-12 and available to discuss Insights and other Red Hat capabilities.

2 Comments
Discussion (2)3
Connectez-vous ou inscrivez-vous pour continuer
Article
· Avr 30, 2024 3m de lecture

mg_web for ObjectScript Developers

A few weeks ago I posted an announcement about a JavaScript-based interface for our mg_web WebServer interfacing addon module.  mg_web isn't just restricted to use by JavaScript developers though.  Many readers will be ObjectScript developers who are more used to using CSP as their web gateway.  Some may even have much older legacy WebLink-based applications (and be wondering how to support them given that IRIS does not support WebLink).

This article aims to provide some more information on mg_web and to explain why it's worth a look for ObjectScript developers.

The first thing to understand is that mg_web has been deliberately designed as a completely generic and adaptable interface module for the "big three" web servers (NGINX, Apache and IIS).  mg_web supports both HTTP version 1.1 and 2.0 and WebSockets.  The idea is that the core mg_web add-on module communicates, using its own low-level protocol, with a compatible server.

The JavaScript version of mg_web works by mg_web communicating with one such server script written in JavaScript (known as mg_web_js).

However, another of mg_web's included server options creates a connection directly between the Web Server and one or more IRIS and/or Cache servers. When used with this server interface, you can develop your request handling code in ObjectScript, and you have access to Classes, SQL and all the other built-in ObjectScript functionality.  IRIS or Cache can be interfaced either via a network connection or an extremely high-performance in-process API connection, and you can optionally configure multiple servers for failover and/or load balancing.

By using different shims and configuration settings with the direct IRIS/Cache server mode, mg_web can be made to behave in pretty much any way you want.

For example, we've created a shim for use with the direct IRIS/Cache server connection that allows mg_web to emulate the behaviour of the original WebLink web gateway, therefore allowing legacy WebLink applications (including EWD applications) to be ported to IRIS.

Another interface we've created using mg_web is mgweb-server which is a simple framework that allows you to quickly and easily create ObjectScript-based REST API services that will run on both IRIS and Cache.   IRIS or Cache can be interfaced either via a network connection or an extremely high-performance in-process API connection, and you can configure multiple servers for failover and/or load balancing.

You can try mg_web working with mgweb_server out for yourself as we've included ready-to-run examples in our mg-showcase Docker Container for IRIS.

If you're interested in finding out more, we've summarised what we believe to be the benefits of mg_web for ObjectScript developers here, and you can read the relevant documentation in the mg-showcase and mg_web repositories.

The configurations and emulations we've provided for mg_web are just some examples we've created of what's possible.  We'd love to see what others can come up with!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Avr 30, 2024

It's almost time to see each other at "J On The Beach"! And we have a surprise for you...

Hello community!

As you know, InterSystems will be one more year at the J On The Beach conference, which will take place from May 8 to May 10 in Torremolinos, Málaga.

 

And we're especially looking forward to seeing you because we know you're going to love what we have in store:

Visit our stand and try out our acclaimed roulette wheel

As we know you loved it, this year we will also have the famous InterSystems roulette wheel at our booth. Would you like to win one of the many surprise prizes while having a fantastic time? We look forward to seeing you there for another year of fun! 

Come and visit our stand on 9 and 10 May and we'll keep you up to date with the latest news.

Tech Article Contest 

And a little preview: we are about to launch our Spanish-language article competition. We'll be able to tell you all about it very soon, but by then you can come to our stand to find out all the details.

We will be happy to answer your questions and give you some tips to help you prepare your applications. Are you ready?

Don't you know what ‘J On The Beach’ is

'J On The Beach' is an international event about Big Data, for developers and DevOps. It includes lectures, talks, workshops... And with the presence of prestigious professionals from large companies such as Tesla, Grafana Labs, Amazon Web Services (AWS), Adobe, Freepik... For more information, check their website, where they tell you all the details about the event: https://jonthebeach.com/

5 Comments
Discussion (5)3
Connectez-vous ou inscrivez-vous pour continuer
Question
· Avr 30, 2024

Error when trying to set up an SSL/TLS configuration

I'm trying to configure an SSL/TSL configuration in our test environment so we can send ADT messages to an external server. I've verified connectivity/firewall to the external server.

type is set to Client, Server certificate verification is set to Require.

I have received a certificate from the external supplier and linked that in the "File containing trusted Certificate Authjority certificate" field. (I've also imported it into the cert store and tried using %OSCertificateStore).

My client certificate is in PEM format, the decrypted key was extracted using SSLOpen. Protocol enabled is TLSv1.2 (I've tried with the others as well.)

When running a test I get this error:- ERROR #988: SSL connection failed. SSL/TLS error in SSL_connect(), SSL_ERROR_SSL: protocol error, error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown

Is anyone able to assist in deciphering this error, or helping me sort the configuration out?

Many thanks

2 Comments
Discussion (2)1
Connectez-vous ou inscrivez-vous pour continuer