package se.cambio.openehr.controller.session.data; import org.openehr.am.archetype.Archetype; import org.openehr.am.archetype.ontology.ArchetypeOntology; import org.openehr.am.archetype.ontology.ArchetypeTerm; import org.openehr.am.archetype.ontology.OntologyDefinitions; import java.util.HashMap; import java.util.List; import java.util.Map; public class ArchetypeTerms { private Map<String, Map<String, Map<String, ArchetypeTerm>>> archetypeTermsMap = null; public ArchetypeTerms() { } public void loadArchetype(Archetype archetype){ ArchetypeOntology ao = archetype.getOntology(); List<OntologyDefinitions> ods = ao.getTermDefinitionsList(); for (OntologyDefinitions od : ods){ String lang = od.getLanguage(); List<ArchetypeTerm> archetypeTerms = od.getDefinitions(); for(ArchetypeTerm archetypeTerm: archetypeTerms){ getArchetypeTermsMap(archetype.getArchetypeId().getValue(), lang).put(archetypeTerm.getCode(), archetypeTerm); } } } public ArchetypeTerm getArchetypeTerm(String archetypeId, String lang, String atCode){ return getArchetypeTermsMap(archetypeId, lang).get(atCode); } private Map<String, ArchetypeTerm> getArchetypeTermsMap(String archetypeId, String lang){ Map<String, ArchetypeTerm> archetypeTermMap = getArchetypeTermsMap(archetypeId).get(lang); if(archetypeTermMap==null){ archetypeTermMap = new HashMap<String, ArchetypeTerm>(); getArchetypeTermsMap(archetypeId).put(lang, archetypeTermMap); } return archetypeTermMap; } private Map<String, Map<String, ArchetypeTerm>> getArchetypeTermsMap(String archetypeId){ Map<String, Map<String, ArchetypeTerm>> archetypeTermMap = getArchetypeTermsMap().get(archetypeId); if(archetypeTermMap==null){ archetypeTermMap = new HashMap<String, Map<String, ArchetypeTerm>>(); getArchetypeTermsMap().put(archetypeId, archetypeTermMap); } return archetypeTermMap; } private Map<String, Map<String, Map<String, ArchetypeTerm>>> getArchetypeTermsMap(){ if(archetypeTermsMap==null){ archetypeTermsMap = new HashMap<String, Map<String, Map<String, ArchetypeTerm>>>(); } return archetypeTermsMap; } }