#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.

Announcement Larry Finlayson · Jan 8

Developing Custom Components for Integrations – In Person (Boston, MA) February 10-12, 2026

  • This 3-day course teaches implementation partners, integrators, developers, and analysts how to create custom interfaces using InterSystems integration technologies.
  • Students build a Production using InterSystems® Objects, graphical tools in the Management Portal, Business Process Language (BPL), the adapter library, and an IDE.
  • Students create business services, business processes, business operations, and messages.
0
0 43
Question Scott Roth · Jan 7

I was trying to see if we could connect to another Server, we use to execute external scripts using %Net.SSH.Session.

TESTCLIN>set sshSession = ##class(%Net.SSH.Session).%New()

TESTCLIN>set user = <omitted>

TESTCLIN>set host = <omitted>

TESTCLIN>set privateKey = "/nfs/data/ssh/<omitted>"
TESTCLIN>set publicKey = "/nfs/data/ssh/<omitted>.pub"
TESTCLIN>Set statusConnection = sshSession.Connect(host)

TESTCLIN>set statusAuth = sshSession.
2
0 83
Question Scott Roth · Jan 2

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

Class osuwmc.DataLookup.REST.Base Extends %CSP.
4
0 86
Question Julian Matthews · Dec 31, 2025

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-31 14:37:58.6022705

However, if I then try another system class, I get an error:

ENV>Set netGate = $System.external.getDotNetGateway()
ENV>Set netProxy=netGate.new("System.Convert",0)
ENV>Write netProxy.
6
0 89
Question Scott Roth · Jan 2

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.
7
0 83
Question Leigh Burns · Jan 2

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.

I am now switching to using the Native SDK with the InterSystems.Data.IRISClient assembly and using the C# IRISReference and IRISObject.

2
0 68
Article Kate Lau · Jan 1 4m read

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.😁

SMART on FHIR EHR Launch with IRIS for Health

Building an FHIR Repository + OAuth2 Authorization Server/Resource Server Configuration on IRIS for Health Part 2

 

For me, as a user who do not have much knowledge about OAuth2.0. I think it quite difficult to understand how to setup the whole OAuth2.0 environment before knowing how's it look like (what is it?

0
5 119
Question Scott Roth · Jul 14, 2025

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"

ClassMethod Transform(source As HS.FHIRServer.Interop.Response, target As osuwmc.Epic.FHIR.DataStructures.
1
0 134
Question Scott Roth · Jul 2, 2025

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.

1
0 113
Question Scott Roth · Aug 20, 2025

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...

ERROR #5478: Keyword signature error in osuwmc.Nutrition.HL7SoapOperation:Method:SendMessage, keyword 'method argument/s signature' must be 'EnsLib.HL7.Message,EnsLib.HL7.

1
0 110
Question Scott Roth · Oct 22, 2025

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.

2
0 80
Question Scott Roth · Oct 24, 2025

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

1
0 89
Question Scott Roth · Dec 29, 2025

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)
    }

To save time, I was thinking of just creating a BS that goes out and gets the Authorization Token every hour.

3
0 79
Article Keren Skubach · Dec 29, 2025 2m read

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.

0
2 109
Question Jonathan Harris · Dec 24, 2025

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

3
0 80
Article Ashok Kumar T · Dec 28, 2025 3m read

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.

This package is a developer-centric utility kit designed to provide high-level ObjectScript wrappers, familiar syntax, and robust error handling for Embedded Python.

1
2 104
Question Scott Roth · Dec 26, 2025

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



ERROR <Ens>ErrException: <INVALID OREF>Transform+15 ^osuwmc.Epic.FHIR.DTL.FHIRResponseToPatient.1 -- logged as '-'
number - @'
set target.MRN = identifier.value
'



Here is my Ens.DataTransform

Class osuwmc.Epic.FHIR.DTL.
3
0 86
Question Evgeny Shvarov · Dec 28, 2025

Hi developers!

There is a neat feature of ObjectScript classes - Query element, which allows you to write in a clear SQL (without any & or ()), pass parameters to it and call it from ObjectScript as do QueryNameFunc() or via Call SQLProcedureName via SQL, .e.g.

Query MyQuery(p as %String) as %SQLQuery [SQLProc]

{ 

SELECT * FROM MyTable 

WHERE Name=:p

}

All works fine, but when I tried to use the same for a DELETE statement see the following error:

