Search in sources :

Example 1 with WebTemplateNode

use of org.ehrbase.webtemplate.model.WebTemplateNode in project ehrbase by ehrbase.

the class KnowledgeCacheService method resolveForTemplate.

@Override
public JsonPathQueryResult resolveForTemplate(String templateId, Collection<NodeId> nodeIds) {
    TemplateIdQueryTuple key = new TemplateIdQueryTuple(templateId, nodeIds);
    JsonPathQueryResult jsonPathQueryResult = jsonPathQueryResultCache.get(key, JsonPathQueryResult.class);
    if (jsonPathQueryResult == null) {
        WebTemplate webTemplate = getQueryOptMetaData(templateId);
        List<WebTemplateNode> webTemplateNodeList = new ArrayList<>();
        webTemplateNodeList.add(webTemplate.getTree());
        for (NodeId nodeId : nodeIds) {
            webTemplateNodeList = webTemplateNodeList.stream().map(n -> n.findMatching(f -> {
                if (f.getNodeId() == null) {
                    return false;
                } else // compere only classname
                if (nodeId.getNodeId() == null) {
                    return nodeId.getClassName().equals(new NodeId(f.getNodeId()).getClassName());
                } else {
                    return nodeId.equals(new NodeId(f.getNodeId()));
                }
            })).flatMap(List::stream).collect(Collectors.toList());
        }
        Set<String> uniquePaths = new TreeSet<>();
        webTemplateNodeList.stream().map(n -> n.getAqlPath(false)).forEach(uniquePaths::add);
        if (!uniquePaths.isEmpty()) {
            jsonPathQueryResult = new JsonPathQueryResult(templateId, uniquePaths);
        } else {
            // dummy result since null can not be path of a cache
            jsonPathQueryResult = new JsonPathQueryResult(null, Collections.emptyMap());
        }
        jsonPathQueryResultCache.put(key, jsonPathQueryResult);
    }
    if (jsonPathQueryResult.getTemplateId() != null) {
        return jsonPathQueryResult;
    } else // Is dummy result
    {
        return null;
    }
}
Also used : OPERATIONALTEMPLATE(org.openehr.schemas.v1.OPERATIONALTEMPLATE) JsonPathQueryResult(org.ehrbase.aql.containment.JsonPathQueryResult) Cache(org.springframework.cache.Cache) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) TemplateMetaData(org.ehrbase.ehr.knowledge.TemplateMetaData) LoggerFactory(org.slf4j.LoggerFactory) TreeSet(java.util.TreeSet) MessageFormat(java.text.MessageFormat) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) CacheOptions(org.ehrbase.cache.CacheOptions) NodeId(org.ehrbase.webtemplate.parser.NodeId) Value(org.springframework.beans.factory.annotation.Value) ByteArrayInputStream(java.io.ByteArrayInputStream) CacheManager(org.springframework.cache.CacheManager) Service(org.springframework.stereotype.Service) Map(java.util.Map) OPTParser(org.ehrbase.webtemplate.parser.OPTParser) StateConflictException(org.ehrbase.api.exception.StateConflictException) TemplateIdAqlTuple(org.ehrbase.aql.containment.TemplateIdAqlTuple) TemplateDocument(org.openehr.schemas.v1.TemplateDocument) Logger(org.slf4j.Logger) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) IOException(java.io.IOException) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) Executors(java.util.concurrent.Executors) WebTemplate(org.ehrbase.webtemplate.model.WebTemplate) ItemInfo(org.ehrbase.aql.sql.queryimpl.ItemInfo) List(java.util.List) XmlException(org.apache.xmlbeans.XmlException) InvalidApiParameterException(org.ehrbase.api.exception.InvalidApiParameterException) Optional(java.util.Optional) I_KnowledgeCache(org.ehrbase.ehr.knowledge.I_KnowledgeCache) TemplateIdQueryTuple(org.ehrbase.aql.containment.TemplateIdQueryTuple) WebTemplateNode(org.ehrbase.webtemplate.model.WebTemplateNode) Collections(java.util.Collections) TemplateUtils(org.ehrbase.util.TemplateUtils) Transactional(org.springframework.transaction.annotation.Transactional) JsonPathQueryResult(org.ehrbase.aql.containment.JsonPathQueryResult) WebTemplateNode(org.ehrbase.webtemplate.model.WebTemplateNode) ArrayList(java.util.ArrayList) WebTemplate(org.ehrbase.webtemplate.model.WebTemplate) TreeSet(java.util.TreeSet) NodeId(org.ehrbase.webtemplate.parser.NodeId) ArrayList(java.util.ArrayList) List(java.util.List) TemplateIdQueryTuple(org.ehrbase.aql.containment.TemplateIdQueryTuple)

