In memory of Howard S. Edidin – How to install BizTalk Server 2020 Accelerator for HL7 in a standalone machine

In memory of Howard S. Edidin – How to install BizTalk Server 2020 Accelerator for HL7 in a standalone machine

Recently a friend of mine, Howard S. Edidin, a truly T-Rex, passed away. He was a former BizTalk Server MVP and he dedicated most of his professional life to BizTalk Server and HL7, work that you can find perpetuated in this book: HL7 for BizTalk. I personally couldn’t find a better way to honor him than this way: How to install BizTalk Accelerator for HL7 in a standalone machine.

Install BizTalk Accelerator for HL7

Starting with BizTalk Server 2013 R2 and newer versions, the BTAHL7 installation includes a 32-bit installation package (BizTalk AcceleratorsA4HL7 on the BizTalk Server ISO) and a 64-bit installation package (BizTalk AcceleratorsA4HL7(64) on the BizTalk Server ISO).

On a 32-bit computer, install only the 32-bit package. On a 64-bit computer, install the 32-bit or 64-bit package. The 64-bit package enables the adapter and pipelines to run in both 32-bit and 64-bit mode.

Note: The user installing and configuring BTAHL7 must be a member of the BizTalk Administrators group, and a member of the Administrators group on the SQL Server where the BTAHL7 data is stored.

Note: BizTalk Server should have the basic components installed and configured, including a 32-bit BizTalkServerApplication host with standard out of the box adapters, Enterprise Single Sign-on (SSO), the Group, and Runtime.

To install BizTalk Accelerator for HL7 we need to:

  • Run the BizTalk Accelerator for HL7 (A4HL7) setup.exe as Administrator.
  • On the Welcome to the Wizard for Microsoft BizTalk Accelerator for HL7 page, select Next.
  • On the License Agreement page, accept the terms, and then select Next.
  • On the Customer Information page, enter your user name and organization, and then select Next.
  • On the Setup Type page, select the Typical setup, and then select Next.
  • On the Logging Service Account page, leave the default group names and select Next.
    • The Logging Service Account page automatically gives the following groups the logging permissions:
      • BizTalk Server Administrators
      • BizTalk Application Users
      • BizTalk Server B2B Operators
      • BizTalk Server Operators
  • On the Summary of features being installed page, review the summary, and select Next.
  • On the Destination Folder page, select Next to use the default folder. Or, select Change to choose a different installation folder.
  • On the Logging Database Information page, leave the default configuration, and then select Next.
    • Database Server Name: The default value is the server name (name of the computer that the BizTalkMgmtDb database resides – you cannot change this value.).
    • HL7 Database name: Enter the name of the database that contains the data for your BTAHL7 solution, or accept the default setting, which is BTAHL7
      • You must use the ANSI-ASCII character set per database requirements; BTAHL7 does not support other character sets.
  • On the Ready to Install the Program page, select Install.
  • On the InstallShield Wizard Completed page, select Finish to complete.

RIP Howard!

The post In memory of Howard S. Edidin – How to install BizTalk Server 2020 Accelerator for HL7 in a standalone machine appeared first on SANDRO PEREIRA BIZTALK BLOG.

Can you use the BizTalk MLLP Adapter as a Socket Adapter?

Can you use the BizTalk MLLP Adapter as a Socket Adapter?

I have been doing  proof of concept where a application connects to BizTalk Server using a TCP/IP stream connection where the application will actively connect and BizTalk Server will listen for connections.

I have previously written a custom adapter called the GVCLC Adapter which actively connects to a vending machine. This was based on the Acme.Wcf.Lob.Socket Adapter example by Michael Stephenson. Another alternative that was considered was the Codeplex TCP/IP adapter. When I met Michael for the first time in Sydney two years ago I thanked him for his original post and he said to me why hadn’t I used the BizTalk MLLP adapter instead. In this post I examine whether it is possible to use MLLP adapter to connect to a socket.

The BizTalk MLLP adapter is part of the BizTalk HL7 accelerator. This is usually used with healthcare systems. The MLLP adapter at its essence is a socket adapter as shown by the receive and send port configurations shown below. can it be used for other non-healthcare systems?

imageimage

First I installed the BizTalk 2013 HL7 Accelerator with the minimal options to run the MLLP adapter. I had issues because you cannot install it if all the latest Windows Update have been installed but there is a workaround.

image

I setup a receive location as shown above once the MLLP adapter had been installed. Note i am not using any of the HL7 pipelines, no carriage return character, a custom start character and end character. Next I created a asynchronous socket test client very similar to the the Microsoft example here. I modified it so it would send a heart beat. I added the following lines at the right place

.//Start,End and ACK messages
protected const string STX = “02”;
protected const string ETX = “03”;
protected const string ENQ = “05”;

//…………………………….

// Send test data to the remote device.
//Send(client, “This is a test<EOF>”);
data = (char)Convert.ToInt32(STX, 16) + data + (char)Convert.ToInt32(ENQ, 16) + (char)Convert.ToInt32(ETX, 16);

Now after changing the host to 192.168.1.3, enabling the receive location and starting the socket test client, a ENQ message is received in BizTalk. This proves that the MLLP adapter can consume a socket client with a message that is not a HL7 message.

image

Next i set a file port to send a heartbeat message MLLP send adapter configure to send to 192.168.1.3 as above. The heartbeat message was <STX><ENQ><ETX>. I created a socket server similar to the Microsoft example here. I modified it be adding the following lines

//Start,End and ACK messages
protected const string STX = “02”;
protected const string ETX = “03”;
protected const string ACK = “06”;

//————–

// Echo the data back to the client.
//Send(handler, content);
// Send ACK message back to clinet
data = (char)Convert.ToInt32(STX, 16) + data + (char)Convert.ToInt32(ACK, 16) + (char)Convert.ToInt32(ETX, 16);

On dropping the file in the file receive port it was sent to the MLLP adapter and then sent to the socket server as shown by the printout below. There is five bytes because the configured adapter is also adding an extra STX and ETX character the message.

image

This proves the a MLLP receive adapter can consume messages from a socket client and that a send MLLP adapter can send to a socket server.

We have shown that MLLP adapter can be used instead of the Codeplex TCP/IP adapter or the Acme socket adapter

…….but this is not the end for me. My application wants to be a socket client and for BizTalk to send a heartbeat when it will send an AC i.e.

Application –>connect to BizTalk Server

BizTalk Server –>Message or heartbeat to the application

Application –> ACK message to BizTalk Server

I think I will have to create a custom adapter to do this.

In summary for the basic case the MLLP adapter can be used instead of the Codeplex TCP/IP adapter or the Acme socket adapter.