#InterSystems IRIS for Health

10 Followers · 2.4K 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.

Question Steve Pisani · Apr 22, 2025

Hi - I'm refreshing my IRIS instance, now upgraded to 2025.1, and ensuring IPM is installed in each namespace, as well as git-source-control, but in my first attempt I get this error. 

Everything else seems to work - but why the error (I'd like to get rid of it) ?

zpm:AULIBRARY>install git-source-control
 
[AULIBRARY|git-source-control]  Initialize START
[AULIBRARY|git-source-control]  Initialize SUCCESS
[AULIBRARY|git-source-control]  Reload START (C:\InterSystems\IRIS\mgr\Temp\VTigyGg\)
[AULIBRARY|git-source-control]  Reload SUCCESS
[git-source-control]    Module object refreshed.
0
0 97
Question Oliver Wilms · Apr 20, 2025

I read the article by @Rodolfo Pscheidt Jr:

https://community.intersystems.com/post/ollama-ai-iris

I forked his app and copied selected files from @Guillaume Rongier iris-rag-demo to make it containerized:

ollama-ai-iris/test_conn.py at 3da62770a90e34eff92241abbfc4f2c2a7027898 · oliverwilms/ollama-ai-iris
 

I struggle to understand what each element is or I do not understand why the code does not work:

url = f"iris://teste:teste@localhost:51774/TESTE"
 

Is teste:teste refer to username / password? I tried _SYSTEM:SYS

Is 51774 webserver port? Is TESTE namespace?

3
0 180
Discussion Oliver Wilms · Apr 20, 2025

I read the article by @Rodolfo Pscheidt:

https://community.intersystems.com/post/ollama-ai-iris

I forked his app and copied selected files from @Guillaume Rongier iris-rag-demo to make it containerized:

oliverwilms/ollama-ai-iris
 

I ran load_data.py and I got this output:

irisowner@e10968e4da42:/irisdev/app$ python3 load_data.py
Document ID: cbfa2f20-6627-407b-bbad-31722d18ca13
modules.json: 100%|█████████████████████████████████████████████████████████████| 349/349 [00:00<00:00, 778kB/s]
config_sentence_transformers.

0
0 133
Question Oliver Wilms · Apr 19, 2025

I cloned iris-rag-demo from Open Exchange and issued docker-compose up -d. I went to the front end and type in the chat message:

Who was the 46th President of United States of America?

I got a run time error:

RuntimeError: ERROR <Ens>ErrBPTerminated: Terminating BP ChatProcess # due to error: ERROR #5002: ObjectScript error: <PYTHON EXCEPTION> *<class 'RuntimeError'>: <PYTHON EXCEPTION> <class 'ValueError' > ERROR #5002: ObjectScript error: <PYTHON EXCEPTION> *<class 'RuntimeError'

Traceback:

 

File "/irisdev/app/src/python/rag/app.py", line 28, in process_input agent_text = _service.

0
0 90
Question Rushi Chandel · Apr 14, 2025

Hello Developers,

I have MacBook Pro M3 and I'm new to the IRIS for Health setup / installation with all pre-requisite / requirements so someone could please help me with detailed instructions on how to setup IRIS for Health (HL7 & FHIR) from scratch along with SQL Server? I have Windows 11 installed in parallel desktop if that's required and complete installation / setup is not possible on MacBook.

Thank you in advance.

Rushi

3
0 145
Announcement Larry Finlayson · Apr 16, 2025
  • Building and Managing HL7 Integrations – In Person May 5-9, 2025 9:00am-5:00pm EDT
    • Build, configure, and manage HL7® V2 interfaces using InterSystems integration technologies.
    • This healthcare-focused 5-day course teaches implementation partners, integrators and analysts how to rapidly build HL7 integration solutions.
    • Students build a production that processes and routes HL7 messages.
    • Students learn how to work with the pre-built HL7 business services, business processes and business operations to receive and send HL7 messages.
0
0 73
Article Patrick Jamieson · Apr 15, 2025 6m read

I know that people who are completely new to VS Code, Git, Docker, FHIR, and other tools can sometimes struggle with setting up the environment. So I decided to write an article that walks through the entire setup process step by step to make it easier to get started.

I’d really appreciate it if you could leave a comment at the end - let me know if the instructions were clear, if anything was missing, or if there’s anything else you'd find helpful.

The setup includes:

✅ VS Code – Code editor
✅ Git – Version control system
✅ Docker – Runs an instance of IRIS for Health Community
✅ VS Code REST Client Extension – For running FHIR API queries
✅ Python – For writing FHIR-based scripts
✅ Jupyter Notebooks – For AI and FHIR assignments

Before you begin: Ensure you have administrator privileges on your system.

In addition to reading the guide, you can also follow the steps in the videos:

For Windows

2
2 455
Question Ashok Kumar T · Sep 2, 2024

Hello Community,

I got the PROTECT error while running functions. But, I could able to call the classmethods and methods in class definition with classMethodObject, classMethodValue etc.. from python. without any errors
python code

irispy.functionString('fnString','IRISPython',14)
irispy.function('fnString','IRISPython',14)
raise RuntimeError(error_message)
RuntimeError: <PROTECT> *Function not allowed
IRISPython.mac
fnString(fn1) public {
  quit "Hello "_fn1
}

7
0 292
Article Ariel Glikman · Apr 15, 2025 4m read

If you look at the values.yaml of the IKO's Helm chart you'll find:

useIrisFsGroup: false 

Let's break down what it is and in what situations you may want to set it to true.

FsGroup refers to the file system group.

By default, Kubernetes volumes are owned by root, but we need IRIS to own its files (IRIS in containers is installed under irisowner user). To get around this we employ one of two methods:

1) initContainers

