#InterSystems IRIS

19 Followers · 5.5K 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 Alexey Maslov · Jun 10, 2025

Having been inspired with Shared code execution speed question/discussion, I dare to ask another one which is annoying me and my colleagues for several weeks.

We have a routine called Lib that comprises 200 $$-functions of 1500 code lines total. It was noticed that after calling _any_ function of another rather big routine (1900 functions, 32000 lines) the next call of $$someFunction^Lib(x) is getting 10-20% slower than previous call of the same function. This effect doesn't depend on: 

  • which one specific function is being called between two calls of $$someFunction^Lib(x),
  • which one speci
16
0 292
Question Scott Roth · Jun 6, 2025

I am having issues trying to send SOAP requests to a Cloud Based AWS Application that lives outside of our network. 

It is using a Basic Authentication, Key, Certificate Authority and Whitelist for Security. 

If I attempt the connection using wget from the command line I am able to connect,

:>wget --bind-address=10.95.129.245 --server-response https://xxxxxxxxxx/xxxxxxx/services/Mirth
--2025-06-06 15:54:51--  https://xxxxxxx/xxxxxxxx/services/Mirth
wget: /ensemble/.netrc:16: unknown token xxxxxxx
wget: /ensemble/.netrc:16: unknown token xxxxxxxx
Resolving xxxxxxx.com (xxxxxxx)... 34.233.89.102,

3
0 144
Article Shuheng Liu · May 16, 2025 9m read

1. A Motivating Example

Embedded Python has been around for a while. You probably followed the tutorials and learned about it. However, if you've tried to combine Python and ObjectScript in real development work, you probably ran into situations where you get an error message like this:

USER>Do##class(MyClass).SomeMethod()

ERROR #5002: ObjectScript error: <PYTHON EXCEPTION> *<class 'ZeroDivisionError'>: division by zero

It's a long string for limited information. All we know from this message is that a Python error occurred where (a) the error type is ZeroDivisionError; and (b) the erro

4
7 469
Question Matjaz Murko · Jun 15, 2025

Hi.

I want to save and compile a class in VS Code, but I get the error:

Failed to save 'Utils.cls': Unable to write file 'isfs://mip:mz/API/Utils.cls?project=MZ' (Unknown (FileSystemError): Unknown Error).

Any ideas what is wrong?

Regards,
Matjaž

6
0 183
Discussion Harshitha · May 30, 2025

Hey everyone,

I'm diving deeper into Caché ObjectScript and would love to open a discussion around the most useful tips, tricks, and best practices you’ve learned or discovered while working with it.

Whether you're an experienced developer or just getting started, ObjectScript has its own set of quirks and powerful features—some well-documented, others hidden gems. I’m looking to compile a helpful set of ideas from the community.

Some areas I’m especially interested in:

  • 💡 Clever use of %INCLUDE, macros, and preprocessor directives
  • ⚙️ Best practices in class-based development using %Pers
3
4 215
Article Harry Tong · Jun 6, 2025 2m read

If you're migrating from Oracle to InterSystems IRIS—like many of my customers—you may run into Oracle-specific SQL patterns that need translation.

Take this example:

SELECT (TO_DATE('2023-05-12','YYYY-MM-DD') - LEVEL + 1) AS gap_date
FROM dual
CONNECT BY LEVEL <= (TO_DATE('2023-05-12','YYYY-MM-DD') - TO_DATE('2023-05-02','YYYY-MM-DD') + 1);

In Oracle:

  • LEVEL is a pseudo-column used in hierarchical queries (CONNECT BY). It starts at 1 and increments by 1.
  • CONNECT BY LEVEL <= (...) determines how many rows to generate.
  • The difference between the two dates plus one gives 11, so the qu




1
0 210
Article Ashok Kumar T · Aug 30, 2024 3m read

Hello Community

I have previously experimented with embedded Python in IRIS; however, I have not yet had the opportunity to implement IRIS using native Python. In this article, I aim to outline the steps I took to begin learning and implementing IRIS within the Python source. I would also like thank to @Guillaume Rongier and @Luis Angel Pérez Ramos for their help in resolving the issues I encountered during my recent PIP installation of IRIS in Python, which ultimately enabled it to function properly.

Let's begin to write IRIS in python.

First comes First, You have to install the intersys

7
5 638
InterSystems Official Daniel Palevski · Jun 9, 2025

InterSystems has released new point updates to resolve a defect affecting the most recent prior versions of 2025.1.0, 2024.1.4, 2023.1.6, and 2022.1.7, for the following supported product lines:

  • InterSystems IRIS
  • InterSystems IRIS for Health
  • HealthShare Health Connect

This issue could result in unexpected <PROTECT> errors or access anomalies when using features such as:

  • Implied namespaces
  • Mixed read-only/read-write access to databases
  • Management Portal pages for listing routines and globals

Symptoms Included:

  • Namespace creation failures
  • Intermittent “access denied” erro
1
0 168
Question Norman W. Freeman · May 20, 2025

Hello,
I have created this script that does lot of writes to a single global. DB write performance is much slower than expected (compared to another similar systems).

set rec = "..."//fill it with somethingset time = $piece($horolog,",",2)
while(($piece($horolog,",",2)-time) < 30) //30 secondsset^A($System.Util.CreateGUID()) = rec
}

I have notified the following : 

  • CPU usage does not reach 100% on a single core (eg: 25% of total CPU usage should be seen on a 4 cores system). Instead, much lower CPU usage is shown (with some drops to 0% from time to time). It looks like process

9
1 223
Question Scott Roth · Jun 11, 2025

I am having a hard time trying to figure out the following...

Within a DTC, I was able to take the a EnsLib.HL7.Message source and using

set a= $System.Encryption.Base64Encode(source.RawContent)
set encodedMessage=$Get(a)

