Thanks, Marc. This sounds similar to post https://community.intersystems.com/post/how-avoid-truncation-hl7-message...

So if I'm understanding this correctly, streams theoretically have no max size, and even with large strings enabled we would still need to look into building custom classes that access the raw untruncated stream via OutputTo* and possibly also need to use the [Get/Store]FieldStreamRaw methods for processing large messages. Correct?

Thanks, Jenny. I posted the solution to my problem.

 

The documentation did state certain fields could not be null, but couldn't find which specific ones it was referring to. I think it may vary depending upon which fields are being populated. All I know for sure for CareProvider is Code or Description are needed when trying to specify Name and ContactInfo. 

Those extra dots are needed when going to HS.SDA3.Container as target in DTL. I don't know why that is but it won't work without them.

 

But found out what the issue was. I was missing other required CareProvider fields.

 

In order for any of the target.Appointments.(1).CareProvider.Name.* and target.Appointments.(1).CareProvider.ContactInfo.* fields to populate, target.Appointments.(1).CareProvider.Code and or target.Appointments.(1).CareProvider.Description must also be specified and cannot be null.

The DTL will successfully place the CareProvider info in the target message, but the ToQuickXMLStream() method will drop the CareProvider fields if both of the required fields are missing.  Which is why the message going outbound to the business operation was missing all the CareProvider fields. At least one of those fields need to be present.

 

Once CareProvider.Code or CareProvider.Description was specified, the XML Stream to the outbound TCP business operation had all the expected CareProvider SDA data.