Rechercher

Article
· Nov 4, 2022 9m read

VIP in AWS

If you're running IRIS in a mirrored configuration for HA in AWS, the question of providing a Mirror VIP (Virtual IP) becomes relevant. Virtual IP offers a way for downstream systems to interact with IRIS using one IP address. Even when a failover happens, downstream systems can reconnect to the same IP address and continue working.

5 Comments
Discussion (5)3
Log in or sign up to continue
Article
· Oct 31, 2022 5m read

InterSystems IRIS with Laravel (via ODBC)

It has been asked a few times recently, how one can make Laravel Framework work with InterSystems IRIS Data Platform. It's been a while since this post about Laravel and InterSystems Caché was published. To bring it up to date, the article gives a brief instruction set on how to setup and configure a Laravel project for use with InterSystems IRIS through ODBC.

What is Laravel?

Laravel is a PHP framework that is based on MVC architecture. Using Laravel simplifies and speeds up the backend development while building modern secure web applications. It is very beginner-friendly, widely used in PHP world and tends to be the most popular backend framework according to github.com star rating measured in this video. Combining all that with flexibility and performance capabilities delivered by InterSystems IRIS as a database is seen to be beneficial for both worlds.

This post is organised into 4 steps which represent a sequence of actions one needs to complete in order to make the connection work. Specific ways of completing each step may vary depending on the platform. Commands here are shown for Ubuntu 22.02 (x64).

 

Setup Driver Manager (unixODBC)

In order to make the connection work we need to install a Driver Manager. Most commonly used driver managers are 'unixODBC' and 'iODBC'. This guide uses 'unixODBC', which may be downloaded here http://www.unixodbc.org/ . Please refer to 'Download' section of the website to download and build. Alternatively, build instructions can also be found here. We'll use here packages from 'apt' package manager for Ubuntu.

Install packages

Install unixodbc package accompanied by libodbccr2 which provides unixODBC Cursor library.

sudo apt update
sudo apt -y install unixodbc libodbccr2 odbcinst

Create a link for Cursor Library
In certain cases there might be issues with Shared Object Dependencies after unixODBC installation. This is shown as 'Can't open cursor lib' error. There are few workarounds described in internet. In order to resolve this issue we make a symbolic link to a desired library. First, we locate the library:

sudo find / -type f -name "libodbccr*"

And then we create a link

sudo ln -s /usr/lib/x86_64-linux-gnu/libodbccr.so.2.0.0 /etc/libodbccr.so

 

Setup ODBC Driver for InterSystems IRIS

ODBC driver for InterSystems IRIS can be obtained in various ways. For example, ODBC Driver is included to all InterSystems IRIS kits. The other option would be Distributions Portal on wrc.intersystems.com.

Alternatively, drivers for all supported platforms can be found here: https://intersystems-community.github.io/iris-driver-distribution/

Download, unpack and install ODBC Driver:

sudo mkdir -p /usr/lib/intersystems/odbc
cd /usr/lib/intersystems/odbc/

sudo wget -q https://raw.githubusercontent.com/intersystems-community/iris-driver-distribution/main/ODBC/lnxubuntu2004/ODBC-2022.1.0.209.0-lnxubuntu2004x64.tar.gz
sudo tar -xzvf /usr/lib/intersystems/odbc/ODBC-2022.1.0.209.0-lnxubuntu2004x64.tar.gz
sudo ./ODBCinstall

sudo rm -f ODBC-2022.1.0.209.0-lnxubuntu2004x64.tar.gz

After that, the driver will be located in the following folder /usr/lib/intersystems/odbc/bin/

Additional information on drivers and their usage may be found in the docs. This guide uses libirisodbcur6435.so as a driver library.

 

Setup Laravel project

The traditional and convenient way to interact with a database from Laravel would be using its Eloquent package. Eloquent is an object relational mapper (ORM) that is included by default within the Laravel framework. Only few DBMS vendors are supported out-of-the-box. So in order to implement connection and SQL query builder specifics for InterSystems IRIS (via ODBC) some additional PHP code needs to be written. Thanks to @Jean Dormehl this gap was covered for InterSystems Caché . The same one could be used for InterSystems IRIS.
So in this article we describe steps to setup connection for existing Laravel project using jeandormehl/laracache package, assuming that installation and configuration of php, composer and Laravel is done prior to that.

Install php-odbc
Make sure that php-odbc module is installed. You can check the list of modules installed with the following command:

php -m | grep odbc

To install php-odbc extension use the following command using a proper version of php installed on your environment

sudo apt -y install php8.1-odbc

Setup 'jeandormehl/laracachepackage
Go to your Laravel project directory, install package and publish its config file.

