Discussion:
MSH.17 parse error
(too old to reply)
Francois PIETTE
2009-09-09 09:51:14 UTC
Permalink
Hi !

My application is starting to work :-)
Now I have the following problem: I put an ADT^A01 message in the receive
location folder. It gets picked and processed by BizTalk. But there is a
problem with parsing the message. Actually MSH.17 (Country code) is not
found in value table. That's what the event log say.

The HIS use "BE" as country code. According to ISO 3166 this is the correct
country code for Belgium so I'm surprised it is not accepted since HL7
documentation say ISO 3166 is the applicable standard.

Questions:
1) Where can I see that HL7 country code table in BizTalk ?
2) How to edit the table or better make my application use a customized
table ?

I probably have the answer for question 1: In Visual Studio, I can open
MSH_25_GLO.xsd and browse it. I see MSH.17 having Base Data Type "Table399"
and I see the values. Country code are 3 letters. Belgium is probably "BEL".
I edited my test message to use "BEL" and now that error is gone, confirming
that was the problem.

I have no choice for country code. The HIS send "BE" and can't be changed.
So I have to make BizTalk accept that value. So the question 2 remains.

Any advice is appreciated.

Regards,
--
Francois Piette
http://www.overbyte.be
Daniel S
2009-09-10 15:57:39 UTC
Permalink
Hello Francois,

When you built and deployed your HL7 solution, you should have created
a set of "common" schemas for the HL7 version you are using. One of
those schemas is named something along the lines of
"tablevalues_231.xsd". This schema has the record named "Table399"
and the values which are allowed. Simply go in here, add any values
you need and redeploy the common schemas. NOTE: this will affect ALL
HL7 messages of this version...so if there are any which you do NOT
want to allow "BE", then you will need a different approach.

Thanks,
Dan
Post by Francois PIETTE
Hi !
My application is starting to work :-)
Now I have the following problem: I put an ADT^A01 message in the receive
location folder. It gets picked and processed by BizTalk. But there is a
problem with parsing the message. Actually MSH.17 (Country code) is not
found in value table. That's what the event log say.
The HIS use "BE" as country code. According to ISO 3166 this is the correct
country code for Belgium so I'm surprised it is not accepted since HL7
documentation say ISO 3166 is the applicable standard.
1) Where can I see that HL7 country code table in BizTalk ?
2) How to edit the table or better make my application use a customized
table ?
I probably have the answer for question 1: In Visual Studio, I can open
MSH_25_GLO.xsd and browse it. I see MSH.17 having Base Data Type "Table399"
and I see the values. Country code are 3 letters. Belgium is probably "BEL".
I edited my test message to use "BEL" and now that error is gone, confirming
that was the problem.
I have no choice for country code. The HIS send "BE" and can't be changed.
So I have to make BizTalk accept that value. So the question 2 remains.
Any advice is appreciated.
Regards,
--
Francois Piettehttp://www.overbyte.be
Francois PIETTE
2009-09-11 08:45:49 UTC
Permalink
Post by Daniel S
When you built and deployed your HL7 solution, you should have created
a set of "common" schemas for the HL7 version you are using. One of
those schemas is named something along the lines of
"tablevalues_231.xsd". This schema has the record named "Table399"
and the values which are allowed. Simply go in here, add any values
you need and redeploy the common schemas.
OK, thanks.
Post by Daniel S
NOTE: this will affect ALL
HL7 messages of this version...so if there are any which you do NOT
want to allow "BE", then you will need a different approach.
I'll be happy to learn that different approach to only accept "BE" from this
specific sender.

Thanks.
--
Francois Piette
http://www.overbyte.be


"Daniel S" <***@gmail.com> a écrit dans le message de news:
39d1fc06-bd2b-4f26-ad09-***@h13g2000yqk.googlegroups.com...
Hello Francois,

When you built and deployed your HL7 solution, you should have created
a set of "common" schemas for the HL7 version you are using. One of
those schemas is named something along the lines of
"tablevalues_231.xsd". This schema has the record named "Table399"
and the values which are allowed. Simply go in here, add any values
you need and redeploy the common schemas. NOTE: this will affect ALL
HL7 messages of this version...so if there are any which you do NOT
want to allow "BE", then you will need a different approach.

