Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Advanced InterSystems IRIS Automation Using Ansible @ Ready 2025
Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Advanced InterSystems IRIS Automation Using Ansible @ Ready 2025
Data privacy regulations such as GDPR, LGPD, and HIPAA demand that organizations know exactly where Personally Identifiable Information (PII) lives inside their databases. Yet in practice, most teams rely on manual inventories, tribal knowledge, or external scanning tools that require data to leave the database engine — a process that itself creates privacy and security risks.
This article presents an MVP that takes a different approach: it runs PII detection inside InterSystems IRIS using Embedded Python, analyzing data where it lives and never exporting it to an external process.
#North American Demo Showcase entry.
>> Answer the question below to be entered in the raffle!
We are using IRIS for Health to develop an agentic AI chatbot workflow that can interact with a patient using voice commands, reach out to an EHR or other system for context, and provide recommendations back.
Presenters:
🗣 @Vic Sun, Sales Engineer at InterSystems
🗣 @Brad Nissenbaum, Sales Engineer at InterSystems
🗣 Danielle Micciantuono, Clinical Solutions Specialist at InterSystems
#North American Demo Showcase entry.
>> Answer the question below to be entered in the raffle!
⏯️ ExplantIQ: Ask Your Compliance Data Anything
ExplantIQ is an intelligent data application that tackles one of healthcare's most overlooked financial and regulatory risks: the management of explanted medical device warranty credits. When an implanted device is removed from a patient (due to failure or recall) hospitals are legally required to pursue manufacturer credits, refund payers if the credit exceeds 50% of the device's cost, and report to CMS. Miss that obligation and you're facing a reverse False Claims Act violation. Industry data shows hospitals miss 81% of eligible credits.
ExplantIQ, built entirely on InterSystems IRIS for Health and DeepSee, solves this by unifying clinical, supply chain, billing, and FDA recall data into a single real-time compliance dashboard, complete with KPI scorecards, trend analytics, and a Text-to-SQL AI Assistant that lets compliance officers query live operational data in plain English. No separate BI tool. No additional architecture. All questions can be answered without leaving your browser tab.
Special thanks to @Emil Polakiewicz and @Boris Mamkin for their contributions.
🗣 Presenter: @Alyssa Ross, Sales Engineer at InterSystems
Hi Developers,
We are happy to announce the new InterSystems online programming contest:
🏆 InterSystems Programming Contest: AI Agents for FHIR🏆
Duration: May 25 - June 14, 2026
Prize pool: $12,000

In case you're planning on deploying IRIS For Health, or any of our containerized products, via the IKO on OpenShift, I wanted to share some of the hurdles we had to overcome.
As with any IKO based installation, we first need to deploy the IKO itself. However we were getting this error:
Warning FailedCreate 75s (x16 over 3m59s) replicaset-controller Error creating: pods "intersystems-iris-operator-amd-f6757dcc-" is forbidden: unable to validate against any security context constraint:
proceeded by a list of all the security context constraints (SCCs) it could not validate against.
I have a daily service that consumes x number of files, each file name chronologically suffixed sequentially by _1, _2, etc. I only want to process the latest file.
How do I build a business rule so it will only process the last file?
InterSystems IRIS globals are one of the platform's core strengths: they store hierarchical data in a direct, ordered, and efficient structure. But when working from Python, manipulating globals can sometimes feel closer to a low-level API than to the natural habits of the language.

The iris-global-reference project provides a Python layer on top of IRIS globals. Its goal is simple: make access to globals more readable, more idiomatic, and easier to integrate into modern Python code, without hiding the underlying hierarchical model.
What was your READY experience like? 🎉
We’ve put together a bingo card — check out how many squares match your experience!
Mark the moments that happened to you or share them in the comments below.
And if you had a memorable READY moment that’s not on the card, tell us about it — we’d love to hear your story ✨

What is wrong with the *inc file code below:
#define ArrayToString(%array,%out,%del) set %out="" for { ##continue
set key=$order(%array("")) quit:key="" ##continue
set %out=%out_%del_key ##continue
} quit
Compilation at calling classmethod as : Set tQStr = $$$ArrayToString(pQArray,tQStr,"##") brings error as:

