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.
In healthcare, interoperability is the ability of different information technology systems and software applications to communicate, exchange data, and use the information that has been exchanged.
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.
IRIS supports CCDA and FHIR transformations out-of-the-box, yet the ability to access and view those features requires considerable setup time and product knowledge. The IRIS Interop DevTools application was designed to bridge that gap, allowing implementers to immediately jump in and view the built-in transformation capabilities of the product.
In addition to the IRIS XML, XPath, and CCDA Transformation environment, the Interop DevTools package now provides:
.png)
Hi Community,
In this article, I will introduce my application iris-fhir-bridge
IRIS-FHIR-Bridge is a robust interoperability engine built on InterSystems IRIS for Health, designed to transform healthcare data across multiple formats into FHIR and vice versa. It leverages the InterSystems FHIR Object Model (HS.FHIRModel.R4.*) to enable smooth data standardization and exchange across modern and legacy healthcare systems.
Profiling CCD Documents with LEAD North’s CCD Data Profiler
Ever opened a CCD and been greeted by a wall of tangled XML? You’re not alone. Despite being a core format for clinical data exchange, CCD's are notoriously dense, verbose, and unfriendly to the human eye. For developers and analysts trying to validate their structure or extract meaningful insights, navigating these documents can feel more like archaeology than engineering.
Introducing the CCD Data Profiler
LEAD North’s CCD Data Profiler is a full-stack tool built with Intersystems' technology that streamlines the import, parsing,
Let me introduce you to FHIRCraft, a lightweight tool to generate synthetic FHIR resources.
Now, you might be thinking:
“But wait — doesn’t Synthea already do that, and with tons of resources?”
Exactly — and that’s precisely why I created this app.
FHIRCraft is designed to generate simpler, smaller, and more focused FHIR resources. Unlike Synthea, it doesn’t aim to simulate entire patient histories or clinical workflows. Instead, it helps when you’re just getting started with FHIR — when you want to test things incrementally, or explore how specific resources behave in isolation.
In its current
Hi Developers,
We are happy to announce the new InterSystems online programming contest dedicated to all things health-related:
🏆 InterSystems FHIR and Digital Health Interoperability Contest 🏆
Duration: May 12 - June 1, 2025
Prize pool: $12,000