Thanks,
Dan
Post by Daniel S
Hi !
My application is starting to work :-)
Now I have the following problem: I put an ADT^A01 message in the receive
location folder. It gets picked and processed by BizTalk. But there is a
problem with parsing the message. Actually MSH.17 (Country code) is not
found in value table. That's what the event log say.
The HIS use "BE" as country code. According to ISO 3166 this is the correct
country code for Belgium so I'm surprised it is not accepted since HL7
documentation say ISO 3166 is the applicable standard.
1) Where can I see that HL7 country code table in BizTalk ?
2) How to edit the table or better make my application use a customized
table ?
I probably have the answer for question 1: In Visual Studio, I can open
MSH_25_GLO.xsd and browse it. I see MSH.17 having Base Data Type "Table399"
and I see the values. Country code are 3 letters. Belgium is probably "BEL".
I edited my test message to use "BEL" and now that error is gone, confirming
that was the problem.
I have no choice for country code. The HIS send "BE" and can't be changed.
So I have to make BizTalk accept that value. So the question 2 remains.
Any advice is appreciated.
Regards,
--
Francois Piettehttp://www.overbyte.be
Tom Canter - Neudesic
2009-09-10 17:10:31 UTC
Permalink
Francois,
The MSH schema is seperate from the rest of the schemas.
And, you cannot modify the schema in a lot of ways, but if this works
that is fine.
The Table399 is embedded in the schema on line 1123. Search for
"<xs:simpleType name="Table399">"
The simplest answer seems to be to edit the Table Values and add "BE"
to the list, even though it is not a valid value.

According to the HL7 documentation, the value here is the "3-
character" code to be used, the "ISO 3166-1 alpha-3 -
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" not the "ISO 3166-1
alpha-2 - http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" codes.
(from the 2.5.1 HL7 Manual)
2.15.9.17 MSH-17 Country Code (ID) 00017
Definition: This field contains the country of origin for the
message. It will be used primarily to specify default elements, such
as currency denominations. The values to be used are those of ISO
3166,. . The ISO 3166 table has three separate forms of the country
code: HL7 specifies that the 3-character (alphabetic) form be used for
the country code.
Refer to HL7 Table 0399 – Country code for the 3-character codes as
defined by ISO 3166-1.
Francois PIETTE
2009-09-11 09:00:08 UTC
Permalink
Post by Tom Canter - Neudesic
Post by Tom Canter - Neudesic
According to the HL7 documentation, the value here is the "3-
character" code to be used, the "ISO 3166-1 alpha-3 -
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" not the "ISO 3166-1
alpha-2 - http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" codes.
(from the 2.5.1 HL7 Manual)
2.15.9.17 MSH-17 Country Code (ID) 00017
Definition: This field contains the country of origin for the
message. It will be used primarily to specify default elements, such
as currency denominations. The values to be used are those of ISO
3166,. . The ISO 3166 table has three separate forms of the country
code: HL7 specifies that the 3-character (alphabetic) form be used for
the country code.
Refer to HL7 Table 0399 – Country code for the 3-character codes as
defined by ISO 3166-1.
The MSH schema is seperate from the rest of the schemas.
And, you cannot modify the schema in a lot of ways, but if this works
that is fine.
The Table399 is embedded in the schema on line 1123. Search for
"<xs:simpleType name="Table399">"
The simplest answer seems to be to edit the Table Values and add "BE"
to the list,
OK, you confirm what Daniel S told me in his message.
Post by Tom Canter - Neudesic
even though it is not a valid value.
As I said in my previous message (see quote above), I don't understand why
it is an invalid value. The HL7 documentation for HL7 V2.3.1 clearly state
ISO 3166-1 is the reference. And Belgium is listed as "BE" in ISO 3166-1.

But this is not really important. What is important is how to use another
definition for some sender, but not all senders.

This makes me think of another question: In general, if I'm not happy with
the validation BizTalk HL7 parser provide by default, how can I tell BizTalk
to ignore the validation and write my own validation rule ? I ask because my
next problem is in PV1 segment. The value received by BizTalk is not
accepted by the parser. The main BizTalk use I have is to transform messages
from various sources so that they are accepted by various destinations. I
have to accept incomming messages whatever (well to a certain extent)
special formatting is there.

FYI: My mission is currently to evaluate BizTalk to see how well it deliver
a solution for our hospital, and how easy it is to setup the solution and
manage it. Depending on the evaluation, the hospital management may approve
BizTalk or ask for another product.