Hi Community,
We have some exciting news! It's time for the next InterSystems writing competition:
✍️ InterSystems Technical Article Contest 2026 ✍️
Write an article on any topic related to the InterSystems products and services.
🎁 Gifts for everyone: A special gift for each author participating in the competition!

Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Productive Data Science with InterSystems IRIS and Python @ Ready 2025
READY is right around the corner, and this year the Application Services team from InterSystems will be hosting a CCR Users GroupMeeting during the conference!This will be held Wednesday, April 29th during breakfast from 7:30 – 8:30 (breakfast will be served at the meeting room starting at 7:00am).
I need to analyse and improve the performance on some old SQL statements.
One statement uses NVL in the WHERE clause (no wonder why it's slow) but I still have to improve the performance and the data really needs to be the same when returned.
SELECT *
FROM TOURHead, TOURFIND, SGNRFIND, TNRHead
WHERE TOURHead.cl = '123'
AND TOURHead.cl = TOURFIND.cl
AND TOURHead.TOURNR = TOURFIND.TOURNR
AND TOURFIND.cl =* SGNRFIND.cl
AND TOURFIND.SGNR =* SGNRFIND.SGNR
AND TOURFIND.cl = TNRHead.cl
AND NVL(TOURFIND.TNR, SGNRFIND.TNR) = TNRHead.TNR;
Really hope someone can help me with this one.
I want to develop a REST API for uploading PDF files. I started with OPENAPI spec file. When I test, I get error 8727 referencing missing required parameter file.
"{"$c(13,10,9)"""errors"":[ {"$c(13,10,9,9,9)"""code"":8727,"$c(13,10,9,9,9)"""domain"":""%ObjectErrors"","$c(13,10,9,9,9)"""error"":""ERROR #8727: Parameter required: file."","$c(13,10,9,9,9)"""id"":""RESTRequired"","$c(13,10,9,9,9)"""params"":[""file"""$c(13,10,9,9,9)"]"$c(13,10,9,9)"}"$c(13,10,9)"],"$c(13,10,9)"""summary"":""ERROR #8727: Parameter required: file.
The recently published tutorial "Introduction to InterSystems Data Studio" inspired me to check out this product. And I think it’s an interesting look at how to manage a data fabric without deep-diving into complex code. It allows you to connect disparate data silos, transform the data through automated pipelines, and load it into a unified environment for analysis. So, I decided to write up an example of how you can use it. Basically, I'll walk you through the tutorial in case you don't have time to do it on your own. Though I would definitely suggest you actually follow the tutorial - it has lots of useful information.
To see how it works, I stepped into the shoes of a system administrator, logging in with the provided credentials to explore the interface. The layout centers on a few core pillars: defining where data comes from, cataloging its structure, and building automated "recipes" to move it into production.
And the very first step is to establish a connection to my data.

Sorry for the weird question, but mumps skills are very rusty.
Am trying to create globals dynamically, but with using names from an array. For example:
S Names="A,B,Y,Z"
S A=$L(Names,"$")
F I=1:1:A D
//Create globals based on names from database
//^A, ^B, ^Y, ^Z etc.. Hi Everyone,
We are looking for a way to disable production Business Services concurrently so that the whole process takes shorter amount time than just going sequentially in a loop and disable them one at a time (very slow). This is necessary for us to be able to stop all traffic to IRIS so that no data remains after we perform full production stop.
Thank you!
When we need to integrate Caché/IRIS with other relational databases, one common question arises: “How do I set up the JDBC connection?”.
The official documentation doesn’t always provide a straightforward step-by-step guide, which can be frustrating, especially for beginners.
In this article, I’ll walk you through the entire process of configuring a JDBC connection with MySQL, from downloading the connector to linking tables in Caché/IRIS.
Note: JDBC connections in Caché/IRIS have some limitations, especially regarding caching and the use of ResultSet
I still remember the very first code I wrote in Object Script
Coming from Python, it felt so strange at first, but over time I started to see why the language was built the way it is.
If you’re just starting out, keep in mind that ObjectScript might feel a bit niche and mostly tied to IRIS products, but the way you work with it can really pay off - fast development, a powerful database, and a solid platform to learn on.
Sometimes it feels like you’ve stepped into a world that’s both familiar and different.
Many organizations that operate systems built on legacy technology stacks are facing significant support and maintenance complexities. They are eager to modernize, but the transition is usually prohibitively complex and expensive. These challenges apply to virtually any legacy tech, while InterSystems-based systems have their own unique nuances.
Key modernization challenges include:
For a variety of reasons, users may wish to mount a persistent volume on two or more pods spanning multiple availability zones. One such use case is to make data stored outside of IRIS available to both mirror members in case of failover.
Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Succeeding with Python Development on InterSystems IRIS @ Ready 2025
Hello, community.
I've been working with Intersystem Caché for two years, and right away I was excited about the rich ecosystem that Caché provides. However, I was disappointed with calls using #call, and I understand that it was a limitation of the time. Well, the frustration is that #call returns null by default, meaning an AJAX request is executed, but there's no hook to retrieve the return from that request. The only way to retrieve the data from that request is by building a callback on the server side using &js<>.
In healthcare interoperability environments, InterSystems Health Connect typically contains critical components such as productions, business processes, operations, services, utility classes, routines, and other ObjectScript artifacts. Traditionally, many deployments of these components have been done manually, by copying classes, importing XML, or using administrative tools from the management portal.
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.
For those of you that weren't at READY last week, you may have missed the exciting announcement that the Early Access Program for AI Hub is officially open. It was announced during an amazing demo from @Benjamin De Boe and @Jeff Fried, I recommend catching up with this demo when the recording is released! I had the opportunity to play with AI Hub in advance, and thought I might share an introduction with the community.
Hi everyone,
I'm working on a requirement to generate and export medical reports to PDF using Logi Reports. The core requirement is that each generated PDF must be encrypted (password-protected), and the password needs to be dynamically set to the specific Patient's Date of Birth (DOB).
Currently, the report is populated using a Stored Procedure as its data source.
My questions are:
Patient_DOB column from the Stored Procedure)?Hi, Community!
Have you tried using serial objects in InterSystems IRIS? Explore some of the benefits and see how to start using them:
Hello everyone,
The Certification Team of InterSystems Learning Services is excited to announce the release of our new InterSystems IRIS SQL Professional exam. It is now available for purchase and scheduling in the InterSystems exam catalog. This exam is geared towards IRIS SQL experts, and it deals with a variety of advanced IRIS SQL topics that you can find in the exam page.