to take the HL7 message encode it and add it to the Data Class as a string to be sent to an Operation to be sent out as a SOAP Request. 

However to make it more universal I tried doing this within a copy of EnsLib.HL7.SOAPOperation

Method SendMessage(pMsgOut As EnsLib.HL7.Message, Output pMsgIn As EnsLib.HL7.Message, pExpectedSequenceNumber As%String) As%Status
{
 S

3
0 120
Question Nezla · Jun 11, 2025

Hi  Guys,

I'm looking for a Zen component that allow me to populate a list of items and the ability to multiselect, similar to checklist?

I've thought of using MultiSelectSet component but don't know how can I populate it like to a query or resultset?

a short sample code would be helpful.

Thanks

6
1 107
Article Guillaume Rongier · Apr 9, 2019 3m read

IRIS and Ensemble are designed to act as an ESB/EAI. This mean they are build to process lots of small messages.

But some times, in real life we have to use them as ETL. The down side is not that they can't do so, but it can take a long time to process millions of row at once.

To improve performance, I have created a new SQLOutboundAdaptor who only works with JDBC.

BatchSqlOutboundAdapter

Extend EnsLib.SQL.OutboundAdapter to add batch batch and fetch support on JDBC connection.

Benchmark

Benchmarks released on Postgres 11.2 with 1 000 000 rows fetched and 100 000 rows inserted on 2 columns.

alt text

P

10
3 1921
Question Scott Roth · Jun 11, 2025

I have created a New Database/Namespace within our TEST environment on both the Primary and Backup of the mirror. When I go to create the database/namespace on the DR node I am getting "Cannot open file '/ensemble/TEST/iris.cpf_...." while the cpf file that it references does not exist. Anyone have any clue to why this might be happening?

3
0 131
Article Heloisa Paiva · Mar 17, 2023 2m read

Why I've decided to write this

In my last article I've talked about returning values with Python. But returning them is simple, what can make it harder is what I'm going to talk about today: where the value is treated.
 

Python object in IRIS

Following the example of the last aricle, we have the method:

Class python.returnTest [ Abstract ]
{

ClassMethod returnSomething(pValue... As%String) As%Integer [ Language = python ]
{
	return pValue
}

}


Then, we'll have as a return a Python object, that IRIS interprets as  the class %SYS.Python. So if I call the method with two values,

4
4 609
Question Dmitry Maslennikov · Mar 30, 2024

During the realization of some required functionality, I discovered that I need to use Deflate compression, and found, that IRIS does not offer any options, $system.Util.Compress, works one way open (GZIP/COMPRESS) totally different, even for the same algorithms, I see that what I would expect as a result for Deflate somewhere there, but Compress returns something more. Is there any way to get a correct result using just ObjectScript without a need to use external tools? Was it really so difficult to have Deflate implemented in the first place?

set original = "my very long string which need

8
0 569
Question Daniel Raderstrong · Apr 18, 2024

Hi,

We're getting a string sent to us by a client that was compressed using a java deflater (the zlib algorithm) and when trying to use $System.Util.Decompress() I get an "illegal value" error. I gather from other community posts that this is because the raw compressed string is missing the customized wrapper Iris automatically adds. I know this has been a longstanding issue for a while...just wanted to check if there'd been any updates to this functionality, or successful workarounds for decompressing raw zlib compressed data. Thanks in advance!

10
0 436
Article Lorenzo Scalese · May 22, 2025 9m read

Introduction

MonLBL is a tool for analyzing the performance of ObjectScript code execution line by line. codemonitor.MonLBL is a wrapper based on the %Monitor.System.LineByLine package from InterSystems IRIS, designed to collect precise metrics on the execution of routines, classes, or CSP pages.

The wrapper and all examples presented in this article are available in the following GitHub repository: iris-monlbl-example

1
2 245
InterSystems Official Daniel Palevski · Jun 10, 2025

Summary

Advisory ID

Product & Versions Affected

Risk Category & Score

Explicit Requirements

DP-439649

Products:

  • InterSystems IRIS®
  • InterSystems IRISfor Health
  • HealthShare®Health Connect

Versions:

  • 2025.1.0.225.1
  • 2025.1.0.223.0
  • 2024.1.4
  • 2023.1.6
  • 2022.1.7

Operational:
4 – High Risk

System Stability:
3 – Medium Risk

This issue does not constitute a security vulnerability. It does not allow users to bypass permissions checks or access data outside their authorized namespace.

Use of implied namespaces, the Management Portal, o

0
1 178
Question Nezla · Jun 8, 2025

Hi Guys,

How can I create Python pages instead of CSP or Zen pages, not familiar with Python and the only way I know is using embedded Python as methods as attached below?  

Thanks

1
0 104
Question Anna Golitsyna · Jun 6, 2025

Let's suppose two different routines use one and the same chunk of code. From the object-oriented POV, a good decision is to have this chunk of code in a separate class and have both routines call it. However, whenever you call code outside of the routine as opposed to calling code in the same routine, some execution speed is lost. For reports churning through millions of transactions this lost speed might be noticeable. Any advice how to optimize specifically speed?
P.S. Whenever someone is talking about the best choice for whatever, I am always tempted to ask: "What are we optimizing?". Optim

14
0 214
Question Andrew McCrevan · Jun 5, 2025

How would you go about creating an SQL Stored Procedure that would result in the same output as "IN LIKE"?
For example...
CustomersTable

RecordId CustomerName
123 Mark Stevens
456 Betty Johnson
789 John Stevens
321 Brian Smith
654 John Markson
987 Tom Obrian
select *
from CustomersTable
where inLike('%Mark%', '%John%')

Would return:

123 Mark Stevens
456 Betty Johnson
789 John Stevens
654 John Markson
5
0 120