First of all thank you for your time reading our topic


We would need some help from experienced people

We have a SOAP Service with more than 10 methods

Our aim is to include all classes being used by this SOAP Service, in a Studio project


The challenge is that there are plenty Data classes (which extends from (%SerialObject, %XML.Adaptor))


▶️ Is there a recommended way to include all project's classes in a Studio project?

0 1 80


We have created an Ensemble production that receives HL7 information via TCP Adapters, but the requirement from the vendor is that we submit an ACK message with the MSH segment mist have a date and time populated with seconds.

We are utilising the standard class for the Service Adapter (EnsLib.HL7.Service.TCPService).

HL7 Version 2.5 no modifications currently.

The messages received via the service is correctly received in ddMMyyyyhhmmss but our ACK back is only ddMMyyyyhhmm.

0 1 805
Scott Roth · Feb 13, 2019
Record Map - MAXLEN

I am trying to read in a data file via a Record Map and I am getting the following error...

ERROR #7201: Datatype value '030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_B452' length longer than MAXLEN allowed of 50 > ERROR #5802: Datatype validation failed on property 'osuwmc.MatSys.DataStructures.MatSysIVT.Record:Bin', with value equal to "030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_030121_B452"

0 1 350


Most of my development experience is with HL7v2 interfaces and I don't have a background in web development and I'm very weak with javascript.

I'm looking for suggestions of learning resources to learn FHIR  and 'SMART on FHIR' (JavaScript, OpenID connect, OAuth2) for developers like myself who mostly do HL7v2 integrations - but see FHIR as the future - and want to develop their skills!

I've found these 

0 1 1,073
Ron Sweeney · Dec 12, 2019
ComplexMap Riddle

Im usually pretty good at ComplexMaps and implemented a couple, but I have one that is stumping me on how I can implement it.  My problem is I have no real "leading data" to key off of and need something else...

It goes a little bit like this:

D123456     THING1   THING2    THING3   THING4

D789101     THING1   THING2    THING3   THING4

0 1 104

I believe most of you have encounted this problem: a healthconnect/ensemble user get a slow response and ask measurement on how long it takes ensmeble to process this request, the ensemble 'activity data' gives no clue of the delay.

The reason is HealthConnect message measurement was based on ensemble message, which can’t give a correct answer on when ensmeble recevie the request and what time it send back response. when there is delay on inbound/outbound adpter, or csp gateway, there is no way to find out the delay from "activity data" . 

0 1 88

I am configuring a SOAP HL7 Receiver to handle HL7 Query messages.

I have set up a new class based on EnsLib.SOAP.Service and configured (correctly I hope) the parameters needed.  I have also amended the OnProcessInput Method skeleton provide to send messages on to the Business Process needed.

I am struggling to work out what is needed in the Web Methods and how to create them. 

Any help with this would be much appreciated especially examples that I can adapt for what I need.

Many thanks 

0 1 248
Satheesh Asokan · Jan 16, 2018
ECP Connectivity

Hi All,

Background: I have my data in Globals on a Cache instance A and I SQL projected(Added SQL Storage) all my globals as Classes to do SQL Operation.

I am about to start writing my application code in Ensemble(Planning to use Business Service, process and Operation) , Now I wanted to do ECP connection between Ensemble instance and Cache instance to get data from Cache.


How to do ECP connection between two instances?

Does SQL projection of classes is really required or I can use the globals from Cache server.

0 1 540

Common macro def as following


#def AnyNumber(%args) for i=1:1:$listlength(%args) { Write $listget(%args, i)}

Using this marcro in objectscript code:

ClassMethod Test() as %Status {



if ths args is literal value , Iit worked great. But  When I want pass Objects, It's not working


I know I can pass a %ListObjects , If I want more shorter Line. How can I do this.





0 1 103


I like to know if we need to have the message in a file to process a Record Map?

I am working with Interoperability Production that processes files /messages using Record Maps. My team was asked to redesign the solution for deployment in AWS. We use containers. We had problems with having multiple containers processing files from the same directory. We are considering Amazon Simple Queue Service instead of having files on a shared file system.

0 1 109

You might of seen or might of not seen my earlier post about Exporting a Production from 2018.1 to import it into 2021.1. I was able to get the export working, however I noticed in reviewing the data within the export, our previous Workday XML Schemas that we imported via XSD files were not in the export. When walking through the export process under Message Schema or vDoc Schema I could not find the missing XML Schema structures. Why aren't XML's part of the export process if they are used within the Production?

0 1 31
Kenneth Poindexter · Nov 7, 2017
Custom Schema


Please excuse my rather limited knowledge of HL7.

In Ensemble, I have a HL7 message that contains several Z segments.  I have created a custom schema to represent the new Z segments along with the new DocType Structure and Message Structure

How does Ensemble/Health Connect know which custom schema to use?  I believe it has to be indicated in the MSH segment somewhere, but not sure where exactly that would be.   Is the version simply updated with the new schema name or is there some other field?



0 1 260

I am working through trying to use ZAUTHENTICATE.mac and LDAP.mac to do Delegated sign on into Ensemble. In reading over the samples and the documentation, I am not clearly finding on how to set the Appropriate Role from the LDAP group I return. Can someone help explain this part to me? If I have a user sign on, and I return a "Group" from the Authentication, how do I get that to transform into the Role I need for Ensemble.


Scott Roth

0 1 415
Suman Samanta · Oct 2, 2018
%NOLOCK in insert query

I would like to know , if its safe to use %NOLOCK  in insert query while doing some parallel processing in Ensemble. We will have pool size of more than 1 for a business process. The  business process  does an entry in internal meta data table , which will be used for some internal reporting. The same row might get updated by some other process  later point of time.  i could not  produce any error or any issues . Looking forward to hear some opinion on this.

0 1 592
Scott Roth · Sep 12, 2019
Clean up code after compile

After upgrading I ran a $SYSTEM.OBJ.CompileAllNamespaces("u"). What I got in return was kind of a shock.

In reviewing errors I am seeing code being referenced but no longer applies. It is referring to stuff that might of been defined in the Context , Formal Spec ,Thread , etc.

ERROR #5373: Class 'osuwmc.CPD.DataStructures.TblPharmacyDEA', used by 'osuwmc.CPD.BusinessOperation:SelectProviderTempDEA:FormalSpec', does not exist

1 1 281
Yaron Munz · Oct 16, 2019
Ensemble dynamic archive path


Is there an elegant way to define a dynamic "Archive path" for EnsLib.File.InboundAdapter ?

What i mean is to have a sub-folders structure (under the root archive path) with a name similar to: yyyymmdd
This way the adapter "could" store the files on those sub-folders (and create a new one for the 1st file for a specific date).

When a production is processing hundreds of thousands of files every day, we might end up with an archive with huge number of files (many millions) which is then hard to handle (read, search) especially on Windows O/S.

1 1 198

Ensemble 2017.2.

I am writing a DTL code action based on the solution described in the posting "How to avoid truncation in HL7 messages with very large fields (32K+)". Because the source value is in a repeating segment, and the specific repetition in which the value is located can vary, I would like to use a variable (specifically the k1 key) to specify the repetition to get.  I have been unable to get it to work.

OBXgrp is the location in the path at which the repetition occurs. Hard-coding an index, as in the example below, works.

0 1 281
Robert Cemper · Sep 12, 2019
Features of *ENSTEMP

ENSTEMP was addressed already some time ago; 
Article: Preventing Globals From Getting Journaled (Continued from How do I Minimize My Journals)

and is also in public documentation
Where InterSystems IRIS Stores Temporary Production Data

Though I'd like to understand if this is just naming a non-journaled DB
or are there also typical features of CACHETEMP / IRISTEMP related to it:

  • automatic clean-up at system startup 
  • keeping Global Buffers in memory as long as possible
  • late writing to the storage file 

In other words is it a 2nd, 3rd, .. fully feature blown IRISTEMP  ?  

0 1 203

Hello All,

I am able to transmit a small batch of billing files: B/W 5 and 20 without issue- 
Put stream 11@%IO.LibraryStream to /SFTP/unmhsmcsa/OUT/TEST_021920201426.tst  

But when the size of the batch increases to over 20 the operation hangs and I receive the error below:   The file is created in the SFTP server with 0 data.

0 1 490

Hi All,

I am trying to create a production from a script(routine). 

I am using the below way to create an empty production

Set oProd=##class(Ens.Config.Production).%New()
Set oProd.Name="Test.NewProduction"
Set oProd.ActorPoolSize=1
Set status=oProd.%Save()

But when i tried to start the production, i am getting an error as "Test.NewProduction" class does not exists. 

Is there any other way to create the production via routine or terminal using commands as above?

0 1 269

Hi, all.

I know this is basic, and I think I have done this before, but I haven't been successful this time.

In a Routing Rule, I would like to take the value of MSH:9.2, see if that value does NOT exist in a lookup table, and ultimately return out of the rule if true.

So, if my message is an "A05", but "A05" is not in a particular lookup table, then it evaluates to 1, and I execute my action of "Return" and the rule ceases processing.

Is there something incorrect with my sample code below?

0 1 248

Hello, we have a couple of BPL processes. This works with a limited amount of messages but we run into issues when we process thousands of messages in a session. One BPL calls a Validation BPL process with async='False' and there is a response defined. The timeout is two seconds and that seems to be plenty of time for the validation process. I expected the calling process to wait for a response but that is not happening.

0 1 196