1 of 12

One Source of Truth

​

One trial. Five systems. No shared IDs.

Cross-system answers for clinical trial operations — every number traceable to the source row it came from.

HackRU Fall 2026

Regeneron: Improve Clinical Trials

​

Dhruv Sethi, Ritvik Sajeev, Nakul Mittal, Tanmay Agarwal

2 of 12

One hospital. Five systems. Five identifiers.

None of them match, so no question can cross all five.

2

EDC — TRIAL DATABASE

SITE-0701

CTMS — SITE MANAGEMENT

701

IRT — DRUG SUPPLY

S701

SAFETY DATABASE

PT_01-701-1015

FINANCE

AHEPA Gen Univ Hosp of Thessal

THE SAME REAL HOSPITAL

"AHEPA" General University Hospital

Thessaloniki, Greece

1 of 17 trial sites

"Which sites have an open safety case AND low drug supply AND overdue payments?"

Three weeks of manual spreadsheet matching — and the answer still isn't traceable.

Concordance · HackRU Fall 2026

3 of 12

Who this is for

Four roles inside clinical development, each needing a different slice of the same data.

3

Study Manager

Owns trial delivery. Needs the cross-system view: which sites are in trouble, and why.

Site Monitor

Oversees site conduct and drug supply. No business seeing financial terms.

Finance Analyst

Tracks site payments. Must not see patient or safety data at all.

Data Steward

Owns identity matching and data quality. Sees structure, not patient detail.

Role changes four things: which screens exist, which questions can be asked, which columns return, and how far lineage can be traced.

Concordance · HackRU Fall 2026

4 of 12

What Concordance does

Five disagreeing feeds in. One canonical, auditable view out.

4

01

Ingest

Five system exports, every row stamped with its source file and row number at read time

02

Harmonise

Identifiers resolved deterministically where possible, by fuzzy match where not, by a human where neither is safe

03

Graph

Sites, patients, aliases and one node per source row, so lineage is a single hop

04

Answer

Cross-system questions in plain English, with the generated SQL and the source rows both on screen

Concordance · HackRU Fall 2026

5 of 12

Measured, not asserted

We corrupt the feeds deliberately before loading and commit the answer key to the repository.

5

AUTO-MATCHED

96%

ESCALATED TO A HUMAN

3

DEFECTS CAUGHT

11 / 11

FAIR CRITERIA

10 / 10

DEFECTS PLANTED BEFORE INGEST

  • Duplicate site records in the CTMS export
  • Orphan sites recorded in drug supply and nowhere else
  • Enrollment dates falling after the study end date
  • Facility names truncated and abbreviated by a short finance field
  • A finance feed that has not refreshed in nine days

100% auto-matching would be the weaker result: a matcher that never escalates has not shown it can recognise ambiguity.

Concordance · HackRU Fall 2026

6 of 12

Identity resolution, with a human where it matters

A wrong site merge silently corrupts every downstream number, and nobody finds out.

6

Automatic

≥ 0.95 confidence

Deterministic ID normalisation and high-confidence name matches. 67/70 identifiers.

Review queue

0.60 – 0.95

Both records side by side with the score. A person decides in seconds. 3 of 70.

No match

< 0.60

Flagged as an orphan and raised on the data health screen.

A REAL CASE FROM THE REVIEW QUEUE

Finance: AHEPA Gen Univ Hosp of Thessal

CTMS: "AHEPA" General University Hospital of Thessaloniki

0.759

confidence

Concordance · HackRU Fall 2026

7 of 12

Every number traces back. Every decision is on the record.

Lineage is graph structure, not a separate system. The audit log is append-only.

7

LINEAGE

Every source row becomes a node, stamped with its file and row number at ingest. Entities carry derived_from edges back to the rows that produced them.

~2,000 nodes · ~3,500 edges

Site 701 assembled from 301 source rows

Known by 4 identifiers across 4 systems

