/** * Instantiates a new concept expression impl. * * @param uuid the uuid * @param concept the concept */ public ConceptExpressionImpl(UUID uuid, SnomedConcept concept) { super(uuid); if (concept != null) { this.concept = concept; conceptId = concept.getConceptID(); } else { throw new IllegalArgumentException("Concept passed can not be null."); } }
/** * Populate relationships. * * @param concept the concept */ @Transient protected void populateRelationships(SnomedConcept concept) { // get parents and add as parent expressions for (SnomedConcept parent : concept.getParents()) { ConceptExpression parentExpression = new ConceptExpressionImpl(parent); parentExpression.addChildExpression(this); } // get children and add as child expressions for (SnomedConcept child : concept.getChildren()) { addChildExpression(new ConceptExpressionImpl(child)); } /* process relationships; we know that all defining relationships and role groups associated with them need to go into an equivalent expression composed on an intersection expression */ Collection<Expression> expressions = new HashSet<Expression>(); for (SnomedRelationship relationship : concept.getDefiningRelationships()) { expressions.add(new SnomedRelationshipPropertyExpression(relationship)); } // process role groups for (SnomedRoleGroup roleGroup : concept.getRoleGroups()) { expressions.add(new SnomedRoleGroupExpression(roleGroup)); } // create an intersection expression and add as equivalent expression IntersectionExpression intersectionExpression = new IntersectionExpressionImpl(expressions); intersectionExpression.addChildExpression(this); // process refining relationships for (SnomedRelationship relationship : concept.getRefiningRelationships()) { SnomedRelationshipPropertyExpression relationshipPropertyExpression = new SnomedRelationshipPropertyExpression(relationship); relationshipPropertyExpression.addChildExpression(this); } }