Skip to content
PROJECTS · SELECTED WORK · 2023 – PRESENT

Research data infrastructure, end to end.

From REDCap case-report forms through Airflow ETL to Power BI semantic models — a cross-section of multi-country TB, HIV, and humanitarian data programmes I’ve led or contributed to.

Programmes
32
Production DAGs
28
DAX Measures
1,953
Filter by tag

Research programmes that move policy.

01 / Programmes
Multi-country TB & HIV studies
Featured/BCHPR/2023 – present
Country Data Manager

Start4All Phase 1 — Cameroon Country Data Management

BCHPR · 7-country programme with LSTM + Stop TB Partnership

End-to-end Cameroon data operations for Start4All Phase 1 — a 7-country TB intervention programme evaluating near-POC molecular diagnostics and sputum pooling. Evidence fed the WHO 9 March 2026 recommendations; LSTM's 27 February 2026 commentary explicitly cited Start4All.

  • Data workflows across screening and treatment event forms with dynamic data-dictionary-driven recoding (no hard-coded value→label maps).
  • Calculated delay metrics: screening → diagnostic → treatment initiation timelines.
  • Multi-level TB outcome classification (cure / failure / lost-to-follow-up) with competing-event logic over 6-month follow-up.
  • Prioritisation flagging surfacing high-value data-entry errors for enumerator QA.
REDCapPower BIAirflowPythonTB diagnosticsWHO evidence
2023 – PRESENTFull case study
Case study/BCHPR/2024 – 2025
Data Manager

TB Reach Wave 10 Cameroon — Data Management

BCHPR · Stop TB Partnership grantee

Cameroon TB Reach Wave 10 data backbone — community-based active case finding using chest X-ray AI triage paired with sputum pooling for molecular confirmation.

TBPower BIREDCapAI triage
UNION 2025 ABSTRACT (EP10-793-19)Full case study
Featured/BCHPR/Apr 2025 – present
Data Manager

TB Reach Wave 11 — Health Camps & Facility Screening

BCHPR · Stop TB Partnership

Largest and most operationally complex BCHPR data system — 19,673 lines integrating 5 REDCap projects across community health camps, primary health facility screening, and prison screening in 7 regions of Cameroon. Target: 494,400 screenings and 105,646 diagnostic results.

  • 5 integrated REDCap projects (Health Camps · Location · Primary Health Screening · Primary Health Results · Daily Attendance).
  • Dual QR-code schemes — screening QR for participant ID and testing QR for specimen ID — enable flexible post-collection linkage.
  • Spirometry PDF extractor (1,743 lines) using pdfplumber with French / English / hybrid detection, SHA-256 deduplication, and SQLite file-hash index.
  • Windows COM Outlook email processor that auto-ingests monthly site reports from regional coordinators with MMM-YYYY regex.
REDCapAirflowPower BIBilingualQR codesPDF extraction
APR 2025 – PRESENTFull case study
Case study/BCHPR/2024 – present
Data Manager

GHIT FujiLAM II — Multi-Country Diagnostic Accuracy Study

BCHPR · GHIT Fund · FUJIFILM · ZRC Nigeria

21,036-line data platform for a diagnostic accuracy study evaluating FujiLAM, Alere LAM, GeneXpert, and molecular tests across 12 sites in Cameroon and Nigeria — supporting WHO prequalification evidence for next-generation TB diagnostics.

TB diagnosticsMulti-countryREDCapData quality
2024 – PRESENTFull case study
Case study/BCHPR/2026 – present
Data Manager

NPOC — Near-Point-of-Care TB Testing Pilot

BCHPR · TB Reach Wave 11 add-on · Protocol v1.0 (Jan 2026)

12,613-line system running the Near Point of Care TB testing pilot at community health centres — evaluating LC-NAAT alternatives (Pluslife MiniDock, Molbio MTB Ultima, PortNat) against microscopy and centralised GeneXpert, with co-integrated spirometry screening for TB / asthma / COPD.

Near-POCLC-NAATSpirometryTB/COPD/Asthma
2026 – PRESENTFull case study
Case study/BCHPR/2024 – 2025
Data Manager

Pluslife MiniDock & Molbio MTB Ultima — Near-POC Evaluation

