Article sween · Feb 18, 2025 5m read

Professional Grade FHIR® to OMOP Transformation

Lets zero in on the use of the word professional and put it into some context.  It was written by industry experts who wrapped it up in a fee based service with support and some guardrails around flexible options to contribute to its behavior.  I feel its an important distinction to either an open or home grown solution (though it may do the same thing) to consider it to scale or provide mission critical value on the other side of it. The OHDSI community has an entire competency around the subject of ETL to the OMOP database,  WhiteRabbit fo












1
0 275
Question Don Martin · Sep 5, 2025

We have a task that runs objectscript code to load data into a linked external table.  After upgrading from 2024.1 to 2025.1, the load is throwing an error, with error code -400, and no error message.  The data DOES get loaded into the external table in its entirety, so with no meaningful error message, its hard to determine what the issue is.  The result is the same with and without the USING clause, so don't let that confuse you.  We have logs of this statement succeeding before upgrade, and were able to get this statement to work in our production environment, which is still on version 2024

0
0 73
InterSystems Official Bob Kuszewski · Aug 15, 2025

Welcome to the 2025 third quarter update.

Last quarter, we had a few important announcements that are worth reiterating this quarter.

  • RHEL 10 support was added to IRIS 2025.1
  • 2025.3 will use OpenSSL 3 across all operating systems SUSE 15 sp6 will be the minimum OS for orgs using SUSE
  • The minimum CPU standards are going up in 2025.3
  • Older Windows Server operating systems will no longer be supported in 2025.3

If you’re new to these updates, welcome!  This update aims to share recent changes as well as our best current knowledge on upcoming changes, but predicting the future is tric

2
0 270
Article Hiroshi Sato · Nov 21, 2024 1m read

InterSystems FAQ rubric

Mirroring only synchronizes database files.

To synchronize other files required for your application (CSP files, images, documents, etc.) between the two servers that make up the mirror set follow one of the approaches:

  1. Place those files on a shared disk by introducing a NAS or similar device
  2. Or use file sync software to synchronize files between two servers.
2
1 311
Question 지용 김 · Sep 4, 2025

Hello,

I am currently maintaining a legacy application that was developed in ObjectScript and accesses data by working directly with globals.
For a new program, however, I plan to access the same global data through SQL-mapped classes.

