v3.0

RCT Evidence Schema

A normalized, versioned, auditable evidence graph for clinical trial data extraction.

14 Entity Data Model

This schema defines a normalized data model for RCT evidence extraction. Each entity has explicit relationships and every field carries provenance metadata.

Core Entities

  • 1 Study
  • 2 Publication
  • 3 Estimand
  • 4 Arm
  • 5 Outcome
  • 6 Endpoint
  • 7 Analysis Population

Result & Assessment Entities

  • 8 Result Instance
  • 9 Comparison
  • 10 Appraisal Evidence
  • 11 Appraisal Judgment
  • 12 Evidence Context
  • 13 Forensic Flags
  • 14 Lifecycle
  • 15 Causal Audit

Provenance Types

reportedDirectly from paper
calculatedDerived from reported data
inferredHuman/model judgment
externalFrom external sources
synthesisRequires multiple studies

Relationships

1:N β†’ Publication1:N β†’ Arm1:N β†’ Outcome1:1 β†’ Estimand

Identity

study_idrequired: stringcalculated

Unique identifier (auto-generated)

registration_idrequired: stringreported

ClinicalTrials.gov, ISRCTN, etc.

e.g., NCT01234567

acronym: stringreported

Trial acronym if any

e.g., JUPITER

official_titlerequired: stringreported

Design

design_typerequired: enumreported
parallelcrossoverfactorialclusteradaptiveplatform
phase: enumreported
IIIIIIIVN/A
masking: enumreported
open-labelsingle-blinddouble-blindtriple-blind
allocation: enumreported
randomizednon-randomized

Sites & Geography

centers: enumreported
single-centermulticenter
n_sites: numberreported
countries: string[]reported

e.g., ['USA', 'Canada', 'UK']

Timeline

recruitment_start: datereported
recruitment_end: datereported
study_completion: datereported
total_duration_months: numbercalculated

Funding & Oversight

funding_source: enumreported
industrypublicmixednoneundisclosed
sponsor: stringreported
sponsor_role: textreported

Involvement in design, conduct, analysis

ethics_approval: booleanreported
ethics_body: stringreported
dsmb: booleanreported

Data Safety Monitoring Board

Protocol

protocol_doi: stringreported
protocol_version: stringreported
sap_available: booleanreported

Statistical Analysis Plan

Relationships

1:1 β†’ Studyreferenced by β†’ Comparison

Why Estimand matters: Without explicit estimand, we extract numbers but miss what is actually being estimated. The same trial can target different estimands (ITT vs per-protocol, treatment policy vs hypothetical).

ICH E9 R1 Components

estimand_idrequired: stringcalculated
populationrequired: textreported

Target population for the causal question

e.g., Adults β‰₯40 with LDL β‰₯130 mg/dL and no prior CVD

treatmentrequired: textreported

Treatment condition

e.g., Atorvastatin 40mg daily for 24 months

comparatorrequired: textreported

Comparator condition

e.g., Matching placebo daily for 24 months

outcome_idrequired: stringcalculated

Foreign key to Outcome

time_horizonrequired: stringreported

e.g., 24 weeks, 5 years, median follow-up 4.2 years

summary_measurerequired: enumreported
mean_differencerisk_ratioodds_ratiohazard_ratiorisk_differencerate_ratio

Intercurrent Event Handling

ic_events: object[]reported

How intercurrent events are handled

Intercurrent Event Strategy
<intercurrent_event>
  <event>treatment_discontinuation</event>
  <strategy>treatment_policy</strategy>
  <description>Analyze all participants as randomized regardless of adherence</description>
</intercurrent_event>

<intercurrent_event>
  <event>rescue_medication</event>
  <strategy>composite</strategy>
  <description>Rescue medication use counted as treatment failure</description>
</intercurrent_event>

<!-- Strategy options: treatment_policy | hypothetical | composite | principal_stratum | while_on_treatment -->

Entity Relationships


β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           STUDY                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚                      β”‚                      β”‚
       β–Ό                      β–Ό                      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ PUBLICATION β”‚        β”‚     ARM     β”‚        β”‚   OUTCOME   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                              β”‚                      β”‚
                              β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
                              β”‚              β–Ό              β”‚
                              β”‚       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
                              β”‚       β”‚  ENDPOINT   β”‚       β”‚
                              β”‚       β”‚ (outcome Γ—  β”‚       β”‚
                              β”‚       β”‚  timepoint) β”‚       β”‚
                              β”‚       β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜       β”‚
                              β”‚              β”‚              β”‚
                              β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
                                     β”‚                      β”‚
                                     β–Ό                      β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
                    β”‚    ANALYSIS POPULATION   β”‚            β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
                                 β”‚                          β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
          β”‚                      β”‚                      β”‚   β”‚
          β–Ό                      β–Ό                      β–Ό   β”‚
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
   β”‚               RESULT INSTANCE                       β”‚  β”‚
   β”‚  (arm Γ— endpoint Γ— population = composite key)      β”‚  β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
                           β”‚                                β”‚
                           β–Ό                                β”‚
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
   β”‚              COMPARISON                             β”‚  β”‚
   β”‚  (result₁ vs resultβ‚‚, bound to estimand)            β”‚β—„β”€β”˜
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                           β”‚                              β”‚  ESTIMAND   β”‚
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚ (ICH E9 R1) β”‚
          β”‚                β”‚                β”‚         β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β–Ό                β–Ό                β–Ό         β–Ό          β–²
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚ APPRAISAL  β”‚   β”‚ APPRAISAL  β”‚   β”‚ EVIDENCE   β”‚  β”‚   CAUSAL AUDIT    β”‚
   │ EVIDENCE   │   │ JUDGMENT   │   │ CONTEXT    │  │ (bridges RCT→DAG) │
   β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β€’ identification  β”‚
         β”‚                β”‚                          β”‚ β€’ adjustment set  β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚ β€’ threats & flags β”‚
                  β”‚                                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚                             β”‚
   β–Ό                             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ FORENSIC FLAGS β”‚     β”‚    LIFECYCLE    β”‚
β”‚ (optional,     β”‚     β”‚ (field-level,   β”‚
β”‚  high-variance)β”‚     β”‚  actor+conf+ver)β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