from __future__ import annotations from dataclasses import dataclass from typing import List from genomic_consultant.acmg.tagger import ACMGConfig, tag_variant from genomic_consultant.panels.panels import GenePanel from genomic_consultant.store.query import GenomicStore from genomic_consultant.utils.models import FilterConfig, SuggestedClassification, Variant @dataclass class PanelVariantResult: variant: Variant acmg: SuggestedClassification @dataclass class PanelAnalysisResult: individual_id: str panel: GenePanel variants: List[PanelVariantResult] def run_panel_variant_review( individual_id: str, panel: GenePanel, store: GenomicStore, acmg_config: ACMGConfig, filters: FilterConfig | None = None, ) -> PanelAnalysisResult: """Query variants for a panel and attach ACMG evidence suggestions.""" variants = store.get_variants_by_gene(individual_id=individual_id, genes=panel.genes, filters=filters) enriched = [PanelVariantResult(variant=v, acmg=tag_variant(v, acmg_config)) for v in variants] return PanelAnalysisResult(individual_id=individual_id, panel=panel, variants=enriched)