Thanks for your patience,
--
Francois Piette
http://www.overbyte.be
Daniel S
2009-09-11 18:02:02 UTC
Permalink
Hello Francois,

Tom and I have worked together for many years, so I guess we would
have given you the same answer! :-)

Let me try to answer your questions and I'm sure Tom will help me out
if I miss any...

Q: how can I tell BizTalk
to ignore the validation and write my own validation rule ?
A: Easy part = turning off the BizTalk validation. Use the BTAHL7
Configuration Explorer that comes with the Accelerator, and for each
party you have configured, go to the Validation tab and uncheck the
various validation boxes. Hard part = writing your own validation. A
few ways you could do this...I would probably do this using the Rules
Engine, but it will be very time consuming.

Q: Multiple definitions for different parties?
A: In a nutshell, you need to deploy multiple "versions" of the common
schemas. This involves changing the namespaces (probably to something
which matches the party). Then, update the party, again using the
BTAHL7 Configuration Explorer, to use this namespace, and create your
HL7 schemas for this party referencing the custom common schemas.
Eric Stott has the BEST BizTalk HL7 blog, and I believe he addresses
this very topic in detail: http://blog.hl7-info.com/.

Thanks,
Dan
Post by Francois PIETTE
Post by Tom Canter - Neudesic
Post by Tom Canter - Neudesic
According to the HL7 documentation, the value here is the "3-
character" code to be used, the "ISO 3166-1 alpha-3 -
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" not the "ISO 3166-1
alpha-2 -http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" codes.
(from the 2.5.1 HL7 Manual)
2.15.9.17 MSH-17   Country Code  (ID)   00017
Definition:  This field contains the country of origin for the
message. It will be used primarily to specify default elements, such
as currency denominations. The values to be used are those of ISO
3166,. . The ISO 3166 table has three separate forms of the country
code: HL7 specifies that the 3-character (alphabetic) form be used for
the country code.
Refer to HL7 Table 0399 – Country code for the 3-character codes as
defined by ISO 3166-1.
The MSH schema is seperate from the rest of the schemas.
And, you cannot modify the schema in a lot of ways, but if this works
that is fine.
The Table399 is embedded in the schema on line 1123. Search for
"<xs:simpleType name="Table399">"
The simplest answer seems to be to edit the Table Values and add "BE"
to the list,
OK, you confirm what Daniel S told me in his message.
Post by Tom Canter - Neudesic
even though it is not a valid value.
As I said in my previous message (see quote above), I don't understand why
it is an invalid value. The HL7 documentation for HL7 V2.3.1 clearly state
ISO 3166-1 is the reference. And Belgium is listed as "BE" in ISO 3166-1.
But this is not really important. What is important is how to use another
definition for some sender, but not all senders.
This makes me think of another question: In general, if I'm not happy with
the validation BizTalk HL7 parser provide by default, how can I tell BizTalk
to ignore the validation and write my own validation rule ? I ask because my
next problem is in PV1 segment. The value received by BizTalk is not
accepted by the parser. The main BizTalk use I have is to transform messages
from various sources so that they are accepted by various destinations. I
have to accept incomming messages whatever (well to a certain extent)
special formatting is there.
FYI: My mission is currently to evaluate BizTalk to see how well it deliver
a solution for our hospital, and how easy it is to setup the solution and
manage it. Depending on the evaluation, the hospital management may approve
BizTalk or ask for another product.
Thanks for your patience,
--
Francois Piettehttp://www.overbyte.be- Hide quoted text -
- Show quoted text -
Francois PIETTE
2009-09-14 13:41:07 UTC
Permalink
Hello Daniel,

Thanks for you reply. It help a lot.
Why not having a custom version of the commons schemas and change the
validation rule there ? Once the schemas are specific to a party (as
explained by Eric Stott in his blog), I could customize the validation built
into that schema to validate the messages according to the party rules.

Regards,
--
Francois Piette
http://www.overbyte.be


"Daniel S" <***@gmail.com> a écrit dans le message de news:
95376e15-75da-4aae-921a-***@x25g2000prf.googlegroups.com...
Hello Francois,

Tom and I have worked together for many years, so I guess we would
have given you the same answer! :-)

Let me try to answer your questions and I'm sure Tom will help me out
if I miss any...

