Self-directed project
Clinical informatics trial-operations demonstration
I built a synthetic study workflow that moves from protocol requirements to linked data, record-level checks, operational metrics and an interactive dashboard. It gives me a concrete way to practise the reasoning between clinical data structures and the decisions people need to make from them.
Quick scan
What the project contains
The project uses an invented study scenario and a deterministic synthetic data cut dated 30 June 2026.
- Project type
- Self-directed clinical informatics demonstration
- Scenario
- Synthetic multicentre Phase II metabolic study
- Data model
- Eight linked trial-operations tables
- Workflow
- Protocol mapping, validation, metrics and dashboard review
- Technical stack
- Python, pandas, pytest, Plotly and Streamlit
- Reproducibility
- Fixed seed, tested builds and GitHub Actions
From protocol to linked data
The workflow begins with a study-style protocol and translates its population, visit schedule, assessments and operational questions into fields and relationships. A fixed seed then generates linked site, participant, visit, laboratory, adverse-event, query, protocol-deviation and milestone tables.
Checks before summaries
Validation happens at record level before the project produces study and site summaries. That ordering matters because a useful metric still needs a clear route back to the records and rules that produced it.
Validation areas
- Identifier uniqueness and relationships between sites, participants, visits, laboratories, adverse events, queries, deviations and milestones.
- Consent, eligibility, randomisation and visit-window timing.
- Laboratory completeness and plausibility within the performed-visit context.
- Unresolved query age, adverse-event follow-up and milestone timing.
- Record-level issue tables that keep each summary connected to the affected data.
Operational review views
- Site progress against illustrative enrolment targets.
- Visit completion, adherence and window misses.
- Unresolved query burden and age.
- Adverse-event follow-up, missingness and validation issues.
- Filtered recalculation from the retained records rather than display-only filtering.
Reproducibility
A workflow that can be rerun and inspected
The build regenerates the synthetic tables, reports and figures from the same seed. Tests compare isolated builds and GitHub Actions runs linting, behavioural checks, coverage and the project build.
What it adds to my portfolio
This project extends my biomedical and health-data foundation into clinical informatics, relational data design and trial-operations analysis. It also shows the kind of analyst work I enjoy most, where a messy operational question has to become a traceable data structure and a useful review view.
Page updated