0 Followers · 498 Posts

Health Level-7 or HL7 refers to a set of international standards for the transfer of clinical and administrative data between software applications used by various healthcare providers

Learn more

Question Scott Roth · Jun 12, 2025

For those that use IRIS for Health, HealthShare, and or Health Connect...

As Health Applications are moving to the Cloud, how have you handled communication from the Application to your instances via HTTPS?

Trying to figure out the best path on designing the proper workflow to allow these messages to be allowed to be eventually sent to our EMR to post to the patient chart.

We are very wary of opening a connection from the internet to our instance of Health Connect.

Thanks

0
0 70
Question Scott Roth · Jun 11, 2025

I am having a hard time trying to figure out the following...

Within a DTC, I was able to take the a EnsLib.HL7.Message source and using

set a= $System.Encryption.Base64Encode(source.RawContent)
set encodedMessage=$Get(a)

to take the HL7 message encode it and add it to the Data Class as a string to be sent to an Operation to be sent out as a SOAP Request. 

However to make it more universal I tried doing this within a copy of EnsLib.HL7.SOAPOperation

3
0 71
Question Stephen De Gabrielle · Jul 17, 2019

Hi,

While HL7 Errors ACKs come back in the soap response, the HL7v2 Error ACK message is not processed. 

I used the SOAP Wizard to construct my classes, but the generated code doesn't handle the HL7v2 ACK.
Does health Connect have a class that handles this?

Failing an official solution should I go ahead and make make my own classes based on EnsLib.HL7.Operation.TCPOperation, but wrapping it with the generated SOAP handling code.

How have others dealt with this?

2
0 446
Question TAZ.R · May 6, 2025

Hi everyone,

I’m new to this community and could really use some help with creating a production in InterSystems IRIS for Health Community 2024.3. I have deployed my instance using Docker.
Here’s what I’m trying to do:

  1. Input: I have an HL7 file that is processed by the standard EnsLib.HL7.Service.FileService.
  2. DTL Transformation: I’ve created a DTL to transform the HL7 content into a custom class like this:
5
0 185
Question Scott Roth · Jun 4, 2025

Does anyone have a query that I could run to show a Vendor the time difference between when a message was sent out a BO, and when we received the HL7 ACK back that is associated with the message sent?

I am trying to prove to this vendor of the delay we are seeing getting the ACK back because of a Timeout

I know how to pull Ens.MessageHeader, and EnsLib.HL7.Message but not sure how to match up the Message with the HL7 Acknowledgement received.

1
0 58
Job Anthony Jackson · Jun 3, 2025

Summary:

Duties and Responsibilities:

Design and implement healthcare data integration solutions using the InterSystems platform /HealthShare platform, ensuring data interoperability across various healthcare systems.

Develop and maintain data mappings and transformations to ensure accurate data exchange between systems, leveraging IRIS API’s, HL7, FHIR, and other healthcare data standards.

Build and maintain interfaces to connect health information systems, including clinical applications, EHR, and other healthcare data sources.

0
0 93
Article Muhammad Waseem · May 28, 2025 4m read


Hi Community,
In this article, I will introduce my application iris-fhir-bridge 
IRIS-FHIR-Bridge is a robust interoperability engine built on InterSystems IRIS for Health, designed to transform healthcare data across multiple formats into FHIR and vice versa. It leverages the InterSystems FHIR Object Model (HS.FHIRModel.R4.*) to enable smooth data standardization and exchange across modern and legacy healthcare systems.

2
1 155
Article Landon Minor · May 30, 2025 2m read

Profiling CCD Documents with LEAD North’s CCD Data Profiler
Ever opened a CCD and been greeted by a wall of tangled XML? You’re not alone. Despite being a core format for clinical data exchange, CCD's are notoriously dense, verbose, and unfriendly to the human eye. For developers and analysts trying to validate their structure or extract meaningful insights, navigating these documents can feel more like archaeology than engineering.

0
0 93
Question Eric Tulowetzke · May 23, 2025

Hi all,

My team is exploring options for handling timezone offsets in DTL and we’re wondering if there are any built-in methods available — ideally low-code or no-code solutions. Specifically, we're looking for a way to adjust timestamps based on the date and whether Daylight Saving Time (DST) is in effect.