Q: how can I tell BizTalk
to ignore the validation and write my own validation rule ?
A: Easy part = turning off the BizTalk validation. Use the BTAHL7
Configuration Explorer that comes with the Accelerator, and for each
party you have configured, go to the Validation tab and uncheck the
various validation boxes. Hard part = writing your own validation. A
few ways you could do this...I would probably do this using the Rules
Engine, but it will be very time consuming.

Q: Multiple definitions for different parties?
A: In a nutshell, you need to deploy multiple "versions" of the common
schemas. This involves changing the namespaces (probably to something
which matches the party). Then, update the party, again using the
BTAHL7 Configuration Explorer, to use this namespace, and create your
HL7 schemas for this party referencing the custom common schemas.
Eric Stott has the BEST BizTalk HL7 blog, and I believe he addresses
this very topic in detail: http://blog.hl7-info.com/.

Thanks,
Dan
Post by Francois PIETTE
Post by Tom Canter - Neudesic
Post by Tom Canter - Neudesic
According to the HL7 documentation, the value here is the "3-
character" code to be used, the "ISO 3166-1 alpha-3 -
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" not the "ISO 3166-1
alpha-2 -http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" codes.
(from the 2.5.1 HL7 Manual)
2.15.9.17 MSH-17 Country Code (ID) 00017
Definition: This field contains the country of origin for the
message. It will be used primarily to specify default elements, such
as currency denominations. The values to be used are those of ISO
3166,. . The ISO 3166 table has three separate forms of the country
code: HL7 specifies that the 3-character (alphabetic) form be used for
the country code.
Refer to HL7 Table 0399 – Country code for the 3-character codes as
defined by ISO 3166-1.
The MSH schema is seperate from the rest of the schemas.
And, you cannot modify the schema in a lot of ways, but if this works
that is fine.
The Table399 is embedded in the schema on line 1123. Search for
"<xs:simpleType name="Table399">"
The simplest answer seems to be to edit the Table Values and add "BE"
to the list,
OK, you confirm what Daniel S told me in his message.
Post by Tom Canter - Neudesic
even though it is not a valid value.
As I said in my previous message (see quote above), I don't understand why
it is an invalid value. The HL7 documentation for HL7 V2.3.1 clearly state
ISO 3166-1 is the reference. And Belgium is listed as "BE" in ISO 3166-1.
But this is not really important. What is important is how to use another
definition for some sender, but not all senders.
This makes me think of another question: In general, if I'm not happy with
the validation BizTalk HL7 parser provide by default, how can I tell BizTalk
to ignore the validation and write my own validation rule ? I ask because my
next problem is in PV1 segment. The value received by BizTalk is not
accepted by the parser. The main BizTalk use I have is to transform messages
from various sources so that they are accepted by various destinations. I
have to accept incomming messages whatever (well to a certain extent)
special formatting is there.
FYI: My mission is currently to evaluate BizTalk to see how well it deliver
a solution for our hospital, and how easy it is to setup the solution and
manage it. Depending on the evaluation, the hospital management may approve
BizTalk or ask for another product.
Thanks for your patience,
--
Francois Piettehttp://www.overbyte.be- Hide quoted text -
- Show quoted text -
Francois PIETTE
2009-09-15 14:13:29 UTC
Permalink
Hello Daniel,

I have followed your advice, read Eric's blog
(http://blog.hl7-info.com/archive/2009/08/15/HL7_Best_Practices.aspx) and
I'm now able to have my own custom copy of HL7 messages. I played with an
ADT^A01 and was able to change table7 to accept other values for PV1.4.
Perfect. The input message is now parsed properly, at least I have no more
error message. I'm progressing !

But now I have another issue, probably related to my changes to messages
(wsd files). In the event log I see this error after dropping an ADT^A01
message in the receive location folder:
Error happened in body during parsing
Error # 1
Alternate Error Number: 301
Alternate Error Description: Schema
http://partner1/his/HL7/2X#ADT_A01_231_GLO_DEF not found
Alternate Encoding System: HL7-BTA

"http://partner1/his" is the value I used to replace
http://microsoft.com/HealthCare as Eric's blog stated.

The dropped message is picked up by BizTalk and remove from receive location
folder. To ACK message is generated.

In my application, I have 3 assemblies: BTAHL7V2XCommon,
CHR_HIS_HL7V231Common and CHR_HIS.
BTAHL7V2XCommon is actually an untouched assembly which is part of
"End-to-end tutorial" which comes with BTAHL7 and is installed in "BizTalk
Application 1". My own application "CHR HIS" has a reference to that
application.
CHR_HIS_HL7V231Common is where I modified the xsd files as suggested on
Eric's blog.
CHR_HIS is the application which include only ADT_A01°231_GLO_DEF segment,
modified according to Eric's Blog.
As Eric's blog state, I created a party and set schema namespace to
"http://partner1/his/HL7/2X" using BTAHL7 config explorer.

Now I get the above error message and I don't know where/what to search to
fix it.

Thank for your patience and help,
--
Francois Piette
http://www.overbyte.be


"Daniel S" <***@gmail.com> a écrit dans le message de news:
95376e15-75da-4aae-921a-***@x25g2000prf.googlegroups.com...
Hello Francois,

Tom and I have worked together for many years, so I guess we would
have given you the same answer! :-)

