private Set<String> getReferenceGuideIds(DataValue dv, Collection<RuleReference> ruleReferences) { Set<String> guideIds = new HashSet<>(); if (dv instanceof DvCodedText) { DvCodedText dvCT = (DvCodedText) dv; for (RuleReference ruleReference : ruleReferences) { if (ruleReference.getGtCode().equals(dvCT.getCode())) { guideIds.add(ruleReference.getGuideId()); } } } else { for (RuleReference ruleReference : ruleReferences) { guideIds.add(ruleReference.getGuideId()); } } return guideIds; }
private Map<String, Collection<GuideBinaryExpressionItem>> generateAllConditionsByElementIdMap() { Map<String, Collection<GuideBinaryExpressionItem>> allConditionsByElementId = new HashMap<>(); for (Guide guide : guideMap.values()) { if (guide.getDefinition() != null) { for (Rule rule : guide.getDefinition().getRules().values()) { Collection<BinaryExpression> simpleConditionsFromExpressionItems = getSimpleConditionsFromExpressionItems(guide, rule); for (BinaryExpression binaryExpression : simpleConditionsFromExpressionItems) { if (binaryExpression.getLeft() instanceof Variable) { Variable variable = (Variable) binaryExpression.getLeft(); RuleReference ruleReference = new RuleReference(guide.getId(), variable.getCode()); ElementInstance elementInstance = getElementInstanceByRuleReferenceMap().get(ruleReference); if (elementInstance == null) { if (!OpenEHRConst.CURRENT_DATE_TIME_ID.equals(ruleReference.getGtCode())) { logger.warn("ElementInstance not found for " + ruleReference); } } else { Collection<GuideBinaryExpressionItem> guideBinaryExpressionItems = allConditionsByElementId.computeIfAbsent(elementInstance.getId(), k -> new ArrayList<>()); guideBinaryExpressionItems.add(new GuideBinaryExpressionItem(guide.getId(), binaryExpression)); } } } } } } return allConditionsByElementId; }
String gtCode = null; if (!elementInstancesWithGTCode.getRuleReferences().isEmpty()) { gtCode = elementInstancesWithGTCode.getRuleReferences().iterator().next().getGtCode();