I can see nothing that will cause you problems. As it is working you must have already realised that you need a voip provider that accepts CallerID spoofing. Also in the OBi you need to set:
Service Providers -> ITSP Profile X -> SIP -> X_SpoofCallerID : checked
I would make a few minor changes:
{911:pli(12223334444>)},{15555550911:pli(12223334444>)},{([1-9]x?*(Mpli)):pp},{(<#:>):ph2},{(<**82:>(Mbt2)):bt2},{(<**81:>(Mbt)):bt},{(<**8:>(Mbt)):bt},{**0:aa},{***:aa2},{(<**1:>(Msp1)):sp1},{(<**2:>(Msp2)):sp2},{(<**3:>(Msp3)):sp3},{(<**4:>(Msp4)):sp4},{(<**9:>(Mpp)):pp},{(Mpli):pli(17778889999>)}
Some of the parentheses are not required - they do no harm.
If you leave out the $2 OBi will assume it.
I prefer to see emergency numbers at the beginning of the OutboundCallRoute. The rules are processed from left to right, so your emergency numbers get looked at first.
I would replace pli in the first two emergency rules with the actual trunk (sp1, sp2 etc) to avoid any confusion if you make future changes.
Anyhow, all minor things - your version should work fine.