Say I have an ObjectScript object called Book. It has 2 properties title and author. It extends JSON.%Adaptor, so I can call book.
Hello Community,
I got the PROTECT error while running functions. But, I could able to call the classmethods and methods in class definition with classMethodObject, classMethodValue etc.. from python. without any errors
python code
irispy.functionString('fnString','IRISPython',14)
irispy.function('fnString','IRISPython',14)raise RuntimeError(error_message) RuntimeError: <PROTECT> *Function not allowed
IRISPython.mac
fnString(fn1) public {
quit"Hello "_fn1
}
An experiment on how to use the LangChain framework, IRIS Vector Search, and LLMs to generate IRIS-compatible SQL from user prompts.
This article was based in this notebook. You can run it with a ready to use environment with this application in OpenExchange.
Setup
First, we need to install the necessary libraries:
!If you look at the values.yaml of the IKO's Helm chart you'll find:
useIrisFsGroup:falseLet's break down what it is and in what situations you may want to set it to true.
FsGroup refers to the file system group.
By default, Kubernetes volumes are owned by root, but we need IRIS to own its files (IRIS in containers is installed under irisowner user). To get around this we employ one of two methods:
The initContainers run before app containers (like IRIS) in a pod. They generally set up the environment for the application and then run to completion/terminate.
There is a list of numbers from 1 to 190.
AllList="1,2,3,4,5,6,7,8,9,.....,187,188,189,190"
There is a collection of sets of these values:
List(1)="3,5,6,7,9"
List(2)="1,2,6,9"
List(3)="5,8,9"
List(4)="2,4,6,8"
List(5)="4,7,9"
What is an elegant approach in Object Script to pick the least number of list items:
- List(1)
- List(5)
- List(n)
That together would cover as many numbers as possible from the AllList.
Interested in best coverage over efficiency.
Hello Team,
I got xDBC protocol is not compatible while executing python script. How to fix this error
C:\Users\ak\Desktop\lpyth\iris>C:/Users/ak/AppData/Local/Programs/Python/Python312/python.exe c:/Users/ak/Desktop/lpyth/iris/irisconn.py
An error occurred: connection failed: IRIS xDBC protocol is not compatible
py -m pip list
Package Version
------------------ ---------
intersystems-iris 3.9.2
import intersystems_iris as iris
args = {'hostname':'127.0.0.1', 'port':1972,'namespace':'LEARNING', 'username':'_SYSTEM', 'password':'SYS'}
try:
conn = iris.Hello
We are pretty new to Ensemble and we are considering on using a default setup for our production. Let me explain the situation. We have one sender that sends HL7 ADT messages to our system. We have 60+ other systems that need to recieve ADT messages. We where thinking on a few ways on how to do the setup.
Setup1:
We create one big ADTRouter that contains a first mapping. The result is send to another big ADTRouter that contains all the filters/expressions and mappings for the recieving systems.
I have the class ConfigUtils.ConfigSettingsTable, which is a persistent object. I know I need to map packages from the original namespace. In this case, I have mapped ConfigUtils.ConfigSettingsTable from the originating namespace (IRISTST database) across all other namespaces.
With this, I am able to see the table ConfigUtils.InstanceSettings in SQL Explorer in each namespace, but the same data is not shared across environments. For example, in the MAINTENANCE namespace, I can see the table, but I don't see the same information that I see in the table in the original IRISTST namespace.
I need to remove multiple languages from the language selection drop down which appears at top of Navigation app top bar. I need to keep only English.
Is there any way I can do that?
Or I can completly remove the language option?
Hi everyone,
I'm working on a DTL that transforms an HL7 message (EnsLib.HL7.Message) to an XML document (EnsLib.EDI.XML.Document).
The target XML is based on a custom schema and has an element like:
<xs:element name="deceasedDateTime" type="xs:dateTime" nillable="true"/>
What I need is for the output to show:
<deceasedDateTime xsi:nil="true"/> when the source HL7 value is empty, for eg:
<portalPatientUpdate xmlns:xsi="http://www.w3.
Introduction
If you're solving complex problems in ObjectScript, you probably have a lot of code that works with %Status values. If you have interacted with persistent classes from an object perspective (%Save, %OpenId, etc.), you have almost certainly seen them. A %Status provides a wrapper around a localizable error message in InterSystems' platforms. An OK status ($$$OK) is just equal to 1, whereas a bad status ($$$ERROR(errorcode,arguments...)) is represented as a 0 followed by a space followed by a $ListBuild list with structured information about the error. $System.Status (see class reference) provides several handy APIs for working with %Status values; the class reference is helpful and I won't bother duplicating it here. There have been a few other useful articles/questions on the topic as well (see links at the end). My focus in this article will be on a few debugging tricks techniques rather than coding best practices (again, if you're looking for those, see links at the end).
Hello,
Our software commonly returns a full result set to the client and we use the DataTables plugin to display table data. This has worked well, but at datasets grow larger, we are trying to move some of these requests server-side so the server handles the bulk of the work rather than the client. This has had me scratching my head in so many ways.
I'm hoping I can get a mix of general best practice advice but also maybe some IRIS specific ideas.
Using Cache 2017.2 sever as my target.
I have a x64 Ubuntu client setup going. This is NOT server. Just client.
I have the Linux Ubuntu x64 ODBC driver gzip file.
ODBC-2018.1.5.659.0-lnxubuntux64.tar.gz is all I could find. Someone posted it in another post.
I can connect to a test sever that does NOT use SSL. That works pretty easily.
But I have A server with SSL enabled. With Windows Cache ODBC drivers I can use SSL just fine.
This is what my SSLDefs.ini file on the Windows machines look like and it works just fine.
YES. I know. Not super secure because of the settings.
I ask ChatGPT periodically to produce ObjectScript or plain MUMPS code for string manipulation, or for implementing known algorithms etc. Occasionally, it does make mistakes or uses non-existing class members but generally not that bad. Is there any tutorial on the subject of using AI for coding, ideally specifically for ObjectScript/MUMPS? Any AI productivity advice, or tricks you are using, or another AI flavor?
Thanks in advance,
Anna
Hello Community,
The subroutine ^routine is not executed while the queue is being processed in WorkMgr. However, it works when defined as a function. Is it mandatory to define subroutine^routine as a function for it to execute properly?
testwqm.mac
set wqm = ##class(%SYSTEM.WorkMgr).%New()
set sc=wqm.Queue("subr1^testwqm") ; not executing the subr1 set sc=wqm.Queue("subr2^testwqm") ; executing the subr2 properlyset sc=wqm.Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Integrating DBT and Apache Airflow with InterSystems IRIS @ Global Summit 2024
My attempts to add CR/LF between segments
// Add CR/LF after "Total Cost:" if multiple "Item Number:" exist
//$$$LOGINFO(tItemNumberCount_" "_tTotalCostSegment_"----cr/lf")
If (tItemNumberCount > 1) && (tTotalCostSegment > 0) {
Set tOBXSegment = pOutput.GetSegmentAt("ORCgrp(1).OBRuniongrp.OBXgrp("_tTotalCostSegment_").OBX", .tStatus)
//$$$LOGINFO(tOBXSegment_"----"_"tOBXSegment from cr/lf")
Set tOBXText = tOBXSegment.GetValueAt(5) //_"||||||\X0D\\X0A\" // Append escaped CR/LF representation
//Do tOBXSegment.
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.
Hey everyone.
I'm currently looking at a process where we're utilising the Class Ens.StreamContainer, and was looking to do some deletions outside of any purge routines.
Having been burned before, I wanted to make sure that deleting the container also deletes the contents within.
From looking in the class, the %OnDelete ClassMethod appears to be removing an index from a search table and nothing more.
Am I looking in the right place, or is there a extended class for Ens.StreamContainer that does in fact delete the %Stream.Object
contained within the Ens.StreamContainer?
Hi Community,
We're happy to announce that registration for the event of the year — InterSystems Ready 2025 — is now open. This is the Global Summit we all know and love, but with a new name!
➡️ InterSystems Ready 2025
🗓 Dates: June 22-25, 2025
📍 Location: Signia Hilton Bonnet Creek, Orlando, FL, USA

Hi Guys,
We currently use wkhtmltopdf to convert our html based Zen page reports to PDF using in windows, but because we are now moving to IRIS running in a container we can use that anymore and I've been told that IRIS does have some kind of tool kit or utility that can do similar job and I'm not talking about GenerateReport() methond in zen reports?
Thanks
Sample with multiple Items;
MSH|^~\&|GMRC IF CONSULT|XXX^XXXXX^DNS|GMRC IF CONSULT|YYY^^DNS|20250123175341+0000|CRNR|ORM^O01^ORM_O01|Q5808332894T6790522104|T|2.
Our client says the call to send email (method (%Net.SMTP).Send) started returning error # 6167 (Authentication expected but failed.) after installing IRIS 2022.1.2; email had worked before. Properties (%Net.Authenticator).UserName and .Password were configured. We can get email to work when we don't set property (%Net.SMTP).authenticator.
Any ideas what is going on? Thanks.
Hello,
One of our clients has a 'Notes' class with over 3 million records. We have a report that pulls data from this table that was taking about an hour to run. Our test environment (which has a copy of the production database) runs the same report query in 1 second.
We attempted to purge and rebuild indices which made an improvement (down to 15 minutes) but still not great.
Next we ran tune table through the Mgmt Portal and it timed out. I then ran tune table via the Terminal and it finished in a couple minutes.
Hi, Community!
Looking to get quicker insights from your supply chain data? See how InterSystems® Data Studio™ can help:
Hi everyone,
I'm currently testing out IRIS 2024.3 for a new project, and it's been running smooth for the most part. However, I noticed that when running some heavier analytical queries, the memory usage spikes more than I expected, even when result sets aren’t that large.
I’ve gone through the basics (buffer sizes, query plans, etc.), but I’m wondering if there are any new tweaks or recommended settings in 2024.3 specifically for managing memory better during these peak loads.
Anyone else run into something similar or have tips to fine-tune this?
Thanks for any help!
.
Hi Community,
Let's meet at the online meetup with the winners of the AI Programming Contest: Vector Search, GenAI and AI Agents! It's a great opportunity to chat with the InterSystems Experts team and our contestants.
Winners' demo included!
Date & Time: Thursday, April 10, 12:00 pm EDT | 6:00 pm CEST
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.
Background
Embeddings is a new IRIS feature empowering the latest capability in AI semantic search.
This presents as a new kind of column on a table that holds vector data.
The embedding column supports search for another existing column of the same table.
As records are added or updated to the table, the supported column is passed through an AI model and the semantic signature is returned.
This signature information is stored as the vector for future search comparison.
Subsequently when search runs, a comparison of the stored signatures occurs without any further AI model processing overhead.
Does anyone know if iris merge can be called from Ansible. I have tried a couple of ways, but it doesn't seem to actually run the command on the target even though Ansible outputs it was successful.
