#InterSystems IRIS for Health

10 Followers · 2.5K Posts

InterSystems IRIS for Health™ is the world’s first and only data platform engineered specifically for the rapid development of healthcare applications to manage the world’s most critical data. It includes powerful out-of-the-box features: transaction processing and analytics, an extensible healthcare data model, FHIR-based solution development, support for healthcare interoperability standards, and more. All enabling developers to realize value and build breakthrough applications, fast. Learn more.

Article Timothy Leavitt · Jun 4, 2020 3m read

Over the past year or so, my team (Application Services at InterSystems - tasked with building and maintaining many of our internal applications, and providing tools and best practices for other departmental applications) has embarked on a journey toward building Angular/REST-based user interfaces to existing applications originally built using CSP and/or Zen. This has presented an interesting challenge that may be familiar to many of you - building out new REST APIs to existing data models and business logic.

34
7 1863
Article Murray Oldfield · Jan 12, 2017 19m read

Hi, this post was initially written for Caché. In June 2023, I finally updated it for IRIS. If you are revisiting the post since then, the only real change is substituting Caché for IRIS! I also updated the links for IRIS documentation and fixed a few typos and grammatical errors. Enjoy :)


In this post, I show strategies for backing up InterSystems IRIS using External Backup with examples of integrating with snapshot-based solutions. Most solutions I see today are deployed on Linux on VMware, so a lot of the post shows how solutions integrate VMware snapshot technology as examples.

29
9 12215
Article Timothy Leavitt · Mar 24, 2020 5m read