SELECT expected, DELETE found ^ DECLARE Q1 CURSOR FOR DELETE

Is the Query element for SELECT only? What am I doing wrong? )

4
0 76
Question Scott Roth · Dec 26, 2025

I am trying to centralize our FHIR queries into a single BP object that would send the FHIR query to the EMR, interpret the response into a %Persistent structure that could be sent back to the requestor. In theory it seemed like it would work but I am running into an issue..

"Warning on Message body 5@osuwmc.Epic.FHIR.DataStructures.PatientSearch.Record'
/ 229 because Status 'ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>Transform+3 ^osuwmc.Scott.FHIR.DemoOutboundHL7Message.1 *DocType,osuwmc.Epic.FHIR.DataStructures.PatientSearch.Record -- logged as '-'
number - @'

3
0 71
Article Hiroshi Sato · Apr 3, 2025 1m read

InterSystems FAQ rubric

The default settings for Stay Connected and Pool Size for business hosts using the TCP adapter are as follows:

StayConnected = -1(no timeout)
PoolSize = 1

If a network problem causes a connection to a business host to be lost, the production side will be unable to detect this and will not accept new connections. In this situation, no event is recorded in the event log. If StayConnected is set to its default value (-1), connections will not time out, and you will need to restart the business host before it can accept new connections.

1
0 216
Question Eyal Levin · Dec 25, 2025

Hi, 
Our production FHIR server is populated by several processes from several sources, 
some of those sources send test data or wrong data (by mistake or as part of an integration test), 
the data is consumed by our BI every 15 minutes.
when I mark a resource as test (using meta security) BI knows to update it on their system.
everything is fine up to here (except that there is test data in Prod)
my problem is that if someone send the same patient again it will recreate the patient without the security tag.
any thoughts?
 

0
0 50
Article Piyush Adhikari · Dec 24, 2025 6m read

InterSystems API Manager (IAM) is a core component of the InterSystems IRIS Data Platform, offering centralized API management with a strong emphasis on security. IAM simplifies the entire API lifecycle, from creation to retirement, and provides a developer portal for easy API discovery and integration. Access control features allow administrators to define precise permissions, and IAM seamlessly integrates with the IRIS Data Platform, enhancing data management and integration capabilities.

Features of IAM include:

  • API Gateway: Centralized API management and security hub.
0
0 101
Article Tani Frankel · Dec 24, 2025 2m read

You send an HTTP request and get back an HTTP error but with an HTML error page which you didn't expect... what's happening?... 🤔

Specifically for example, perhaps you tried to READ a FHIR Resource (e.g. /Patient/123) and you get back a 404 error page, even though with other Patient IDs, you get back the Resource payload, so "the page" definitely does exist... why should you be getting a 404 error page? 🙄

0
0 119
Article Tani Frankel · Dec 22, 2025 1m read

Looking at my database I see I have a very big ^rINDEXSQL global? Why is that? 😬

In the Management Portal SQL page, under "SQL Statements" I see a 'Clean stale' button - what does this do? 🤔

In the list of Statements some have a 'Location' value and some don't? How is that? 🤨

0
1 97
Question Ashok Kumar T · Dec 15, 2025

Hello Community,

What is the correct way to import and compile .dfi files when using zpm load? Do .dfi files need to be defined in module.xml?

I have code that imports the .dfi file successfully; however, when I run
zpm "load /home/irisowner/dev/ -v"

I get the message: Unknown file type. Skipping file: .pivot.DFI

    zpm "install isc-dev"
    do ##class(dev.code).workdir(dir)
    do ##class(dev.code).import("*.DFI")

Thank you!

30
0 223
Article Dmitrij Vladimirov · Dec 1, 2025 5m read

In this article, we will discuss all the debugging tools included in the Microsoft Visual Studio Code IDE.

What will be covered:

  • Breakpoints
  • Watch window
  • Call Stack

Let's start by learning about debugging requirements!

Prerequisites

There are two plugins (extensions) for debugging ObjectScript:

The first is part of the InterSystems ObjectScript Extension Pack. The second is Serenji, a standalone plugin that provides an editor, file manager, and debugging functionality. Both plugins can be installed from the plugin store. To activate key functionality, Serenji requires a license. For this article, we'll use the InterSystems ObjectScript Extension Pack to reduce the learning curve. After you've mastered the basics, you can consider purchasing a paid license for Serenji.

2
5 291