That's quite an innovative solution, but you can just check if the spell is either a Potion, Poison or Ingredient using the parameter supplied with the event. So your OnSpellCast event would look like this:
Event OnSpellCast(Form akSpell) if (akSpell as Potion) Debug.Trace("We just drank a potion!") endif if (akSpell as Spell) Debug.Trace("We just cast a spell!") endIf if (akSpell as Ingredient) Debug.Trace("We just ate an ingredient!") endIfendEvent
A poison is also a potion, but you can find the difference between a potion and a poison using IsHostile(). The only problem is, for some reason Bethesda decided that Poisons don't trigger the OnSpellCast event.