Clear filter
Announcement
Anastasia Dyubaylo · May 7
Hey Community,
We're pleased to invite all the developers to the upcoming kick-off webinar for the InterSystems FHIR and Digital Health Interoperability Contest!
Date & Time: Monday, May 12 – 9 am EDT | 3 pm CEST
Discover the exciting challenges and opportunities that await health enthusiasts in this contest. We will also discuss the topics we expect from participants and show you how to develop, build, and deploy applications using the InterSystems IRIS data platform.
Speakers: 🗣 @Daniel.Franco, Senior Manager - Interoperability Product Management🗣 @Elijah.Cotterrell, Product Manager - Health Informatics Platform🗣 @Qi.Li, Physician Executive, InterSystems🗣 @Dean.Andrews2971, Head of Developer Relations🗣 @Evgeny.Shvarov, Senior Startups and Community Programs Manager🗣 @DKG, Developer Relations Evangelist
✅ Register for the kick-off today! Please join the webinar right now!
Announcement
Anastasia Dyubaylo · Jan 24
Hey Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Creating an InterSystems IRIS Cross Functional App in 150 Lines of Code @ Global Summit 2024
Based on the speaker's popular Developer Community article with the same title, this talk will walk you through a number of InterSystems IRIS features that can be leveraged to build applications with relatively little code.
🗣 Presenter: @Chris.Stewart, Principal Technical Specialist, InterSystems
Your next favorite video is just one click away. Watch now and subscribe!👍 The original article is here: https://community.intersystems.com/post/creating-iris-cross-functional-app The recorded demo is slightly different for a few reasons, and <spoilers> the final demo does not work, but only because of time constraints and a slight typo in code. See if you can spot it! Thank you @Chris.Stewart for the detailed explanation! The video was very informative and clear. I appreciate how well it covered the key points.
Announcement
Andreas Schneider · May 25
I'm excited to announce a major update to SQL Data Lens – a powerful database client and metadata explorer – that opens up new, free possibilities for the InterSystems community.
SQL Data Lens is now completely FREE to use with InterSystems IRIS Community Edition!
No more “localhost only” restrictionsNo more limits on the number of connectionsNo license? No problem.You can now connect to InterSystems IRIS Community Edition—completely license-free—using the fully functional Free Edition of SQL DATA LENS. Explore all the features, no strings attached.
Discover hidden insights with SQL DATA LENS:Instantly uncover detailed information about your IRIS tables—no deep dives or guesswork required:SQL DATA LENS helps with:
Detecting and Resolving Metadata Inconsistencies in InterSystems IRISFocus on your database objects and hide all the system objectsEasily Copy Tables Between Databases and Servers
Curious what's under the hood?Instantly explore native global values directly within SQL DATA LENS—see what your data is really doing behind the scenes.
Ready to explore your data like never before?
🚀 Download SQL Data Lens and get started today. Also available via Microsoft Store
💬 Got feedback, ideas, or ran into something odd? I’d love to hear from you—let’s make it even better together!
Happy querying!
Announcement
Anastasia Dyubaylo · May 27
Hi Community!
We’re excited to announce that several winners of the InterSystems AI Programming Contest have been invited to showcase their projects at the Tech Exchange during InterSystems Ready 2025!
Join us on Wednesday, June 25, to explore innovative, real-world solutions built with InterSystems IRIS, AI, LLMs, and intelligent agent technologies — directly from the developers who created them:
Presenter
Demo
@Muhammad.Waseem, Technical Consultant, Traverse Health
Next generation of autonomous AI Agentic Applications
iris-AgenticAI
@Yuri.Gomes, Director, YM Services
Natural Language Control of IRIS
langchain-iris-tool
@Eric.Fortenberry, Integration Analyst Senior, AdventHealth
A Minimalist View of AI: Exploring Embeddings and Vector Search with EasyBot
iris-easybot
@Alena.Krasinskiene, Quality and Customer Experience Manager, Banksia Global
AI Agents as First-Class Citizens in InterSystems IRIS
bg-iris-agent
@henry, Tech Leader at BPlus tecnology@Henrique, Senior Platform Architect, AI at Zendesk@José.Pereira, Data Engineer at Shift
Command the Crew - create an AI crew to automate your work
Facilis
These developers have built cutting-edge solutions using InterSystems IRIS technologies, integrating AI, LLMs, and intelligent agents to solve real-world challenges.
Don't miss the chance to see these demos live and connect with the minds behind them at Ready 2025!  @Anastasia.Dyubaylo, can you fix the @Yuri.Gomes app from iris-salesforce to https://openexchange.intersystems.com/package/langchain-iris-tool? Fixed. Thanks! Musketeers 😎🤩
Announcement
Evgeny Shvarov · May 29
Hi Developers!
We are happy to present the bonuses page for the applications submitted to the FHIR and Digital Health Interoperability Contest 2025!
See the results below.
Project
FHIR
Digital Health Interoperability
Vector Search
LLM AI or LangChain
Embedded Python
Docker
IPM
Online Demo
Community Idea Implementation
Find FHIR bug
Find Interoperability bug
First Article on DC
Second Article on DC
Video on YouTube
First Time Contribution
Total Bonus
Nominal
3
4
3
3
2
2
2
2
4
2
2
2
1
3
3
38
Smart Clinical Copilot - Configuration Management System
0
hc-export-editor
2
2
2
2
2
3
13
FHIR Bundle to CCDA
4
2
3
3
12
fhir-craft
3
4
2
2
1
3
15
Langchain4jFhir
3
3
2
3
3
14
FHIRInsight
3
4
3
3
2
2
2
2
1
3
25
CCD Data Profiler
4
2
4
2
1
3
3
19
FhirReportGeneration
3
3
2
2
10
iris-medbot-guide
3
3
2
2
2
12
ollama-ai-iris
3
2
2
2
3
12
health-gforms
3
4
2
2
2
2
4
2
1
3
25
iris-fhir-bridge
3
4
2
2
2
3
16
IRIS Interop DevTools
3
4
-
2
2
3
14
Please apply with your comments for new implementations and corrections to be made here in the comments or in Discord. I believe ollama-ai-iris qualifies for Digital Health Interoperability - 4 points
Collect 4 bonus points if your application is a healthcare interoperability solution that uses InterSystems Interoperability to transfer or/and transform healthcare data via messages or it uses healthcare format data transformation.
Also, I have online demo linked in ReadMe Hi! Could you provide the link to the repo code where you use Interoperability for "transfer or/and transform healthcare data via messages or it uses healthcare format data transformation"? or maybe you work with any healthcare data types? I claim the bonus community idea implementation and online demo. The links are into the application health-gforms Hi! Idea not in Community Opportunity statusOnline demo is just a link to the postman collection file in the repo
Sorry but both of them don't fit to bonuses requirements About Online Demo, I can't load the page with demo, I see only endless loading. bilder/CaptureSendChatResp.JPG at main · oliverwilms/bildershows where I transfer healthcare data inside the Interoperability production Sorry Olyver, looks like misunderstanding. I need link to the code in your project repo where I can see how you use HealthShare components, transferring or transforming HL7, CCD, etc. Please try online demo again. if you open the collection, the adresses point to remote address. I did this to allows users test using postman, but I will change to swagger ui address.
The idea is stop with status clarification, but I did the clarification and anyone reviewed yet Collect 4 bonus points if your application is a healthcare interoperability solution that uses InterSystems Interoperability to transfer or/and transform healthcare data via messages or it uses healthcare format data transformation.
I transfer healthcare data. It did not say I have to use HealthShare formats. Ok it works ok write me when you add swagger ui link to the package demo url.
I wrote to the Idea Hub admin. I think they will clarify status of your idea by tomorrow All bonuses were checked and added Hi friends!First article for FHIRInsight 😎😉 Hi Henry! Bonus was added Thank you Hi! I discussed this with the judges. We decided that to qualify for this bonus, the project must be related to health data formats/use health data transformations or write data to FHIR entities. Please add something from that list to your project to achieve this bonus.
@Evgeny.Shvarov Please correct me if I'm wrong somewhere. I don't know if this apply, but I have written an article about the application. And I have translated it.
Also, I have seen that I have 2 points for finding FHIR bug, but I think I don't have found any 😅 Hi! Thanks for the feedback. I wrote the bonus in the wrong column, it were points for the article. Bonuses were added I included digital health interoperability on health-gforms. Evidences: https://github.com/yurimarx/health-gforms/blob/master/src/User/GFormsProduction.cls, https://github.com/yurimarx/health-gforms/blob/master/src/User/GFormsInboundAdapter.cls), so I claim this bonus. I would like to claim the following bonuses:
- Embedded Python
- Online Demo
- First Article on DC
Thanks! Hi! Could you please provide the permalink to the code where you use Embedded Python, looks like your app works only with exported xml without iris connection.
Bonuses for article and demo were added. Here you go...
https://github.com/jamerfort/hc-export-editor/blob/42516f7524c4556c1cc8afa25d2f71c22b6e0891/webapps/hc_export_editor/export_manager.py#L141 Ok I didn't notice that. Bonus was added Thanks! Bonus was added Hi @Semion.Makarov, I have an honest question for you: Does a translation count as a second article? If it does, here's a second article for FHIRInsight. Yep it counts) Thank you very much @Semion.Makarov I would suggest, for next contests, technical points for @Robert Cemper reviews on OpenExchange.When he gives an app more than 3 stars there is because the app it's really good. He does excellent work with his reviews and is thoroughly honest. Hi there! I have an article and a translated article for the CCD Data Profiler. In addition to that, I also have a YouTube video. Please let me know if any additional information is required. Thank you! Great idea, you should publish it om ideas portal to get my vote also Thanks! Bonuses were added The IRIS Interop DevTools should have Docker and IPM. There is also a video posted on YouTube. You already got these bonuses in one of the previous contests. Except of IPM bonus. I've added it About video I see that you've updated your video and uploaded fresh version to your package. I think the can accept this bonus Hey team,
I've just submitted the new app release with a YouTube demo video + article link
I hope you all enjoy the demo video.
I'd like to claim the video bonus for hc-export-editor as well: https://www.youtube.com/watch?v=gSFDw4eaErg
Thanks Article bonus already have been added. I've applied video bonus Hi! I've added bonus to your app I have added a new article for the IRIS Interop DevTools: https://community.intersystems.com/post/iris-interop-devtools-jumpstart-iris-transformations-ccda-and-fhir
Hi there, I would also like to claim the Community Idea Implementation bonus. Here is the link to the idea: https://ideas.intersystems.com/ideas/DPI-I-247. Thank you! Hi! Bonus was added Hi! Bonus was added Hi @Semion.Makarov I noticed that no points were added for Digital Health Interoperability. I believe our application (FHIRInsight) fits this category.
Announcement
Anastasia Dyubaylo · Jun 3
Hi Community,
Let's meet at the online meetup with the winners of the InterSystems FHIR and Digital Health Interoperability Contest! It's a great opportunity to chat with the InterSystems Experts team and our contestants.
Winners' demo included!
Date & Time: Thursday, June 5, 11:30 am EDT | 5:30 pm CEST
Join us to learn more about winners' applications and to have a talk with our experts.
➡️ REGISTER TODAY
See you all at our virtual meetup! Hi All!
Please join the meetup in 10 minutes!
https://riverside.fm/webinar/directlink/eyJzbHVnIjoiZGV2ZWxvcGVyLXJlbGF0aW9ucy1zdHVkaW8iLCJldmVudElkIjoiNjgyZjA3NmYyYWY2OGUyMmEwNDU0ZWMwIiwicHJvamVjdElkIjoiNjgyZjA3NmYyYWY2OGU5MDdiNDU0ZWJkIn0=
Article
Marco Bahamondes · Jun 24
Introduction
InterSystems IRIS allows you to build REST APIs using ObjectScript classes and the %CSP.REST framework. This enables the development of modern services to expose data for web apps, mobile apps, or system integrations.
In this article, you'll learn how to create a basic REST API in InterSystems IRIS, including:
A persistent data class
A REST class with GET and POST methods
A web application to expose the API
A full demonstration using Docker
Step 1: Create the data class Demo.Producto
Class Demo.Producto Extends (%Persistent, %JSON.Adaptor) {
Property Nombre As %String;
Property Precio As %Numeric(10,2);
}
%Persistent allows storing the object in the database.
%JSON.Adaptor enables automatic JSON conversion.
Step 2: Create the REST class Demo.ProductoAPI
Class Demo.ProductoAPI Extends %CSP.REST {
XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] {
<Routes>
<Route Url="/producto" Method="GET" Call="Listar"/>
<Route Url="/producto" Method="POST" Call="Crear"/>
</Routes>
}
ClassMethod Listar() As %Status
{
Try {
Set productos = []
&sql(DECLARE C1 CURSOR FOR SELECT ID, Nombre, Precio FROM Demo.Producto)
&sql(OPEN C1)
While (SQLCODE=0) {
&sql(FETCH C1 INTO :id, :nombre, :precio)
Quit:SQLCODE'=0
Do productos.%Push({"ID": (id), "Nombre": (nombre), "Precio": (precio)})
}
Do ##class(%REST.Impl).%SetContentType("application/json")
Do ##class(%REST.Impl).%SetStatusCode("200")
Write productos.%ToJSON()
} Catch (ex) {
Do ##class(%REST.Impl).%SetStatusCode("400")
Write ex.DisplayString()
}
Quit $$$OK
}
ClassMethod Crear() As %Status
{
Try {
set dynamicBody = {}.%FromJSON(%request.Content)
Set prod = ##class(Demo.Producto).%New()
Set prod.Nombre = dynamicBody.%Get("Nombre")
Set prod.Precio = dynamicBody.%Get("Precio")
Do prod.%Save()
Do ##class(%REST.Impl).%SetContentType("application/json")
Do ##class(%REST.Impl).%SetStatusCode("200")
Write prod.%JSONExport()
} Catch (ex) {
Do ##class(%REST.Impl).%SetStatusCode("400")
Write ex.DisplayString()
}
Quit $$$OK
}
}
Step 3: Create a Web Application
From the Management Portal:
Go to System Administration > Security > Applications > Web Applications
Create a new application:
URL: /api/productos
Namespace: USER
Class: Demo.ProductoAPI
Enable REST and anonymous access for testing
http://localhost:52773/csp/sys/%25CSP.Portal.Home.zen User=SuperUser Pass=SYS
Add Developer Application Functions
Step 4: Docker demonstration
Project structure
apirest-demo/
├── Dockerfile
├── iris.script
└── cls/
├── Demo.Producto.cls
└── Demo.ProductoAPI.cls
Dockerfile
FROM intersystemsdc/iris-community:latest
COPY cls /irisdev/app/cls
COPY iris.script /irisdev/app/iris.script
RUN iris start IRIS \
&& iris session IRIS < /irisdev/app/iris.script \
&& iris stop IRIS quietly
Build and run the container
cd apirest-demo
docker build -t iris-apirest-demo .
docker run -d --name iris-api -p 52773:52773 -p 1972:1972 iris-apirest-demo
Testing with Postman or curl
GET products
curl http://localhost:52773/api/productos/producto
POST product
curl -X POST http://localhost:52773/api/productos/producto \
-H "Content-Type: application/json" \
-d '{"Nombre":"Cafe","Precio":2500}'
to download the example code https://github.com/MarcoBahamondes/apirest-demo
git clone https://github.com/MarcoBahamondes/apirest-demo
Discussion
Admin GlobalMasters · Jul 1
How was your READY experience?We’ve prepared a bingo card — take a look and see how many boxes you can check off!Cross off the ones that match your experience or list them in the comments.And if something memorable happened that’s not on the card — we’d love to hear about it! ✨
Bingo items:
Joined Golf Tournament or Soccer Match
Discovered a feature you didn’t know existed
Participated in a hands-on workshop on Sunday
Learned something new
Had a 1:1 meeting with an InterSystems expert
Attended at least one Tech Exchange Demo
Answered 5 out of 5 quiz questions correctly (at Developer Community booth)
Took a free certification exam
Spun the Wheel of Fortune at Developer Community booth
Attended Keynotes and afternoon sessions
Met someone new / made a new connection
Met a fellow Developer Community Member
How many out of 12 did you check off? Copy the ones you completed in your reply please - we’re curious to see which activities were most popular! 🤩 Six. Would be seven but I only got 3 out of 5 correct at Developer Community booth. Six 😟 Not as many as I hoped... Six 9/12 !!!! 9/12
but we have to review the quiz questions btw 😂 Six is good! Which six happened? That’s great — no need to check them all! ☺ We’re interested to see which activities were most popular among DC members. Just curious, which 6 did you complete? six is good, and looks like that's the most popular result! Next time we will publish Bingo before the event 😎😁Which 6 for you? Wow — the top score just jumped from 6 to 9! Would you be open to sharing which 9 you completed?
P.S. Feel free to just copy the text from under the banner — we’re curious to see which activities were most popular! 🤩 Yay - another 9!!! Guilherme - could you share which 9 did you complete? 🤩
2
4
5
10
11
12
9 out of 12, not bad 3. Participated in a hands-on workshop on Sunday4. Learned something new5. Had a 1:1 meeting with an InterSystems expert6. Attended at least one Tech Exchange Demo8. Took a free certification exam9. Spun the Wheel of Fortune at Developer Community booth10. Attended Keynotes and afternoon sessions11. Met someone new / made a new connection12. Met a fellow Developer Community Member Wow what an impressive list! 🤩🔥 Thanks for sharing! 6 out of 12!
Can we get a bonus square for “had too much fun at the Developer Community booth”? 😁
Announcement
Andreas Dieckow · Jan 15, 2020
Beginning with InterSystems IRIS 2020.1, the minimum required version for AIX is AIX 7.1 TL4.
The InterSystems IRIS installer will detect if the required IBM XL C filesets are installed before continuingwith the installation. Does it need to be the 16.1 (or greater) XL C fileset (we have a lesser installed)? And just the runtime or the compilation as well? Verifying for our systems' guys. 16.1 or greater and just the runtime
Article
Brad Nissenbaum · Jul 13
**☤ Care 🩺 Compass 🧭 - Proof-of-Concept - Demo Games Contest Entry**
# Introducing Care Compass: AI-Powered Case Prioritization for Human Services
In today’s healthcare and social services landscape, caseworkers face overwhelming challenges. High caseloads, fragmented systems, and disconnected data often lead to missed opportunities to intervene early and effectively. This results in worker burnout and preventable emergency room visits, which are both costly and avoidable.
Care Compass was created to change that.
*Disclaimer: Care Compass project is a technical demonstration developed by sales engineers and solution engineers. It is intended for educational and prototyping purposes only. We are not medical professionals, and no part of this project should be interpreted as clinical advice or used for real-world patient care without appropriate validation and consultation with qualified healthcare experts.*
## The Problem
Twelve percent of Medicaid beneficiaries account for 38 percent of all Medicaid emergency department (ED) visits. These visits are often driven by unmet needs related to housing instability, mental illness, and substance use. Traditional case management tools rarely account for these upstream risk factors, making it difficult for caseworkers to identify who needs help most urgently.
This data comes from a 2013 study published in *The American Journal of Emergency Medicine*, which highlights how a small portion of the Medicaid population disproportionately contributes to system-wide costs
([Capp et al., 2013](https://doi.org/10.1016/j.ajem.2013.05.050), [PMID: 23850143](https://pubmed.ncbi.nlm.nih.gov/23850143)).
Too often, decisions are reactive and based on incomplete information.
## Our Solution
Care Compass is an AI-powered assistant that helps caseworkers make better decisions based on a complete picture of a client’s medical and social needs. It combines Retrieval-Augmented Generation (RAG) and large language models to interpret data and generate actionable insights.
The assistant assesses real-time information, summarizes key risk factors, calculates dynamic risk scores, and recommends possible next steps and resources. Instead of combing through disconnected records, caseworkers get a unified view of their caseload, prioritized by urgency and context.
## How It Works
The platform integrates a large language model, real-time data retrieval, and custom reasoning logic. Information from structured and unstructured sources is synthesized into readable summaries that explain not only the level of risk, but why a client is considered high-risk.
An intuitive user interface makes it easy for caseworkers to interact with the assistant, review insights, and take appropriate action. The emphasis is on transparency and trust. The system doesn’t just score risk; it explains its reasoning in plain language.
## Lessons Learned
Building Care Compass has taught us that raw model accuracy is only part of the equation. We’ve learned that:
- Small datasets limit the effectiveness of retrieval-based methods
- Structured data is often inconsistent or incomplete
- Fine-tuning models does not always improve performance
- Interpretability is essential—especially for systems that guide care decisions
- HIPAA compliance and data privacy must be built into the system from the beginning
## Looking Ahead
Our next steps include expanding our dataset with more diverse and representative cases, experimenting with different embedding models, and incorporating evaluation metrics that reflect how useful and understandable the assistant’s outputs are in practice.
We’re also exploring how to better communicate uncertainty and strengthen the ethical foundations of the system, especially when working with vulnerable populations.
Care Compass is our response to a widespread need in health and human services: to prioritize what matters, before it becomes a crisis. It empowers caseworkers with the clarity and tools they need to act earlier, intervene more effectively, and deliver more equitable outcomes.
**To see more about how we implemented the solution, please watch our youtube video:**
https://youtu.be/hjCKJxhckbs This is an impressive proof-of-concept! Great work by the team! 👏 Happy to have worked with Brad Nissenbaum, Fan Ji, Lynn Wu. Andrew Wardly Please let us know if you have any questions or feedbacks!
Article
Dmitry Maslennikov · Jul 28
Overview
The typeorm-iris project provides experimental support for integrating TypeORM with InterSystems IRIS, enabling developers to interact with IRIS using TypeORM’s well-known decorators and repository abstractions. This allows a more familiar development experience for JavaScript and TypeScript developers building Node.js applications with IRIS as the backend database.
While the project implements key integration points with TypeORM and supports basic entity operations, it’s not yet battle-tested or suitable for production environments.
Why typeorm-iris?
The official InterSystems IRIS Node.js driver does not provide native SQL query execution in the way that other database drivers (e.g., for PostgreSQL or MySQL) do. Instead, you must use an ObjectScript-based API (e.g., %SQL.Statement) to prepare and execute SQL commands.
This becomes problematic when building modern applications that rely on Object-Relational Mapping (ORM) tools like TypeORM. TypeORM expects a lower-level driver capable of preparing and executing raw SQL in a single connection session, which is not currently available with IRIS’s JavaScript tooling.
To overcome these limitations, typeorm-iris implements the necessary pieces to bridge IRIS and TypeORM, using the available ObjectScript SQL execution interfaces under the hood.
Early Stage & Known Issues
This project is in its initial phase and has only been tested with a limited number of cases. Expect instability, missing features, and breaking changes in future iterations.
Notable limitations observed during development include:
1. Excessive Network Roundtrips
Executing SQL through the %SQL.Statement class from JavaScript involves multiple network messages between the Node.js process and the IRIS server. For example, a single logical SQL operation may require multiple steps like:
Preparing the statement
Executing the query
Fetching metadata
Fetching rows individually
Each of these can result in separate messages over the network, resulting in significantly more overhead compared to using a native SQL driver.
2. No True Async/Parallel Support
The official IRIS Node.js driver does not support asynchronous usage in a multithreaded or worker-based context:
Reconnecting in the same process often fails or causes unpredictable behavior.
Spawning worker threads and using the driver inside them leads to issues.
Only one connection per process works reliably.
These constraints make it unsuitable for modern concurrent Node.js applications. In practice, this limits how well the driver can scale with concurrent workloads, and it significantly restricts architectural choices.
Usage Guide
Due to usage of latest IRIS SQL Fatures requires IRIS 2025.1+ to work.
You can install typeorm-iris via npm:
npm install typeorm-iris
Because this driver is not officially supported by TypeORM, using it requires a workaround for setting up the DataSource. You cannot directly use new DataSource() or createConnection() as you would with official drivers.
Custom DataSource Setup
import { IRISDataSource, IRISConnectionOptions } from "typeorm-iris"
const dataSourceOptions: IRISConnectionOptions = {
name: "iris",
type: "iris",
host: "localhost",
port: 1972,
username: "_SYSTEM",
password: "SYS",
namespace: "USER",
logging: true,
dropSchema: true,
}
export function createDataSource(options: any): IRISDataSource {
// @ts-ignore
const dataSource = new IRISDataSource({ ...dataSourceOptions, ...options })
return dataSource
}
Once initialized, you can use TypeORM decorators as usual:
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number
@Column()
name: string
@Column()
email: string
}
Using repositories works similarly:
const userRepository = dataSource.getRepository(User)
const newUser = userRepository.create({ name: "Alice", email: "alice@example.com" })
await userRepository.save(newUser)
Sample Projects
The GitHub repository includes a sample/ folder with several fully working examples:
sample1-simple-entity
sample2-one-to-one
sample3-many-to-one
sample4-many-to-many
sample16-indexes
These cover basic persistence, relationships, and schema features, offering practical usage demonstrations.
Unit Tests
Initial testing includes the following use cases:
Entity Model
should save successfully and use static methods successfully
should reload given entity successfully
should reload exactly the same entity
should upsert successfully
Entity Schema > Indices
basic
Persistence
basic functionality
entity updation
insert > update-relation-columns-after-insertion
many-to-many
one-to-one
These tests are limited in scope and more coverage will be added as the project matures.
Supported Features
Entity decorators: @Entity(), @Column(), @PrimaryGeneratedColumn()
Repositories: create, save, find, delete, etc.
Schema drop and sync (experimental)
Partial support for relations and custom queries
Again, these features are early-stage and may not cover the full range of TypeORM’s capabilities.
Real-World Constraints
InterSystems IRIS Node.js Driver Limitations
Only one usable connection per process
No proper support for parallel operations or threading
Lack of native SQL API support (via SQL protocol)
Heavy reliance on message-based communication using proprietary protocol
Until InterSystems updates the official driver with support for proper SQL execution and concurrent operations, this project will be fundamentally limited in terms of performance and scalability.
Feedback & Contribution
As this is an experimental driver, your feedback is crucial. Whether you're trying it out for a small side project or evaluating it for broader use, please share issues and suggestions on GitHub:
➡️ github.com/caretdev/typeorm-iris/issues
Pull requests, test cases, and documentation improvements are welcome.
What's Next
Planned future improvements include:
Expanding test coverage for real-world queries and schema designs
Handling more TypeORM query builder features
Investigating batching optimizations
Improving schema introspection for migrations
Conclusion
typeorm-iris brings much-needed TypeORM support to InterSystems IRIS for Node.js developers. While it’s not production-ready today and inherits severe limitations from the current driver infrastructure, it provides a foundation for further experimentation and potentially wider adoption in the IRIS developer community.
If you're an IRIS developer looking to integrate with a modern Node.js backend using TypeORM, this is the starting point.
And if you found this useful, please vote for it in the InterSystems Developer Tools Contest!
Article
Yuri Marx · Jun 10, 2020
If you need write your organization Data Architecture and map to the InterSystems IRIS, consider following Data Architecture Diagram and references to the intersystems iris documentation, see:
Architecture mapping:
SQL Database: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GSQL
Managed Files: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=AFL_mft and https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=SETEDIGuides
IoT Broker, Events and Sensors: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=EMQTT
Messages: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=EMQS
NoSQL: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GDOCDB
API and Web Services: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GREST, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GSOAP, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=AFL_iam and https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=PAGE_interoperability
ETL: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=SETAdapters, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=EDTL, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=EBPL and
EAI Connectors: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=SETAdapters
XEP Events: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=BJAVXEP, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=BNETXEP,
Big Data Ingestion: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=BSPK
AI: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=PAGE_text_analytics, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=APMML, https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_python_native, https://www.intersystems.com/br/resources/detail/machine-learning-made-easy-intersystems-integratedml/
Processes: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=EBPL
Corporate Service: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=EESB and https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=AFL_iam
In memory: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GSCALE_ecp
Content: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GDOCDB
Textual: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AFL_textanalytics
Protection: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=SETSecurity, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=TSQS_Applications, https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCDI and https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS
Inventory: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GSA_using_portal and https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_xdata
Privacy: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GCAS_encrypt
IT Lifecycle, Backup and Restore: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GSA_using_portal, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GCDI_backup
Access Management: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=TSQS_Authentication, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=TSQS_Authorization, https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=TSQS_Applications
Replication and HA: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_high_availability
Monitoring: https://docs.intersystems.com/sam/csp/docbook/DocBook.UI.Page.cls?KEY=ASAM and https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_monitoring
IT Operation: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=PAGE_platform_mgmt
Visualization: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_bi
Great reference! Fantastic Article, thanks @Yuri.Gomes! This is really excellent! Where did you get the graphics? Can we use them? Send me e-mail to yurimarx@gmail.com and I will reply you with ppt slide. Could you explain to me how to understand the graphic ?
Question
Amit Kumar Thakur · May 26, 2020
Requesting assistance on Intersystems Cache Managed Key Encryption.
We have configured the KMIP Server.
The KMIP server is an external HSM box. I was not able to find any info on Key Rotation and what type of encryption does it follow i.e. 1-tier approach or 2-tier approach.
Can someone please assist on the same? Are you asking about the KMIP server and how it works? If so, I don't think this is the right place to ask, and would recommend you talk to people who know more about your KMIP system.
Or are you asking about how Cache handles key rotation for encrypted databases and/or managed key encryption? If so, this is mostly up to the user. There isn't automatic re-keying of databases on a schedule. In most of the DBs, we do Master Key rotation on time to time basis for security reasons. In my case, I have created a KMIP server, encrypted the database. Now I have to rotate the master key.
I don't find any documentation around rotating the master key.
Only Activation, listing, and deleting the master key.
For master key, do you mean the database encryption key, ie, the one Cache is using to encrypt the database? If so, you need to re-key the database manually if this is something you want to do. This should be an option available in the ^EncryptionKey utility in the %SYS namespace. (The older cvencrypt utility will also re-key, but is slower and does not have KMIP functionality.) The InterSystems IRIS docs cover using ^EncryptionKey for re-keying here:
https://irisdocs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GCAS_cvencrypt
If you mean a different key than the database encryption one, can you explain which one? For example, you authenticate to the KMIP server using a public/private key pair. Is this the one you mean? Something else?
Announcement
Anastasia Dyubaylo · Aug 5, 2020
Hey Community,
We're pleased to invite you to the first webinar dedicated to our Global Masters Advocate Hub! Please join:
➡️ InterSystems Global Masters Advocate Hub Overview webinar ⬅️
Date & Time: Friday, August 14 – 10:00 EDT
Let's see the Global Masters Advocate Hub from the inside and talk about how you can benefit from participation in this program. We'll go through:
Demo of the Hub
Recognition for your contribution to Developer Community and Open Exchange
Levels and priveledges
Rewards! Current and... tsss... upcoming!
Your questions and ideas
Also, a secret code will be announced for all webinar attendees for getting 250 GM points!
Speaker:🗣 @Olga.Zavrazhnova2637, InterSystems Customer Advocacy Manager
So!
We will be happy to talk to you at our webinar!
✅ REGISTER TODAY We will start soon!
➡️ JOIN THE WEBINAR HERE Hey Developers!
Now this webinar recording is available on InterSystems Developers YouTube Channel:
Enjoy watching this video! 👍🏼
Question
Alex Van Schoyck · Jan 31, 2019
ProblemI got a quick answer from this forum yesterday so I'm going to try my luck again today! I've hit an error in another table when trying to extract through the Cache ODBC driver, but this one gives me less details and I'm struggling to pinpoint what might be causing the error.The table I am trying to extract is called REF_TABLE_ONE.Here's the Error:
[Cache Error: <<NOLINE>%0AmBx1^%sqlcq.PRD.2249>]
[Location: <ServerLoop - Query Fetch>]
Research/Trial & Error
Based on my research, it looks like the error results from something missing in a routine. I have limited access to this system. I am able to open up the corresponding Class in Cache Management Studio and edit/compile the code there. However, I do not have access to the "Routes" section of the Management Web Portal.
When I run the SQL Query in the Management Web Portal, I get the same error listed above, and only the column headers show up, no rows are populated.
Based on my limited analysis of the Class file, I think the issue is somewhere inside the SQLMap. It looks like there is use of Subscripts that are pretty complex. I'm wondering if there's something wrong in there?
I have the whole SQLMap code copied out, but I didn't want to post it unless someone needs it, as it is a bit long and would take up a lot of room in the post. Here's a screenshot of the visual representation of the SQLMap in case that helps:
Question
Is there anything I can do with the class code in Studio to debug or get more info about this error?
Any and all help is greatly appreciated!
Additional Info
Cache Version: Cache for OpenVMS/IA64 V8.4 (Itanium) 2012.1.5 (Build 956 + Adhoc 12486) 17-APR-2013 19:49:58.07 Hey John, Thank you for the reply, I appreciate the help! I found the query in the cache and purged it. Unfortunately, when I ran it again, I encountered the same error and it recreated the query in the cache, but with today's date as the creation date obviously.Any other ideas? Thanks again, I appreciate the help :-) Please share the code from
%0AmBx1^%sqlcq.PRD.2249
To do that open %sqlcq.PRD.2249 routine (int routine, afaik mac routine wouldn't have this )
If you can't find routines check that system saves sources for cached queries. If it doesn't set the setting to save routines, purge this query and run it again. After that you should be able to see the source.
Also can you determine which part of SQL causes this error?
Perhaps there's a faulty cached query.The 2012.1 docs here describe how to use Portal to see what's in the cache, and how to purge items from it.