I participated in InterSystems Women’s Health FHIR contest, because I loved the challenge to learn a new-to-me technology. I wanted to develop an app that receives data from a mobile device like my Fitbit or a Smart Watch. I did not get access to such data except when I downloaded a spreadsheet (CSV file) showing my daily steps and sleep data. I saw in iris-fhir-template it imported some patient data to a FHIR server. I figured out how to use a Data Transformation to transform a record from a delimited file into FHIR data which I could store into the FHIR server.
Work Queue Manager (WQM) is a feature of InterSystems IRIS that enables you to improve performance by distributing work to multiple concurrent processes programmatically. The idea is that you split the work into chunks, and WQM distributes the chunks across worker processes and can provide the info that the work is done.
However, recently, I got an interesting question: there's a large logical transaction composed of ~1,000,000 individual objects and SQL inserts and updates. Some updates are CPU-intensive, so the original idea was to use WQM to split an update into chunks to speed things up.
But, here's a catch: if one of the individual 1,000,000 changes fails (there's a variety of application-level checks so that it can fail, and that's not even that abnormal a behavior), the entire transaction must be rolled back. That creates a problem: each chunk must report success before committing their individual transactions, and someone must get all these reports and decide if we are committing or not.
Unfortunately, it looks like WQM does not have a bidirectional communication between workers and manager, so I suggested an approach using events:
- Start jobs.
- Wait for all jobs to report success using $System.Event.WaitMsg().
- Send Commit or Rollback using the $System.Event.Signal().
Below is the job description for your reference
Position: Integration Engineer/SME (US only)
Location: Remote
Contract: 12 months
Job Description:
Description:
Looking for IRIS experience must have
Lead the implementation of FHIR (Fast Healthcare Interoperability Resources) standards within the data warehouse, ensuring accuracy and efficient data exchange across the ecosystem of partner APIs
• Ingest healthcare data from source systems into FHIR resources and profiles through developing ETL (Extract, Transform, Load) processes, checking for data quality and integrity
• Create and maintain data
The objective of the article is to provide the reader with the following informations:
- Configure and use the FHIR server
- Create an OAuth2 Authorization Server
- Bind the FHIR server to the OAuth2 Authorization Server for support of SMART on FHIR
- Use the interoperability capabilities of IRIS for Health to filter FHIR resources
- Create a custom operation on the FHIR server
Schema of the article:

