Discussion:
HL7 Flat file to HL7 Flat File
(too old to reply)
Michael
2008-12-09 04:01:01 UTC
Permalink
hi,

I have a simple scenario which receives HL7 flat file with two subscriptions.
The MLLP receive port use custom HL7 receive pipeline do some data
manipulation, also validate the HL7 data. Two send ports subscribe it, one
with transformation, the other one without. Both output need to be HL7 Flat
Files stored at different folders.
I used pass thru and I got HL7 message in XML, but that's not what I want.
How to configure the send pipeline to accomplish this?

Thx
Michael J.
Howard Siegel
2008-12-09 17:26:49 UTC
Permalink
Post by Michael
I have a simple scenario which receives HL7 flat file with two
subscriptions. The MLLP receive port use custom HL7 receive pipeline
do some data manipulation, also validate the HL7 data. Two send ports
subscribe it, one with transformation, the other one without. Both
output need to be HL7 Flat Files stored at different folders.
I used pass thru and I got HL7 message in XML, but that's not what I
want. How to configure the send pipeline to accomplish this?
Assuming that the XML you have generated and to which the send
ports are subscribed is valid for an HL7 message, you will need
to build "custom" send pipelines that have nothing in them but
the standard HL7 assembler component as provided by Microsoft
with the HL7 Accelerator. Your pipelines can then deliver the
HL7 formatted data to the 2 different output files.

BTW, you should probably configure your 2 send ports in to a
single send port group, if you haven't already.

- h
Michael
2008-12-10 04:04:00 UTC
Permalink
hi Howard,

Do you mean that a custom send pipeline with HL7 Assembler is needed to
generate the HL7 pipe-and-had flat file format output?

To clarify my previous post. Current process works fine without error. All
the output are valid HL7 message, but in XML format. However, the requirement
is to generate HL7 pipe-and-hat flat text file format for down stream
processes. As I mentioned, one of the send port actually doesn't even do
anything but pass along from receive port(with data manipulation) straight to
send port; the other does have transformation in send port.

Michael J.
Post by Howard Siegel
Post by Michael
I have a simple scenario which receives HL7 flat file with two
subscriptions. The MLLP receive port use custom HL7 receive pipeline
do some data manipulation, also validate the HL7 data. Two send ports
subscribe it, one with transformation, the other one without. Both
output need to be HL7 Flat Files stored at different folders.
I used pass thru and I got HL7 message in XML, but that's not what I
want. How to configure the send pipeline to accomplish this?
Assuming that the XML you have generated and to which the send
ports are subscribed is valid for an HL7 message, you will need
to build "custom" send pipelines that have nothing in them but
the standard HL7 assembler component as provided by Microsoft
with the HL7 Accelerator. Your pipelines can then deliver the
HL7 formatted data to the 2 different output files.
BTW, you should probably configure your 2 send ports in to a
single send port group, if you haven't already.
- h
Howard Siegel
2008-12-10 07:21:53 UTC
Permalink
Post by Michael
hi Howard,
Do you mean that a custom send pipeline with HL7 Assembler is needed
to generate the HL7 pipe-and-had flat file format output?
To clarify my previous post. Current process works fine without error.
All the output are valid HL7 message, but in XML format. However, the
requirement is to generate HL7 pipe-and-hat flat text file format for
down stream processes. As I mentioned, one of the send port actually
doesn't even do anything but pass along from receive port(with data
manipulation) straight to send port; the other does have
transformation in send port.
Michael J.
Yes. When you use the bypass pipeline, all it does is take the
XML message it receives and drops the XML to whatever destination
is specified, in your case a file. You need a pipeline that will
actually convert the XML back to HL7 format. You can do that with
the standard HL7 pipeline or with a custom pipeline that contains
only the HL7 Assembler component.

In the case where you are manipulating the data in a custom send
pipeline, you'll also need the HL7 Assembler component in addition
to your custom pipeline component(s), or again, the send port will
just push the XML comprising the message out to the whatever
destination is specified.

The Dissembler stage of a receive pipeline is responsible for
converting the incoming message format in to XML. The Assembler
state of the send pipeline is responsible for converting XML to
the required format for the outgoing message. If you use the
Bypass Pipeline or a custom pipeline that does not contain
a Disassembler component(for a receive pipeline) or an Assembler
component (for a send pipeline), then you are saying that the
external format is XML, either on input or upon output.

- h
Michael
2008-12-10 17:04:21 UTC
Permalink
hi Howard,

Isn't that default HL7 "BTAHL72XSendPipeline" supposed to generate HL7
pipe-and-hat flat text file format output? Why need custom send pipeline?
In my case, a custom HL7 schema with custom namespace and z-segment are
used. I assume default HL7 "BTAHL72XSendPipeline" can interpret it, correct?

By the way, correction, in my case, the data manipuate was happening in
Receive side.

