What specifically isn't working with 3-digit numbers in your environment? There really isn't much to getting it working so is it related to your OCS configuration or the gateway config?
It's typically recommended to use separate Voice Policies and Phone Usage for 911 and all other three digit codes (211, through 811) so that you can include 911 in ALL usages but may block the other codes for certain users if you don't want everyone racking up 411 charges.
With that in mind, and assuming you are using the prefix '9' to dial out, the normalization patterns and translations would look like:
Local 911
^911$
911
All 3-digit service codes
^9([2-9)]11)$
$1