The initContainers run before app containers (like IRIS) in a pod. They generally set up the environment for the application and then run to completion/terminate.

0
0 219
Question Ashok Kumar T · Apr 15, 2025

Hello Team,

I got xDBC protocol is not compatible while executing python script. How to fix this error

C:\Users\ak\Desktop\lpyth\iris>C:/Users/ak/AppData/Local/Programs/Python/Python312/python.exe c:/Users/ak/Desktop/lpyth/iris/irisconn.py
An error occurred: connection failed: IRIS xDBC protocol is not compatible

py -m pip list
Package            Version
------------------ ---------
intersystems-iris  3.9.2

import intersystems_iris as iris
args = {'hostname':'127.0.0.1', 'port':1972,'namespace':'LEARNING', 'username':'_SYSTEM', 'password':'SYS'}
try:
    conn = iris.
2
0 131
Discussion Benny Verhamme · Apr 11, 2025

Hello 

We are pretty new to Ensemble and we are considering on using a default setup for our production. Let me explain the situation. We have one sender that sends HL7 ADT messages to our system. We have 60+ other systems that need to recieve ADT messages. We where thinking on a few ways on how to do the setup. 

Setup1:

We create one big ADTRouter that contains a first mapping. The result is send to another big ADTRouter that contains all the filters/expressions and mappings for the recieving systems.

4
0 263
Question Nimisha Joseph · Apr 14, 2025

Hi everyone,

I'm working on a DTL that transforms an HL7 message (EnsLib.HL7.Message) to an XML document (EnsLib.EDI.XML.Document).

The target XML is based on a custom schema and has an element like:

What I need is for the output to show:

<deceasedDateTime xsi:nil="true"/> when the source HL7 value is empty, for eg: 

<portalPatientUpdate xmlns:xsi="http://www.w3.

0
0 128
Article Timothy Leavitt · Jul 8, 2020 7m read

Introduction

If you're solving complex problems in ObjectScript, you probably have a lot of code that works with %Status values. If you have interacted with persistent classes from an object perspective (%Save, %OpenId, etc.), you have almost certainly seen them. A %Status provides a wrapper around a localizable error message in InterSystems' platforms. An OK status ($$$OK) is just equal to 1, whereas a bad status ($$$ERROR(errorcode,arguments...)) is represented as a 0 followed by a space followed by a $ListBuild list with structured information about the error. $System.Status (see class reference) provides several handy APIs for working with %Status values; the class reference is helpful and I won't bother duplicating it here. There have been a few other useful articles/questions on the topic as well (see links at the end). My focus in this article will be on a few debugging tricks techniques rather than coding best practices (again, if you're looking for those, see links at the end).

8
12 2534
Question Michael Davidovich · Apr 10, 2025

Hello,

Our software commonly returns a full result set to the client and we use the DataTables plugin to display table data.  This has worked well, but at datasets grow larger, we are trying to move some of these requests server-side so the server handles the bulk of the work rather than the client.  This has had me scratching my head in so many ways.  

I'm hoping I can get a mix of general best practice advice but also maybe some IRIS specific ideas.

6
0 233
Question Ashok Kumar T · Apr 11, 2025

Hello Community,

The subroutine ^routine is not executed while the queue is being processed in WorkMgr. However, it works when defined as a function. Is it mandatory to define subroutine^routine as a function for it to execute properly?

testwqm.mac
 set wqm = ##class(%SYSTEM.WorkMgr).%New()
 set sc=wqm.Queue("subr1^testwqm")  ; not executing the subr1 
 set sc=wqm.Queue("subr2^testwqm") ; executing the subr2 properly
 set sc=wqm.
3
0 142
Question Gary M Lusso · Mar 27, 2025

