Our client is one of the greatest contract research organization (CRO) providing clinical trials services with annual revenues of over $2 billion, and over 11,000 employees in more than 60 countries.
Deliver a Study Data Warehouse to store both clinical and pre-clinical data in a single repository using modern web technology that can provide an extremely fast and high scalable data integration solution.
Clinical data has a heterogeneous nature: different types of data sources and different formats of the same data. The proposed system will enable our client to offer the only data warehouse in the marketplace that can handle both pre-clinical and clinical data in a single repository and enhance strength as the only end-to-end CRO.
The Study Data Warehouse will provide standardized data to medical information systems that makes this an industry leading and differentiating solution that will give a significant marketing advantage.
The specifics of the project is to work with a very wide variety of data sources, from flat files and traditional relational databases to NoSQL storage. So we implemented a level of abstraction that allows to add support of new data sources easily with special adapters. Data can be loaded from data sources in asynchronous manner that is important when handing large amount of data.
Special attention was paid to memory management and stability of application work, so for complex calculations we used separate workflows and task queues.
When designing the user interface, our priority was to create an attractive and responsive interface that allows most of the actions to be done on mobile devices as well as on conventional desktop screens. Therefore, we applied the approach “mobile first development”. The AngularJS framework was the most appropriate choice, as it allows developing a flexible user interface without dealing with downloading large size of library code. We are loading what we exactly need at the client side.
Our solution makes it possible to process large amounts of data without using a lot of memory. The asynchronous model of NodeJS increases the number of simultaneously processed requests per unit of time, since there is no any overhead of processing and maintenance of a single request in NodeJS.
The use of one language for the server and client sides, as well as a query language for such NoSQL database as CouchDB increases degree of code reuse and improves cross-functionality of team members. It allows increasing degree of ownership of the project by developers; besides, this reduced the time for development of new features.