Clinical Trial Data Platforms
Systems that move, process and track study data end to end, with the audit trail built in, not bolted on.
Software engineering for pharma and life sciences
We build scientific software and clinical data platforms for pharmaceutical teams, with 7+ years of US life-sciences delivery behind every engagement.
DiligenceFidelityConfidence
From the first data file to the final audit trail, we build the systems pharmaceutical teams rely on every day.
Systems that move, process and track study data end to end, with the audit trail built in, not bolted on.
Applications for the people doing the science: modelling, simulation and analysis workflows with an interface a researcher will actually use.
Multi-language environments where teams run R, Python, SAS and SQL side by side, provisioned and managed for them.
AWS architecture, containers, Kubernetes, infrastructure-as-code, secrets and access management.
React and React Native front ends over Python and .NET back ends, on PostgreSQL or SQL Server.
CLIs, APIs, scheduled jobs and dashboards that remove the manual steps nobody should still be doing.
Each engagement starts with a real pain point in a study team’s day. Here is what we built, what was getting in the way, and what changed.
A browser-based platform for clinical study teams to move, process and track study data. Configurable pipelines ingest from any source (CRO extracts, lab feeds, EDC exports) and route data through processing steps without anyone writing a script. Orchestration triggers jobs, manages file transfer tasks, sends notifications on every state (info, warning, error), and records a complete audit history of each task, configuration change and data movement. Existing SAS and R code plugs directly into the pipeline, so prior investment in edit checks, safety outputs and analysis datasets keeps working.
Purpose-built software for a pharmacometrician’s day-to-day work: a workspace organised around how modelling is actually done, from preparing analysis-ready data through to running, tracking and reviewing model work, in an interface designed for scientists rather than for programmers.
A browser-based studio where researchers write and run SAS, Python, R and SQL from one interface against shared compute, with no local installs and no per-machine setup.
Environment drift between analysts. Code that runs on one machine and not another. Analysts blocked waiting on IT for installs. Cross-language work split across disconnected tools.
Analysts are productive on day one instead of after a setup cycle. There is one environment to maintain instead of many, and cross-language work happens in one place.
Command-line tooling that reads role-based security definitions and provisions folder structures and permissions across a large research estate.
Manual provisioning was slow, inconsistent and error-prone. Access mistakes carry compliance consequences. Onboarding a study or a user meant a ticket and a wait.
Provisioning runs as one command instead of a manual checklist. Permissions match policy by construction, and structure stays consistent across every study.
A Python service for a pharma client that polls Amazon Redshift for live connections and query state (running, blocked, completed, failed), turns it into charts, and emails an admin dashboard on a schedule, no login required.
Cluster health was only visible by hand-querying system tables. Blocked queries and connection saturation went unnoticed until study teams complained, with no historical view of usage.
Admins get proactive visibility in their inbox instead of a portal to check. Issues surface before they affect study teams, and usage trends now inform capacity planning.
A React Native app that gives on-site sales representatives secure, offline-first access to the patient and visit information they need in the field, syncing back once connected.
Reps relied on printouts, memory or a spotty connection to look up information on site, with no reliable way to capture visit data while offline.
Reps work the same way with or without a signal, and data captured in the field lands back in the system automatically instead of via manual re-entry.
A SAS macro library exposing one create/read/update/delete interface for cloud object storage, with adapters underneath for AWS S3, Azure Blob and Google Cloud Storage.
Programs were hardwired to one vendor’s storage API. Multi-cloud or cloud-migration work meant rewriting SAS code, and programmers needed vendor-specific knowledge to touch it.
Programmers write to one macro interface regardless of provider. Moving between clouds, or running on more than one, needs no changes to study programs.
A tool that maps collected clinical data into CDISC SDTM domains, applying controlled terminology and structural rules on the way to submission-ready datasets.
SDTM mapping was done with one-off scripts per study, so terminology and structure were applied inconsistently and submission prep was slow and error-prone.
Mapping is consistent and repeatable across studies, with less bespoke programming per study and a faster path to submission-ready output.
A reusable ingestion module that parses, validates and lands files from CRO extracts, lab feeds and EDC exports into a common shape before downstream processing, shared across pipelines rather than built per study.
Every new source format meant one-off parsing code. Validation and error handling were duplicated, and inconsistent, across pipelines, so failures were hard to trace.
New source formats are added by configuration, not new code, and validation and error handling behave the same way everywhere the module is used.
Infrastructure-as-code and configuration management with Terraform and Ansible, plus Apptainer containers for portable, reproducible compute environments on shared and HPC-style research infrastructure.
Environments were built by hand and drifted between servers. Root-requiring containers were not viable on shared research infrastructure, and infrastructure changes were untracked and hard to reproduce or audit.
Environments are defined as code, version-controlled and reproducible. Apptainer containers run without root, so they fit HPC and shared research computing policy, and infrastructure changes are reviewable like any other code change.
A React front end presenting automated risk and quality scores, maintenance activity, test coverage, community adoption, for R packages under evaluation for use in a validated environment.
Deciding whether a package was safe to use was a manual, ad hoc review, with criteria applied inconsistently across teams and no lasting record of why a package was approved.
One place shows a package’s risk profile before adoption, giving teams a consistent, defensible basis for approval and an auditable record of what was evaluated.
Four stages, the same every time. It keeps projects predictable and keeps your QA team comfortable.
We start with the workflow, not the technology: who does the work today, where it stalls, and what an auditor would need to see.
Short iterations with working software in front of your users early. Code is reviewed and decisions are written down.
Access control, secrets management, logging and audit history verified before anything goes near production data.
We stay on after go-live: monitoring, enhancements and the small fixes that keep a system trusted.
Diligence + Fidelity, delivered with confidence.
Requirements traced, code reviewed, decisions documented. Nothing ships unverified.
Your data and your science arrive intact. Lineage, reproducibility and traceability are part of the design from the first day.
A result your team, your QA group and your auditor can all stand behind.
We are equally at home with the open-source and commercial tools life-sciences teams already run.
Pharma work has a different bar. We build with it in mind: audit history on every action, role-based access control, secrets in managed stores, traceable data movement, and reproducible environments. Seven years inside that constraint is why it is the default rather than an afterthought.
Who did what, when, and to which data, recorded automatically and reviewable in the interface.
Permissions follow roles and policy, so people see the studies they should and nothing else.
Credentials never live in code or config files. They sit in managed secret stores with controlled access.
Follow a file from where it arrived, through each processing step, to where it ended up.
Infrastructure and environments defined as code, so what ran last quarter can be rebuilt today.
Tell us what your QA team needs to see and we will build to it.
Talk to us
Dilifi Tech is led by Safi Ahmed, who builds full-stack systems end to end: React and React Native front ends, Python and .NET back ends, the databases beneath them and the AWS infrastructure they run on. His work has centred on clinical study data management and scientific computing platforms. He holds a Master’s in Management Information Systems.
Tell us about the study, the workflow or the system. We will come back to you personally.