composer require jeandormehl/laracache
php artisan vendor:publish --tag=isc

 

Configure IRIS connection

Edit your .env file to contain settings needed to connect to a database. For Unix users it should look similar to this:

DB_CONNECTION=isc
DB_WIN_DSN=
DB_UNIX_DRIVER=/usr/lib/intersystems/odbc/bin/libirisodbcur6435.so
DB_HOST=127.0.0.1
DB_PORT=1972
DB_DATABASE=USER
DB_USERNAME=_SYSTEM
DB_PASSWORD=sys

After editing .env file you may find useful to clear application config cache:

php artisan config:cache

 

Usage

Let's try to retrieve some data using our new package. As an example we'll create a Model inherited from Laracache\Cache\Eloquent\Model . Just for testing purposes we will count the number of sent messages in Interoperability enabled namespace.

nano app/Models/EnsMessageHeader.php
<?php
namespace App\Models;
use Laracache\Cache\Eloquent\Model;
class EnsMessageHeader extends Model
{
    protected $table = 'Ens.MessageHeader';
    protected $fillable = [
        'MessageBodyClassName'
    ];
}

To execute a query we may create an artisan console command like this:

nano routes/console.php
<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use App\Models\EnsMessageHeader;
Artisan::command('iris:test', function () {
    echo EnsMessageHeader::count() . PHP_EOL;
});

Then executing the following command should retrieve the number of records 

php artisan iris:test

This scenario should work to a wide range of InterSystems IRIS based products.

5 Comments
Discussion (5)3
Log in or sign up to continue
Article
· Oct 26, 2022 2m read

IRIS が起動時に必要とするポート

これは InterSystems FAQ サイトの記事です。

IRISが起動時に必要とするポートは、次のとおりです。
(ポート番号はデフォルト設定の場合です。)

1. 1972 : IRIS のスーパーサーバポート(管理ポータルで変更可能)
     IRIS 起動のために、必須のポートです。
     このポートが使用できないと IRIS は正常に起動しません。
     ※IRIS 2019.2以前のバージョンでは、スーパーサーバーポートは 51773 でした。    

2. 4002 : IRIS ライセンスサーバポート(管理ポータルで変更可能)
     IRIS がライセンスサーバになる場合、必要なポートです。
     このポートが使用できないと、正しいライセンス情報が取得できません。
     ライセンスクライアントについては、このポートは必須ではありません。
     ※リモートライセンスサーバがファイアウォールで保護されている場合、UDP トラフィックに対してライセンスサーバポートが開かれている必要があります。  
     ライセンスサーバの構成について  

3. 23 :IRIS Telnetポート(管理ポータルで変更可能)
     IRIS サーバが Windows で、かつ、クライアントから IRIS ターミナルによる操作を行う場合にのみ、必要なポートです。  

4. 52773 : 管理用Webサーバ(PWS)ポート(管理ポータルで変更可能)
     IRIS 管理ポータル用に自動起動する、Webサーバポートです。
     ※ユーザアプリで使用する場合は、 ApacheやIISなどのウェブサーバで使用されるポート 80 (既定)となります。  
 2023.2(CD) / 2024.1(EM) 以降のバージョンでは、プライベートウェブサーバ(PWS)は廃止となりました。
 80(既定):Webサーバポート
 管理ポータルを含めた、Webアプリケーションで使用するWebサーバポート

5. 2188 : ISCAgentポート(管理ポータルで変更可能)
     ミラーリングを使用するときにのみ、必要なポートです。


IRIS のスーパーサーバポートについては、IANAのPort番号一覧で明記されております(Cacheでの登録になります)。

intersys-cache 1972/tcp Cache
intersys-cache 1972/udp Cache


以下ページをご参照ください。
 iana.orgのページ
 

1 Comment
Discussion (1)0
Log in or sign up to continue
Article
· Sep 30, 2022 1m read

Some FHIR interoperability adapter examples

Hi developers!

Maybe you have to implement scenarios that don't require a FHIR repository, but forwarding FHIR requests, manage the responses and maybe run transformations or extract some values in between. Here you will find some examples that can be implemented using InterSystems IRIS For Health o HealthShare Health Connect.

Discussion (0)1
Log in or sign up to continue
Announcement
· Sep 16, 2022

InterSystems extension for Docker Desktop is now published

Great news, the extension to Docker Desktop for InterSystems Container Registry is now publicly available for everyone.

It is already available in the marketplace in Docker Desktop. It was published today, and it requires restarting Docker Desktop to see it.

Feel free to post any feedback in the GitHub repository, here

Discussion (0)1
Log in or sign up to continue