This article will describe processes for running unit tests via the InterSystems Package Manager (aka IPM - see https://openexchange.intersystems.com/package/InterSystems-Package-Manager-1), including test coverage measurement (via https://openexchange.intersystems.com/package/Test-Coverage-Tool).

Unit testing in ObjectScript

There's already great documentation about writing unit tests in ObjectScript, so I won't repeat any of that. You can find the Unit Test tutorial here: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?

23
2 2208
InterSystems Official Aya Heshmat · Mar 27, 2025 4m read

The Interoperability user interface now includes modernized user experiences for the DTL Editor and Production Configuration applications that are available for opt-in in all interoperability products. You can switch between the modernized and standard views. All other Interoperability screens remain in the Standard user interface. Please note that changes are limited to these two applications and we identify below the functionality that is currently available. 

To try out the new screens prior to upgrading, you can download the 2025.

23
4 890
Article Yuri Marx · Aug 12, 2020 1m read


Globals SQL Database DocDB - Document Database Multidimensional Cube Database NLP Database Object Database JDBC Driver ODBC Driver Native API for Java Native API for .NET Native API for Python C/C++ Callin/Callout Native API for Node.js Object Script Caché Multivalue Caché Object Script Caché Basic CSP/HTML Support T-SQL Infrastructure as Code (IaC) Docker InterSystems Kubernetes Operator IRIS in the Google Cloud Platform IRIS Community Edition ZPM - Package Manager IRIS in the Azure IRIS in the Tencent IRIS Sharding support InterSystems Cloud Manager InterSystems in the AWS InterSystems On-Premises Enterprise Cache Protocol - ECP Machine Learning R and AI robotization NLP - Natural Language Processing MDX - MultiDimensional Expressions AutoML - InterSystems IntegratedML Analytics/BI - Business Intelligence InterSystems Reports PowerBI Support PMML - Predictive Model Markup Language Apache UIMA Apache Spark Analytical Dashboards InterSystems Developer Community InterSystems Open Exchange - Open Source Apps, Samples and templates InterSystems Worldwide Response Center InterSystems Learning Services Interoperability Adapters DTL - Data Transformation MQ - Message Queue EAI - Enterprise Application Integration ESB - Enterprise Service Bus API Manager CDC - Change Data Capture BAM - Business Activity Monitoring BPL IoT - Internet of Things SOA - Service Oriented Architecture Application/Service Governance Data Encryption Authorization Management Authentication Management Audit Management Label Security SSL/TLS SOAP/API Security User Portal Security Data/Assets Security Disaster Recovery - Backup and Restore Data Intensive - ESG Review Big Data Artificial Intelligence API Driven Economy Digital Health Public Sector Digital Transformation Hyper automation Business Sector Data as Service Software as Service IRIS as Backend IRIS as Mobile backend IoT Backend

PDF version: https://github.com/yurimarx/iris-periodic-table/raw/master/periodic%20table%20iris.pdf

GIT sources: https://github.com/yurimarx/iris-periodic-table

InterSystems IRIS is a Data Platform with a lot of features. These features and relevant topics about IRIS is represented in the periodic table elements.

22
10 1713
Article Vachan C Rannore · Dec 28, 2025 1m read

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 %String
Set name = "Micheal Scott"
#DIM age As %Numeric
Set age = 36
#DIM employer As App.Employer               ; compile time
Set employer = ##class(App.Employer).%New() ; runtime 

SETor #DIM? Your design, your rules.

18
4 323
Article Sylvain Guilbaud · Jul 8, 2024 2m read

For practical reasons, it may be desirable that after a Linux server restart, the IRIS instance is automatically started. 

Below you will find the steps to follow to automate the startup of IRIS during a reboot of the Linux server, via systemd :

1. Create an iris.service file in /etc/systemd/system/iris.service containing the following information

[Unit]
Description=InterSystems IRIS Data Platform
After=network.
17
5 1065
Article Tani Frankel · May 6, 2020 2m read

While reviewing our documentation for our ^pButtons (in IRIS renamed as ^SystemPerformance) performance monitoring utility, a customer told me: "I understand all of this, but I wish it could be simpler… easier to define profiles, manage them etc.".

After this session I thought it would be a nice exercise to try and provide some easier human interface for this.

The first step in this was to wrap a class-based API to the existing pButtons routine.

I was also able to add some more "features" like showing what profiles are currently running, their time remaining to run, previously running processes and more.

The next step was to add on top of this API, a REST API class.

With this artifact (a pButtons REST API) in hand, one can go ahead and build a modern UI on top of that.

For example -

15
4 1386
Article Rizmaan Marikar · Dec 25, 2021 13m read

There are many ways to generate excel files using Intersystems, some of them are ZEN reports, IRIS reports ( Logi reports or formally known as JReports), or we can use third party Java libraries, the possibilities are almost endless.

But, what if you want to create a simple spreadsheet with only Caché ObjectScript?

15
10 2338
Article Vachan C Rannore · Sep 15, 2025 2m read

Starting out with ObjectScript, it is really exciting, but it can also feel a little unusual if you're used to other languages. Many beginners trip over the same hurdles, so here are a few "gotchas" you'll want to watch out for. (Also few friendly tips to avoid them)


NAMING THINGS RANDOMLY

We have all been guilty of naming something Test1 or MyClass just to move on quickly. But once your project grows, these names become a nightmare. 

➡ Pick clear, consistent names from the start. Think of it as leaving breadcrumbs for your future self and your teammates.


15
2 377
Article Renan Lourenco · Mar 9, 2020 2m read

InterSystems IRIS for Health ENSDEMO

Yet another basic setup of ENSDEMO content into InterSystems IRIS for Health.

Make sure you have Docker up and running before starting.

Setup

Clone the repository to your desired directory

git clone https://github.com/OneLastTry/irishealth-ensdemo.git

Once the repository is cloned, execute:

Always make sure you are inside the main directory to execute docker-compose commands.

14
0 665
Article Murray Oldfield · Mar 8, 2016 8m read

Your application is deployed and everything is running fine. Great, hi-five! Then out of the blue the phone starts to ring off the hook – it’s users complaining that the application is sometimes ‘slow’. But what does that mean? Sometimes? What tools do you have and what statistics should you be looking at to find and resolve this slowness? Is your system infrastructure up to the task of the user load? What infrastructure design questions should you have asked before you went into production? How can you capacity plan for new hardware with confidence and without over-spec'ing? How can you stop the phone ringing? How could you have stopped it ringing in the first place?

13
6 4898
Article Rizmaan Marikar · Jul 27, 2022 6m read

What is Web Scraping:

In simple terms, Web scrapingweb harvesting, or web data extraction is an automated process of collecting large data(unstructured) from websites. The user can extract all the data on particular sites or the specific data as per the requirement. The data collected can be stored in a structured format for further analysis.

What is Web Scraping? — James Le
Steps involved in web scraping:

  1. Find the URL of the webpage that you want to scrape
  2. Select the particular elements by inspecting
  3. Write the code to get the content of the selected elements
  4. Store the data in the required format

It’s that simple !

12
9 1935
Article Robert Cemper · Mar 21, 2024 2m read

This is an attempt to run a vector search demo completely in IRIS
There are no external tools and all you need is a Terminal / Console and the management portal.
Special thanks to Alvin Ryanputra as his package iris-vector-search that was the base
of inspiration and the source for test data.
My package is based on IRIS 2024.1 release and requires attention to your processor capabilities.

I attempted to write the demo in pure ObjectScript.
Only the calculation of the description_vectoris done in embedded Python
Calculation of a vector with 384 dimensions over 2247 records takes time.

11
2 607
Article Keren Skubach · Jan 22, 2024 2m read

Did you know that you can get JSON data directly from your SQL tables?

Let me introduce you to 2 useful SQL functions that are used to retrieve JSON data from SQL queries - JSON_ARRAY and JSON_OBJECT
You can use those functions in the SELECT statement with other types of select items, and they can be specified in other locations where an SQL function can be used, such as in a WHERE clause

The JSON_ARRAY function takes a comma-separated list of expressions and returns a JSON array containing those values.

11
4 1199
Article José Pereira · Jul 3, 2023 12m read

This project is an experiment to use OpenAI API to answer to user prompts in the healthcare domain using FHIR resources and Python code.

Project idea

Generative AIs, like the LLM models available on OpenAI, has been demonstrated remarkable power to understand and answer high level questions. They use huge amounts of data to train their models, so they can answer complex questions.

They can even use programming languages to create code based on prompts - and I have to confess that the idea of getting my work automated causes me some anxiety.

11
0 2078
Article Yuri Marx · Dec 16, 2024 2m read

The best way to list, edit, save and delete globals is using an IDE. Now, it is possible if you use VSCode. It is also possible to save globals using yaml files. Perform the following steps:

1. Get an InterSystems IRIS instance and install the application iris-global-yaml: 

zpm:USER>install iris-global-yaml

2. If you just to want an InterSystems IRIS trial for tests git clone and run on docker:

git clone https://github.com/yurimarx/iris-global-yaml.git
docker-compose up -d --build

3. Go to https://openexchange.intersystems.

11
6 542
Article Beatrice Zorzoli · Sep 10, 2025 4m read

I joined InterSystems less than a year ago. Diving into ObjectScript and IRIS was exciting, but also full of small surprises that tripped me up at the beginning. In this article I collect the most common mistakes I, and many new colleagues, make, explain why they happen, and show concrete examples and practical fixes. My goal is to help other new developers save time and avoid the same bumps in the road.

1. Getting lost among system classes and where to start

The issue: ObjectScript/IRIS ships with many system classes and packages (%Library, %SYS, %Persistent, %SQL, etc.).

11
2 345
Article Murray Oldfield · Mar 11, 2016 8m read

In the last post we scheduled 24-hour collections of performance metrics using pButtons. In this post we are going to be looking at a few of the key metrics that are being collected and how they relate to the underlying system hardware. We will also start to explore the relationship between Caché (or any of the InterSystems Data Platforms) metrics and system metrics. And how you can use these metrics to understand the daily beat rate of your systems and diagnose performance problems.

10
2 4320
Article Murray Oldfield · Mar 25, 2016 14m read

This week I am going to look at CPU, one of the primary hardware food groups :) A customer asked me to advise on the following scenario; Their production servers are approaching end of life and its time for a hardware refresh. They are also thinking of consolidating servers by virtualising and want to right-size capacity either bare-metal or virtualized. Today we will look at CPU, in later posts I will explain the approach for right-sizing other key food groups - memory and IO.