After we rolled out a new cointainer based on containers.intersystems.com/intersystems/irishealth:2023.1 this week, we suddenly noticed that our FHIR Repository started responding with an Error 500. This turns out to be caused by PROTECT violations on the new HSSYSLOCALTEMP namespace and database used by this version of the IRIS for Health FHIR components.
The trick to solve that is to add the "%DB_HSSYSLOCALTEMP" to the Web Application(s) that handle FHIR Requests. You can script that by running the following Class method in the namespace(s) that define these Web Applications:
doWe’re issuing a point release for InterSystems IRIS, IRIS for Health, and Health Connect 2025.1 — version 2025.1.0.225.1 — to address a critical interoperability issue affecting users who leverage System Default Setting enabled business hosts.
What’s the issue?
In certain configurations where a Business Host is marked as System Default Setting enabled, applying new settings via the UI may incorrectly indicate that changes were applied, even though the necessary restart did not occur.
I'm creating a Business Process that:
The Business Process is created with BPL, and objects are stored in BP context. When I execute this Process, in the 3rd point the object obtained in first transformation doesn't exist. It's empty.
I have tried to make transformation before making CALL's, I mean:
In the previous article we have reviewed how to install our EMPI in standalone, so we are ready to start the basic configuration of our EMPI.
First of all we have to do an initial basic configuration, we can access to the configuration from the Configuration menu of our Registry.
.png)
Selecting that option will allow to us to edit the basic configuration table of the Registry:
.png)
In this menu we have to add the following parameters and update the value of one of them:
| KEY | VALUE | DESCRIPTION |
| \HSPI\LinkageDefinition | Local.Linkage.Definition | Main class responsible of the management of the |
Business Process is adding control characters.
Input HL7 shows no control characters in Notepad ++
.png)
Output
.png)
.png)
Code:
Method FromCerner(pRequest As EnsLib.HL7.Message) As %Status
{
#dim tStatus As %Status = $$$OK
#dim eException As %Exception.AbstractException
#dim tOBXText As %String
#dim tItemNumberCount As %Integer = 0
#dim tItemNumberProcessed As %Integer = 0
#dim tTotalCostSegment As %Integer = 0
#dim tOrderType As %String
#dim i As %Interger = 0
#dim tOBXKey As %Integer = 0
#dim tOBXTextChanged As %String
////
Set pOutput = pRequest.%ConstructClone(1) //
Hi Developers!
Here are the technology bonuses for the InterSystems FHIR and Digital Health Interoperability Contest 2025 that will give you extra points in the voting:
Hi,
I've been working on a very basic Interoperability production in my computer. I followed one of the examples in the courses and created a TEST.FileRouterRoutingRule, but when trying to edit this rule, it takes me to the Rule Editor Login Page, where I can't get in (Not even with the _SYSTEM credentials) - Is this functionality unavailable in the community edition?
.png)
The amazing Iris-nator has arrived in town.
He knows what you think, with just a few questions he is able to guess the character you have thought of.
Do you dare?
One of the challenges of creating a DICOM message is how to implement putting data in the correct place. Part of it is by inserting the data in the specific DICOM tags, while the other is to insert binary data such as a picture - In this article I will explain both.
To create a DICOM message, you can either use the EnsLib.DICOM.File class (to create a DICOM file) or the EnsLib.DICOM.Document class (to create a message that can be sent to PACS directly). In either case, the SetValueAt method will allow you to add your data to the DICOM tags.
A DICOM message consists of two constituent parts, Co
Hey Developers,
Get an introduction to Apache Kafka, a popular event-streaming platform, and see a demonstration of the upcoming Kafka integration with InterSystems IRIS Interoperability:
⏯ Kafka! Integrating the World's Favorite Stream Processor with InterSystems IRIS
Has anybody tried to extend the Menu on Management Portal? I like to add a new page or a dashboard that will be created soon to the Management Portal and allow others to use it also. I understand there are risks that I could lose things during an upgrade. I am okay with that. Does InterSystems support such an effort?
The InterSystems IRIS is a great data platform and it is met the current features required by the market. In this article, you see the top 10:
Note: this list was updated because many features are added to IRIS in last 3 years (thanks @Kristina Lauer)
| Rank | Feature | Why | Learning more about it |
| 1 | Democratized analytics | InterSystems IRIS Adaptive Analytics: Delivers virtual cubes with centralized business semantics, abstracted from technical details and modeling, to allow business users to easily and quickly create their analyses in Excel or their preferred analytics product |
Hi all,
I can't find the list of business host setting sections and (crucially) how to refer to them in the SETTINGS parameter, as marked in purple here:
Parameter SETTINGS = "MySetting:Basic";
Does anyone know where this list lives?
Otto
I added extra OBX segments and I need to renumber OBX 4 so they are sequential.
.png)
For my hundredth article on the Developer Community, I wanted to present something practical, so here's a comprehensive implementation of the GPG Interoperability Adapter for InterSystems IRIS.
Every so often, I would encounter a request for some GPG support, so I had several code samples written for a while, and I thought to combine all of them and add missing GPG functionality for a fairly complete coverage. That said, this Business Operation primarily covers data actions, skipping management actions such as key generation, export, and retrieval as they are usually one-off and performed manually anyways. However, this implementation does support key imports for obvious reasons. Well, let's get into it.
One of the pain points for maintaining HL7 interfaces is the need to run a reliable regression test upon deployment to new environments and after upgrades. The %UnitTest class allows unit tests to be created and packaged alongside interface code. Test data can also be maintained within the unit test class, allowing for quick and easily repeatable smoke-testing and regression testing.
##Resources:
Standard %UnitTest class
This tutorial utilizes a modification of UnitTest-RuleSet by Alex Woodhead from the Open Exchange (https://openexchange.intersystems.com/package/UnitTest-RuleSet) to
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.Inse
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".
Hi Community,
I would like to present my last package OpenAPI-Suite, this is a set of tools to generate ObjectScript code from an OpenAPI specification version 3.0. In short, these packages allow to:
The complex record mapper can help you process text file data consisting of various types of records to persistent messages in IRIS. To gain a basic understanding of the complex record mapper and see an example implemented in the production, check out the learning services video below:
https://community.intersystems.com/post/video-using-complex-record-mapper
This article is going to help troubleshoot when you see <Method DOES NOT EXIST> when handling record objects. For example, when purging messages in the production, you might see errors that indicate issues when deleting certain records:
<METH
We are receiving the report in text format and it has special characters like ', - like that in the text. Source system is using the UTF8 encoding format hence the text is showing as ' � ' . Is there a way to convert the utf8 to actual character in the DTL.
Thank you,
Hi all,
I'm triying to create a SOAP Pass-through acording to Configuring Pass-through Business Services instructions, but I'm not able to run it ![]()
I'm using the following WebService
I have text coming in CCDA file as below:
<td>
<content ID="1234">
virus vaccine
<sup>1</sup>
</content>
</td>
I want to get the entire value available inside the content tag. Can anybody please help me out how to get this?
Once upon a time in Ensemble Management Portal the pool size of each component (Business Host) within the production was displayed in the Production Configuration page.
This information was very useful, especially when a production have tens or hundreds of components.
.png)
Now days the pool size is no longer displayed in the Production Configuration page and to get the pool size you need to click in each and every host in your production.
What if you have hundreds of business hosts and you need to check the pool size of each? It's a nightmare!
In systems I have control of I've modified the production