#ObjectScript

13 Followers · 1.7K Posts

InterSystems ObjectScript is a scripting language to operate with data using any data model of InterSystems Data Platform (Objects, Relational, Key-Value, Document, Globals) and to develop business logic for serverside applications on InterSystems Data Platform.

Documentation.

Article Qiao Peng · Oct 20 15m read

No data copying, no sync scripts: run impact-chain analysis and knowledge-graph analysis directly on business objects in InterSystems IRIS

1. Knowledge Is Not Only in the "Knowledge Base"

When people hear "knowledge graph," the first reaction is often: build a knowledge base, extract entities and relationships, then load them into a graph database. There is nothing wrong with that route, but it assumes that knowledge is "a separate thing" that has to be collected and stored on its own.

0
1 37
Article Muhammad Waseem · Oct 19 14m read

Hi, Community!

In Part 1 of this series, we built a production using the HL7 Messaging type and created a BPL Business Process that enriches an incoming HL7 message with a %DynamicObject. In Part 2, we demonstrated seven real-world property-access pitfalls that cause silent failures when working with dynamic objects.

This article closes the series with something different. Instead of a structured HL7 message, we deal with raw stream content %Stream.Object that arrives unparsed. The challenge here is that Business Rules work best against simple values.

2
0 42
Question Thembelani Mlalazi · Mar 27, 2018

Morning guys  I have a SQL operation that I use to read data and results to a record map. But seems to have trouble saving the objects to a record map as I get this message

ERROR ErrException:
zInsertObject+2^%Library.RelationshipObject.1 -- logged as '-' number - @''

please help  here is my code let me know if I missing anything thank you in advance

Method OnRequest(pRequest As DQToolsSet.PrimaryMessageREQ, Output pResponse As HSCIC.DBS.RequestRBAT) As %Status
{
 #dim status as %Status=$$$OK
    #dim resultSet as %SQL.StatementResult
   
    set pobject=##class(%FileCharacterStream).%New()
   
    set preq=##class(HSCIC.DBS.RequestRBAT).%New()
   
   
 
 set status=..Adapter.ExecuteQuery(.resultSet,..GetTheSubmissionData(pRequest.pMonth, pRequest.pApp, pRequest.pRef, pRequest.pInPat))

nbsp;if ($$$ISOK(status))
 {
  While (resultSet.%Next(.status) && $$$ISOK(status))
  {
  set ppResponse=##class(HSCIC.DBS.RequestRMAP.Record).%New()
     set ppResponse.RequestCode=resultSet.Get("recType")
        set ppResponse.PatientID=resultSet.Get("ClientID")
        set ppResponse.DOB=resultSet.Get("DOB")
        set ppResponse.Property4=resultSet.Get("u1")
        set ppResponse.Property5=resultSet.Get("u2")
        set ppResponse.NHSNumber=resultSet.Get("NNN")
        set ppResponse.Surname=resultSet.Get("Surname")
        set ppResponse.AltSurname=resultSet.Get("u3")
        set ppResponse.GivenName=resultSet.Get("GivenName1")
        set ppResponse.AltGivenName=resultSet.Get("u4")
        set ppResponse.SpineGender=resultSet.Get("Gender")
        set ppResponse.Address1=resultSet.Get("a1")
        set ppResponse.Address2=resultSet.Get("a2")
        set ppResponse.Address3=resultSet.Get("a3")
        set ppResponse.Address4=resultSet.Get("a4")
        set ppResponse.Address5=resultSet.Get("a5")
        set ppResponse.PostCode=resultSet.Get("Postcode")
        set ppResponse.AltAddress1=resultSet.Get("p1")
        set ppResponse.AltAddress2=resultSet.Get("p2")
        set ppResponse.AltAddress3=resultSet.Get("p3")
        set ppResponse.AltAddress4=resultSet.Get("p4")
        set ppResponse.AltAddress5=resultSet.Get("p5")
        set ppResponse.AltPostCode=resultSet.Get("p6")
        set ppResponse.GPCode=resultSet.Get("GPCode")
        set ppResponse.GPPracticeCode=resultSet.Get("PracticeCode")
        set ppResponse.NewField3=resultSet.Get("u5")
        set ppResponse.NewFiel23=resultSet.Get("u6")
  
   set status=ppResponse.%Save()
   set pobject=ppResponse
  
  set pResponse=##class(HSCIC.DBS.RequestRBAT).%New()
  
   if ($$$ISOK(status))
   {
    set status=pResponse.Records.InsertObject(pobject)
    set status=pResponse.Records.%Save()
   
      }
  
  
  }
  }
  }
