PJSIP shows wrong DIALSTATUS for outgoing call

Not a direct answer, but the channel drivers actually return a simulated ISDN cause code (unless they are real ISDN ones), so it is likely to be useful to know what HANGUPCAUSE was actually returned, as the issue with translation could be either incoming or outgoing.

Ideally, one would think that the translations should conform to https://tools.ietf.org/html/rfc3398#page-45 for the outgoing side, and https://tools.ietf.org/html/rfc3398#page-24 for the incoming side.

Because of its back to back user agent nature, you cannot expect Asterisk to losslessly forward anything other that real ISDN cause codes.