If the Pokémon is poisoned or badly poisoned, it will gain 1/8 of its maximum HP at the end of each turn instead of taking damage.
When a Pokémon with Poison Heal is badly poisoned, this has no effect on the Pokémon's HP recovery. However, the bad poison counter still increases each turn even if the Pokémon has Poison Heal; as such, if Gastro Acid is used on the Pokémon with Poison Heal after being badly poisoned for five turns, it will incur poison damage starting at 5/16 (instead of 1/16).
If a poisoned Pokémon with Poison Heal is affected by Heal Block, it will be neither healed nor damaged by the poison.
Outside of battle
Poison Heal has no effect outside of battle, so in Generation IV, poison will still hurt a Pokémon outside of battle even if it has this Ability.
When the Pokémon is poisoned or badly poisoned, it recovers HP from the status rather than taking damage. It also allows passive HP regeneration under poison.