DTL Transformations and GetValueAt/SetValueAt calls on HL7 messages will truncate any fields longer than 32K.  To avoid this, the methods GetFieldStreamRaw and StoreFieldStreamRaw must be used when dealing with fields that might be larger than 32K.  OBX:5 is a frequent example.  These methods have some subtleties and must be used carefully.

This can't be done by simply dragging from left to right in a DTL.  It must be done with a code action.  Also, the StoreFieldStreamRaw call must be the last edit made to the segment because the segment becomes immutable after that.

3 6 1,600

We are seeing ERROR #5002: Cache error: <MAXSTRING>zSaveData+14 ^EnsLib.HL7.Segment.1 come up on a Routing rule when we are trying to Encoded PDF's through a DTL. In the DTL we are copying source to target. Is there a limitation on trying to copy source to target? 

At the bottom of the DTL you are see that we commented out converting the Encoded PDF to a Stream, is it recommended that we always use %Stream anytime we are dealing with PDF's?



0 4 209

I have an incoming data partner who occasionally passes a non-ASCII character in some free text fields which is causing some downstream systems to be unable to accept the message. Ideally I'm looking for some way to just process the entire message as a data transformation applied in the business rule, as we already have a pre-processor transform to remove the PD1 segment. 

1 4 105

In specifying a "WHEN" condition statement, I don't seem to be able call a function directly from this declaration, as the generator seems to get confused

In the graphical editor:



In the DTL directly: 

<when condition="(%request.GetValue(&quot;MRN&quot;))=123453)">

<when condition="(%request.GetValue&#40;&quot;MRN&quot;&#41;)=123453)">


0 2 83

In this article I will demonstrate the following :

  • Update ReferencesRange(OBX:7) against ObservationIdentifier(OBX:3.1)[TestCode] from database by using custom utility function
  • Update Abnormal Flag(OBX:8) against ObservationIdentifier(OBX:3.1)[TestCode]  and ObservationValue(OBX:5)[Result] from database utility function
  • Route Message based on Abnormal Flag(OBX:8)

Below is the primary and transformed HL7 2.5 ORU_R01 message:

0 4 302

Data transformations can be changed in Management portal, but the modifications are not synced with visual studio code. Classes are synced from VSCode to Iris. VSCode can take care of the git repository.

I am curious to know how people are developing data transformations on Iris with VSCode? Are you editing the DT classes with VSCode and forget about the UI? Are you exporting from management portal the files to VSCode directory? Are you using a source control hook?

Thank you


0 1 223

I am working on tweaking our current patient load process. The roster input is in text pipe delimited format, parsed out and transforms it to a standard HS.Message.PatientSearchRequest, and send to business process for patient matching. Result is transformed into a standard ADT HL7 message using EnsLib.HL.Message class. I would like to know if there is another class I can use that will transform my output to a text flat file pipe delimited instead of HL7 format? any advice on how to do this is greatly appreciated.



0 2 138

Hi all,

I'm looking for a user-friendly way to make a method library available in DTL, and by user-friendly I mean via '..MyMethod()' or '$$$MyMacro()' rather than  '##class(MyPackage.MyClassName).MyMethod()'.

Does anybody know of a way to add a second superclass or a set of macros to a DTL ... or some other trick?



0 2 99



Transaltion for the question:

0 1 83

Does anyone know how to disable the auto-refresh in Healthshare, especially for Message viewer , Business process designer, DTL editor pages?  

These pages in management portal refresh every 15min( i.e. as per the session time out setting) . I tried to  set the following two configs to disable the auto refresh but both had no impact. 

set ^EnsPortal("DisableInactivityTimeout","Portal") = 1
set ^%SYS("Portal","EnableAutoRefresh") = 1


Thank you for your help. 


0 8 272


I have a PV1 repeating field that can contain multiple or a single value. I'd like to always pull the last value in the field but am not sure how to configure this in my DTL.

The repeating field is in PV1:50().1

Could somebody shed some light on this?








0 5 143
Scott Roth · Jan 13, 2021
Handling Errors

I have a case where our EMR is sending data, but not all the values needed for the Ancillary are valued properly and causes that message to error/halt processing on the Ancillary system, not ideal but its what they do. I would expect them to still process the message except that 1 field, but they don't.

I want to add validation to make sure certain fields are valued correctly for the Vendor. 

So I add some statements to take those items that don't pass this validation out to a batch file with headers.

0 9 260

I am currently evaluating Source Control systems that we can use for both MS SQL, MS Visual Studio, and InterSystems IRIS. For both MS SQL and MS Visual Studio we do have the option of either Azure or GitHub.  I understand when we upgrade to IRIS 2019.1 we have options for Source Control, and in previous Global Summit's I have heard GitHub discussed.  So why can't I user GitHub for both MS SQL/MS Visual Studio and IRIS?

A couple of questions come to mind starting to think about Source Control

1 7 815

I have a case where I need to look up the NPI provider against an External MS SQL database to retrieve our Provider Identifier to send to a downstream system. In the past I would use a Business Process (BPL) to connect to the outside MS SQL via JDBC and get that information for me. But I was thinking instead of creating a BPL process to do this, would it be better just to link to the outside MS SQL database table to retrieve the information in a SQL statement within a DTL?

0 3 156
Ingo Steiger · Nov 11, 2020
leading zeros

Hallo, I need a Ensemble transformation to fill up a 6 or 7 digit Number to a 10 digit string with leading zeros.

123456 --> 0000123456

1234567 --> 0001234567

Thank you!

0 4 271
Paul Hula · Nov 2, 2020

Hi All,

  I know hundreds of people have done this but I'm looking for some DTL's as a start to do HL7 to FHIR, I appreciate everyone's HL7 is slightly different, but just some starter DTL's would be much appreciated?  Can anyone help?




0 2 283

Someone may have asked this before but is there a way to return the TRACE statements that we have placed in the Data transformation within the DTL Editor Testing Tool (EnsPortal.Dialog.TestTransform.cls)?  Is this something we can get in an Enhancement request in for? 

It would save sometime in troubleshooting where an error might be in the DTL.

Just wondering...



0 1 124
Kyle M · Sep 21, 2020
suppressing a patient identifier

Hi all

Another newbie question.

A small percentage of our patients have an extra hospital number which was imported from the previous PAS but is no longer in use. We only need to send MRN and NHS number and would like to suppress CMRN. Could you please advise me how to do it in DTL?


0 5 209
Kyle M · Sep 17, 2020
modifying patient address in DTL


Newbie question. Could you please help me implement the following using DTL only - no programming. 

We have a problem where our system sends longer addresses e.g. block of flats in an unexpected format

e.g. address below:


0 3 170