Hello All,
No matter what I try in Business Process Logic (BPL), I am unable to calculate the patient's age in days or years.
Has anyone ever built logic in a Business Process (BPL) to calculate a person's age in days?
Thank you!
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.
Hello All,
No matter what I try in Business Process Logic (BPL), I am unable to calculate the patient's age in days or years.
Has anyone ever built logic in a Business Process (BPL) to calculate a person's age in days?
Thank you!
In this article, I aim to demonstrate a couple of methods for easily adding validation to REST APIs on InterSystems IRIS Data Platform. I believe a specification-first approach is an excellent idea for API development. IRIS already has features for generating an implementation stub from a specification and publishing that specification for external developers (use it with iris-web-swagger-ui for the best results). The remaining important thing not yet implemented in the platform is the request validator. Let's fix it!
Recent versions of IRIS come with Lite Terminal available from VSCode. It's a websocket server, with JSON messaging. Here's how to connect to it from Python:
import websocket
import argparse
import requests
import json
defterminal(host, port, namespace, username, password, command, secure):
session = requests.Session()
r = session.get(f"http{"s"if secure else""}://{host}:{port}/api/atelier/", auth=(username, password))
cookies = session.cookies.get_dict()
ws = websocket.WebSocket()
ws.connect(f"ws{"s"if secure else""}://{host}:{port}/api/atelier/v8/%25SYSHi Community,
Here we have requirement to process messages min 10 sec delay. Current time it is taking my businessProcess is less than 1 sec.
To implement this requirement , I need to sleep 10 sec in business process custom code.
Could somebody help me to implement delay in BusinessProcess.
Thanks,
Prashanth
Hi developers!
In a method I need to return a result as a dynamic object aka JSON Object. And here is my logic:
Classmethod Planets() as%DynamicObject {
set val1="Jupiter"
set val2="Mars"// this doesn't work! cannot compile
return {"value1":val1, "value2":val2}
}So I need to do the following:
Classmethod Planets() as%DynamicObject {
set val1="Jupiter"
set val2="Mars"
set result={}
set result.value1=val1
set result.value2=val2
return result
}The second case works. Maybe I'm preparing the Dynamic Object in the wrong way? Can we just use variables insi
Hello everyone. I'm currently working on how to implement a solution that makes it possible to include within the response of a BusinessOperation the "RetryCount" for each message.
For Example, we have this message that was retried twice:
This is an HL7.message going through a specific business operation, we did not create a custom one: we used the default implementation EnsLib.HL7.Operation.TCPOperation. This operation should automatically handle retries (infinetely waiting on a response). I found out each Business Operation has this property :.png)
Can we retrieve this information AFTER the messag
Hi Community,
We're pleased to invite you to the upcoming webinar in Hebrew:
👉 Debugging InterSystems IRIS & Health Connect: From VS Code Breakpoints to Interoperability Traces 👈
📅 Date & time: Feb 18th, 3:00 PM IDT
When production issues arise, speed and precision matter. This webinar is a practical, tool-driven walkthrough of debugging in InterSystems IRIS (including IRIS for Health) and Health Connect - starting with code-level debugging in VS Code and extending into platform and interoperability diagnostics. We will cover core logging as well as tracing techniques. Attendees will l
Hello Team,
I am trying to duplicate the production flow in the Ensemble 2018 but after doing all the steps (like copying same class file, adapter file, process class file) as production, still the flow is not working. The error is that it is not reaching the operation (which is supposed to store the data), it gets stuck in the processes. Additionally, I am also trying to add a logic where in OUL message if the value of code 20061 > 30mg, it should automatically send another order back to service (OML). So the flow will be, Device -> Service->Processes->Operation(DB Store)->Process(ACK and di.png)
in C++ program with #include iris-callin.h.. The program terminateswhen it tries to execute IRISSECURESTARTA with exit code -1073741515.
const char *username="user", *password="xyz",*exename="Test_Callin";
int termflag = IRIS_PROGMODE|IRIS_TTNONE|IRIS_TTNEVER;rc = IRISSECURESTARTA(&pusername, &ppassword, &pexename, termflag, timeout, NULL, NULL);
Note: the %Service_Callin setting is Enabled.
| » |
I am developing a C++ based program to access the IRIS database using iris-callin.h
I need to know what dll/dlls to use for the Iris object module?
IRIS can use a KMS (Key Managment Service) as of release 2023.3. Intersystems documentation is a good resource on KMS implementation but does not go into details of the KMS set up on the system, nor provide an easily followable example of how one might set this up for basic testing.
The purpose of this article is to supplement the docs with a brief explanation of KMS, an example of its use in IRIS, and notes for setup of a testing system on AWS EC2 RedHat Linux system using the AWS KMS. It is assumed in this document that the reader/implementor already has access/knowledge to set up an AWS EC2 Linux system running IRIS (2023.3 or later), and that they have proper authority to access the AWS KMS and AWS IAM (for creating roles and polices), or that they will be able to get this access either on their own or via their organizations Security contact in charge of their AWS access.
The 2025.1.3 maintenance releases of InterSystems IRIS® data platform, InterSystems IRIS® for HealthTM, and HealthShare® Health Connect are now Generally Available (GA). These releases include the fixes for a number of recently issued alerts and advisories, including the following:
Please share your feedback through the Ideas Portal using the category Post-Release Feedback so we can b
I have always struggled with Iterating through a JSON response to pull out certain fields into a Data Class Structure to use to populate fields in a DTL. So I defined the whole structure for the following JSON, with the base structure extending Ens.Response, %XML.Adaptor, and %JSON.Adaptor.
{
"status": {
"message": "success",
"code": 200
},
"data": {
"client": "xxxxxxxxxxxxxxxxxxxxxxxx",
"entities": [
{
"id": "xxxxxxxxxxxxxxxxxx`",
"name": "xxxxxxxxxxxxxxxxx",
"totalCommentCount"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).
Hey Community!
We're happy to share a new video from our InterSystems Developers YouTube:
The third developer previews of InterSystems IRIS® data platform, InterSystems IRIS® for Health, and HealthShare® Health Connect 2026.1 have been posted to the WRC developer preview site. Containers can be found on our container registry and are tagged latest-preview.
These developer previews includes the dropping of Mac Intel support starting from 2026.1.0, and the adding back of Windows Server 2019 support to 2026.1.0.
Initial documentation can be found at these links below:
TL;DR This article explains how to deploy InterSystems IRIS Community Edition on Azure using the Azure Marketplace and a Virtual Machine. It covers prerequisites, instance selection, authentication, SSH access, first verification steps, and how to delete resources to avoid charges. The deployment can typically be done using Azure free credits and is suitable for developers who want to quickly start working with IRIS in the cloud.
Who this guide is for. This guide is intended for developers, solution architects, and DevOps engineers who want to deploy InterSystems IRIS Community Edition on Microsoft Azure. No prior Azure automation experience is required, but basic familiarity with the Azure Portal and SSH is helpful.
After following this guide, you will be able to:
Prerequisites
Deployment overview
iris password to change _SYSTEM/SYS; start a session with iris session irishttp://YOUR_VM_IP:52773/csp/sys/UtilHome.cspIf you work with Productions, highlighting connections between Business Hosts is a very convenient feature, allowing developers to get a visual representation of a data flow.
This feature works by default with all system Business Hosts. If a user writes their own Business Services, Processes, or Operations, they must implement the OnGetConnections method for this functionality to work with their custom Business Hosts (or use Ens.DataType.ConfigName properties for connections).
That said, the SMP shows only the first layer of connections of the selected Business Host. Sometimes, we need to get connections of connections recursively to build a complete data flow graph. Or we might need this connection information to check which downstream systems might be affected by a change upstream.
PEP 578 added Python Audit hooks. A rich variety of events (module load, os interactions and so on) triggers audit events which you can subscribe to.
Here's how to do that. First create an embedded python hook:
Class User.Python
{
/// do ##class(User.Python).Audit()ClassMethod Audit() [ Language = python ]
{
import sys
import time
def logger(event,args):
if event=='import':
module = args[0]
print(f"Loading {module}")
if module == "numpy":
print(f"Module {module} forbidden. Terminating process in 3.")
time.sleep(3)
Who hasn't been developing a beautiful example using a Docker IRIS image and had the image generation process fail in the Dockerfile because the license under which the image was created doesn't contain certain privileges?
In my case, what I was deploying in Docker is a small application that uses the Vector data type. With the Community version, this isn't a problem because it already includes Vector Search and vector storage. However, when I changed the IRIS image to a conventional IRIS (the latest-cd), I found that when I built the image, including the classes it had generated, it returned this error:
In Part 1, we laid the technical foundation of MAIS (Multi-Agent Interoperability Systems). We have successfully wired up the 'Brain', built a robust Adapter using LiteLLM, locked down our API keys with IRIS Credentials, and finally cracked the trick code on the Python interoperability puzzle.
However, right now our system is merely a raw pipe to an LLM. It processes text, but it lacks identity.
Today, in Part 2, we will define the Anatomy of an Agent. We will move from simple API calls to structured Personas. We will learn how to wrap the LLM in a layer of business logic, giving it a name, a

In my previous HttpRequests, I have used Content-Type = application/json but I have a vendor that is requesting we send application/x-www-form-urlencoded. How would I go about formatting the Payload as x-www-form-urlencoded?
Thanks
Hi everyone,
Does anyone know how to export projects via VSC?
I opened the project through the "InterSystems Tools" plugin (command is "Edit Code in Project") and I can correctly work on it.
However, when I try using the "ObjectScript" plugin to export the project (right click on the project -> "Export Project Contents")
This message appears and it is not possible to export the project:
I've tried also to open a new window, then a folder and finally the project, but nothing changes.
This is an example of my workspace:
.png)
Anyone knows how to do it?
Thank you!
As applications grow, every database eventually hits scaling limits. Whether it's storage capacity, concurrent users, query throughput, or I/O bandwidth, single-server architectures have inherent constraints. This guide explains fundamental approaches to database scalability and shows how InterSystems IRIS implements these patterns to support enterprise-scale workloads.
We'll explore two complementary scaling strategies: horizontal scaling for user volume (distributing computational load) and sharding for data volume (partitioning datasets). Understanding the general principles behind these approaches will help you make informed decisions about when and how to scale your IRIS applications.
The examples in this guide use InterSystems IRIS in Docker containers.
IPM version 0.10.5 has been released on January 15, 2026. This new version contains a ton of improvements and bug fixes so be sure to check it out either directly from the GitHub page or from the Community Registry!
The big changes include the following:
I wanted to try vibecoding a real backend + frontend setup on InterSystems IRIS, ideally using something realistic rather than a toy example. The goal was simple: take an existing, well-known persistent package in IRIS and quickly build a usable UI and API around it — letting AI handle as much of the boilerplate as possible. Here is the result of the experiments.
I've modified the class file, but messages still arrive as a single line (e.g., "H|.../rQ|.../rL") instead of separate lines in the ASTM service. The <ENQ>..<EOT> header looks correct, logs show no errors, and the service receives messages fine. Is there an Ensemble 2018.1 engine setting (like line terminator handling or TCP framing) to fix the line splitting?
A quick question. What's the shortcut to uncomment multiple lines of code in Studio? And what's the shortcut to comment out multiple lines of code in Studio?
Thanks in advance!
Hello! In this article, I will be discussing database degrade, a type of data integrity issue one can face when using IRIS. First, I will be going over a review of the structure of IRIS databases. I'll then discuss how database degrade can manifest and common causes of degrade issues. I'll then conclude with general tips we give our customers about how to prevent or prepare for database degrade issues.
What exactly is a database? An IRIS database is a single file that consists of a fundamental unit called the "block". It contains a number of equally-sized b

Hello everybody,
I would like to export project contents using Visual Studio Code, as well as I do with InterSystems Studio.
However, while attempting the export through the InterSystems extension I get the following error:
- There are no folders in the current workspace that code can be exported to.
These are the step to reproduce my error:
.png)
Anyone can help me solving this is