Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ InterSystems IRIS & IRIS Health as a Managed Service @ Ready 2025
Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ InterSystems IRIS & IRIS Health as a Managed Service @ Ready 2025
One objective of vectorization is to render unstructured text more machine-usable. Vector embeddings accomplish this by encoding the semantics of text as high-dimensional numeric vectors, which can be employed by advanced search algorithms (normally an approximate nearest neighbor algorithm like Hierarchical Navigable Small World). This not only improves our ability to interact with unstructured text programmatically but makes it searchable by context and by meaning beyond what is captured literally by keyword.
In this article I will walk through a simple vector search implementation that Kwabena Ayim-Aboagye and I fleshed out using embedded python in InterSystems IRIS for Health. I'll also dive a bit into how to use embedded python and dynamic SQL generally, and how to take advantage of vector search features offered natively through IRIS.
Keywords: IRIS, Agents, Agentic AI, Smart Apps
Transformer based LLMs appear to be a pretty good "universal logical–symbolic abstractor". They started to bridge up the previous abyss among human languages and machine languages, which in essence are all logic symbols that could be mapped into the same vector space.
Wondering for 3 years we might be able to just use English (etc human natural languages) to do IRIS implementations as well, one day.
Possibly tomorrow all machines, software and apps will be "intelligent" enough to interact with users in any human languages to get
.png)
Hey Developers,
It's time to announce the Top InterSystems Developer Community Authors of 2025 🎉
We are pleased to reward the most active contributors across all regional DC sites (EN, ES, PT, JP, CN, and FR):
(1).jpg)
.png)
IRIS makes SIEM systems integration simple with Structured Logging and Pipes!
We will start from the examples that we faced as Data Science practice at InterSystems:
This is an excellent candidate for a developer community post (like Dev.to, Medium, or the InterSystems Community). It bridges the gap between high-level architecture and hands-on implementation.
Here is the summarized article format.
As applications scale, handling heavy computational tasks synchronously becomes a bottleneck. Whether it's processing large data sets, sending high-volume emails, or managing API integrations, a decoupled architecture is essential.
I’ve recently developed %ZQueue, a process-ba

The Clinical Staff Master Data Management (CSMDM) system is a full-stack healthcare integration application built on InterSystems IRIS for Health. It centralizes and standardizes clinical staff metadata into a single authoritative repository, exposed through RESTful CRUD APIs and reusable backend methods.
The platform eliminates fragmented lookup tables and hardcoded mappings that commonly cause errors in HL7 and FHIR integration workflows, ensuring data consistency and interface reliability.
This approach can be applied to other domains
Hi everyone,
This is the first time I'm dealing with a request of modifying a variable value in a UDF OnSQLTrigger on InterSystems TrakCare.
I can't find any documentation to address this issue, but basically, my goal is to modify the value of one of the fields in a table when it is first inserted.
This is basically what the code should do, namely, to change the content of the %d variable at a specific key.
I have done quite a bit of debugging and seen that the %d has been correctly modified after I set %d(51) = <something>, but the value saved in the database it is still the original
Hi developers!
I'm testing vibecoding with ObjectScript and my silicon friend created a code-block that got me thinking "what's wrong"?
Here is the piece of code:
for i=0:1:(json.%Size()-1) {
set p = json.%Get(i)
if (p="value1")!(p="value2") {
quit1
}
AI wanted to quit from a method with a return value. Good intention, but bad use of the command.
And ObjectScript compiler compiles this code with no error(?) (syntax linter in VSCode says it's a syntax, kudos @Brett Saviano ).
But in action, it produces <COMMAND>, of course.
Wanted to share with you as this is a good case wh
Hi Developers!
Currently I have 2000+ lines in a class, and I think it's a lot already? What are the best practices?
if 10K lines OK? How do you cope with it? Please share?

Greetings,
As a long time Cache developer is there a way to get a copy of the Cache Studio that supports IRIS 2024.3? I do not have a WRC account? I need Studio just to experiment, not to build commercial software.
Thank you,
Everardo
Hi, Community!
👩⚕️If you need to access clinical data at scale, the InterSystems Bulk FHIR Coordinator can help!
Using the InterSystems Bulk FHIR Coordinator to Extract Clinical Data
Hey Community,
More than 1,100 applications are already available for everyone to download on the InterSystems Open Exchange.
And now it's time to announce the best developers and the most downloaded apps of 2025!
.jpg)
Let's take a closer look at our heroes and their apps:
We use local containers a lot for evaluation and development with Health Connect and other IRIS based applications.
When evaluating Podman Desktop on Windows as replacement for Docker Desktop, we are experiencing an issue with the durable %SYS:
The only way it works is when we use a named volume which then is located inside the WSL-Podman-Machine under /var/lib/containers/storage/volumes/...
With Docker Desktop we could simply bind-mount a folder inside our workspace, and could browse the folders inside the durable %SYS, this does not work with podman, IRIS won't start because of security p
When I build docker containers my build log usually looks like this:
#924.94 Using 'iris.cpf' configuration file
#925.82
#927.55 Starting Control Process
#927.55 Global buffer setting requires attention. Auto-selected 25% of total memory.
#927.55 Allocated 4999MB shared memory
#927.553915MB global buffers, 391MB routine buffers
#929.84 This copy of InterSystems IRIS has been licensed foruse exclusively by:
#929.84 No local key detected, trying license server.
#929.84 Copyright (c) 1986-2026 by InterSystems Corporation
#929.84 Any other use is a violation of your license Hello Team,
I am currently working with the CD Ruby machine, which is connected through DIGI. When I click on the “Test Link” option on the instrument, I can see the following behavior in Wireshark logs:
Ensemble sends an ACK (06) after receiving ENQ (05), followed by EOT (04) (somewhat like above photo). However, when another ENQ is received, Ensemble does not send an ACK in response. As a result, the instrument displays a failure message.
Also attaching the Ensemble settings:
.png)
I am using a TCP service with an inbound adapter configured for the ASTM protocol. Is there a way to configure
In the previous article, we examined how we can use the %CSP.Request and %CSP.Response classes to test a REST API without having the API fully set up and accessible across a network with an authentication mechanism. In this article, we will build on that foundation to perform some simple unit testing of one of our REST API methods.
The unit testing framework requires a couple of setup steps before we can use it. First, we have to ensure that the unit testing portion of the management portal is enabled so we can review the results of our tests. It is located under System Explorer > Tools > Uni

