Find

Article
· 3 hr ago 4m read

了解 SQL 窗口函数

InterSystems IRIS中的窗口函数(Window Functions)可让您直接在SQL中执行强大的分析操作,例如累计总和、排名和移动平均值等。
这些函数针对与当前行相关的一组行(即“窗口”)进行操作,且不会像 GROUP BY那样合并结果。
这意味着您可以编写更简洁、更快速且更易于维护的查询——无需循环、无需连接、无需临时表。
在本文中,我们将通过处理一些常见的数据分析任务来了解窗口函数的作用机制。


InterSystems IRIS中的SQL窗口函数入门

SQL窗口函数(SQL window functions)是数据分析的强大工具。
它们允许你在保留各行列可见性的同时,跨行计算聚合值和排名。
无论你是在构建仪表盘、报表还是进行复杂分析,窗口函数都能简化你的逻辑并提升性能。

注:我并非窗口函数领域的专家,但我愿意分享助我理解窗口函数的心得体会和相关资源。非常欢迎大家提出建议或进行指正!


🚀 为什么窗口函数这么重要

你是否曾为了计算累计总和、排名或行间差值,而编写过多条SQL查询语句,甚至使用过程化循环?

Discussion (0)1
Log in or sign up to continue
Question
· 4 hr ago

Create class export file from local .cls file

I have a locally saved multiple saved .cls file. How can I bundle them together as a XML file programmatically (ObjectScript) so that I can import in the next environment. Does anyone have a sample code?

1 new Comment
Discussion (1)1
Log in or sign up to continue
Article
· 5 hr ago 3m read

Questionnaire Made Easy – with IRIS, FHIR SQL Builder, and Vector Search

In today’s healthcare data landscape, FHIR has become the standard for structured clinical data exchange. However, while FHIR excels at interoperability, its JSON format makes analytics challenging—including FHIR QuestionnaireResponse.

This project demonstrates how to transform FHIR QuestionnaireResponse data from nested JSON into relational SQL tables and vector embeddings. By integrating the InterSystems IRIS FHIR SQL Builder and Vector Search, we unlock the semantic meaning behind patient answers.

Three Steps to Build It

1. Design and Collect the Questionnaire

Start by designing a FHIR questionnaire using the National Library of Medicine(NLM) Form Builder. This tool helps design structured clinical forms that follow FHIR standards. In this project, 100 synthetic patient responses were collected and saved as FHIR QuestionnaireResponse JSON file, ready to be imported into a FHIR server.

 

2. Transform and Query the Questionnaire Data via SQL

After loading FHIR QuestionnaireResponse resources into the server, use the InterSystems IRIS FHIR SQL Builder to automatically create relational SQL tables. This flattens the nested JSON structure, enabling easy analysis of questionnaire data with standard SQL—all configurable in just a few clicks.

  • The complete FHIR SQL Builder configuration

 

  • The generated SQL table from QuestionnaireResponse data is ready for querying and analysis

 

3. Add Vector Search for Semantic Understanding

Finally, integrate IRIS Vector Search to add semantic intelligence on top of the structured questionnaire data. It allows users to search and interact with questionnaire responses based on meaning and context rather than exact words, turning the data into a more intuitive, intelligent tool.

       Examples:

  • A search for “diabetes medication” retrieves responses mentioning drugs like metformin, insulin glargine, or acarbose—even if the exact phrase isn’t present. 
  • When a user asks, “Which patients have a family history of heart disease and take cholesterol-lowering medication?”, the system semantically links related data—connecting cardiac conditions with drugs like propranolol, spironolactone, or atorvastatin—and produces a concise summary of at-risk patients. 

To explore the full workflow and code implementation, visit the Open Exchange.

Key Takeaways

Through three key steps—designing questionnaires with the NLM Form Builder, transforming them into SQL tables, and enhancing them with vector search—this workflow turns FHIR QuestionnaireResponse data into a powerful tool for clinical understanding and decision support. 

 

References

1. National Library of Medicine (NLM) Form Builder 

2. InterSystems IRIS For Health FHIR SQL Builder 

3. InterSystems IRIS Vector Search 

4. https://openexchange.intersystems.com/package/iris-fhirsqlbuilder

5. https://www.youtube.com/watch?v=ewxyh2XNLv0

