#InterSystems IRIS

19 Followers · 5.6K Posts

InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

Question Jean Millette · Aug 14, 2025

Is there a better way (i.e., without string commands) to remove the fractions of seconds from a %Library.PosixTime value?

This works, but seems inefficient:

set posix = 1154669852181849976w##class(%Library.PosixTime).LogicalToTimeStamp(posix)
2025-05-2712:06:15.003set str = ##class(%Library.PosixTime).LogicalToTimeStamp(posix)
set stripped = $P(str,".",1)
w##class(%Library.PosixTime).TimeStampToLogical(stripped)
1154669852181846976set newposix = ##class(%Library.PosixTime).TimeStampToLogical(stripped)
w##class(%Library.PosixTime).LogicalToTimeStamp(newposix)
2025-05-2712:06:15

No

9
0 177
Question Gigi La Course · Sep 9, 2025

I have a vendor that only wants results on patients that arrive to the ED via EMS/Ambulance.  The value I need for filtering is in the PV2;38. Some of the results requested do not allow the PV2 segment to be added to the schema in the EMR.  I was told that other orgs have used a lookup table that is populated with the PV1;19 value when an ADT messages that meets the criteria is sent in.  This table is then referenced in the business rule for the results that do not have PV2;38 and if Encounter number from result message exists on the Table, the result is sent.  Has anyone done this before?  

Do

1
0 92
Article Victoria Castillo · Mar 19, 2024 5m read

I have been walking through this with a few team members and as such I thought there might be others out there who could use it, especially if you work with HL7 & Ensemble/HealthConnect/HealthShare and never venture out past the Interoperability section. 

First, I would like to establish that this is an extension of the already established documentation on importing and exporting SQL data found here: https://docs.intersystems.com/iris20241/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_impexp#GSQL_impexp_import

This tutorial will explicitly detail how to create, populate or update a Data LookUp Table

2
1 743
Announcement Vishal Pallerla · Sep 1, 2025

#InterSystems Demo Games entry


This demo introduces an AI-powered clinical decision support tool built on InterSystems IRIS. The use case addresses clinician burnout by unlocking the wisdom trapped in 30,000 unstructured clinical notes. We showcase IRIS's powerful vector search to perform hybrid (semantic + keyword) queries for complex diagnostic challenges. The highlight is our multi-modal Retrieval-Augmented Generation (RAG) assistant, which analyzes clinical video content in real-time to find similar past cases and synthesize evidence-based recommendations, transforming how clinicians access and utilize institutional knowledge.

🗣  Presenter: @Vishal Pallerla, Sales Architect, InterSystems

1
0 110
Question Scott Roth · Sep 8, 2025

We currently have Business Operation that we built to use the EnsLib.SQL.OutboundAdapter so we can make Microsoft SQL Server Stored Procedure calls. The BO is attached to a Java Gateway Service.

Some of our MS SQL Databases have moved from being OnPrem to Azure Cloud. We have started seeing where we are receiving errors on the BO saying that we cannot connect to the Azure Database, but we never receive a Disconnect from the Azure Database.

Once this happens it seems that the Java Gateway still thinks the connection is opened, and we have to Stop/Start the Java Gateway to get the connection to

2
0 79
Question Kurro Lopez · Sep 5, 2025

Hello community.

I have a request from a client who wants to do the following.
Currently, they have a data upload process via FTP in which they have implemented a RecordMap to store the information of the CSV files that are uploaded to the FTP directory.
Now they want to have another directory so that it is ONLY executed through an external instruction, not when the file is uploaded to the directory.

Is it possible to create a process that reads the FTP directory on demand? That is, ONLY executes the EnsLib.FTP.InboundAdapter service when we tell it to.
There would be no problem creating an API

3
0 105
Question Touggourt · Sep 3, 2025

Hi

I'm a newbie in productions and I've received the below business operation from a client that I need to include in a production,

So not sure if I'm supposed to create a new Business operation with a new name and select the class as below but then what's next and what should be the output type in X12 tab or if it should be type SCOSwarm.Message.SX3ScheduleResponse?

Or should I be ignoring this class for now, create a new business operation called SCOSwarm.Operation.SX3ScheduleOp copy the code across ...etc but how can I include EnsLib.NullAdapter ?  

Thanks

