SocketReader Changelog

What's new in SocketReader 1.2.3

Sep 11, 2013
  • Command line options have been given an additional short option string.
  • A bug has been fixed where a file reader thread would stop if socketReader was denied read access to a message file. Now, this thread will continue to run and try again until successful.

New in SocketReader 1.2.2 (Sep 11, 2013)

  • A bug has been fixed where, when both "ignorenacks" and "nacksonly" were set to True, an incoming NAK was written to the file system twice.

New in SocketReader 1.2.1 (Sep 11, 2013)

  • A new debug option "ignorenacks" is available for the Hl7Transmitter connector. When set to True, socketReader will, upon receiving a NAK, silently discard the NAKed message and continue with sending the next message in queue. When set to False, socketReader will resend the NAKed message until an ACK will be received for it.

New in SocketReader 1.2.0 (Sep 11, 2013)

  • A new option "useack" is available. This setting defines if socket connectors will emit / expect acknowledgment messages or not. The default setting is to emit / expect acknowledgments, so nothing has to be changed in the config files for existing socketReader instances.
  • Debug options have been implemented to ease integration into existing networks. Currently, they can only be used to write ACKs received on Hl7Transmitter connectors to a directory defined by the user.
  • A bug has been fixed leading to file handle exhaustion if many threads were created and stopped. File handles on their log file remained open and will be closed correctly now upon any thread join event. This bug was platform independent and manifested only if socketReader was run for a very long time without being restarted.
  • Resolved a bug causing exceptions when accepting new socket connections. This bug was caused by trying to accept a connection when the incoming packet was the zero byte sent upon remote side socket shutdown.
  • This will be the last release featuring Linux binaries based on Debian Squeeze. Later releases will base on Debian Wheezy.

New in SocketReader 1.1.0 (Sep 11, 2013)

  • An abort condition has been implemented in the message resend algorithms allowing for a graceful termination while socketReader still waits for message acknowledgments.
  • Message resend timeout has been decreased from 60 seconds to 10 seconds. This will allow for a quicker service shutdown.
  • A bug has been fixed that crashed socketReader when managing ill-formated message envelopes
  • A new log level "prod" has been introduced. This log level is an intermediate between the warning and info levels.
  • Several log messages have been moved to the prod level. Most of them are error related and will help you to determine which message is stuck.
  • A bug causing threads to hang on shutdown has been fixed.

New in SocketReader 1.0.4 (Sep 11, 2013)

  • A unreliable routine within the shutdown sequence of SocketReader has been fixed.
  • Distinct 32Bit and 64Bit versions are available now.

New in SocketReader 1.0.3 (Sep 11, 2013)

  • When transmitting via socket HL7 messages which do not have the fields
  • MSH-15 and MSH-16, SocketReader would partially crash upon writing values
  • to them. This nasty bug has been fixed.
  • SocketReader will now print information on the host system and Python
  • interpreter to the console and the logs making it easier to determine the
  • root of some bugs.
  • The option ipaddr now defaults to 127.0.0.1

New in SocketReader 1.0.2 (Jul 26, 2011)

  • A bug where socketReader would send HL7-ACKs with incorrect content in MSH-9 has been fixed.

New in SocketReader 1.0.1 (Jul 26, 2011)

  • A flaw in the version and naming of the Win32 service binary has been corrected.

New in SocketReader 1.0.0 (Jul 26, 2011)

  • This release is the same as the 0.4.0 (beta) release. socketReader has now left the beta phase.

