Look into a MAPPING table approach:
If I've understood correctly, you would need to create three mapping tables, one table each for mapping license, EIN and NPI to customer.
Then, in your fact table, you can use nested ApplyMap() functions to first check the most probable mapping, then, if no map found the second mapping table, then the third, Something like
LOAD License, Customer
LOAD EIN, Customer
LOAD NPI, Customer
ApplyMap('MAP3', NPI, 'Mapping failed') ) ) AS Customer,