I like to install Cache Evaluation version for learning purpose. Could you please share the download link to install it? I appreciate any help you all provide. Thanks.
Over the last 9 years, I published more than 90 packages in OEX.
And over this time, conditions and environments changed.
In the beginning, there was
- no Docker
- no IPM/ZPM
- no embedded Python, no AI
- Caché, Ensemble, CSP, ZEN, .... were dominating
As time changed, also product versions and external languages changed.
Adjustment of a few packages was no issue in the beginning,
and was a matter of support quality to my "consumers".
With the actual volume, I see no way to keep this target up for all my packages.
and based on the quality checks, I have the impression it is not just my problem.
Recent
Hi Community!
Starting from January 2026, developers who turn product ideas from the Ideas Portal into real, working solutions with be awarded with 7,000 points on Global Masters and a badge.
✨ What you get:
🧙♂️ Idea to Reality Wizard badge — awarded once to community members who implement a product idea suggested at the Ideas Portal
⭐ 7,000 Global Masters points — awarded for every implemented idea from the "Community Opportunity" list.
Details:
RabbitMQ is a message broker that allows producers (those who send a data message) and consumers (those who receive a data message) to establish asynchronous, real-time, and high-performance massive data flows. RabbitMQ supports AMQP (Advanced Message Queuing Protocol), an open standard application layer protocol.
The main reasons to employ RabbitMQ include the following:
- You can improve the performance of the applications using an asynchronous approach.
- It lets you decouple and reduce dependencies between services, microservices, and applications with the help of a data message mediator, meaning that there is no need for producers and consumers of exchanged data to know each other.
- It allows the long-running processing of sent data (with the results) to be delivered after utilizing a response queue.
- It helps you migrate from monolithic to microservices, where microservices exchange data via Rabbit in a decoupled and asynchronous way.
- It offers reliability and resilience by making it possible for messages to be stored and forwarded. A message can be delivered multiple times until it is processed.
- Message queueing is the key to scaling your application. As the workload increases, you will only have to add more workers to handle the queues faster.
- It works well with data streaming applications.
- It is beneficial for IoT applications.
- It is a must for Bots’ communication.
✓ 6,717 downloads in 2025
✓ 1,101 applications all time
✓ 44,992 downloads all time
✓ 3,484 developers joined
We are hiring! 100% Remote W2 Contract | 3-6+ Months (numerous extensions likely)
Two Roles:
🔹InterSystems Engineer
🔹Epic Bridges Certified/InterSystems Engineer
Having solid experience with the below:
- Interface Development: Building and configuring message routes, business processes, and transformations using components like IRIS, Ensemble, or HealthShare.
- Interoperability Standards: Implementing and supporting workflows for healthcare standards including HL7 (v2/v3), FHIR, etc.
- System Integration: Connecting disparate health information systems to EMR like Epic Bridges, clinical
Hi folks!
How can we handle JSON boolean types in IRIS?
I'm having a UI sending me a JSON payload as:
{
"id": 1,
"strprop": "string",
"boolprop": true
}The class is
MyPackage.MyClass Extends (%Persistent, %JSON.Adaptor)
{
strprop as%String;
boolprop as%Boolean;
}And I'm trying to update an instance of a MyPackage.MyClass and I'm getting a datatype-related error, something like %JSONImportInternal+269...
How am I supposed to deal with booleans in JSON with IRIS and ObjectScript? Any best practice advices?
There are numerous excellent tools available for testing your REST APIs, especially when they are live. Postman, various web browser extensions, and even custom ObjectScript written with %Net.HttpRequest objects can get the job done. However, it is often difficult to test just the REST API without inadvertently involving the authentication scheme, the web application configuration, or even network connectivity. Those are a lot of hoops to jump through just to test the code within your dispatch class. The good news is that if we take our time to understand the inner workings of the %CSP.REST class, we will find an alternative option suited for testing only the contents of the dispatch class. We can set up the request and response objects to invoke the methods directly.
Hi, now I would like to continuous on the topic that we talk about previously
Using Postman for testing the OAuth2.0 of the InterSystems FHIR repository - Part1
.png)
Question 1: Where is my client_id and client_secret come form?
Short answer: Authentication Server.
If you don't have an Authentication Server, you may set up one as following
.png)
Provide the hostname (the host must support Https), at least 1 grand type (we choose client credential here), and SSL/TSL configuration
.png)
Input the scopes (here we input user/*.read and user/*.write, which is based on the scope support by the FHIR server (resource
Sometimes customers need a small IRIS instance to do something in the cloud and shut it down, or they need hundreds of containers (i.e. one per end user or one per interface) with small workloads. This exercise came about to see how small an IRIS instance could be. For this exercise we focused on what is the smallest amount of memory we can configure for an IRIS instance.Do you know all the parameters that affect the memory allocated by IRIS ?
Memory Settings
These are the different buckets that affect memory allocation by IRIS and its corresponding parameters:
- Global Buffers (32 MB) => Minimu
Hey Community,
Enjoy the new video on InterSystems Developers YouTube:
What is JWT?
JWT (JSON Web Token) is an open standard (RFC 7519) that offers a lightweight, compact, and self-contained method for securely transmitting information between two parties. It is commonly used in web applications for authentication, authorization, and information exchange.
A JWT is typically composed of three parts:
1. JOSE (JSON Object Signing and Encryption) Header
2. Payload
3. Signature
These parts are encoded in Base64Url format and concatenated with dots (.) separating them.
Structure of a JWT
Header
{ "alg": "HS256", "typ": "JWT"}
Payload
{"sub": "1234567890", "name": "John Doe", "itrying importing classDefinition to Iris via LoadStream() fails with <INVALID OREF>zLoadStream+1^%SYSTEM.OBJ.1 ----> InterSystems.Data.IRISClient.IRISException : Exception thrown on server (code = 1192)...
Code is here; use any valid exported ClassDefinition as File to test that:
public static void loadClassFromStream(this IRIS iris, string txt)
{
// IRISObject globalCharStr = IrisStreamExtensions.FromTxt(iris, text);
var fp = @"C:\tmp\TestClass.xml";
txt = File.ReadAllText(fp);
var stream = new MemoryStream();
var bytes =If one of your packages on OEX receives a review, you get notified by OEX only of YOUR own package.
The rating reflects the experience of the reviewer with the status found at the time of review.
It is kind of a snapshot and might have changed meanwhile.
Reviews by other members of the community are marked by * in the last column.
I also placed a bunch of Pull Requests on GitHub when I found a problem I could fix.
Some were accepted and merged, and some were just ignored.
So if you made a major change and expect a changed review, just let me know.
| # | Package | Review | Stars | I |
|---|
Anyone else is passing through this issue?
Since last week when I create a new class definition, It is created without the full name into the signature class and I have to put it by myself.
I thougth that should be any configuration about the language patterns, but I didn`t found it..png)
Thank you all
I have a Postgres table which should be migrated to IRIS. The table has a computed column, like:
CREATE TABLE example_table (
id VARCHAR(10) PRIMARY KEY,
normalized_id VARCHAR(10) GENERATED ALWAYS AS (LPAD(id, 10, '0')) STORED
);
IRIS also has the LPAD function but I can't figure out how to achieve the same result using pure SQL DDL.
Tried this:
CREATE TABLE example_table (
id VARCHAR(10) PRIMARY KEY,
normalized_id VARCHAR(10) COMPUTECODE {
set {normalized_id} = LPAD({id}, 10, '0')
}
COMPUTEONCHANGE(id))
Got the following error:
SQL Error [400] [S1000]: [SQLCODE:I'm generating a XML (Enlib.EDI.XML.Document) using a Subtransformation within a DTL. Writing this XML-Document to the filesystem works good, but in the XML-File is missing the header line (<?xml version=1.0 encoding=UTF-8?>):
.png)
What do I have to do to get the header in my XML-File?
Any help is appreciated.
Hi developers!
There is a very neat variable in IPM ${ipmdir} that lets packages be installed on a particular IRIS server and ensures that the data and resources they bring don't mess around as ${ipmdir} variable during the installation transforms into:
iris installation dir/ipm/package_name/version/whatever_you_install_here
It is very convenient, e.g., to bring some data and resource files that can be useful during the installation setup, e.g., via FILECOPY. Indeed, suppose you bring some csv_file, e.g. titanic.csv via FILECOPY as:
<FileCopy Name="data/titanic.csv" Target="${ipmdir}data/titanic.csv"/>or even the whole folder of data in the source code repo into the package:
<FileCopy Name="data/" Target="${ipmdir}data/"/>And in the case of Iris in Docker it resides in:
/usr/irissys/ipm/package_name/1.0.0/data/titanic.csv
This is all great, but is there any way for the installed code to determine the location of the data files? It'd be neat to let the installed app know somehow where is the data that came with it? Could it be the method in the IPM client that will resolve ${ipmdir} for the app?
Over the last year, the CCR development team has prioritized changes to the CCR application to better expose and encourage best practices for using CCR. This article will highlight some of the areas that we've focused on:
- Organization Dashboard
- System Alerts
- Branch Hygiene
In each of these areas, we have increased the visibility of potential CCR usage issues and given users tools to proactively address them.
Organization Dashboard
We have continued to build out the available information on the Organization details page
.png)
The overview is a great place to get an overall sense of your
I know this is not recommended but I need to investigate a bug and to modify some system classes. When I set the "Mount as read-only" flag to "off" IRIS says:
ERROR #43: the write daemon failed to set the READ/WRITE flag in IRISLIB
This database is mounted as read-only due to 'Failed to access iris.lck file'!
Hi, Community!
Do you need a way to securely manage your passwords, API keys, and other credentials? See how the Secure Wallet in InterSystems IRIS® data platform can help:
Hello InterSystems EHR community,
InterSystems Certification is currently developing a certification exam for InterSystems EHR integration specialists, 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 November 10, 2025.
Beta testing will be
Hey Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Leading Healthcare Digitalization - Success Story from Hospital Olomouc @ Ready 2025
We are a group of interface analysts in a healthcare setting, running IRIS for Health 2024, having upgraded over time from an old ENSEMBLE environment. We have been working on a wish list of development goals, but are having trouble finding the correct, best practice method/path for getting to what we envision.
Current state: We run IRIS for Health on a Redhat 8 virtual machine. We run Interoperability productions (IE.cls) out of 6 namespaces. We have a dev/test box and a production box.
- InterSystems EMPI (formerly HealthShare Patient Index) – Virtual February 3-5, 2026
-
- Configure, tune, and work with InterSystems EMPI, an Enterprise Master Person Index
- This 3-day course teaches the installation, configuration, and use of InterSystems EMPI™ (formerly HealthShare® Patient Index). Starting with version 2025.1, HealthShare Patient Index has been renamed to InterSystems EMPI, but the core functionality remains the same.
- The first half of the class focuses on person identification issues and the tools for reviewing records and record matches.
Hello community!
We are delighted to invite all our customers, partners, and community members to InterSystems France & Benelux READY 2026!
This event promises to be an interactive experience highlighting inspiring case studies, technological innovations, and roadmaps for the coming year in the fields of healthcare and data platforms. Hands-on demonstrations will also allow you to explore the latest developments in a tangible way.
➡️ InterSystems Benelux & France Summit 2025
🗓 Dates: February 3-4, 2026
📍 Location: Les Jardins de Saint-Dominique, Paris, France
Hello everyone,
InterSystems Certification is still looking for InterSystems EHR (TrakCare/Intellicare) integration specialists to help us beta test our new InterSystems EHR Integration Specialist Certification exam. This is a great way to earn the certification for free! The deadline to participate in the beta test has been extended to April 30th.
Please note, there are eligibility requirements for this exam. For details, please see the original announcement. Please contact certification@intersystems.com with any questions.
Thank you!
If you want to generate JWT from x509 cert/key, any operation (including reading) on %SYS.X509Credentials requires U on %Admin_Secure resource.%Admin_Secure is required because %SYS.X509Credentials is persistent, and it's implemented this way to prevent all users from accessing private keys.
If %Admin_Secure resource is not available at runtime, you can use the following workaround.
Upon reviewing the code for JWT generation, I discovered that the JWT code utilizes %SYS.X509Credentials solely as a source of runtime data for PrivateKey, PrivateKeyPassword, and Certificate. As a workaround, you
SETassigns value to the variable at RUNTIME.
#DIM declare the variable and it's Data Type at COMPILE TIME.
SET |
#DIM |
| Makes the variables Dynamic. | Improves Readability. |
| No Data Type Declaration. | Enables IDE auto-completion. |
| Runtime | Useful for Object references. |
#DIM name As%StringSet name = "Micheal Scott"#DIM age As%NumericSet age = 36#DIM employer As App.Employer ; compile timeSet employer = ##class(App.Employer).%New() ; runtime