Example 2 with WebTemplateNode

use of org.ehrbase.webtemplate.model.WebTemplateNode in project openEHR_SDK by ehrbase.

the class PathMatcher method matchesPath.

String matchesPath(Context<?> context, WebTemplateNode child, Map.Entry<String, ?> e) {
    String aqlPath = FlatPath.removeStart(new FlatPath(child.getAqlPath()), new FlatPath(context.getNodeDeque().peek().getAqlPath())).toString();
    if (StringUtils.startsWith(e.getKey(), aqlPath)) {
        return remove(e, aqlPath, child);
    } else {
        FlatPath childPath = new FlatPath(aqlPath);
        FlatPath pathLast = childPath.getLast();
        FlatPath pathWithoutLastName = FlatPath.addEnd(FlatPath.removeEnd(childPath, pathLast), new FlatPath(pathLast.format(false)));
        if (StringUtils.startsWith(e.getKey(), pathWithoutLastName.toString()) && context.getNodeDeque().peek().getChildren().stream().filter(n -> Objects.equals(n.getNodeId(), child.getNodeId())).count() == 1) {
            logger.warn("name/value not set in dto for {}", child.getAqlPath());
            return remove(e, pathWithoutLastName.toString(), child);
        } else {
            return null;
        }
    }
}
Also used : Objects(java.util.Objects) Context(org.ehrbase.serialisation.walker.Context) FlatPath(org.ehrbase.webtemplate.parser.FlatPath) Logger(org.slf4j.Logger) Map(java.util.Map) LoggerFactory(org.slf4j.LoggerFactory) WebTemplateNode(org.ehrbase.webtemplate.model.WebTemplateNode) StringUtils(org.apache.commons.lang3.StringUtils) FlatPath(org.ehrbase.webtemplate.parser.FlatPath)

Example 3 with WebTemplateNode

use of org.ehrbase.webtemplate.model.WebTemplateNode in project openEHR_SDK by ehrbase.

the class ClassGenerator method addSimpleField.

