The Perl HL7 toolkit consists of:
The components glued together can provide an HL7 framework for applications that can't do HL7 by themselves.
The API doesn't provide an exhaustive implementation of all HL7 messages and segments, but instead focuses on a flexible means of creating messages that can be sent to any HL7 compliant server, and receiving HL7 messages that can be parsed into segments and processed. Some often used segments and messages however are implemented, like the MSH segment, and ACK for a given HL7 request, including these segments specific peculiarities.
The HL7 server, a.k.a. hl7d, provides a pluggable framework for HL7 message handling. The server can be configured to dispatch incoming messages to user defined plugins, based on the message type. This way, the hl7d process can, for instance, communicate with databases, files, etc.
The HL7 queue daemon, a.k.a. hl7qd, provides a pluggable framework for managing HL7 'queues'. A queue is a process reading data from, say, a database or file, translating into an HL7 message and translating the HL7 result back into some format, again a file or database. This can approximately simulate real time HL7 messaging for applications that can only provide message queues in the form of a directory or a database.