#InterSystems IRIS

19 Followers · 5.7K 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.

New
Article Jonathan Card · May 28 5m read

There seems to be a generous use of ClassMethods in ObjectScript code generally. I hope my own experiences aren't representative, but I bet they are. Forgive me for giving away the ending of this article, but in short: don't use them. Unless you can make a pretty convincing case that you have to, just never use them.1

What is a ClassMethod? In an ObjectScript class, you can define methods in two different ways: in a Method, you must instantiate an instance of the class to call the method, and in a ClassMethod, you can call the method without instantiating the class. Of course, in a ClassMethod, you don't have access to any properties of the object (because there's no object), but you can access globals (they are global, after all) and Parameters (which are class constants).

6
2 190
New
Article Carlos Eduardo Dias Duarte · 6 hr ago 5m read

When I started building Smart Discharge Navigator, I faced a common challenge: FHIR data is stored as JSON bundles, but the analysis I needed required joining multiple resources together, the kind of thing SQL was built for.

InterSystems FHIR SQL Builder solved this completely. Instead of parsing JSON bundles in application code, I was able to write plain SQL directly against FHIR resource projections inside IRIS for Health. This article shows exactly how I used it to build the population-level readmission risk scoring engine at the heart of the application.


0
0 8
New
Article Ben Schlanger · 6 hr ago 4m read

Back when I was a Developer Support Engineer in the InterSystems Worldwide Response Center (WRC), I would occasionally receive cases involving large message backlogs in a production. The customer would discover that a subset of queued messages were no longer useful and would ask a question similar to the following:

Is there an established best practice for mass-aborting messages in a specific component's queue that match a particular set of criteria?
0
0 14
New
Article José Pereira · 13 hr ago 20m read

An AI agent reads the FHIR patient record before the consultation, asks the right questions based on what it already knows, detects critical red flags, and writes its findings back — so the physician arrives prepared.


Healthcare Pain Points Addressed

Before a patient walks into a consultation room, a critical failure has already occurred: nobody read their medical history. The physician has 15 minutes. The patient repeats their conditions, medications, and allergies for the third time that year.

0
0 16
Article Pietro Di Leo · Oct 9, 2025 6m read

Introduction

In my previous article, I introduced the FHIR Data Explorer, a proof-of-concept application that connects InterSystems IRIS, Python, and Ollama to enable semantic search and visualization over healthcare data in FHIR format, a project currently participating in the InterSystems External Language Contest.

In this follow-up, we’ll see how I integrated Ollama for generating patient history summaries directly from structured FHIR data stored in IRIS, using lightweight local language models (LLMs) such as Llama 3.2:1B or Gemma 2:2B.

The goal was to build a completely local AI pipeline that can extract, format, and narrate patient histories while keeping data private and under full control.

All patient data used in this demo comes from FHIR bundles, which were parsed and loaded into IRIS via the IRIStool module. This approach makes it straightforward to query, transform, and vectorize healthcare data using familiar pandas operations in Python. If you’re curious about how I built this integration, check out my previous article Building a FHIR Vector Repository with InterSystems IRIS and Python through the IRIStool module.

Both IRIStool and FHIR Data Explorer are available on the InterSystems Open Exchange — and part of my contest submissions. If you find them useful, please consider voting for them!

4
6 278
New
Discussion Evgeny Shvarov · Jun 5

Hi folks!

Suppose a new version of your amazing software solution built on IRIS needs some persistence change: some data needs to be converted, some classes get new properties or even renamed, and some data should be prepopulated for newly introduced persistent classes to keep the whole application data consistent.

What are your approaches? 

SQL-based scripts? ObjectScript, or Python? for both directions of migration, up and down? 

Do you autogenerate it with Claude/Codex? What about data-consistency tests?

COuld you please share your thoughts? or libraries?

7
0 73
Article Robert Cemper · Aug 26, 2017 3m read

This is a  rather personal view of the history before Caché.
It is in no sense meant to compete with the excellent books from Mike Kadow discussed in an earlier article.
We have different histories and so this is meant to create a different perspective of the past.

The whole story started in 1966 at MGH (Mass.General Hospital) on a PDP-7 Ser.#103
with 8K of memory (18-bit words) [today = 18K byte ]  as a spare system.

"Serial Number 103 - was located in the basement of the now demolished Thayer Building,
currently [2014] the site of the Cox Cancer Center at MGH.

18
2 2358
Article Kate Lau · Oct 13, 2025 5m read

Hi all,

It's me again 😁. In the pervious article Writing a REST api service for exporting the generated FHIR bundle in JSON, we actually generated a resource DocumentReference, with the content data encoded in Base64

Question!! Is it possible to write a REST service for decoding it? Because I am very curious what is the message data talking about🤔🤔🤔

OK, Let's start!

1. Create a new utility class datagen.utli.decodefhirjson.cls for decoding the data inside the DocumentReference
 

ClassExtends%RegisteredObject

2. Write a Python function decodebase64docref to 
a. loop through the FHIR bundle
b.

4
2 342
New
Article Geet Kalra · Jun 2 3m read

In the previous article, we used pyprod to create production components while relying on the UI for production configuration. That same production can now be defined entirely in Python:

from intersystems_pyprod import Production, ServiceItem, ProcessItem, OperationItem