Thx,
Michael J.
Post by Howard Siegel
Post by Michael
hi Howard,
Do you mean that a custom send pipeline with HL7 Assembler is needed
to generate the HL7 pipe-and-had flat file format output?
To clarify my previous post. Current process works fine without error.
All the output are valid HL7 message, but in XML format. However, the
requirement is to generate HL7 pipe-and-hat flat text file format for
down stream processes. As I mentioned, one of the send port actually
doesn't even do anything but pass along from receive port(with data
manipulation) straight to send port; the other does have
transformation in send port.
Michael J.
Yes. When you use the bypass pipeline, all it does is take the
XML message it receives and drops the XML to whatever destination
is specified, in your case a file. You need a pipeline that will
actually convert the XML back to HL7 format. You can do that with
the standard HL7 pipeline or with a custom pipeline that contains
only the HL7 Assembler component.
In the case where you are manipulating the data in a custom send
pipeline, you'll also need the HL7 Assembler component in addition
to your custom pipeline component(s), or again, the send port will
just push the XML comprising the message out to the whatever
destination is specified.
The Dissembler stage of a receive pipeline is responsible for
converting the incoming message format in to XML. The Assembler
state of the send pipeline is responsible for converting XML to
the required format for the outgoing message. If you use the
Bypass Pipeline or a custom pipeline that does not contain
a Disassembler component(for a receive pipeline) or an Assembler
component (for a send pipeline), then you are saying that the
external format is XML, either on input or upon output.
- h
Howard Siegel
2008-12-11 07:08:52 UTC
Permalink
Post by Michael
hi Howard,
Isn't that default HL7 "BTAHL72XSendPipeline" supposed to generate HL7
pipe-and-hat flat text file format output? Why need custom send
pipeline? In my case, a custom HL7 schema with custom namespace and
z-segment are used. I assume default HL7 "BTAHL72XSendPipeline" can
interpret it, correct?
Yes, the default HL7 send pipeline will generate the "pipe-and-hat"
flat text format. You would only need a custom pipeline it you wanted
to manipulate the XML before the the XML-to-pipe-and-hat conversion
or to manipulate the pipe-and-hat format text before it is actually
pushed out to the output destination.

If you are absolutely sure that you will never need to do any of that,
use the default pipeline. If you think you may need to do some custom
processing in the send pipeline, then I would use a custom pipeline,
even if it only has the HL7 Assembler component in it to start. It
just makes things easier in source code control if there is already
something there as a placeholder that needs to be updated rather than
having to create it after the fact. But that is just me and how I tend
to do things. You can do whatever you are most comfortable with.

- h
Michael
2008-12-16 05:39:01 UTC
Permalink
hi Howard,

I have no luck in using both defaul HL7 BTAHL72XSendPipeline and the custom
one you suggested to generate the outbound HL7 flat file. There was a
failure executing the send pipeline... The reason is "Serialization Error" in
few segments which contains custom complex type child-record elements. It
appears the the HL72X Assembler was unable to properly recognize/parse the
custom HL7 XML message from message box, reverse-engineer to flat file
pipe-and-hat format in pipeline, and outbound to destination location.

If I change send pipeline in the Send port configuration back to
pass-through, the output is the HL7 XML format as it is presented inside the
MessageBox.

Somehow the custom receive pipeline (using BTAHL72XReceivePipeline) is able
to recognize the custom HL7 schema using BTAHL72XReceive, but not in send
pipeline regardless of using default BTAHL72XSendpipeline or custom send
pipeline with BTAHL72X Assember. I am not aware where to configure the
pipeline to specific custom HL7 schema. Do I miss anything? Any suggestion?

Thanks in advance,
Michael
Post by Howard Siegel
Post by Michael
hi Howard,
Isn't that default HL7 "BTAHL72XSendPipeline" supposed to generate HL7
pipe-and-hat flat text file format output? Why need custom send
pipeline? In my case, a custom HL7 schema with custom namespace and
z-segment are used. I assume default HL7 "BTAHL72XSendPipeline" can
interpret it, correct?
Yes, the default HL7 send pipeline will generate the "pipe-and-hat"
flat text format. You would only need a custom pipeline it you wanted
to manipulate the XML before the the XML-to-pipe-and-hat conversion
or to manipulate the pipe-and-hat format text before it is actually
pushed out to the output destination.
If you are absolutely sure that you will never need to do any of that,
use the default pipeline. If you think you may need to do some custom
processing in the send pipeline, then I would use a custom pipeline,
even if it only has the HL7 Assembler component in it to start. It
just makes things easier in source code control if there is already
something there as a placeholder that needs to be updated rather than
having to create it after the fact. But that is just me and how I tend
to do things. You can do whatever you are most comfortable with.
- h
Howard Siegel
2008-12-16 16:01:09 UTC
Permalink
Post by Michael
hi Howard,
I have no luck in using both defaul HL7 BTAHL72XSendPipeline and the
custom one you suggested to generate the outbound HL7 flat file.
There was a failure executing the send pipeline... The reason is
"Serialization Error" in few segments which contains custom complex
type child-record elements. It appears the the HL72X Assembler was
unable to properly recognize/parse the custom HL7 XML message from
message box, reverse-engineer to flat file pipe-and-hat format in
pipeline, and outbound to destination location.
That was one of the issues I mentioned in on of my replies.
I fyou have modified the XML so that it is non standard then
you will have problems trying to turn it back in to HL7 format
without creating custom HL7 schemas for you messages. I'm
sure why the receive pipeline did not also throw an exception
if it was getting non-standard messages.

