0 Followers · 237 Posts

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

Documentation.

Question Oliver Wilms · Mar 21, 2023

Hello, I want to show a fellow DC member how to convert JSON file into HL7 message. I personally do not work with HL7. I set up a production with EnsLib.File.PassthroughService. It passes Ens.StreamContainer to BPL process. I call a DTL to transform StreamContainer to HL7 message. I run into an error:

ERROR <Ens>ErrBPTerminated: Terminating BP JSON2HL7 # due to error: ERROR #5035: General exception Name 'Parsing error' Code '3' Data ''
> ERROR #5035: General exception Name 'Parsing error' Code '3' Data ''

The code is in this GitHub repo:

https://github.com/oliverwilms/HL7

2
0 719
Article Julian Matthews · Jul 21, 2021 4m read

Over the years, I have found myself needing to create multiple HL7 messages based on a single inbound message. Usually these take the form of an order or result from a lab. Each time I have approached it, I have tried to start from scratch under the belief that the previous attempt could have been done better.

Recently, the need arose again and I was able to create a solution that I wasn't ashamed of. My main concern was that I would always either find myself getting buried in a BPL, or use ObjectScript and attempt to edit messages using the SetValueAt Method for the HL7 Message Class.

Problem

1
1 1344
Discussion Evgeny Shvarov · Feb 9, 2023

Hi folks!

I'm playing with IRIS interoperability at the moment and it turned out that Data Transformation cannot be the element of production by itself.

It can be called either from data rule or from business process.

But why? 

What if I just want to change the message with the transformation and transfer the message somewhere else? Why the overhead with Rule or Business process?

1
0 183
Article Jeff Morgan · Oct 21, 2016 3m read

This article will describe and include an example of how to embed an external PDF file into an HL7 segment, specifically ADT_A01:2.3.1 OBX().  This can be useful when attempting to insert pictures or other external data into an HL7 message.  In this example, the name of the PDF file to be embedded is provided in the incoming HL7 message in OBX(1):ObservationValue field.

The basic stipulations for this example are as follows:

  1. Accept a PDF file
  2. Accept an HL7 message
  3. Using the name of the PDF file, embed the PDF data into the HL7 message
  4. Output the message to file

  

4
6 15725
Question Evgeny Shvarov · Jan 15, 2023

Hi Interoperability experts!

I'm into interoperability now with data transformations and I wonder: how can I use DTLs?

I've created one that transform Ens.Request into Ens.Response. How can I use it now in the production?

I'm trying to add the business process expecting to see it available in the list but it seems it is not the case. 

Tried documentation and it doesn't say either what to do after creation the DTL.  If it is obvious could you please help?

4
0 252
Question Glenda Anaya · Dec 19, 2019

Hi,

Is there a way to insert new Key/Value in an existing  lookup Table via a DTL code?  The only thing I found in the documentation is that we could use the following command SELECT KeyName,DataValue FROM Ens_Util.LookupTable WHERE TableName = 'myTab'. In the meantime I just created a table and  used it in my DTL to insert new values and validate if the Key exist.

Regards

2
0 680
Question Colin Brough · Dec 1, 2022

I'm testing an HL7 2.4 -> HL7 2.3.1 set of transformations. For the time being the source (service) and sink (operation) are file adapters. What I'd really like is to be able to save the output file with a name matching/containing the input file name - but as the DTL transformation in between uses "new" rather than "copy" it looks like I'm losing (some of?) the metadata, including the "Source" field (Body tab, message viewer).
Is there any way of preserving the Source field so the OutboundAdapter has access to it?

3
0 456
Question Smythe Smythee · Oct 10, 2022

Hi ,

Still a newbie for ensemble, I am trying to convert XML message to HL7 Message. I am using Custom schema for XML structure which includes MSH and PID segments from HL7 Message.

These are the service, process, Operation classes i am using 

Business service-EnsLib.EDI.XML.Service.FileService

Business Process-EnsLib.MsgRouter.RoutingEngine

Business operation -EnsLib.HL7.Operation.FileOperation

I am using data transformation to convert XML message to HL7 message  and data transformation is working fine and im getting this in the business operation.

8
0 1016
Discussion Kevin Koloska · Oct 21, 2022

HI Dev's

I dont work for Intersystems but i have found this training course very helpful and wanted to make sure others know about it. 

Advanced Data Transformations

Advanced Data Transformations 

Add a for each loop.
Create and use utility functions.
Create and use lookup tables.
Use counting.
Create and implement a subtransformation.
Add a code action.
Add a group of actions to organize relevant actions.

0
0 215
Question Harshdeep Acharya · Mar 23, 2022

Hi Team,

