Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Live Production Clojure Application Announced

Live Production Clojure Application Announced

Leia em Português

This item in japanese

It was announced recently on the Clojure Google Group that a hospital services system has been developed, in part using Clojure, and has been put into live production use in a major veterinary hospital. The product appears to use several languages and technologies, but Clojure appears to play an important role.

This announcement carries some signficance, as it is one of the first published reports of Clojure being used in a large-scale production deployment, particularly one as sensitive as a hospital environment. As a language, Clojure is relatively young, having only been under development for a few years.

The core of the product is an HL7-compliant message bus. The routing and archiving of messages, as well as the fault tolerance and error handling of the bus are all controlled by Clojure:

We designed an HL7 message bus to link several services within the hospital. Presently we link the medical record system with the radiology department.  The main benefit is to avoid re-keying information about patient and requests in every system.

We also provide some key applications on the bus to allow people to share information in a consistent way along the system they use on a daily basis. It's like a Babel tower, radiologists want to work with their radiology system while the administration wants to work with the medical record system to bill, ... each of these systems meet specific needs of a user base. However there is a need for a common ground to share information. That's what our product offers.

There are a number of other technologies and specifications listed as used in the application, including:

The application is currently deployed on six mini PC devices, and uses a master/slave runtime model to provide fault tolerance. The application uses a parallel processing model, and is reported to be able to process at least two-thousand transactions an hour. The author discusses plans to further expand their use of the concurrency features in both Clojure and the Terracotta clustering library to get rid of the master/slave model entirely, and instead run in parallel on all of the active devices to further expand the fault tolerance of the system.

The Clojure language has been built with an emphasis on concurrent programming. With a software transactional memory model and a threading dispatch framework referred to as the agent system, Clojure offers a number of features to communicate state between threads in a consistent and safe manner.

More information about Clojure is available on the main website, and the Clojure google groups are the best place to follow community adoption and other announcements.

Rate this Article