I would like to examine the contents of my OBX-5 field and not route the message if it contains alphabetic characters. I've tried various combinations of the Match and Contains functions, with no luck. Should I be using the COS ? operator or plaini regular expressions?


OBX-5 Contains "\D"

OBX-5 Contains "?.A"

OBX-5 Contains "[A-Z]"

0 17 639
Ewan Whyte · Feb 21, 2018
HL7 segment query using SQL

I'm trying to get a count of specific message type with a specific entry and thought I could build the query in Message Viewer but  this does not provide counts (as far as I am aware). So when I take the SQL from 'Show Query' it omits the segment criteria as the code shows below. 

 I have attached the criteria that has been excluded. Is this possible?

Thank you

0 2 769

I have created a fairly simple process for taking a HL7 message and sending it to an external provider via a HTTP Post and this is all working correctly. However for the request and response messages I am using e a simple structure containing only a message stream and when looking in Ensemble Message viewer none of this stream content is showing (it is all blank). Would I have to create a particular message type to make this show in message viewer and if so could someone provide some guidance around how to achieve this (outline of code included below)

0 2 565

GraphQL is a standard for declaring data structures and methods of data access that serves as a middleware layer between the client and the server. If you’ve never heard about GraphQL, here is a couple of useful online resources: here, here and here.

In this article, I will tell you how you can use GraphQL in your projects based on InterSystems technologies.

10 24 1,638
Kenny Hill · Oct 23, 2018
Add Leading Zeros

I'm trying to format a filed, and I need to add leading zeros infront with a length of 4.


Before: 1

After: 0001

0 30 1,408


I have a business service that needs to run only once a day at an specific time. It is important that the service only runs once.

I have tried the scheduler but you can only define the times (start-stop) when the service will be running...so this will not work for me as I need this to run only once.

Looking at the documentation I found "tasks". Apparently this is exactly what I need. As per documentation:

0 12 1,023


The Ensemble SQL Inbound Adapter executes a user defined query, and calls the OnProcessInput method of the Business Service with information about an individual row of the executed query.

If the query provided by the user (and executed by the adapter), returned multiple rows, then, OnProcessInput is called multiple times, once for each row.

Within the OnProcessInput method, however, is there a way to know that the row that is currently being processed is actually the last row of the query.



0 7 324

I have a database which needs to be synced to another system and considering to use the SQL Inbound adapter to 'watch' the database. The other system, however, has a bulk API so I'd prefer to send multiple SQL rows in a single message to that system. The SQL Inbound adapter seems to trigger a single call (to a process or business operation) per SQL-row.

0 3 406


I want to grant access only to the Message Viewer page to an specific user, in all Namespaces. I have created a rol with this privileges:


But if I want to see the list of messages, I have to grant SELECT access to the Ens.MessageHeader and Ens.MessageBody tables of each Namespace.

Is there anyway to grant access to this tables in all Namespaces at a time, even if new ones are created?

Thank you in advance.

0 2 203


I am sending a request message to Business Process which has one property as Dynamic Object type. So i get the JSON in my REST service and convert that as a dynamic object and set that in the request message and calling the business process from the business service. But the request is not getting sent to the Business Process. Is it possible to send dynamic object input to the business process.

0 18 545

(Originally posted by @Ben Spead on June 25, 2014)

This code snippet generates a list of Ensemble Lookup Tables and Schema documents in the user's current namespace. Run the code by running the class method "test":

Class benspead.EnsTablesSchema
    classmethod test() {
        If ##class(%Dictionary.CompiledClass).%ExistsId("Ens.Util.LookupTableDocument") {
            // only supported in Ensemble 2012.1+
            Write !,!,"Exporting Ensemble Lookup Tables..."
            Set sc = $$$OK
            Set rs = ##class(%ResultSet).%New("Ens.Util.LookupTableDocument:List")
            Do rs.Execute()
            While rs.Next() {
                Set item=rs.Data("name")
                Write "document found: "_ item,!
            Do rs.Close()
            Set rs=""
        If ##class(%Dictionary.CompiledClass).%ExistsId("EnsLib.HL7.SchemaDocument") {
            Write !,!,"Exporting Ensemble HL7 Schemas..."
            Set sc = $$$OK
            Set rs = ##class(%ResultSet).%New("EnsLib.HL7.SchemaDocument:List")
            Do rs.Execute()
            While rs.Next() {
                Set item=rs.Data("name")
                Write "document found: "_ item,!
            Do rs.Close()
            Set rs=""

Here's a link to the code on GitHub: https://github.com/intersystems-community/code-snippets/blob/master/src/...

0 3 469

Hi All,

Just wondering if anyone had got this working.

In the documentation it says to set the username and password properties of the connection object but these properties don't exist and without authentication I can't connect to the MQ queue.

Any help would be greatly appreciated,

Dave Moss

0 4 241


I have a global that holds users name and date of birth.

I would like to loop through them and check if the date of birth is more than 2 years based on todays date

so I have ^checker("under2", "Eric David", "02-05-2018")

I want to check the birthdate based on todays date to see if it is greater than 2. How do I access the birthdate in the global

Please can you advice

I tried :

0 9 627
ED Coder · Nov 19, 2018
Copy csv data into a global object

Hi, I have a CSV file with a list of 5000 records in the following format

Name, Acc, division

Eric, 1234, 567

John, 1235, 987

Peter, 3214, 879

I just want to copy the Acc, division to a global so eventually the global would be like the following:

^People("Customers", "Acc.division")

Can you advice on how I can perform this from the terminal? This is a one time task. I want to read all the values from the csv file and insert them into the global



0 7 581

Hi, would really appreciate your advice on how I can restart the mirror-monitor. I've followed the instructions and restarted the mirror monitor, and still the status seems to be down. Can you point me to some resource or steps that I can follow ?

I logged into %SYS terminal and restarted the mirror monitor and it says that it is running

0 9 326
Johanna Kelly · Dec 19, 2018
How to deal with Large PDF


We have a few large PDFs coming into our engine - when it goes thru the Process and hits the Data Transformation it gets cut off before it sends it outbound to the receiving system.

Whats the best way to handle large PDFs?

0 4 232


I'm working on my first SQL service using the SQL inbound adaptor, and I'm having trouble. 

I've been following the documentation but it errors on  set req=##class(ESQL.request).%New()

Would anyone be kind enough to share a working example?

Kind regards, 


0 1 266