AUDIT TRAIL

Every decision records who made it and when. A revert supersedes the original rather than deleting it — in regulated work you cannot erase a record of who decided what.

Sana Qureshi (Data Steward)

revert

in effect

Admin (Study Manager)

confirm

superseded

Concordance · HackRU Fall 2026

8 of 12

Where the model belongs and where it does not

Gemini writes the query. The database returns the numbers. No figure passes through the model.

8

Question

plain English

→

Gemini

writes SQL only

→

DuckDB

returns the numbers

→

Screen

with the SQL shown

WHAT IT GETS RIGHT

  • Subqueries against the study average
  • Computed ratios with divide-by-zero guards
  • Aggregations, grouping, correlation

WHAT IT REFUSES

  • Questions no column can answer
  • Any column the signed-in role cannot see
  • Guessing when the request is ambiguous

The schema Gemini receives is already filtered by role, so it cannot write a query against data the user is not cleared to see.

Concordance · HackRU Fall 2026

9 of 12

Access control lives in the service layer

A denied column is removed before the response is built, so it never reaches the browser.

9

web/

React, Vite, Tailwind, Renders only, never reads the database

api.py

FastAPI, Translates HTTP to Python, No rules of its own

services.py

Business logic and access control. Every function takes a role.

repository.py

The only module that touches stored data

database/

Raw feeds, harmonised output, knowledge graph, FAIR catalog

Storage is isolated behind one module, so moving from files to Postgres is a single file and an environment variable.

Concordance · HackRU Fall 2026

10 of 12

Real public data where it exists

Synthetic where no public source publishes it — documented either way.

10

REAL

EDC — patients, adverse events

CDISC SDTM/ADaM pilot study CDISCPILOT01 · 306 patients, 1,191 adverse events

REAL

Facility names

ClinicalTrials.gov API v2 · 109 facilities across 47 recruiting studies

REAL

Adverse event terminology

openFDA FAERS · 80 MedDRA reaction terms by reporting frequency

SYNTHETIC

IRT, finance, operational fields

Derived from the same sites, so a correct answer exists and can be measured

No individual is identifiable: the clinical data is de-identified and every person name is generated.

​

The identifier divergence is introduced deliberately. No public dataset publishes that inconsistency. Iit can be measured against a known answer key.

Concordance · HackRU Fall 2026

11 of 12

Built to the field’s own standards

Not invented conventions. The ones clinical data management already uses.

11

FAIR

Wilkinson et al. 2016, Scientific Data 3:160018

Persistent identifiers, column-level metadata, per-dataset licence and provenance, a searchable catalog. Metadata stays visible where the data itself is restricted.

10 / 10 criteria met

CDISC SDTM

Clinical Data Interchange Standards Consortium

Clinical feeds map to SDTM domains — DM for demographics, AE for adverse events — rather than ad hoc column names.

2 domains mapped

OHDSI / OMOP

The Book of OHDSI, chapter 6

Identity resolution follows the source_to_concept_map pattern and is exposed in that shape, so an OMOP practitioner reads it without translation.

70 mappings exposed

Concordance · HackRU Fall 2026

12 of 12

What's real, what isn't, and what's next

Stated plainly, because a reviewer will find these anyway.

12

HONEST LIMITATIONS

  • Authentication is a demo stub; authorization is real
  • Natural language queries the site-level view only
  • Operational feeds are synthetic, not live connectors
  • The identifier divergence is introduced by us

NEXT

  • Live connectors in place of synthetic feeds
  • Signed tokens replacing the auth stub
  • Patient-level questions through the lineage view
  • Incremental re-ingest instead of a full rebuild

Live demo

one-source-of-truth-877947191010.us-east1.run.app

Repository

github.com/sethidhruv188/one-source-of-truth-HackRU-2026

MIT licensed · Runs from a clean clone · Deployed on Cloud Run

Concordance · HackRU Fall 2026