private void addSimpleField(ClassGeneratorContext context, TypeSpec.Builder classBuilder, String path, WebTemplateNode endNode) {
    Class<?> clazz = extractClass(endNode);
    if (clazz == null) {
        logger.warn("No class for path {} ", path);
        return;
    }
    ValueSet valueSet = buildValueSet(endNode);
    RmClassGeneratorConfig classGeneratorConfig = configMap.get(clazz);
    if (classGeneratorConfig == null && !clazz.getName().contains("java.lang")) {
        logger.debug("No ClassGenerator for {}", clazz);
    }
    boolean expand = classGeneratorConfig != null && classGeneratorConfig.isExpandField();
    if (endNode.getRmType().equals("DV_CODED_TEXT") && !List.of("transition", "language", "setting", "category", "territory", "math_function", "null_flavour").contains(endNode.getId(false))) {
        expand = expand && endNode.getInputs().stream().filter(i -> i.getType().equals("CODED_TEXT")).map(WebTemplateInput::getList).flatMap(List::stream).findAny().isPresent();
    }
    if (!expand) {
        TypeName className = Optional.ofNullable(clazz).map(ClassName::get).orElse(ClassName.get(Object.class));
        if (endNode.isMulti() && !context.nodeDeque.peek().getRmType().equals("ELEMENT")) {
            className = ParameterizedTypeName.get(ClassName.get(List.class), className);
        }
        addField(context, classBuilder, path, endNode, className, valueSet, false);
    } else {
        Map<String, Field> fieldMap = Arrays.stream(FieldUtils.getAllFields(clazz)).filter(f -> !f.isSynthetic()).collect(Collectors.toMap(Field::getName, f -> f));
        Set<String> expandFields = classGeneratorConfig.getExpandFields();
        expandFields.forEach(fieldName -> addField(context, classBuilder, path + "|" + new SnakeCase(fieldName).camelToSnake(), endNode, ClassName.get(fieldMap.get(fieldName).getType()), valueSet, false));
    }
}
Also used : Arrays(java.util.Arrays) Language(org.ehrbase.client.classgenerator.shareddefinition.Language) Composition(com.nedap.archie.rm.composition.Composition) Modifier(javax.lang.model.element.Modifier) MathFunction(org.ehrbase.client.classgenerator.shareddefinition.MathFunction) VersionUid(org.ehrbase.client.openehrclient.VersionUid) ArchieRMInfoLookup(com.nedap.archie.rminfo.ArchieRMInfoLookup) LoggerFactory(org.slf4j.LoggerFactory) ClassName(com.squareup.javapoet.ClassName) StringUtils(org.apache.commons.lang3.StringUtils) Pair(org.apache.commons.lang3.tuple.Pair) Generated(javax.annotation.processing.Generated) Map(java.util.Map) Category(org.ehrbase.client.classgenerator.shareddefinition.Category) Locatable(com.nedap.archie.rm.archetyped.Locatable) Transition(org.ehrbase.client.classgenerator.shareddefinition.Transition) CodePhrase(com.nedap.archie.rm.datatypes.CodePhrase) RMEntity(org.ehrbase.client.classgenerator.interfaces.RMEntity) Path(org.ehrbase.client.annotations.Path) Entry(com.nedap.archie.rm.composition.Entry) ReflectionHelper(org.ehrbase.util.reflection.ReflectionHelper) IntervalEventEntity(org.ehrbase.client.classgenerator.interfaces.IntervalEventEntity) FilteredWebTemplate(org.ehrbase.webtemplate.model.FilteredWebTemplate) WebTemplateInput(org.ehrbase.webtemplate.model.WebTemplateInput) Set(java.util.Set) Collectors(java.util.stream.Collectors) Template(org.ehrbase.client.annotations.Template) WebTemplateInputValue(org.ehrbase.webtemplate.model.WebTemplateInputValue) List(java.util.List) OffsetDateTime(java.time.OffsetDateTime) Type(java.lang.reflect.Type) TypeName(com.squareup.javapoet.TypeName) Optional(java.util.Optional) WebTemplateNode(org.ehrbase.webtemplate.model.WebTemplateNode) TermDefinition(org.ehrbase.terminology.client.terminology.TermDefinition) Territory(org.ehrbase.client.classgenerator.shareddefinition.Territory) FieldSpec(com.squareup.javapoet.FieldSpec) Id(org.ehrbase.client.annotations.Id) HashMap(java.util.HashMap) Deque(java.util.Deque) CompositionEntity(org.ehrbase.client.classgenerator.interfaces.CompositionEntity) CollectionUtils(org.apache.commons.collections4.CollectionUtils) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) PointEventEntity(org.ehrbase.client.classgenerator.interfaces.PointEventEntity) WebTemplateFilter(org.ehrbase.webtemplate.filter.WebTemplateFilter) SetUtils(org.apache.commons.collections4.SetUtils) FieldUtils(org.apache.commons.lang3.reflect.FieldUtils) OptionFor(org.ehrbase.client.annotations.OptionFor) EntryEntity(org.ehrbase.client.classgenerator.interfaces.EntryEntity) Logger(org.slf4j.Logger) MethodSpec(com.squareup.javapoet.MethodSpec) Walker(org.ehrbase.serialisation.walker.Walker) Archetype(org.ehrbase.client.annotations.Archetype) NullFlavour(org.ehrbase.client.classgenerator.shareddefinition.NullFlavour) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) TypeSpec(com.squareup.javapoet.TypeSpec) Field(java.lang.reflect.Field) PointEvent(com.nedap.archie.rm.datastructures.PointEvent) ImmutablePair(org.apache.commons.lang3.tuple.ImmutablePair) RmClassGeneratorConfig(org.ehrbase.client.classgenerator.config.RmClassGeneratorConfig) WebTemplate(org.ehrbase.webtemplate.model.WebTemplate) SnakeCase(org.ehrbase.serialisation.util.SnakeCase) FlatPath(org.ehrbase.webtemplate.parser.FlatPath) LocatableEntity(org.ehrbase.client.classgenerator.interfaces.LocatableEntity) AnnotationSpec(com.squareup.javapoet.AnnotationSpec) Entity(org.ehrbase.client.annotations.Entity) Choice(org.ehrbase.client.annotations.Choice) ValueSet(org.ehrbase.terminology.client.terminology.ValueSet) IntervalEvent(com.nedap.archie.rm.datastructures.IntervalEvent) Collections(java.util.Collections) Setting(org.ehrbase.client.classgenerator.shareddefinition.Setting) TypeName(com.squareup.javapoet.TypeName) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) SnakeCase(org.ehrbase.serialisation.util.SnakeCase) Field(java.lang.reflect.Field) List(java.util.List) ArrayList(java.util.ArrayList) ValueSet(org.ehrbase.terminology.client.terminology.ValueSet) RmClassGeneratorConfig(org.ehrbase.client.classgenerator.config.RmClassGeneratorConfig)