6
0 858
Article Muhammad Waseem · Oct 13 7m read

Hugging Face has made thousands of datasets accessible to developers working in machine learning, natural language processing, analytics, and artificial intelligence. InterSystems IRIS provides a powerful platform for storing, querying, and processing data. Bringing these two ecosystems together creates interesting possibilities for developers who want to experiment with real-world datasets directly inside IRIS.

However, importing a dataset is more than downloading a file and inserting rows into a table.

1
0 60
Article Harit.J · Oct 13 4m read

The ideas and insights in this article are based on my experience. An LLM assisted with drafting and refining the text, while I reviewed and finalized the content.

Writing documentation is not necessarily difficult for a developer who knows the code and types quickly. For me the demanding part is actually refining it, organizing the explanation, correcting grammar, and making sure another team member can understand the implementation accurately. 

This article is to share an experience where Claude has helped me as an Implementation Team based in Bangkok.

0
0 51
Job Scott Weithman · Oct 12

About Us

Founded in 2021 by Heather Capel, a veteran of the HIE and HIT professional services industries, LEAD North seeks to innovate on how professional services are offered, retained, and fulfilled. By combining a 100% remote workplace with a mindset focused around evolving the industry, LEAD North looks to provide better services at more competitive rates for the clients we serve. Our firm brings decades of combined experience operating in the HIE space, working with all forms of Health Data from clinical to payer sources.
0
1 87
Question Ashok Kumar Thangavel · Oct 8

Hi Community,

The Maximum Per-Process Memory (bbsiz) leaving it at -1 provides maximum flexibility, but we want to establish a guardrail to prevent bulk queries or inefficient processes from consuming unintended resources. At the same time, we want to ensure we don't set it too low and cause errors.

How do typically determine a safe baseline ceiling for bbsiz in a production environment?

  • Is there a system-level performance metric, daily summary, report, or log that captures peak per-process memory usage?
1
0 65
Article Murilo Przybyloviecz · Sep 25 8m read

Built for the InterSystems Programming Contest: Build Your Own Management Portal

By Murilo Przybyloviecz and Andre Larsen Barbosa

MyOwn Portal is a compact, English-language administration interface for InterSystems IRIS and IRIS for Health, built for the InterSystems Programming Contest: Build Your Own Management Portal. The browser application is React and TypeScript; every piece of administrative logic — authentication, authorization, auditing, and the reads and writes against IRIS system data — is implemented in ObjectScript behind a REST layer. Vite and Node.

1
0 181
Article Murilo Przybyloviecz · Oct 7 8m read

Security is often postponed until an application is almost ready for production. For beginners, that delay can make authentication, roles, resources, and auditing feel like unrelated administrative tasks. A better approach is to introduce them together in a small, reproducible example.

I am still a beginner with InterSystems IRIS, and that was one of my main motivations for writing this article. While learning the platform, I wanted to understand security through something I could build, test, and observe for myself instead of only reading definitions.

0
1 80
Article Doc · Oct 4 8m read

An Evidence-First Operations Environment for InterSystems IRIS

I wanted a management interface that made it easier to understand what InterSystems IRIS was telling me. Finding the information was part of the problem. Keeping track of what I had learned, what I was about to change, and whether the change actually happened was another part, and it became the more interesting one.

The Management Portal has a great deal of functionality.

0
0 60
Article Nicholai Mitchko · Aug 21 5m read

We've published the first open benchmark measuring LLM competence on InterSystems ObjectScript and the IRIS platform: ObjectScript LLM Benchmark.

Summary

