Hi Developers!
Currently I have 2000+ lines in a class, and I think it's a lot already? What are the best practices?
if 10K lines OK? How do you cope with it? Please share?

InterSystems HealthShare is a healthcare informatics platform for hospitals, integrated delivery networks (IDNs) and regional and national health information exchanges (HIE). HealthShare includes health information exchange, data aggregation, workflow, text analysis, and analytics technology.
Hi Developers!
Currently I have 2000+ lines in a class, and I think it's a lot already? What are the best practices?
if 10K lines OK? How do you cope with it? Please share?

Please, provide Code example to build a %Library.DynamicObject or a %Library.DynamicArray from Resultset followed by converting to JSON
Hi developers!
In a method I need to return a result as a dynamic object aka JSON Object. And here is my logic:
Classmethod Planets() as %DynamicObject {
set val1="Jupiter"
set val2="Mars"
// this doesn't work! cannot compile
return {"value1":val1, "value2":val2}
}So I need to do the following:
HealthShare Unified Care Record Fundamentals – Virtual* May 4-8, 2026
*Please review the important prerequisite requirements for this class prior to registering.
I am trying to built a Task that kicks off a Workflow to pull data into HSPD, and when I try to test the Task
I keep getting TestTask+3^OSU.Workday.TerminationsTask.1 *%Exception.StatusException ERROR <Ens>ErrConfigDisabled: Configuration item 'OSU.DataSource.Workday.TermService' is disabled
But within the Namespace the OSU.DataSource.Workday.TermService shows enabled.
Here is my Task that I am using...
Class OSU.Workday.TerminationsTask Extends %SYS.Task.Definition
{
Parameter TaskName As STRING = "OSU - Workday Termination Update";
Property DaysBack As %Integer [ InitialExpression = 1 ];
Method OnTask() As %Status
{
#Dim sc as %Status
#Dim ex as %Exception.AbstractException
set sc = $$$OK
try{
// create the service
#Dim tService As OSU.DataSource.Workday.TermService
Set tServiceConfigName = "OSU.DataSource.Workday.TermService"
// Call BusinessService
$$$ThrowOnError(##class(Ens.Director).CreateBusinessService(tServiceConfigName,.tService))
// Create Request
set tRequest = ##class(OSU.Workday.Messages.InactivatedRecordsRequest).%New()
set tRequest.DaysBack = ..DaysBack
set (tHint) = ""
// Send Request to tService
$$$ThrowOnError(tService.OnProcessInput(tRequest))
}catch ex{
set tSC = ex.AsStatus()
}
quit tSC
}
ClassMethod TestTask()
{
set tTask = ##class(OSU.Workday.TerminationsTask).%New()
set tTask.DaysBack = 1
$$$ThrowOnError(tTask.OnTask())
}
/// Location and Revision of this file in Perforce (Auto-updating)
Parameter SrcVer = "$Id$";
}
Is your source control treating your InterSystems IRIS environment like a simple collection of files? Most source control tools lack the native intelligence to handle InterSystems IRIS, which is why your code is treated as such.
Deltanji is different. It understands how code and other artifacts are stored within IRIS and can manage them directly. This eliminates the friction that other tools introduce to the process.
Join us for an InterSystems-hosted webinar to see how Deltanji provides an enterprise-grade source control solution that is tightly integrated with your IRIS environment.
I need to translate these labels on the Whole Record page view:
Anyone knows how to do it?
Thanks
I'm using this service to create a FHIR facade.
I want to return OperationOutcome to the calling application when I detect an error.
My code at present is :
set##class%NewIf I change the response code to 422, the calling app doesn't get the OperationOutcome. Instead I get
The custom error module does not recognize this error.
Do I need to implement a custom error?
I created a table profile dashboard on Power BI, but I wonder if is possible to do it in Iris by creating a class.
HealthShare Clinical Viewer 2022.2.2 Build: 1000 Adhoc: 23127 [HealthShare Modules: Core:24.0 + Clinical Viewer:24.0] - IRIS for UNIX (Red Hat Enterprise Linux 8 for x86-64) 2022.1 (Build 209_0_23127U) Mon Feb 12 2024 18:21:53 EST [Core:24.0|Clinical Viewer:24.0]

Hello,
Looking for some additional help, maybe someone who has experience with this before, in setting up and configuring the Web Gateway with Kerberos.
Have read through the documentation (at the link below) and it's a good start but seems there are some details missing, or I'm not clear on.
Questions:
Our Pharmacy team would like us to convert...
¼ test character and ½ test character and ¾ test character andto more like
1/4 test character and 1/2 test character and 3/4 test character andIs this possible?
Currently have an extension of the ..lookup function as a custom version of the lookup. Is there any easy way to get it to display it as a list of the lookup tables
ClassMethod LookupV3(table As %String = "",
and the one i'm trying with
The 2023.1.7 maintenance releases of InterSystems IRIS® data platform, InterSystems IRIS® for Health, and InterSystems Health Connect™ are now Generally Available (GA).
Please share your feedback through the Ideas Portal using the category Post-Release Feedback so we can build a better product together.
You can find the detailed change lists & upgrade checklists on these pages:
There are many EAPs available now. Check out this page and register to those you are interested.
The Interoperability user interface project has continued from 2025.1 and has incorporated many of the items that you – our customers and partners – have suggested and observed. We are continuing to invest in feedback and updating this important user experience. In the latest release, 2026.1 for IRIS, IRIS for Health, Health Connect and Health Connect Cloud, the BPL Editor and Message Viewer/Visual Trace applications are now available for opt-in!
NOTE:
Hello InterSystems Community,
I hope you're all doing well. I'm reaching out to ask if there's any way to enable a dark theme or dark mode for the HealthShare Management Portal.
I have a visual impairment (amblyopia/lazy eye) which means I'm nearly blind in one eye. Like many people with visual difficulties, I find that bright white backgrounds and interfaces cause significant eye strain and fatigue. This makes it challenging to work with the Management Portal for extended periods.
I have created the following Task to kick off a Ens.BusinessService to execute a SQL query and process the results
Class OSU.Workday.TerminationsTask Extends %SYS.Task.Definition
{
Parameter TaskName As STRING = "OSU - Workday Termination Update";
Method OnTask() As %Status
{
#Dim sc as %Status
#Dim ex as %Exception.AbstractException
set sc = $$$OK
try{
// create the service
#Dim tService As OSU.DataSource.Workday.TermService
Set tServiceConfigName = "OSU.DataSource.Workday.TermService"
// Call BusinessService
$$$ThrowOnError(##class(Ens.Director).CreateBusinessService(tServiceConfigName,.tService))
$$$ThrowOnError(tService.Adapter.OnTask())
set (tHint) = ""
}catch ex{
set tSC = ex.AsStatus()
}
quit tSC
}
ClassMethod TestTask()
{
set tTask = ##class(OSU.Workday.TerminationsTask).%New()
$$$ThrowOnError(tTask.OnTask())
}
/// Location and Revision of this file in Perforce (Auto-updating)
Parameter SrcVer = "$Id$";
}
Good morning,
We would need help, thanks in advance for your help. 🙂
We have been trying to debug the following error, when sending a DICOM from a "EnsLib.DICOM.Operation.TCP" to a PACs:
| ERROR <EnsDICOM>NoCompatibleTransferSyntaxFound: No negotiated transfer syntax for SOP class '1.2.840.10008.5.1.4.1.1.4' is compatible with document transfer syntax '1.2.840.10008.1.2.4.70' |
.png)
We use the following AET titles at the Operation:
LocalAET: ESBSSCC-DCM
RemoteAET: HUNSCESBGWT
We have observed that we do have the transfer syntax "1.2.840.10008.5.1.4.1.1.4" with the document syntax "1.2.840.10008.1.2.4.
How many times have we migrated an IRIS Instance to another machine, maybe even another version, and after a few days realized we forgot that one SSL Configuration critical for a Business Operations to work? Or maybe a credential, or a lonely class in a package by itself?
The simple solution is to make a checklist¹. A checklist of the entities we have to move. But simple checklists on Word documents are often forgotten, or just ignored.
While reviewing our Orphan messages, we noticed that there are some Orphans that look like they are the start of an HL7 message.
MSH|^~\&
Since this does not link to any Message Header, and most of the information in EnsLib_HL7.Message is NULL, is there a way to track down what Object maybe creating these so we can nip it in the bud.
Only way that I know of is to go through each of our Schema's and make both the MSH and Encoding Characters optional.
Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Transitioning HealthShare from On-Prem to HealthShare Cloud @ Ready 2025
We are trying to track down significant growth within our Namespaces, one big culprit is Ens.AppData (EnsLib.SQL.Snapshot).
Within many of our BPL's we use EnsLib.SQL.Snapshot to return Results from External SQL Stored Procedures or Query's. The same EnsLib.SQL.Snapshot context variable is used for many of these calls within a BPL.
Is there something we should be doing at the end of the BPL to ensure that EnsLib.SQL.Snapshot gets cleaned up and purged from Ens.AppData?
Hello everyone, thanks for reading this question.
I am currently working with Ens.Alerting.ManagedAlert in an interoperability production and I am using the alert suppression mechanism to avoid generating duplicate alerts within a defined time window (for example, 30 minutes).
The configuration works correctly in terms of preventing duplicate alerts from being generated, but I have a question regarding observability.
When an alert is suppressed during the configured time window, I can see log messages such as:
"Managed alert not created for AlertRequest with ID 'XXXX' due to rule 'Rules.
How can I create a Task that tells a Ens.BusinessService to execute its SQL query using the EnsLib.SQL.InboundAdapter?
So far I have come up with
Class OSU.Workday.TerminationsTask Extends %SYS.Task.Definition
{
Parameter TaskName As STRING = "OSU - Workday Termination Update";
Method OnTask() As %Status
{
try{
// Call BusinessService
set tSC = ##class(Ens.Director).CreateBusinessService("OSU.DataSource.Workday.TermService",.tService)
if $IsObject(tService){
set inputMessage = ##class(Ens.StringContainer).%New()
set inputMessage.StringValue = "1"
Set tSC = tService.ProcessInput(inputMessage,.output)
} Else {
Set tSC = $$$ERROR($System.Status.GetErrorCodes(tSC), "Failed to create Business Service")
}
}catch ex{
set tSC = ex.AsStatus()
}
quit tSC
}
/// Location and Revision of this file in Perforce (Auto-updating)
Parameter SrcVer = "$Id: //custom_ccrs/us/OSUM/OSUMHSCUSTOM/UAT/cls/OSU/Workday/TerminationsTask.xml#20 $";
}
Emergency Medical Services (EMS) teams often arrive at the emergency department with patients whose demographics are incomplete or unknown—no medical record number (MRN), no confirmed name, and sometimes no date of birth. Yet EMS transportation notes still need to land in the correct chart.
To support safe and reliable documentation, EMS agencies, third-party integration services, and hospital integration teams build secure interfaces that exchange identifiers and clinical messages.
Hello everyone,
I am André from MedVertical. We are exploring InterSystems-native ways to operationalize continuous FHIR conformance: repeatable regression runs, baseline/delta comparisons, and evidence-style reporting to detect drift after releases and IG changes.
In many FHIR implementations, validation is done “point-in-time” in pre-prod, but conformance degrades in production due to IG/profile updates, terminology changes, mapping evolution, upstream releases, and configuration drift.
Hi everyone,
I am trying to configure a FHIR Server to authenticate against an external OAuth server using the OAuth FHIR Client Quickstart, which is available in the newer versions of InterSystems IRIS for Health.
During the configuration process I am encountering an issuer validation error.
I have already verified the issuer URL, and it exactly matches the value returned by the OAuth server’s OpenID configuration endpoint (.well-known/openid-configuration).
Example:
Issuer configured in IRIShttps://login.microsoftonline.com/{tenant-id}/v2.0
Issuer returned by the OpenID configurationhttps://login.microsoftonline.com/{tenant-id}/v2.0
This is more for my memory that anything else but I thought I'd share it because it often comes up in comments, but is not in the InterSystems documentation.
There is a wonderful utility called ^REDEBUG that increases the level of logging going into mgr\cconsole.log.
You activate it by
a) start terminal/login
b) zn "%SYS"
c) do ^REDEBUG
d) change logging level to FFFFFFFF
if you are on you production system (with lots of traffic) I suggest you quickly reproduce the error, rename the cconsole.log file, and repeat the steps above to set the logging level to FF.
I am stuck at a crossroad and was wondering if I could get a second pair of eyes to help with a query that I am sending from a Task to a Service to process some data.
I have a Linked Table (view) that points back to a MS SQL View that I am trying to query. However, my execution keeps either failing or not returning any rows. When I take the SQL Query and execute it within the Management Portal I get results, however Cache is not seeing it when trying to execute this code.
Hello, how are you?
Using Healthshare for Interoperability, we often see a wide variety of encoding issues. Some happen when transforming XML to HL7. Some happen the other ay around transforming HL7 to XML.
Is there a valid way to understand which encoding needs to be used?
I ask, because we use SOAP or REST or TCP HL7 services.
And we deliver messages with TCP HL7, SOAP, HTTP Operations.
And we often face this issue where special characters like ñ or á, are not encoded correctly.
Thanks for your replies.