Eric’s BizTalk 2004/2006 Blog

My BizTalk Experiences using Flat Files, InfoPath, BAM, BRE, BAS, HL7, HIPAA, WSS.

July 6, 2006

Installation of HL7 Accelerator

Filed under: BizTalk, HL7 — eric @ 5:31 am

This is a gotcha that is hard to figure out, especially if you are trying to install and don’t have the documentation in front of you, because it is trying to install it!

In the documentation, it states:

Log on using an account that is a member of the BizTalk Server Administrators group.

Note  This user account must also be a member of the Administrators group on the SQL Server in which you will store BTAHL7 data.

This is normally an issue when you install it and it states: ‘The Specified account “###/###” is
invalid. Error code: Logon Failure: unknown user name or bad password.’

June 27, 2006

MLLP Send Test Tool

Filed under: BizTalk, HL7 — eric @ 12:27 am

I am not sure if you are as lazy as I am, but I have really gotten tired of typing all of the command line parameters to test a file using the MLLP adapter.
I finally got off my lazy arse, and created a shortcut.
1. I went into the enviornment properties of My Computer and added the {path}HL7\SDK\Utilities\ to the Path, so I did not have to specify the path to the mllpsend.exe
2. I created a batch file (submit.cmd) that is simply two lines:
mllpsend /SB 11 /EB 28 /CR 13 /twoway /f %1
pause
3. I then went to Tool -> Folder Options -> File Types and found .TXT files and clicked on Advanced
4. Added an item called mllpsend and the application used to perform is “{path}\submit.cmd” “%1″

Now every time I right click a .txt file I have the ability to send it to the MLLP adapter.

Hope that this helps you as much as it does me!

May 15, 2006

Sorry

Filed under: BizTalk, HL7 — eric @ 3:39 pm

My site was down for a few days, it seems that y’all love it so much, I exceeded my bandwidth for the month, so my hosting company locked it down.

I have upgraded my account so I can keep the site up.

I am not sure that you have seen this, but this is some cool information about MOM and HL7 that I just came across.

May 9, 2006

Custom HL7 Trigger Events

Filed under: BizTalk, HL7 — eric @ 1:01 am

I had forgot that a while ago, I had to create a custom HL7 message, and I saw a question on the forum asking how you can do it.

Here are the steps: (All modifications take place in both the MSH_24_GLO_DEF and the tablevalues.xsd). In this example I am creating a ZZZ^Z01 message;

  1. Edit Table76 and add the message type (add an enumeration) by editing the schema in a text editor:(in my case ZZZ)
    CustomTrigger1.JPG
  2. Edit Table3 to represent the trigger:(in my case Z01)
    CustomTrigger3.JPG
  3. Edit the Table354 that represents the Message_Trigger: (in my case ZZZ_Z01)
    CustomTrigger3.JPG
  4. Finally create your schema with the roon node that follows the following algorithm: Body schema type = TargetNS + “#” + MSH9.1 + MSH9.2 + MSH12.1 (with dots removed) + MSH12.2 (or GLO if the value is blank) + MSH12.3 (or DEF if the value is blank), and don’t forget to make sure that the target namespace of the schema matches what you have defined in the BTAHL7 Configuration Explorer
    CustomTrigger4.JPG

 

And finally, here is a sample.

May 4, 2006

MLLP Adapter behavior - pipeline component development

Filed under: BizTalk, HL7 — eric @ 7:47 pm

One little documented behavior of the MLLP adapter is that it is a streaming adapter. The implications are that if you are developing custom pipeline components, you need to make sure that you stay away from reading the Length of the Stream. What should be done is your pipeline component should read the stream completely before doing it’s ‘work.’ (Loop till Read method returns 0).

I have included this VB and this C# example to look at.

I want to thank support for this bit of info!

April 18, 2006

Case of the Missing acknowledgment

Filed under: BizTalk, HL7 — eric @ 10:36 pm

It seems that every client that I assist in implementing HL7, we get to testing the process and we send in an ADT, ORM, ORU, or some other message and we wait for the automated acknowledment, but it never comes.

I then remember that unless I have MLLP version 1.0.308.0, and 1.0.309.0 (current) of Microsoft.solutions.btahl7.mllp.dll I better camp out for a while, while I know it states that it can take up to 10 seconds to get the ack, I have gone to lunch and come back with no response. I even heard that there is a 24 hr delay. So make sure that you have the following patches from Microsoft for the HL7 adapter.

  • KB893369: HL7 Interrogative transactions may take 10 or more seconds to complete when MLLP synchronizes communications end-to-end
  • KB893404: The BizTalk Accelerator for HL7 sends an acknowledgement message to the source system after a long delay

Don’t forget to follow the post installation instruction on getting the send adapter to be a solicit/response as documented here.  