BCHPR · Clinical Infectious Diseases 2025 publication

2,299-line pipeline (plus 1,039 LOC in the parallel retrospective-pooled track — 3,338 LOC across the full Pluslife programme) integrating Pluslife MiniDock and Molbio MTB Ultima CSV exports into unified diagnostic datasets for pooled and individual workflows — the data backbone of the 1,097-participant Clinical Infectious Diseases 2025 paper.

Pluslife MiniDockMolbio MTB UltimaNear-POCDiagnostic accuracy
CID 2025 PAPER (DOI 10.1093/CID/CIAF709)Full case study
Case study/BCHPR/2024 – present
Data Manager

Image Quality Study — X-ray Machine Standardisation

BCHPR · multi-country (Cameroon + Nigeria)

5,173-line multi-country study comparing digital X-ray machine image quality (PRORAD vs Min Xray vs Fuji X-air) with DICOM metadata extraction and AI score differencing — informs equipment procurement and WHO guidance on digital X-ray adoption.

DICOMpydicomX-ray AIMulti-country
2024 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

HIV Viral Load Pooling — Abbott m2000 Pipeline

BCHPR · TB Reference Laboratory Bamenda (ISO 15189:2022)

4,785-line pipeline (the 3,595-line VIRAL LOAD DATA CLEANING.py is the largest single file in the project) ingesting Abbott m2000 HIV-1 viral-load results through REDCap — powers the 12,396-specimen pooled-testing study published in Scientific Reports 2025 (+80% testing capacity, 0.01% misclassification).

HIVAbbott m2000Pooled testingREDCap API
SCIENTIFIC REPORTS 2025 (DOI 10.1038/S41598-025-92709-Y)Full case study
Case study/BCHPR/2023 – present
Data Manager

GeneXpert MTB/RIF — 16-Lab Pooled Testing Pipeline

BCHPR · 16 GeneXpert laboratories, Cameroon

4,942-line pipeline ingesting multi-site GeneXpert MTB/RIF CSV exports, harmonising French / English bilingual records, and consolidating pooled + individual TB test results — the data backbone of the 2026 openRxiv preprint (first & corresponding author).

GeneXpertPooled testingTBBilingual
OPENRXIV 2026 PREPRINT (DOI 10.64898/2026.03.20.26348676)Full case study
Case study/BCHPR/2023 – present
Data Manager

Truenat Ultra — Rapid TB Diagnostics Pipeline

BCHPR · TB Reference Laboratory Bamenda

1,828-line pipeline for Truenat Ultra rapid TB PCR instruments — incremental ingestion with MD5-based change detection, SQLite state tracking, and Polars-optimised consolidation across a distributed lab network.

TruenatRapid diagnosticsIncremental ETLSQLite
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

Global Outcome Tracking Hub — 7-Project TB Consolidation

BCHPR · INSPIRE TB research portfolio

Mission-critical ETL hub aggregating TB patient-outcome data from 7 independent research projects into a unified REDCap database with longitudinal patient-journey tracking — 116,000+ records across 390+ treatment sites.

ETL HubTB outcomesCross-projectPatient journey
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

Specimen Transport & Chain-of-Custody

BCHPR · 50+ sending and receiving lab sites

2,328-line specimen transport and chain-of-custody tracking system linking sending and receiving REDCap records with study-ID validation and transport-quality assurance — enables 100% specimen accountability across the CHPR lab network.

Specimen logisticsChain of custodyStudy ID validationQuality assurance
2023 – PRESENTFull case study
Case study/BCHPR/2024 – present
Data Manager

Wave 11 Health Camps — Community TB Screening Cleaner

BCHPR · TB Reach Wave 11, 8 regions

3,861-line data-cleaning and importation pipeline for the TB Reach Wave 11 community health camps programme — supports the 494,400-screening target across 8 regions of Cameroon with enumerator-level performance tracking.

Community healthTB screeningMass screeningEnumerator QA
2024 – PRESENTFull case study
Case study/Union World Conference on Lung Health 2025/Jul 2024 – Mar 2025 · presented Nov 2025
Presenting author

Chest X-ray AI + Pooled Molecular Testing (Union 2025)

Union World Conference on Lung Health 2025 · Copenhagen