The ObjectScript LLM Benchmark evaluates 14 LLMs on 140 hand-written items covering ObjectScript and the InterSystems IRIS platform. The benchmark tests code generation, comprehension, and bug fixing. 93 items are execution-graded on a live IRIS instance, while 47 comprehension items are evaluated by a rubric-driven LLM judge. Overall accuracy ranges from 0.515 to 0.851, with the top 9 models forming a statistically overlapping cluster.

12
5 876
Article Anton Yartsev · Sep 29 5m read

Hi Community!

Before all: demo is live, you can try it right now - https://docket.antonyartsev.com, login docket / 12345.

This is my first contest and i want to tell how it was.  Topic was Build Your Own Management Portal exactly the work which I like most: take complex data and make from it interface which updates in real time. For me place or prize is not so important, more important is feedback. So if you think this is wrong or no real admin needs this please write me.

On the suitcases

Contest started exactly when I was moving to other country.

10
0 153
Article Henry Pereira · Sep 30 19m read

sentai rangers

TL;DR SentaiTask is a management portal for InterSystems IRIS built around orchestration: you draw maintenance as a flow (steps in parallel waves, joins that wait for all their inputs), it validates the flow, IRIS runs it, on this instance or on other servers, and you watch every step live. On top of that: an Overview of the instance in 11 cards, seven security and health reports (including certificates about to expire), schedules that become native Task Manager tasks, a run log, history and export for every run, and step search by intent with the model running inside IRIS.

1
0 93
Article Sanjib Pandey · Feb 20 4m read

Project Overview:

The Clinical Staff Master Data Management (CSMDM) system is a full-stack healthcare integration application built on InterSystems IRIS for Health. It centralizes and standardizes clinical staff metadata into a single authoritative repository, exposed through RESTful CRUD APIs and reusable backend methods.

The platform eliminates fragmented lookup tables and hardcoded mappings that commonly cause errors in HL7 and FHIR integration workflows, ensuring data consistency and interface reliability.

1
0 392
Article Ashok Kumar Thangavel · Sep 25 9m read

TL;DR: InterSystems IRIS for Health lets developers perform FHIR CRUD operations directly from backend ObjectScript routines without relying on an HTTP REST layer. Using HS.FHIRServer.Service, developers can create service contexts, build dynamic queries, validate schemas, and retrieve FHIR resources efficiently. 

Traditional FHIR implementations typically process requests through an HTTP/REST pipeline.

0
1 117
Article Henry Pereira · Feb 14 3m read

cover

You’ve seen how tools like Lovable are shaking up web development. People are spinning up entire apps just by talking to an AI, almost like pair‑programming on steroids.

Now imagine bringing that same “vibe coding” experience into healthcare. know, it sounds crazy. Healthcare is complex, full of regulations, and usually gives us a headache just thinking about the interoperability rules.

That’s exactly the space where withLove lives: an AI‑Native, Low‑Code platform built entirely on InterSystems IRIS for Health.

3
0 390
Article GUILHERME CRUZ DA CUNHA · Sep 24 8m read

Introduction

When developing applications with InterSystems IRIS, most developers naturally think in terms of SQL tables or persistent classes.

However, underneath the SQL and object models there is another fundamental data structure: globals.

Globals are persistent, multidimensional, sparse arrays. They can contain multiple levels of subscripts, and those subscripts do not need to be contiguous. This makes globals particularly interesting for certain types of data that do not naturally fit into a traditional relational structure.

1
1 115
Article Ashok Kumar Thangavel · Feb 20 2m read

As applications scale, handling heavy computational tasks synchronously becomes a bottleneck. Whether it's processing large data sets, sending high-volume emails, or managing API integrations, a decoupled architecture is essential.

I’ve recently developed %ZQueue, a process-based queue management system that combines the high-performance persistence of InterSystems IRIS with a modern Angular dashboard.

The Core Architecture: Why a Queue?

The system utilizes a classic Producer-Consumer model.

1
0 408
Article David Hockenbroch · Sep 23 11m read

The persistent class is the foundation of data in InterSystems IRIS. The serial class is its sibling; it can be a great helper, but it is a bit temperamental. It has some extra considerations, especially around triggers and automatically calculated fields. This article will help you understand how these classes work differently. By the end, you will know how to make the serial class behave.


TL;DR

Serial classes are a great tool to save you time on otherwise repetitive work.

