Studio's Find In Files finds nothing if CLS routines are included. The error is WIDE CHAR. After using ##class(%Studio.Project).FindInFiles programmatically and then ZW after the same error I strongly suspect that CodeWalkopdatecopyopt in EnsLib.InteropTools.HL7.Cloverleaf.Parser.cls is to blame. I cannot even open this class, unlike other classes from EnsLib.InteropTools.HL7. This error prevents searching even if System Items are excluded and I would peg EnsLib as System. Any remedy besides updating IRIS? Assuming this is fixed in later IRIS versions.
As part of a recent documentation technical project to optimize the search, I needed to use Embedded Python in my ObjectScript code. The main blocker was passing a Python list from a Python class method to a ObjectScript method. Sending the list by reference to the python method, populating it with the Insert() method, and returning the reference to the ObjectScript method resulted in an list with type %SYS.Python, a process that was straightforward but not efficient.
I explored an alternative method: converting a Python list to an ObjectScript list using JSON as the intermediary format. This a
#InterSystems Demo Games entry
⏯️ Autonomous Business Intelligent Clerk (ABiC) - Combining InterSystems BI and Generative AI
Our Autonomous Business Intelligent Clerk, or ABiC for short, is a prototype revolutionizing how companies process data and make decisions. Normally, to get insights from data, you’d need IT knowledge or expertise in statistics. But with ABiC, that’s no longer necessary. All you have to do is ask your question in plain language. ABiC understands your interests and intentions, then shows a clear dashboard to guide your decisions. With ABiC, complex data is autonomously analyzed and turned into answers that support users, helping to accelerate business processes. This demo sends the metadata of InterSystems BI cubes to LLM. How does it work? Check out the video for more details!
Presenters:
🗣 @Tomo Okuyama, Sales Engineer, InterSystems
🗣 @Nobuyuki Hata, Sales Engineer, InterSystems
🗣 @Tomoko Furuzono, Sales Engineer, InterSystems
🗣 @Mihoko Iijima, Training Sales Engineer, InterSystems
Disclaimer: the following tutorial attempts to install qpdf-12.2.0 and libreoffice-25.8.1 for HSCV2025.8
Examples for Installing qpdf
Linux & Ubuntu
# 1. Download qpdf-12.2.0 AppImage programatically, or manually from https://github.com/qpdf/qpdf/releases/tag/v12.2.0
wget -O qpdf-12.2.0.AppImage https://github.com/qpdf/qpdf/releases/download/v12.2.0/qpdf-12.2.0-x86_64.AppImage
# 2. Make the AppImage executable
chmod +x qpdf-12.2.0.AppImage
# 3. Add executable to system PATH as “qpdf”
sudo mv qpdf-12.2.0.AppImage /usr/local/bin/qpdf
# 4. Verify you’re now running version 12.2.0
qpdf --versioI had a need for a Filter, but did not want to recreate the wheel by creating another Data Lookup Table, so instead I created a Linked Table that points to a MS SQL Table outside of IRIS.
Once I had the Linked Table, I created a Class Method Function that would query the Linked Table and return a 1 if a result came back.
ClassMethod CheckPDMProviderType(pInput As%String) As%Boolean
{
set ExtDisplay = ""
&sql(SELECT SecurityGroup_k INTO :ExtDisplay
FROM osuwmc_CPD_SQL.Ref_SecurityGroup WHERE PDMExtDisplay = 1AND SecurityGroup_k = :pInput)
if ExtDisplay = "" {
InterSystems FAQ rubric
There is data, such as execution log data, that you do not want to return to its previous state even if a rollback occurs during a transaction. The above requirement can be met by placing that data in the IRISTEMP database, which will not be rolled back.
Temporary Globals and the IRISTEMP Database
By mapping the table entities you do not want to roll back to this database, you can retain the information after the rollback.
However, the contents of this database will be cleared when IRIS is restarted, so if you want to keep it permanently, you will need to copy it to
HealthShare Unified Care Record Fundamentals – Virtual* September 15-19, 2025
*Please review the important prerequisite requirements for this class prior to registering.
- Learn the architecture, configuration, and management of HealthShare Unified Care Record.
- This 5-day course teaches HealthShare Unified Care Record users and integrators the HealthShare Unified Care Record architecture and administration tasks.
- The course also includes how to install HealthShare Unified Care Record.
- This course is intended for HealthShare Unified Care Record developers, integrators, administrators
IAM - InterSystems API Manager is a great tool for monitoring your traffic. If you are trying to use it in your Kubernetes cluster you may have tried doing a deployment similar to this one:
apiVersion: intersystems.com/v1alpha1
kind: IrisCluster
metadata:
name: iris
spec:
licenseKeySecret:
name: iris-key-secret
configSource:
name: iris-cpf
imagePullSecrets:
- name: intersystems-pull-secret
topology:
data:
image: containers.intersystems.com/intersystems/iris-arm64:2024.1
compatibilityVersion: "2024.1.2"
mirrored: false
webgatewa.png)
Hi Community,
We're super excited to share the new video in the "Rarified Air" series on our InterSystems Developers YouTube:
⏯ Practical Cybersecurity Measures for Stronger Organizational Resilience
Hi folks!
It is very easy to import CSV data into IRIS. But what if we want to preserve the original IDs in CSV?
Recently I came across with the situation when I needed to import two csv's into IRIS which were linked by one column referencing to another csv's col: a typical Foreign Key and Primary Key situation, where csv1 contains this column as Primary Key, and csv2 as Foreign key with id's related to csv1.

The image is generated by ChatGPT so don't blame it - it tried its best to generate countries as primary keys with countries.csv-cities.csv relationship :)
Hi,
I need a custom operation on patient type that will receive a business identifier and will search them and for each paient it will return a $everything for all the found patients written with object script
Hi Community,
Please welcome a new feature on Developer Community – the ability to add a link to the official InterSystems Documentation directly at the end of your post.
How it works
When publishing an article, paste the relevant URL from docs.intersystems.com into the InterSystems Documentation link field.
.png)
SUB-AGENT auto stopping