Demonstrated that combining AI-scored digital chest X-ray triage with sputum pooling extends molecular TB diagnostics into resource-limited community settings — with materially lower per-case cost.

DiagnosticsAI triageImplementation scienceUnion 2025
VIEW ABSTRACT ON UNION SERVERFull case study

Production systems that report on themselves.

02 / Engineering
Pipelines · APIs · BI
Case study/BCHPR/2023 – present
Data Manager

QR-Code Patient & Specimen Tracking System

BCHPR · deployed in 7 regions of Cameroon

Operational innovation deployed across 365+ primary health facilities and 25+ GeneXpert laboratories — now under active consideration by Cameroon's National TB Programme as national best practice.

QR codesPythonREDCap mobileField deployment
2023 – PRESENTFull case study
Case study/BCHPR Admin Team/2024 – present · v4.0 (Feb 2026)
Data Manager

Request Management System — Power Platform End-to-End

BCHPR Admin Team · serves all employees

Production-grade Microsoft Power Platform solution running the full lifecycle of financial and operational requests at BCHPR — submission, document validation, executive approval, payment, issue tracking, and reporting — built on SharePoint Lists, Power Automate, Teams Approval Cards, and a Power BI semantic model.

Power PlatformPower AutomatePower BISharePoint
2024 – PRESENT · V4.0 (FEB 2026)Full case study
Case study/BCHPR logistics/2023 – present
Data Manager

Inventory & Asset Management — Manager.io + M365

BCHPR logistics · multi-location Cameroon

Manager.io-integrated inventory and asset-management system for CHPR logistics across multiple Cameroon sites — with Microsoft 365 ecosystem orchestration (Lists, Power Automate, Power BI) and automated procurement workflows.

Manager.ioPower BIPower AutomateSharePoint Lists
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

Power BI Dashboards — 1,953 DAX measures across 8 models

BCHPR · clinical, operational & executive reporting

Production Power BI estate with 8 major semantic models totalling 147 tables and 1,953 DAX measures — underpinning clinical decision-making, operational tracking, and executive reporting across every BCHPR research programme and the Admin Team Request Management System.

Power BIDAXTMDLPBIP
2023 – PRESENTFull case study
Featured/BCHPR/2023 – present
Data Manager

28 Apache Airflow Production Pipelines

BCHPR · CHPR_DAGS.py (1,242 lines)

Production Airflow 3 orchestration for every BCHPR data pipeline — 28 DAGs running from every 10 minutes to 3-hourly, with a custom FileMtimeSensor, Slack + email alerting, and a reusable DAG factory pattern.

  • 28 production DAGs covering Wave 11, GHIT FujiLAM II, NPOC, Start4All, Viral Load, Xpert, Truenat, Pluslife, Image Quality, Inventory Management, Specimen Transport, TB Treatment, Chest X-ray, Culture, TBRL Lab, Collaborators, UCD DDE Check, Global Outcome, and maintenance jobs.
  • Custom `FileMtimeSensor` — rescheduling sensor that triggers on file / directory mtime changes, with SHA-based baselines stored in Airflow Variables (no false positives on first run).
  • `build_script_dag` factory pattern — parameterised DAG construction keeps 1,242 lines maintainable across 28 DAGs.
  • Cadences — every 10 min (Culture) · every 15 min (cleanup, UCD DDE) · 30 min (user activity, specimen transport, lab PDF) · 45 min (FujiLAM UA) · hourly (most pipelines) · 3-hourly (reports) · daily (DQ scoring, collaborators).
Airflow 3DAG factoryCustom sensorsSlack alertsCron schedulingCross-platform
2023 – PRESENTFull case study

Reusable libraries — 67,489 LOC of shared infra.

