A consumer DNA export gives you positions and genotypes. Pharmacogenomic guidance is written about star alleles — CYP2C19 *2/*2, not rs4244285 AA. Something has to translate between them, and that translation is where a confident wrong answer becomes a medication decision.
Why the caller sits upstream of every other guard
The lookup that turns a diplotype into a metabolizer phenotype is deterministic and well tested, which is exactly the problem: hand it a mis-called *2/*2 and it will faithfully return a confident "poor metabolizer". No downstream check can catch that, because nothing downstream can see the genotype any more.
So the caller owns its own gate and defaults to producing nothing. Silence is a supported outcome; a plausible guess is not.
Three things that make it return nothing
Strand ambiguity: genotypes are resolved against both strands, and palindromic SNPs — A/T and C/G, where the two strands are indistinguishable — are refused rather than assumed.
Phasing: heterozygous at two loss-of-function SNPs is genuinely ambiguous from unphased consumer data. It could be *2/*3 (poor metabolizer) or *1 carrying both (intermediate). Without phase information those cannot be told apart, so the caller declines instead of picking the likelier one.
Absence of a variant is not evidence of the reference allele. An all-reference genotype yields no phenotype at all, because the alleles that were never tested for — *17, for instance — could still be there. Reporting "*1/*1, normal" from a panel that only looked at two positions would be the most dangerous output the system could produce.
Hardened by trying to break it
The caller went through an adversarial review pass whose only job was to find inputs that produced a confident wrong answer. Two changes came out of it: reported markers now cite only the SNPs actually measured rather than the gene's full panel, and biologically impossible input — homozygous variant at two distinct alleles at once — is refused outright instead of being quietly reduced to something plausible.
What this deliberately does not do
- CYP2C19 loss-of-function alleles (*2, *3) only — CYP2D6 needs copy-number calling and CYP2C9 needs phasing, so neither is offered
- Palindromic SNPs and unphased double-heterozygotes return no call at all
- An all-reference result is reported as untested, never as normal metabolism
- Screening only. Nothing here is a diagnosis or a dosing instruction