10
2 5391
Article Guillaume Rongier · Apr 9, 2019 3m read

IRIS and Ensemble are designed to act as an ESB/EAI. This mean they are build to process lots of small messages.

But some times, in real life we have to use them as ETL. The down side is not that they can't do so, but it can take a long time to process millions of row at once.

To improve performance, I have created a new SQLOutboundAdaptor who only works with JDBC.

BatchSqlOutboundAdapter

Extend EnsLib.SQL.OutboundAdapter to add batch batch and fetch support on JDBC connection.

Benchmark

Benchmarks released on Postgres 11.2 with 1 000 000 rows fetched and 100 000 rows inserted on 2 columns.

alt text

10
3 1951
Article Murray Oldfield · Nov 18, 2019 8m read

The following steps show you how to display a sample list of metrics available from the /api/monitor service.

In the last post, I gave an overview of the service that exposes IRIS metrics in Prometheus format. The post shows how to set up and run IRIS preview release 2019.4 in a container and then list the metrics.


This post assumes you have Docker installed. If not, go and do that now for your platform :)


Step 1. Download and run the IRIS preview in docker

Follow the download instructions at Preview Distributions to download the Preview Licence Key and an IRIS Docker image

10
6 1687
Article Jimmy Xu · Oct 11, 2022 2m read