Can you please help me to develop EDI X12 to XML and XML to EDI X12 conversion in IRIS 2021.1 for EDI 204, also known as Motor Carrier Load Tender?

Also, suggest flow for how to achieve this kind of functionality in InterSystems IRIS. If you are able to provide some Videos/Documents on the EDI X12 interface for 204 then it would be very helpful for me.

Thanks,

Harshdeep Acharya

1
0 390
Article Aya Heshmat · Oct 11, 2022 3m read

Watch the session here: HealthShare Health Connect: Tips & Tricks

Enhanced HL7 V2 Productions

1. Review of Interface Settings: Ensure these are set purposefully! (Documentation linked)

Review of Recent Product Features 

(Documentation Linked)

1. HL7 V2 Schema Editor

  • Drag & Drop tooling for faster schema editing!
  • Note: Add-on segments may be made optional if starting from a generic schema.

2. DTL Editor Enhancements

0
0 277
Question Smythe Smythee · Sep 28, 2022

Hi ,

I am Converting HL7 message into SDA3 format by using Ens.DataTransform Class but transformation is not happening while using this class and throwing the below error

ERROR <Ens>ErrException: <UNDEFINED>zTransform+1^Hosiptal.SDA3.DataTrans.1 *target -- logged as '-' number - @' Set target.Patient.Name=source.GetValueAt("PID:5")'

Let me know if any mistake please refer the below code

Class Hosiptal.SDA3.DataTrans Extends Ens.DataTransform
{

15
0 563
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 328
Question Kurro Lopez · Dec 19, 2016

Hi all,

I'm trying to convert a HL7 section to a XML or JSON string.

We need to save the content of PID section into a SQL Column, therefore we need to convert it into a XML o JSON string

is there any easy way to convert it?

I've tried to convert it directly into a DTL, but all my attempts have been unsuccessful

Best regards,

Francisco Lopez

6
0 1567
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. 

1
0 472
Question Scott Roth · Jun 3, 2022

I noticed today that when we are creating a message from one doc type to another doc type, that the message type categories are not necessarily set. This is causing some issues with routing rules when we try to reference the Message Type Categories. Is there a way to make sure the Message Type Categories are being set within a DTL to make sure this doesn't cause problems down the road?

Thanks

Scott

7
0 411
Announcement Marcus Wurlitzer · May 29, 2022

Hi, I am glad to announce another submission to OpenExchange and the current contest, the FHIR Pseudonymization Proxy. The FHIR Pseudonymization Proxy adds a transparent pseudonymization layer to any existing FHIR server, enabling clients to perform queries on the FHIR server – which may contain personal identifying information – and receive an on-the-fly pseudonymized version of the data.

0
2 330
Question Steve Pisani · Apr 1, 2022

Hi

I have an a Ens.Request subclass (Invoice) that has a relationship property to another persistent class (InvoiceItems), with properties of its own and the inverse relationship defined referring back to Invoice. 

When building a DTL with these classes, the Relationship’s inverse relationship (Invoice, within InvoiceDetails) is displayed.   

Can this be hidden ? 

thanks

5
0 341
Question Nicky Zhu · Sep 3, 2018

Hi, guys,

I've written a DT for a partner which transfers a csv file into SDA3. 

I', using record map to gather data from a folder storing csv files and using the DT to tranfer the records into sda3 entities.

The followings are the codes of that DT:

Class POC.DT.CSV2SDA3 Extends Ens.DataTransformDTL [ DependsOn = (User.PhysicalExam.Record, POC.SDA.Container) ]

{

Parameter IGNOREMISSINGSOURCE = 1;

Parameter REPORTERRORS = 1;

Parameter TREATEMPTYREPEATINGFIELDASNULL = 0;

XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ]

{

1
0 409
Question Marcus West · Feb 3, 2022

I'm required to do a transformation around patient physical addresses.  If (for whatever reason) a patient has multiple addresses, I want to move the home address to the first iteration of PID:11 and remove all other iterations.  I've accomplished the first bit using DTL, but for patients who have multiple addresses they are left with empty trailing iterations.  Here is an example I mocked up:

How can I remove those trailing iterations?

This is part of the DTL I've written to do my transformation:

2
0 378
Article prashanth ponugoti · Jan 26, 2022 2m read

Requirement: Transform source XML message to target JSON.

step1: First create json equivalent xml from any online tool.

step2: use add in  studio utility create persistent classes from json equivalent xml and compile it , now target persistent classes are ready

step3: Do the above step for source xml or xsd and generate persistent classes for source and compile it

step4: complete the DTL by selecting root node from source, target persistent classes and complete the mappings and compile it

step5: use the below code to apply Transformation on source XML string and create Target JSON

0
0 422
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.TextBlock</FileContent>
  </Document>
</root>
 

1
0 184