For example, if an HL7 message has an MSH-7 value of 20250518144529, it should be converted to 20250518144529-0500 (Central Daylight Time), but if the timestamp were 20250218144529, it should be 20250218144529-0600 (Central Standard Time).

6
1 128
Announcement Derek Robinson · May 15, 2025

Hi, Community!

Do you have HL7® V2 messages that you need to convert to the HL7® FHIR® format for better integration and analysis? See how the InterSystems FHIR Transformation Service can help:

Using the FHIR Transformation Service with AWS HealthLake

<iframe allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/ggf6yuV0FxE?utm_source=youtube&utm_medium=social&utm_campaign=ggf6yuV0FxE" width="640"></iframe>

In this video, see how to use the FHIR Transformation Service with AWS HealthLake to convert HL7®V2 messages and store them in the HL7® FHIR® format. You will learn how to:

  • Set up the integration between the FHIR Transformation Service and AWS HealthLake.
  • Configure the FHIR Transformation Service.
  • Upload and convert HL7 V2 messages.
0
0 57
Question Scott Roth · May 13, 2025

We are attempting to send HL7 messages over to CBOARD NetMenu over HTTP using SSL. We set this up using the EnsLib.HL7.Operation.HTTPOperation adapter. When we attempt to send the message we are receiving 

MSH|^~\&|||DIETOE|A6M0|202505131437||ACK^HTTP^415|00|P|2.1 MSA|AE|9165602|HTTP (N)ACK 'HTTP/1.1 415 Unsupported Media Type'

The vendor mentioned something about putting a SOAP/XML wrapper around the HL7 message but isn't that what the HTTPOperation adapter does? Why would we be getting Unsupported Media Type. How would we go about setting the Media Type for the HTTP HL7 message?

4
0 101
Question Scott Roth · Jan 28, 2025

Epic had changed some of their logic on their Incoming Radiology Results which now require an Ordering Provider even though it is supposed to account for it within the Epic Interface settings.

I was wondering if we are using a custom schema if there was a way to default a value into OBR:16 if it was not valued without having to modify all the DTL's for these Results.

Is there a way to set this via the schema editor or in the background so we don't have to create/update DTL's or create a custom TCP Operation Class??

5
0 126
Question Martin Browne · Apr 24, 2025

Hi,

We're having an issue with some messages being sent to a downstream system from Healthshare.  Part of the free text in the NTE segment is displaying with special characters on the system front-end but is not present in the HL7 message that we send to them.  We are guessing that this is a result of some of the text being copied and pasted from something like MS Word. The '?' on their system is just representing an invalid character. 

Is anyone aware of a way to prevent this occurring? We are sending the messages using the 'cp1252' encoding.

Sent from us to system

2
1 79
Question Gary M Lusso · Apr 18, 2025

I need a DTL to handle this.

Any ideas appreciated.

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

2
0 145
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 112
Question Rushi Chandel · Apr 14, 2025

Hello Developers,

I have MacBook Pro M3 and I'm new to the IRIS for Health setup / installation with all pre-requisite / requirements so someone could please help me with detailed instructions on how to setup IRIS for Health (HL7 & FHIR) from scratch along with SQL Server? I have Windows 11 installed in parallel desktop if that's required and complete installation / setup is not possible on MacBook.

Thank you in advance.

Rushi

3
0 106
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:

<xs:element name="deceasedDateTime" type="xs:dateTime" nillable="true"/>

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.org/2001/XMLSchema-instance">
  <deceasedDateTime xsi:nil="true" />
</portalPatientUpdate>

My questions:

0
0 66
Article Chi Nguyen-Rettig · Mar 16, 2024 4m read

One of the pain points for maintaining HL7 interfaces is the need to run a reliable regression test upon deployment to new environments and after upgrades. The %UnitTest class allows unit tests to be created and packaged alongside interface code. Test data can also be maintained within the unit test class, allowing for quick and easily repeatable smoke-testing and regression testing.

##Resources:

##Scenario: A unit test class is created for each inbound feed based on the data profiling, routing, and mapping requirements.

Sample requirements:

Functional Requirements

