OpenClinica Software Architecture
OpenClinica is a web-based software platform for managing single or multi-site clinical research studies. It facilitates protocol configuration, design of electronic Case Report Forms (eCRFs), Electronic Data Capture (EDC), data extraction, and clinical data management. OpenClinica supports HIPAA and other regulatory guidelines, and is architected as a standards-based extensible, modular and open source platform.
OpenClinica is developed using the Java J2EE framework, with a database abstraction layer interoperable with PostgreSQL 8.x and Oracle 10g (custom ports to DB2, SQL Server, or MySQL also possible). OpenClinica runs on Linux (RHEL or other flavor) or Windows Server, on top of any Servlet/JSP container that implements the Servlet 2.x and JavaServer Pages 2.x specifications from the Java Community Process. It was developed to run on Apache Jakarta Tomcat 5.x or 6.x. This architecture provides a secure, robust and extensible system for managing multiple clinical research studies within a centralized repository.
The Main Application Modules include:
- Submit Data: Allows subject enrollment, data submission and validation for use by clinicians and research associates as well as Query Management and Bulk Data Import.
- Monitor and Manage Data: Enables ongoing data management and monitoring
- Extract Data: Enables data extraction and filtering of datasets.
- Study Build: Facilitates creation and management of studies (protocols), sites, CRFs, users and study event definitions.
- Administration: Allows overall system oversight, auditing, configuration, and reporting
(click on diagram to enlarge)
OpenClinica J2EE Model-View-Controller Architecture
The OpenClinica system is based on a classic design pattern known as Model-View-Controller, or MVC for short. The MVC architecture originally has its roots in Smalltalk, where it was used to map traditional input, processing and output tasks to the graphical user interaction model. It has been used in many applications since then, because of its straightforward approach to creating flexible multi-tier applications.
In OpenClinica, the code base is divided to provide a thoughtful, easy to extend strategy:
- The View components all work towards forwarding the user to Java Server Pages (JSP) and HTML pages, which display the content.
- The Model components all work to interface with the database and create Java Objects based on the data present in the database.
- The Controller components regulate the traffic between the view and the model, regulating secure access and providing the business logic.
Additionally, the Model layer is created using a database-agnostic layer, which is code that separates database-specific query code from the standard Java Database Connectivity (JDBC) code standard for all applications using Java. This means that switching between databases is easy to manage.
Use of the MVC together with a database abstraction layer gives OpenClinica several strengths:
- Ease of modification. Since the application is distributed, the design lends itself naturally to concurrent modification and updates by multiple developers. This allows more of the contributions of the OSS community to be included in each release.
- Easier support for unique technology needs. Every clinical research laboratory will have different needs and requirements; the OpenClinica code base allows different types of labs to use its system effectively.
- Re-use of Model and Controller components. Using MVC, developers are able to re-use code and keep the size of the entire application down.
(click on diagram to enlarge)