Hi,
I have an odd problem that occurs when I'm trying to import lookup tables in the XML format into Studio.
I store my files in in C:\CodeRepository.
I can manually import these lookup tables using "Import local..." option in the InterSystems Studio.
However, when I'm trying to import them using command in terminal: do $system.OBJ.LoadDir("C:\CodeRepository\","ck")
I'm getting the following error:
Loading file C:\CodeRepository\Title.lut.xml as xml
ERROR #5863: Another user has 'Title.LUT' open for editing.
> ERROR #6315: Errors reporting importing XML subelement in file
How can we have the multiple business rules run on a single cloned-object(EnsLib.HL7.Message), and send the cloned-object in Rule Editor?
Any sample code? The purpose is to edit the HL7 ORU R01 message
Thx!
A quick question. What's the shortcut to uncomment multiple lines of code in Studio? And what's the shortcut to comment out multiple lines of code in Studio?
Thanks in advance!
The task for a file on disk is to open it, find a keyword (unique) and then read the file line by line, starting with the line with this keyword, then find the next keyword (also unique) and read from that location etc. I would think ObjectScript classes should be able to do that, but the solution eludes me. I probably need to use FindAt to get a position, but ReadLine does not seem to have a position argument. Any advice?
- The idea of this package is to compare the performance of columnar storage inside IRIS without wrapping it to some foreign platform that is not my world
- In addition, I do not want to measure network performance between 2 containers, but inside a closed IRIS environment that I have fully under my control
- Even the use of SMP or some other browser-based presentation has some influence that I want to avoid.
- Measuring should be as close to the core as possible. So I flagged it NATIVE. Some people might feel it is ABORIGINAL.
I want to use AESEncode encryption, but it prompts a MAXSTRING error. How to solve it?
As most of you probably already know, since approximately the end of 2022 InterSystems IRIS included the columnar storage functionality to its database, well, in today's article we are going to put it to the test in comparison to the usual row storage.
Columnar Storage
What is the main characteristic of this type of storage?
Hi Community,
Play the new video on InterSystems Developers YouTube:
⏯ InterSystems IRIS Business Intelligence - Tips & Tricks @ Global Summit 2023
"Set Up a Kerberized Connection from the Web Gateway to InterSystems IRIS " and "Configuring the Web Gateway to Connect to InterSystems IRIS Using TLS" are these two alternative options that exclude each other? Which option should I select if I want to establish a tls connection between a client (browser) and IRIS server?
Hi Developers,
Enjoy watching the new video on InterSystems Developers YouTube:
⏯ A Payer's Journey to Regulatory Compliance and Beyond @ Global Summit 2022
I had a question about using ZSTART, ZSTOP, and ZMIRROR.
- If we use them and it is not correct, does it mess up with any of the existing functionality?
- So, if I create a ZSTART with a simple command of starting the %JDBC Server will that mess up anything existing in the Startup sequence?
- Is ZSTART, ZSTOP, and ZMIRROR just an extension of the existing functionality, or does it alter how the built in functionality runs?
- Should we tread lightly in the use of them?
Hi Everyone,
My name is Vignesh and I'm from Virtusa HR Team, we are hiring for a InterSystems Developer in US (Remote), If anyone is interested You can share your resumes avignesh@virtusa.com, also refer your friends.
Responsibilities:
-Building new and debugging and fixing existing HL7, CCD and custom data interfaces (JSON and XML) to internal and external destinations.
Has anyone come up with a way to put a delay in a routing rule? We have text and PDF results sending to EPIC and need to put a delay on the PDF send so the text posts first in EPIC.
Thank you!
InterSystems announces its fourth preview, as part of the developer preview program for the 2024.1 release. This release will include InterSystems IRIS®, InterSystems IRIS® for HealthTM, and HealthShare® Health Connect.
Highlights
Many updates and enhancements have been added in 2024.1 and there are also brand-new capabilities, such as Using vectors in ObjectScript, Vector Search (experimental), Multi-Volume Database, the ability to use Fast Online Backup (experimental), and the introduction of Multiple Super Server Ports.
How to send the HL7 Batch messages over a SOAP webservice which takes 3 credentials(Username, Password& Org.ID) using IRIS Management Portal V 2019.1?
WSDL xsd : element - 1.Username , 2.Password ,3.Org.ID ,4.HL7 Message.
Info I had -
Source is CSV File will be translated to HL7 using data Transformations. All the transformed messages need to be sent to destination System through SOAP request as a single Batch File.
Challenge faced was - How to send the request message (Message Structure asked : Username , Password, Org.ID and HL7 message )in batch transformation.
While creating the WSDL, I'm encountering the following error:
"Mismatched definition of ELEMENTQUALIFIED for the class in the namespace http://www.test.xx/xyx/abc-ns/xsd/v1: CSP Error"
Why am I getting this error while generating the WSDL?
Can someone guide me to understand this issue?
Hi all,
Does anybody have the same issue?
$ZF(-100) to run python script not work when directly execute in studio or in storedproc called by TrakCare, but can work when do in iris session.
The python script imports a "barcode" package. It seems that when directly execute in studio or in storedproc called by TrakCare, the package can not be imported.
s r = $ZF(-100,"/SHELL", "/usr/bin/python3.9","/trak/cnpubase/tc/webfiles/web/custom/CNPU/script/py/barcode/genslbarcodetest.py",keyStr,path)import sys
import barcode
from barcode.writer import ImageWriter
spn=sys.argv[1]
name=sys.Hi Community,
We're pleased to invite you to the upcoming webinar in Hebrew:
👉 Introducing InterSystems Cloud Services 👈
📅 Date & time: March 20th, 3:00 PM IDT
Hi everyone,
I'm looking for a strategy for dividing a large FHIR message, in a post request, into smaller parts.
I have found the paging modifier for the GET request, but not a similiar one for the POST request. Maybe the 'batch' type of a Bundle could help me to indicate this aim but there aren't any attribute to say the total or the i-th element.
Do you know of any method for implementing 'paging' in a post request?
I saw that IRIS has some built-in%SYSTEM.Encryption Encryption functions, but what should we do when we see encryption AES/ECB/PKCS5Padding ? I wonder if there is a good solution?
最近应用到加密技术,看到平台具有内置的%SYSTEM.Encryption 有具有一些内置的函数,但是,应用过程中碰到加密AES/ECB/PKCS5Padding,我们应该如何处理?不知道有没有好的解决方式?
One can modify Interoperability External-Service Registry in Management Portal (Interoperability > Configure > External-Service Registry).
Can the registry be accessed and modified programmatically?
I don't find much documentation about the subject. Mainly https://docs.intersystems.com/irisforhealth20221/csp/docbook/DocBook.UI…
hi there , when i convert a pdf to base64 data, and then restore the data to pdf,i find that ,i must read the same as length of base64 data every time convert ,or i can't get the right pdf. the code is:
s pdf.Filename = $g(path)
s len=24*30*2
s byteList = pdf.Read(len)
while(byteList'=""){
s baseStr = ##class(%SYSTEM.Encryption).Base64Encode(byteList)
length of baseStr is 1970,
if len=24*30 length of baseStr is 984,
when i covert the base64 data to pdf, the code is:
s pdf.Filename = $g(path)
while ('sgc.
Hi,
I've just installed WebTerminal to my IRIS system (Linux SUSE).
I go url:
But it just times out
My management portal address is:
http://trak01:52773/csp/sys/UtilHome.csp
The port 57772 is not being listened to [ ss -l|grep LISTEN|grep 57772]
The doco for WebTerminal says to use this port number in "1.1.3 Launching WebTerminal"
How can I fix this?
Is there some process that needs starting?
Is there further configuration eg. apache web server setup?
Thanks.
==========
This install was done from the *.xml (WebTerminal-v4.9.5.
Hi all,
As you know, it is very complicated to debug a Business Service Rest API because the object is created when the applications receive a request, so we cannot have the JobId that we can use to debug.
https://docs.intersystems.com/iris20211/csp/docbook/DocBook.UI.Page.cls…
So, I'm trying to get the JobId when the class is being created, write a trace in OnInit() method and write the JobId in a log info
Method OnInit() As %Status
{
$$$LOGINFO("JobId: "_$JOB)
hang 20 break
Quit .Hey Community,
Here is a digest of the Developer Community videos on InterSystems Developers YouTube Channel in February 2024:
Intro
Most server-client communication on the web is based on a request and response structure. The client sends a request to the server and the server responds to this request. The WebSocket protocol provides a two-way channel of communication between a server and client, allowing servers to send messages to clients without first receiving a request. For more information on the WebSocket protocol and its implementation in InterSystems IRIS, see the links below.

