gj :: configExplorer is a new VS Code extension integrating with Server Manager and leveraging Structurizr to produce configuration diagrams of your servers.
Here's a short introductory video.
https://www.youtube.com/embed/WHkoZsg6P-A [This is an embedded link, but you cannot view embedded content directly on the site because you have declined the cookies necessary to access it. To view embedded content, you would need to accept all cookies in your Cookies Settings]
In my previous article, I structured network communications in these 3 possible layers, and covered the last
Client <---> Transport
Server <---> Transport
Client <---> Server
In fact, you have the most control over the last one. The IRIS side as a server is yours and under your full control. Up to now, the Transport layer was assumed to be as passive as a bare wire.
Chasing errors or misbehavior in the network can be quite a challenge. Differently to a local application on the DB server, you always have at least 3 players:
A client to place a request
some kind of transport layer
and a server to provide a reply.
This results in a minimum of 3 possible communication layers
Is there any way of saving a representation of the results of a query created in the Message Viewer to a file - most obviously CSV.
We are reasonably adept at creating queries. We'd like to be able to send the output to a file, rather than resorting to cut'n'pasting from the message viewer window...
Is this possible? (on any version of Ensemble/Iris?)
I'm a newbie in term of MQTT clients & brokers, and I've created a MQTT adapter to connect to a broker and I asked our system admin for the user/pass and the URL and this where we got stuck.
The admin is saying that all he has is IP address to the PEM key to the server itself, so my question is, is the broker the server itself and the url is the url to the server or is the Broker an application (eg. Mosquito) that runs in a server and if that's the case and if its Mosquito, where do I find the connection details to it (user/pass & URL) ?
The Interoperability user interface now includes modernized user experiences for the DTL Editor and Production Configuration applications that are available for opt-in in all interoperability products. You can switch between the modernized and standard views. All other Interoperability screens remain in the Standard user interface. Please note that changes are limited to these two applications and we identify below the functionality that is currently available.
When exporting using the Export() method of the %Library.Global class, if the export format (fourth argument: OutputFormat) is set to 7, "Block format/Caché block format (%GOF)," mapped globals cannot be exported (only globals in the default global database of the namespace are exported). To export mapped globals in "Block format/Caché block format (%GOF)," specify the database directory to which you want to map them in the first parameter of %Library.Global.Export().
Hello, I am currently facing the task of retrieving or sending HL7 messages from a web API. Since we only send HL7 messages via internal sockets, web APIs are relatively new to me. The following is my plan for the new interface:
In Ensemble->Enterprise Portal->Message Bank Viewer ,the Search option based on basic or extended criteria is not working.Please can somebody answer why so?
I am regularly contacted by customers about memory sizing when they get alerts that free memory is below a threshold, or they observe that free memory has dropped suddenly. Is there a problem? Will their application stop working because it has run out of memory for running system and application processes? Nearly always, the answer is no, there is nothing to worry about. But that simple answer is usually not enough. What's going on?
Starting out with ObjectScript, it is really exciting, but it can also feel a little unusual if you're used to other languages. Many beginners trip over the same hurdles, so here are a few "gotchas" you'll want to watch out for. (Also few friendly tips to avoid them)
NAMING THINGS RANDOMLY
We have all been guilty of naming something Test1 or MyClass just to move on quickly. But once your project grows, these names become a nightmare.
This web interface is designed to facilitate the management of Data Lookup Tables via a user-friendly web page. It is particularly useful when your lookup table values are large, dynamic, and frequently changing. By granting end-users controlled access to this web interface (read, write, and delete permissions limited to this page), they can efficiently manage lookup table data according to their needs.
The data managed through this interface can be seamlessly utilized in HealthConnect rules or data transformations, eliminating the need for constant manual monitoring and management of the lookup tables and thereby saving significant time.
Note: If the standard Data Lookup Table does not meet your mapping requirements, you can create a custom table and adapt this web interface along with its supporting class with minimal modifications. Sample class code is available upon request.
I'm trying to make a connection to an external database using %SQLGatewayConnection, but the connection always fails. DSN properly configured. I try to make the same connection through isql in bash, and the connection is successful.
Some languages have the concept of a garbage collector for automatic memory management. I'd like to know if something like this exists in InterSystems Caché in the context of routines, %CSP.REST, or %CSP.Page.
The question arises from the %Close() method of the %RegisteredObject class. This indicates that I need to manually clear the object from memory if it's no longer in use, or in the web context, if the request has completed. Is this correct? Or am I completely wrong?
To manage the accumulation of production data, InterSystems IRIS enables users to manage the database size by periodically purging the data. This purge can apply to messages, logs, business processes, and managed alerts.
UPDATE: since version 0.0.4 of the extension was published on 2025-11-23 it is now possible to use gj :: configExplorer directly in VS Code on Windows.
For historic reasons we've got a mix of ADT feeds coming out of our PAS (TrakCare) to a wide range of downstream systems. In particular, there are some that are direct from TrakCare to the downstream systems, and many more that pass through Ensemble as our integration engine.
This is complicating management of the integrations, and so we'd like everything to go through the integration engine. In other words move from the flow in the top of the diagram to the flow in the bottom of the diagram:
When we need to integrate Caché/IRIS with other relational databases, one common question arises: “How do I set up the JDBC connection?”. The official documentation doesn’t always provide a straightforward step-by-step guide, which can be frustrating, especially for beginners.
The ^%GCMP utility can be used to compare the contents of two globals.
For example, to compare ^test and ^test in the USER and SAMPLES namespaces, it would look like this: *In the example below, 700 identical globals are created in the two namespaces, and the contents of one of them is changed to make it the detection target.
I'm trying to access the Bearer token from the Authorization header in my REST service class, but I'm getting a 500 Internal Server Error when I try to use %request.GetCgiEnv("HTTP_AUTHORIZATION").
My Environment:
InterSystems ensemble 2018
Using EnsLib.REST.Service with HTTP Inbound Adapter
REST API URL: http://ip:port/api-kiosk/patientData
HL7 messages often contain multiple repeating segments such as NTE, AL1, OBX, ZTX, DG1, and others. These segments sometimes require individual processing and routing to different downstream systems. This technical paper introduces a configurable template designed to automate the splitting of these repeating HL7 segments, improving message handling and integration efficiency.