I have a need to create a specific Search Table outside of the EnsLib.HL7.SearchTable specifically for HL7 MFN messages in HealthShare Provider Directory.
Our Code is created in a different namespace then the main HSPD namespace and is mapped within the HSPD namespace mapping.
I created a copy of EnsLib.HL7.SearchTable, named OSU.HL7.SearchTable what all needs mapped to make this new search table available in HSPD namespace?
If I go to Global within the Custom Code Namespace, I cannot see my new Search Table being created.
What am I missing to make sure that the OSU.HL7.SearchTable availa
Hi Community!
Welcome to Issue #24 of the InterSystems Ideas newsletter! Let's look at the latest news from the Ideas Portal, such as:
✓ General Statistics
✓ Recently implemented ideas by InterSystems
✓ Recently implemented ideas by Developer Community members
.png)
I'm trying to catch some WorkQueue errors that are happening on 2019 but not on more recent versions.
I'm getting an error when trying to call a class method via a workQueue. It functions properly in 2024.1. When calling the method, it immediately errors. I have logging at the top of the method that never gets set.
The error being returned by Iris is simply an "ERROR #5039: An error occurred while calling function s %sc=##class(|"NS"|Path.To.Class).ClassMethod(.%p1,.%p2)"
The parameter counts match and are appropriate for the method.
When I catch the full stack, it's erroring on the Work
Hello,
I'm trying to get the Reply Action Code to work with the error message text.
I have this ACK:
MSH|^~\&|APP|FACIL|||20250821143621||ACK|CUEACK_20250821143621|P|2.4 MSA|AE||Failed to queue message
This is some of the Action Codes I've tried:
- E*Failed to queue message=S
- E*Failed=S
- E*"Failed to queue message"=S
- :E*Failed to queue message=S
- :?E*Failed to queue message=S
It's not suspending the message however.
What am I doing wrong?
Thank you
Trying to import a .csp with VS code appears to do nothing.
Making a change to the file, saving it and then doing "Import and compile" results in no output and there is no change to the file on the server.
Plugin version is 3.0.5
Developing with InterSystems Objects and SQL – In PersonSeptember 15-19, 2025
- This 5-day course teaches programmers how to use the tools and techniques within the InterSystems® development environment.
- Students develop a database application using object-oriented design, building different types of IRIS classes.
- They learn how to store and retrieve data using Objects or SQL, and decide which approach is best for different use cases.
- They write code using ObjectScript, Python, and SQL, with most exercises offering the choice between ObjectScript and Python, and some exercises requiri
I’m pleased to announce the release of tree-sitter-objectscript, a new open-source tree-sitter grammar that brings first-class ObjectScript support to modern editors. If you caught the preview at READY ’25, you’ll be glad to know it’s now up on Github:
https://github.com/intersystems/tree-sitter-objectscript
What Does It Provide?
- Fast & Precise Parsing: A powerful grammar for ObjectScript, enabling real-time syntax parsing, smart highlighting, and structural editing in modern code editors.
- Polyglot-Awareness: ObjectScript
.clsfiles often embed SQL, HTML, Python, JavaScript, JSON, CSS, XML, a