Discussion (0)1
Log in or sign up to continue
InterSystems Official
· 5 hr ago

InterSystems Platforms Update Q4-2025

In review of the previous quarter, several notable developments were highlighted that remain relevant for this quarter’s report.

  • Beginning with 2025.3, OpenSSL 3 will be standard across supported platforms; SUSE 15 sp6 becomes the required OS for organizations utilizing SUSE.
  • For 2025.3, revised minimum CPU specifications will take effect.
  • Windows Server 2016 will not be supported in 2025.3.

For those newly acquainted with these communications, this update provides details about recent enhancements as well as anticipated changes based on current information; however, future projections remain uncertain and the content should not be interpreted as a definitive product roadmap.

InterSystems IRIS Production Operating Systems and CPU Architectures

Minimum Supported CPU Architecture

In 2024, InterSystems introduced a minimum supported CPU architecture for all Intel- & AMD-based servers that allows us to take advantage of new CPU instructions to create faster versions of IRIS.  IRIS 2025.3 will update that list to require the x86-64-v3 microarchitecture level, which requires the AVX, AVX2, BMI, and BMI2 instructions.

  • For users with Intel-based systems, this means that Haswell and up will be required.
  • For users with AMD-based systems, this means that Excavator and up will be required while Piledriver & Steamroller will not be supported.

Are you wondering if your CPU will still be supported?  We published a handy article on how to look up your CPU’s microarchitecture in 2023.

 

Red Hat Enterprise Linux

  • Recent Changes
    • RHEL 10 - Red Hat released RHEL 10 on May 20th.  We released a version of IRIS 2025.1.0 that supports RHEL 10 on June 20th.
      • IRIS 2025.2 and up will support RHEL 9 & 10, which means that we stopped supporting RHEL 8.
    • RHEL 9.6 – We have completed Minor OS Certification for 9.6 with no problems found.
  • Further reading: RHEL Release Page

 

Ubuntu

  • Upcoming Changes
    • Ubuntu has announced Ubuntu 26.04 will be released April 23, 2026.  We are planning to release IRIS support for the OS about a month thereafter.
  • Recent Update
    • Ubuntu 24.04.2 has just been released and minor OS certification has completed successfully.
  • Further Reading: Ubuntu Releases Page

 

SUSE Linux

  • Upcoming Changes
    • SUSE 16 was released earlier this month.  InterSystems is planning to add support for the platform with IRIS 2026.1
    • IRIS 2025.3+ will require SUSE Linux Enterprise Server 15 SP6 or greater – SLES 15 sp6 has given us the option to use OpenSSL 3 and, to provide you with the most secure platform possible, we’re going to change IRIS to start taking advantage of it.

Further Reading: SUSE lifecycle

 

Oracle Linux

  • Upcoming Changes
    • We’ve started testing Oracle Linux 10.  If history is to be our guide, it should work just fine with any version of IRIS that supports RHEL 10.
  • Further Reading: Oracle Linux Support Policy

 

Microsoft Windows

  • Previous Updates
    • Windows Server 2025 is now supported in IRIS 2025.1 and up.
  • Upcoming Changes
    • IRIS 2025.3+ will no longer support Windows Server 2016 & 2019.
  • Further Reading: Microsoft Lifecycle

 

AIX

  • Upcoming Changes
    • IBM released new Power 11 hardware in July.  Unfortunately, our equipment has been back logged.  I’ll let you know when we have performance test reports ready.
  • Further Reading: AIX Lifecycle

 

Containers

  • Upcoming Changes
    • We anticipate changing the container base image to Ubuntu 26.04 with either the IRIS 2026.2 or 2026.3 release.  That’s still a long ways off, but we’ll let you know when it’s locked in.

 

InterSystems IRIS Development Operating Systems and CPU Architectures

MacOS

  • Upcoming Changes
    • IRIS 2026.1 will end support for MacOS on Intel-based systems.  Apple has been phasing out support for the Intel-based machines and they’ve announced their intention to drop support for all remaining Intel-based macs in 2026.
  • Recent Changes
    • IRIS 2025.1 adds support for MacOS 15 on both ARM- and Intel-based systems.

 

InterSystems Components

  • Recent Releases
    • InterSystems API Manager 3.10 has been released.  Users of earlier versions of the API manager will need an updated IRIS license key to use version 3.10.
    • InterSystems Kubernetes Operator 3.8 has been released.