ZPM is designed to work with applications and modules for InterSystems IRIS Data Platform. It consists of two components, the ZPN Client which is a CLI to manage modules, and The Registry which is a database of modules and meta-information. We can use ZPM to search, install, upgrade, remove and publish modules. With ZPM you can install ObjectScript classes, Frontend applications, Interoperability productions, IRIS BI solutions, IRIS Datasets or any files such as Embedded Python wheels.

10
11 1554
Article Mark Bolinsky · Jan 29, 2016 4m read

** Revised Feb-12, 2018

While this article is about InterSystems IRIS, it also applies to Caché, Ensemble, and HealthShare distributions.

Introduction

Memory is managed in pages.  The default page size is 4KB on Linux systems.  Red Hat Enterprise Linux 6, SUSE Linux Enterprise Server 11, and Oracle Linux 6 introduced a method to provide an increased page size in 2MB or 1GB sizes depending on system configuration know as HugePages.

At first HugePages required to be assigned at boot time, and if not managed or calculated appropriately could result in wasted resources.  As a result various Linux distributions introduced Transparent HugePages with the 2.6.38 kernel as enabled by default.  This was meant as a means to automate creating, managing, and using HugePages.  Prior kernel versions may have this feature as well however may not be marked as [always] and potentially set to [madvise].  

Transparent Huge Pages (THP) is a Linux memory management system that reduces the overhead of Translation Lookaside Buffer (TLB) lookups on machines with large amounts of memory by using larger memory pages.  However in current Linux releases THP can only map individual process heap and stack space.

9
5 5835
Article David hay · Jan 14, 2024 5m read

This article is intended to describe how the clinFHIR application can be used to help developers both understand FHIR and to develop applications that utilize FHIR artifacts. It’s not intended to be an introduction to FHIR, but rather describe how clinFHIR can help on the learning / development journey. It’ll be reasonably high level - there is other information available, especially on my personal blog.

I do recommend that everyone who is working with FHIR join the FHIR chat - it is a great way to ask questions of the FHIR community - most of the experts hang out there.

9
1 755