iris_package_name = "HelloWorld"

class MyProduction(Production):
    services = [
        ServiceItem(
            "MyServiceName",
            "HelloWorld.MyService",
            host_settings={"target": "MyProcessName"},
        )
    ]
    processes = [
        ProcessItem(
            "MyProcessName",
            "HelloWorld.MyProcess",
            host_settings={"target": "MyOperationName"},
        )
    ]
    operations = [
        OperationItem("MyOperationName", "HelloWorld.MyOperation")
    ]
6
0 152
Article Bruno Santos · Mar 19 8m read

The problem

How many times have we migrated an IRIS Instance to another machine, maybe even another version, and after a few days realized we forgot that one SSL Configuration critical for a Business Operations to work? Or maybe a credential, or a lonely class in a package by itself?

The solution

The simple solution is to make a checklist¹. A checklist of the entities we have to move. But simple checklists on Word documents are often forgotten, or just ignored.

4
3 211
Article Kate Lau · Oct 9, 2025 5m read

Hi,

It's me again😁, recently I am working on generating some fake patient data for testing purpose with the help of Chat-GPT by using Python. And, at the same time I would like to share my learning curve.😑

1st of all for building a custom REST api service is easy by extending the %CSP.REST

Creating a REST Service Manually

Let's Start !😂

1. Create a class datagen.restservice which extends  %CSP.REST

ClassExtends%CSP.REST

2. Add a function genpatientcsv() to generate the patient data, and package it into csv string

ExtendsAs

you may test the function in the terminal by typing

3. Add a function 

4
1 267
New
Question Hamras T · Jun 1

Hi all,

I'm working on a DICOM router in InterSystems IRIS, based on the workshop-iris-dicom-interop (https://github.com/intersystems-ib/workshop-iris-dicom-interop) example on GitHub. I'm using EnsLib.DICOM.Process to route incoming images to different PACS destinations, where the target system is decided at runtime via a database lookup.

I've run into two issues I'd love some guidance on:

1. Dynamically changing the destination without disrupting transactions

Right now, if I want to send to a new PACS target, I'd need to add a new Business Operation and call

1
0 38
New
Article Guillaume Rongier · Jun 2 9m read

 

In the previous IoP article, I showed how IoP can expose Python messages to DTL by generating JSON schemas. That is useful when the message is primarily a Python object and we want the IRIS tooling to understand its structure.

This time, the direction is a little different.

Starting with IoP 3.7.1, a PersistentMessage can now be a native IRIS message body class. The Python class is still the source code you write, but the generated IRIS class extends Ens.MessageBody

0
1 28
New
InterSystems Official Dominic Chui · Jun 1

IPM version 0.10.7 was released on May 29th, 2026. As usual, you can check it out on the GitHub page or through the Community Registry.


Highlighted Features

Utility Scripts iriscli and ipm

IPM is now bundled with two convenience scripts that are runnable from a standard terminal. iriscli launches an interactive IRIS terminal and runs IPM commands directly. These are automatically installed to both ~/.local/bin/ and , so they work inside and outside of containers (Unix/Linux only).

Examples:

0
0 42
New
Question Aziz Cotrim · May 29

I have several Business Operations that share similar behavior, like building HTTP headers or parsing a specific response format. In C# I would extract this into a service class or a base class. What is the recommended way to do this in IRIS? Should I use a utility class, a common superclass, or is there another pattern the community prefers?

2
0 62
New
Question Aziz Cotrim · May 29

I have a Business Process that needs to call an external API that may take several seconds to respond. I'm worried that keeping the BP blocked waiting for the response could affect the overall Production throughput. Is there a recommended pattern for handling async calls inside a BPL or custom BP class to avoid this kind of bottleneck?

3
0 60
New
Question Paul Norg · May 29

I'm approaching the need to send notifications through a Microsoft Exchange or Gmail servers. however my last foray into this, I was blocked due to an issue inside my SSL certificate is what I thought after the attempt.

So my attention will be on trying to match the cryptography in the SSL certificate I produce compared to the mail server I'm trying to use.

Has anyone else had an issue with this approach? My other option is Amazon SNS potentially. I do have a functional MS Teams channel for alerts, and can make different notification channels as well.

Any help or insights are appreciated. 

3
0 61
Article David Hockenbroch · May 7 8m read

In our previous article, we explored the basics of unit testing in IRIS and the ways to apply it to a REST API. We even figured out how to test logic before finalizing network configurations and authentication, allowing us to focus solely on testing the API contents. Today, we will build upon that foundation and elevate our unit testing strategy by using another tool: %Populate .

At first glance, the %Populate class appears to be very simple. You can create a class that extends both %Persistent and %Populate and inherit a Populate method designed to generate randomized records.

1
2 168
Article José Pereira · May 19 13m read

Abstract

Common Table Expressions (CTEs) provide a structured framework for defining reusable intermediate result sets within SQL statements. InterSystems IRIS implements CTEs via the WITH clause, enabling clearer query composition and modular analytical processing while remaining fully integrated with the IRIS cost-based optimizer.

This article explores the semantics of CTEs in InterSystems IRIS, explains their interaction with query optimization, discusses appropriate deployment scenarios, and presents executable examples illustrating practical patterns for production environments.


2
4 293