Caché & Ensemble Production Operating Systems and CPU Architectures

  • Previous Updates
    • A reminder that the final Caché & Ensemble maintenance releases are scheduled for Q1-2027, which is coming up sooner than you think.  See  Jeff’s excellent community article for more info.

InterSystems Supported Platforms Documentation

The InterSystems Supported Platforms documentation is the definitive source information on supported technologies.

 

… and that’s all folks.  Again, if there’s something more that you’d like to know about, please let us know.

Discussion (0)1
Log in or sign up to continue
Article
· 9 hr ago 4m read

Connecting C# to InterSystems IRIS via ODBC

For developers building external applications, especially those using familiar technologies like C#ODBC (Open Database Connectivity) is a crucial, standardized bridge to any relational database, including InterSystems IRIS. While InterSystems offers its own native ADO.NET provider, the ODBC driver is often the most straightforward path for integration with generic database tools and frameworks.

Here is a step-by-step guide to getting your C# application connected to an IRIS instance using the ODBC driver, focusing on DSN-less connection string.

Step 1: Install the InterSystems IRIS ODBC Driver

The InterSystems ODBC driver is installed by default when you install InterSystems IRIS on a Windows machine.

  • If IRIS is on the same machine: The driver is already present.
  • If IRIS is on a remote server: You must download and install the standalone ODBC client driver package for your client operating system (Windows, Linux, or macOS) and bitness (32-bit or 64-bit) from WRC website if you're a client or by installing Client components and copying ODBC driver.

Once installed, you can verify its presence in the ODBC Data Source Administrator tool on Windows (look for the InterSystems IRIS ODBC35 driver).

Step 2: Define the DSN-less Connection String

Instead of creating a pre-configured Data Source Name (DSN) in the Windows administrator tool, we’ll use a DSN-less connection string. This is cleaner for deployment because your application carries all necessary connection details.

The format specifies the driver name and the server parameters:

Driver={InterSystems IRIS ODBC35};
server=127.0.0.1;
port=1972;
database=USER;
uid=_System

Note:

  • The Driver Name (InterSystems IRIS ODBC35 or sometimes InterSystems ODBC) must exactly match the name registered in your local ODBC Data Source Administrator.
  • Port is the IRIS Superserver port (often 1972).
  • Database is the target Namespace in InterSystems IRIS (e.g., USER or your custom application namespace).
  • The default UID is _System with the password SYS. Always change these defaults in a production environment.

Step 3: Implement the Connection in C#

In your C# project, you will need to reference the System.Data.Odbc namespace to work with the generic .NET ODBC provider.

Here is a minimal C# example that establishes a connection, executes a simple query against a default table, and displays the result.

using System.Data;
using System.Data.Odbc;

public class IrisOdbcExample
{
    public static void Main()
    {
        // 1. Define the DSN-less connection string
        string connectionString =
            "DRIVER={InterSystems IRIS ODBC35};" +
            "Server=127.0.0.1;Port=1972;Database=USER;" +
            "UID=_System;PWD=SYS;";

        // 2. Define the SQL Query (Example: querying the default Sample.Person table)
        string sql = "SELECT ID, Name FROM Sample.Person WHERE ID < 5";

        using (OdbcConnection connection = new OdbcConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("Connection successful!");

                using (OdbcCommand command = new OdbcCommand(sql, connection))
                using (OdbcDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        Console.WriteLine($"ID: {reader["ID"]}, Name: {reader["Name"]}");
                    }
                }
            }
            catch (OdbcException ex)
            {
                // 3. Handle specific ODBC errors (e.g., wrong password, port blocked)
                Console.WriteLine($"ODBC Error: {ex.Message}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"General Error: {ex.Message}");
            }
            // The connection is automatically closed at
            // the end of the Using block.
        }
    }
}
 
Setting up DSN

Next Steps

This DSN-less approach provides flexibility and avoids client-side configuration bloat. For high-performance C# applications, you may consider the native InterSystems ADO.NET Provider. But for quick integrations and tool compatibility, an ODBC connection is a reliable choice.

❗Always remember to use parameterized queries in production code to prevent SQL injection vulnerabilities.

Discussion (0)1
Log in or sign up to continue