03 / Libraries
Shared Python modules · underpin every project
The inspiretb reusable Python library — ten modules, three internal dependencies.Ten modules in four bands. Integration holds m365_graph and MANAGER. Domain engines hold data_quality_manager, redcap_api and dump_upload_pipeline. Data primitives hold data_utilities, date_utils and study_id_patterns. Foundation holds paths_manager and api_manager. Only three dependencies run between them: redcap_api imports data_utilities, dump_upload_pipeline imports study_id_patterns, and m365_graph reaches data_utilities indirectly through my_functions, a retired module. The other seven import nothing else in the library.INTEGRATIONDOMAIN ENGINESDATA PRIMITIVESFOUNDATIONimportsvia my_functions(retired)m365_graph5,573 · 73 Graph opsPlanner · Teams · SharePointMANAGER15,661 · 18 CRUD typesManager.io accountingdata_quality_manager14,274 · 11 consumers7-dimension DQ taxonomyredcap_api6,561 · 18 consumers16 REDCap endpointsdump_upload_pipeline5,797 · 2 studiesQR identity · SHA-256 dedupdata_utilities9,746 · 22 consumersdependency rootdate_utils5,220 · 47 formats93-column BI calendarstudy_id_patterns3,589 · 35 consumers27 ID patternspaths_manager586 · 16 consumers213 paths · 27 groupsapi_manager482 · 11 consumers105 credentials
Fig. 03 · Ten modules · three internal dependencies
Featured/BCHPR/2023 – present
Data Manager

data_quality_manager.py — Data-Quality Engine

BCHPR · used by 11 projects

REDCap validates one field at a time, at entry. It cannot express “this specimen date precedes the enrolment date on a different form”, or “these two record IDs are the same participant”. This 14,274-line engine does, and it remembers — every issue it raises has an open date, a close date, and a resolution time.

  • Seven-dimension quality taxonomy (completeness, validity, accuracy, consistency, timeliness, uniqueness, integrity) with 35 error categories mapped onto it.
  • Fluent QueryBuilder over a declarative, immutable schema — referencing an undeclared field fails at build time rather than silently yielding null.
  • Six selectable scoring algorithms, defaulting to defect density (failures per opportunity to fail) rather than ticket-closure velocity.
  • SQLite tuned for SharePoint-synced drives: WAL where safe, DELETE journaling where it is not, busy timeouts, and configurable integrity-check depth — a full check on a multi-GB tracker can stall for tens of minutes.
Data qualityREDCapSQLitePolarsClinical research
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

MANAGER.py — Manager.io Accounting API Client

BCHPR · finance and supply chain

15,661-line Manager.io API client. Full create / update / delete across 18 document types — sales quotes, orders, invoices, credit notes, delivery notes and receipts; purchase quotes, orders, invoices and debit notes; inventory items, locations, transfers, write-offs, goods receipts, production orders and starting balances; and payments. Customers, suppliers, projects, accounts, assets and tax codes are exposed read-only.

Manager.ioREST APIAccountingInventory
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

data_utilities.py — Shared DataFrame Toolbox

BCHPR · imported by 22 pipeline scripts

The dependency root of the library — 9,746 lines that import nothing else in the codebase and that everything else imports. 84 public callables covering REDCap activity-log parsing, data-dictionary recoding, checkbox column expansion, export diffing, and file I/O that survives a SharePoint sync.

pandasPolarsREDCapSharePoint
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

redcap_api.py — Typed REDCap API Facade

BCHPR · 4 REDCap servers

REDCap exposes one POST endpoint per project, dispatched by form parameters rather than typed routes, with no retry, no pagination, and no bulk file endpoint. This 6,561-line facade wraps 16 of those endpoints behind a typed surface of 42 exported names.

REDCapREST APIRetry logicPython
2023 – PRESENTFull case study
Case study/BCHPR/2024 – present
Data Manager

dump_upload_pipeline.py — Mobile-Dump Ingestion

BCHPR · NPOC and Wave 11

Built to end a specific failure: the notebook it replaced created duplicate patients three ways. Repeated QR codes were suffixed −1, −2 and uploaded as separate people; a field phone syncing straight to REDCap produced a second unlinked record for someone already dumped; and merging forms before upload multiplied rows. Duplicate enrolment inflates the denominator, which is an endpoint-validity problem, not a tidiness one.

REDCapDeduplicationSQLitePolars
2024 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

m365_graph.py — Microsoft Graph Client

BCHPR · Microsoft 365 estate

5,573-line Microsoft Graph client wrapping 73 distinct operations across Entra ID users and groups, SharePoint sites and lists, Microsoft Planner, and Teams. Planner is the centre of gravity at 43% of the file — activity tracking across study sites.

