Benchmark¶
318 benchmarks, generated from benchmarks/. Each one is a complete,
runnable specification with its input data and the exact output an
implementation must reproduce, and each page below shows that README, the
source fixtures, the expected artifacts, and the YAML specification together.
| Group | Count | Purpose |
|---|---|---|
schema-* |
44 | Assess yamaa schema |
adam-* |
83 | Assess SDTM to ADaM derivations |
bimo-* |
1 | Assess BIMO clinical site dataset derivations |
sdtm-* |
53 | Assess ODM to SDTM derivations |
negative-* |
137 | Assess yamaa error handling |
Rejection is half the contract. A portable specification language is defined as much by what it refuses as by what it computes, and a refusal is only portable if two implementations refuse the same thing in the same way, so every anti-pattern pins the exact error alongside the specification that provokes it.
The suite serves three audiences at once:
- Users read it as a cookbook: "how do I express a baseline flag" has an answer to copy.
- Developers run it as a conformance test: the expected files are byte-exact contracts.
- AI agents learn the common derivations from one half and the anti-patterns that bound them from the other.
Start here¶
| # | Benchmark | What it establishes |
|---|---|---|
| 1 | Basic Demographics | Reading collected items, handlers, and the declared keys as the grain |
| 2 | Lab Findings | Row construction: one template per collected test, row_number for the sequence |
| 3 | Lab BDS Build | A full Basic Data Structure build: parameters as row templates, then baseline, change and sequence as columns |
Read a page top to bottom and the loop closes in five minutes: the Summary gives the intent, the specification sidebar gives the shape and the grain, and the expected artifact confirms the reading.
All benchmarks¶
Benchmarks¶
181 benchmarks. Each runs to completion and produces the artifact in expected/.
ADAE¶
17 benchmarks
- Death Carryforward
- First Event Flags
- Treatment Emergence Timing
- Partial Date Imputation
- Post-Index Event Flags
- Name Each Event's Prior Serious Event
- Protocol Review Flags
- Query Membership Flags
- Review Ordering
- Keep Only Serious Events
- Serious Event Sequence
- Carry Each Event's Severity
- Severity Correction
- Severity Ranking
- Text Cleanup
- Split Adverse Events at Severity Changes
- Worst Severity Flags
ADCE¶
1 benchmark
ADCM¶
2 benchmarks
ADEG¶
1 benchmark
ADEX¶
3 benchmarks
ADFA¶
1 benchmark
ADLB¶
9 benchmarks
- Lab BDS Build
- Closest Visit Selection
- Flag the End-of-Treatment Laboratory Record
- Derive absolute differential records
- Calculate each subject's mean result
- Ordered Float Sum
- Normal Limit Check
- Classify a Result, Its Shift from Baseline, and Two Criteria
- Join a Numeric Sequence to a Padded Supplemental Key
ADLBC¶
2 benchmarks
ADOE¶
1 benchmark
ADQS¶
3 benchmarks
ADRS¶
6 benchmarks
- Select the Best Overall Response
- Assign a Composite Responder Status
- Confirmed Response
- Flag Measurable Disease at Baseline
- Prepare Response Assessments for Best Overall Response
- Derive Investigator Overall Response Records
ADSL¶
19 benchmarks
- Pool Subjects into Age Groups
- Keep Out-of-Range Ages for Review
- Derive the Last Known Alive Date from Multiple Sources
- Derive the Analysis Age at Randomization
- Derive BMI Two Ways
- Flag Subjects Who Completed the Study
- Normalize the Collected Country and Assign Its Region
- Derive period-scoped treatments and dates across a washout
- Standardize Collected Sex, Race, and Age
- Summarize End-of-Study and End-of-Treatment Disposition
- Flag Any Reported Dose Adjustment
- Derive Exposure Duration in Weeks and Months
- Derive a Chain of Population Flags
- Keep an Investigator Comment Exactly as Collected
- Derive the new anti-cancer therapy start date
- Derive Randomization Timing
- First Rescue Medication
- Parse the Site from the Subject Identifier
- Select the Actual Treatment and Its Exposure Dates
ADTR¶
2 benchmarks
ADTTE¶
5 benchmarks
- Duration of Response
- Measure Time to the First Adverse Event
- Overall Survival
- Progression-Free Survival
- Time to Deterioration for a PRO Endpoint
ADVS¶
11 benchmarks
- Derive BMI
- Derive Body Surface Area
- Once-Measured Carryforward
- Carry the First Observed Vital-Sign Result
- Carry the last observed value across missing visits
- Carry one observed record to each planned visit
- Derive mean arterial pressure records
- Derive growth percentile records
- Retain the Latest Earlier Character Result
- Assign Analysis Windows from the Window Table
- Assign Analysis Windows by Study Day
AE¶
5 benchmarks
- Code Reported Terms Against a Medical Dictionary
- MedDRA Hierarchy from Coder-Assigned LLT Codes
- Repeated Adverse Events from ODM
- Partial Adverse Event Dates
- Seriousness Criteria
CLINSITE¶
1 benchmark
CM¶
3 benchmarks
- Collected Medications with Dose Text and Timing References
- Repeated Concomitant Medications from ODM
- Code medications against WHODrug
DM¶
7 benchmarks
- Age From Birthdate
- Arm Assignment
- Basic Demographics
- Reference Dates
- Death Date Flag
- Metadata Contract
- Record race and ethnicity, with one supplemental record per race
DS¶
3 benchmarks
EC¶
1 benchmark
EX¶
3 benchmarks
FA¶
3 benchmarks
LB¶
9 benchmarks
- Standardize Non-Numeric Lab Results
- Conditional Compartments
- Build One Record per Collected Lab Result
- CTCAE v5.0 Grading
- Lab-Specific Reference Ranges
- Last Observation Before Exposure
- Value-Level Metadata
- Multiform Labs
- Reference Range Flags
MH¶
2 benchmarks
PR¶
1 benchmark
QS¶
1 benchmark
RELREC¶
2 benchmarks
RS¶
1 benchmark
SE¶
1 benchmark
SUPPMH¶
2 benchmarks
SV¶
1 benchmark
Specification¶
44 benchmarks
- Aggregate Derive Reads an Intermediate
- Subject Dose Aggregation
- Birth Date Completion
- Column Composition
- Derive Date Epoch
- Derive Text Score
- Expression Forms
- Call a Project Routine
- Stated Fallbacks
- Spec Inheritance
- Shared Input, Project Data
- Inherited Output
- Execution Lifecycle
- Fatal Event Join
- Lookup Filters
- Select a Measurement Closest to Each Reference Day
- Derived Intermediate Rank
- End-of-Study Record
- Non-Finite Values
- Numeric Functions
- Replace Collected Sex with a Reviewed Unknown Value
- Form-Scoped Items
- Lab Results with Their Own Sample Dates
- One Collected Answer per Subject
- Ordering
- Parquet Everywhere
- Predicates
- Pin ties half away from zero
- Row Count Bounds
- Row Templates
- One Template Replacing a Column Default
- Sentence Case and Title Case
- Shorthand Spellings
- Source Binding
- Source record ordinal
- Boolean Substring Flags
- Missing Term Yields Unknown Skin Flag
- Show Where Each Column Comes From
- Text Operations
- Text Mapping
- Uncollected codes stay missing; outside-codelist codes are labelled
- What Was Checked
- Visit-Level Window Functions
- Window Rank Over Intermediate Records
TR¶
1 benchmark
TU¶
1 benchmark
VS¶
6 benchmarks
- Collected Vital Signs Form
- Assign Each Vital Sign's Trial Period
- Planned Time Points Around Dosing
- Replicate Readings
- Visit Study Day
- Standardize Vital-Signs Units
Anti-pattern¶
137 benchmarks. Each must fail, and expected/error.yaml pins the error it raises.
ADAE¶
19 benchmarks
- Reject Date Extraction
- Reject Incomplete Date
- Reject Mixed Zones
- Reject Nonexistent Day
- Reject Impossible Month
- Reject Non-Date Source
- Reject Unknown Day
- Reject Missing Month
- Reject Unreachable Month
- Reject Repeated Order
- Reject Non-Date Flag
- Reject Slot Overflow
- Reject Invalid Ranking
- Reject Date Arithmetic in a Condition
- Reject Date-Text Comparison
- Reject Unknown Date
- Reject Boolean str_contains Result in a Text Column
- Reject Invalid Regex in str_contains
- Reject Non-Numeric Sum
ADEG¶
1 benchmark
ADEX¶
6 benchmarks
- Reject Uncomputed Dose
- Reject Dose Expansion
- Reject Per-Record RDI
- Reject a Day Count from Text
- Reject Unit Suffix
- Reject Unknown Field
ADLB¶
26 benchmarks
- Reject Self-Referential Parameter
- Reject Duplicate WBC
- Reject Duplicate Baselines
- Reject Ambiguous Type
- Fail an Unnamed Count on Bad Data
- Reject Formula Flag
- Reject Forward Reference
- Reject Integer Overflow
- Reject Log Zero
- Reject Duplicate Key
- Reject Partial Key
- Reject Unmapped Key
- Reject Multiple Baselines
- Reject Below-Limit Value
- Reject Absolute Path
- Reject Folder Path
- Reject Missing Table
- Reject Parent Escape
- Reject Symlink Path
- Reject URL Path
- Reject Row Aggregate
- Reject Numeric Filter
- Reject Self Reference
- Reject a Nonnumeric Padding Width
- Reject Tied Baseline
- Reject Zero Division
ADRS¶
2 benchmarks
ADSL¶
48 benchmarks
- Reject Coded Age
- Reject Age Bands for a Missing Age
- Reject Mixed Endpoints
- Reject Mixed Units
- Reject Partial Date as a Datetime Source
- Reject Datetime Precision from a Partial Date
- Reject Broken Flag Condition
- Reject Flag Without Missing Value
- Reject Numeric Flag
- Reject Mixed Scales
- Reject Implausible Age
- Reject Invalid Sex
- Reject Conflicting Ages
- Reject a Site-Scoped Subject Identity
- Reject Mixed Types
- Reject Structured Literal
- Reject Repeated End-of-Study Records
- Reject Self-Named Treatment
- Reject Unchosen Record
- Reject Unordered Choice
- Reject Case Collision
- Reject Unreadable Pattern
- Reject Negative Sqrt
- Reject Missing Age
- Reject Duplicate Subject
- Reject Transport Container Output
- Reject Dates That Are Not Paired
- Reject Cleared Property
- Reject Redefined Date
- Reject rounding a coded value
- Reject Bad Sex
- Reject Bad Encoding
- Reject Duplicate Key
- Reject Extra Field
- Reject Duplicate Field
- Reject NA Age
- Reject Undeclared Field
- Reject Unknown Format
- Reject Unnamed Field
- Reject Unterminated Quote
- Reject Numeric Lowercase
- Reject Unknown Case
- Reject Uncaptured Group
- Reject Strata Mismatch
- Reject Study Datetime
- Reject Malformed Reference
- Reject Duplicate SITEID
- Reject Nested Expression
ADVS¶
10 benchmarks
- Reject Fractional Pulse
- Reject Self Fallback
- Reject a Key That Depends on a Later Column
- Reject carry-forward without an assessment order
- Reject a Missing Output Key
- Reject Overlapping Windows
- Reject Fixed Carryforward
- Reject Missing Prior
- Reject Self-Filled Weight
- Reject an undefined visit ordering
CM¶
1 benchmark
DM¶
11 benchmarks
- Reject an Item Read for Rows Built Elsewhere
- Reject an Answer Recorded at Two Visits
- Reject a Record the Extract Repeats
- Reject Two Fields That Name One Value
- Reject an Extract Without Its Form Level
- Reject Declared Types on ODM Data
- Reject a Record Without Its Subject
- Reject Duplicate Sex
- Reject Missing Field
- Reject Trivial Filter
- Reject Long Identifier
LB¶
5 benchmarks
- Reject Mismatched Lists
- Reject Missing Sex
- Reject Uninferable Key
- Reject Unmatched Key
- Reject a Laboratory Result Without a Unit Conversion
RECORDS¶
1 benchmark
SUPPDM¶
1 benchmark
TEST¶
1 benchmark
VS¶
2 benchmarks
yamaa benchmark¶
3 benchmarks