HL7

Syndicate content 19 

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.

Last comment 23 August 2017
+ 8   1 1
3792

views

+ 8

rating

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.

Last comment 10 June 2017
+ 8   1 8
772

views

+ 8

rating

Hi everyone,

 

are you curious which topics we are going to cover at this year’s Global Summit? You have come to the right place! I will provide you with a sneak peek of what you can expect from the areas I am responsible for.

Last comment 5 September 2018
+ 5   1 3
671

views

+ 5

rating

Two fairly common requests we receive from HL7 customers are (1) how to remove all trailing delimiters for fields and segments in HL7 messages and (2) how to "find and replace" for an entire HL7 message (as opposed to one segment/field at a time).  The code sample below shows a custom function that solves for item 1 and by extension item 2 above.  In other words the same approach can be used for finding/replacing any sequence of chars in an entire HL7 message, with some tweaks to the custom function.

Last comment 16 May 2018
+ 5   0 5
1271

views

+ 5

rating

Framing refers to the characters that mark the start and end of an HL7 message (or other types of framed messages).  Most HL7 services and operations have a Framing setting that allows the user to define this framing.  The most common choices are available as defaults, but with the AsciiMM/NN setting, components can be configured to recognize any framing characters.

+ 4   1 2
0

comments

641

views

+ 4

rating

Hi Everyone,

Link to webinar recording: https://learning.intersystems.com/course/view.php?id=623

Thank you for your interest in this webinar!

Please submit questions about the content of the webinar as comments below this article.

Last comment 16 May 2017
+ 3   0 1
365

views

+ 3

rating

EnsLib.HL7.Message.cls provides many API methods for manipulating an HL7 message.  RemoveSegmentAt(), for example, can be used to remove a segment by path or index, but only one segment at a time.   There may be times that you'll need to remove all segments within a group or even many groups of segments from the HL7 message.  Surely you can iterate through each segment in each group and remove them one by one, but there's a much easier way. 

 

With just one command, like below, you can remove all OBX segments in an ORU_R01 message (msg):

Last comment 14 November 2018
+ 2   0 2
843

views

+ 2

rating

We are interfacing through Ensemble with an application that does not like diacritic signs in text. I have been searching for a way to strip these signs from the HL7 messages that get send to that application. 
The problem in short is we have an incoming HL7 message with e.g. é (or ë, á etc), this goes into Ensemble. In the outgoing message the é should be replaced with an e. 

Last answer 11 October 2016
+ 2   0 1
0

comments

168

views

+ 2

rating

I want to test automatically that HL7 business operation works correctly in error conditions. One is to test CE acknowledgement. I have planned to implement test production which includes business services for different situations (AA, AE, CA, CE, timeout, late response etc).

How should I implement HL7 business service that always returns CE (commit error)? I have tried but it keeps returning "AA".

Last answer 19 December 2018
+ 1   0 3
0

comments

116

views

+ 1

rating

This is a sample Ensemble/Health Connect production which demonstrates how to receive an HL7 order (ORM) inbound from a file, extract fields (in this case, basic demographic information), and insert those into a table in an external SQL database via ODBC.  

Included in the zip file:

  • Exported code
  • Sample ORM message
  • 'How to configure' doc 
Last comment 19 April 2018
+ 1   0 3
938

views

+ 1

rating

Hello Greetings-

I am exploring on converting HL7 to FHIR.

1. I saw there are built in DTLs “FHIR.FromSDA” and “FHIR.ToSDA” to convert SDA -> FHIR and FHIR -> SDA. Similarly Do Intersystems have DTLs for HL7 -> FHIR and FHIR -> HL7?

2. The reason why I am asking is, I see in HSLIB namespace HS->GateWay->HL7->HL7toSDA3 and HS->GateWay->SDA3->SDA3toHL7 DTLs. Like-wise I am trying to locate HL7 -> FHIR and FHIR -> HL7. Please help me to locate them

Last answer 22 March 2017 Last comment 14 August 2017
+ 1   2 2
919

views

+ 1

rating

Hi all,

We have a big problem with spanish accent and special characters using Data Transformation (HL7 Messages).

We have some DT to transform HL7 messages to other type (OUL^R22 To OML^O21) so it copys the PID segment to the new one, but if in the PatienName field has any special character, the transformation stops and it not continues with the transformation.

