...
List<VisitType> visitTypes = metadataService.getItems(VisitType.class, "SOME-SOURCE"); //should be implemented as generic <T> getItems(T type, String source);
Fetch all visit types for the given set:
List<VisitType> visitTypes = metadataSerivce.getItems(VisitType.class, "SOME-SOURCE", "CODE"); //should be implemented as generic <T> getItems(T type, String source, String code);
//source = metadataSet.source.name, code = metadataSet.code
Retire term:
List<MetadataTerm> terms = metadataService.getMetadataTerms(location);
...
MetadataSource source = metadataService.getMetadataSourceByUuid(String uuid);etc
MetadataTerm, MetadataSource, MetadataSet should support all CRUD operations.