The Home SMS-SC can query the HLR (or now UDC/HSS) to determine if the End User is in the HPLMN or if they are Roaming. MAP V3 (or higher) can be used with the HLR/UDC/HSS. The MAP query will be AnyTimeInterrogation(). This will provide the status of the End User and the Location.
HLR supports a lot of barring flags that can be configured using MML.