#InterSystems IRIS

19 Followers · 5.6K Posts

InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

Question Menno Voerman · Aug 4, 2023

Hi All,

If I remember it correctly there is a functionality in IRIS to make this possible.

I've got two incoming Business Services of files from different sources.

BS1: An Ens.StreamContainer with some info and metadata which point to a specific file. Ens.StreamContainer will be send to a BP.

BS2: The files where the metadata points to. It's in the Ens.StreamContainer

But dependent on the flow the file could be later available on BS2. So I want the BPL to wait for the file to arrive at BS2. 

Then in the BPL I want to do some merging stuff with the 2 Ens.

4
0 265
Question Menno Voerman · Jul 13, 2023

Hi All,

We're doing our first babysteps with embedded Python and IRIS with an interoperability solution. We want to convert a CSV file to an Excel xlt file.

As service we've got a EnsLib.File.PassthroughService which picks up a csv file

As operation we've got a EnsLib.File.PassthroughOperation which writes the Excel file.

In the middle:

We've created an Business Process with an %Stream.GlobalCharacter in the Request and a %Stream.GlobalCharacter  in the Response.

But how do we get the %Stream.GlobalCharacter in the Python ClassMethod?

3
0 576
Question Lorenzo Scalese · Aug 7, 2023

Hi!

Currently, I'm working on a script using %SYS.Journal API.

My journal files are compressed, following the documentation the compression is zstd.

I tried to unzip a file with zstd tool, ex: 

apt-get update
apt-get install zstd

zstd -d 20230806.001z -o 20230806.001

20230806.001z        : 92.03%   (909312 => 836859 bytes, 20230806.001) 

Unfortunately, the unzipped file is invalid:

Write ##class(%SYS.Journal.File).IsValidJournal("/usr/irissys/mgr/journal/20230806.001")
2
0 579
Question Norman W. Freeman · Jul 27, 2023

There is several classes that allow to create TCP/IP connections (eg: to connect to a service).

Example : %Net.FtpSession (port 21), %Net.HttpRequest (usually port 80 or 443)

AFAIK connection will stay open unless closed explicitly or if variable that hold the instance is garbage collected.

Is there a way to get a list of all active (open) TCP/IP connections IRIS is maintaining so far ?

I took a look at Portal (eg: in dashboard, "System Resource Statistics") but couldn't find anything. Web Gateway panel provide information about connections but this is incoming connections for CSP pages.

6
0 707
Question Pierre LaFay · Aug 3, 2023

Hi,

I try to initialize some properties of a %DynamicObject during his creation.

I Try to use InitialExpression this way :

Property refDate As %Date [InitialExpression = $piece($horolog,",",1)];

But it doesn't compile

I don't found if %DynamicObject can have a constructor to initialize properties by a calculated value, like other languages.

4
0 287
Question Ties Voskamp · Aug 3, 2023

Hi,

Using Interoperability, I can't figure out how to create separate XML's files from a CSV-file using the GUI-features Record Maps/Complex Record Mapper -> Data Transformations. I'm familiar with reading/writing the files using File Service/Operation, but don't understand the processing-steps. The preferred method by my colleagues is to do this without any Objectscript or Embedded Python coding, but if this can only be done by some coding that's fine as well.

See example below. Any help is appreciated!

2
0 338
Article Hao Ma · Mar 5, 2023 2m read

I asked the question in email and get answers from those colleagus.

Question:

I failed to change time zone on latest iris container(Ubuntu), because:

  • I am irisowner, no root password

  • There is no sudo command

I used to use below Dockfile setting to change time zone while creating a new docker image. However, those commands doesn’t work from non-root user.

1
0 430
InterSystems Official Fabiano Sanches · Aug 4, 2023

The 2023.2 releases of InterSystems IRIS Data Platform, InterSystems IRIS for Health, and InterSystems IRIS Studio are now Generally Available (GA).

RELEASE HIGHLIGHTS

2023.2 is a Continuous Delivery (CD) release. Many updates and enhancements have been added in 2023.2:

Private Web Server

Starting with this release:

0
0 374
InterSystems Official Fabiano Sanches · Jul 26, 2023

InterSystems announces its seventh preview, as part of the developer preview program for the 2023.2 release.  This release will include InterSystems IRIS and InterSystems IRIS for Health.

Discontinuation of the Private Web Server (PWS)

A major topic in this release is the discontinuation of the Private Web Server (PWS) from the installers.  This feature has been announced since last year and it's removed from InterSystems installers, starting with this developer preview.

See this note in the documentation. Additional information related to this topic can be found here.

11
0 347
Discussion Eduard Lebedyuk · Jul 28, 2023