Let me try to answer your questions and I'm sure Tom will help me out
if I miss any...

Q: how can I tell BizTalk
to ignore the validation and write my own validation rule ?
A: Easy part = turning off the BizTalk validation. Use the BTAHL7
Configuration Explorer that comes with the Accelerator, and for each
party you have configured, go to the Validation tab and uncheck the
various validation boxes. Hard part = writing your own validation. A
few ways you could do this...I would probably do this using the Rules
Engine, but it will be very time consuming.

Q: Multiple definitions for different parties?
A: In a nutshell, you need to deploy multiple "versions" of the common
schemas. This involves changing the namespaces (probably to something
which matches the party). Then, update the party, again using the
BTAHL7 Configuration Explorer, to use this namespace, and create your
HL7 schemas for this party referencing the custom common schemas.
Eric Stott has the BEST BizTalk HL7 blog, and I believe he addresses
this very topic in detail: http://blog.hl7-info.com/.

Thanks,
Dan
Post by Francois PIETTE
Post by Tom Canter - Neudesic
Post by Tom Canter - Neudesic
According to the HL7 documentation, the value here is the "3-
character" code to be used, the "ISO 3166-1 alpha-3 -
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" not the "ISO 3166-1
alpha-2 -http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" codes.
(from the 2.5.1 HL7 Manual)
2.15.9.17 MSH-17 Country Code (ID) 00017
Definition: This field contains the country of origin for the
message. It will be used primarily to specify default elements, such
as currency denominations. The values to be used are those of ISO
3166,. . The ISO 3166 table has three separate forms of the country
code: HL7 specifies that the 3-character (alphabetic) form be used for
the country code.
Refer to HL7 Table 0399 – Country code for the 3-character codes as
defined by ISO 3166-1.
The MSH schema is seperate from the rest of the schemas.
And, you cannot modify the schema in a lot of ways, but if this works
that is fine.
The Table399 is embedded in the schema on line 1123. Search for
"<xs:simpleType name="Table399">"
The simplest answer seems to be to edit the Table Values and add "BE"
to the list,
OK, you confirm what Daniel S told me in his message.
Post by Tom Canter - Neudesic
even though it is not a valid value.
As I said in my previous message (see quote above), I don't understand why
it is an invalid value. The HL7 documentation for HL7 V2.3.1 clearly state
ISO 3166-1 is the reference. And Belgium is listed as "BE" in ISO 3166-1.
But this is not really important. What is important is how to use another
definition for some sender, but not all senders.
This makes me think of another question: In general, if I'm not happy with
the validation BizTalk HL7 parser provide by default, how can I tell BizTalk
to ignore the validation and write my own validation rule ? I ask because my
next problem is in PV1 segment. The value received by BizTalk is not
accepted by the parser. The main BizTalk use I have is to transform messages
from various sources so that they are accepted by various destinations. I
have to accept incomming messages whatever (well to a certain extent)
special formatting is there.
FYI: My mission is currently to evaluate BizTalk to see how well it deliver
a solution for our hospital, and how easy it is to setup the solution and
manage it. Depending on the evaluation, the hospital management may approve
BizTalk or ask for another product.
Thanks for your patience,
--
Francois Piettehttp://www.overbyte.be- Hide quoted text -
- Show quoted text -
Daniel S
2009-09-15 21:10:46 UTC
Permalink
Hello Francois,

What validation settings do you have configured for this party?
(BTAHL7 Config Explorer). Also, what type of ACK are you generating,
and what does the ACK contain? And finally, did you update the
namespace in your ADT A01 schema to match the new Common schema
namespace?