2
0 84
Article Derek Gervais · Sep 8, 2025 3m read

Hey folks! Having recently onboarded to InterSystems, I realized that despite having a totally free and awesome Community Edition, it's not super clear how to get it. I decided to write up a guide highlighting all the different ways you can access the Community Edition of InterSystems IRIS:

Get InterSystems IRIS Community Edition as a Container

Working with a containerized instance of the Community Edition is the recommended approach for folks who are new to developing on InterSystems IRIS, and in my opinion it's the most straightforward. InterSystems IRIS Community Edition can be found on DockerHub; if you have an InterSystems SSO account, you can also find it in the InterSystems Container Registry.

In either case, you'll want to pull the image you want using the docker CLI:

docker pull intersystems/iris-community:latest-em
// or
docker pull containers.intersystems.com/intersystems/iris-community:latest-em

Next, you'll need to start the container: In order to interact with IRIS from outside the container (for example, to use the management portal) you'll need to publish some ports. The following command will run the IRIS Community Edition container with the superserver and web server ports published; note that you can't have anything else running that depends on ports 1972 or 52773!

docker run --name iris -d --publish 1972:1972 --publish 52773:52773 intersystems/iris-community:latest-em
0
2 375
Article Megumi Kakechi · Dec 5, 2024 1m read

InterSystems FAQ rubric

If you want to raise an arbitrary custom error in a TRY block, you can pass an exception with a throw as follows. In the following example, a custom error is raised if Stcount is less than 1.

Class User.Test
{

ClassMethod ExceptionTest()
 {
    try
    {
      // : some codesif (Stcount<1) {
          throw##class(%Exception.General).%New("User-defined error", "5001", "location", "Data at location error")
          // User-created errors are 5001 and above
      }
    }
    catch ex
    {
      write"Errors #", ex.Code, ": ", ex.Name, " : ",
1
2 536
Question Fiona Griffiths · Mar 11, 2025

Hi

I'm trying to assess whether git-source-control will work for our development environment.  I've watched some videos and read the documentation and read some posts and I'm still unsure whether it works with multiple developers using a shared remote development environment (i.e. namespace).  This [Video] Let InterSystems IRIS Do the Work: Git Source Control & Linting says that you can have multiple developers and says it's "Package Manager-aware (supporting multiple repos in one namespace)" whereas  this post on the git-source-control github Remote development and multiple users · Issue #613

3
0 240
Article Andre Ribera · Nov 15, 2024 2m read

I have a large tree outside my window. Here in Phoenix, Arizona, USA it's still warm and sunny so our plants are still covered in lush foliage despite so many other places in the full throws of Autumn. My desk is oriented such that I can look out at the tree throughout the day. Part of the reason I like having my desk facing the tree is because I need the break from staring at the computer screens but the other reason is because I need reminders from nature from time to time.
Today I'm reminded of two things:

  1. Growth requires absorbing from your environment
  2. Growth doesn't always happen in the
2
6 438
Question Scott Roth · Aug 4, 2025

I am trying to help another group within our organization access a SQL Table that I have created to populate Epic Department Data within our environment and came across the ability to use SQL Seach REST Interface using iKnow.

However, I am having issues trying to get it to work via POSTMAN before I hand off the solution...

the POST URL... https://<servername>/api/iKnow/latest/TESTCLIN/table/osuwmc_Epic_Clarity.DepartmentMaster/search

where osuwmc_Epic_Clarity.DepartmentMaster is the table

In the body...

{"query":SELECT ID, Abbr, Name, ExternalName, PhoneNumber, ApptPhone, FaxNumber, Address1,
15
1 241
Article Ariel Glikman · Sep 7, 2025 1m read

Often times when working with FHIR data, for example with IRIS For Health, you'll find it useful to create a custom FHIR operation. The FHIR Standard comes with a set of defined operations (such as $everything) but a custom operation comes in handy when you need to create some extra functionality that goes beyond the set of standard FHIR operations. The docs take you step-by-step (though this comment may be helpful to those of you just getting started).One thing I would highlight, purely for aesthetic purposes, is how to syntactically name your function such that you can call it with hyphens.

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

0
0 78
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
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: Table -
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 Geneva,

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
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/EnsSea
6
0 114
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é.
0
0 33
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.

0
0 140
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 205
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 1261