Hey Developers,
Watch this video to learn about automating the provisioning and management of FHIR services:
⏯ Automating Provisioning and Management of FHIR Services @ Ready 2025
Hello DC community,
InterSystems Certification is currently developing a certification exam for ObjectScript developers, and if you match the exam candidate description below, we would like you to beta test the exam! The exam will be available for beta testing starting February 18th, 2026.
Beta testing will be completed May 4, 2026.
As a beta tester, we ask that you schedule and take the exam by May 4, 2026. The exam will be administered in an online proctored environment free of charge (the standard fee of $150 per exam is waived for all beta teste
We are attempting to "Repoint" old class data to new class data to save disk space and data redundancy across multiple tables. This works to a point. In essence the two classes are sharing the same data / Index / stream globals. But if an ID in the Old_Class is opened, a property is modified, and saved the property that is in the New_Class (but not in the Old_Class) is NULLed / blanked.
Simplified explanation of data and what’s occurring.
| Old Class | Values | New Class | Values | |
| First_Name | John | First_Name | John | |
| Middle_Initial | Q | Middle_Initial | Q | |
| Last_Name | P |
Intersystems IRIS Productions provide a powerful framework for connecting disparate systems across various protocols and message formats in a reliable, observable, and scalable manner. intersystems_pyprod, short for InterSystems Python Productions, is a Python library that enables developers to build these interoperability components entirely in Python. Designed for flexibility, it supports a hybrid approach: you can seamlessly mix new Python-based components with existing ObjectScript-based ones, leveraging your established IRIS infrastructure. Once defined, these Python components are manage
.png)
Welcome to the finale of our journey in building MAIS.
Now, the stage is set. Our agents are ready, defined, and eager to work. However, they remain frozen in time. They require a mechanism to drive the conversation, execute their requested tools, and pass the baton to one another.
Today, we will assemble the Nervous System. We are going to implement the Orchestrator using InterSystems BPL, creating a living, breathing loop t

Hi Community,
We're happy to announce that registration for the event of the year — InterSystems Ready 2026 — is now open. This is the premier global summit for the InterSystems technology community – a gathering of industry leaders and developers at the forefront of their respective industries. This event attracts a wide range of attendees, from C-level executives, top subject matter experts and visionary leaders, managers, directors and developers. Attendees gather to network with peers, connect with InterSystems partners, learn best practices and get a firsthand look at upcoming features and future innovations from InterSystems.
🗓 Dates: April 27 - 30, 2026
📍 Location: Gaylord National Resort & Convention Center, National Harbor, Maryland, USA
.jpg)
Hi,
I'm having a problem with %JSON.Adaptor and "list of" binding.
For exemple, this class with a property "oazisCode As list of %String".
Class User.ADGroup Extends (%Persistent, %JSON.Adaptor)
{
/// Code interne
Property code As %String;
/// Libellé
Property text As %String(MAXLEN = "");
Property oazisCode As list Of %String;
}The first time call to %JSONImport works properly
s r = ##class(User.ADGroup).%New()
s json = {"code": "123", "text":"456", "oazisCode": ["1","2"]}
d r.%JSONImport(json)
w r.oazisCode.Size
2If I call %JSONIMport a second time with another jso
I was having trouble with some dimension based calculated members defined in Analyzer. They would work and then not work. At one point I had two identical calculated measures, same code, same specification and one would work and one would not. I was trying to set them up in "shared storage", that checkbox in the calculated member dialog that should allow the measures to be used across multiple pivots.
My hypothesis to the inconsistent behavior of the calculated members was that their definitions were somehow being mangled behind the scenes when the Analyzer logged the "shared code" to cl
Hello,
First of all thanks for your time reading our question, and thanks for your replies and help
We would need to know if a patient has less than 65 years old, using their birthday from the PID 7.1
So far we have developed the following code:
//19760422set nacimiento = request.GetValueAt("PID:DateTimeofBirth.Time") $$$LOGINFO("nacimiento: "_nacimiento) //22/04/1976 set nacimientoFormateado = ##class(Util.FuncionesComunes).DateFormatConvertToXML(nacimiento) // "" set nacimientoFormateado65 = $extract($system.SQL.DATEADD("yy",65,nacimien
.png)
Hi communauty
I've two columns in my table and the type must be interval of integer values for example : age must be interval between [2 and 6] years and wigth between [10 and 30 ] Kg , how can i define them when creating my table?
thank's
Hi all,
I've created a method to calculate the age of a person, or the age of a process, contract or other stuff as you want.
/// Calculate the age from date of birth and other date (by default shoud be today).
/// <b>dateOfBird</b> Date of birth in cache format. ie. $ZDH("1972-01-01",3)
/// <b>day</b> Date to calculate to. ie: $H
ClassMethod AgeAt(dateOfBirth, day) As %Integer{
quit:dateOfBirth=""
quit:day=""
set yeardob=$SYSTEM.SQL.DATEPART("year",dateOfBirth)
set yearday=$SYSTEM.SQL.DATEPART("year",day)
set years=yearday-yeardob
kill yeardob,