April 7, 2006

MLLP Port Definition and Invoking Test Tool

Filed under: BizTalk, HL7 — eric @ 1:02 pm

In the BizTalk HL7 accelerator, you set up the port definition and assign the delimiters in HEX, but then if you are going to test it using the MLLP Send test tool, you have to use the Decimal equivalent. I am surprised that they did not include the following table as part of the documentation.

Also, one of the things not clearly explained is the promoted property DoorbellFinalMessage(BTAHL7Schemas.MSH1) = 124; this is the decimal version of |

 
DOS
Port
Char/Description
0
00
null
1
01
start of heading
2
02
start of text
3
03
end of text
4
04
end of transmission
5
05
enquiry
6
06
acknowledge
7
07
bell
8
08
backspace
9
09
horizontal tab
10
0A
new line
11
0B
vertical tab
12
0C
new page
13
0D
carriage return
14
0E
shift out
15
0F
shift in
16
10
data link escape
17
11
device control 1
18
12
device control 2
19
13
device control 3
20
14
device control 4
21
15
negative acknowledge
22
16
synchronous idle
23
17
end of trans. block
24
18
cancel
25
19
end of medium
26
1A
substitute
27
1B
escape
28
1C
file separator
29
1D
group separator
30
1E
record separator
31
1F
unit separator
32
20
space
33
21
!
34
22

35
23
#
36
24
$
37
25
%
38
26
&
39
27