2
0 138
Job Jordan Simpson · Sep 18

🚀 We're hiring: Integration Engineer - Leeds/Hybrid/Flexible

Answer Digital, an employee-owned digital transformation consultancy in Leeds, is looking for an Integration Engineer to join us on some of the largest digital transformation projects across the NHS and healthcare sector.

You'll lead the design and delivery of healthcare integration solutions, act as an SME in one or more areas of the space, champion technical quality across client projects, and help shape our Integration Academy — coordinating delivery and mentoring junior specialists along the way.

0
2 134
Question Christian Asmussen · Sep 17

Environment

  • InterSystems IRIS for Health, Community Edition, image intersystemsdc/irishealth-ml-community:2026.1
  • Platform: Docker, Ubuntu 24.04 LTS host, aarch64 (Apple Silicon / ARM64)
  • Embedded Python: 3.12.3 (confirmed via ##class(%SYS.Python).GetPythonInfo()), CPF_PythonPath correctly set to the packages directory
  • sklearn, , all import cleanly through the embedded Python bridge

Problem

Every TRAIN MODEL ... USING {...} call fails with NoEstimatorChosen, regardless of:

  • (tried , 0.50, and omitted entirely — all fail)
1
1 94
Article Muhammad Waseem · Sep 15 13m read

Hi, Community!

In Part 1 of this series, we built a production using the HL7 Messaging type and created a BPL Business Process that enriches an incoming HL7 message with a %DynamicObject before passing it to the routing engine. If you have not read Part 1 yet, start there. It fully covers the production setup, context properties, and the Build Dynamic Object Code activity.

This article focuses on what happens after you start using %DynamicObject in production. Seven specific property-access pitfalls catch every developer sooner or later.

0
0 191
Article Vachan C Rannore · Dec 28, 2025 1m read

SETassigns value to the variable at RUNTIME.

#DIM declare the variable and it's Data Type at COMPILE TIME.


SET #DIM
Makes the variables Dynamic. Improves Readability.
No Data Type Declaration. Enables IDE auto-completion.
Runtime Useful for Object references.

As%String

or #DIM? Your design, your rules.

23
5 676
Article Guilherme Mendes · Sep 11 3m read

Persistent classes are one of the features that make InterSystems IRIS different from a traditional application database. Instead of designing database tables separately from application objects, developers can define a class and allow IRIS to manage its persistent representation. This creates a close relationship between the application's object model and the underlying data model.

A basic persistent class inherits from %Persistent:

Class MyApp.Product Extends %Persistent
{
    Property Name As %String;
    Property Price As %Numeric;
    Property Stock As %Integer;
}
0
0 143
Article Jorge Jaramillo Herrera · Jan 9 9m read

1-command only required for an entire IRIS instance for Data Science projects, and leveraging this to compare query methods' speed (Dynamic SQL, Pandas Query, and Globals).

Image

Before joining InterSystems, I worked in a team of web developers as a data scientist. Most of my day-to-day work involved training and embedding ML models in Python-based backend applications through microservices, mainly built with the Django framework and using Postgres SQL for sourcing the data.

5
2 308
Article Pietro Di Leo · Aug 31 18m read

What does it take to go from an ObjectScript class to an agent that can call tools, use skills, and delegate part of a task?

I built My First Agent Studio to make that process easier to explore. It includes small native %AI.Agent examples, terminal demos, a dataset, and a browser UI for testing the same agents interactively. Everything except the local model service is packaged in a Docker Compose project.

The project is my contribution to the InterSystems Community Bounty Program — Round 2

2
1 283
Article Nicholai Mitchko · Sep 2 4m read

InterSystems ObjectScript – Coding Agent Harness Benchmark

In our first benchmark we tested 14 models on our internal InterSystems Coding Benchmark.

But given the results, we've decided to do the same through four coding agents; We put Claude Code, Codex CLI, pi, and prime-agent, to the test and also added in a variant known as caveman to the mix. Caveman is an attempt to limit prompt IO tokens.

We let the agents run checked by compiling and running the code in a live IRIS instance.

Results

Cost-efficiency index

Image

The index is a new metric we've created at 60% accuracy and 40% cost efficiency.

0
3 617