private Map<String, String> generateGtCodeToArchetypeMap(Guide guide) { Map<String, String> gtCodeToArchetypeKey = new HashMap<>(); for (ArchetypeBinding archetypeBinding : guide.getDefinition().getArchetypeBindings().values()) { String archetypeKey = getArchetypeKey(archetypeBinding); for (ElementBinding elementBinding : archetypeBinding.getElements().values()) { gtCodeToArchetypeKey.put(elementBinding.getId(), archetypeKey); } } return gtCodeToArchetypeKey; }
public static Map<String, String> getGtCodeElementIdMap(Guide guide, String domainId) { Map<String, String> gtCodeElementIdMap = new HashMap<>(); if (guide.getDefinition() == null || guide.getDefinition().getArchetypeBindings() == null) { return gtCodeElementIdMap; } for (ArchetypeBinding archetypeBinding : guide.getDefinition().getArchetypeBindings().values()) { if (domainId == null || archetypeBinding.getDomain() == null || domainId.equals(archetypeBinding.getDomain())) { for (ElementBinding elementBinding : archetypeBinding.getElements().values()) { gtCodeElementIdMap.put(elementBinding.getId(), archetypeBinding.getArchetypeId() + elementBinding.getPath()); } } } return gtCodeElementIdMap; } }
private static String getGTCodeForPredicate(ArchetypeBinding archetypeBinding, String path, DataValue dv) { DvCodedText dvCodedText = null; if (dv instanceof DvCodedText) { dvCodedText = ((DvCodedText) dv); } else if (dv instanceof DvOrdinal) { dvCodedText = ((DvOrdinal) dv).getSymbol(); } if (dvCodedText != null && "local".equals(dvCodedText.getTerminologyId()) && dvCodedText.getCode().startsWith("gt")) { return dvCodedText.getCode(); } if (archetypeBinding.getElements() != null) { for (ElementBinding elementBinding : archetypeBinding.getElements().values()) { if (elementBinding.getPath().equals(path)) { return elementBinding.getId(); } } } return null; }
private void generateGTCodeMapForElementBinding( ArchetypeBinding archetypeBinding, ArchetypeInstantiationRuleLine airl, ElementBinding elementBinding) { ArchetypeElementInstantiationRuleLine aeirl = new ArchetypeElementInstantiationRuleLine(airl); aeirl.setReadableGuide(readableGuide); aeirl.setGTCode(elementBinding.getId()); if ("/event/time".equals(elementBinding.getPath())) { elementBinding.setPath(OpenEHRRMUtil.EVENT_TIME_PATH); } String elementId = archetypeBinding.getArchetypeId() + elementBinding.getPath(); ArchetypeElementVO archetypeElementVO = archetypeManager.getArchetypeElements().getArchetypeElement( archetypeBinding.getTemplateId(), elementId); if (archetypeElementVO == null) { throw new RuntimeException( "Element '" + elementId + (archetypeBinding.getTemplateId() != null ? " (" + archetypeBinding.getTemplateId() + ")" : "") + "' not found!"); } aeirl.setArchetypeElementVO(archetypeElementVO); gtCodeElementMap.put(elementBinding.getId(), aeirl); } }
private static GeneratedArchetypeReference getGeneratedArchetypeReference( ArchetypeBinding archetypeBinding, String guideId, Guide guide, DateTime dateTime, boolean resolvePredicates) { GeneratedArchetypeReference ar = new GeneratedArchetypeReference( archetypeBinding.getDomain(), archetypeBinding.getArchetypeId(), archetypeBinding.getTemplateId()); if (archetypeBinding.getElements() != null) { for (ElementBinding elementBinding : archetypeBinding.getElements().values()) { String idElement = archetypeBinding.getArchetypeId() + elementBinding.getPath(); GeneratedElementInstance gei = new GeneratedElementInstance( idElement, null, ar, null, NULL_FLAVOUR_CODE_NO_INFO); gei.getRuleReferences().add(new RuleReference(guideId, elementBinding.getId())); } } generatePredicateElements(archetypeBinding, ar, guideId, guide, dateTime, resolvePredicates); return ar; }