As other posters have said, NHAPI works great for parsing HL7 messages. For the communication part, sending HL7 messages is pretty easy. Most HL7 systems that send and receive HL7 messages by TCP/IP use the LLP protocol. This protocal is pretty easy, basically you just need to add a vertical tab character at the beginning of the message, and a field separator and carriage return at the end of the message. You can find a example of sending a HL7 message in C# at
http://codingheadache.com/?p=10