Example 4 with WebTemplateNode

use of org.ehrbase.webtemplate.model.WebTemplateNode in project openEHR_SDK by ehrbase.

the class ClassGenerator method build.

private TypeSpec.Builder build(ClassGeneratorContext context, WebTemplateNode next) {
    String className = defaultNamingStrategy.buildClassName(context, next, false, false);
    context.currentFieldNameMap.push(new HashMap<>());
    context.nodeDeque.push(next);
    context.unFilteredNodeDeque.push(next);
    TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className);
    if (StringUtils.isBlank(context.currentMainClass)) {
        context.currentMainClass = className;
    }
    classBuilder.addModifiers(Modifier.PUBLIC);
    classBuilder.addAnnotation(AnnotationSpec.builder(Entity.class).build());
    if (next.isArchetype()) {
        AnnotationSpec archetypeAnnotation = AnnotationSpec.builder(Archetype.class).addMember(Archetype.VALUE, "$S", next.getNodeId()).build();
        classBuilder.addAnnotation(archetypeAnnotation);
    }
    AnnotationSpec generatedAnnotation = buildGeneratedAnnotation();
    classBuilder.addAnnotation(generatedAnnotation);
    classBuilder.addSuperinterface(findRMInterface(next));
    if (next.getChildren().stream().anyMatch(n -> n.getRmType().equals("EVENT"))) {
        WebTemplateNode event = next.getChildren().stream().filter(n -> n.getRmType().equals("EVENT")).findAny().orElseThrow();
        Walker.EventHelper eventHelper = new Walker.EventHelper(event).invoke();
        WebTemplateNode pointEvent = eventHelper.getPointEvent();
        WebTemplateNode intervalEvent = eventHelper.getIntervalEvent();
        next.getChildren().add(intervalEvent);
        next.getChildren().add(pointEvent);
        next.getChildren().remove(event);
    }
    Map<String, List<WebTemplateNode>> choices = next.getChoicesInChildren();
    List<WebTemplateNode> children = next.getChildren().stream().filter(c -> choices.values().stream().flatMap(List::stream).noneMatch(l -> l.equals(c))).collect(Collectors.toList());
    for (WebTemplateNode child : children) {
        Deque<WebTemplateNode> filtersNodes = pushToUnfiltered(context, child);
        String relativPath = context.nodeDeque.peek().buildRelativePath(child);
        if (child.getChildren().isEmpty() && !choices.containsKey(child.getAqlPath())) {
            addSimpleField(context, classBuilder, relativPath, child);
        } else if (!choices.containsKey(child.getAqlPath())) {
            addComplexField(context, classBuilder, relativPath, child);
        }
        if (!CollectionUtils.isEmpty(filtersNodes)) {
            filtersNodes.forEach(n -> context.unFilteredNodeDeque.poll());
        }
    }
    for (List<WebTemplateNode> choice : choices.values()) {
        WebTemplateNode node = choice.get(0);
        WebTemplateNode relativeNode = buildRelativeNode(context, node);
        Deque<WebTemplateNode> filtersNodes = pushToUnfiltered(context, node);
        TypeSpec interfaceSpec;
        TypeName interfaceClassName;
        if (context.currentTypeSpec.containsKey(relativeNode)) {
            interfaceSpec = context.currentTypeSpec.get(relativeNode);
            String interfacePackage = context.currentPackageName + "." + context.currentMainClass.toLowerCase() + DEFINITION_PACKAGE;
            context.classes.put(interfacePackage, interfaceSpec);
            interfaceClassName = ClassName.get(interfacePackage, interfaceSpec.name);
        } else {
            List<Pair<TypeSpec.Builder, WebTemplateNode>> builders = new ArrayList<>();
            for (WebTemplateNode child : choice) {
                TypeSpec.Builder build = build(context, child);
                builders.add(new ImmutablePair<>(build, child));
            }
            TypeSpec.Builder interfaceBuilder = TypeSpec.interfaceBuilder(defaultNamingStrategy.buildClassName(context, choice.get(0), true, false)).addModifiers(Modifier.PUBLIC);
            interfaceBuilder.addAnnotation(buildGeneratedAnnotation());
            Set<FieldSpec> cowmenField = null;
            for (Set<FieldSpec> fields : builders.stream().map(Pair::getLeft).map(s -> s.fieldSpecs).map(HashSet::new).collect(Collectors.toList())) {
                if (cowmenField == null) {
                    cowmenField = fields;
                } else {
                    cowmenField = SetUtils.intersection(cowmenField, fields);
                }
            }
            if (cowmenField == null) {
                cowmenField = Collections.emptySet();
            }
            cowmenField.forEach(f -> {
                interfaceBuilder.addMethod(buildGetter(f, true));
                interfaceBuilder.addMethod(buildSetter(f, true));
            });
            interfaceSpec = interfaceBuilder.build();
            context.currentTypeSpec.put(relativeNode, interfaceSpec);
            String interfacePackage = context.currentPackageName + "." + context.currentMainClass.toLowerCase() + DEFINITION_PACKAGE;
            context.classes.put(interfacePackage, interfaceSpec);
            interfaceClassName = ClassName.get(interfacePackage, interfaceSpec.name);
            TypeName finalInterfaceClassName = interfaceClassName;
            builders.forEach(pair -> {
                TypeSpec.Builder builder = pair.getKey().addSuperinterface(finalInterfaceClassName).addAnnotation(AnnotationSpec.builder(OptionFor.class).addMember(OptionFor.VALUE, "$S", pair.getRight().getRmType()).build());
                context.classes.put(interfacePackage, builder.build());
            });
        }
        if (choice.stream().anyMatch(WebTemplateNode::isMulti)) {
            interfaceClassName = ParameterizedTypeName.get(ClassName.get(List.class), interfaceClassName);
        }
        String relativPath = FlatPath.removeStart(new FlatPath(node.getAqlPath()), new FlatPath(next.getAqlPath())).toString();
        addField(context, classBuilder, relativPath, node, interfaceClassName, new ValueSet(ValueSet.LOCAL, ValueSet.LOCAL, Collections.emptySet()), true);
        if (!CollectionUtils.isEmpty(filtersNodes)) {
            filtersNodes.forEach(n -> context.unFilteredNodeDeque.poll());
        }
    }
    if (next.isArchetype()) {
        context.currentArchetypeName.poll();
    }
    if (children.isEmpty() && choices.isEmpty()) {
        addSimpleField(context, classBuilder, "", next);
    }
    context.currentFieldNameMap.poll();
    context.nodeDeque.poll();
    context.unFilteredNodeDeque.poll();
    return classBuilder;
}
Also used : Arrays(java.util.Arrays) Language(org.ehrbase.client.classgenerator.shareddefinition.Language) Composition(com.nedap.archie.rm.composition.Composition) Modifier(javax.lang.model.element.Modifier) MathFunction(org.ehrbase.client.classgenerator.shareddefinition.MathFunction) VersionUid(org.ehrbase.client.openehrclient.VersionUid) ArchieRMInfoLookup(com.nedap.archie.rminfo.ArchieRMInfoLookup) LoggerFactory(org.slf4j.LoggerFactory) ClassName(com.squareup.javapoet.ClassName) StringUtils(org.apache.commons.lang3.StringUtils) Pair(org.apache.commons.lang3.tuple.Pair) Generated(javax.annotation.processing.Generated) Map(java.util.Map) Category(org.ehrbase.client.classgenerator.shareddefinition.Category) Locatable(com.nedap.archie.rm.archetyped.Locatable) Transition(org.ehrbase.client.classgenerator.shareddefinition.Transition) CodePhrase(com.nedap.archie.rm.datatypes.CodePhrase) RMEntity(org.ehrbase.client.classgenerator.interfaces.RMEntity) Path(org.ehrbase.client.annotations.Path) Entry(com.nedap.archie.rm.composition.Entry) ReflectionHelper(org.ehrbase.util.reflection.ReflectionHelper) IntervalEventEntity(org.ehrbase.client.classgenerator.interfaces.IntervalEventEntity) FilteredWebTemplate(org.ehrbase.webtemplate.model.FilteredWebTemplate) WebTemplateInput(org.ehrbase.webtemplate.model.WebTemplateInput) Set(java.util.Set) Collectors(java.util.stream.Collectors) Template(org.ehrbase.client.annotations.Template) WebTemplateInputValue(org.ehrbase.webtemplate.model.WebTemplateInputValue) List(java.util.List) OffsetDateTime(java.time.OffsetDateTime) Type(java.lang.reflect.Type) TypeName(com.squareup.javapoet.TypeName) Optional(java.util.Optional) WebTemplateNode(org.ehrbase.webtemplate.model.WebTemplateNode) TermDefinition(org.ehrbase.terminology.client.terminology.TermDefinition) Territory(org.ehrbase.client.classgenerator.shareddefinition.Territory) FieldSpec(com.squareup.javapoet.FieldSpec) Id(org.ehrbase.client.annotations.Id) HashMap(java.util.HashMap) Deque(java.util.Deque) CompositionEntity(org.ehrbase.client.classgenerator.interfaces.CompositionEntity) CollectionUtils(org.apache.commons.collections4.CollectionUtils) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) PointEventEntity(org.ehrbase.client.classgenerator.interfaces.PointEventEntity) WebTemplateFilter(org.ehrbase.webtemplate.filter.WebTemplateFilter) SetUtils(org.apache.commons.collections4.SetUtils) FieldUtils(org.apache.commons.lang3.reflect.FieldUtils) OptionFor(org.ehrbase.client.annotations.OptionFor) EntryEntity(org.ehrbase.client.classgenerator.interfaces.EntryEntity) Logger(org.slf4j.Logger) MethodSpec(com.squareup.javapoet.MethodSpec) Walker(org.ehrbase.serialisation.walker.Walker) Archetype(org.ehrbase.client.annotations.Archetype) NullFlavour(org.ehrbase.client.classgenerator.shareddefinition.NullFlavour) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) TypeSpec(com.squareup.javapoet.TypeSpec) Field(java.lang.reflect.Field) PointEvent(com.nedap.archie.rm.datastructures.PointEvent) ImmutablePair(org.apache.commons.lang3.tuple.ImmutablePair) RmClassGeneratorConfig(org.ehrbase.client.classgenerator.config.RmClassGeneratorConfig) WebTemplate(org.ehrbase.webtemplate.model.WebTemplate) SnakeCase(org.ehrbase.serialisation.util.SnakeCase) FlatPath(org.ehrbase.webtemplate.parser.FlatPath) LocatableEntity(org.ehrbase.client.classgenerator.interfaces.LocatableEntity) AnnotationSpec(com.squareup.javapoet.AnnotationSpec) Entity(org.ehrbase.client.annotations.Entity) Choice(org.ehrbase.client.annotations.Choice) ValueSet(org.ehrbase.terminology.client.terminology.ValueSet) IntervalEvent(com.nedap.archie.rm.datastructures.IntervalEvent) Collections(java.util.Collections) Setting(org.ehrbase.client.classgenerator.shareddefinition.Setting) TypeName(com.squareup.javapoet.TypeName) ParameterizedTypeName(com.squareup.javapoet.ParameterizedTypeName) OptionFor(org.ehrbase.client.annotations.OptionFor) WebTemplateNode(org.ehrbase.webtemplate.model.WebTemplateNode) ArrayList(java.util.ArrayList) Walker(org.ehrbase.serialisation.walker.Walker) AnnotationSpec(com.squareup.javapoet.AnnotationSpec) FieldSpec(com.squareup.javapoet.FieldSpec) List(java.util.List) ArrayList(java.util.ArrayList) ValueSet(org.ehrbase.terminology.client.terminology.ValueSet) TypeSpec(com.squareup.javapoet.TypeSpec) Pair(org.apache.commons.lang3.tuple.Pair) ImmutablePair(org.apache.commons.lang3.tuple.ImmutablePair) FlatPath(org.ehrbase.webtemplate.parser.FlatPath)

