6 Followers · 245 Posts

IRIS supports Data Transformation Language (DTL) for describing data transformations. DTL is an XML language. Ensemble provides wizards and graphical tools for creating, editing, and testing DTL transformations. A data transformation is a Caché class like the following. If you prefer you can use Studio to edit the class definition directly and bypass the wizards and graphical tools.

Question Curtis Rambaransingh · Apr 20, 2020

- Currently we are receiving one NTE (See Below) from the source system

NTE|1|Result Comment|TESTING:\.br\\.br\This is a test results.  \.br\\.br\This test is a Test.

- We would like to create multiple NTE segments and send to destination system by using ".\br\"(Line Break)

NTE|1||TESTING:

NTE|2||

NTE|3||This is a test results.

NTE|4||

NTE|5||This test is a Test.

Bit we are running into compile issue on the code block.  NOt sure if there is a better way to do this.  Any help is greatly appreciated.

code:

 set iTotCnt=$L(sNTE,"\.br\")
 for i1=1:1:iTotCnt d
 . s sTmp=$p(sNTE,i1)
 . s target.{ORCgrp(k1).

1
0 498
Question Scott Roth · Oct 8, 2020

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...

Thanks

Scott

Cache for UNIX (IBM AIX for System Power System-64) 2018.1.3 (Build 414U) Mon Oct 28 2019 11:24:02 EDT [HealthShare Modules:Core:15.032.9026 + Linkage Engine:15.032.9026]

1
0 369
Question Jack Smith · Jan 9, 2018

I would need to build a Complex Record Map and then transform that into xml. But not the whole batch to one xml file - instead every repetition in that Complex Record Map would become one xml file. 

For Simple Record Maps this is easy to do because there are different types of Business Services that handle every record either individually or all of them as one batch but there doesn't seem to be similar options for Complex Record Maps? Instead, there is only batchtype business services.

Why is that? And what would be the best approach to transforming complex record map to several xml documents?

1
0 492
Question Ramesh Ramachandran · Jan 27, 2017

I wanted to parse an EDI 837 X12 document to extract a value from CLM segments.  We tried with the below DTL and did not get it working. Appreciate any ideas. 

<transform sourceClass='EnsLib.EDI.X12.Document' targetClass='Test.Request.EDIX12ClaimSegments' sourceDocType='HIPAA_5010:837I' targetDocType='HIPAA_5010:CLM' create='new' language='objectscript' >
<assign value='source.{loop2000A().loop2000B().loop2300().CLM:ClaimSubmittersIdentifier}' property='target.ClaimInvoiceNo' action='set' />
</transform>

1
0 866
Question prashanth ponugoti · Jan 24, 2022

Hi Community,

I have created persistent classes for source, target XSDs and completed DTL. When I tested in DTL window by passing source xml it is generating below target xml as result.

DTL result:

<root>
  <CaptureSource>2</CaptureSource>
  <Document>
    <Description>1235@TEST.COM.Message.ReportType</Description>
    <EventDate>1489@TEST.COM.Message.EventDateZ</EventDate>
    <ExternalSystemId>1213@TEST.COM.Message.ReportID</ExternalSystemId>
    <FileContent>1142@TEST.COM.Message.

1
0 211
Question Paul Hula · Oct 10, 2016

Hello All,

   Does anyone have a specification for Telepath PMEP file formats?

They look like this

01|XXX|005|MIC|XXX Microbiology & Mycology|123456|25.08.16 15:06|
02|$$$|XX01|||L|
03|F|SURNAME|FORNAME|111222333|MRN1|01.01.1950|52 Some Lane|Somewhere|||AA11 1AB|MRN1|01.01.1950

etc etc with "05's all the way up to 10's" they are for results.  The supplier isn't being helpful, google for PMEP isn't given anything useful, hence I'm asking the friendly developers here if they've come across it and even better have any sort of file format or spec at all?

1
0 480
Question Sylvie Greverend · Jun 30, 2021

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

1
0 739
Question Daniel Lee · Jul 28, 2022

I have an existing DTL and I need to insert a trace statement so that it writes the value of the target object. However, I haven't been successful in completing this. 

I have opened the DTL viewer in Studio, and have inserted a trace statement. 


  • If I insert just plain text, the trace statement works, e.g., Value="Hello World"
  • If I insert the target variable, it does not work, e.g., target.Patient.Allergies.(k1).AllergyID. For this value, compile fails with an InvalidName error ERROR #1011: Invalid name : '##class(Ens.Util.Trace).WriteTrace("user","PHI.DTL.SDAtoACX","Transform",target.
1
0 554
Question Scott Roth · Oct 30, 2019

I must be missing something. We have done encoded PDF's in the past with the Encoded PDF in OBX.5.5. When I have used this code in the past I was only working with 1 OBX, but I have a case where I am having multiple OBX's and having to loop through them and I am renumbering the outbound OBX.

<code>
<![CDATA[ // OBX]]></code>
<assign value='1' property='varOBXindex' action='set' />
<assign value='1' property='varOBX1' action='set' />
<foreach property='source.{ORCgrp(1).OBRgrp(1).OBXgrp()}' key='k1' >
<if condition='source.{ORCgrp(1).OBRgrp(1).OBXgrp(k1).

1
0 662
Question Chris Lambert · Nov 30, 2023

This question originally appeared in the comments of the post: Making use of Multiple Sub Transforms in a main map || HL7
 

I'm having a similar problem trying to get PRD(1) into PV1:ReferingDoctor and PRD(2) into PV1:ConsultingDoc
Running the subtransform will populate referring doctor for the first PRD, and then the second running will delete the PV1, make a new one with only the consulting doctor populated.

Was hoping I could use a subtransform to populate the information, but looks like it has to be done at the transform level.

1
0 254
Question Paul Reesman · Apr 18, 2016

We are receiving XML documents and storing them. When we click to go into the clinician portal and again to view a patient, we can see the documents but none of the data is mapped to their respective buckets, i.e. allergies or medications.

I am thinking that I need to build an XSLT parser and change the format to SDA3, is this an appropriate approach? Or would using the Data Transformation (Ensemble -> Build -> Data Transformation) be a better idea? Lastly, if the XSLT idea is preferred, where would I call it within the stack?

1
0 473
Question Kathy Ward · Aug 9, 2022

Is there a way to compare the value in a source field against all of the values in a repeating field?  For example, we have multiple DG1 target segments populated.  Is there an easy way to check a source DG1 segments against all of the target DG1 segments?  I didn't know if there is a wild card I can use for the comparison.

1
0 384
Question Gary Lusso · Apr 22, 2025

New at DTL. I need some pointers on this DTL

For all Prosthetics orders:
when ORC-1(Order Control) is "NW" (New Order), need to update OBR-18(Placer Field 1) based on PV1-2 (Patient Class) value.
assumption is that the selection logic is that all prosthetics orders with OBR-18 field is always blank.
Description :
If PV1-2 is I, insert I in OBR-18
If PV1-2 is O, insert O in OBR-18
If PV1-2 is E, insert O in OBR-18
If PV1-2 is P, insert O in OBR-18
If PV1-2 is R, insert O in OBR-18
If PV1-2 is B, insert O in OBR-18

1
0 155
Question Lee Butcher · May 19, 2025

As part of a process to generate FHIR XML bundles from HL7 messages, I have a subtransform transforming segments of an MDM_T02 message into a section of XML (EnsLib.EDI.XML.Document). So far this has worked well although I've encountered strange behaviour when making use of an xmlns attribute, whereby the attribute's name is duplicated despite the schema and DTL editor displaying it correctly.

Here's a snippet of the div.xmlns definition from the XSD schema used

Has anyone else encountered this? Any help is much appreciated

0
0 100
Question Nimisha Joseph · Apr 14, 2025

Hi everyone,

I'm working on a DTL that transforms an HL7 message (EnsLib.HL7.Message) to an XML document (EnsLib.EDI.XML.Document).

The target XML is based on a custom schema and has an element like:

What I need is for the output to show:

<deceasedDateTime xsi:nil="true"/> when the source HL7 value is empty, for eg: 

<portalPatientUpdate xmlns:xsi="http://www.w3.

0
0 139
Question Scott Roth · Aug 15, 2025

Is there a way to Remove specific all Addresses from a Provider.Individual.Address before reinserting the Addresses from an HL7 message in Provider Directory?

Most fields we can call %clearFields() however since Addresses come from multiple locations we need to isolate and treat Addresses from this HL7 source as a snapshot.

Thanks

Scott

0
0 92
Question Yuhong Snyder · Jan 22, 2025

Hello,

I hope this is a simple ask..

basically I need to create local files daily at a certain time for example 11:30pm.

1. file name needs to be like  xxx__20250113.txt , the date part should be next day's timestamp with format YYYYMMDD, so I will write about 17 files like that with different names.

2. write a dummy hard coded word for example “Dummy Word” in the file.  the file eventually will be used by other operations to add hl7 message on top of this  in it with the live interface message. 

3. this needs to be done every night at 11:45pm

So how am I going to implement this?

0
0 133
Question Chip Gore · Nov 18, 2022

In terms of general through-put design and long term support, I'm considering what would be a "best approach" for needing to create multiple batch files in a few different layouts from the same data-sets.

I need to iterate over a few very large tables to generate consistent batch outputs for different partner applications that need to be working on the same "version" of the source data.

0
1 541
Question Justin Ruggles · Jun 17, 2025

I am trying to add a value to my concatenation string and the value is not being inserted in the right place. I am adding onto this code from another developer and cannot seem to get it to work. The only code I have added is underlined in bold red.

This is how the translated HL7 message looks:

OBX|1|CE|CDX^History||Specimen 1 Clinical History: CLINICAL HISTORY\.br\\.br\Specimen 2 Clinical History: CLINICAL HISTORY 2\.br\Specimen 1 Suspected Clinical Diagnosis\.br\Specimen 3 Clinical History: HISTORY 3\.

0
0 106