Modernizing a clinical-trial platform inside a validated environment

Modernizing a clinical-trial platform inside a validated environment

Project Overview

At a glance

  • What it is

    A European CRO's in-house clinical-trial intelligence platform.

    • Trial management (CTMS) and document archiving (eTMF)
    • Risk-Based Quality Management and site analytics
    • Runs under 21 CFR Part 11, GCP, and EU CTR
  • How we're involved

    A dedicated engineer embedded in the client's process since 2022.

    • Lead engineer inside the client's Scrum team
    • Frontend migration, then full-stack, then Power BI
    • Access through isolated virtual machines
  • What Bluepes does

    Long-term engineering inside a regulated product.

    • Modernization without pausing validated releases
    • Frontend, backend, and BI in one engagement
    • Delivery aligned to Computer System Validation

About the Project

  • Background

    The client is a European contract research organization running its own clinical-trial intelligence platform — trial management (CTMS), document archiving (eTMF), risk-based quality management, site analytics, and reporting. The platform operates under 21 CFR Part 11, Good Clinical Practice, ICH guidelines, and the EU Clinical Trials Regulation, and it handles patient-safety data: adverse events, lab values, deviations, and key risk indicators.

  • What the client needed

    Parts of the platform's frontend were built on K2, a legacy workflow tool that was hard to maintain and out of step with the rest of the React interface. The internal team knew the product well but did not have the capacity to rewrite legacy screens while continuing regular feature delivery. They needed a dedicated team that could work long-term inside a regulated environment, match the client's release rhythm, and take on more responsibility over time. Every change goes through Computer System Validation before it reaches production, so pausing delivery for a large rewrite was not an option.

Why this project is engineering-complex

  • Change control under CSV

    Every change is validated before it reaches production.

    • Documentation and QA sign-off per release
    • No feature freeze for a big rewrite
    • Validation evidence collected each sprint
  • Legacy inside a live product

    K2 screens modernized while features keep shipping.

    • A legacy workflow tool, hard to maintain
    • Out of step with the React interface
    • Rebuilt screen by screen, not all at once
  • Patient-safety data

    The platform supports safety-critical decisions.

    • Adverse events, lab values, deviations, KRIs
    • Engineering quality has downstream effects
    • Clinical-data standards: CDISC, MedDRA

Outcomes

  • A modernized frontend

    Legacy K2 replaced with a current React codebase.

    • Class components rewritten to Hooks
    • ~40 screens moved to MUI DataGrid
    • Build migrated from Webpack to Vite
  • Scope that grew with trust

    From frontend-only to full-stack over four years.

    • Expanded into .NET and C# backend work
    • Lead engineer still embedded in the team
    • A second engineer added at peak demand
  • Clinical-operations reporting

    Power BI for the clinical-operations team.

    • Two new dashboards on the client's data
    • Existing reports fixed and tuned
    • R visuals for views standard charts miss

Working inside a validated environment

Delivery under change control

Under Computer System Validation, every change to the platform is documented, QA-signed, and released through the client's change-control process. That rules out big-bang rewrites: a long feature freeze is not an option, so modernization happens in small, validated increments woven into the normal sprint. The team works inside the client's tools and security perimeter rather than as a separate vendor track. Day-to-day practices that keep delivery compliant and moving:

  • Validation evidence collected as part of each sprint, not bolted on at the end
  • Access through isolated virtual machines, with permissions limited to the modules the team owns
  • Security-policy sign-off and the client's monitoring and audit tooling
  • Screen-by-screen modernization, so feature delivery never freezes for a rewrite
  • Library and toolchain upgrades staged in increments that each pass review and validation

What we delivered

  • Frontend migration: K2 to React

    • Replaced legacy K2 screens with React
    • Tables, forms, and API integration
    • Across multiple platform modules
  • Codebase refactor & toolchain

    • Class components to functional + Hooks
    • Upgraded React, MUI, and Redux
    • Build moved from Webpack to Vite
  • MUI DataGrid migration

    • ~40 screens moved to DataGrid
    • Pagination and column controls
    • Loaders and skeletons for larger datasets
  • Full-stack expansion (.NET / C#)

    • Backend work alongside the interface
    • Scope grew over four years
    • One embedded lead engineer
  • Power BI clinical-ops dashboards

    • Two dashboards for clinical operations
    • Fixed and tuned existing reports
    • R visuals for non-standard views
  • Patient visit-timeline

    • Expected vs actual study-stage dates
    • Modeled in the data layer, not the visual
    • DAX measures for protocol edge cases

Engineering challenges we solved

  • Modernizing without pausing validated releases

    The platform ships under CSV, so a long rewrite freeze was off the table.

    • Modernized screen by screen
    • Each increment passed review and validation
    • Woven into the normal sprint cycle
    • ~40 screens migrated to DataGrid alone
  • A patient timeline when patients don't follow the protocol

    The clean-data assumption broke: patients skipped stages, attended out of order, or moved to amended protocols.

    • Restructured the data layer
    • Per-patient stage names and dates
    • DAX measures for the edge cases
    • The visual stayed simple
  • Upgrades on a live, regulated codebase

    Major library and build changes had to land without disrupting releases.

    • React, MUI, and Redux upgraded in steps
    • Webpack replaced with Vite
    • Each change validated before production

Our Approach

  • Step 1 — Onboarding into the client's process

    • Join the Scrum team and release rhythm
    • Set up VM-isolated access
    • Sign security-policy documentation
  • Step 2 — Plan within change control

    • Scope increments that pass CSV
    • Sequence work to avoid release freezes
    • Agree validation evidence per sprint
  • Step 3 — Build and modernize incrementally

    • Replace legacy screens with React
    • Refactor and upgrade in small steps
    • Expand from frontend to full-stack
  • Step 4 — Validate and release

    • QA sign-off and CSV documentation
    • Release through the client's change control
    • No feature freeze for a rewrite
  • Step 5 — Support and grow scope

    • Maintain and improve on real usage
    • Take on more responsibility over time
    • Add Power BI when the need appeared
Let’s have a talk
Let’s have a talk

Projects

Masmovil

Software Product Development
for MasMovil Group

  • / telecommunication

  • / product_development

  • / software_development

SuperYachtsMonaco

SuperYachtsMonaco — sale, purchase and charter of yachts of all sizes

  • / e-commerce

  • / project_management

  • / software_development

Healthcare Platform

Healthcare Platform Project Development

  • / health-tech

  • / fin-tech

  • / healthcare

  • / product development

  • / software development

More systems we've delivered across regulated and high-load industries.

See all

FAQ