We are implementing delegated auth between Kong Gateway and IRIS. Kong is correctly configured to forward JWT authenticated requests with consumer headers (X-Consumer-Username, etc.) to IRIS, but the ZAUTHENTICATE routine (deployed in the %SYS namespace) never executes, leaving ZW ^ZAUTHLOG empty despite successful header delivery.
InterSystems Change Control: Tier 1 Basics - Virtual January 21-23, 2026
Defining my first REST API within InterSystems using iris-rest-Api-template as a basis and I am seeing if someone could provide me some guidance to see if I can make it work.
In some of my other posts, I have been trying to come up with a way for our Enterprise Application Development team which works with .Net to build Applications to make a REST call to our instance of InterSystems to query some of the Cache Tables we have defined.
Using the iris-rest-api-template, I have created the osuwmc.DataLookup.REST.Base.cls
Hey everyone.
I have been taking a look at the External Language Server functionality to hook into some Dotnet functions, and I am hitting a bit of a wall.
Based on the example in the documentation here I can get the same result doing:
ENV>Set netGate = $System.external.getDotNetGateway()
ENV>Set netProxy=netGate.new("System.DateTime",0)
ENV>Write netProxy.Now,!
2025-12-3114:37:58.6022705However, if I then try another system class, I get an error:
Table of Contents
- Purpose of the article
- What containers are and why they make sense with IRIS
2.1 Containers and images in a nutshell
2.2 Why containers are useful for developers
2.3 Why IRIS works well with Docker - Prerequisites
- Installing the InterSystems IRIS image
4.1 Using Docker Hub
4.2 Pulling the image - Running the InterSystems IRIS image
5.1 Starting an IRIS container
5.2 Checking container status
5.3 Executing code in the container terminal
5.4 Accessing the IRIS Management Portal
5.5 Connecting the container to VS Code
5.6 Stopping or removing the container
5.7 Setting a specific password with a bind mount
5.8 Using durable %SYS volumes
5.8.1 What gets stored with durable %SYS
5.8.2 How to enable durable %SYS - Using Docker Compose
6.1 Docker Compose example
6.2 Running Docker Compose - Using a Dockerfile to run custom source code
7.1 Dockerfile example
7.2 Docker Compose example
7.3 Understanding layers, image tagging and build vs. run time
7.4 Source code and init script
7.5 Building the image with Dockerfile
7.6 Running instructions in the containerized IRIS terminal - Conclusion and what’s next
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.
1. vscode extensions : intersystems.language-server-2.8.0@linux-arm64.vsix
2. api/atelier web application is enabled
3. vscode connect failed.
.png)
The most upvoted idea on the InterSystems Ideas Portal—garnering 74 votes—requests a lightweight version of IRIS. While the platform has grown into a powerful data engine, many projects require only its SQL database capabilities. This article demonstrates how to build an unofficial, compact IRIS Community Edition image focused solely on core database functionality, reducing the image size by over 80%.
⚠️ Disclaimer
This project produces an unofficial, experimental image of InterSystems IRIS Community Edition.
- Not supported or endorsed by InterSystems.
- Use at your own risk. The modifications remove core platform features and may break compatibility with tools, APIs, and expected behaviors.
- No warranties or guarantees apply, including fitness for production use.
- Intended only for educational and experimental purposes by advanced users.
Why a Lightweight IRIS?
While IRIS today includes rich functionality—interoperability, analytics, machine learning, system management, etc.—many projects only require its core SQL capabilities. The official Community Edition Docker image is approximately:
- Disk usage: 3.5–3.8 GB
- Compressed size: ~1.1 GB
IRIS Light reduces that to:
- Disk usage: ~575–583 MB
- Compressed size: ~144–148 MB
This makes it suitable for:
- Microservice or containerized SQL use
- CI pipelines with faster startup and pull
- Horizontal scaling where full features are unnecessary
There is a Master Table within IRIS that I am populating from Epic but want to share it with our Enterprise Application Development Team (Web). As a test I was able to use _SYSTEM from postman to execute the following.
POST /api/atelier/v1/xxxx/action/query HTTP/1.1
Host: xxxxxxxx
Content-Type: application/json
Authorization: ••••••
Cookie: CSPSESSIONID-SP-443-UP-api-atelier-=00f0000000000AKyLjBfUvU$MpFD8UT8y$EoNKNw1ixZeXN4_Q; CSPWSERVERID=hzZAT5rb
Content-Length: 86
{"query": "SELECT * FROM osuwmc_Epic_Clarity.DepartmentMaster WHERE ID = '300000000'"}Dear Community,
As the 🎄 Festive Season 🎄 approaches, we’re excited to send our warmest wishes your way. May your holidays be filled with the joy of 🧑💻 learning, 🫂 connecting with fellow developers, and the thrill of new ideas and challenges waiting in the year ahead!
(1).jpg)
Looking back on 2025, we’re delighted to celebrate another year of remarkable achievements together with YOU, our incredible members:
I am migrating from HealthShare 2015 to Health Connect 2025 as part of an infrastructure upgrade. We have several C# .NET Razor web apps that interact with HealthShare using the InterSystems.Data.CacheClient assembly, and the Cache Object Binding Wizard for .NET to build the C# proxy classes. This has worked flawlessly for about 6 years.
The demo is based on the raw class descriptions.
The data classes used are Address, Person, Employee, Company
For a more attractive demo, a JSONtoString method by ID was added.
Hi all, it's me again for sharing what I am studying recently.😓
Recently, I am studying how to setup OAuth2 authentication for the InterSystems FHIR repository. And I found the following articles are very good and easy to follow.😁
– 35 new announcements
– 40 new questions
– 7 new discussions
✓ 283 new members joined in December
✓ 15,873 posts published all time
✓ 18,218 members joined all time
Has anyone tried to authenticate IRIS client in Snowflake using Key Pair Auth as described in this doc?
I have been struggling sometime with trying to take a FHIR Bundle Response, extract the "entry.resourceType", extract the MRN and Name from the Patient FHIR Response...
Going through learning.intersystems.com, it suggested that I try using fhirPathAPI to parse and search my response for certain values, however I am not sure my syntax is correct. Using the AI code, it suggested to set my tree = "Bundle.entry.resource.resourceType"
I was wondering if anyone had a way to automate creating the Query String for a FHIR Request?
Using HS.FHIRServer.Interop.Request in my development I have to specify the following...
I was wondering.... if my source had variable number of fields if there was a way to automate the build for the QueryString when doing a Patient Search?
I am trying to replicate a way to use FHIR as a way to query the EMR instead of using a MS SQL Stored Procedure that is populated via HL7 ADT to query.
Using a WSDL and the SOAP wizard I created a WebServiceClient, and Operation to send an encoded message to a Vendor. But the vendor is now sending back an HL7 in the SOAP response.
I tried updating the Operation to Extend EnsLib.HL7.Operation.ReplyStandard, but still use the EnsLib.SOAP.OutboundAdapter. When I did this it broke my Operation and would not compile with the following error...
I am looking for a way to capture Data Quality issues with the Source data that is populating HealthShare Provider Directory. 1 way is to use Managed Alerts, but since it could be multiple Providers and different messages it seems silly to alert on every message that has the error. Instead, I was thinking of using the Workflow Engine so it could populate a Worklist for someone to review and work.
Looking over the Demo.Workflow Engine example, I am not comprehending on how to send a task to the Workflow manager to populate the worklist from a DTL.
According to the Documentation EnsLib.Workflow.TaskRequest has the following fields...
- %Action
- %Command
- %FormFields
- %FormTemplate
- %FormValues
- %Message
- %Priority
- %Subjext
- %TaskHandler
- %Title
- %UserName
I want to be able to capture the Source, Session ID, and any other Identifiers outside of the Error so it will show up on the Task List.
I am struggling how to build a csp template for me to be able to capture additional fields to send to the Workflow Operation.
Hey Developers,
Enjoy the new video on InterSystems Developers YouTube
⏯ HealthShare Vision & Roadmap - Fueling Faster AI Adoption Through Trusted Health Data @ READY 2025
I'm new to HealthShare. I've installed a demo using the HS.Util.Installer helper, now I'm playing with its FHIR Gateway (which is the HSFHIR namespace). When I try to create a new resource of type Patient using HTTP POST, HealthShare responses with
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "not-supported",
"diagnostics": "<HSFHIRErr>InteractionNotSupported",
"details": {
"text": "Interaction 'create' is not supported for resource type 'Patient'."
}
}
]
}
Hi Developers!
Consider I have a persistent class derived from %Persistent and I want it to be derived from %JSON.Adaptor to enjoy all the JSON features.
Can I do it programmatically?
So, it'd be wonderful to have a method in some util class that makes it happen? Something like:
Do ClassUtil.AddAncestor("MyPackage.MyPersistentClass","%JSON.Adaptor")
Any ideas?
You probably know this situation:
Some time ago, you found a very special $ZU function for a very specific type of problem. Some kind of mystical formula. It became popular and was used by many developers throughout your code and across all your installations.
Several versions and updates later, you are informed by ISC that your mystical $ZU is deprecated and no longer supported. You are advised to replace it with a new $something().
I built a BP, that every time that a message is received from a BS, it executes
set isAuth=##class(%SYS.OAuth2.AccessToken).IsAuthorized("EpicFHIRPOC",,,.accessToken,.idtoken,.responseProperties,.error)
if 'isAuth {
set tSC=##class(%SYS.OAuth2.Authorization).GetAccessTokenClient("EpicFHIRPOC", "*",, .error)
set isAuth=##class(%SYS.OAuth2.AccessToken).IsAuthorized("EpicFHIRPOC",,,.accessToken,.idtoken,.responseProperties,.error)
}When working with InterSystems Interoperability (Iris / Health Connect / Ensemble), configuration data is often spread across many production items: services, processes, operations, adapters, and their settings.
A common operational or security need is to answer questions like:
- Which interfaces reference file system paths?
- Where are directories, network shares, or absolute paths configured?
- Can I quickly audit or document this information across all my productions?
The ObjectScript utility below solves exactly that problem by exporting selected configuration settings into a CSV file.
Here is what is currently used.
..CurrentDateTime("%Y%m%d%H%M%S")
The format is not the issue.
I need to make it our current time as it is five hours ahead.
How can I access the header property of either of these.
Or, if I can't do that, subtract five hours or the equivalent time in seconds.
example, if I receive 20201224161922, how can I make it 20201224111922?
Thanks,
Jonathan
Embeddedpy-bridge: A Toolkit for Embedded Python
Overview
Embedded Python is a game-changer for InterSystems IRIS, offering access to the vast Python ecosystem directly within the database. However, bridging the gap between ObjectScript and Python can sometimes feel like translating between two different worlds.
To make this transition seamless using embeddedpy-bridge.
As I am iterating through the FHIR JSON Response from a Patient Search, I am running into an issue where the extracted values are not being popualted into the Response object that I have created. If I do a $$$LOGINFO on them they will show up in the Object log, however if I try the following for example I get an error.
set target.MRN = identifier.value
|
Here is my Ens.DataTransform

