Interesting.

I note that you are including (inflicting?) a fair number of permissions in there. All to the good, really; although I must admit that my own approach has always been to assume that the user (generally lonely biomeds) had sufficient
mukh - المخابرات - to make use of the system - access to the "tools" - without too much "control" (not the same as error-trapping, by the way). "Giving them enough rope", you might say.

However, as our world has become nowadays - increased levels of regulation, litigious environment, and what-have-you, I acknowledge that a new system needs to include access permissions at various levels and for various operations.
It seems that we agree on the issue of international numbering systems devised by others - GMDN and its friends; a look-up table (cross-references) is probably the best approach.
But your own internal code(s) sounds a bit long, by the way. How many characters is that? And, what about location (department, room number) within each facility? Why not just use a unique number internally within the program? But changing location by "simply" changing a few characters within the unique equipment string (have I got that right?) sounds good.
OK, more questions. Where is the data held? On a server at each site?
2D matrix? Relational database?

Parts usage and stock control?
And what about PM? Does your system include PM Procedures? How do you handle that (those)?
Is C# any good for database management then? I have never tried it myself (and, at my stage of the game, am hardly ever likely to), but I used to "enjoy" C back in the Good Old Days (of DOS). As you probably know, a lot of the languages back then (dBASE et al), as well as many DOS commands themselves, were written in C.