Unfortunately, you'll need more help than I can give at this
point as I've been out of the game for a while.

- h
Michael
2008-12-16 21:53:18 UTC
Permalink
hi Howard,

The issue has resoved by changing the party configuration to match the MSH.
Thanks for the great help along the way. I have leanrd from your insight.

Michael J.
Post by Howard Siegel
Post by Michael
hi Howard,
I have no luck in using both defaul HL7 BTAHL72XSendPipeline and the
custom one you suggested to generate the outbound HL7 flat file.
There was a failure executing the send pipeline... The reason is
"Serialization Error" in few segments which contains custom complex
type child-record elements. It appears the the HL72X Assembler was
unable to properly recognize/parse the custom HL7 XML message from
message box, reverse-engineer to flat file pipe-and-hat format in
pipeline, and outbound to destination location.
That was one of the issues I mentioned in on of my replies.
I fyou have modified the XML so that it is non standard then
you will have problems trying to turn it back in to HL7 format
without creating custom HL7 schemas for you messages. I'm
sure why the receive pipeline did not also throw an exception
if it was getting non-standard messages.
Unfortunately, you'll need more help than I can give at this
point as I've been out of the game for a while.
- h
Aun Ali
2010-03-19 20:04:08 UTC
Permalink
i am having the same issue i wan to send data with Z segment =

when text file is created msg header and and body is pipedelimated but Z segment is Xml=
formate what should i do
//////////////////////////////////////
MSH|^~\&|HIS^OPMS|HIS^AKU|Varian^HLSEVEN|Varain^HLSEVEN|201003192351|se=
c|ADT^A01|1|P|2.3.1
EVN|A01|20100319
PID|||1||ali^AunAli^Aun||19810306|M
=EF=BB=BF<ns0:ZPS xmlns:ns0=3D"http://BTAHL7_TestProj123.ZFlatFileSchema=
test123"><ZPS.1>Aun</ZPS.1><ZPS.2>ali</ZPS.2></ns0:ZPS>

url:http://www.ureader.com/msg/1202439.aspx

Michael
2008-12-16 05:39:01 UTC
Permalink
hi Howard,

I have no luck in using both defaul HL7 BTAHL72XSendPipeline and the custom
one you suggested to generate the outbound HL7 flat file. There was a
failure executing the send pipeline... The reason is "Serialization Error" in
few segments which contains custom complex type child-record elements. It
appears the the HL72X Assembler was unable to properly recognize/parse the
custom HL7 XML message from message box, reverse-engineer to flat file
pipe-and-hat format in pipeline, and outbound to destination location.

If I change send pipeline in the Send port configuration back to
pass-through, the output is the HL7 XML format as it is presented inside the
MessageBox.

Somehow the custom receive pipeline (using BTAHL72XReceivePipeline) is able
to recognize the custom HL7 schema using BTAHL72XReceive, but not in send
pipeline regardless of using default BTAHL72XSendpipeline or custom send
pipeline with BTAHL72X Assember. I am not aware where to configure the
pipeline to specific custom HL7 schema. Do I miss anything? Any suggestion?

Thanks in advance,
Michael
Post by Howard Siegel
Post by Michael
hi Howard,
Isn't that default HL7 "BTAHL72XSendPipeline" supposed to generate HL7
pipe-and-hat flat text file format output? Why need custom send
pipeline? In my case, a custom HL7 schema with custom namespace and
z-segment are used. I assume default HL7 "BTAHL72XSendPipeline" can
interpret it, correct?
Yes, the default HL7 send pipeline will generate the "pipe-and-hat"
flat text format. You would only need a custom pipeline it you wanted
to manipulate the XML before the the XML-to-pipe-and-hat conversion
or to manipulate the pipe-and-hat format text before it is actually
pushed out to the output destination.
If you are absolutely sure that you will never need to do any of that,
use the default pipeline. If you think you may need to do some custom
processing in the send pipeline, then I would use a custom pipeline,
even if it only has the HL7 Assembler component in it to start. It
just makes things easier in source code control if there is already
something there as a placeholder that needs to be updated rather than
having to create it after the fact. But that is just me and how I tend
to do things. You can do whatever you are most comfortable with.
- h
Loading...