Example 5 with WebTemplateNode

use of org.ehrbase.webtemplate.model.WebTemplateNode in project openEHR_SDK by ehrbase.

the class StdToCompositionWalker method handleDVTextInternal.

public static void handleDVTextInternal(WebTemplateNode node) {
    WebTemplateNode merged = Filter.mergeDVText(node);
    node.getChildren().removeIf(childNode -> List.of("coded_text_value", "text_value").contains(childNode.getId()));
    node.getChildren().add(merged);
}
Also used : WebTemplateNode(org.ehrbase.webtemplate.model.WebTemplateNode)

Aggregations

WebTemplateNode (org.ehrbase.webtemplate.model.WebTemplateNode)35 Collectors (java.util.stream.Collectors)18 WebTemplate (org.ehrbase.webtemplate.model.WebTemplate)18 WebTemplateInput (org.ehrbase.webtemplate.model.WebTemplateInput)15 Map (java.util.Map)13 ImmutablePair (org.apache.commons.lang3.tuple.ImmutablePair)13 ReflectionHelper (org.ehrbase.util.reflection.ReflectionHelper)13 RMObject (com.nedap.archie.rm.RMObject)12 Composition (com.nedap.archie.rm.composition.Composition)12 ArrayList (java.util.ArrayList)12 List (java.util.List)12 Locatable (com.nedap.archie.rm.archetyped.Locatable)11 Collections (java.util.Collections)11 Optional (java.util.Optional)10 StringUtils (org.apache.commons.lang3.StringUtils)10 Entry (com.nedap.archie.rm.composition.Entry)9 CodePhrase (com.nedap.archie.rm.datatypes.CodePhrase)9 HashSet (java.util.HashSet)9 java.util (java.util)8 Objects (java.util.Objects)8