Hello,
I have a main dispatcher (that extends%CSP.REST) that contains:
<Routes>
<Map Prefix="/v([0-9]{1,2})/news" Forward="API.Dispatch.news"/>
</Routes>
And I have the sub-dispatcher that contains:
<Routes>
<Route Url="/:id" Method="GET" Call="NewsGetItem"/>
</Routes>
If I try to access this route:
https://mydomain.com/mobile/api/v4/news/123
It doesn't work (404).
But strangely enough, it works (200):
https://mydomain.com/mobile/api/v4/news/test
The ClassMethid is OK:
ClassMethod NewsGetItem(version As %Integer, id As %Integer) As %Status
{
w id
Quit $$$OK
}
Interoperability on Python (IoP) is a proof-of-concept project designed to showcase the power of the InterSystems IRIS Interoperability Framework when combined with a Python-first approach.IoP leverages Embedded Python (a feature of InterSystems IRIS) to enable developers to write interoperability components in Python, which can seamlessly integrate with the robust IRIS platform. This guide has been crafted for beginners and provides a comprehensive introduction to IoP, its setup, and practical steps to create your first interoperability component. By the end of this article, you will get a clear understanding of how to use IoP to build scalable, Python-based interoperability solutions.
.png)
InterSystems OMOP, The Cloud Service (Troy)
In this case, a robot is nothing like Gort from the movie “The Day the Earth Stood Still” or any other humanoid robot from science fiction. Nor is this Robot the one-armed automated welder from a real-world automotive assembly line. This Robot is a program that controls another program. You might want this for automated testing or to capture application logic from an application for which you don’t have the source, and the application’s author lacked the kindness or foresight to provide an API for its capabilities.
In this article, I will present two ways to implement a robot with InterSystem
Like %GlobalCharacterStream, %GlobalBinaryStream, and others, as been deprecated in favor of %Stream.GlobalCharacter, %Stream.GlobalBinary, will this deprecated libraries one day no longer work?
#InterSystems Demo Games entry
⏯️ Closing the Scientific Knowledge Gap with AI
For venture capitalists (VCs), evaluating research can be challenging. While researchers typically possess years of training and deep expertise in their field, the VCs tasked with assessing their work often lack domain-specific knowledge. This can lead to incomplete understanding of scientific data and an inability to direct organizational initiatives. To solve this problem, we have designed a solution that empowers VCs with AI-driven due diligence: ResearchExplorer. ResearchExplorer is powered by InterSystems IRIS and GPT-4o to help analyze private biomedical research alongside public sources like PubMed using Retrieval-Augmented Generation (RAG). Users submit natural language queries, and the system returns structured insights, head-to-head research comparisons, and AI-generated summaries. This allows users to bridge expertise gaps while securely protecting proprietary data.
Presenters:
🗣 @Jesse Reffsin, Senior Sales Engineer, InterSystems
🗣 @Lynn Wu, Sales Engineer, InterSystems
Given:
class Foo.Bar extends Ens.BusinessOperation
{
Parameter SETTINGS = "Whatever:Basic";
}
class Foo.Baz extends Foo.Bar
I want to somehow drop "Whatever" as a setting from Foo.Baz. How can I do this?
I would like to know which are the best practices of using Streams in Interoperability messages.
I have always use %Stream.GlobalCharacter properties to hold a JSON, or a base64 document, when creating messages. This is fine and I can see the content in Visual Trace without doing anything, so I can check what is happening and resolve issues if I have, or reprocess messages if something went wrong, because I have the content.
But I think this is not the best way of using Streams. After a couple of years, I ussually have space problems: messages seems not to purge correctly (I don't know yet i
While starting with Intersystems IRIS or Cache, developers often encounter three core concepts: Dynamic Objects, Globals & Relational Table. Each has its role in building scalable and maintainable solutions. In this article, we'll walk through practical code examples, highlight best practices, and show how these concepts tie together.
1. Working with Dynamic Objects:
Dynamic objects (%DynamicObject and %DynamicArray) allow developers to manipulate JSON-like structures directly in Objectscript. They are especially useful for modern applications that need to parse, transform or generate JSON.
Trying to create a new SQL Storage map on existing cache Global in the following format - ^MYGLO("R",rec)=data where the 'data' is built using $zel. e.g. $zel(data,1)="p1", $zel(data,2)="p2" etc... and the ^MYGLO("R",123)=data.
I'm having 2 issues. First, using the SQL Storage map wizard, I cannot figure out how to convey data in $zel format in the "Delimiter" field.
Second, since I couldn't figure that out, I tried to use the "Use Retrieval Code" option and entered the following line for the P1 property:
but get an error when compiling saying I cannot reference another field:
.png)