Thanks,
Daniel
Post by Francois PIETTE
Hello Daniel,
I have followed your advice, read Eric's blog
(http://blog.hl7-info.com/archive/2009/08/15/HL7_Best_Practices.aspx) and
I'm now able to have my own custom copy of HL7 messages. I played with an
ADT^A01 and was able to change table7 to accept other values for PV1.4.
Perfect. The input message is now parsed properly, at least I have no more
error message. I'm progressing !
But now I have another issue, probably related to my changes to messages
(wsd files).  In the event log I see this error after dropping an ADT^A01
    Error happened in body during parsing
    Error # 1
    Alternate Error Number: 301
    Alternate Error Description: Schemahttp://partner1/his/HL7/2X#ADT_A01_231_GLO_DEFnot found
    Alternate Encoding System: HL7-BTA
"http://partner1/his" is the value I used to replacehttp://microsoft.com/HealthCareas Eric's blog stated.
The dropped message is picked up by BizTalk and remove from receive location
folder. To ACK message is generated.
In my application, I have 3 assemblies: BTAHL7V2XCommon,
CHR_HIS_HL7V231Common and CHR_HIS.
BTAHL7V2XCommon is actually an untouched assembly which is part of
"End-to-end tutorial" which comes with BTAHL7 and is installed in "BizTalk
Application 1". My own application "CHR HIS" has a reference to that
application.
CHR_HIS_HL7V231Common is where I modified the xsd files as suggested on
Eric's blog.
CHR_HIS is the application which include only ADT_A01°231_GLO_DEF segment,
modified according to Eric's Blog.
As Eric's blog state, I created a party and set schema namespace to
"http://partner1/his/HL7/2X" using BTAHL7 config explorer.
Now I get the above error message and I don't know where/what to search to
fix it.
Thank for your patience and help,
--
Francois Piettehttp://www.overbyte.be
Hello Francois,
Tom and I have worked together for many years, so I guess we would
have given you the same answer! :-)
Let me try to answer your questions and I'm sure Tom will help me out
if I miss any...
Q: how can I tell BizTalk
to ignore the validation and write my own validation rule ?
A: Easy part = turning off the BizTalk validation.  Use the BTAHL7
Configuration Explorer that comes with the Accelerator, and for each
party you have configured, go to the Validation tab and uncheck the
various validation boxes.  Hard part = writing your own validation.  A
few ways you could do this...I would probably do this using the Rules
Engine, but it will be very time consuming.
Q: Multiple definitions for different parties?
A: In a nutshell, you need to deploy multiple "versions" of the common
schemas.  This involves changing the namespaces (probably to something
which matches the party).  Then, update the party, again using the
BTAHL7 Configuration Explorer, to use this namespace, and create your
HL7 schemas for this party referencing the custom common schemas.
Eric Stott has the BEST BizTalk HL7 blog, and I believe he addresses
this very topic in detail:http://blog.hl7-info.com/.
Thanks,
Dan
Post by Francois PIETTE
Post by Tom Canter - Neudesic
Post by Tom Canter - Neudesic
According to the HL7 documentation, the value here is the "3-
character" code to be used, the "ISO 3166-1 alpha-3 -
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" not the "ISO 3166-1
alpha-2 -http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" codes.
(from the 2.5.1 HL7 Manual)
2.15.9.17 MSH-17 Country Code (ID) 00017
Definition: This field contains the country of origin for the
message. It will be used primarily to specify default elements, such
as currency denominations. The values to be used are those of ISO
3166,. . The ISO 3166 table has three separate forms of the country
code: HL7 specifies that the 3-character (alphabetic) form be used for
the country code.
Refer to HL7 Table 0399 – Country code for the 3-character codes as
defined by ISO 3166-1.
The MSH schema is seperate from the rest of the schemas.
And, you cannot modify the schema in a lot of ways, but if this works
that is fine.
The Table399 is embedded in the schema on line 1123. Search for
"<xs:simpleType name="Table399">"
The simplest answer seems to be to edit the Table Values and add "BE"
to the list,
OK, you confirm what Daniel S told me in his message.
Post by Tom Canter - Neudesic
even though it is not a valid value.
As I said in my previous message (see quote above), I don't understand why
it is an invalid value. The HL7 documentation for HL7 V2.3.1 clearly state
ISO 3166-1 is the reference. And Belgium is listed as "BE" in ISO 3166-1.
But this is not really important. What is important is how to use another
definition for some sender, but not all senders.
This makes me think of another question: In general, if I'm not happy with
the validation BizTalk HL7 parser provide by default, how can I tell BizTalk
to ignore the validation and write my own validation rule ? I ask because my
next problem is in PV1 segment. The value received by BizTalk is not
accepted by the parser. The main BizTalk use I have is to transform messages
from various sources so that they are accepted by various destinations. I
have to accept incomming messages whatever (well to a certain extent)
special formatting is there.
FYI: My mission is currently to evaluate BizTalk to see how well it deliver
a solution for our hospital, and how easy it is to setup the solution and
manage it. Depending on the evaluation, the hospital management may approve
BizTalk or ask for another product.
Thanks for your patience,
--
Francois Piettehttp://www.overbyte.be-Hide quoted text -
- Show quoted text -- Hide quoted text -
- Show quoted text -
Francois PIETTE
2009-09-16 07:05:09 UTC
Permalink
Hello Daniel,
Post by Daniel S
What validation settings do you have configured for this party?
Validate body segment: checked
Validate custom datatypes: unchecked
Allow trailing delimiters: checked
Schema namespace: http://partner1/his/HL7/2X
Post by Daniel S
Also, what type of ACK are you generating,
Original mode
Post by Daniel S
and what does the ACK contain?
No ACK is generated by BizTalk
Post by Daniel S
And finally, did you update the namespace in your ADT A01 schema
to match the new Common schema namespace?
Yes, I edited ADT_A01_231_GLO_DEF.xsd in my CHR_HIS project and replaced all
occurences of http://microsoft.com/HealthCare by "http://partner1/his".
After change, generated and deployed CHR_HIS.

