VCV Aggregation Rules¶
Overview¶
VCV (Variant-level Classification) aggregation combines individual SCV (Submission-level Classification) submissions into aggregate variant-level classification statements. Each SCV represents a single submitter's classification of a variant; VCV aggregation produces a summary classification that reflects the consensus (or conflict) across all submissions for the same variant and statement type.
The aggregation process is governed by submission levels — categories that reflect the authority and review rigor behind each submission. Submission levels determine how classifications are combined, whether conflicts are detected, and what review status label the aggregate statement receives.
Submission Levels¶
Every SCV is assigned a submission level based on its ClinVar review status:
| Code | Label | Rank | Stars | Description |
|---|---|---|---|---|
| PG | practice guideline | 6 | 4 | Published practice guidelines from authoritative bodies |
| EP | expert panel | 5 | 3 | Classifications reviewed and approved by expert panels |
| CP | assertion criteria provided | 4 | 1 | Submitter provided criteria for their classification |
| NOCP | no assertion criteria provided | 3 | 0 | Classification submitted without documented criteria |
| NOCL | no classification provided | 2 | -1 | Submission present but no classification given |
| FLAG | flagged submission | 1 | -3 | Submission flagged by ClinVar for quality concerns |
Every submission level is aggregated independently — only SCVs with the same submission level can aggregate together. At the Aggregate Contribution Layer, submission levels are ranked PG > EP > CP > NOCP > NOCL > FLAG and the highest-ranked level becomes the winner-takes-all contributing result.
SCV Description Extension¶
Every SCV classification includes a formatted description extension that summarizes the submission context:
for <condition_name>
Classification is based on the <submission_level_label> submission
<evaluated_date> by <submitter_name>
Where:
- condition_name — the condition name from the SCV, or "
Nconditions" for submissions with multiple conditions - submission_level_label — the full label of the submission level (e.g., "expert panel", "assertion criteria provided")
- evaluated_date — formatted as
Mon YYYY, or(-)if not provided - submitter_name — the submitting organization name
This description is carried on the SCV classification and is not propagated onto VCV aggregate statements.
Aggregation by Submission Level¶
PG (Practice Guideline)¶
Practice guideline submissions are aggregated independently. Like CP, concordance and conflict detection produce a single aggregate label.
- Output attribute:
classification - Review status: always
practice guideline
EP (Expert Panel)¶
Expert panel submissions are aggregated independently. Like CP, concordance and conflict detection produce a single aggregate label.
- Output attribute:
classification - Review status: always
reviewed by expert panel
CP (Assertion Criteria Provided)¶
Standard aggregation with concordance and conflict detection.
- Output attribute:
classification— a single aggregate label - Concordant — all contributing SCVs share the same classification: the label is the shared classification name
- Conflicting — contributing SCVs have different classifications: the label becomes "Conflicting classifications of
<proposition_type>" with aconflictingExplanationextension showing the breakdown (e.g., "Pathogenic(3); Likely pathogenic(2)") - Review status upgrades: CP submissions may receive upgraded review status based on submitter count and concordance (see Aggregate Review Status)
NOCP (No Assertion Criteria Provided)¶
Same aggregation logic as CP — concordance/conflict detection produces a single label.
- Output attribute:
classification - No review status upgrade — always "no assertion criteria provided" regardless of submitter count or concordance
FLAG (Flagged Submissions)¶
No aggregation logic. Flagged submissions always produce a fixed result.
- Output attribute:
classification - Label: always "no classifications from unflagged records"
- No conflict detection
NOCL (No Classification Provided)¶
Passthrough with no aggregation logic.
- Output attribute:
classification - Label: always "not provided"
Classification Output¶
Every VCV statement uses a single classification attribute to represent its aggregate classification. The classification lives only on the statement — the proposition does not carry a copy of the classification value.
classification¶
Used by all submission levels (PG, EP, CP, NOCP, NOCL, and FLAG). Contains a single aggregate label with an optional conflictingExplanation extension when contributing SCVs disagree.
{
"classification": {
"conceptType": "Classification",
"name": "Pathogenic/Likely pathogenic",
"extensions": [
{"name": "conflictingExplanation", "value": "Pathogenic(3); Likely pathogenic(2)"}
]
}
}
The extension array is only present when the classification is conflicting.
confidence, direction, and strength¶
These statement-level fields are derived from the aggregate classification label:
confidence— a Concept struct withconceptType: "Confidence"andnameset to the submission level label (e.g.,"criteria provided","expert panel"). Set on every VCV statement.direction— derived from the classification label. For single-SCV aggregations, passed through directly from the contributing SCV. For multi-SCV aggregations, derived from the winning label.strength— derived from the classification label. For single-SCV aggregations, passed through directly from the contributing SCV. For multi-SCV aggregations, derived from the winning label. No hardcoded"definitive"value.
Aggregate Review Status¶
Every VCV statement includes a clinvarReviewStatus extension indicating the aggregate review confidence level. The value depends on the submission level and aggregation outcome.
| Submission Level | Condition | Review Status |
|---|---|---|
| PG | Any | practice guideline |
| EP | Any | reviewed by expert panel |
| CP | Single submitter | criteria provided, single submitter |
| CP | Multiple submitters, concordant | criteria provided, multiple submitters, no conflicts |
| CP | Multiple submitters, conflicting | criteria provided, conflicting classifications |
| NOCP | Any | no assertion criteria provided |
| NOCL | Any | no classification provided |
| FLAG | Any | flagged submission |
The review status appears in the statement-level extensions array:
{
"extensions": [
{"name": "clinvarReviewStatus", "value": "criteria provided, multiple submitters, no conflicts"}
]
}
Aggregation Hierarchy¶
VCV aggregation builds statements through a two-layer hierarchy. Each layer may consist of multiple SQL steps, but conceptually there are two aggregation layers.
Grouping Layer¶
The Grouping Layer produces the initial aggregation of individual SCVs into groups. It consists of two steps that run as separate SQL operations but form a single conceptual layer:
| Step | Name | Aggregates By | Description |
|---|---|---|---|
| Classification Grouping | gks_vcv_grouping_base_agg |
Variation + Statement Group + Proposition Type + Submission Level (+ Tier) | Lowest-level aggregation of individual SCVs. Applies submission-level-specific classification and conflict detection logic |
| Priority Grouping | gks_vcv_grouping_tier_agg |
Variation + Statement Group + Proposition Type + Submission Level | Combines tier-level groups (somatic sci only). Ranks tiers by priority, designates top tier as contributing |
Priority Grouping applies only to somatic tiered records (tier_grouping IS NOT NULL). Non-tiered records (all germline and non-sci somatic) flow directly from Classification Grouping to the Aggregate Contribution Layer.
Aggregate Contribution Layer¶
| Step | Name | Aggregates By | Description |
|---|---|---|---|
| Aggregate Contribution | gks_vcv_aggregate_contribution |
Variation + Statement Group + Proposition Type | Winner-takes-all across submission levels. This is the terminal layer for both germline and somatic statements |
Submission levels are ranked PG > EP > CP > NOCP > NOCL > FLAG. The highest-ranked submission level becomes the "contributing" result; all others become "non-contributing" evidence.
Each layer's output includes evidenceLines that reference the layer below, creating a nested structure in the final JSON output.