To test each scenario, we need to run through a sample of each event type and confirm the routing rules. We also need to confirm the specific mapping requirements and find sample data for each scenario.

##HL7 Production

The purpose for this UnitTest-RuleSet is to test a HL7 pipeline: Business serviceRouting RulesTransformation.

In this example created for the production shown below, the ADT process flow goes through several additional hops. A class extending the UnitTest.RuleSet.HL7 was modified to allow for handling more complex process flows.

Process Flow: FromHSROUTER.TESTAdtFromTESTAdt.ReorgSegmentProcessRouteTESTAdtTEST.ADTTransformHS.Gateway.HL7.InboundProcess

HL7 Production

##Create Unit Test Class

Create a TestAdtUnitTest class that extends UnitTest.RuleSet.HL7. (UnitTest.RuleSet.Example in the UnitTest-RuleSet repository contains an example of such a class.

*Note: In this example, everything was moved under HS.Local in HSCUSTOM for ease of testing. *

Signature:Class HS.Local.EG.UnitTest.TestAdtUnitTest Extends HS.Local.Util.UnitTest.RuleSet.HL7

##Class Structure Preview

The Unit Test class is organized with this layout:

Unit Test Class Layout

##Set Up Parameters

These class parameters are used to set up testing.

// Namespace where production is located
Parameter Namespace = "EGTEST";

// Base directory for unit tests

Parameter TestDirectory = "/tmp/unittest";

// sub-directory name for unit tests

Parameter TestSuite = "TEST-HL7ADT";

/// Override for different schema
Parameter HL7Schema = "2.5.1:ADT_A01";

/// Override with name of existing service on production
Parameter SourceBusinessServiceName = "FromHSROUTER.TESTAdt";

/// Override with name of existing business process routing engine on production
Parameter TargetConfigName = "FromTESTAdt.ReorgSegmentProcess";

/// Primary routing process name on production
Parameter PrimaryRoutingProcessName = "RouteTESTAdt";

/// Secondary routing process name on production
Parameter SecondaryRoutingProcessName = "TEST.ADTTransform";

Note: The primary and secondary routing processes are referenced in various test methods in order to test the output and results from two routing processes chained together.

##Create Sample Input Messages

To create a reusable Unit Test class, we save anonymized samples of each event type and any additional messages needed to fulfil the testing scenarios into the Unit Test class in XDATA blocks at the bottom of the file.

Example of an XDATA block:

The name SourceMessageA01 is used to reference the specific XDATA block.

XData SourceMessageA01
{
<test><![CDATA[
MSH|^~\&|Epic|TEST||TEST|20230911060119|RUBBLE|ADT^A01|249509431|P|2.2
EVN|A01|20230911060119||ADT_EVENT|RUBBLE^MATTHEW^BARNEY^D^^^^^TEST^^^^^UH|20230911060000|PHL^PHL^ADTEDI
ZVN||LS23450^LS-23450^^^^RTL
PID|1|000163387^^^MRN^MRN|000163387^^^MRN^MRN||FLINTSTONE^ANNA^WILMA||19690812|F|MURRAY^ANNA~FLINTSTONE^ANNA^R~FLINTSTONE^ANNA|B|100 BEDROCK WAY^^NORTH CHARLESTON^SC^29420-8707^US^P^^CHARLESTON|CHAR|(555)609-0969^P^PH^^^555^6090969~^NET^Internet^ANNAC1@YAHOO.COM~(555)609-0969^P^CP^^^555^6090969||ENG|M|CHR|1197112023|260-61-5801|||1|||||Non Veteran|||N
ZPD||MYCH||AC|||N||N
PD1|||TEST HOLLINGS CANCER CENTER^^10003|1134107873^LINK^MICHAEL^J^^^^^EPIC^^^^PNPI
ROL|1|UP|GENERAL|1134107873^LINK^MICHAEL^J^^^^^EPIC^^^^PNPI|20211115
NK1|1|GABLE^BETTY|PARENT||(555)763-5651^^PH^^^555^7635651||Emergency Contact 1
NK1|2|FLINTSTONE^FRED|Spouse|100 Bedrock way^^REMBERT^SC^29128^US|(888)222-2222^^PH^^^888^2222222|(888)222-3333^^PH^^^888^2223333|Emergency Contact 2
PV1|1|O|R1OR^RTOR^07^RT^R^^^^TEST RT OR|EL|||1386757342^HALSTEAD^LUCINDA^A.^^^^^EPIC^^^^PNPI|1386757342^HALSTEAD^LUCINDA^A.^^^^^EPIC^^^^PNPI||OTO||||PHYS|||1386757342^HALSTEAD^LUCINDA^A.^^^^^EPIC^^^^PNPI|SO||BCBS|||||||||||||||||||||ADMCONF|||20230911060000
PV2||PRV||||||20230911||||HOSP ENC|||||||||N|N||||||||||N
ZPV||||||||||||20230911060000
OBX|1|NM|PRIMARYCSN|1|1197112023||||||F
AL1|1|DA|900525^FISH CONTAINING PRODUCTS^DAM|3|Anaphylaxis|20210823
AL1|2|DA|568^PEANUT^HIC|3|Anaphylaxis|20221209
AL1|3|DA|12753^TREE NUT^HIC|3|Anaphylaxis|20221209
AL1|4|DA|1193^TREE NUTS^DAM|3|Anaphylaxis|20130524
AL1|5|DA|1554^HYDROCODONE^HIC||Other|20210728
AL1|6|DA|3102^POLLEN EXTRACTS^HIC||Other|20201204
AL1|7|DA|11754^SHELLFISH DERIVED^HIC||Other|20210728
DG1|1|I10|Q85.02^Neurofibromatosis, type 2^I10|Neurofibromatosis, type 2||ADMISSION DIAGNOSIS (CODED)
DG1|2|I10|D33.3^Benign neoplasm of cranial nerves^I10|Benign neoplasm of cranial nerves||ADMISSION DIAGNOSIS (CODED)
DG1|3|I10|J38.01^Paralysis of vocal cords and larynx, unilateral^I10|Paralysis of vocal cords and larynx, unilateral||ADMISSION DIAGNOSIS (CODED)
DG1|4||^NF2 (neurofibromatosis 2) [Q85.02]|NF2 (neurofibromatosis 2) [Q85.02]||ADMISSION DIAGNOSIS (TEXT)
DG1|5||^Acoustic neuroma [D33.3]|Acoustic neuroma [D33.3]||ADMISSION DIAGNOSIS (TEXT)
DG1|6||^Unilateral complete paralysis of vocal cord [J38.01]|Unilateral complete paralysis of vocal cord [J38.01]||ADMISSION DIAGNOSIS (TEXT)
GT1|1|780223|FLINTSTONE^ANNA^WILMA^^^^L||100 BEDROCK WAY^^NORTH CHARLESTON^SC^29420-8707^US^^^CHARLESTON|(555)609-0969^P^PH^^^555^6090969~(555)763-5651^P^CP^^^555^7635651||19690812|F|P/F|SL|248-61-5801|||||^^^^^US|||Full
ZG1||||1
IN1|1|BL90^BCBS/STATE EMP^PLANID||BCBS STATE|ATTN CLAIMS PROCESSING^PO BOX 100605^COLUMBIA^SC^29260-0605||(800)444-4311^^^^^800^4444311|002038404||||20140101||NPR||FLINTSTONE^THOMAS^^V|Sp|19661227|3310 DUBIN RD^^NORTH CHARLESTON^SC^29420^US|||1|||||||||||||1087807|ZCS49984141|||||||M|^^^^^US|||BOTH
IN3|1|||2||20230911|20230911|RUBBLE^MATTHEW^BARNEY^D|||NOT|||||(800)999-0000^^^^^800^9990000~(888)444-5555^^^^^888^4445555
ZIN|||||||FLINTSTONE^THOMAS^^V|||||16871492
]]></test>
}

Sample code to retrieve data from an XDATA block for use in testing:

set xdata=##class(%Dictionary.CompiledXData).%OpenId(..%ClassName(1)_"||"_XDataName,0)

Here’s the sample code from ** GetMessage**, a helper method used to read in and return the data from an XDATA block based on the block name.

ClassMethod GetMessage(XDataName As %String) As EnsLib.HL7.Message
{
	#dim SourceMessage as EnsLib.HL7.Message
	set xdata=##class(%Dictionary.CompiledXData).%OpenId(..%ClassName(1)_"||"_XDataName,0)
	quit:'$IsObject(xdata) $$$NULLOREF
	set lines=""
	while 'xdata.Data.AtEnd
	{
		set line=$ZSTRIP(xdata.Data.ReadLine(),"<w")
		continue:line=""
		continue:$Extract(line,1)="<" // ignore opening or closing XML tags and start CData tag
		continue:$Extract(line,1)="]" // ignore ]]> closing CDATA
		set lines=lines_($S($L(lines)=0:"",1:$C(..#NewLine)))_line
	}
	set SourceMessage=##class(EnsLib.HL7.Message).ImportFromString(lines,.tSC)
	quit:$$$ISERR(tSC) $$$NULLOREF
	set SourceMessage.DocType=..#HL7Schema
	set tSC=SourceMessage.PokeDocType(..#HL7Schema)
	quit SourceMessage
}

##Create Testing Methods

The Unit Test class also contains a Test method that programmatically sets up each test, injects the message into the production, and asserts that the resulting transformed message matches what is expected.

The test example contains these test methods:

  • TestMessageA01
  • TestMessageA02
  • TestMessageA03
  • TestMessageA04
  • TestMessageA05
  • TestMessageA06
  • TestMessageA08
  • TestMessageA28
  • TestMessageA31
  • TestCorrectAssigningAuthorityForA01
  • TestEncoutnerNumberPresent
  • TestPD1LocationMapped

Example Method: TestMessageA01 Method to test that A01 messages process without error and are routed to correct transform.

Method TestMessageA01()
{
	Set ReturnA01 = ..#SecondaryRoutingProcessName_":HS.Local.EG.ProfSvcs.Router.Base.ADT.TransformA01"
	#dim message as EnsLib.HL7.Message

    // Load new HL7Message per UnitTest
	set ..HL7Message=..GetMessage("SourceMessageA01")
	quit:'$IsObject(..HL7Message) $$$ERROR(5001,"Failed to correlate Xdata for Source Message")
	
	set routingProcess = ..#PrimaryRoutingProcessName

	set message=..HL7Message.%ConstructClone(1)
	do message.PokeDocType(message.DocType)
	do message.SetValueAt("SYSA","MSH:3.1")
	set expectSuccess=1
	set expectReturn="send:"_ReturnA01
	set expectReason="rule#8"
	do ..SendMessageToRouter(message,"TestMessageA01",routingProcess, expectSuccess, expectReturn, expectReason)
}

Note: SendMessageToRouter() is a method implemented in the UnitTest-RuleSet package.

Example Method: TestEncounterNumberPresent

The method below tests for specific resulting values in the message after the transform.

Method TestEncounterNumberPresent()
{
	#dim message as EnsLib.HL7.Message
	
    // Load new HL7Message per UnitTest
	set ..HL7Message=..GetMessage("SourceMessageA01")
	quit:'$IsObject(..HL7Message) $$$ERROR(5001,"Failed to correlate Xdata for Source Message")
	
	//source of transform process
	set routingProcess = ..#SecondaryRoutingProcessName
	set message=..HL7Message.%ConstructClone(1)
	do message.PokeDocType(message.DocType)
	do message.SetValueAt("SYSA","MSH:3.1")
	//Check that output has PV1:19 is not empty
	set expectSuccess=1
	set expectElement="PV1:19"
	set expectReturnVal="1197112023"
	do ..SendMessageReturnOutput(message,"TestMessageA01", routingProcess, expectSuccess, expectElement, expectReturnVal)
}

Note: SendMessageReturnOutput() is a method modified to return the output message for evaluation.

##How to Run the UnitTest

The %UnitTest class implementation depends on the ^UnitTestRoot global for the location of the unit test working folders.

There are two parameters used to set the folders:

// Base directory for unit tests
Parameter TestDirectory = "/tmp/unittest";

// sub-directory name for unit tests
Parameter TestSuite = "TEST-HL7ADT";

In this case, the class would expect the folder: /tmp/unittest/TEST-HL7ADT to exist in the environment where the unit test class is run.

Additionally, the custom implementation sets the ^UnitTestRoot global and changes to the specific namespace in the Namespace parameter.

To run from the terminal:

HSCUSTOM> do ##class(HS.Local.EG.UnitTest.TestAdtUnitTest).Debug()

The results of the run will be sprinted to the console. If any test fails, the overall test is considered failed. In addition to the terminal, you can also see the results from the management portal. Use the link from the output to open the URL.

##Snippet of Console Output

TestMessageA31 passed TestPD1LocationMapped() begins ... 14:50:20.104:...t.TestAdtUnitTest: TestPD1Location Sent LogMessage:SessionId was 130 LogMessage:Source Config Name name is :TEST.ADTTransform LogMessage:Message Body Id was 94 LogMessage:Expect Success is 0 LogMessage:Testing for value PV1:39 LogMessage:Found value AssertNotEquals:Expect No Match:TestPD1Location:ReturnValue= (failed) <<==== FAILED TEST-HL7ADT:HS.Local.EG.UnitTest.TestAdtUnitTest:TestPD1LocationMapped LogMessage:Duration of execution: .033106 sec. TestPD1LocationMapped failed HS.Local.EG.UnitTest.TestAdtUnitTest failed Skipping deleting classes TEST-HL7ADT failed

Use the following URL to view the result: http://192.168.1.229:52773/csp/sys/%25UnitTest.Portal.Indices.cls?Index=3&$NAMESPACE=EGTEST Some tests FAILED in suites: TEST-HL7ADT

##Viewing Results in the Management Portal

Use the URL displayed on the terminal and paste it into a browser to see the results. Clicking on the test name will provide additional details.

Unit Test in Management Portal

Clicking on each test link will display more information on the test:

UnitTest Results

##Conclusion Building Unit Test classes for each HL7 interface and packaging it with the interface code provides documentation of the testing process and sample data and also allows for quick regression testing of any updates or changes to the data or implementation.

Upon deployment, the Unit Test class serves as a self-contained smoke test to confirm the interface is complete and functional.

##Additional Considerations

  • The UnitTest_RuleSet framework can be adapted for CCDA unit testing. The routing tests are relatively similar to the HL7 example. To address the mapping requirements, the Unit Test class must be implemented to handle XSLT and XPaths.

  • QA resources can gather requirements and sample data to set up the Unit Test class before implementation begins.

  • Unit tests for all interfaces can be packaged together unter Unit Test Manager so that the entire package can be run at once to validate the existing configuration and code.

1
1 443
Question Gary M Lusso · Mar 5, 2025

Sample with multiple Items;

MSH|^~\&|GMRC IF CONSULT|XXX^XXXXX^DNS|GMRC IF CONSULT|YYY^^DNS|20250123175341+0000|CRNR|ORM^O01^ORM_O01|Q5808332894T6790522104|T|2.3|||State|State|USA

PID|1||1013570973V041977^^^ICN^ID~1110106796^^^EDIPI^EDIPI||PROSTEST^EHR||19760902|M||||||||||129256619|678235672

ORC|NW|15207778763^XXX^GMRCIFR|||||^^^20250123175300+0000^^R||20250123175331+0000|XXX8051652^PCP1^Physician||XXX8051652^PCP1^Physician|||20250123175341+0000||YYY

15
0 221
Question Scott Roth · Apr 9, 2025

I have a segment within a Group (grp) that needs to be validated that it is populated within the message. 

When you use a Foreach within a Business Rule how should you account for the counter in the group?

For example, Epic sends their MFN message in the following format.

MSH~MFI~[~{~MFE~STF~PRA~[~ZPR~]~[~ZLK~]~[~CER~]~[~ZMG~]~[~ZTF~]~[~ZGP~]~[~ZDD~]~}~]

so, the ZLK segment might not exist until the last MFEgrp that is in the message. I need to verify if there is an Employee ID associated with the Provider in the HL7 message before I run it through the translation.

1
0 94
Question Scott Roth · Apr 2, 2025

Trying to start investigating an error we are seeing with multiple of the same messages getting sent to the same vendor. We receive an HL7 message with an RTF embedded from our EMR, send it through a DTL to just update the Patient Class, and then send it onto the Operation which is TCP.

We are starting to see this error message...

4
0 95