Our previous code golf ended with an overwhelming win, so now it's time for another one. Parenthesis Hell is a Lisp-like esoteric programming language(esolang). As a Lisp-like language, the code consists only of nested matched pairs of opened and closed parenthesis. Your task is to write a method that receives a string of parenthesis and returns 1 if the order of the parenthesis is valid. For example, the string of parenthesis (())() is valid because it contains a matched pair of opened and closed parenthesis at each position. The string ()((()))) is not valid because it contains one unmatched parenthesis.

37
0 811
Question Warren Oyco · Aug 3, 2023

Hi,

Any recommendations on how i can add a logic if an incoming record that is already existing in the table but different total amount value. I need to subtract the totalamt value on the input file vs the totalamt value on the table and update the table with the difference of totalamt. Any help is much appreciated. Thanks!

 

Set tSC = $$$OK Try {
tEntEpicMoopRecord = ##class(MC.Data.EntEpicMoopFile).MemberIDIndexOpen(pRequest.MemberID)
if $ISOBJECT(tEntEpicMoopRecord) {
tEntEpicMoopRecord.DateUpdated = +$h
tSC = tEntEpicMoopRecord.%Save()
}
else {
tEntEpicMoopRecord = ##class(MC.Data.

1
0 262
Question Scott Roth · Jul 21, 2023
First time setting up a SSL/TLS connection, and I am running into issues when I call it from within a Business Operation. I used openssl to generate a RSA 4096  SHA512 key/csr request for our Active Directory Certificate Service to generate a Certificate Chain for me to use within RedHat. I was 
able to connect to our Web Service server using a generic request from terminal, however when I try it from our Business Operation I am running into issues.

I tested the SSL/TLS connection using the following commands from the terminal.

DEVCLIN>set request=##class(%Net.
1
0 813
Question Scott Roth · Jul 25, 2023

Recently I started moving some of our JDBC Gateway configurations over to using the Microsoft JDBC Gateway driver instead of using the jTDS open source driver. I have noticed since then that those Objects that are using Microsoft JDBC Driver are throwing a lot more errors than the jTDS driver ever did, which I can understand however I am puzzled that I keep running into an issue with the Java Gateway Service within the Interoperability engine.

Every so often I will start seeing "Gateway Server failure timeout on 127.0.0.1:55550" followed by "Gateway Server did not respond to PING request.

1
0 517
Article Megumi Kakechi · Aug 3, 2023 1m read

InterSystems FAQ rubric

You can set individual error pages for the following Web Gateway error messages/system responses:

  • server error
  • server busy
  • server unavailable
  • server timeout
  • connection closed

Settings are made on the Web Gateway Management screen ([Management Portal] > [System Administration] > [Configuration] > [Web Gateway Management] > [Configuration] > [Default Parameters]).

In the Error Page section of the Default Parameters menu, set the filename of the html page to display or the URL to redirect to when an error occurs.

  

0
1 372
Article Jimmy Xu · Jul 7, 2023 2m read

Hi Developers, I'm currently doing a demo about building a front end UI doing data analytics and setup a performance test with large data objects, therefore using "Populate Utility" could help me auto generate some sample data that I can play with.

Within this post I would like to share my experience of using Populate Utility, including using POPSPEC Parameter.

1.

6
1 619
Question Armin Gayl · Jul 28, 2023

Hello,

I need AES ECB with PKSC7 padding for an interface.
Unfortunately, the %SYSTEM.Encryption.AESEncode cannot do this.

Therefore I wanted to include the following python lib.
PyCrptydome -> https://pycryptodome.readthedocs.io/en/latest/index.html

We need to install the package offline on the system. So I downloaded it and put it in the MGR/Python/ directory.

However, when I try to install it, I get the following error message:

E:\HealthConnect\20201\bin>irispip install E:\HealthConnect\20201\Mgr\python\pycryptodome-3.18.0.tar.

11
0 385
InterSystems Official Fabiano Sanches · Aug 1, 2023

InterSystems has corrected two defects.

The first defect can cause an ECP application server to hang. This defect is only relevant to ARM and IBM Power processors; it is present in version 2022.1.2 and 2022.1.3 of InterSystems IRIS®, InterSystems IRIS for Health™, and HealthShare® Health Connect. The correction is identified as DP-423661. The defect is addressed in all future versions. 

The second defect can, in rare circumstances, cause dejournaling to hang. This defect is present in versions 2020.4, 2021.x, 2022.x, and 2023.

0
0 286
Article Mihoko Iijima · Jul 20, 2023 4m read

InterSystems FAQ rubric

You can search for a specific global variable in the journal file using the ByTimeReverseOrder query of the %SYS.Journal.File class and the List query of the %SYS.Journal.Record class.

The role of each query is as follows.

A) %SYS.Journal.File query of the ByTimeReverseOrder class

You can get the journal file name. Results are returned in descending order of journal file name. 

USER>set stmt=##class(%SQL.Statement).%New()

USER>set status=stmt.%PrepareClassQuery("%SYS.Journal.File","ByTimeReverseOrder")

USER>set rs=stmt.%Execute()

USER>while rs.%Next() { write rs.
1
1 530
Article Eduard Lebedyuk · Aug 3, 2020 3m read

InterSystems IRIS currently limits classes to 999 properties.

But what to do if you need to store more data per object?

This article would answer this question (with the additional cameo of Community Python Gateway and how you can transfer wide datasets into Python).

The answer is very simple actually - InterSystems IRIS currently limits classes to 999 properties, but not to 999 primitives. The property in InterSystems IRIS can be an object with 999 properties and so on - the limit can be easily disregarded.

13
1 894
Question Phil Burkhalter · Jul 28, 2023

I like to add documentation to the top of every class I write. Is there a way to modify or create a template that would automatically add the lines below to the top of the class? I primarily use Studio IDE but would like to be able to do this using VS Code as well. 

 

/// Organization:
/// Version 1.0
/// Author/Co-author:
/// Project: 
/// Date: 
/// Description: 
/// Change Log:
/// Notes:

 

Thanks. 

4
0 299
Question Dmitry Maslennikov · Jul 26, 2023

So, I needed to start Java Gateway, and found, that it does not want to work with the latest Java versions, I tried 20, 18, 17

Start External Language Server %Java Server:

Please wait...result will show below:

2023-07-26 19:46:24  Starting Java Gateway Server '%Java Server'
2023-07-26 19:46:24  *ERROR* Return from RunStartCmd: ERROR #5049: Java version '18.0.1.1' is not supported.
2023-07-26 19:46:25  An error occurred while trying to start the Gateway Server External Language Server failed to Start:
ERROR #5049: Java version '18.0.1.1' is not supported.

Error, only says, that it will not work, and say nothing, about which version it wants to see

6
0 1476
Article sween · Jul 5, 2022 4m read

        

How to include IRIS Data into your Google Big Query Data Warehouse and in your Data Studio data explorations.  In this article we will be using Google Cloud Dataflow to connect to our InterSystems Cloud SQL Service  and build a job to persist the results of an IRIS query in Big Query on an interval. 

If you were lucky enough to get access to Cloud SQL at Global Summit 2022 as mentioned in "InterSystems IRIS: What's New, What's Next", it makes the example a snap, but you can pull this off with any publicly or vpc accessible listener you have provisioned instead.

3
0 1199
Question John Nurmi · Jul 27, 2023

In an HL7 Business rule I am trying to block ONLY ORM messages that have a PV1:3.4 of 105 or 205 and a OBR:4 value of EP22 or CATH01.

I created the logic below but it appears to be evaluating the two fields independently instead of combined?

 

Here is what I had.

(((HL7.{MSH:SendingApplication.NamespaceID}="Epic_Cupid")&&(HL7.{ORCgrp(1).ORC:OrderControl} IN "NW,CA")))&&(((HL7.{PIDgrp.PV1grp.PV1:AssignedPatientLocation(1).Facility.NamespaceID} NotIn "105,205")&&(HL7.{ORCgrp(1).OBRuniongrp.OBRunion.OBR:UniversalServiceIdentifier.

1
0 274
Question Pietro Di Leo · Jul 24, 2023

Hi everyone,

I'm trying to figure out how to automatically resend a message using a business operation.

I'm working on a production where HTTP messages are sent from a Business Component to the URL of a Postman Mock Service and I'd like to understand what I can do when the server doesn't respond within a certain timeout. To test this situation, I created a Business Operation component called "Sender", with an "EnsLib.HTTP.OutboundAdapter", which is sending an HTTP message via a POST request to the Mock Server. To create the message, I defined a %Net.

8
0 555
Article Satoshi Hosoi · Jul 27, 2023 1m read

InterSystems FAQ rubric

Whether the value of a local variable is an OREF or not can be determined using $IsObject(). Let v be the variable you want to check,

$IsObject(v)=1 // v is an OREF
$IsObject(v)=0 // v is not an OREF
$IsObject(v)=-1 // v is an OREF but does not point to a valid object

Note that $IsObject(v) will give an UNDEFINED error if v is undefined.

To avoid UNDEFINED errors, it is recommended to use $Get like this:

$IsObject($Get(v))
0
0 466