What I meant about name conflicts is that HivMetadata.Location conflicts with org.openmrs.Location.

I like your enum idea because it means that metadata identification isn't separate from description. Not entirely sure though how MetadataUtils.getLocation(LocationBuilder builder) {} would work