I have two questions regarding this approach:

  1. If I define indexes in the SQL-mapped class, what potential impact (if any) could this have on the existing legacy application that directly accesses the globals?
  2. I’ve read that when an index is defined in an SQL class, it will not be automatically updated if data is modified directly in the global (outside of
1
0 69
Question Jonathan Harris · Sep 4, 2025

..Contains(source.{ORCgrp(x1).OBRuniongrp.NTEi2(x2):Comment(x3)},"(")&&..Matches(source.{ORCgrp(x1).OBRuniongrp.NTEi2(x2):Comment(x3)},"^[A-Z][0-9][0-9]$")

I want to do this to match strings such as X98. Community AI tells me this is correct but I get an error in testing. Specifically, this is the part causing the error;
..Matches(source.{ORCgrp(x1).OBRuniongrp.NTEi2(x2):Comment(x3)},"^[A-Z][0-9][0-9]$")


What do I need to change?

1
0 54
Question Matheus Augusto · Sep 4, 2025

Dear, Community!

I have a concern about using %Stream.TmpCharacter for storage purposes. Reading the class's source code, I can understand a bit about how it works. But I'd like to know from the community how it actually works. Is it necessary to use the .Clear() method to clear this buffer, or is it done automatically upon disposal?

Note: Please forgive my poor English.

6
0 127
Article Megumi Kakechi · Sep 4, 2025 2m read

InterSystems FAQ rubric

In InterSystems IRIS, you can create linked tables using commands, instead of using System Explorer > SQL > Wizard > Linked Tables in the Management Portal:

To create a linked table, use the CreateLinkedTable method of the %SYSTEM.SQL.Schema class. See the class reference for details.

To execute it, follow these steps:

set sc = $SYSTEM.SQL.Schema.CreateLinkedTable("<dsn>","<Schema>","<Table>","<primaryKeys>","<localClass>","<localTable>","")

/// 1st argument: dsn - SQL Gateway connection name/// 2nd argument: Schema - Source schema name/// 3rd argument: Tab
0
1 120
Question Prakash Hinduja · Sep 4, 2025

Hi Everyone, I'm Prakash Hinduja, a financial advisor and consultant. My roots in India now living in Geneva, Switzerland (Swiss). I'm looking for some suggestions on how to get the best performance from Adaptive Analytics 2023.2. I know it uses Adaptive Parallel Execution and automatic aggregates, but I'm curious if you've found any other tips or tricks. For example, are there any specific data modeling choices or system configurations that have worked well for you? I'm trying to make our cubes as responsive as possible. Thanks in advance for any insights!

Regards

Prakash Hinduja from Genev

0
0 55
Article Evgeny Shvarov · Sep 3, 2025 5m read

Hi folks!

Sometimes, when designing a class method and feeding it with more and more useful features, very soon the number of parameters can reach 10 and even more.

It becomes pretty difficult for users of useful methods to remember the position of the important parameter, and it is very easy to misuse the position and transfer the wrong value to the wrong parameter.

Here is an example of such a method (I asked GPT to create a method with 20 params):

ClassMethod GenerateReportWith20Params(
    pTitle As%String = "",
    pAuthor As%String = "",
    pDate As%String = "",            // e.g. 2025-09-03
    pCompany As%String = "",
    pDepartment As%String = "",
    pVersion As%String = "1.0",
    pFormat As%String = "pdf",       // pdf|html|docx
    pIncludeCharts As%Boolean = 1,
    pIncludeSummary As%Boolean = 1,
    pIncludeAppendix As%Boolean = 0,
    pConfidentiality As%String = "Public",
    pLanguage As%String = "en",
    pReviewers As%String = "",       // CSV, e.g. "Alice,Bob"
    pApprover As%String = "",
    pLogoPath As%String = "",
    pWatermarkText As%String = "",
    pColorScheme As%String = "default",
    pPageSize As%String = "A4",
    pOrientation As%String = "Portrait",
    pOutputPath As%String = "report.pdf"
) As%Status
{

// implementation
}
0
1 109
Announcement Michael Braam · Aug 29, 2025

#InterSystems Demo Games entry


⏯️ Copilot for InterSystems Embedded BI

The Co-Pilot enables you to leverage InterSystems BI without deep knowledge in InterSystems BI. You can create new cube, modify existing cubes or leverage existing cubes to plot charts and pivots just by speaking to the copilot.

Presenters:
🗣 @Michael Braam, Sales Engineer Manager, InterSystems
🗣 @Andreas Schuetz, Sales Engineer, InterSystems
🗣 @Shubham Sumalya, Sales Engineer, InterSystems

2
0 121
Question Touggourt · Sep 2, 2025

Hi Guys,

I get the below error when trying to compile an imported class in IRIS, it compiles if I remove [ Collection = list ] so not sure about the use of  [ Collection = list ] and if removing it would affect anything and its just a duplication?

Thanks

3
0 71
Question Scott Roth · Sep 2, 2025

I created a Custom Search Table that extends EnsLib.HL7.Search Table. I saved, compiled, and rebuilt the index however when I go into Message Search to try to use the Search Table, within the conditions the proper fields are not showing up that was defined. It is showing the fields from EnsLib.HL7.SearchTable. I did a build index on both EnsLib.HL7.SearchTable and OSU.HL7.SearchTable.

Class OSU.HL7.SearchTable Extends EnsLib.HL7.SearchTable
{

Parameter DOCCLASS = "EnsLib.HL7.Message";Parameter EXTENTSIZE = 4000000;

XData SearchSpec [ XMLNamespace = "http://www.intersystems.com/EnsS
6
0 113
Announcement Larry Finlayson · Sep 2, 2025

Managing InterSystems Servers – In-Person  September 29-October 3, 2025

  • Configure, manage, plan, and monitor system operations of InterSystems Data Platform technology
  • This five-day course teaches system and database administrators how to install, configure and secure InterSystems server software, configure for high availability and disaster recovery, and monitor the system. Students also learn troubleshooting techniques.
  • This course is applicable to both InterSystems IRIS and Caché. Although the course is mostly platform independent, students can complete the exercises using either Windo
0
0 31
Announcement Vishal Pallerla · Sep 1, 2025

#InterSystems Demo Games entry


⏯️ Health Evolve: Transforming Unstructured Data

Did you know that 80% of healthcare data is stuck in unstructured formats such as fax? If you take a walk down to Mass General in Boston, you'll literally see a state-of-the-art MRI machine next to a fax machine. Healthcare keeps building incredible new technology but can't let go of legacy technology. We call this the "legacy modernization paradox". This short film follows a care manager at Blue Plan who spends her days doing chart reviews, reading faxes line-by-line, struggling to provide her members the care they need. Everything changes when Blue Plan pilots InterSystems Health Evolve, a solution that transforms her faxes into machine-readable FHIR data ready for AI and analysis. To access our fully working Text-to-FHIR prototype, visit HealthEvolve.de.

Presenters:
🗣 @Vishal Pallerla, Sales Architect, InterSystems
🗣 @Erica Song, Sales Engineer, InterSystems
🗣 @Louis Kabelka, Sales Engineer, InterSystems
🗣 Zelong Wang, Sales Engineer, InterSystems
🗣 John Murtha, Health Plan Executive, InterSystems

1
1 168
Announcement Tani Frankel · Sep 1, 2025

#InterSystems Demo Games entry


⏯️ Being READY to Tackle Healthcare Enterprise Challenges in a Few Clicks

Managed Cloud Solutions to Help Streamline Your Health Services.

This demo showcases composing several InterSystems Managed Cloud Services to solve various use-cases.

The video is actually built of 6 short chapters (each ~2.5 minutes long) showing each part of the story, demoing a different service.

You can watch each "chapter" individually if you're interested in a specific service, but there is value in viewing the whole composition and observing the full flow.

  • 0:00Health Connect Cloud - Medical Device MQTT - HL7v2 for Hospital Operation Systems
  • 2:29FHIR Server & FHIR Transformation Service - HL7v2 to FHIR & Repository for Regulation & Exchange
  • 5:21FHIR SQL Builder - Providing standard relational access to FHIR data
  • 7:22 "FHIR IntelliChat" (see note below) - Natural human language chat with FHIR Server
  • 9:37OMOP Solution - FHIR to OMOP transformation & OMOP database with OHDSI tools compliance
  • 12:54InterSystems Data Studio for Health - Creating a multi data/app sources fabric 

[Note the "FHIR IntelliChat" part is not an actual formal InterSystems service, it is just a demonstration of a possibility (based on this solution by @José Pereira) ]

Presenters:
🗣 @Tani Frankel, Sales Engineer Manager, InterSystems
🗣 @Keren Skubach, Senior Sales Engineer, InterSystems
🗣 @Ariel Glikman, Sales Engineer, InterSystems

0
0 90
Article Anastasia Dyubaylo · Aug 13, 2025 3m read

Among the many contributors shaping the InterSystems Developer Community, some bring not only deep technical knowledge but a long-term vision and passion for empowering others. One of these exceptional voices belongs to @John Murray, a veteran of InterSystems technologies, an open-source advocate, and a founding member of the Developer Community.

👏 Let’s take a closer look at John’s remarkable journey and his continuing legacy in the InterSystems ecosystem.

22
1 387
Article Robert Barbiaux · Sep 1, 2025 9m read

InterSystems IRIS interoperability production development involves using or writing various types of components. They include services (which handle incoming data), processes (which deal with the data flow and logic), and operations (which manage outgoing data or requests). Messages flowing through those components constantly require being adapted to consuming applications. Therefore,Data transformations are by far the most common component in interoperability productions.

In the early stages of data transformation development, thetest tool from the Management Portal becomes quite handy. It






0
0 139
Article Alberto Fuentes · Sep 1, 2025 7m read

Customer support questions span structured data (orders, products 🗃️), unstructured knowledge (docs/FAQs 📚), and live systems (shipping updates 🚚). In this post we’ll ship a compact AI agent that handles all three—using:

  • 🧠 Python + smolagents to orchestrate the agent’s “brain”
  • 🧰 InterSystems IRIS for SQL, Vector Search (RAG), and Interoperability (a mock shipping status API)
0
2 204
Question Eduard Lebedyuk · Jan 27, 2022

I have defined a class with a dynamic object property:

 

My class

Class test.Dyn Extends %Persistent
{

Property json As %DynamicObject;

/// do ##class(test.Dyn).test()
ClassMethod test()
{
  do ..%KillExtent()
  for len = 100, $$$MaxStringLength - 1, $$$MaxStringLength, $$$MaxStringLength+1, $$$MaxStringLength *2 {
    set sc = ..save(len)
    write "Len: ",len, " Result: ",$case($$$ISERR(sc), $$$YES: $System.Status.GetErrorText(sc), : "OK"),!
  }
}

ClassMethod save(len)
{
  set json = {}
  set stream = ..getStream(len-8) // -8 because {"a":""}
  do json.%Set("a", stream, "stream")
 
  set obj = ..%New()
  set obj.json = json
  quit obj.%Save()
}

ClassMethod getStream(len)
{
  set stream = ##class(%Stream.TmpCharacter).%New()
 
  if len<$$$MaxStringLength {
    do stream.Write($tr($j("",len)," ","A"))
  } else {
    for i=1:$$$MaxStringLength:len {
      do stream.Write($tr($j("",$$$MaxStringLength)," ","A"))
    }
    do stream.Write($tr($j("",len-i)," ","A"))
  }
  quit stream
}
}

The issue I encounter is that if a length of a serialized json property is more than 3641144 symbols, the object fails to save with the following error (either MAXSTRING or STRINGSTACK):

Length: 100 Result: OK
Length: 3641143 Result: OK
Length: 3641144 Result: OK
Length: 3641145 Result: ERROR #5002: ObjectScript error: <MAXSTRING>%GetSerial+1^%Library.DynamicAbstractObject.1
Length: 7282288 Result: ERROR #5002: ObjectScript error: <STRINGSTACK>%GetSerial+1^%Library.DynamicAbstractObject.1

Is there a workaround? I need to store moderately large jsons (10-15 Mb) and dynamic object properties allow for a very convenient access.

$ZSTORAGE is set to -1.

8
0 1260