New in SocketReader 0.4.0 Beta (Jul 26, 2011)

  • This has been a rewrite of about half of the socketReader 0.3.1 code base
  • in addition to the loads of new code. Expect a lot of nice goodies in this
  • release!
  • IMPORTANT: Win32 users MUST use slashes "/" instead of backslashes "\" when
  • stating any path names!
  • This is because the backslash is an escape character within
  • Python strings. Using backslashes here will result in
  • unpredictable program behavior.
  • Example:
  • correct: "c:/awesome/SR/logfile.log"
  • wrong: "c:\awesome\SR\logfile.log"
  • This will result in "\a" being evaluated as a HEX
  • code character instead of backslash + "a"
  • You can now define and use more than just one route within the same instance
  • of socketReader. This means you will only have to install one single service
  • managing all your subsystem's communication paths at once.
  • socketReader now features a real m:n connection model meaning you can add
  • multiple incoming as well as outgoing connectors to one single connection.
  • In essence, this means it is now possible to route all data from multiple
  • sources to multiple sinks where each sink gets a complete set of the combined
  • incoming message stream. Pretty close to what communications servers can do.
  • socketReader's config file layout has been expanded to enable full dynamic
  • route configuration. Please see the example.cfg for templates.
  • socketReader features the following communication connectors:
  • incoming: + socket (server and client)
  • file
  • outgoing: + socket (server and client)
  • file
  • socketReader uses Sqlite3 databases to store non-empty queues on outgoing
  • socket connections when socketReader is shut down. Once it starts up again,
  • socketReader checks if there are leftover messages and re-imports them
  • by adding them to the beginning of the outgoing connector's queue.
  • Due to the large number of threads used by a configuration of average
  • complexity the naming convention for threads needed an overhaul. The new
  • thread naming convention is:
  • Outgoing HL7 socket connectors will modify transmitted messages to always
  • request a HL7 Commit Acknowledgement. New values for modified fields will be:
  • MSH-15: "AL" and MSH-16: "NE".
  • When receiving HL7 ACKs, outgoing HL7 socket connectors will always check
  • MSA-2 (HL7-Standard requires this!) for the message control id of their least
  • transmitted message. A mismatch will result in a moaning log entry. Such ACKs
  • will be treated like NAKs.

New in SocketReader 0.3.0 Beta (Jul 26, 2011)

  • socketReader is now config file based. There are only three command line
  • options left:
  • h / --help show usage and help screen and exit
  • version show program version and exit
  • configfile FILE specify the location and name of the config file to use
  • The internal name for the socketReader Win32 service was changed to
  • "hl7socketreader_configfile". This allows for parallel installation of
  • socketReader 0.3.0 and socketReader 0.2.8 to ease migration from command line
  • to config file based configuration.
  • socketReader 0.3.0 and socketReader 0.2.8 are functionally equivalent.

New in SocketReader 0.3.1 Beta (Jul 26, 2011)

  • Evaluation for the options createserversocket, ipaddr, usehl7 and outputdir was buggy. Because of this, default values were always assumed for these options. This has been fixed in this bugfix release.

New in SocketReader 0.2.8 Beta (Jul 26, 2011)

  • The file numbering socketReader used could potentially confuse "dumb" file
  • import algorithms. Leading zeros have been implemented in the "iterator" part
  • of the output file names. Output files will now look like prefix_NNNNNsuffix
  • where NNNNN is a 5 digit number with leading zeros. HL7 messages will look
  • like this:
  • CIS_ADMIN_LAB1_LABS_ADT_20101102124510_00000.hl7
  • CIS_ADMIN_LAB1_LABS_ADT_20101102124510_00001.hl7
  • ...
  • CIS_ADMIN_LAB1_LABS_ADT_20101102124510_00037.hl7
  • ...
  • Clinical software systems known to have that sorting bug:
  • Agfa Orbis (R), Module CronoServer

New in SocketReader 0.2.7 Beta (Jul 26, 2011)

  • The new base framework for socketReader has been switched to Stackless Python 2.7.1
  • BUGFIX: Win32: The service description will now show up in the service console.
  • The filenames for HL7 messages will display the contents of MSH-3 to MSH-6 instead of MSH-3 and MSH-4 only when using the --hl7prefix option.

New in SocketReader 0.2.6 Beta (Jul 26, 2011)

  • SocketReader is now available as a native Win32 service. You can find it as a
  • new executable (socketReaderService.exe) in the Win32 releases. You also can
  • run the service directly from the Python source file (socketReaderService.py).
  • Since there can only be one service with the same identifier on the same
  • machine at the same time, there would effectively be a limit of one interface
  • per machine. Therefore, the HL7-based file naming mechanics have been
  • expanded to also include the message source system and message source
  • facility (MSH-3 and MSH-4) in the file name prefix. This way, a file search
  • can easily determine the subset of valid data files for a listening
  • application. For non-HL7 data you are indeed limited to one communications
  • interface per machine. When using the option --hl7prefix, your files will now
  • look like SYSTEM_FACILITY_MSGTYPE_timestamp_iterator.postfix, for example:
  • "ORBIS_UKD_ADT_20101102124510_0.hl7"
  • BUGFIX: socketReader will refuse to start if no valid argument has been
  • provided for the -d option. Promised.

New in SocketReader 0.2.5 Beta (Jul 26, 2011)

  • KNOWN BUG: Due to a bug in the Python logging facility, the log rotating does not work.
  • WORKAROUND: The rotated log file has been replaced by a static log file for now.