Microsoft GraphOAuth 2.0SharePointTeams
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

date_utils.py — Date Engine and Power BI Calendar

BCHPR · all projects

5,220 lines handling the dates that actually arrive: French month names from Francophone Cameroon, Excel serials, paper forms re-entered at the wrong precision, and REDCap fields whose _dmy suffix controls display only — the API returns ISO regardless, so a hand-exported Excel file parses differently from an API pull.

Power BIDate parsingREDCapLocalisation
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

study_id_patterns.py — Study-ID Pattern Registry

BCHPR · 9 projects, 4 countries

The most-imported module in the codebase — 35 files depend on it. 27 registered patterns (16 participant and specimen ID forms, 11 site codes) covering identifiers that arrive from QR scanners, free-text notes and typed entry, where a transposed digit produces something structurally valid and completely wrong.

RegexValidationCheck digitsMulti-country
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

paths_manager.py — Cross-Platform Path Resolution

BCHPR · 16 dependent scripts

Every project script reads and writes under a shared SharePoint-synced tree. Hard-coding those paths breaks the moment a script runs on another machine, under WSL, or inside Airflow. 586 lines resolve 213 named paths across 27 project groups, from one environment variable.

Cross-platformWSLSharePointConfiguration
2023 – PRESENTFull case study
Case study/BCHPR/2023 – present
Data Manager

api_manager.py — Credential Registry

BCHPR · 4 REDCap servers

482 lines holding 105 credential attributes across 16 project groups, read from the environment and never from source. Gives every token a name and a group so an environment can be audited before a pipeline fails halfway through a run.

Secrets managementREDCapConfigurationPython
2023 – PRESENTFull case study

Humanitarian, M&E, and donor work.

04 / Field & funder work
ICRC · CDC/PEPFAR · advisory
Case study/ICRC Regional Delegation for Central Africa/Aug 2021 – Jul 2022
Protection Data & Analytics Officer

ICRC — Protection Data & Analytics

ICRC Regional Delegation for Central Africa

Managed protection data systems supporting humanitarian operations during Cameroon's Anglophone Crisis — under ICRC's rigorous data protection standards, coordinating with armed groups, military, and civilian authorities.

HumanitarianProtection dataProt6Conflict zones
AUG 2021 – JUL 2022Full case study
Case study/CBC Health Services/Oct 2016 – Mar 2023
Budget M&E Consultant

HIV-Free — Budget & M&E (CDC/PEPFAR)

CBC Health Services · CDC/PEPFAR-funded

Budget monitoring and M&E tooling for the HIV-Free project across 20+ health facilities in Northwest Cameroon — built the indicator tracking and variance-analysis tools used across the programme.

M&EPEPFARHIVBudget
OCT 2016 – MAR 2023Full case study
Featured/ReAnalytics Consulting/2017 – present
Founder · Principal Consultant

ReAnalytics Consulting — Independent Advisory Practice

ReAnalytics Consulting · registered consultancy (Bamenda, Cameroon)

Independent practice positioned as Data Analytics and Computerized Accounting consultancy. Predates BCHPR by six years; runs in parallel today. Holds the QuickBooks Online Certified ProAdvisor designation as a firm-level credential (issued 15 March 2025; exam passed by Ngha as principal practitioner). The operational proof of the accounting → data hybrid.

  • Service lines: QuickBooks + Manager.io implementation and training, Excel consultancy and training, data analysis and consultancy, data systems design, Power BI consultancy and development.
  • Active engagements span NGOs and SMEs across QuickBooks Online and Manager.io — work is kept private at the request of clients; details available on request.
  • Firm-held QuickBooks Online Certified ProAdvisor designation (Intuit, 15 March 2025) — the professional advisor tier reserved for accountants serving clients, distinct from the basic Certified User track.
  • End-to-end engagement model: chart-of-accounts design, migration from spreadsheets to cloud accounting, bank-feed automation, monthly close, management reporting, and BI dashboards on top of the ledger.
QuickBooksQuickBooks ProAdvisorManager.ioExcelPower BIData Systems Design
QUICKBOOKS ONLINE PROADVISOR CERTIFICATE (PDF)Full case study