My attempts to add CR/LF between segments

// Add CR/LF after "Total Cost:" if multiple "Item Number:" exist
            //$$$LOGINFO(tItemNumberCount_" "_tTotalCostSegment_"----cr/lf")
            If (tItemNumberCount > 1) && (tTotalCostSegment > 0) {
                Set tOBXSegment = pOutput.GetSegmentAt("ORCgrp(1).OBRuniongrp.OBXgrp("_tTotalCostSegment_").OBX", .tStatus)
                //$$$LOGINFO(tOBXSegment_"----"_"tOBXSegment from cr/lf")
                Set tOBXText = tOBXSegment.GetValueAt(5) //_"||||||\X0D\\X0A\" // Append escaped CR/LF representation
                //Do tOBXSegment.

2
0 137
Question Julian Matthews · Apr 11, 2025

Hey everyone.

I'm currently looking at a process where we're utilising the Class Ens.StreamContainer, and was looking to do some deletions outside of any purge routines.

Having been burned before, I wanted to make sure that deleting the container also deletes the contents within.

From looking in the class, the  %OnDelete ClassMethod appears to be removing an index from a search table and nothing more.

Am I looking in the right place, or is there a extended class for Ens.StreamContainer that does in fact delete the %Stream.Object
contained within the Ens.StreamContainer?

2
0 157
Question Roger Taylor · Sep 18, 2023

Our client says the call to send email (method (%Net.SMTP).Send) started returning error # 6167 (Authentication expected but failed.) after installing IRIS 2022.1.2; email had worked before. Properties (%Net.Authenticator).UserName and .Password were configured. We can get email to work when we don't set property (%Net.SMTP).authenticator.

Any ideas what is going on? Thanks.

3
0 573
Question Gary M Lusso · Apr 9, 2025

I need to add an extra blank OBX segment after a segment containing text, Total Cost:

I get the OBX segment but it is in incorrect location.

It should be after the line containing Total Cost:

It needs to contain:

OBX|1|TX|2000.02^REASON FOR REQUEST^AS4|

code:

    //Do pOutput.SetValueAt(tOBXText_"~~","ORCgrp(1).OBRuniongrp.OBXgrp("_i_").OBX:5","set") //
         If (tOBXText[ "Total Cost:") {
             Set tSegmentOBX = ##class(EnsLib.HL7.Segment).%New()
             Set tSegmentOBX.SegType = "2.3:OBX"
             Set tSC = tSegmentOBX.SetValueAt("OBX", 0, "set")
             Set tSC = pOutput.

2
0 175
Question Scott Roth · Apr 9, 2025

I have a segment within a Group (grp) that needs to be validated that it is populated within the message. 

When you use a Foreach within a Business Rule how should you account for the counter in the group?

For example, Epic sends their MFN message in the following format.

MSH~MFI~[~{~MFE~STF~PRA~[~ZPR~]~[~ZLK~]~[~CER~]~[~ZMG~]~[~ZTF~]~[~ZGP~]~[~ZDD~]~}~]

so, the ZLK segment might not exist until the last MFEgrp that is in the message. I need to verify if there is an Employee ID associated with the Provider in the HL7 message before I run it through the translation.

1
0 126
Question Fahima Ansari · Mar 21, 2025

I am receiving the garbled text due to incorrect encoding or decoding. I tried to use the $zconvert function to convert it into the normal text but failed to do that. Can anybody suggest what I have to use to convert that into normal text?

Example: Garbled text that I am getting is "canââ¬â¢t , theyââ¬â¢re".

6
0 319
Article Developer Community Admin · Apr 8, 2025 5m read

Migrating InterSystems IRIS and InterSystems IRIS for Health from on-premises to the cloud offers many advantages for Application Providers and Solution Providers. These advantages include simplified operations, access to flexible resources, and enhanced resilience. Companies no longer need to worry about the physical constraints and expenses associated with maintaining on-prem infrastructure, such as power and space requirements and expensive computer hardware.

One of the most compelling benefits is the ability to accelerate speed to market. By removing the burden of infrastructure maintenance, cloud environments enable faster development and deployment cycles, allowing businesses to respond quickly to market demands and opportunities. Operational costs are also lowered, because companies can scale resources up or down based on actual needs, leading to more efficient use of capital. Moreover, migrating to the cloud can contribute to a reduced carbon footprint by optimizing energy usage through shared cloud infrastructure.

Transitioning to the cloud may involve significant changes. Companies may benefit from a more operational focus, managing and optimizing cloud resources continuously. This shift may require changes to business models, reconsideration of margins, and strategies for scaling operations up or out. While requiring more investment, embracing these changes can lead to improved agility and competitive advantage in the marketplace.

0
2 330