:: LAAS Web Site - Release 4.0 - September 2007 ::

Index :: Clinical Trials with Mono

[Article No. 22 @ 2007-11-13]

How we did it

I've spent the last year in designing and developing the framework we are currently using in order to provide important services to our customers: online clinical trials.
When we first decided to develop this type of application we was directly inspired by Oracle Clinical, a complete solution developed and maintained by Oracle for the design and conduct of Clinical Trials. We are currently using Oracle Clinical but when customers ask us to develop online trials we have decided to don't buy the RDC (Remote Data Capture) module.
This choice was made just because the IT department was (and currently is) growing fastly and in the previous five years (from 2001 to 2006) I've worked with another customized system developed for clinical trials.

When we decided to start developing, one of the first important question to answer was: what technology should be used ? Our choice was on Microsoft .NET Framework. This kind of choice was made for many reasons:
  • The IT in our company was completely based on Microsoft Technology
  • In that period (seconf half of 2006), Microsoft released SQL Server 2005 Express and Visual Studio 2005 Express edition, so we had the opportunity to try the software (currently we are using Visual Studio 2005 Professional) and to discover all the benefits of Microsoft applications
  • All the available servers was Windows Server 2003
  • The .NET framework is one of the best technology I've ever used
  • I've developed for many years with C,C++ and Java, and now I think C# is a very good language
The developed framework is basically a set of libraries written in C# that operates between the Web application (running on Internet Information Server 6.0) and the Database Server (SQL Server 2005).
The following image illustrates this kind of (standard) structure:

On the left side there is the front end of the application. The web server (behind a linux firewall) is directly accessed by the main users of the application: the investigators. Investigators insert patients data using the front end provided by the framework. The web server hosts the web application consisting of:

  • A set of ASPX pages
  • Classic web items such as images, javascript files and stylesheets
  • The default application theme folder
  • The reference to the framework
On the right side you can find the Database server where the framework retreives and stores all data about clinical trials. In the study database there are:
  • About 30 system tables
  • About 18 system views
  • A growing number of stored procedures (currently 24)
  • Many triggers (depending on the type of study)
  • A set of several clinical tables (where patients data will be stored)
The core of the clinical trial is stored in about 10 system tables including information such as the flowchart of the study, the rendering of each visit and exam form, the type of online check and so on. System tables are also responsible of user profiling and authentication.

During the login phase the system recognize the investigator and allow him to enter patients, compile the CRF (Case Report Form) and to sign patient's data. The structure of each form is stored in the system tables and each form is rendered dinamically to the user:

Mono, unexpectedly

I beleive in Mono (take a look at the projects page of this site) and I think that it can grows very fast in the next years. When I've readed that one of the latest release of Mono supports almost all the .NET Framework 2.0 I've decided to try our framework with it.
The original architecture based on:

Windows Server 2003 + .NET Framework 2.0 + SQL Server 2005

has been substitute with:

Debian 4 + Apache + Mono 1.2.5 (mod_mono2) + MySQL (with .NET connector)


and... it works !

It was very hard to rewrite all the stored procedures and views developed with T-SQL in SQL Server, but at the end all the "dirty" work was done. On the other hand Monodevelop 0.16 has compiled the entire framework with no errors. The .NET connector provided by the MySQL team works fine and, finally, Apache + mod_mono was not so easy to configure but I did it.

Using Microsoft technology you have the advantage to use the best development environment (Visual Studio 2005), a fully supported database engine (SQL Server 2005) and the availability of many documentation and tutorial sites (first of all the MSDN).
Using Mono you have the great opportunity to develop in C# on Linux.

In the next months I will try to find a way to publish a complete dummy study running on the "open" architecture in order to discover if this can be a real alternative to the "closed" solution.


Available commets

Author: Miguel de Icaza

These are *great* news Salvatore! Keep up the good work!

Author: Rich

Currently going through the same process as you did but in VB instead of C# and yes it works beautifully. I am really hoping to be able to install my code on one or the other platform without much changes.

Author: Yama

Ottimo lavoro Salvatore