Regards,
--
Francois Piette
http://www.overbyte.be


"Daniel S" <***@gmail.com> a écrit dans le message de news:
3ed11e32-d06f-4ce3-9e0a-***@d21g2000vbm.googlegroups.com...
Hello Francois,

What validation settings do you have configured for this party?
(BTAHL7 Config Explorer). Also, what type of ACK are you generating,
and what does the ACK contain? And finally, did you update the
namespace in your ADT A01 schema to match the new Common schema
namespace?

Thanks,
Daniel
Post by Daniel S
Hello Daniel,
I have followed your advice, read Eric's blog
(http://blog.hl7-info.com/archive/2009/08/15/HL7_Best_Practices.aspx) and
I'm now able to have my own custom copy of HL7 messages. I played with an
ADT^A01 and was able to change table7 to accept other values for PV1.4.
Perfect. The input message is now parsed properly, at least I have no more
error message. I'm progressing !
But now I have another issue, probably related to my changes to messages
(wsd files). In the event log I see this error after dropping an ADT^A01
Error happened in body during parsing
Error # 1
Alternate Error Number: 301
Schemahttp://partner1/his/HL7/2X#ADT_A01_231_GLO_DEFnot found
Alternate Encoding System: HL7-BTA
"http://partner1/his" is the value I used to replace
http://microsoft.com/HealthCare as Eric's blog stated.
The dropped message is picked up by BizTalk and remove from receive location
folder. To ACK message is generated.
In my application, I have 3 assemblies: BTAHL7V2XCommon,
CHR_HIS_HL7V231Common and CHR_HIS.
BTAHL7V2XCommon is actually an untouched assembly which is part of
"End-to-end tutorial" which comes with BTAHL7 and is installed in "BizTalk
Application 1". My own application "CHR HIS" has a reference to that
application.
CHR_HIS_HL7V231Common is where I modified the xsd files as suggested on
Eric's blog.
CHR_HIS is the application which include only ADT_A01°231_GLO_DEF segment,
modified according to Eric's Blog.
As Eric's blog state, I created a party and set schema namespace to
"http://partner1/his/HL7/2X" using BTAHL7 config explorer.
Now I get the above error message and I don't know where/what to search to
fix it.
Thank for your patience and help,
--
Francois Piettehttp://www.overbyte.be
Hello Francois,
Tom and I have worked together for many years, so I guess we would
have given you the same answer! :-)
Let me try to answer your questions and I'm sure Tom will help me out
if I miss any...
Q: how can I tell BizTalk
to ignore the validation and write my own validation rule ?
A: Easy part = turning off the BizTalk validation. Use the BTAHL7
Configuration Explorer that comes with the Accelerator, and for each
party you have configured, go to the Validation tab and uncheck the
various validation boxes. Hard part = writing your own validation. A
few ways you could do this...I would probably do this using the Rules
Engine, but it will be very time consuming.
Q: Multiple definitions for different parties?
A: In a nutshell, you need to deploy multiple "versions" of the common
schemas. This involves changing the namespaces (probably to something
which matches the party). Then, update the party, again using the
BTAHL7 Configuration Explorer, to use this namespace, and create your
HL7 schemas for this party referencing the custom common schemas.
Eric Stott has the BEST BizTalk HL7 blog, and I believe he addresses
this very topic in detail:http://blog.hl7-info.com/.
Thanks,
Dan
Post by Francois PIETTE
Post by Tom Canter - Neudesic
Post by Tom Canter - Neudesic
According to the HL7 documentation, the value here is the "3-
character" code to be used, the "ISO 3166-1 alpha-3 -
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" not the "ISO 3166-1
alpha-2 -http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" codes.
(from the 2.5.1 HL7 Manual)
2.15.9.17 MSH-17 Country Code (ID) 00017
Definition: This field contains the country of origin for the
message. It will be used primarily to specify default elements, such
as currency denominations. The values to be used are those of ISO
3166,. . The ISO 3166 table has three separate forms of the country
code: HL7 specifies that the 3-character (alphabetic) form be used for
the country code.
Refer to HL7 Table 0399 – Country code for the 3-character codes as
defined by ISO 3166-1.
The MSH schema is seperate from the rest of the schemas.
And, you cannot modify the schema in a lot of ways, but if this works
that is fine.
The Table399 is embedded in the schema on line 1123. Search for
"<xs:simpleType name="Table399">"
The simplest answer seems to be to edit the Table Values and add "BE"
to the list,
OK, you confirm what Daniel S told me in his message.
Post by Tom Canter - Neudesic
even though it is not a valid value.
As I said in my previous message (see quote above), I don't understand why
it is an invalid value. The HL7 documentation for HL7 V2.3.1 clearly state
ISO 3166-1 is the reference. And Belgium is listed as "BE" in ISO 3166-1.
But this is not really important. What is important is how to use another
definition for some sender, but not all senders.
This makes me think of another question: In general, if I'm not happy with
the validation BizTalk HL7 parser provide by default, how can I tell BizTalk
to ignore the validation and write my own validation rule ? I ask
because
my
next problem is in PV1 segment. The value received by BizTalk is not
accepted by the parser. The main BizTalk use I have is to transform messages
from various sources so that they are accepted by various destinations. I
have to accept incomming messages whatever (well to a certain extent)
special formatting is there.
FYI: My mission is currently to evaluate BizTalk to see how well it deliver
a solution for our hospital, and how easy it is to setup the solution and
manage it. Depending on the evaluation, the hospital management may approve
BizTalk or ask for another product.
Thanks for your patience,
--
Francois Piettehttp://www.overbyte.be-Hide quoted text -
- Show quoted text -- Hide quoted text -
- Show quoted text -
Ajeesh
2009-10-01 09:19:01 UTC
Permalink
Hey Tom thanks. ur solution works.

So the MSH schema stores its table values in the same file as the schema
file. And if you want to add a value, add it here.
Post by Daniel S
Francois,
The MSH schema is seperate from the rest of the schemas.
And, you cannot modify the schema in a lot of ways, but if this works
that is fine.
The Table399 is embedded in the schema on line 1123. Search for
"<xs:simpleType name="Table399">"
The simplest answer seems to be to edit the Table Values and add "BE"
to the list, even though it is not a valid value.
According to the HL7 documentation, the value here is the "3-
character" code to be used, the "ISO 3166-1 alpha-3 -
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3" not the "ISO 3166-1
alpha-2 - http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" codes.
(from the 2.5.1 HL7 Manual)
2.15.9.17 MSH-17 Country Code (ID) 00017
Definition: This field contains the country of origin for the
message. It will be used primarily to specify default elements, such
as currency denominations. The values to be used are those of ISO
3166,. . The ISO 3166 table has three separate forms of the country
code: HL7 specifies that the 3-character (alphabetic) form be used for
the country code.
Refer to HL7 Table 0399 – Country code for the 3-character codes as
defined by ISO 3166-1.
Loading...