private void filterMaxMin(String elementId, Collection<ArchetypeReference> ehrArchetypeReferences, boolean max) { final Set<ArchetypeReference> archetypeReferencesToRemove = new HashSet<>(); ElementInstance maxElementInstance = null; for (ArchetypeReference archetypeReference : ehrArchetypeReferences) { ElementInstance elementInstance = archetypeReference.getElementInstancesMap().get(elementId); if (elementInstance != null) { if (elementInstance.getDataValue() != null) { if (maxElementInstance == null || isMaxMin(elementInstance, maxElementInstance, max)) { if (maxElementInstance != null) { archetypeReferencesToRemove.add(maxElementInstance.getArchetypeReference()); } maxElementInstance = elementInstance; } else { archetypeReferencesToRemove.add(elementInstance.getArchetypeReference()); } } else { archetypeReferencesToRemove.add(elementInstance.getArchetypeReference()); } } } ehrArchetypeReferences.removeAll(archetypeReferencesToRemove); }
private DateTime getDateTime(ElementInstance ei) { if (ei != null) { if (ei.getDataValue() instanceof DvDateTime) { DvDateTime dvDateTime = ((DvDateTime) ei.getDataValue()); if (dvDateTime.getDateTime() != null) { return dvDateTime.getDateTime(); } else { logger.warn("Element instance '" + ei.getId() + "' has no DVDateTime."); } } else { String dvType = ei.getDataValue() == null ? "null" : ei.getDataValue().getClass().getSimpleName(); logger.warn("Element instance '" + ei.getId() + "' data value is not DVDateTime, '" + dvType + "' found instead.)"); } } else { logger.debug("Element instance null"); } return null; }
private static ElementInstance cloneElementInstanceWithGTCodes(ElementInstance ei, ArchetypeReference ar, boolean useGTCodes) { ei = ei.clone(); ei.setArchetypeReference(ar); if (!useGTCodes && ei instanceof GeneratedElementInstance) { ((GeneratedElementInstance) ei).getRuleReferences().clear(); } return ei; }
public void focusLost(FocusEvent ev) { DataValue dataValue = null; if (dvGenericPanel.isValidDV()) { dataValue = dvGenericPanel.getDataValue(); } elementInstance.setDataValue(dataValue); elementInstance.setNullFlavour(dataValue != null ? null : GuideUtil.NULL_FLAVOUR_CODE_NO_INFO); } }
private DVGenericPanel getDVGenericForElement(ElementInstance elementInstance) { String idTemplate = elementInstance.getArchetypeReference().getIdTemplate(); String idElement = elementInstance.getId(); ArchetypeElementVO archetypeElement = archetypeManager.getArchetypeElements().getArchetypeElement( idTemplate, idElement); String rmType = archetypeElement.getType(); DVGenericPanel dvGenericPanel = dvPanelFactory.createDVPanel(idElement, idTemplate, rmType, true, true, false); if (dvGenericPanel != null) { dvGenericPanel.setDataValue(elementInstance.getDataValue()); } return dvGenericPanel; }
public DVGenericPanel createDVGenericPanel(ElementInstance elementInstance) { if (!Domains.CDS_ID.equals(elementInstance.getArchetypeReference().getIdDomain()) && elementInstance instanceof PredicateGeneratedElementInstance) { elementInstance = new ElementInstance( elementInstance.getId(), null, elementInstance.getArchetypeReference(), null, OpenEHRConstUI.NULL_FLAVOUR_CODE_NO_INFO); } DVGenericPanel dvGenericPanel = getDVGenericForElement(elementInstance); for (JComponent component : dvGenericPanel.getJComponents()) { if (component instanceof JDateChooser) { ((JDateChooser) component).getDateEditor().getUiComponent().addFocusListener(new DVGenericComponentFocusAdapter(dvGenericPanel, elementInstance)); } else { component.addFocusListener(new DVGenericComponentFocusAdapter(dvGenericPanel, elementInstance)); } if (Domains.CDS_ID.equals(elementInstance.getArchetypeReference().getIdDomain()) || elementInstance instanceof PredicateGeneratedElementInstance) { DvSwingManager.disable(component); } } return dvGenericPanel; }
public void addAll(Collection<ElementInstance> elementInstances) { Set<ArchetypeReference> archetypeReferences = new HashSet<>(); for (ElementInstance elementInstance : elementInstances) { archetypeReferences.add(elementInstance.getArchetypeReference()); } addAll(archetypeReferences, null); }
public JLabel createLabelForElement(ElementInstance elementInstance, TermDefinition termDefinition) { ArchetypeElementVO archetypeElement = archetypeManager.getArchetypeElements().getArchetypeElement( elementInstance.getArchetypeReference().getIdTemplate(), elementInstance.getId()); JLabel label; String name = archetypeManager.getArchetypeElements().getText(archetypeElement, archetypeManager.getUserConfigurationManager().getLanguage()); name = term.getText(); } else { LoggerFactory.getLogger(DvSwingManager.class).warn("Term translation not found for '" + elementInstance.getId() + "'"); archetypeReferencesManager.getHTMLTooltip( archetypeElement, elementInstance.getArchetypeReference())); Icon dvIcon = OpenEHRDataValuesUI.getIcon(archetypeElement.getType()); Icon domainIcon = DomainsUI.getGroupIconFromArchetypeReference(elementInstance.getArchetypeReference()); label.setIcon(new MultipleIcon(new Icon[]{domainIcon, dvIcon})); return label;
private boolean isMaxMin(ElementInstance elementInstance, ElementInstance maxElementInstance, boolean max) { int compare = DVUtil.compareDVs(elementInstance.getDataValue(), maxElementInstance.getDataValue()); if (max) { return compare >= 0; } else { return compare < 0; } }
public Set<String> getElementIdsByIdDomain(String idDomain) { Set<String> idElements = new HashSet<>(); Set<ElementInstance> elementInstances = getAllElementInstancesByDomain(idDomain); for (ElementInstance elementInstance : elementInstances) { idElements.add(elementInstance.getId()); } return idElements; }
(PredicateGeneratedElementInstance) originalEI; DataValue dv = originalEI.getDataValue(); if (guideManager != null) { Collection<Guide> guides = getGuides(guideManager, predicateOriginalEI, dv); ElementInstance ei = originalEI.clone(); ei.setArchetypeReference(arAux); if (originalEI instanceof GeneratedElementInstance) { GeneratedElementInstance generatedElementInstance = (GeneratedElementInstance) originalEI;
private static void checkForMissingPathsInEHR( ElementInstanceCollection ehrEIC, ElementInstanceCollection generatedEIC) { Map<String, ArchetypeReference> compressedARsMap = getCompressedQueryArchetypeReferencesMap(generatedEIC.getAllArchetypeReferences()); for (ArchetypeReference ar : ehrEIC.getAllArchetypeReferences()) { ArchetypeReference compressedAR = compressedARsMap.get(ar.getIdArchetype()); if (compressedAR != null) { for (String elementId : compressedAR.getElementInstancesMap().keySet()) { if (!ar.getElementInstancesMap().containsKey(elementId)) { new ElementInstance(elementId, null, ar, null, OpenEHRConstUI.NULL_FLAVOUR_CODE_NO_INFO); } } } } }
@Override public ArchetypeReference deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { ArchetypeReference archetypeReference = gson.fromJson(json, ArchetypeReference.class); for (ElementInstance elementInstance : archetypeReference.getElementInstancesMap().values()) { elementInstance.setArchetypeReference(archetypeReference); } return archetypeReference; } }
private void filterIsAExternalTerminology( boolean negation, Set<ArchetypeReference> archetypeReferencesToRemove, Set<CodePhrase> codePhrases, ElementInstance elementInstance, CodePhrase codePhrase) { boolean isA = terminologyService.isSubclassOf(codePhrase, codePhrases); if ((!isA && !negation) || (isA && negation)) { archetypeReferencesToRemove.add(elementInstance.getArchetypeReference()); } }
private int getNumPredicates(ArchetypeReference archetypeReference) { int count = 0; for (ElementInstance elementInstance : archetypeReference.getElementInstancesMap().values()) { if (elementInstance instanceof PredicateGeneratedElementInstance && elementInstance.getDataValue() != null) { count++; } } return count; } }
private Map<String, Collection<GuideAssignmentExpression>> generateAllAssignmentsByElementIdMap() { Map<String, Collection<GuideAssignmentExpression>> allAssignmentsByElementId = new HashMap<>(); for (Guide guide : guideMap.values()) { if (guide.getDefinition() != null) { for (Rule rule : guide.getDefinition().getRules().values()) { Collection<AssignmentExpression> simpleAssignmentsFromExpressionItems = getSimpleAssignmentsFromExpressionItems(rule.getThenStatements()); for (AssignmentExpression assignmentExpression : simpleAssignmentsFromExpressionItems) { Variable variable = assignmentExpression.getVariable(); RuleReference ruleReference = new RuleReference(guide.getId(), variable.getCode()); ElementInstance elementInstance = getElementInstanceByRuleReferenceMap().get(ruleReference); if (elementInstance == null) { logger.warn("ElementInstance not found for " + ruleReference); } else { Collection<GuideAssignmentExpression> guideAssignmentExpression = allAssignmentsByElementId.computeIfAbsent(elementInstance.getId(), k -> new ArrayList<>()); guideAssignmentExpression.add(new GuideAssignmentExpression(guide.getId(), assignmentExpression)); } } } } } return allAssignmentsByElementId; }
private void filterEquals( PredicateGeneratedElementInstance predicate, Collection<ArchetypeReference> ehrArchetypeReferences, boolean negation) { final Set<ArchetypeReference> archetypeReferencesToRemove = new HashSet<>(); for (ArchetypeReference archetypeReference : ehrArchetypeReferences) { ElementInstance elementInstance = archetypeReference.getElementInstancesMap().get(predicate.getId()); if (elementInstance != null) { DataValue dataValue = elementInstance.getDataValue(); if (dataValue != null) { boolean equals = dataValue.equals(predicate.getDataValue()); if ((!equals && !negation) || (equals && negation)) { archetypeReferencesToRemove.add(elementInstance.getArchetypeReference()); } } else { archetypeReferencesToRemove.add(elementInstance.getArchetypeReference()); } } } ehrArchetypeReferences.removeAll(archetypeReferencesToRemove); }
private void filterIsALocalTerminology( boolean negation, Set<ArchetypeReference> archetypeReferencesToRemove, Set<CodePhrase> codePhrases, ElementInstance elementInstance, CodePhrase codePhrase) { boolean isA = simpleIsACheck(codePhrase, codePhrases); if ((!isA && !negation) || (isA && negation)) { archetypeReferencesToRemove.add(elementInstance.getArchetypeReference()); } }
public static boolean equalDV(boolean inPredicate, ElementInstance ei, DataValue dv2, boolean negated) { if (ei instanceof PredicateGeneratedElementInstance) { return inPredicate; } else { boolean result = DVUtil.equalDVs(ei.getDataValue(), dv2); if (negated) { return !result; } else { return result; } } }
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; }