Question Eduard Lebedyuk · Jan 27, 2022

I have defined a class with a dynamic object property:

 

My class

Class test.Dyn Extends %Persistent
{

Property json As %DynamicObject;

/// do ##class(test.Dyn).test()
ClassMethod test()
{
  do ..%KillExtent()
  for len = 100, $$$MaxStringLength - 1, $$$MaxStringLength, $$$MaxStringLength+1, $$$MaxStringLength *2 {
    set sc = ..save(len)
    write "Len: ",len, " Result: ",$case($$$ISERR(sc), $$$YES: $System.Status.GetErrorText(sc), : "OK"),!
  }
}

ClassMethod save(len)
{
  set json = {}
  set stream = ..getStream(len-8) // -8 because {"a":""}
  do json.%Set("a", stream, "stream")
 
  set obj = ..%New()
  set obj.json = json
  quit obj.%Save()
}

ClassMethod getStream(len)
{
  set stream = ##class(%Stream.TmpCharacter).%New()
 
  if len<$$$MaxStringLength {
    do stream.Write($tr($j("",len)," ","A"))
  } else {
    for i=1:$$$MaxStringLength:len {
      do stream.Write($tr($j("",$$$MaxStringLength)," ","A"))
    }
    do stream.Write($tr($j("",len-i)," ","A"))
  }
  quit stream
}
}

The issue I encounter is that if a length of a serialized json property is more than 3641144 symbols, the object fails to save with the following error (either MAXSTRING or STRINGSTACK):

Length: 100 Result: OK
Length: 3641143 Result: OK
Length: 3641144 Result: OK
Length: 3641145 Result: ERROR #5002: ObjectScript error: <MAXSTRING>%GetSerial+1^%Library.DynamicAbstractObject.1
Length: 7282288 Result: ERROR #5002: ObjectScript error: <STRINGSTACK>%GetSerial+1^%Library.DynamicAbstractObject.1

Is there a workaround? I need to store moderately large jsons (10-15 Mb) and dynamic object properties allow for a very convenient access.

$ZSTORAGE is set to -1.

8
0 1260
Question Anna Golitsyna · Aug 28, 2025

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.

2
0 96
Article Sammy Lee · Aug 28, 2025 1m read

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

0
1 93
Announcement Tomo Okuyama · Aug 28, 2025

#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

0
0 97
Article James Li · Aug 28, 2025 4m read

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 --versio
0
0 92
Question Scott Roth · Aug 28, 2025

I 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 = "" {
     
1
0 109
Article Hiroshi Sato · Aug 28, 2025 1m read

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

0
0 68
Announcement Larry Finlayson · Aug 27, 2025

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
0
0 29
Article Ariel Glikman · Nov 10, 2024 3m read

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

2
1 312
Article Evgeny Shvarov · Aug 27, 2025 3m read

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 :)

0
1 121
Question Scott Roth · Aug 26, 2025

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

1
0 67
Question Rebecca Johnson · Aug 25, 2025

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

7
0 107
Question Chris Lambert · Aug 21, 2025

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

2
0 101
Announcement Larry Finlayson · Aug 25, 2025

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
0
0 29
Announcement David McCaldon · Aug 18, 2025

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 .cls files often embed SQL, HTML, Python, JavaScript, JSON, CSS, XML, a

Screenshot of syntax highlighting in Zed


12
4 424
Question Sébastien Demoustiez · Aug 22, 2025

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
}

8
0 119
Article Muhammad Waseem · Aug 18, 2025 7m read

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.

6
5 464
Article Stuart Salzer · Aug 22, 2025 26m read

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

0
1 124
Announcement Jesse Reffsin · Jul 21, 2025

#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

2
1 107
Discussion Laura Blázquez García · Aug 14, 2025

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

8
0 241