40
28
(
41
29
)
42
2A
*
43
2B
+
44
2C
,
45
2D
-
46
2E
.
47
2F
/
48
30
0
49
31
1
50
32
2
51
33
3
52
34
4
53
35
5
54
36
6
55
37
7
56
38
8
57
39
9
58
3A
:
59
3B
;
60
3C
<
61
3D
=
62
3E
>
63
3F
?
64
40
@
65
41
A
66
42
B
67
43
C
68
44
D
69
45
E
70
46
F
71
47
G
72
48
H
73
49
I
74
4A
J
75
4B
K
76
4C
L
77
4D
M
78
4E
N
79
4F
O
80
50
P
81
51
Q
82
52
R
83
53
S
84
54
T
85
55
U
86
56
V
87
57
W
88
58
X
89
59
Y
90
5A
Z
91
5B
[
92
5C
\
93
5D
]
94
5E
^
95
5F
_
96
60
`
97
61
a
98
62
b
99
63
c
100
64
d
101
65
e
102
66
f
103
67
g
104
68
h
105
69
i
106
6A
j
107
6B
k
108
6C
l
109
6D
m
110
6E
n
111
6F
o
112
70
p
113
71
q
114
72
r
115
73
s
116
74
t
117
75
u
118
76
v
119
77
w
120
78
x
121
79
y
122
7A
z
123
7B
{
124
7C
|
125
7D
}
126
7E
~
127
7F
DEL

April 6, 2006

Understanding how BizTalk handles HL7 Acknowledgments

Filed under: BizTalk, HL7 — eric @ 9:14 pm

Inside of the Hl7 Configuration Explorer, the tab for Acknowledgments, most of the fields in there were foreign when I first started dealing with HL7, so below is a list of the values and what they mean.

Acknowedgment Type:

None
Select this if you do not want to configure any acknowledgements. This does not mean that it will turn off acknowledgments if the message comes in with MSH 15 with anything other than NE. In that case the pipeline will create an acknowledgment regardless.
Original
Select this option to override
MSH1 – Field Separator
MSH2 – Encoding Characters
MSH3 – Sender Identifiers
MSH5 – Receiver Identifiers
MSH8 – Security options only
Enhanced
Select this option to override all available acknowledgement options.   

AL
Select this option if you always want to send acknowledgements.
NE
Select this option if you never want to send acknowledgements.
SU
Select this option if you want to send acknowledgements after a successful transmission of a message.
ER
Select this option if you want to send acknowledgements only in the event of an error.

MSH1 – Field Separator
MSH2 – Encoding Characters
MSH3 – Sender Identifiers
MSH5 – Receiver Identifiers
MSH8 – Security options only

Deferred
Select this option to override
MSH1 – Field Separator
MSH2 – Encoding Characters
MSH3 – Sender Identifiers
MSH5 – Receiver Identifiers
MSH8 – Security options only
Static
Select this option to configure the On success and On failure acknowledgement options.

All of these entries that can be made in the Original, Enhanced, and Defferred Mode, if you do not place data in MSH3 and MSH5, it will automatically reverse them on the acknowledgment. 

There was two scenerios that I will discuss that I seem to find that are common.

  1. The interface is always requiring one acknowledgment, but that one acknowledgment needs to be either a NAck because of structural problems, or if there are no structural issues, then the Ack (or NAck) needs to then comes from BizTalk.
    • It was set up in the Acknowedgment tab to be running in Enhanced Mode
    • I set the MSH15 to be ER, so that if the pipeline came across parsing errors, and automatic NAck will be produced and sent back to the sending interface
    • In the Orchestration that consumed the message, the recieve shape had a filter of BTAHL7.ParseError==false so that it would not consume a unparsed message and interpret it incorrectly
    • At the conclusion of the Orchestration, I had three different Construct Shapes that created either an Ack (MSA1 AA), Warning Ack (MSA1 AR), and NAck (MSA1 AE) and sent it back to the sending interface.
  2. Another client had a system that required an acknowledgment with MSA1 as AA; any other code it would simply resend the message before sending the next message.
    • There was a flat file pipeline that consumed the original message, and sent it to an orchestration that created a multipart message that sent back a Positive Ack, then dropped the message for the ‘real’ parsing by the 2X pipeline dissassembler.
    • This second pass would then be consumed by the real work orchestration that would make a decision based on the BTAHL7.ParseError flag to send the original message and the subsequent NAck to a sharepoint site.
    • If there were no parse errors, then it would successfully process the messages. 

April 4, 2006

Request/Response for MLLP adapter Post Install Instructions

Filed under: BizTalk, HL7 — eric @ 11:32 am

I had forgot about this little document while at a client site, so here it is for reference:

If you have already developed BizTalk Server artifacts that use the native MLLP adapter you must delete and recreate them with the updated MLLP adapter.
To update the existing MLLP adapter
1.               Using Windows Explorer create the C:\MLLPTemp\ folder.
2.               Click Start, point to Programs, point to Microsoft Visual Studio .NET 2003, and then click Microsoft Visual Studio .NET 2003.
3.               In Microsoft Visual Studio .NET 2003, click View on the toolbar, and then click BizTalk Explorer.
4.               In BizTalk Explorer, expand erver name>.BizTalkMgmtDb.dbo, expand TwoWayAckReceivePort, expand Receive Locations, and then right-click TwoWayAckReceiveLocation, and the click Edit.
5.               In the Receive Location Properties - Configuration - General dialog box, in the Transport Type drop-down box select File.
6.               In the Receive Location Properties - Configuration - General dialog box, in the Address (URI) box click the ellipsis () button.
7.               In the File Transport Properties dialog box, in the Receive folder box, type C:\MLLPTemp\.
8.               Click OK.
9.               In the Receive Location Properties - Configuration - General dialog box, in the Receive Handler drop-down box select BizTalkServerApplication.
10.           Click OK.
Note  If you have any BizTalk Server artifacts configured using MLLP adapter, you must repeat steps 3-9 for each artifact before proceeding. Be sure to save the configuration information so that you can update the artifacts using the updated MLLP adapter. You must also save Receive and Send Handlers configuration information if you have customized the MLLP adapter.
11.           Click Start, point to Programs, point to Microsoft BizTalk 2004, and then click BizTalk Server Administration.
12.           In the BizTalk Administration Console, expand Microsoft BizTalk Server 2004 (Local), expand Adapters, right-click the MLLP from the list, and then click Delete.
13.           In the BizTalk Server Administration dialog box click Yes.
14.           In the BizTalk Administration Console, right-click Adapters, point to New, and then click Adapter.
15.           In the Add Adapter dialog box, in the Name box type MLLP, in the Adapter drop-down select MLLP, and then click OK.
16.           Close the BizTalk Administration Console.
17.           In Microsoft Visual Studio .NET 2003, in the BizTalk Explorer, click Refresh on the toolbar.
18.           In the BizTalk Explorer, right-click TwoWayAckReceiveLocation, and the click Edit.
19.           In the Receive Location Properties - Configuration - General dialog box, in the Transport Type drop-down box select MLLP.
20.           In the Receive Location Properties - Configuration - General dialog box, in the Address (URI) box click the ellipsis () button.
21.           In the MLLP Transport Properties dialog box, do the following:

Use this
To do this
Connection Name
Type MLLP.
Host
Type 127.0.0.1.
Port
Type 65535.

22.           Click OK.
23.           In the Receive Location Properties - Configuration - General dialog box, click OK.

March 27, 2006

HL7 Accelerator and v2.5

Filed under: BizTalk, HL7 — eric @ 2:10 pm

I just recieved word that the HL7 accelerator (v1.0) and the v2.5 schemas do not mix (because they don’t exist I guess).

Here is what I recieved from support:

HL7 v2.5 and v2.6 schemas were not included with the RTM of the HL7 v1.3 Accelerator.  This will be included in an out-of-band feature pack (no release date). 

« Previous PageNext Page »