Question

We have a pretty complex BizTalk interface which uses the HL7 accelerator.

We use a canonical schema which can contain one of several types of transactions from our main patient administration system which we then map into HL7 messages for our target application.

The orchestration uses a scripting shape to call a map dynamically based on the type of transaction that was received and some other criteria.

There are around 20 different maps that could be called and many of them share common HL7 segments. For example, most of them map patient identification data across to the HL7 PID segment.

The PID mapping is done with a single scripting functoid using inline XSLT. When I asked why it was done in this way, the answer given was:

"Because the PID segment is in multiple maps, if we need to update the mapping we can simply copy and paste the XSLT to the other maps rather than fiddling with many separate functoids."

I just found a bug in the PID mapping and had to fix the XSLT in one map, then copy it to 20 other maps. This was very time consuming and completely goes against the DRY principle.

Is there a way in BizTalk of sharing XSLT across multiple maps? I want to specify it once and call it multiple times.

Was it helpful?

Solution

Have you tried building a library with this shared XSLT in it? Call it using a scripting functoid with a script type of External Assembly, then you could share that assembly among many maps without having to rewrite it all those places.

OTHER TIPS

If its the same in every map, call a single map after the dynamic map from your orchestration or call the xslt directly from the orchestration.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top