This is the message
 

Last answer 25 January 2017
0   0 0
0

comments

371

views

0

rating

For testing purposes, I would like to create an EnsLib.HL7.Message from either a %String or a file on disk and pass it into a function in a unit test (outside of an Ensemble context). EnsLib.HL7.Parser appears to do the necessary parsing, but it also sends the message via Ensemble service rather than returning it as a value. Is there a way to leverage the parsing outside of a Ensemble service? Alternatively, is there another way to create an EnsLib.HL7.Message?

Last answer 15 December 2016
+ 1   0 3
0

comments

922

views

+ 1

rating

I have a tool I absolutely love for HL7 v2 analysis and manipulation. It's called 7edit.  I'm wondering if there is anything similar for HL7v3/CDA/CCD.  I know it is considerably more complex, but I still have hope.

So far the best resource I've found is http://www.cdapro.com/.  I'd love to hear anyone else's tips for tools or resources.

Last answer 31 May 2016
+ 1   0 1
0

comments

693

views

+ 1

rating

What is the recommended approach to handle the following scenario: Large number of HL7 messages are serviced via Ensemble. Those messages are then transformed and routed to an Operation which calls a web service which does a number of different activities. If will do address normalization, location geo coding, MPI lookup and resolution, and insert into a SQL Server database to stage for an analytics product. Unfortunately all of this work takes time and the first thing that happens in the web service is a lock taken out on the Patien in SQL Server.

Last comment 4 March 2016
+ 1   0 5
0

answers

398

views

+ 1

rating

Way back when during our Siemens LCR days we had to limit the number of characters in OBX.5 to a length of 75. That was back when we had eGate.

Now I need to do the reversal of that and take loop through a string length and split the string up into multiple OBX or NTE based on a certain length. In reading documentation $EXTRACT can do this if you know the exact length, but in this case we don't. 

So how would one loop through a string and say every 75 characters create a new OBX or NTE segment?

Thanks

Scott

Last answer 6 days ago Last comment 6 days ago
0   0 4
143

views

0

rating

Hi there.

I am dealing with a clinical system that returns a stack trace within the NACK (Specifically, within MSA:3).

Within the stack trace there is an error code I am interested in, and hoped I could use the Reply Code Actions to look for that code within the error by using the "E*<text>" condition to either suspend or accept the response and move on. The problem is, looking at the error within the event log, I can see that the error text is truncated, cutting off the error code I'm looking for within the stack trace.

Last answer 18 June 2019 Last comment 19 June 2019
0   0 2
66

views

0

rating

Hi,

I would like to use EnsLib.HL7.Operation.HTTPOperation for sending HL7 messages via HTTP. It sends the Content-Type as "text/html"

I would like to change it to something else, say "text/plain". I cannot see a way to do it.

I have now written a custom Operation (based on EnsLib.HTTP.OutboundAdapter) and modifying the Content-Type while POSTing using SendFormDataArray(). It's bit frustrating to parse the response etc.,

I would rather prefer to use HTTPOperation of HL7. Can somebody help?

Last answer 4 June 2019
0   0 2
0

comments

68

views

0

rating

Hello,

currently we have a problem in development with the character set of the response message.

We are transmitting an HL7 message with an operation based on the EnsLib.HL7.Operation.HTTPOperation class.
We have changed this as follows.

Set pMsgIn=$$$NULLOREF, tHttpRequest=##class(%Net.HttpRequest).%New(), tHttpRequest.WriteRawMode=1, tHttpRequest.ContentType="APPLICATION/HL7-V2; charset=UTF-8"

Unfortunately, the ContentType character set is not read correctly in the response.

 

Last comment 23 May 2019
0   0 3
0

answers

95

views

0

rating

Hi, 

It is sometimes undesirable to send a full demographic or results feed to departmental clinical systems, that only see a subset of the patients.

While some systems (paediatrics, maternity, geriatrics) can filter on patient demographics, a number of systems are for cohorts of patients that don't fit a particular criteria.

One of our system vendors has a patient index filter service that keeps a local index of relevant patient identifiers, and only forwards matching messages.

Last comment 3 May 2019
0   0 4
0

answers

86

views

0

rating