Medical Transcription System: Web Genie Implementation
Architecture
The Web Genie system consists of several tiers. The client tier runs within a web browser and mostly was written with GWT (Google Web Toolkit). GWT compiles Java into JavaScript, hiding many cross-browser incompatibilities. It also provides a Java RPC abstraction over AJAX, which allowed Designing Patterns to create dynamic client code that interoperates smoothly with the system's Java server code. Careful use of GWT also yielded very close integration between Web Genie's client and the browser. The back, forward, and refresh buttons, for instance, all work as expected. Navigation through Web Genie is accomplished with standard hyperlinks, which can be opened in new windows, bookmarked, etc in the usual manner. Zooming, copying, and pasting also all work as they do in static web pages. In addition, because Web Genie's client code is compiled into JavaScript, it runs on every recent web browser on every desktop and smart phone. Flash, Java Applets, JavaFX, and Silverlight neither are as tightly integrated with the browser nor are as portable. These are really compelling arguments in favor of using JavaScript technologies to construct Rich Internet Applications (RIAs), especially a JavaScript technology like GWT that strives for tight browser integration and hides many cross-browser incompatibilities. In addition, because GWT allowed the client code to be written in Java, Designing Patterns had the full benefit of using Java development tools like Eclipse.
The Web Genie server tier was written with the Spring Web MVC Framework and runs within a Jetty application container. The Hibernate persistence framework provides the interface to the system's MySQL database. The GWT SL library is used to allow GWT and Spring to interoperate seamlessly.
The Web Genie back-end tier consists of several programs and services that import new dictations and transcriptions, convert voice files to formats that can be played through a web browser, and perform certain tasks on behalf of the web server (such as sending emails). These programs were written in a variety of languages, including JRuby, Java, and C++. Many of them also use Spring and Hibernate and communicate with each other and with the web server using Apache ActiveMQ. A key responsibility of this tier is integrating with the Dictation Source's existing PowerTrans software suite.
Web Genie has a powerful Ant build system that handles building, packaging, and deploying the system, both on test and in production. It uses the Maven Ant Tasks to manage dependencies and IzPack to create a cross-platform, graphical installer. The build system allows development to be done on the command-line or within Eclipse, on Windows or on Linux.
Web Genie's unit testing suite was written using JUnit. Code coverage measurements are provided by Coberatura. The unit tests are integrated into the build system.
One key concern during development was maintaining portability, in several ways. Firstly, largely thanks to GWT, the client tier runs on all of the popular browsers, including Internet Explorer, Firefox, Safari, Chrome, and Opera. Virtually all of the functionality works on Windows, MacOS X, Linux, and most smart phones. Secondly, Web Genie uses the most ubiquitous plug-in technologies (Flash and Java) in order to access certain functionality not built into web browsers (like playing MP4 files). Finally, Web Genie's server tiers run on both Windows and Linux. In fact, the production system runs on a Windows Server 2003 machine and the demo system runs on a Fedora Linux virtual host.
3rd Party Software
In addition to the 3rd party software packages discussed above, Web Genie uses other open source and proprietary software. Designing Patterns would like to offer thanks and express appreciation for all of this software, especially the open source software; without it, the project would not have been possible.
Open source software packages: Proprietary software packages: