From 489d06179a26012cc39a5f2fdc326db88be5d807 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Tue, 16 May 2023 17:12:52 +0200 Subject: [PATCH 01/20] Attempt at human readable markdown generator from RM instances --- .../archie/text/ReflectionRmSerializer.java | 48 +++++++++++ .../com/nedap/archie/text/RmSerializer.java | 10 +++ .../nedap/archie/text/RmToTextSerializer.java | 75 +++++++++++++++++ .../text/serializers/ClusterSerializer.java | 25 ++++++ .../serializers/CompositionSerializer.java | 28 +++++++ .../text/serializers/ElementSerializer.java | 35 ++++++++ .../text/serializers/ItemListSerializer.java | 26 ++++++ .../text/serializers/ItemTreeSerializer.java | 26 ++++++ .../text/serializers/SectionSerializer.java | 27 ++++++ .../datatypes/DvBooleanSerializer.java | 23 +++++ .../datatypes/DvCodedTextSerializer.java | 18 ++++ .../datatypes/DvCountSerializer.java | 25 ++++++ .../datatypes/DvDateSerializer.java | 24 ++++++ .../datatypes/DvDateTimeSerializer.java | 23 +++++ .../datatypes/DvDurationSerializer.java | 24 ++++++ .../datatypes/DvOrdinalSerializer.java | 24 ++++++ .../datatypes/DvProportionSerializer.java | 39 +++++++++ .../datatypes/DvQuantitySerializer.java | 26 ++++++ .../datatypes/DvTextSerializer.java | 17 ++++ .../datatypes/DvTimeSerializer.java | 25 ++++++ .../entries/EvaluationSerializer.java | 23 +++++ .../entries/ObservationSerializer.java | 42 ++++++++++ .../archie/text/RmToTextSerializerTest.java | 83 +++++++++++++++++++ 23 files changed, 716 insertions(+) create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/RmSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCodedTextSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTextSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java create mode 100644 tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java diff --git a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java new file mode 100644 index 000000000..890a83dfe --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java @@ -0,0 +1,48 @@ +package com.nedap.archie.text; + +import com.nedap.archie.rm.RMObject; +import com.nedap.archie.rminfo.ArchieAOMInfoLookup; +import com.nedap.archie.rminfo.RMAttributeInfo; +import com.nedap.archie.rminfo.RMTypeInfo; + +import java.lang.reflect.InvocationTargetException; + +public class ReflectionRmSerializer { + + private final ArchieAOMInfoLookup modelLookup; + + public ReflectionRmSerializer() { + this.modelLookup = ArchieAOMInfoLookup.getInstance(); + } + public void serialize(RMObject object, RmToTextSerializer serializer) { + if(object == null) { + return; + } + RMTypeInfo typeInfo = modelLookup.getTypeInfo(object.getClass()); + if(typeInfo == null) { + serializer.append(object.toString()); + return; + } + for(RMAttributeInfo attribute: typeInfo.getAttributes().values()) { + serializer.append(attribute.getRmName()); + serializer.append(": "); + try { + Object result = attribute.getGetMethod().invoke(object); + if(result == null) { + serializer.append(" - "); + } + if(result instanceof RMObject) { + serializer.writeToText((RMObject) result); + } else { + serializer.append(result.toString()); + } + } catch (IllegalAccessException e) { + //... + } catch (InvocationTargetException e) { + //... + } + serializer.append("\n"); + + } + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmSerializer.java new file mode 100644 index 000000000..0a2095056 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmSerializer.java @@ -0,0 +1,10 @@ +package com.nedap.archie.text; + +import com.nedap.archie.rm.RMObject; + +public interface RmSerializer { + + void serialize(T data, RmToTextSerializer serializer); + + Class getSerializedClass(); +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java new file mode 100644 index 000000000..27918919f --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java @@ -0,0 +1,75 @@ +package com.nedap.archie.text; + +import com.nedap.archie.rm.RMObject; +import com.nedap.archie.text.serializers.*; +import com.nedap.archie.text.serializers.datatypes.*; +import com.nedap.archie.text.serializers.entries.EvaluationSerializer; +import com.nedap.archie.text.serializers.entries.ObservationSerializer; + +import java.util.HashMap; +import java.util.Map; + +/** + * Converts instances of the openEHR RM to human readable text + */ +public class RmToTextSerializer { + + Map serializers; + ReflectionRmSerializer fallbackSerializer; + + StringBuilder stringBuilder; + + public RmToTextSerializer() { + serializers = new HashMap<>(); + addSerializer(new ClusterSerializer()); + addSerializer(new CompositionSerializer()); + addSerializer(new ElementSerializer()); + addSerializer(new ItemListSerializer()); + addSerializer(new ItemTreeSerializer()); + addSerializer(new SectionSerializer()); + + //entries + addSerializer(new EvaluationSerializer()); + addSerializer(new ObservationSerializer()); + + //data values + addSerializer(new DvBooleanSerializer()); + addSerializer(new DvCodedTextSerializer()); + addSerializer(new DvCountSerializer()); + addSerializer(new DvDateSerializer()); + addSerializer(new DvDateTimeSerializer()); + addSerializer(new DvDurationSerializer()); + addSerializer(new DvOrdinalSerializer()); + addSerializer(new DvProportionSerializer()); + addSerializer(new DvQuantitySerializer()); + addSerializer(new DvTextSerializer()); + addSerializer(new DvTimeSerializer()); + fallbackSerializer = new ReflectionRmSerializer(); + stringBuilder = new StringBuilder(); + } + + private void addSerializer(RmSerializer serializer) { + serializers.put(serializer.getSerializedClass(), serializer); + } + + public void writeToText(RMObject object){ + if(object == null) { + return; + } + RmSerializer serializer = serializers.get(object.getClass()); + + if(serializer != null) { + serializer.serialize(object, this); + } else { + fallbackSerializer.serialize(object, this); + } + } + + public String toString() { + return stringBuilder.toString(); + } + + public void append(String toWrite) { + stringBuilder.append(toWrite); + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java new file mode 100644 index 000000000..4a73bf3c4 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java @@ -0,0 +1,25 @@ +package com.nedap.archie.text.serializers; + +import com.nedap.archie.rm.datastructures.Cluster; +import com.nedap.archie.rm.datastructures.Item; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class ClusterSerializer implements RmSerializer { + + @Override + public void serialize(Cluster data, RmToTextSerializer serializer) { + serializer.append("#### "); + serializer.writeToText(data.getName()); + serializer.append("\n"); + for(Item item: data.getItems()) { + serializer.writeToText(item); + serializer.append("\n"); + } + } + + @Override + public Class getSerializedClass() { + return Cluster.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java new file mode 100644 index 000000000..f6cb1fbda --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java @@ -0,0 +1,28 @@ +package com.nedap.archie.text.serializers; + +import com.nedap.archie.rm.composition.Composition; +import com.nedap.archie.rm.composition.ContentItem; +import com.nedap.archie.rm.composition.Section; +import com.nedap.archie.rm.datastructures.Cluster; +import com.nedap.archie.rm.datastructures.Item; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class CompositionSerializer implements RmSerializer { + + @Override + public void serialize(Composition data, RmToTextSerializer serializer) { + serializer.append("# "); + serializer.writeToText(data.getName()); + serializer.append("\n"); + for(ContentItem item: data.getContent()) { + serializer.writeToText(item); + serializer.append("\n"); + } + } + + @Override + public Class getSerializedClass() { + return Composition.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java new file mode 100644 index 000000000..5e85f1c41 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java @@ -0,0 +1,35 @@ +package com.nedap.archie.text.serializers; + +import com.nedap.archie.rm.datastructures.Cluster; +import com.nedap.archie.rm.datastructures.Element; +import com.nedap.archie.rm.datastructures.Item; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class ElementSerializer implements RmSerializer { + + @Override + public void serialize(Element data, RmToTextSerializer serializer) { + serializer.writeToText(data.getName()); + serializer.append(": "); + + if(data.getValue() != null) { + serializer.writeToText(data.getValue()); + } else { + if(data.getNullFlavour() != null) { + serializer.append(" leeg. Reden: "); + serializer.writeToText(data.getNullFlavour()); + if(data.getNullReason() != null) { + serializer.append(" "); + serializer.writeToText(data.getNullReason()); + } + } + } + + } + + @Override + public Class getSerializedClass() { + return Element.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java new file mode 100644 index 000000000..f546db0f8 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java @@ -0,0 +1,26 @@ +package com.nedap.archie.text.serializers; + +import com.nedap.archie.rm.datastructures.Cluster; +import com.nedap.archie.rm.datastructures.Item; +import com.nedap.archie.rm.datastructures.ItemList; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class ItemListSerializer implements RmSerializer { + + @Override + public void serialize(ItemList data, RmToTextSerializer serializer) { + serializer.append("#### "); + serializer.writeToText(data.getName()); + serializer.append("\n"); + for(Item item: data.getItems()) { + serializer.writeToText(item); + serializer.append("\n"); + } + } + + @Override + public Class getSerializedClass() { + return ItemList.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java new file mode 100644 index 000000000..77bb1679c --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java @@ -0,0 +1,26 @@ +package com.nedap.archie.text.serializers; + +import com.nedap.archie.rm.datastructures.Cluster; +import com.nedap.archie.rm.datastructures.Item; +import com.nedap.archie.rm.datastructures.ItemTree; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class ItemTreeSerializer implements RmSerializer { + + @Override + public void serialize(ItemTree data, RmToTextSerializer serializer) { + serializer.append("#### "); + serializer.writeToText(data.getName()); + serializer.append("\n"); + for(Item item: data.getItems()) { + serializer.writeToText(item); + serializer.append("\n"); + } + } + + @Override + public Class getSerializedClass() { + return ItemTree.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java new file mode 100644 index 000000000..0b2fd5308 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java @@ -0,0 +1,27 @@ +package com.nedap.archie.text.serializers; + +import com.nedap.archie.rm.composition.ContentItem; +import com.nedap.archie.rm.composition.Section; +import com.nedap.archie.rm.datastructures.Cluster; +import com.nedap.archie.rm.datastructures.Item; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class SectionSerializer implements RmSerializer
{ + + @Override + public void serialize(Section data, RmToTextSerializer serializer) { + serializer.append("## "); + serializer.writeToText(data.getName()); + serializer.append("\n"); + for(ContentItem item: data.getItems()) { + serializer.writeToText(item); + serializer.append("\n"); + } + } + + @Override + public Class getSerializedClass() { + return Section.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java new file mode 100644 index 000000000..2ed287104 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java @@ -0,0 +1,23 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.DvBoolean; +import com.nedap.archie.rm.datavalues.DvCodedText; +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvBooleanSerializer implements RmSerializer { + @Override + public void serialize(DvBoolean data, RmToTextSerializer serializer) { + if(data.getValue() == null) { + serializer.append("data niet gevuld"); + return; + } + serializer.append(data.getValue() ? "Ja" : "Nee"); + } + + @Override + public Class getSerializedClass() { + return DvBoolean.class; + } +} \ No newline at end of file diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCodedTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCodedTextSerializer.java new file mode 100644 index 000000000..b4d4db0f2 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCodedTextSerializer.java @@ -0,0 +1,18 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.DvCodedText; +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvCodedTextSerializer implements RmSerializer { + @Override + public void serialize(DvCodedText data, RmToTextSerializer serializer) { + serializer.append(data.getValue()); + } + + @Override + public Class getSerializedClass() { + return DvCodedText.class; + } +} \ No newline at end of file diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java new file mode 100644 index 000000000..62a539f4d --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java @@ -0,0 +1,25 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.DvCodedText; +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.rm.datavalues.quantity.DvCount; +import com.nedap.archie.rm.datavalues.quantity.DvQuantity; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvCountSerializer implements RmSerializer { + @Override + public void serialize(DvCount data, RmToTextSerializer serializer) { + if(data.getMagnitude() == null) { + serializer.append("data niet gevuld"); + return; + } + serializer.append(Long.toString(data.getMagnitude())); + //TODO: all the other fields, reference ranges, normal ranges, status, etc. + } + + @Override + public Class getSerializedClass() { + return DvCount.class; + } +} \ No newline at end of file diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java new file mode 100644 index 000000000..71cf80577 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java @@ -0,0 +1,24 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.datetime.DateTimeFormatters; +import com.nedap.archie.datetime.DateTimeSerializerFormatters; +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.rm.datavalues.quantity.datetime.DvDate; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvDateSerializer implements RmSerializer { + @Override + public void serialize(DvDate data, RmToTextSerializer serializer) { + if(data.getValue() == null) { + serializer.append("data niet gevuld"); + return; + } + serializer.append(DateTimeSerializerFormatters.ISO_8601_DATE.format(data.getValue())); + } + + @Override + public Class getSerializedClass() { + return DvDate.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java new file mode 100644 index 000000000..e3117ff64 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java @@ -0,0 +1,23 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.datetime.DateTimeFormatters; +import com.nedap.archie.datetime.DateTimeSerializerFormatters; +import com.nedap.archie.rm.datavalues.quantity.datetime.DvDateTime; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvDateTimeSerializer implements RmSerializer { + @Override + public void serialize(DvDateTime data, RmToTextSerializer serializer) { + if(data.getValue() == null) { + serializer.append("data niet gevuld"); + return; + } + serializer.append(DateTimeSerializerFormatters.ISO_8601_DATE_TIME.format(data.getValue())); + } + + @Override + public Class getSerializedClass() { + return DvDateTime.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java new file mode 100644 index 000000000..495196b37 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java @@ -0,0 +1,24 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.datetime.DateTimeFormatters; +import com.nedap.archie.datetime.DateTimeSerializerFormatters; +import com.nedap.archie.rm.datavalues.quantity.datetime.DvDuration; +import com.nedap.archie.rm.datavalues.quantity.datetime.DvDate; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvDurationSerializer implements RmSerializer { + @Override + public void serialize(DvDuration data, RmToTextSerializer serializer) { + if(data.getValue() == null) { + serializer.append("data niet gevuld"); + return; + } + serializer.append(DateTimeSerializerFormatters.serializeDuration(data.getValue())); + } + + @Override + public Class getSerializedClass() { + return DvDuration.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java new file mode 100644 index 000000000..ccf287151 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java @@ -0,0 +1,24 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.DvCodedText; +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.rm.datavalues.quantity.DvOrdered; +import com.nedap.archie.rm.datavalues.quantity.DvOrdinal; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvOrdinalSerializer implements RmSerializer { + @Override + public void serialize(DvOrdinal data, RmToTextSerializer serializer) { + if(data.getValue() != null) { + serializer.append(Long.toString(data.getValue())); + serializer.append(" - "); + } + serializer.writeToText(data.getSymbol()); + } + + @Override + public Class getSerializedClass() { + return DvOrdinal.class; + } +} \ No newline at end of file diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java new file mode 100644 index 000000000..aa7b71641 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java @@ -0,0 +1,39 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.quantity.DvProportion; +import com.nedap.archie.rm.datavalues.quantity.ProportionKind; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvProportionSerializer implements RmSerializer { + @Override + public void serialize(DvProportion data, RmToTextSerializer serializer) { + if(data.getType() == null) { + serializeFraction(data, serializer); + } else if (data.getType() == ProportionKind.PERCENT.getPk()) { + serializer.append(Double.toString(data.getNumerator())); + serializer.append("%"); + } else { + serializeFraction(data, serializer); + } + //TODO: other formats - maybe just a number sometimes? + } + + private static void serializeFraction(DvProportion data, RmToTextSerializer serializer) { + if(data.getNumerator() == null) { + serializer.append("-"); + } else { + serializer.append(Double.toString(data.getNumerator())); + } + if(data.getDenominator() == null) { + serializer.append("-"); + } else { + serializer.append(Double.toString(data.getDenominator())); + } + } + + @Override + public Class getSerializedClass() { + return DvProportion.class; + } +} \ No newline at end of file diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java new file mode 100644 index 000000000..a84653cd2 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java @@ -0,0 +1,26 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.DvCodedText; +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.rm.datavalues.quantity.DvQuantity; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvQuantitySerializer implements RmSerializer { + @Override + public void serialize(DvQuantity data, RmToTextSerializer serializer) { + if(data.getMagnitude() == null) { + serializer.append("data niet gevuld"); + } else { + serializer.append(Double.toString(data.getMagnitude())); + } + serializer.append(" "); + serializer.append(data.getUnits()); + //TODO: all the other fields, reference ranges, normal ranges, status, etc. + } + + @Override + public Class getSerializedClass() { + return DvQuantity.class; + } +} \ No newline at end of file diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTextSerializer.java new file mode 100644 index 000000000..bc9262351 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTextSerializer.java @@ -0,0 +1,17 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvTextSerializer implements RmSerializer { + @Override + public void serialize(DvText data, RmToTextSerializer serializer) { + serializer.append(data.getValue()); + } + + @Override + public Class getSerializedClass() { + return DvText.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java new file mode 100644 index 000000000..6ce71c6bf --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java @@ -0,0 +1,25 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.datetime.DateTimeFormatters; +import com.nedap.archie.datetime.DateTimeSerializerFormatters; +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.rm.datavalues.quantity.datetime.DvDate; +import com.nedap.archie.rm.datavalues.quantity.datetime.DvTime; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvTimeSerializer implements RmSerializer { + @Override + public void serialize(DvTime data, RmToTextSerializer serializer) { + if(data.getValue() == null) { + serializer.append("data niet gevuld"); + return; + } + serializer.append(DateTimeSerializerFormatters.ISO_8601_TIME.format(data.getValue())); + } + + @Override + public Class getSerializedClass() { + return DvTime.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java new file mode 100644 index 000000000..778af8d96 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java @@ -0,0 +1,23 @@ +package com.nedap.archie.text.serializers.entries; + +import com.nedap.archie.rm.composition.Evaluation; +import com.nedap.archie.rm.datastructures.ItemStructure; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class EvaluationSerializer implements RmSerializer { + @Override + public void serialize(Evaluation data, RmToTextSerializer serializer) { + serializer.append("### "); + serializer.writeToText(data.getName()); + serializer.append("\n"); + serializer.writeToText(data.getData()); + serializer.append("\n"); + serializer.writeToText(data.getProtocol()); + } + + @Override + public Class getSerializedClass() { + return Evaluation.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java new file mode 100644 index 000000000..4c7d514f0 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java @@ -0,0 +1,42 @@ +package com.nedap.archie.text.serializers.entries; + +import com.nedap.archie.rm.composition.Observation; +import com.nedap.archie.rm.datastructures.Event; +import com.nedap.archie.rm.datastructures.History; +import com.nedap.archie.rm.datastructures.ItemStructure; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class ObservationSerializer implements RmSerializer { + @Override + public void serialize(Observation data, RmToTextSerializer serializer) { + serializer.append("### "); + + serializer.writeToText(data.getName()); + serializer.append("\n"); + writeHistory(data.getData(), serializer); + serializer.append("\n"); + writeHistory(data.getState(), serializer); + serializer.writeToText(data.getProtocol()); + } + + private void writeHistory(History data, RmToTextSerializer serializer) { + if(data != null) { + if(data.getEvents() != null) { + for(Event event: data.getEvents()) { + //TODO: event name: probably not interesting, although sometimes it could be! + serializer.append("Moment van observatie:"); + serializer.writeToText(event.getTime()); + serializer.append("\n"); + serializer.writeToText(event.getData()); + serializer.writeToText(event.getState()); + } + } + } + } + + @Override + public Class getSerializedClass() { + return Observation.class; + } +} diff --git a/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java new file mode 100644 index 000000000..17a751cd8 --- /dev/null +++ b/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java @@ -0,0 +1,83 @@ +package com.nedap.archie.text; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.nedap.archie.adlparser.ADLParseException; +import com.nedap.archie.adlparser.ADLParser; +import com.nedap.archie.aom.Archetype; +import com.nedap.archie.aom.OperationalTemplate; +import com.nedap.archie.creation.ExampleJsonInstanceGenerator; +import com.nedap.archie.flattener.Flattener; +import com.nedap.archie.flattener.InMemoryFullArchetypeRepository; +import com.nedap.archie.json.ArchieJacksonConfiguration; +import com.nedap.archie.json.JacksonUtil; +import com.nedap.archie.rm.composition.Observation; +import com.nedap.archie.rminfo.ArchieRMInfoLookup; +import com.nedap.archie.rmobjectvalidator.RMObjectValidationMessage; +import com.nedap.archie.rmobjectvalidator.RMObjectValidator; +import org.junit.Test; +import org.openehr.referencemodels.BuiltinReferenceModels; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static org.junit.Assert.assertEquals; + +public class RmToTextSerializerTest { + + private static final String TYPE_PROPERTY_NAME = "_type"; + @Test + public void bloodPressure() throws Exception { + OperationalTemplate opt = createOPT("/ckm-mirror/local/archetypes/entry/observation/openEHR-EHR-OBSERVATION.blood_pressure.v1.1.0.adls"); + ExampleJsonInstanceGenerator structureGenerator = createExampleJsonInstanceGenerator(); + + Map structure = structureGenerator.generate(opt); + String s = serializeToJson(structure, true); + //System.out.println(s); + + Observation observation = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Observation.class); + RmToTextSerializer rmToTextSerializer = new RmToTextSerializer(); + rmToTextSerializer.writeToText(observation); + System.out.println(rmToTextSerializer.toString()); + + } + + private ExampleJsonInstanceGenerator createExampleJsonInstanceGenerator() { + ExampleJsonInstanceGenerator structureGenerator = new ExampleJsonInstanceGenerator(BuiltinReferenceModels.getMetaModels(), "nl"); + structureGenerator.setTypePropertyName(TYPE_PROPERTY_NAME); + return structureGenerator; + } + + private String serializeToJson(Map structure, boolean indent) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + if(indent) { + objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + } else { + objectMapper.disable(SerializationFeature.INDENT_OUTPUT); + } + return objectMapper.writeValueAsString(structure); + } + + private OperationalTemplate createOPT(String s2) throws IOException, ADLParseException { + Archetype archetype = parse(s2); + InMemoryFullArchetypeRepository repository = new InMemoryFullArchetypeRepository(); + repository.addArchetype(archetype); + return (OperationalTemplate) new Flattener(repository, BuiltinReferenceModels.getMetaModels()).createOperationalTemplate(true).flatten(archetype); + } + + private Archetype parse(String filename) throws IOException, ADLParseException { + ADLParser parser = new ADLParser(); + Archetype archetype; + try(InputStream stream = getClass().getResourceAsStream(filename)) { + archetype = parser.parse(stream); + if(parser.getErrors().hasErrors()) { + throw new RuntimeException(parser.getErrors().toString()); + } + } + return archetype; + } +} From ed876bcd2d12820a665cae1ff922698848d6def5 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Tue, 16 May 2023 17:18:13 +0200 Subject: [PATCH 02/20] Fix the reflection rm serializer --- .../com/nedap/archie/text/ReflectionRmSerializer.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java index 890a83dfe..9db8da8f7 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java @@ -2,6 +2,7 @@ import com.nedap.archie.rm.RMObject; import com.nedap.archie.rminfo.ArchieAOMInfoLookup; +import com.nedap.archie.rminfo.ArchieRMInfoLookup; import com.nedap.archie.rminfo.RMAttributeInfo; import com.nedap.archie.rminfo.RMTypeInfo; @@ -9,10 +10,10 @@ public class ReflectionRmSerializer { - private final ArchieAOMInfoLookup modelLookup; + private final ArchieRMInfoLookup modelLookup; public ReflectionRmSerializer() { - this.modelLookup = ArchieAOMInfoLookup.getInstance(); + this.modelLookup = ArchieRMInfoLookup.getInstance(); } public void serialize(RMObject object, RmToTextSerializer serializer) { if(object == null) { @@ -24,14 +25,16 @@ public void serialize(RMObject object, RmToTextSerializer serializer) { return; } for(RMAttributeInfo attribute: typeInfo.getAttributes().values()) { + if(attribute.getRmName().equalsIgnoreCase("parent")) { + continue; + } serializer.append(attribute.getRmName()); serializer.append(": "); try { Object result = attribute.getGetMethod().invoke(object); if(result == null) { serializer.append(" - "); - } - if(result instanceof RMObject) { + } else if(result instanceof RMObject) { serializer.writeToText((RMObject) result); } else { serializer.append(result.toString()); From 03778d58a2a90f5c40163f5e784c20a455a4c878 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Mon, 22 May 2023 11:19:51 +0200 Subject: [PATCH 03/20] Implement more serializers --- .../nedap/archie/text/RmToTextSerializer.java | 15 ++++++-- .../action/ActivitySerializer.java | 27 ++++++++++++++ .../action/InstructionDetailsSerializer.java | 18 ++++++++++ .../action/IsmTransitionSerializer.java | 36 +++++++++++++++++++ .../serializers/entries/ActionSerializer.java | 26 ++++++++++++++ .../entries/AdminEntrySerializer.java | 25 +++++++++++++ .../entries/GenericEntrySerializer.java | 24 +++++++++++++ .../entries/InstructionSerializer.java | 35 ++++++++++++++++++ 8 files changed, 204 insertions(+), 2 deletions(-) create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java index 27918919f..bcae40367 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java @@ -2,9 +2,11 @@ import com.nedap.archie.rm.RMObject; import com.nedap.archie.text.serializers.*; +import com.nedap.archie.text.serializers.action.ActivitySerializer; +import com.nedap.archie.text.serializers.action.InstructionDetailsSerializer; +import com.nedap.archie.text.serializers.action.IsmTransitionSerializer; import com.nedap.archie.text.serializers.datatypes.*; -import com.nedap.archie.text.serializers.entries.EvaluationSerializer; -import com.nedap.archie.text.serializers.entries.ObservationSerializer; +import com.nedap.archie.text.serializers.entries.*; import java.util.HashMap; import java.util.Map; @@ -31,6 +33,15 @@ public RmToTextSerializer() { //entries addSerializer(new EvaluationSerializer()); addSerializer(new ObservationSerializer()); + addSerializer(new InstructionSerializer()); + addSerializer(new ActionSerializer()); + addSerializer(new GenericEntrySerializer()); + addSerializer(new AdminEntrySerializer()); + + //classes used in Action and Instruction + addSerializer(new ActivitySerializer()); + addSerializer(new InstructionDetailsSerializer()); + addSerializer(new IsmTransitionSerializer()); //data values addSerializer(new DvBooleanSerializer()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java new file mode 100644 index 000000000..3288224be --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java @@ -0,0 +1,27 @@ +package com.nedap.archie.text.serializers.action; + +import com.nedap.archie.rm.composition.Activity; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class ActivitySerializer implements RmSerializer { + @Override + public void serialize(Activity data, RmToTextSerializer serializer) { + serializer.writeToText(data.getName()); + serializer.append("\n"); + if(data.getDescription() != null) { + serializer.writeToText(data.getDescription()); + serializer.append("\n"); + } + if(data.getActionArchetypeId() != null) { + serializer.append("archetype voor actie: "); + serializer.append(data.getActionArchetypeId()); + serializer.append("\n"); + } + } + + @Override + public Class getSerializedClass() { + return Activity.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java new file mode 100644 index 000000000..1faf4fc76 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java @@ -0,0 +1,18 @@ +package com.nedap.archie.text.serializers.action; + +import com.nedap.archie.rm.composition.InstructionDetails; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class InstructionDetailsSerializer implements RmSerializer { + @Override + public void serialize(InstructionDetails data, RmToTextSerializer serializer) { + serializer.writeToText(data.getWfDetails()); + //TODO: reference to instruction? + } + + @Override + public Class getSerializedClass() { + return InstructionDetails.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java new file mode 100644 index 000000000..eb4c100c1 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java @@ -0,0 +1,36 @@ +package com.nedap.archie.text.serializers.action; + +import com.nedap.archie.rm.composition.IsmTransition; +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class IsmTransitionSerializer implements RmSerializer { + @Override + public void serialize(IsmTransition data, RmToTextSerializer serializer) { + if(data.getTransition() != null) { + serializer.append("transitie: "); + serializer.writeToText(data.getTransition()); + serializer.append("\n"); + } + if(data.getCareflowStep() != null) { + serializer.append("stap: "); + serializer.writeToText(data.getCareflowStep()); + } + if(data.getCurrentState() != null) { + serializer.append("huidige toestand: "); + serializer.writeToText(data.getCurrentState()); + } + if(data.getReason() != null) { + for(DvText reason: data.getReason()) { + serializer.append("reden: "); + serializer.writeToText(reason); + } + } + } + + @Override + public Class getSerializedClass() { + return IsmTransition.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java new file mode 100644 index 000000000..dd7738906 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java @@ -0,0 +1,26 @@ +package com.nedap.archie.text.serializers.entries; + +import com.nedap.archie.rm.composition.Action; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class ActionSerializer implements RmSerializer { + @Override + public void serialize(Action data, RmToTextSerializer serializer) { + serializer.writeToText(data.getName()); + serializer.append("\n"); + serializer.writeToText(data.getDescription()); + serializer.append("\n"); + serializer.writeToText(data.getProtocol()); + serializer.append("\n"); + serializer.writeToText(data.getInstructionDetails()); + serializer.append("\n"); + serializer.writeToText(data.getIsmTransition()); + serializer.append("\n"); + } + + @Override + public Class getSerializedClass() { + return Action.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java new file mode 100644 index 000000000..85dd7f95f --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java @@ -0,0 +1,25 @@ +package com.nedap.archie.text.serializers.entries; + +import com.nedap.archie.rm.composition.AdminEntry; +import com.nedap.archie.rm.composition.Evaluation; +import com.nedap.archie.rm.datastructures.ItemStructure; +import com.nedap.archie.rm.integration.GenericEntry; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; +import sun.net.www.content.text.Generic; + +public class AdminEntrySerializer implements RmSerializer { + @Override + public void serialize(AdminEntry data, RmToTextSerializer serializer) { + serializer.append("### "); + serializer.writeToText(data.getName()); + serializer.append("\n"); + serializer.writeToText(data.getData()); + serializer.append("\n"); + } + + @Override + public Class getSerializedClass() { + return AdminEntry.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java new file mode 100644 index 000000000..3acc5112d --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java @@ -0,0 +1,24 @@ +package com.nedap.archie.text.serializers.entries; + +import com.nedap.archie.rm.composition.Evaluation; +import com.nedap.archie.rm.datastructures.ItemStructure; +import com.nedap.archie.rm.integration.GenericEntry; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; +import sun.net.www.content.text.Generic; + +public class GenericEntrySerializer implements RmSerializer { + @Override + public void serialize(GenericEntry data, RmToTextSerializer serializer) { + serializer.append("### "); + serializer.writeToText(data.getName()); + serializer.append("\n"); + serializer.writeToText(data.getData()); + serializer.append("\n"); + } + + @Override + public Class getSerializedClass() { + return GenericEntry.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java new file mode 100644 index 000000000..73727df88 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java @@ -0,0 +1,35 @@ +package com.nedap.archie.text.serializers.entries; + +import com.nedap.archie.rm.composition.Activity; +import com.nedap.archie.rm.composition.Instruction; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class InstructionSerializer implements RmSerializer { + @Override + public void serialize(Instruction data, RmToTextSerializer serializer) { + serializer.writeToText(data.getName()); + serializer.append("\n"); + if(data.getActivities() != null) { + for(Activity activity:data.getActivities()) { + serializer.writeToText(activity); + serializer.append("\n"); + } + } + if(data.getProtocol() != null) { + serializer.writeToText(data.getProtocol()); + serializer.append("\n"); + } + if(data.getExpiryTime() != null) { + serializer.append("verloopdatum: "); + serializer.writeToText(data.getExpiryTime()); + serializer.append("\n"); + } + //TODO: wf definition - but we do not know the format here! + } + + @Override + public Class getSerializedClass() { + return Instruction.class; + } +} From 7d489cdb1049fd10c2008e61f7dcf66eced5914e Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Mon, 22 May 2023 11:20:31 +0200 Subject: [PATCH 04/20] Refactor writeToText rename to append --- .../com/nedap/archie/text/ReflectionRmSerializer.java | 3 +-- .../java/com/nedap/archie/text/RmToTextSerializer.java | 2 +- .../archie/text/serializers/ClusterSerializer.java | 4 ++-- .../archie/text/serializers/CompositionSerializer.java | 7 ++----- .../archie/text/serializers/ElementSerializer.java | 10 ++++------ .../archie/text/serializers/ItemListSerializer.java | 5 ++--- .../archie/text/serializers/ItemTreeSerializer.java | 5 ++--- .../archie/text/serializers/SectionSerializer.java | 6 ++---- .../text/serializers/action/ActivitySerializer.java | 4 ++-- .../action/InstructionDetailsSerializer.java | 2 +- .../serializers/action/IsmTransitionSerializer.java | 8 ++++---- .../serializers/datatypes/DvOrdinalSerializer.java | 5 +---- .../text/serializers/entries/ActionSerializer.java | 10 +++++----- .../text/serializers/entries/AdminEntrySerializer.java | 8 ++------ .../text/serializers/entries/EvaluationSerializer.java | 7 +++---- .../serializers/entries/GenericEntrySerializer.java | 7 ++----- .../serializers/entries/InstructionSerializer.java | 8 ++++---- .../serializers/entries/ObservationSerializer.java | 10 +++++----- .../com/nedap/archie/text/RmToTextSerializerTest.java | 7 +------ 19 files changed, 46 insertions(+), 72 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java index 9db8da8f7..82deb29ea 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java @@ -1,7 +1,6 @@ package com.nedap.archie.text; import com.nedap.archie.rm.RMObject; -import com.nedap.archie.rminfo.ArchieAOMInfoLookup; import com.nedap.archie.rminfo.ArchieRMInfoLookup; import com.nedap.archie.rminfo.RMAttributeInfo; import com.nedap.archie.rminfo.RMTypeInfo; @@ -35,7 +34,7 @@ public void serialize(RMObject object, RmToTextSerializer serializer) { if(result == null) { serializer.append(" - "); } else if(result instanceof RMObject) { - serializer.writeToText((RMObject) result); + serializer.append((RMObject) result); } else { serializer.append(result.toString()); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java index bcae40367..a5d4af813 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java @@ -63,7 +63,7 @@ private void addSerializer(RmSerializer serializer) { serializers.put(serializer.getSerializedClass(), serializer); } - public void writeToText(RMObject object){ + public void append(RMObject object){ if(object == null) { return; } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java index 4a73bf3c4..ac183a66d 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java @@ -10,10 +10,10 @@ public class ClusterSerializer implements RmSerializer { @Override public void serialize(Cluster data, RmToTextSerializer serializer) { serializer.append("#### "); - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); for(Item item: data.getItems()) { - serializer.writeToText(item); + serializer.append(item); serializer.append("\n"); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java index f6cb1fbda..b1aba1943 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java @@ -2,9 +2,6 @@ import com.nedap.archie.rm.composition.Composition; import com.nedap.archie.rm.composition.ContentItem; -import com.nedap.archie.rm.composition.Section; -import com.nedap.archie.rm.datastructures.Cluster; -import com.nedap.archie.rm.datastructures.Item; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; @@ -13,10 +10,10 @@ public class CompositionSerializer implements RmSerializer { @Override public void serialize(Composition data, RmToTextSerializer serializer) { serializer.append("# "); - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); for(ContentItem item: data.getContent()) { - serializer.writeToText(item); + serializer.append(item); serializer.append("\n"); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java index 5e85f1c41..53187355f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java @@ -1,8 +1,6 @@ package com.nedap.archie.text.serializers; -import com.nedap.archie.rm.datastructures.Cluster; import com.nedap.archie.rm.datastructures.Element; -import com.nedap.archie.rm.datastructures.Item; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; @@ -10,18 +8,18 @@ public class ElementSerializer implements RmSerializer { @Override public void serialize(Element data, RmToTextSerializer serializer) { - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append(": "); if(data.getValue() != null) { - serializer.writeToText(data.getValue()); + serializer.append(data.getValue()); } else { if(data.getNullFlavour() != null) { serializer.append(" leeg. Reden: "); - serializer.writeToText(data.getNullFlavour()); + serializer.append(data.getNullFlavour()); if(data.getNullReason() != null) { serializer.append(" "); - serializer.writeToText(data.getNullReason()); + serializer.append(data.getNullReason()); } } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java index f546db0f8..32ebc955f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java @@ -1,6 +1,5 @@ package com.nedap.archie.text.serializers; -import com.nedap.archie.rm.datastructures.Cluster; import com.nedap.archie.rm.datastructures.Item; import com.nedap.archie.rm.datastructures.ItemList; import com.nedap.archie.text.RmSerializer; @@ -11,10 +10,10 @@ public class ItemListSerializer implements RmSerializer { @Override public void serialize(ItemList data, RmToTextSerializer serializer) { serializer.append("#### "); - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); for(Item item: data.getItems()) { - serializer.writeToText(item); + serializer.append(item); serializer.append("\n"); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java index 77bb1679c..66d0524d9 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java @@ -1,6 +1,5 @@ package com.nedap.archie.text.serializers; -import com.nedap.archie.rm.datastructures.Cluster; import com.nedap.archie.rm.datastructures.Item; import com.nedap.archie.rm.datastructures.ItemTree; import com.nedap.archie.text.RmSerializer; @@ -11,10 +10,10 @@ public class ItemTreeSerializer implements RmSerializer { @Override public void serialize(ItemTree data, RmToTextSerializer serializer) { serializer.append("#### "); - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); for(Item item: data.getItems()) { - serializer.writeToText(item); + serializer.append(item); serializer.append("\n"); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java index 0b2fd5308..c4649ca85 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java @@ -2,8 +2,6 @@ import com.nedap.archie.rm.composition.ContentItem; import com.nedap.archie.rm.composition.Section; -import com.nedap.archie.rm.datastructures.Cluster; -import com.nedap.archie.rm.datastructures.Item; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; @@ -12,10 +10,10 @@ public class SectionSerializer implements RmSerializer
{ @Override public void serialize(Section data, RmToTextSerializer serializer) { serializer.append("## "); - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); for(ContentItem item: data.getItems()) { - serializer.writeToText(item); + serializer.append(item); serializer.append("\n"); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java index 3288224be..1989932c9 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java @@ -7,10 +7,10 @@ public class ActivitySerializer implements RmSerializer { @Override public void serialize(Activity data, RmToTextSerializer serializer) { - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); if(data.getDescription() != null) { - serializer.writeToText(data.getDescription()); + serializer.append(data.getDescription()); serializer.append("\n"); } if(data.getActionArchetypeId() != null) { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java index 1faf4fc76..44e58162f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java @@ -7,7 +7,7 @@ public class InstructionDetailsSerializer implements RmSerializer { @Override public void serialize(InstructionDetails data, RmToTextSerializer serializer) { - serializer.writeToText(data.getWfDetails()); + serializer.append(data.getWfDetails()); //TODO: reference to instruction? } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java index eb4c100c1..fb030fd71 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java @@ -10,21 +10,21 @@ public class IsmTransitionSerializer implements RmSerializer { public void serialize(IsmTransition data, RmToTextSerializer serializer) { if(data.getTransition() != null) { serializer.append("transitie: "); - serializer.writeToText(data.getTransition()); + serializer.append(data.getTransition()); serializer.append("\n"); } if(data.getCareflowStep() != null) { serializer.append("stap: "); - serializer.writeToText(data.getCareflowStep()); + serializer.append(data.getCareflowStep()); } if(data.getCurrentState() != null) { serializer.append("huidige toestand: "); - serializer.writeToText(data.getCurrentState()); + serializer.append(data.getCurrentState()); } if(data.getReason() != null) { for(DvText reason: data.getReason()) { serializer.append("reden: "); - serializer.writeToText(reason); + serializer.append(reason); } } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java index ccf287151..69a532145 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java @@ -1,8 +1,5 @@ package com.nedap.archie.text.serializers.datatypes; -import com.nedap.archie.rm.datavalues.DvCodedText; -import com.nedap.archie.rm.datavalues.DvText; -import com.nedap.archie.rm.datavalues.quantity.DvOrdered; import com.nedap.archie.rm.datavalues.quantity.DvOrdinal; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; @@ -14,7 +11,7 @@ public void serialize(DvOrdinal data, RmToTextSerializer serializer) { serializer.append(Long.toString(data.getValue())); serializer.append(" - "); } - serializer.writeToText(data.getSymbol()); + serializer.append(data.getSymbol()); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java index dd7738906..555278069 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java @@ -7,15 +7,15 @@ public class ActionSerializer implements RmSerializer { @Override public void serialize(Action data, RmToTextSerializer serializer) { - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); - serializer.writeToText(data.getDescription()); + serializer.append(data.getDescription()); serializer.append("\n"); - serializer.writeToText(data.getProtocol()); + serializer.append(data.getProtocol()); serializer.append("\n"); - serializer.writeToText(data.getInstructionDetails()); + serializer.append(data.getInstructionDetails()); serializer.append("\n"); - serializer.writeToText(data.getIsmTransition()); + serializer.append(data.getIsmTransition()); serializer.append("\n"); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java index 85dd7f95f..ef019c071 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java @@ -1,20 +1,16 @@ package com.nedap.archie.text.serializers.entries; import com.nedap.archie.rm.composition.AdminEntry; -import com.nedap.archie.rm.composition.Evaluation; -import com.nedap.archie.rm.datastructures.ItemStructure; -import com.nedap.archie.rm.integration.GenericEntry; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -import sun.net.www.content.text.Generic; public class AdminEntrySerializer implements RmSerializer { @Override public void serialize(AdminEntry data, RmToTextSerializer serializer) { serializer.append("### "); - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); - serializer.writeToText(data.getData()); + serializer.append(data.getData()); serializer.append("\n"); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java index 778af8d96..7be97155d 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java @@ -1,7 +1,6 @@ package com.nedap.archie.text.serializers.entries; import com.nedap.archie.rm.composition.Evaluation; -import com.nedap.archie.rm.datastructures.ItemStructure; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; @@ -9,11 +8,11 @@ public class EvaluationSerializer implements RmSerializer { @Override public void serialize(Evaluation data, RmToTextSerializer serializer) { serializer.append("### "); - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); - serializer.writeToText(data.getData()); + serializer.append(data.getData()); serializer.append("\n"); - serializer.writeToText(data.getProtocol()); + serializer.append(data.getProtocol()); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java index 3acc5112d..1e8291f34 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java @@ -1,19 +1,16 @@ package com.nedap.archie.text.serializers.entries; -import com.nedap.archie.rm.composition.Evaluation; -import com.nedap.archie.rm.datastructures.ItemStructure; import com.nedap.archie.rm.integration.GenericEntry; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -import sun.net.www.content.text.Generic; public class GenericEntrySerializer implements RmSerializer { @Override public void serialize(GenericEntry data, RmToTextSerializer serializer) { serializer.append("### "); - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); - serializer.writeToText(data.getData()); + serializer.append(data.getData()); serializer.append("\n"); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java index 73727df88..c6acf8f7b 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java @@ -8,21 +8,21 @@ public class InstructionSerializer implements RmSerializer { @Override public void serialize(Instruction data, RmToTextSerializer serializer) { - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); if(data.getActivities() != null) { for(Activity activity:data.getActivities()) { - serializer.writeToText(activity); + serializer.append(activity); serializer.append("\n"); } } if(data.getProtocol() != null) { - serializer.writeToText(data.getProtocol()); + serializer.append(data.getProtocol()); serializer.append("\n"); } if(data.getExpiryTime() != null) { serializer.append("verloopdatum: "); - serializer.writeToText(data.getExpiryTime()); + serializer.append(data.getExpiryTime()); serializer.append("\n"); } //TODO: wf definition - but we do not know the format here! diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java index 4c7d514f0..4abab8fda 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java @@ -12,12 +12,12 @@ public class ObservationSerializer implements RmSerializer { public void serialize(Observation data, RmToTextSerializer serializer) { serializer.append("### "); - serializer.writeToText(data.getName()); + serializer.append(data.getName()); serializer.append("\n"); writeHistory(data.getData(), serializer); serializer.append("\n"); writeHistory(data.getState(), serializer); - serializer.writeToText(data.getProtocol()); + serializer.append(data.getProtocol()); } private void writeHistory(History data, RmToTextSerializer serializer) { @@ -26,10 +26,10 @@ private void writeHistory(History data, RmToTextSerializer serial for(Event event: data.getEvents()) { //TODO: event name: probably not interesting, although sometimes it could be! serializer.append("Moment van observatie:"); - serializer.writeToText(event.getTime()); + serializer.append(event.getTime()); serializer.append("\n"); - serializer.writeToText(event.getData()); - serializer.writeToText(event.getState()); + serializer.append(event.getData()); + serializer.append(event.getState()); } } } diff --git a/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java index 17a751cd8..335ccf47c 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java @@ -13,16 +13,11 @@ import com.nedap.archie.json.ArchieJacksonConfiguration; import com.nedap.archie.json.JacksonUtil; import com.nedap.archie.rm.composition.Observation; -import com.nedap.archie.rminfo.ArchieRMInfoLookup; -import com.nedap.archie.rmobjectvalidator.RMObjectValidationMessage; -import com.nedap.archie.rmobjectvalidator.RMObjectValidator; import org.junit.Test; import org.openehr.referencemodels.BuiltinReferenceModels; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; import java.util.Map; import static org.junit.Assert.assertEquals; @@ -41,7 +36,7 @@ public void bloodPressure() throws Exception { Observation observation = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Observation.class); RmToTextSerializer rmToTextSerializer = new RmToTextSerializer(); - rmToTextSerializer.writeToText(observation); + rmToTextSerializer.append(observation); System.out.println(rmToTextSerializer.toString()); } From 3d827c5b910adce04593eaea9fdfb353d4e2b862 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Mon, 22 May 2023 11:50:36 +0200 Subject: [PATCH 05/20] Added a generic LocatableSerializer --- .../nedap/archie/text/RmToTextSerializer.java | 20 ++++++++ .../text/serializers/ClusterSerializer.java | 3 +- .../serializers/CompositionSerializer.java | 14 +++++- .../serializers/EventContextSerializer.java | 48 +++++++++++++++++++ .../text/serializers/ItemListSerializer.java | 3 +- .../text/serializers/ItemTreeSerializer.java | 4 +- .../text/serializers/LocatableSerializer.java | 21 ++++++++ .../serializers/ParticipationSerializer.java | 38 +++++++++++++++ .../text/serializers/SectionSerializer.java | 3 +- .../action/ActivitySerializer.java | 5 +- .../audit/FeederAuditDetailsSerializer.java | 39 +++++++++++++++ .../audit/FeederAuditSerializer.java | 26 ++++++++++ .../datatypes/DvIdentifierSerializer.java | 37 ++++++++++++++ .../PartyIdentifiedSerializer.java | 28 +++++++++++ .../demographic/PartyRelatedSerializer.java | 32 +++++++++++++ .../demographic/PartySelfSerializer.java | 17 +++++++ .../serializers/entries/ActionSerializer.java | 5 +- .../entries/AdminEntrySerializer.java | 4 +- .../entries/EvaluationSerializer.java | 4 +- .../entries/GenericEntrySerializer.java | 4 +- .../entries/InstructionSerializer.java | 5 +- .../entries/ObservationSerializer.java | 5 +- 22 files changed, 341 insertions(+), 24 deletions(-) create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java index a5d4af813..e0fe0bff8 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java @@ -5,7 +5,12 @@ import com.nedap.archie.text.serializers.action.ActivitySerializer; import com.nedap.archie.text.serializers.action.InstructionDetailsSerializer; import com.nedap.archie.text.serializers.action.IsmTransitionSerializer; +import com.nedap.archie.text.serializers.audit.FeederAuditDetailsSerializer; +import com.nedap.archie.text.serializers.audit.FeederAuditSerializer; import com.nedap.archie.text.serializers.datatypes.*; +import com.nedap.archie.text.serializers.demographic.PartyIdentifiedSerializer; +import com.nedap.archie.text.serializers.demographic.PartyRelatedSerializer; +import com.nedap.archie.text.serializers.demographic.PartySelfSerializer; import com.nedap.archie.text.serializers.entries.*; import java.util.HashMap; @@ -30,6 +35,10 @@ public RmToTextSerializer() { addSerializer(new ItemTreeSerializer()); addSerializer(new SectionSerializer()); + //composition extra classes + addSerializer(new EventContextSerializer()); + addSerializer(new ParticipationSerializer()); + //entries addSerializer(new EvaluationSerializer()); addSerializer(new ObservationSerializer()); @@ -43,6 +52,11 @@ public RmToTextSerializer() { addSerializer(new InstructionDetailsSerializer()); addSerializer(new IsmTransitionSerializer()); + //references to demographics + addSerializer(new PartyIdentifiedSerializer()); + addSerializer(new PartyRelatedSerializer()); + addSerializer(new PartySelfSerializer()); + //data values addSerializer(new DvBooleanSerializer()); addSerializer(new DvCodedTextSerializer()); @@ -55,6 +69,12 @@ public RmToTextSerializer() { addSerializer(new DvQuantitySerializer()); addSerializer(new DvTextSerializer()); addSerializer(new DvTimeSerializer()); + addSerializer(new DvIdentifierSerializer()); + + //Feeder audits + addSerializer(new FeederAuditSerializer()); + addSerializer(new FeederAuditDetailsSerializer()); + fallbackSerializer = new ReflectionRmSerializer(); stringBuilder = new StringBuilder(); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java index ac183a66d..13cb93923 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java @@ -10,8 +10,7 @@ public class ClusterSerializer implements RmSerializer { @Override public void serialize(Cluster data, RmToTextSerializer serializer) { serializer.append("#### "); - serializer.append(data.getName()); - serializer.append("\n"); + new LocatableSerializer().serialize(data, serializer); for(Item item: data.getItems()) { serializer.append(item); serializer.append("\n"); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java index b1aba1943..a68821d1f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java @@ -10,12 +10,22 @@ public class CompositionSerializer implements RmSerializer { @Override public void serialize(Composition data, RmToTextSerializer serializer) { serializer.append("# "); - serializer.append(data.getName()); - serializer.append("\n"); + new LocatableSerializer().serialize(data, serializer); + for(ContentItem item: data.getContent()) { serializer.append(item); serializer.append("\n"); } + if(data.getComposer() != null) { + serializer.append("auteur: "); + serializer.append(data.getComposer()); + serializer.append("\n"); + } + if(data.getContext() != null) { + serializer.append(data.getContext()); + } + //not written for now: language, territory + } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java new file mode 100644 index 000000000..3f363dacd --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java @@ -0,0 +1,48 @@ +package com.nedap.archie.text.serializers; + +import com.nedap.archie.rm.composition.EventContext; +import com.nedap.archie.rm.generic.Participation; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class EventContextSerializer implements RmSerializer { + @Override + public void serialize(EventContext data, RmToTextSerializer serializer) { + + if(data.getLocation() != null) { + serializer.append("locatie: "); + serializer.append(data.getLocation()); + serializer.append("\n"); + } + if(data.getStartTime() != null) { + serializer.append("starttijd: "); + serializer.append(data.getStartTime()); + serializer.append("\n"); + } + if(data.getEndTime() != null) { + serializer.append("eindtijd: "); + serializer.append(data.getEndTime()); + serializer.append("\n"); + } + if(data.getSetting() != null) { + serializer.append("setting: "); + serializer.append(data.getSetting()); + serializer.append("\n"); + } + if(data.getParticipations() != null && !data.getParticipations().isEmpty()) { + serializer.append("##### participations"); + for(Participation participation:data.getParticipations()) { + serializer.append(participation); + serializer.append("\n"); + } + } + if(data.getOtherContext() != null) { + serializer.append(data.getOtherContext()); + } + } + + @Override + public Class getSerializedClass() { + return EventContext.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java index 32ebc955f..2aa04605f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java @@ -10,8 +10,7 @@ public class ItemListSerializer implements RmSerializer { @Override public void serialize(ItemList data, RmToTextSerializer serializer) { serializer.append("#### "); - serializer.append(data.getName()); - serializer.append("\n"); + new LocatableSerializer().serialize(data, serializer); for(Item item: data.getItems()) { serializer.append(item); serializer.append("\n"); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java index 66d0524d9..2ffe5be90 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java @@ -10,8 +10,8 @@ public class ItemTreeSerializer implements RmSerializer { @Override public void serialize(ItemTree data, RmToTextSerializer serializer) { serializer.append("#### "); - serializer.append(data.getName()); - serializer.append("\n"); + new LocatableSerializer().serialize(data, serializer); + for(Item item: data.getItems()) { serializer.append(item); serializer.append("\n"); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableSerializer.java new file mode 100644 index 000000000..762a7517d --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableSerializer.java @@ -0,0 +1,21 @@ +package com.nedap.archie.text.serializers; + +import com.nedap.archie.rm.archetyped.Locatable; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class LocatableSerializer implements RmSerializer { + @Override + public void serialize(Locatable data, RmToTextSerializer serializer) { + serializer.append(data.getName()); + serializer.append("\n"); + if(data.getFeederAudit() != null) { + serializer.append(data.getFeederAudit()); + } + } + + @Override + public Class getSerializedClass() { + return Locatable.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java new file mode 100644 index 000000000..5233ae735 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java @@ -0,0 +1,38 @@ +package com.nedap.archie.text.serializers; + +import com.nedap.archie.rm.generic.Participation; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; +import org.reflections.serializers.Serializer; + +public class ParticipationSerializer implements RmSerializer { + @Override + public void serialize(Participation data, RmToTextSerializer serializer) { + if(data.getFunction() != null) { + serializer.append("functie: "); + serializer.append(data.getFunction()); + serializer.append("\n"); + } + if(data.getMode() != null) { + serializer.append("mode: "); + serializer.append(data.getFunction()); + serializer.append("\n"); + } + if(data.getTime() != null) { + serializer.append("tijd: "); + serializer.append(data.getTime()); + serializer.append("\n"); + } + if(data.getPerformer() != null) { + serializer.append("uitvoerende: "); + serializer.append(data.getPerformer()); + serializer.append("\n"); + } + + } + + @Override + public Class getSerializedClass() { + return Participation.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java index c4649ca85..311bafebd 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java @@ -10,8 +10,7 @@ public class SectionSerializer implements RmSerializer
{ @Override public void serialize(Section data, RmToTextSerializer serializer) { serializer.append("## "); - serializer.append(data.getName()); - serializer.append("\n"); + new LocatableSerializer().serialize(data, serializer); for(ContentItem item: data.getItems()) { serializer.append(item); serializer.append("\n"); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java index 1989932c9..3ca23e3a1 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java @@ -3,12 +3,13 @@ import com.nedap.archie.rm.composition.Activity; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.serializers.LocatableSerializer; public class ActivitySerializer implements RmSerializer { @Override public void serialize(Activity data, RmToTextSerializer serializer) { - serializer.append(data.getName()); - serializer.append("\n"); + serializer.append("##### "); + new LocatableSerializer().serialize(data, serializer); if(data.getDescription() != null) { serializer.append(data.getDescription()); serializer.append("\n"); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java new file mode 100644 index 000000000..88d974e0b --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java @@ -0,0 +1,39 @@ +package com.nedap.archie.text.serializers.audit; + +import com.nedap.archie.rm.archetyped.FeederAuditDetails; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class FeederAuditDetailsSerializer implements RmSerializer { + @Override + public void serialize(FeederAuditDetails data, RmToTextSerializer serializer) { + if(data.getOtherDetails() != null) { + serializer.append(data.getOtherDetails()); + serializer.append("\n"); + } + if(data.getSystemId() != null) { + serializer.append("bronsysteem: "); + serializer.append(data.getSystemId()); + serializer.append("\n"); + } + if(data.getLocation() != null) { + serializer.append("locatie: " ); + serializer.append(data.getLocation()); + serializer.append("\n"); + } + if(data.getTime() != null) { + serializer.append(data.getTime()); + serializer.append("\n"); + } + if(data.getProvider() != null) { + serializer.append("zorgaanbieder: " ); + serializer.append(data.getProvider()); + serializer.append("\n"); + } + } + + @Override + public Class getSerializedClass() { + return FeederAuditDetails.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java new file mode 100644 index 000000000..875973ec8 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java @@ -0,0 +1,26 @@ +package com.nedap.archie.text.serializers.audit; + +import com.nedap.archie.rm.archetyped.FeederAudit; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class FeederAuditSerializer implements RmSerializer { + @Override + public void serialize(FeederAudit data, RmToTextSerializer serializer) { + if(data.getOriginatingSystemAudit() != null) { + serializer.append("##### audit uit bronsysteem"); + serializer.append("\n"); + serializer.append(data.getOriginatingSystemAudit()); + } + if(data.getFeederSystemAudit() != null) { + serializer.append("#### audit uit tussensysteem"); + serializer.append("\n"); + serializer.append(data.getFeederSystemAudit()); + } + } + + @Override + public Class getSerializedClass() { + return FeederAudit.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java new file mode 100644 index 000000000..ab42a61d0 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java @@ -0,0 +1,37 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.DvIdentifier; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvIdentifierSerializer implements RmSerializer { + + @Override + public void serialize(DvIdentifier data, RmToTextSerializer serializer) { + if(data.getType() != null) { + serializer.append("Type: "); + serializer.append(data.getType()); + serializer.append("\n"); + } + if(data.getId() != null) { + serializer.append("Id: "); + serializer.append(data.getId()); + serializer.append("\n"); + } + if(data.getIssuer() != null) { + serializer.append("Uitgever: "); + serializer.append(data.getIssuer()); + serializer.append("\n"); + } + if(data.getAssigner() != null) { + serializer.append("Toekenner: "); + serializer.append(data.getAssigner()); + serializer.append("\n"); + } + } + + @Override + public Class getSerializedClass() { + return null; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java new file mode 100644 index 000000000..4e2335540 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java @@ -0,0 +1,28 @@ +package com.nedap.archie.text.serializers.demographic; + +import com.nedap.archie.rm.datavalues.DvIdentifier; +import com.nedap.archie.rm.generic.PartyIdentified; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class PartyIdentifiedSerializer implements RmSerializer { + @Override + public void serialize(PartyIdentified data, RmToTextSerializer serializer) { + if(data.getName() != null) { + serializer.append("naam: "); + serializer.append(data.getName()); + serializer.append("\n"); + } + if(data.getIdentifiers() != null) { + for (DvIdentifier identifier : data.getIdentifiers()) { + serializer.append(identifier); + serializer.append("\n"); + } + } + } + + @Override + public Class getSerializedClass() { + return PartyIdentified.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java new file mode 100644 index 000000000..1b569a66c --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java @@ -0,0 +1,32 @@ +package com.nedap.archie.text.serializers.demographic; + +import com.nedap.archie.rm.datavalues.DvIdentifier; +import com.nedap.archie.rm.generic.PartyRelated; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class PartyRelatedSerializer implements RmSerializer { + @Override + public void serialize(PartyRelated data, RmToTextSerializer serializer) { + if(data.getRelationship() != null) { + serializer.append("relatie: "); + serializer.append(data.getRelationship()); + serializer.append("\n"); + } + if(data.getName() != null) { + serializer.append("naam: "); + serializer.append(data.getName()); + serializer.append("\n"); + } + if(data.getIdentifiers() != null) { + for(DvIdentifier identifier: data.getIdentifiers()) { + serializer.append(identifier); + } + } + } + + @Override + public Class getSerializedClass() { + return PartyRelated.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java new file mode 100644 index 000000000..15f0ff4cf --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java @@ -0,0 +1,17 @@ +package com.nedap.archie.text.serializers.demographic; + +import com.nedap.archie.rm.generic.PartySelf; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class PartySelfSerializer implements RmSerializer { + @Override + public void serialize(PartySelf data, RmToTextSerializer serializer) { + serializer.append("de persoon zelf\n"); + } + + @Override + public Class getSerializedClass() { + return PartySelf.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java index 555278069..8b112d570 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java @@ -3,12 +3,13 @@ import com.nedap.archie.rm.composition.Action; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.serializers.LocatableSerializer; public class ActionSerializer implements RmSerializer { @Override public void serialize(Action data, RmToTextSerializer serializer) { - serializer.append(data.getName()); - serializer.append("\n"); + serializer.append("### "); + new LocatableSerializer().serialize(data, serializer); serializer.append(data.getDescription()); serializer.append("\n"); serializer.append(data.getProtocol()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java index ef019c071..f7d9666a4 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java @@ -3,13 +3,13 @@ import com.nedap.archie.rm.composition.AdminEntry; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.serializers.LocatableSerializer; public class AdminEntrySerializer implements RmSerializer { @Override public void serialize(AdminEntry data, RmToTextSerializer serializer) { serializer.append("### "); - serializer.append(data.getName()); - serializer.append("\n"); + new LocatableSerializer().serialize(data, serializer); serializer.append(data.getData()); serializer.append("\n"); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java index 7be97155d..4e65d18f0 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java @@ -3,13 +3,13 @@ import com.nedap.archie.rm.composition.Evaluation; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.serializers.LocatableSerializer; public class EvaluationSerializer implements RmSerializer { @Override public void serialize(Evaluation data, RmToTextSerializer serializer) { serializer.append("### "); - serializer.append(data.getName()); - serializer.append("\n"); + new LocatableSerializer().serialize(data, serializer); serializer.append(data.getData()); serializer.append("\n"); serializer.append(data.getProtocol()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java index 1e8291f34..e0d542278 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java @@ -3,13 +3,13 @@ import com.nedap.archie.rm.integration.GenericEntry; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.serializers.LocatableSerializer; public class GenericEntrySerializer implements RmSerializer { @Override public void serialize(GenericEntry data, RmToTextSerializer serializer) { serializer.append("### "); - serializer.append(data.getName()); - serializer.append("\n"); + new LocatableSerializer().serialize(data, serializer); serializer.append(data.getData()); serializer.append("\n"); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java index c6acf8f7b..9493497f5 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java @@ -4,12 +4,13 @@ import com.nedap.archie.rm.composition.Instruction; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.serializers.LocatableSerializer; public class InstructionSerializer implements RmSerializer { @Override public void serialize(Instruction data, RmToTextSerializer serializer) { - serializer.append(data.getName()); - serializer.append("\n"); + serializer.append("### "); + new LocatableSerializer().serialize(data, serializer); if(data.getActivities() != null) { for(Activity activity:data.getActivities()) { serializer.append(activity); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java index 4abab8fda..a80837c3c 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java @@ -6,15 +6,16 @@ import com.nedap.archie.rm.datastructures.ItemStructure; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.serializers.LocatableSerializer; public class ObservationSerializer implements RmSerializer { @Override public void serialize(Observation data, RmToTextSerializer serializer) { serializer.append("### "); - serializer.append(data.getName()); - serializer.append("\n"); + new LocatableSerializer().serialize(data, serializer); writeHistory(data.getData(), serializer); + serializer.append("\n"); writeHistory(data.getState(), serializer); serializer.append(data.getProtocol()); From a6dd7ce1fa5ad7f90c65cfe4114778091b9a9599 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Mon, 22 May 2023 12:02:59 +0200 Subject: [PATCH 06/20] Add I18n, add appendIfNotNull for generic appending --- .../nedap/archie/text/RmToTextSerializer.java | 20 ++++++++++++++ .../serializers/CompositionSerializer.java | 11 +++----- .../serializers/EventContextSerializer.java | 25 ++++-------------- .../serializers/ParticipationSerializer.java | 26 ++++--------------- .../action/ActivitySerializer.java | 12 +++------ .../audit/FeederAuditSerializer.java | 19 +++++++------- .../serializers/entries/ActionSerializer.java | 13 ++++------ .../entries/InstructionSerializer.java | 14 ++++------ .../entries/ObservationSerializer.java | 3 ++- 9 files changed, 57 insertions(+), 86 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java index e0fe0bff8..a9218288d 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java @@ -96,6 +96,24 @@ public void append(RMObject object){ } } + public void appendIfNotNull(String name, RMObject data) { + if(data != null) { + append(name); + append(": "); + append(data); + append("\n"); + } + } + + public void appendIfNotNull(String name, String data) { + if(data != null) { + append(name); + append(": "); + append(data); + append("\n"); + } + } + public String toString() { return stringBuilder.toString(); } @@ -103,4 +121,6 @@ public String toString() { public void append(String toWrite) { stringBuilder.append(toWrite); } + + } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java index a68821d1f..6ce51df6b 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java @@ -4,6 +4,7 @@ import com.nedap.archie.rm.composition.ContentItem; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class CompositionSerializer implements RmSerializer { @@ -16,14 +17,8 @@ public void serialize(Composition data, RmToTextSerializer serializer) { serializer.append(item); serializer.append("\n"); } - if(data.getComposer() != null) { - serializer.append("auteur: "); - serializer.append(data.getComposer()); - serializer.append("\n"); - } - if(data.getContext() != null) { - serializer.append(data.getContext()); - } + serializer.appendIfNotNull(I18n.t("Composer"), data.getComposer()); + serializer.appendIfNotNull(I18n.t("## Context"), data.getContext()); //not written for now: language, territory } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java index 3f363dacd..8d5af81f5 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java @@ -9,26 +9,11 @@ public class EventContextSerializer implements RmSerializer { @Override public void serialize(EventContext data, RmToTextSerializer serializer) { - if(data.getLocation() != null) { - serializer.append("locatie: "); - serializer.append(data.getLocation()); - serializer.append("\n"); - } - if(data.getStartTime() != null) { - serializer.append("starttijd: "); - serializer.append(data.getStartTime()); - serializer.append("\n"); - } - if(data.getEndTime() != null) { - serializer.append("eindtijd: "); - serializer.append(data.getEndTime()); - serializer.append("\n"); - } - if(data.getSetting() != null) { - serializer.append("setting: "); - serializer.append(data.getSetting()); - serializer.append("\n"); - } + serializer.appendIfNotNull("Location", data.getLocation()); + serializer.appendIfNotNull("Start time", data.getStartTime()); + serializer.appendIfNotNull("End time", data.getEndTime()); + serializer.appendIfNotNull("Setting", data.getSetting()); + if(data.getParticipations() != null && !data.getParticipations().isEmpty()) { serializer.append("##### participations"); for(Participation participation:data.getParticipations()) { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java index 5233ae735..9c0afa8d7 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java @@ -3,32 +3,16 @@ import com.nedap.archie.rm.generic.Participation; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; import org.reflections.serializers.Serializer; public class ParticipationSerializer implements RmSerializer { @Override public void serialize(Participation data, RmToTextSerializer serializer) { - if(data.getFunction() != null) { - serializer.append("functie: "); - serializer.append(data.getFunction()); - serializer.append("\n"); - } - if(data.getMode() != null) { - serializer.append("mode: "); - serializer.append(data.getFunction()); - serializer.append("\n"); - } - if(data.getTime() != null) { - serializer.append("tijd: "); - serializer.append(data.getTime()); - serializer.append("\n"); - } - if(data.getPerformer() != null) { - serializer.append("uitvoerende: "); - serializer.append(data.getPerformer()); - serializer.append("\n"); - } - + serializer.appendIfNotNull(I18n.t("Function of participant"), data.getFunction()); + serializer.appendIfNotNull(I18n.t("Mode of participant"), data.getMode()); + serializer.appendIfNotNull(I18n.t("Time"), data.getTime()); + serializer.appendIfNotNull(I18n.t("Performer"), data.getPerformer()); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java index 3ca23e3a1..ba924d586 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java @@ -4,21 +4,15 @@ import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; import com.nedap.archie.text.serializers.LocatableSerializer; +import org.openehr.utils.message.I18n; public class ActivitySerializer implements RmSerializer { @Override public void serialize(Activity data, RmToTextSerializer serializer) { serializer.append("##### "); new LocatableSerializer().serialize(data, serializer); - if(data.getDescription() != null) { - serializer.append(data.getDescription()); - serializer.append("\n"); - } - if(data.getActionArchetypeId() != null) { - serializer.append("archetype voor actie: "); - serializer.append(data.getActionArchetypeId()); - serializer.append("\n"); - } + serializer.appendIfNotNull(I18n.t("Description"), data.getDescription()); + serializer.appendIfNotNull(I18n.t("Archetype for action"), data.getActionArchetypeId()); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java index 875973ec8..6dfbe9ed1 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java @@ -3,20 +3,19 @@ import com.nedap.archie.rm.archetyped.FeederAudit; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class FeederAuditSerializer implements RmSerializer { @Override public void serialize(FeederAudit data, RmToTextSerializer serializer) { - if(data.getOriginatingSystemAudit() != null) { - serializer.append("##### audit uit bronsysteem"); - serializer.append("\n"); - serializer.append(data.getOriginatingSystemAudit()); - } - if(data.getFeederSystemAudit() != null) { - serializer.append("#### audit uit tussensysteem"); - serializer.append("\n"); - serializer.append(data.getFeederSystemAudit()); - } + serializer.append("##### "); + serializer.appendIfNotNull( + I18n.t("Originating system audit"), + data.getOriginatingSystemAudit()); + + serializer.appendIfNotNull( + I18n.t("Feeder system audit"), + data.getFeederSystemAudit()); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java index 8b112d570..9e4dc5468 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java @@ -4,20 +4,17 @@ import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; import com.nedap.archie.text.serializers.LocatableSerializer; +import org.openehr.utils.message.I18n; public class ActionSerializer implements RmSerializer { @Override public void serialize(Action data, RmToTextSerializer serializer) { serializer.append("### "); new LocatableSerializer().serialize(data, serializer); - serializer.append(data.getDescription()); - serializer.append("\n"); - serializer.append(data.getProtocol()); - serializer.append("\n"); - serializer.append(data.getInstructionDetails()); - serializer.append("\n"); - serializer.append(data.getIsmTransition()); - serializer.append("\n"); + serializer.appendIfNotNull(I18n.t("Description"), data.getDescription()); + serializer.appendIfNotNull(I18n.t("Protocol"), data.getProtocol()); + serializer.appendIfNotNull(I18n.t("Instruction details"), data.getInstructionDetails()); + serializer.appendIfNotNull(I18n.t("State transition"), data.getIsmTransition()); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java index 9493497f5..bf4a9f6d6 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java @@ -5,6 +5,7 @@ import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; import com.nedap.archie.text.serializers.LocatableSerializer; +import org.openehr.utils.message.I18n; public class InstructionSerializer implements RmSerializer { @Override @@ -17,15 +18,10 @@ public void serialize(Instruction data, RmToTextSerializer serializer) { serializer.append("\n"); } } - if(data.getProtocol() != null) { - serializer.append(data.getProtocol()); - serializer.append("\n"); - } - if(data.getExpiryTime() != null) { - serializer.append("verloopdatum: "); - serializer.append(data.getExpiryTime()); - serializer.append("\n"); - } + serializer.appendIfNotNull(I18n.t("Protocol"), data.getProtocol()); + serializer.appendIfNotNull(I18n.t("Expiry time"), data.getExpiryTime()); + + //TODO: wf definition - but we do not know the format here! } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java index a80837c3c..20f71129a 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java @@ -7,6 +7,7 @@ import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; import com.nedap.archie.text.serializers.LocatableSerializer; +import org.openehr.utils.message.I18n; public class ObservationSerializer implements RmSerializer { @Override @@ -26,7 +27,7 @@ private void writeHistory(History data, RmToTextSerializer serial if(data.getEvents() != null) { for(Event event: data.getEvents()) { //TODO: event name: probably not interesting, although sometimes it could be! - serializer.append("Moment van observatie:"); + serializer.append(I18n.t("Time of observation")); serializer.append(event.getTime()); serializer.append("\n"); serializer.append(event.getData()); From 074d80db994affee27b75cf6bff9f43fbf4015d1 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Mon, 22 May 2023 12:07:42 +0200 Subject: [PATCH 07/20] Add more I18n + appendIfNull refactors --- .../text/serializers/ElementSerializer.java | 3 ++- .../action/IsmTransitionSerializer.java | 20 ++++------------ .../audit/FeederAuditDetailsSerializer.java | 24 ++++++------------- .../PartyIdentifiedSerializer.java | 7 ++---- .../demographic/PartyRelatedSerializer.java | 14 ++++------- .../demographic/PartySelfSerializer.java | 3 ++- 6 files changed, 22 insertions(+), 49 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java index 53187355f..006a2aa77 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java @@ -3,6 +3,7 @@ import com.nedap.archie.rm.datastructures.Element; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class ElementSerializer implements RmSerializer { @@ -15,7 +16,7 @@ public void serialize(Element data, RmToTextSerializer serializer) { serializer.append(data.getValue()); } else { if(data.getNullFlavour() != null) { - serializer.append(" leeg. Reden: "); + serializer.append(I18n.t("Element is empty. Reason: ")); serializer.append(data.getNullFlavour()); if(data.getNullReason() != null) { serializer.append(" "); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java index fb030fd71..1661d65c4 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java @@ -4,27 +4,17 @@ import com.nedap.archie.rm.datavalues.DvText; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class IsmTransitionSerializer implements RmSerializer { @Override public void serialize(IsmTransition data, RmToTextSerializer serializer) { - if(data.getTransition() != null) { - serializer.append("transitie: "); - serializer.append(data.getTransition()); - serializer.append("\n"); - } - if(data.getCareflowStep() != null) { - serializer.append("stap: "); - serializer.append(data.getCareflowStep()); - } - if(data.getCurrentState() != null) { - serializer.append("huidige toestand: "); - serializer.append(data.getCurrentState()); - } + serializer.appendIfNotNull(I18n.t("State transition"), data.getTransition()); + serializer.appendIfNotNull(I18n.t("Care flow step"), data.getCareflowStep()); + serializer.appendIfNotNull(I18n.t("Current state"), data.getCurrentState()); if(data.getReason() != null) { for(DvText reason: data.getReason()) { - serializer.append("reden: "); - serializer.append(reason); + serializer.appendIfNotNull(I18n.t("State transition reason"), data.getCurrentState()); } } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java index 88d974e0b..87e0bb440 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java @@ -3,31 +3,21 @@ import com.nedap.archie.rm.archetyped.FeederAuditDetails; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class FeederAuditDetailsSerializer implements RmSerializer { @Override public void serialize(FeederAuditDetails data, RmToTextSerializer serializer) { - if(data.getOtherDetails() != null) { - serializer.append(data.getOtherDetails()); - serializer.append("\n"); - } - if(data.getSystemId() != null) { - serializer.append("bronsysteem: "); - serializer.append(data.getSystemId()); - serializer.append("\n"); - } - if(data.getLocation() != null) { - serializer.append("locatie: " ); - serializer.append(data.getLocation()); - serializer.append("\n"); - } + serializer.appendIfNotNull(I18n.t("Originating system"), data.getSystemId()); + serializer.appendIfNotNull(I18n.t("Location"), data.getLocation()); + if(data.getTime() != null) { serializer.append(data.getTime()); serializer.append("\n"); } - if(data.getProvider() != null) { - serializer.append("zorgaanbieder: " ); - serializer.append(data.getProvider()); + serializer.appendIfNotNull(I18n.t("Audit provider"), data.getProvider()); + if(data.getOtherDetails() != null) { + serializer.append(data.getOtherDetails()); serializer.append("\n"); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java index 4e2335540..e44c28225 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java @@ -4,15 +4,12 @@ import com.nedap.archie.rm.generic.PartyIdentified; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class PartyIdentifiedSerializer implements RmSerializer { @Override public void serialize(PartyIdentified data, RmToTextSerializer serializer) { - if(data.getName() != null) { - serializer.append("naam: "); - serializer.append(data.getName()); - serializer.append("\n"); - } + serializer.appendIfNotNull(I18n.t("Name"), data.getName()); if(data.getIdentifiers() != null) { for (DvIdentifier identifier : data.getIdentifiers()) { serializer.append(identifier); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java index 1b569a66c..c911864bd 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java @@ -4,20 +4,14 @@ import com.nedap.archie.rm.generic.PartyRelated; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class PartyRelatedSerializer implements RmSerializer { @Override public void serialize(PartyRelated data, RmToTextSerializer serializer) { - if(data.getRelationship() != null) { - serializer.append("relatie: "); - serializer.append(data.getRelationship()); - serializer.append("\n"); - } - if(data.getName() != null) { - serializer.append("naam: "); - serializer.append(data.getName()); - serializer.append("\n"); - } + serializer.appendIfNotNull(I18n.t("Name"), data.getName()); + serializer.appendIfNotNull(I18n.t("Relationship"), data.getRelationship()); + if(data.getIdentifiers() != null) { for(DvIdentifier identifier: data.getIdentifiers()) { serializer.append(identifier); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java index 15f0ff4cf..405a2f3dd 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java @@ -3,11 +3,12 @@ import com.nedap.archie.rm.generic.PartySelf; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class PartySelfSerializer implements RmSerializer { @Override public void serialize(PartySelf data, RmToTextSerializer serializer) { - serializer.append("de persoon zelf\n"); + serializer.append(I18n.t("The person themselves\n")); } @Override From 4ea5eb3d93fe4d780e307b4f369ef3e2ed75835d Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Mon, 22 May 2023 14:23:33 +0200 Subject: [PATCH 08/20] More refactors, some additional types --- .../archie/text/ReflectionRmSerializer.java | 5 +++- .../nedap/archie/text/RmToTextSerializer.java | 8 +++++++ .../text/serializers/ClusterSerializer.java | 2 +- .../serializers/CompositionSerializer.java | 2 +- .../text/serializers/ItemListSerializer.java | 2 +- .../text/serializers/ItemTreeSerializer.java | 2 +- ...ableSerializer.java => LocatableUtil.java} | 11 +++------ .../text/serializers/SectionSerializer.java | 2 +- .../action/ActivitySerializer.java | 4 ++-- .../datatypes/DvCountSerializer.java | 2 ++ .../datatypes/DvDateSerializer.java | 1 + .../datatypes/DvDateTimeSerializer.java | 1 + .../datatypes/DvDurationSerializer.java | 2 ++ .../datatypes/DvIntervalSerializer.java | 22 ++++++++++++++++++ .../datatypes/DvProportionSerializer.java | 5 ++++ .../datatypes/DvQuantifiedUtil.java | 23 +++++++++++++++++++ .../datatypes/DvQuantitySerializer.java | 8 +++++-- .../datatypes/DvTimeSerializer.java | 1 + .../datatypes/ReferenceRangeSerializer.java | 23 +++++++++++++++++++ .../serializers/entries/ActionSerializer.java | 4 ++-- .../entries/AdminEntrySerializer.java | 4 ++-- .../entries/EvaluationSerializer.java | 4 ++-- .../entries/GenericEntrySerializer.java | 4 ++-- .../entries/InstructionSerializer.java | 4 ++-- .../entries/ObservationSerializer.java | 4 ++-- 25 files changed, 120 insertions(+), 30 deletions(-) rename archie-utils/src/main/java/com/nedap/archie/text/serializers/{LocatableSerializer.java => LocatableUtil.java} (60%) create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIntervalSerializer.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java create mode 100644 archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java diff --git a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java index 82deb29ea..f1553f12a 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java @@ -24,7 +24,10 @@ public void serialize(RMObject object, RmToTextSerializer serializer) { return; } for(RMAttributeInfo attribute: typeInfo.getAttributes().values()) { - if(attribute.getRmName().equalsIgnoreCase("parent")) { + if(attribute.getRmName().equalsIgnoreCase("parent") || + attribute.getRmName().equalsIgnoreCase("path") || + attribute.getRmName().equalsIgnoreCase("archetype_node_id")) { + //ignore parent to prevent endless loops. Ignore path and archetype node id because these are very technical fields continue; } serializer.append(attribute.getRmName()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java index a9218288d..b411a080c 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java @@ -28,6 +28,8 @@ public class RmToTextSerializer { public RmToTextSerializer() { serializers = new HashMap<>(); + + //composition and data structures addSerializer(new ClusterSerializer()); addSerializer(new CompositionSerializer()); addSerializer(new ElementSerializer()); @@ -70,11 +72,17 @@ public RmToTextSerializer() { addSerializer(new DvTextSerializer()); addSerializer(new DvTimeSerializer()); addSerializer(new DvIdentifierSerializer()); + addSerializer(new DvIntervalSerializer()); + + //supporting DV-classes + addSerializer(new ReferenceRangeSerializer()); //Feeder audits addSerializer(new FeederAuditSerializer()); addSerializer(new FeederAuditDetailsSerializer()); + //if no serializer is known, just serialize every field + //better would be to filter on non-technical attributes - However currently this works without the BMM fallbackSerializer = new ReflectionRmSerializer(); stringBuilder = new StringBuilder(); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java index 13cb93923..208aa9c0b 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java @@ -10,7 +10,7 @@ public class ClusterSerializer implements RmSerializer { @Override public void serialize(Cluster data, RmToTextSerializer serializer) { serializer.append("#### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); for(Item item: data.getItems()) { serializer.append(item); serializer.append("\n"); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java index 6ce51df6b..4090bf6ec 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java @@ -11,7 +11,7 @@ public class CompositionSerializer implements RmSerializer { @Override public void serialize(Composition data, RmToTextSerializer serializer) { serializer.append("# "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); for(ContentItem item: data.getContent()) { serializer.append(item); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java index 2aa04605f..583277c9f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java @@ -10,7 +10,7 @@ public class ItemListSerializer implements RmSerializer { @Override public void serialize(ItemList data, RmToTextSerializer serializer) { serializer.append("#### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); for(Item item: data.getItems()) { serializer.append(item); serializer.append("\n"); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java index 2ffe5be90..a74010fca 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java @@ -10,7 +10,7 @@ public class ItemTreeSerializer implements RmSerializer { @Override public void serialize(ItemTree data, RmToTextSerializer serializer) { serializer.append("#### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); for(Item item: data.getItems()) { serializer.append(item); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java similarity index 60% rename from archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableSerializer.java rename to archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java index 762a7517d..68a4cdd7f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java @@ -4,18 +4,13 @@ import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -public class LocatableSerializer implements RmSerializer { - @Override - public void serialize(Locatable data, RmToTextSerializer serializer) { +public class LocatableUtil { + + public static void serialize(Locatable data, RmToTextSerializer serializer) { serializer.append(data.getName()); serializer.append("\n"); if(data.getFeederAudit() != null) { serializer.append(data.getFeederAudit()); } } - - @Override - public Class getSerializedClass() { - return Locatable.class; - } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java index 311bafebd..184a9485f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java @@ -10,7 +10,7 @@ public class SectionSerializer implements RmSerializer
{ @Override public void serialize(Section data, RmToTextSerializer serializer) { serializer.append("## "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); for(ContentItem item: data.getItems()) { serializer.append(item); serializer.append("\n"); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java index ba924d586..f62e61922 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java @@ -3,14 +3,14 @@ import com.nedap.archie.rm.composition.Activity; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -import com.nedap.archie.text.serializers.LocatableSerializer; +import com.nedap.archie.text.serializers.LocatableUtil; import org.openehr.utils.message.I18n; public class ActivitySerializer implements RmSerializer { @Override public void serialize(Activity data, RmToTextSerializer serializer) { serializer.append("##### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); serializer.appendIfNotNull(I18n.t("Description"), data.getDescription()); serializer.appendIfNotNull(I18n.t("Archetype for action"), data.getActionArchetypeId()); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java index 62a539f4d..f7cb5b1cd 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java @@ -15,6 +15,8 @@ public void serialize(DvCount data, RmToTextSerializer serializer) { return; } serializer.append(Long.toString(data.getMagnitude())); + serializer.append("\n"); + DvQuantifiedUtil.serialize(data, serializer); //TODO: all the other fields, reference ranges, normal ranges, status, etc. } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java index 71cf80577..41e019540 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java @@ -15,6 +15,7 @@ public void serialize(DvDate data, RmToTextSerializer serializer) { return; } serializer.append(DateTimeSerializerFormatters.ISO_8601_DATE.format(data.getValue())); + DvQuantifiedUtil.serialize(data, serializer); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java index e3117ff64..fc099e99a 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java @@ -14,6 +14,7 @@ public void serialize(DvDateTime data, RmToTextSerializer serializer) { return; } serializer.append(DateTimeSerializerFormatters.ISO_8601_DATE_TIME.format(data.getValue())); + DvQuantifiedUtil.serialize(data, serializer); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java index 495196b37..48a3f002b 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java @@ -15,6 +15,8 @@ public void serialize(DvDuration data, RmToTextSerializer serializer) { return; } serializer.append(DateTimeSerializerFormatters.serializeDuration(data.getValue())); + serializer.append("\n"); + DvQuantifiedUtil.serialize(data, serializer); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIntervalSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIntervalSerializer.java new file mode 100644 index 000000000..165b93294 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIntervalSerializer.java @@ -0,0 +1,22 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.quantity.DvInterval; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; + +public class DvIntervalSerializer implements RmSerializer { + @Override + public void serialize(DvInterval data, RmToTextSerializer serializer) { + if(data.getInterval() != null) { + serializer.append(data.getLower()); + serializer.append(" - "); + serializer.append(data.getUpper()); + + } + } + + @Override + public Class getSerializedClass() { + return DvInterval.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java index aa7b71641..5d690e9ee 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java @@ -1,9 +1,12 @@ package com.nedap.archie.text.serializers.datatypes; import com.nedap.archie.rm.datavalues.quantity.DvProportion; +import com.nedap.archie.rm.datavalues.quantity.DvQuantity; import com.nedap.archie.rm.datavalues.quantity.ProportionKind; +import com.nedap.archie.rm.datavalues.quantity.ReferenceRange; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class DvProportionSerializer implements RmSerializer { @Override @@ -16,6 +19,8 @@ public void serialize(DvProportion data, RmToTextSerializer serializer) { } else { serializeFraction(data, serializer); } + + DvQuantifiedUtil.serialize(data, serializer); //TODO: other formats - maybe just a number sometimes? } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java new file mode 100644 index 000000000..17d9b4355 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java @@ -0,0 +1,23 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.quantity.DvOrdered; +import com.nedap.archie.rm.datavalues.quantity.DvQuantified; +import com.nedap.archie.rm.datavalues.quantity.DvQuantity; +import com.nedap.archie.rm.datavalues.quantity.ReferenceRange; +import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; + +public class DvQuantifiedUtil { + + public static void serialize(DvQuantified data, RmToTextSerializer serializer) { + serializer.appendIfNotNull(I18n.t("Magnitude status"), data.getMagnitudeStatus()); + serializer.appendIfNotNull(I18n.t("Normal range"), data.getNormalRange()); + serializer.appendIfNotNull(I18n.t("Normal status"), data.getNormalStatus()); + if(data.getOtherReferenceRanges() != null) { + for(ReferenceRange refRange:data.getOtherReferenceRanges()) { + serializer.appendIfNotNull(I18n.t("Other Reference ranges"), refRange); + } + } + } +} + diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java index a84653cd2..72347fdc9 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java @@ -3,8 +3,10 @@ import com.nedap.archie.rm.datavalues.DvCodedText; import com.nedap.archie.rm.datavalues.DvText; import com.nedap.archie.rm.datavalues.quantity.DvQuantity; +import com.nedap.archie.rm.datavalues.quantity.ReferenceRange; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; public class DvQuantitySerializer implements RmSerializer { @Override @@ -14,9 +16,11 @@ public void serialize(DvQuantity data, RmToTextSerializer serializer) { } else { serializer.append(Double.toString(data.getMagnitude())); } - serializer.append(" "); serializer.append(data.getUnits()); - //TODO: all the other fields, reference ranges, normal ranges, status, etc. + serializer.appendIfNotNull(I18n.t("Units system"), data.getUnitsSystem()); + //TODO: if this is present, replace units, since it will be more human readable? + serializer.appendIfNotNull(I18n.t("Units display name"), data.getUnitsDisplayName()); + DvQuantifiedUtil.serialize(data, serializer); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java index 6ce71c6bf..09a578468 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java @@ -16,6 +16,7 @@ public void serialize(DvTime data, RmToTextSerializer serializer) { return; } serializer.append(DateTimeSerializerFormatters.ISO_8601_TIME.format(data.getValue())); + DvQuantifiedUtil.serialize(data, serializer); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java new file mode 100644 index 000000000..e1fcc70d7 --- /dev/null +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java @@ -0,0 +1,23 @@ +package com.nedap.archie.text.serializers.datatypes; + +import com.nedap.archie.rm.datavalues.quantity.ReferenceRange; +import com.nedap.archie.text.RmSerializer; +import com.nedap.archie.text.RmToTextSerializer; +import org.openehr.utils.message.I18n; + +public class ReferenceRangeSerializer implements RmSerializer { + @Override + public void serialize(ReferenceRange data, RmToTextSerializer serializer) { + serializer.append(data.getRange()); + if(data.getMeaning() != null) { + serializer.append("\n"); + serializer.appendIfNotNull(I18n.t("Meaning"), data.getMeaning()); + } + + } + + @Override + public Class getSerializedClass() { + return ReferenceRange.class; + } +} diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java index 9e4dc5468..7cbf6418d 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java @@ -3,14 +3,14 @@ import com.nedap.archie.rm.composition.Action; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -import com.nedap.archie.text.serializers.LocatableSerializer; +import com.nedap.archie.text.serializers.LocatableUtil; import org.openehr.utils.message.I18n; public class ActionSerializer implements RmSerializer { @Override public void serialize(Action data, RmToTextSerializer serializer) { serializer.append("### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); serializer.appendIfNotNull(I18n.t("Description"), data.getDescription()); serializer.appendIfNotNull(I18n.t("Protocol"), data.getProtocol()); serializer.appendIfNotNull(I18n.t("Instruction details"), data.getInstructionDetails()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java index f7d9666a4..09097c60e 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java @@ -3,13 +3,13 @@ import com.nedap.archie.rm.composition.AdminEntry; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -import com.nedap.archie.text.serializers.LocatableSerializer; +import com.nedap.archie.text.serializers.LocatableUtil; public class AdminEntrySerializer implements RmSerializer { @Override public void serialize(AdminEntry data, RmToTextSerializer serializer) { serializer.append("### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); serializer.append(data.getData()); serializer.append("\n"); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java index 4e65d18f0..bc047d637 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java @@ -3,13 +3,13 @@ import com.nedap.archie.rm.composition.Evaluation; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -import com.nedap.archie.text.serializers.LocatableSerializer; +import com.nedap.archie.text.serializers.LocatableUtil; public class EvaluationSerializer implements RmSerializer { @Override public void serialize(Evaluation data, RmToTextSerializer serializer) { serializer.append("### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); serializer.append(data.getData()); serializer.append("\n"); serializer.append(data.getProtocol()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java index e0d542278..7ba8fe42f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java @@ -3,13 +3,13 @@ import com.nedap.archie.rm.integration.GenericEntry; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -import com.nedap.archie.text.serializers.LocatableSerializer; +import com.nedap.archie.text.serializers.LocatableUtil; public class GenericEntrySerializer implements RmSerializer { @Override public void serialize(GenericEntry data, RmToTextSerializer serializer) { serializer.append("### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); serializer.append(data.getData()); serializer.append("\n"); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java index bf4a9f6d6..ece7a1fd6 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java @@ -4,14 +4,14 @@ import com.nedap.archie.rm.composition.Instruction; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -import com.nedap.archie.text.serializers.LocatableSerializer; +import com.nedap.archie.text.serializers.LocatableUtil; import org.openehr.utils.message.I18n; public class InstructionSerializer implements RmSerializer { @Override public void serialize(Instruction data, RmToTextSerializer serializer) { serializer.append("### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); if(data.getActivities() != null) { for(Activity activity:data.getActivities()) { serializer.append(activity); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java index 20f71129a..e33193b8f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java @@ -6,7 +6,7 @@ import com.nedap.archie.rm.datastructures.ItemStructure; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToTextSerializer; -import com.nedap.archie.text.serializers.LocatableSerializer; +import com.nedap.archie.text.serializers.LocatableUtil; import org.openehr.utils.message.I18n; public class ObservationSerializer implements RmSerializer { @@ -14,7 +14,7 @@ public class ObservationSerializer implements RmSerializer { public void serialize(Observation data, RmToTextSerializer serializer) { serializer.append("### "); - new LocatableSerializer().serialize(data, serializer); + LocatableUtil.serialize(data, serializer); writeHistory(data.getData(), serializer); serializer.append("\n"); From b6287bbc9514a1d99bce4ff0530e7db3df09528d Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Mon, 22 May 2023 14:34:09 +0200 Subject: [PATCH 09/20] Add test with Composition --- .../text/serializers/ItemListSerializer.java | 5 +- .../text/serializers/ItemTreeSerializer.java | 5 +- .../archie/text/RmToTextSerializerTest.java | 54 ++++++++++++++----- 3 files changed, 46 insertions(+), 18 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java index 583277c9f..50511a7dc 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java @@ -9,8 +9,9 @@ public class ItemListSerializer implements RmSerializer { @Override public void serialize(ItemList data, RmToTextSerializer serializer) { - serializer.append("#### "); - LocatableUtil.serialize(data, serializer); + //name is rarely used, neither is feeder audit - do not show, is confusing + //serializer.append("#### "); + //LocatableUtil.serialize(data, serializer); for(Item item: data.getItems()) { serializer.append(item); serializer.append("\n"); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java index a74010fca..01a595dd3 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java @@ -9,8 +9,9 @@ public class ItemTreeSerializer implements RmSerializer { @Override public void serialize(ItemTree data, RmToTextSerializer serializer) { - serializer.append("#### "); - LocatableUtil.serialize(data, serializer); + //name is rarely used, neither is feeder audit - do not show, is confusing + //serializer.append("#### "); + //LocatableUtil.serialize(data, serializer); for(Item item: data.getItems()) { serializer.append(item); diff --git a/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java index 335ccf47c..29c79a750 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java @@ -9,10 +9,13 @@ import com.nedap.archie.aom.OperationalTemplate; import com.nedap.archie.creation.ExampleJsonInstanceGenerator; import com.nedap.archie.flattener.Flattener; +import com.nedap.archie.flattener.FlattenerTest; import com.nedap.archie.flattener.InMemoryFullArchetypeRepository; import com.nedap.archie.json.ArchieJacksonConfiguration; import com.nedap.archie.json.JacksonUtil; +import com.nedap.archie.rm.composition.Composition; import com.nedap.archie.rm.composition.Observation; +import com.nedap.archie.testutil.TestUtil; import org.junit.Test; import org.openehr.referencemodels.BuiltinReferenceModels; @@ -41,8 +44,43 @@ public void bloodPressure() throws Exception { } + @Test + public void bloodPressureComposition() throws Exception { + Archetype report = TestUtil.parseFailOnErrors("/com/nedap/archie/flattener/openEHR-EHR-COMPOSITION.report.v1.adls"); + Archetype reportResult = TestUtil.parseFailOnErrors("/com/nedap/archie/flattener/openEHR-EHR-COMPOSITION.report-result.v1.adls"); + Archetype device = TestUtil.parseFailOnErrors("/com/nedap/archie/flattener/openEHR-EHR-CLUSTER.device.v1.adls"); + + Archetype bloodPressureObservation = TestUtil.parseFailOnErrors("/com/nedap/archie/flattener/openEHR-EHR-OBSERVATION.blood_pressure.v1.adls"); + Archetype bloodPressureComposition = TestUtil.parseFailOnErrors("/com/nedap/archie/flattener/openEHR-EHR-COMPOSITION.blood_pressure.v1.0.0.adlt"); + + InMemoryFullArchetypeRepository repository = new InMemoryFullArchetypeRepository(); + repository.addArchetype(report); + repository.addArchetype(reportResult); + repository.addArchetype(device); + repository.addArchetype(bloodPressureObservation); + repository.addArchetype(bloodPressureComposition); + + OperationalTemplate bloodPressureCompositionOPT = (OperationalTemplate) new Flattener( + repository, + BuiltinReferenceModels.getMetaModels()) + .createOperationalTemplate(true) + .flatten(bloodPressureComposition); + + ExampleJsonInstanceGenerator structureGenerator = createExampleJsonInstanceGenerator(); + + Map structure = structureGenerator.generate(bloodPressureCompositionOPT); + String s = serializeToJson(structure, true); + + Composition composition = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Composition.class); + + RmToTextSerializer rmToTextSerializer = new RmToTextSerializer(); + rmToTextSerializer.append(composition); + System.out.println(rmToTextSerializer); + + } + private ExampleJsonInstanceGenerator createExampleJsonInstanceGenerator() { - ExampleJsonInstanceGenerator structureGenerator = new ExampleJsonInstanceGenerator(BuiltinReferenceModels.getMetaModels(), "nl"); + ExampleJsonInstanceGenerator structureGenerator = new ExampleJsonInstanceGenerator(BuiltinReferenceModels.getMetaModels(), "en"); structureGenerator.setTypePropertyName(TYPE_PROPERTY_NAME); return structureGenerator; } @@ -58,21 +96,9 @@ private String serializeToJson(Map structure, boolean indent) th } private OperationalTemplate createOPT(String s2) throws IOException, ADLParseException { - Archetype archetype = parse(s2); + Archetype archetype = TestUtil.parseFailOnErrors(s2); InMemoryFullArchetypeRepository repository = new InMemoryFullArchetypeRepository(); repository.addArchetype(archetype); return (OperationalTemplate) new Flattener(repository, BuiltinReferenceModels.getMetaModels()).createOperationalTemplate(true).flatten(archetype); } - - private Archetype parse(String filename) throws IOException, ADLParseException { - ADLParser parser = new ADLParser(); - Archetype archetype; - try(InputStream stream = getClass().getResourceAsStream(filename)) { - archetype = parser.parse(stream); - if(parser.getErrors().hasErrors()) { - throw new RuntimeException(parser.getErrors().toString()); - } - } - return archetype; - } } From d5c81a56a3276c4d9e0f4f9962aa32f36fffb643 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Mon, 22 May 2023 14:49:46 +0200 Subject: [PATCH 10/20] Add extra tests plus layout tweaks, refactor adding newlines --- .../archie/text/ReflectionRmSerializer.java | 2 +- .../nedap/archie/text/RmToTextSerializer.java | 22 ++++++++++++++++++- .../text/serializers/ClusterSerializer.java | 2 +- .../serializers/CompositionSerializer.java | 7 +++--- .../serializers/EventContextSerializer.java | 2 +- .../text/serializers/ItemListSerializer.java | 2 +- .../text/serializers/ItemTreeSerializer.java | 2 +- .../text/serializers/LocatableUtil.java | 2 +- .../text/serializers/SectionSerializer.java | 2 +- .../audit/FeederAuditDetailsSerializer.java | 4 ++-- .../datatypes/DvCountSerializer.java | 2 +- .../datatypes/DvDurationSerializer.java | 2 +- .../datatypes/DvIdentifierSerializer.java | 8 +++---- .../datatypes/ReferenceRangeSerializer.java | 2 +- .../PartyIdentifiedSerializer.java | 2 +- .../entries/AdminEntrySerializer.java | 2 +- .../entries/EvaluationSerializer.java | 2 +- .../entries/GenericEntrySerializer.java | 2 +- .../entries/InstructionSerializer.java | 2 +- .../entries/ObservationSerializer.java | 7 +++--- .../ExampleJsonInstanceGenerator.java | 14 +++++++++++- .../archie/text/RmToTextSerializerTest.java | 1 + 22 files changed, 63 insertions(+), 30 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java index f1553f12a..73499f313 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java @@ -46,7 +46,7 @@ public void serialize(RMObject object, RmToTextSerializer serializer) { } catch (InvocationTargetException e) { //... } - serializer.append("\n"); + serializer.appendNewLine(); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java index b411a080c..6f424c2c6 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java @@ -109,7 +109,23 @@ public void appendIfNotNull(String name, RMObject data) { append(name); append(": "); append(data); + appendNewLine(); + } + } + + /** + * Append a header with the data, if data is not null + * @param headerString the markdown header string, for example '## ' or '#### ' + * @param name + * @param data + */ + public void appendWithHeaderIfNotNull(String headerString, String name, RMObject data) { + if(data != null) { + append(headerString); + append(name); append("\n"); + append(data); + appendNewLine(); } } @@ -118,10 +134,14 @@ public void appendIfNotNull(String name, String data) { append(name); append(": "); append(data); - append("\n"); + appendNewLine(); } } + public void appendNewLine() { + append(" \n"); + } + public String toString() { return stringBuilder.toString(); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java index 208aa9c0b..34cafdda3 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java @@ -13,7 +13,7 @@ public void serialize(Cluster data, RmToTextSerializer serializer) { LocatableUtil.serialize(data, serializer); for(Item item: data.getItems()) { serializer.append(item); - serializer.append("\n"); + serializer.appendNewLine(); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java index 4090bf6ec..0b98937a8 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java @@ -12,13 +12,14 @@ public class CompositionSerializer implements RmSerializer { public void serialize(Composition data, RmToTextSerializer serializer) { serializer.append("# "); LocatableUtil.serialize(data, serializer); + serializer.appendIfNotNull(I18n.t("Composer"), data.getComposer()); for(ContentItem item: data.getContent()) { serializer.append(item); - serializer.append("\n"); + serializer.appendNewLine(); } - serializer.appendIfNotNull(I18n.t("Composer"), data.getComposer()); - serializer.appendIfNotNull(I18n.t("## Context"), data.getContext()); + + serializer.appendWithHeaderIfNotNull("## ", I18n.t("Context"), data.getContext()); //not written for now: language, territory } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java index 8d5af81f5..01cd295ec 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java @@ -18,7 +18,7 @@ public void serialize(EventContext data, RmToTextSerializer serializer) { serializer.append("##### participations"); for(Participation participation:data.getParticipations()) { serializer.append(participation); - serializer.append("\n"); + serializer.appendNewLine(); } } if(data.getOtherContext() != null) { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java index 50511a7dc..8d9501916 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java @@ -14,7 +14,7 @@ public void serialize(ItemList data, RmToTextSerializer serializer) { //LocatableUtil.serialize(data, serializer); for(Item item: data.getItems()) { serializer.append(item); - serializer.append("\n"); + serializer.appendNewLine(); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java index 01a595dd3..a4a3eca4d 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java @@ -15,7 +15,7 @@ public void serialize(ItemTree data, RmToTextSerializer serializer) { for(Item item: data.getItems()) { serializer.append(item); - serializer.append("\n"); + serializer.appendNewLine(); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java index 68a4cdd7f..814b3c83a 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java @@ -8,7 +8,7 @@ public class LocatableUtil { public static void serialize(Locatable data, RmToTextSerializer serializer) { serializer.append(data.getName()); - serializer.append("\n"); + serializer.appendNewLine(); if(data.getFeederAudit() != null) { serializer.append(data.getFeederAudit()); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java index 184a9485f..62f9ace34 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java @@ -13,7 +13,7 @@ public void serialize(Section data, RmToTextSerializer serializer) { LocatableUtil.serialize(data, serializer); for(ContentItem item: data.getItems()) { serializer.append(item); - serializer.append("\n"); + serializer.appendNewLine(); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java index 87e0bb440..7d4dd3c12 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java @@ -13,12 +13,12 @@ public void serialize(FeederAuditDetails data, RmToTextSerializer serializer) { if(data.getTime() != null) { serializer.append(data.getTime()); - serializer.append("\n"); + serializer.appendNewLine(); } serializer.appendIfNotNull(I18n.t("Audit provider"), data.getProvider()); if(data.getOtherDetails() != null) { serializer.append(data.getOtherDetails()); - serializer.append("\n"); + serializer.appendNewLine(); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java index f7cb5b1cd..f1b2db084 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java @@ -15,7 +15,7 @@ public void serialize(DvCount data, RmToTextSerializer serializer) { return; } serializer.append(Long.toString(data.getMagnitude())); - serializer.append("\n"); + serializer.appendNewLine(); DvQuantifiedUtil.serialize(data, serializer); //TODO: all the other fields, reference ranges, normal ranges, status, etc. } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java index 48a3f002b..c6a98bae2 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java @@ -15,7 +15,7 @@ public void serialize(DvDuration data, RmToTextSerializer serializer) { return; } serializer.append(DateTimeSerializerFormatters.serializeDuration(data.getValue())); - serializer.append("\n"); + serializer.appendNewLine(); DvQuantifiedUtil.serialize(data, serializer); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java index ab42a61d0..9591925d3 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java @@ -11,22 +11,22 @@ public void serialize(DvIdentifier data, RmToTextSerializer serializer) { if(data.getType() != null) { serializer.append("Type: "); serializer.append(data.getType()); - serializer.append("\n"); + serializer.appendNewLine(); } if(data.getId() != null) { serializer.append("Id: "); serializer.append(data.getId()); - serializer.append("\n"); + serializer.appendNewLine(); } if(data.getIssuer() != null) { serializer.append("Uitgever: "); serializer.append(data.getIssuer()); - serializer.append("\n"); + serializer.appendNewLine(); } if(data.getAssigner() != null) { serializer.append("Toekenner: "); serializer.append(data.getAssigner()); - serializer.append("\n"); + serializer.appendNewLine(); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java index e1fcc70d7..56ad8f589 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java @@ -10,7 +10,7 @@ public class ReferenceRangeSerializer implements RmSerializer { public void serialize(ReferenceRange data, RmToTextSerializer serializer) { serializer.append(data.getRange()); if(data.getMeaning() != null) { - serializer.append("\n"); + serializer.appendNewLine(); serializer.appendIfNotNull(I18n.t("Meaning"), data.getMeaning()); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java index e44c28225..12e9492de 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java @@ -13,7 +13,7 @@ public void serialize(PartyIdentified data, RmToTextSerializer serializer) { if(data.getIdentifiers() != null) { for (DvIdentifier identifier : data.getIdentifiers()) { serializer.append(identifier); - serializer.append("\n"); + serializer.appendNewLine(); } } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java index 09097c60e..db15b5b0c 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java @@ -11,7 +11,7 @@ public void serialize(AdminEntry data, RmToTextSerializer serializer) { serializer.append("### "); LocatableUtil.serialize(data, serializer); serializer.append(data.getData()); - serializer.append("\n"); + serializer.appendNewLine(); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java index bc047d637..b99b4f05c 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java @@ -11,7 +11,7 @@ public void serialize(Evaluation data, RmToTextSerializer serializer) { serializer.append("### "); LocatableUtil.serialize(data, serializer); serializer.append(data.getData()); - serializer.append("\n"); + serializer.appendNewLine(); serializer.append(data.getProtocol()); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java index 7ba8fe42f..82e712254 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java @@ -11,7 +11,7 @@ public void serialize(GenericEntry data, RmToTextSerializer serializer) { serializer.append("### "); LocatableUtil.serialize(data, serializer); serializer.append(data.getData()); - serializer.append("\n"); + serializer.appendNewLine(); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java index ece7a1fd6..780f686bd 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java @@ -15,7 +15,7 @@ public void serialize(Instruction data, RmToTextSerializer serializer) { if(data.getActivities() != null) { for(Activity activity:data.getActivities()) { serializer.append(activity); - serializer.append("\n"); + serializer.appendNewLine(); } } serializer.appendIfNotNull(I18n.t("Protocol"), data.getProtocol()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java index e33193b8f..3b5943c85 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java @@ -17,7 +17,7 @@ public void serialize(Observation data, RmToTextSerializer serializer) { LocatableUtil.serialize(data, serializer); writeHistory(data.getData(), serializer); - serializer.append("\n"); + serializer.appendNewLine(); writeHistory(data.getState(), serializer); serializer.append(data.getProtocol()); } @@ -27,9 +27,8 @@ private void writeHistory(History data, RmToTextSerializer serial if(data.getEvents() != null) { for(Event event: data.getEvents()) { //TODO: event name: probably not interesting, although sometimes it could be! - serializer.append(I18n.t("Time of observation")); - serializer.append(event.getTime()); - serializer.append("\n"); + serializer.appendIfNotNull(I18n.t("Time of observation"), event.getTime()); + serializer.append("\n\n"); serializer.append(event.getData()); serializer.append(event.getState()); } diff --git a/tools/src/main/java/com/nedap/archie/creation/ExampleJsonInstanceGenerator.java b/tools/src/main/java/com/nedap/archie/creation/ExampleJsonInstanceGenerator.java index fc3a852ff..cd0cda3db 100644 --- a/tools/src/main/java/com/nedap/archie/creation/ExampleJsonInstanceGenerator.java +++ b/tools/src/main/java/com/nedap/archie/creation/ExampleJsonInstanceGenerator.java @@ -61,6 +61,7 @@ public class ExampleJsonInstanceGenerator { private String typePropertyName = "_type"; OpenEhrRmInstanceGenerator openEhrRmInstanceGenerator; + private boolean addTwoInstancesWherePossible = true; public ExampleJsonInstanceGenerator(MetaModels models, String language) { this.language = language; @@ -106,6 +107,17 @@ public void setTypePropertyName(String typePropertyName) { this.openEhrRmInstanceGenerator.setTypePropertyName(typePropertyName); } + public boolean isAddTwoInstancesWherePossible() { + return addTwoInstancesWherePossible; + } + + /** + * Set whether the example data should contain two instances where this is possible, or just one + * @param addTwoInstancesWherePossible true if the result should contain two instances, false if one + */ + public void setAddTwoInstancesWherePossible(boolean addTwoInstancesWherePossible) { + this.addTwoInstancesWherePossible = addTwoInstancesWherePossible; + } public boolean isAddUniqueNamesForSiblingNodes() { return addUniqueNamesForSiblingNodes; @@ -146,7 +158,7 @@ private Map generate(CComplexObject cObject) { int occurrences = Math.max(1, multiplicityInterval.getLower()); if(multiplicityInterval.isProhibited()) { occurrences = 0; - } else if(multiplicityInterval.has(2) && occurrences <= 1) { + } else if(addTwoInstancesWherePossible && multiplicityInterval.has(2) && occurrences <= 1) { if(attribute.getCardinality() == null || attribute.getCardinality().getInterval().isUpperUnbounded()) { occurrences = 2 ; //indicate that multiple of these can be added by adding 2 of them if the cardinality is x..* } diff --git a/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java index 29c79a750..7dd26dd83 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java @@ -81,6 +81,7 @@ public void bloodPressureComposition() throws Exception { private ExampleJsonInstanceGenerator createExampleJsonInstanceGenerator() { ExampleJsonInstanceGenerator structureGenerator = new ExampleJsonInstanceGenerator(BuiltinReferenceModels.getMetaModels(), "en"); + structureGenerator.setAddTwoInstancesWherePossible(false); structureGenerator.setTypePropertyName(TYPE_PROPERTY_NAME); return structureGenerator; } From 67184a80a63d174a0216b81fe9bc8a69060e9b3e Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Tue, 30 May 2023 14:46:43 +0200 Subject: [PATCH 11/20] Refactor name of RmToMarkdownSerializer, add proper date/time formats --- .../archie/text/ReflectionRmSerializer.java | 2 +- .../com/nedap/archie/text/RmSerializer.java | 2 +- ...ializer.java => RmToMarkdownSerializer.java} | 5 +++-- .../text/serializers/ClusterSerializer.java | 4 ++-- .../text/serializers/CompositionSerializer.java | 4 ++-- .../text/serializers/ElementSerializer.java | 4 ++-- .../serializers/EventContextSerializer.java | 4 ++-- .../text/serializers/ItemListSerializer.java | 4 ++-- .../text/serializers/ItemTreeSerializer.java | 4 ++-- .../archie/text/serializers/LocatableUtil.java | 5 ++--- .../serializers/ParticipationSerializer.java | 5 ++--- .../text/serializers/SectionSerializer.java | 4 ++-- .../serializers/action/ActivitySerializer.java | 4 ++-- .../action/InstructionDetailsSerializer.java | 4 ++-- .../action/IsmTransitionSerializer.java | 4 ++-- .../audit/FeederAuditDetailsSerializer.java | 4 ++-- .../audit/FeederAuditSerializer.java | 4 ++-- .../datatypes/DvBooleanSerializer.java | 6 ++---- .../datatypes/DvCodedTextSerializer.java | 5 ++--- .../datatypes/DvCountSerializer.java | 7 ++----- .../serializers/datatypes/DvDateSerializer.java | 12 +++++++----- .../datatypes/DvDateTimeSerializer.java | 12 ++++++++---- .../datatypes/DvDurationSerializer.java | 9 +++++---- .../datatypes/DvIdentifierSerializer.java | 4 ++-- .../datatypes/DvIntervalSerializer.java | 4 ++-- .../datatypes/DvOrdinalSerializer.java | 4 ++-- .../datatypes/DvProportionSerializer.java | 9 +++------ .../serializers/datatypes/DvQuantifiedUtil.java | 6 ++---- .../datatypes/DvQuantitySerializer.java | 7 ++----- .../serializers/datatypes/DvTextSerializer.java | 4 ++-- .../serializers/datatypes/DvTimeSerializer.java | 13 +++++++------ .../datatypes/ReferenceRangeSerializer.java | 4 ++-- .../demographic/PartyIdentifiedSerializer.java | 4 ++-- .../demographic/PartyRelatedSerializer.java | 4 ++-- .../demographic/PartySelfSerializer.java | 4 ++-- .../serializers/entries/ActionSerializer.java | 4 ++-- .../entries/AdminEntrySerializer.java | 4 ++-- .../entries/EvaluationSerializer.java | 4 ++-- .../entries/GenericEntrySerializer.java | 4 ++-- .../entries/InstructionSerializer.java | 4 ++-- .../entries/ObservationSerializer.java | 6 +++--- ...est.java => RmToMarkdownSerializerTest.java} | 17 +++++++---------- 42 files changed, 109 insertions(+), 119 deletions(-) rename archie-utils/src/main/java/com/nedap/archie/text/{RmToTextSerializer.java => RmToMarkdownSerializer.java} (97%) rename tools/src/test/java/com/nedap/archie/text/{RmToTextSerializerTest.java => RmToMarkdownSerializerTest.java} (90%) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java index 73499f313..de44d37e8 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/ReflectionRmSerializer.java @@ -14,7 +14,7 @@ public class ReflectionRmSerializer { public ReflectionRmSerializer() { this.modelLookup = ArchieRMInfoLookup.getInstance(); } - public void serialize(RMObject object, RmToTextSerializer serializer) { + public void serialize(RMObject object, RmToMarkdownSerializer serializer) { if(object == null) { return; } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmSerializer.java index 0a2095056..985040a5f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/RmSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmSerializer.java @@ -4,7 +4,7 @@ public interface RmSerializer { - void serialize(T data, RmToTextSerializer serializer); + void serialize(T data, RmToMarkdownSerializer serializer); Class getSerializedClass(); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmToMarkdownSerializer.java similarity index 97% rename from archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java rename to archie-utils/src/main/java/com/nedap/archie/text/RmToMarkdownSerializer.java index 6f424c2c6..0fa1fe4f0 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/RmToTextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmToMarkdownSerializer.java @@ -1,5 +1,6 @@ package com.nedap.archie.text; +import com.nedap.archie.base.OpenEHRBase; import com.nedap.archie.rm.RMObject; import com.nedap.archie.text.serializers.*; import com.nedap.archie.text.serializers.action.ActivitySerializer; @@ -19,14 +20,14 @@ /** * Converts instances of the openEHR RM to human readable text */ -public class RmToTextSerializer { +public class RmToMarkdownSerializer { Map serializers; ReflectionRmSerializer fallbackSerializer; StringBuilder stringBuilder; - public RmToTextSerializer() { + public RmToMarkdownSerializer() { serializers = new HashMap<>(); //composition and data structures diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java index 34cafdda3..9bed83068 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ClusterSerializer.java @@ -3,12 +3,12 @@ import com.nedap.archie.rm.datastructures.Cluster; import com.nedap.archie.rm.datastructures.Item; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class ClusterSerializer implements RmSerializer { @Override - public void serialize(Cluster data, RmToTextSerializer serializer) { + public void serialize(Cluster data, RmToMarkdownSerializer serializer) { serializer.append("#### "); LocatableUtil.serialize(data, serializer); for(Item item: data.getItems()) { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java index 0b98937a8..dafb66740 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java @@ -3,13 +3,13 @@ import com.nedap.archie.rm.composition.Composition; import com.nedap.archie.rm.composition.ContentItem; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class CompositionSerializer implements RmSerializer { @Override - public void serialize(Composition data, RmToTextSerializer serializer) { + public void serialize(Composition data, RmToMarkdownSerializer serializer) { serializer.append("# "); LocatableUtil.serialize(data, serializer); serializer.appendIfNotNull(I18n.t("Composer"), data.getComposer()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java index 006a2aa77..0646184fb 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java @@ -2,13 +2,13 @@ import com.nedap.archie.rm.datastructures.Element; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class ElementSerializer implements RmSerializer { @Override - public void serialize(Element data, RmToTextSerializer serializer) { + public void serialize(Element data, RmToMarkdownSerializer serializer) { serializer.append(data.getName()); serializer.append(": "); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java index 01cd295ec..abecce9f5 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java @@ -3,11 +3,11 @@ import com.nedap.archie.rm.composition.EventContext; import com.nedap.archie.rm.generic.Participation; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class EventContextSerializer implements RmSerializer { @Override - public void serialize(EventContext data, RmToTextSerializer serializer) { + public void serialize(EventContext data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull("Location", data.getLocation()); serializer.appendIfNotNull("Start time", data.getStartTime()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java index 8d9501916..2e9d11550 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemListSerializer.java @@ -3,12 +3,12 @@ import com.nedap.archie.rm.datastructures.Item; import com.nedap.archie.rm.datastructures.ItemList; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class ItemListSerializer implements RmSerializer { @Override - public void serialize(ItemList data, RmToTextSerializer serializer) { + public void serialize(ItemList data, RmToMarkdownSerializer serializer) { //name is rarely used, neither is feeder audit - do not show, is confusing //serializer.append("#### "); //LocatableUtil.serialize(data, serializer); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java index a4a3eca4d..25dbb90c4 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ItemTreeSerializer.java @@ -3,12 +3,12 @@ import com.nedap.archie.rm.datastructures.Item; import com.nedap.archie.rm.datastructures.ItemTree; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class ItemTreeSerializer implements RmSerializer { @Override - public void serialize(ItemTree data, RmToTextSerializer serializer) { + public void serialize(ItemTree data, RmToMarkdownSerializer serializer) { //name is rarely used, neither is feeder audit - do not show, is confusing //serializer.append("#### "); //LocatableUtil.serialize(data, serializer); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java index 814b3c83a..431b13ddd 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/LocatableUtil.java @@ -1,12 +1,11 @@ package com.nedap.archie.text.serializers; import com.nedap.archie.rm.archetyped.Locatable; -import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class LocatableUtil { - public static void serialize(Locatable data, RmToTextSerializer serializer) { + public static void serialize(Locatable data, RmToMarkdownSerializer serializer) { serializer.append(data.getName()); serializer.appendNewLine(); if(data.getFeederAudit() != null) { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java index 9c0afa8d7..ac73e7fcf 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java @@ -2,13 +2,12 @@ import com.nedap.archie.rm.generic.Participation; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; -import org.reflections.serializers.Serializer; public class ParticipationSerializer implements RmSerializer { @Override - public void serialize(Participation data, RmToTextSerializer serializer) { + public void serialize(Participation data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull(I18n.t("Function of participant"), data.getFunction()); serializer.appendIfNotNull(I18n.t("Mode of participant"), data.getMode()); serializer.appendIfNotNull(I18n.t("Time"), data.getTime()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java index 62f9ace34..94e0158d4 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/SectionSerializer.java @@ -3,12 +3,12 @@ import com.nedap.archie.rm.composition.ContentItem; import com.nedap.archie.rm.composition.Section; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class SectionSerializer implements RmSerializer
{ @Override - public void serialize(Section data, RmToTextSerializer serializer) { + public void serialize(Section data, RmToMarkdownSerializer serializer) { serializer.append("## "); LocatableUtil.serialize(data, serializer); for(ContentItem item: data.getItems()) { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java index f62e61922..3b5771540 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java @@ -2,13 +2,13 @@ import com.nedap.archie.rm.composition.Activity; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import com.nedap.archie.text.serializers.LocatableUtil; import org.openehr.utils.message.I18n; public class ActivitySerializer implements RmSerializer { @Override - public void serialize(Activity data, RmToTextSerializer serializer) { + public void serialize(Activity data, RmToMarkdownSerializer serializer) { serializer.append("##### "); LocatableUtil.serialize(data, serializer); serializer.appendIfNotNull(I18n.t("Description"), data.getDescription()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java index 44e58162f..63ea0dd18 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/InstructionDetailsSerializer.java @@ -2,11 +2,11 @@ import com.nedap.archie.rm.composition.InstructionDetails; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class InstructionDetailsSerializer implements RmSerializer { @Override - public void serialize(InstructionDetails data, RmToTextSerializer serializer) { + public void serialize(InstructionDetails data, RmToMarkdownSerializer serializer) { serializer.append(data.getWfDetails()); //TODO: reference to instruction? } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java index 1661d65c4..774023346 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java @@ -3,12 +3,12 @@ import com.nedap.archie.rm.composition.IsmTransition; import com.nedap.archie.rm.datavalues.DvText; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class IsmTransitionSerializer implements RmSerializer { @Override - public void serialize(IsmTransition data, RmToTextSerializer serializer) { + public void serialize(IsmTransition data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull(I18n.t("State transition"), data.getTransition()); serializer.appendIfNotNull(I18n.t("Care flow step"), data.getCareflowStep()); serializer.appendIfNotNull(I18n.t("Current state"), data.getCurrentState()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java index 7d4dd3c12..4d0808b23 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java @@ -2,12 +2,12 @@ import com.nedap.archie.rm.archetyped.FeederAuditDetails; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class FeederAuditDetailsSerializer implements RmSerializer { @Override - public void serialize(FeederAuditDetails data, RmToTextSerializer serializer) { + public void serialize(FeederAuditDetails data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull(I18n.t("Originating system"), data.getSystemId()); serializer.appendIfNotNull(I18n.t("Location"), data.getLocation()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java index 6dfbe9ed1..e7a16cdf7 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java @@ -2,12 +2,12 @@ import com.nedap.archie.rm.archetyped.FeederAudit; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class FeederAuditSerializer implements RmSerializer { @Override - public void serialize(FeederAudit data, RmToTextSerializer serializer) { + public void serialize(FeederAudit data, RmToMarkdownSerializer serializer) { serializer.append("##### "); serializer.appendIfNotNull( I18n.t("Originating system audit"), diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java index 2ed287104..4f2bd9a72 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java @@ -1,14 +1,12 @@ package com.nedap.archie.text.serializers.datatypes; import com.nedap.archie.rm.datavalues.DvBoolean; -import com.nedap.archie.rm.datavalues.DvCodedText; -import com.nedap.archie.rm.datavalues.DvText; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class DvBooleanSerializer implements RmSerializer { @Override - public void serialize(DvBoolean data, RmToTextSerializer serializer) { + public void serialize(DvBoolean data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { serializer.append("data niet gevuld"); return; diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCodedTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCodedTextSerializer.java index b4d4db0f2..dd08463bd 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCodedTextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCodedTextSerializer.java @@ -1,13 +1,12 @@ package com.nedap.archie.text.serializers.datatypes; import com.nedap.archie.rm.datavalues.DvCodedText; -import com.nedap.archie.rm.datavalues.DvText; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class DvCodedTextSerializer implements RmSerializer { @Override - public void serialize(DvCodedText data, RmToTextSerializer serializer) { + public void serialize(DvCodedText data, RmToMarkdownSerializer serializer) { serializer.append(data.getValue()); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java index f1b2db084..290ee63eb 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java @@ -1,15 +1,12 @@ package com.nedap.archie.text.serializers.datatypes; -import com.nedap.archie.rm.datavalues.DvCodedText; -import com.nedap.archie.rm.datavalues.DvText; import com.nedap.archie.rm.datavalues.quantity.DvCount; -import com.nedap.archie.rm.datavalues.quantity.DvQuantity; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class DvCountSerializer implements RmSerializer { @Override - public void serialize(DvCount data, RmToTextSerializer serializer) { + public void serialize(DvCount data, RmToMarkdownSerializer serializer) { if(data.getMagnitude() == null) { serializer.append("data niet gevuld"); return; diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java index 41e019540..3215b3bb4 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java @@ -1,20 +1,22 @@ package com.nedap.archie.text.serializers.datatypes; -import com.nedap.archie.datetime.DateTimeFormatters; import com.nedap.archie.datetime.DateTimeSerializerFormatters; -import com.nedap.archie.rm.datavalues.DvText; import com.nedap.archie.rm.datavalues.quantity.datetime.DvDate; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; + +import java.text.DateFormat; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; public class DvDateSerializer implements RmSerializer { @Override - public void serialize(DvDate data, RmToTextSerializer serializer) { + public void serialize(DvDate data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { serializer.append("data niet gevuld"); return; } - serializer.append(DateTimeSerializerFormatters.ISO_8601_DATE.format(data.getValue())); + serializer.append(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).format(data.getValue())); DvQuantifiedUtil.serialize(data, serializer); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java index fc099e99a..8f8e542db 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java @@ -1,19 +1,23 @@ package com.nedap.archie.text.serializers.datatypes; -import com.nedap.archie.datetime.DateTimeFormatters; import com.nedap.archie.datetime.DateTimeSerializerFormatters; import com.nedap.archie.rm.datavalues.quantity.datetime.DvDateTime; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; + +import java.text.DateFormat; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; public class DvDateTimeSerializer implements RmSerializer { @Override - public void serialize(DvDateTime data, RmToTextSerializer serializer) { + public void serialize(DvDateTime data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { serializer.append("data niet gevuld"); return; } - serializer.append(DateTimeSerializerFormatters.ISO_8601_DATE_TIME.format(data.getValue())); + + serializer.append(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).format(data.getValue())); DvQuantifiedUtil.serialize(data, serializer); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java index c6a98bae2..dc252a017 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java @@ -1,15 +1,16 @@ package com.nedap.archie.text.serializers.datatypes; -import com.nedap.archie.datetime.DateTimeFormatters; import com.nedap.archie.datetime.DateTimeSerializerFormatters; import com.nedap.archie.rm.datavalues.quantity.datetime.DvDuration; -import com.nedap.archie.rm.datavalues.quantity.datetime.DvDate; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; + +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; public class DvDurationSerializer implements RmSerializer { @Override - public void serialize(DvDuration data, RmToTextSerializer serializer) { + public void serialize(DvDuration data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { serializer.append("data niet gevuld"); return; diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java index 9591925d3..f75e459e9 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java @@ -2,12 +2,12 @@ import com.nedap.archie.rm.datavalues.DvIdentifier; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class DvIdentifierSerializer implements RmSerializer { @Override - public void serialize(DvIdentifier data, RmToTextSerializer serializer) { + public void serialize(DvIdentifier data, RmToMarkdownSerializer serializer) { if(data.getType() != null) { serializer.append("Type: "); serializer.append(data.getType()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIntervalSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIntervalSerializer.java index 165b93294..e291ffaa2 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIntervalSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIntervalSerializer.java @@ -2,11 +2,11 @@ import com.nedap.archie.rm.datavalues.quantity.DvInterval; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class DvIntervalSerializer implements RmSerializer { @Override - public void serialize(DvInterval data, RmToTextSerializer serializer) { + public void serialize(DvInterval data, RmToMarkdownSerializer serializer) { if(data.getInterval() != null) { serializer.append(data.getLower()); serializer.append(" - "); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java index 69a532145..5b49e6a96 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvOrdinalSerializer.java @@ -2,11 +2,11 @@ import com.nedap.archie.rm.datavalues.quantity.DvOrdinal; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class DvOrdinalSerializer implements RmSerializer { @Override - public void serialize(DvOrdinal data, RmToTextSerializer serializer) { + public void serialize(DvOrdinal data, RmToMarkdownSerializer serializer) { if(data.getValue() != null) { serializer.append(Long.toString(data.getValue())); serializer.append(" - "); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java index 5d690e9ee..a197d8867 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvProportionSerializer.java @@ -1,16 +1,13 @@ package com.nedap.archie.text.serializers.datatypes; import com.nedap.archie.rm.datavalues.quantity.DvProportion; -import com.nedap.archie.rm.datavalues.quantity.DvQuantity; import com.nedap.archie.rm.datavalues.quantity.ProportionKind; -import com.nedap.archie.rm.datavalues.quantity.ReferenceRange; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; -import org.openehr.utils.message.I18n; +import com.nedap.archie.text.RmToMarkdownSerializer; public class DvProportionSerializer implements RmSerializer { @Override - public void serialize(DvProportion data, RmToTextSerializer serializer) { + public void serialize(DvProportion data, RmToMarkdownSerializer serializer) { if(data.getType() == null) { serializeFraction(data, serializer); } else if (data.getType() == ProportionKind.PERCENT.getPk()) { @@ -24,7 +21,7 @@ public void serialize(DvProportion data, RmToTextSerializer serializer) { //TODO: other formats - maybe just a number sometimes? } - private static void serializeFraction(DvProportion data, RmToTextSerializer serializer) { + private static void serializeFraction(DvProportion data, RmToMarkdownSerializer serializer) { if(data.getNumerator() == null) { serializer.append("-"); } else { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java index 17d9b4355..7c27f1225 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java @@ -1,15 +1,13 @@ package com.nedap.archie.text.serializers.datatypes; -import com.nedap.archie.rm.datavalues.quantity.DvOrdered; import com.nedap.archie.rm.datavalues.quantity.DvQuantified; -import com.nedap.archie.rm.datavalues.quantity.DvQuantity; import com.nedap.archie.rm.datavalues.quantity.ReferenceRange; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class DvQuantifiedUtil { - public static void serialize(DvQuantified data, RmToTextSerializer serializer) { + public static void serialize(DvQuantified data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull(I18n.t("Magnitude status"), data.getMagnitudeStatus()); serializer.appendIfNotNull(I18n.t("Normal range"), data.getNormalRange()); serializer.appendIfNotNull(I18n.t("Normal status"), data.getNormalStatus()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java index 72347fdc9..321682d02 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java @@ -1,16 +1,13 @@ package com.nedap.archie.text.serializers.datatypes; -import com.nedap.archie.rm.datavalues.DvCodedText; -import com.nedap.archie.rm.datavalues.DvText; import com.nedap.archie.rm.datavalues.quantity.DvQuantity; -import com.nedap.archie.rm.datavalues.quantity.ReferenceRange; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class DvQuantitySerializer implements RmSerializer { @Override - public void serialize(DvQuantity data, RmToTextSerializer serializer) { + public void serialize(DvQuantity data, RmToMarkdownSerializer serializer) { if(data.getMagnitude() == null) { serializer.append("data niet gevuld"); } else { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTextSerializer.java index bc9262351..0f5bde211 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTextSerializer.java @@ -2,11 +2,11 @@ import com.nedap.archie.rm.datavalues.DvText; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; public class DvTextSerializer implements RmSerializer { @Override - public void serialize(DvText data, RmToTextSerializer serializer) { + public void serialize(DvText data, RmToMarkdownSerializer serializer) { serializer.append(data.getValue()); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java index 09a578468..acbf31f65 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java @@ -1,21 +1,22 @@ package com.nedap.archie.text.serializers.datatypes; -import com.nedap.archie.datetime.DateTimeFormatters; import com.nedap.archie.datetime.DateTimeSerializerFormatters; -import com.nedap.archie.rm.datavalues.DvText; -import com.nedap.archie.rm.datavalues.quantity.datetime.DvDate; import com.nedap.archie.rm.datavalues.quantity.datetime.DvTime; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; + +import java.text.DateFormat; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; public class DvTimeSerializer implements RmSerializer { @Override - public void serialize(DvTime data, RmToTextSerializer serializer) { + public void serialize(DvTime data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { serializer.append("data niet gevuld"); return; } - serializer.append(DateTimeSerializerFormatters.ISO_8601_TIME.format(data.getValue())); + serializer.append(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT).format(data.getValue())); DvQuantifiedUtil.serialize(data, serializer); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java index 56ad8f589..fbbf8a1be 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java @@ -2,12 +2,12 @@ import com.nedap.archie.rm.datavalues.quantity.ReferenceRange; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class ReferenceRangeSerializer implements RmSerializer { @Override - public void serialize(ReferenceRange data, RmToTextSerializer serializer) { + public void serialize(ReferenceRange data, RmToMarkdownSerializer serializer) { serializer.append(data.getRange()); if(data.getMeaning() != null) { serializer.appendNewLine(); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java index 12e9492de..a40f17bf2 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java @@ -3,12 +3,12 @@ import com.nedap.archie.rm.datavalues.DvIdentifier; import com.nedap.archie.rm.generic.PartyIdentified; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class PartyIdentifiedSerializer implements RmSerializer { @Override - public void serialize(PartyIdentified data, RmToTextSerializer serializer) { + public void serialize(PartyIdentified data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull(I18n.t("Name"), data.getName()); if(data.getIdentifiers() != null) { for (DvIdentifier identifier : data.getIdentifiers()) { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java index c911864bd..15a585001 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java @@ -3,12 +3,12 @@ import com.nedap.archie.rm.datavalues.DvIdentifier; import com.nedap.archie.rm.generic.PartyRelated; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class PartyRelatedSerializer implements RmSerializer { @Override - public void serialize(PartyRelated data, RmToTextSerializer serializer) { + public void serialize(PartyRelated data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull(I18n.t("Name"), data.getName()); serializer.appendIfNotNull(I18n.t("Relationship"), data.getRelationship()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java index 405a2f3dd..2f561ebd9 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java @@ -2,12 +2,12 @@ import com.nedap.archie.rm.generic.PartySelf; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import org.openehr.utils.message.I18n; public class PartySelfSerializer implements RmSerializer { @Override - public void serialize(PartySelf data, RmToTextSerializer serializer) { + public void serialize(PartySelf data, RmToMarkdownSerializer serializer) { serializer.append(I18n.t("The person themselves\n")); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java index 7cbf6418d..67768166c 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java @@ -2,13 +2,13 @@ import com.nedap.archie.rm.composition.Action; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import com.nedap.archie.text.serializers.LocatableUtil; import org.openehr.utils.message.I18n; public class ActionSerializer implements RmSerializer { @Override - public void serialize(Action data, RmToTextSerializer serializer) { + public void serialize(Action data, RmToMarkdownSerializer serializer) { serializer.append("### "); LocatableUtil.serialize(data, serializer); serializer.appendIfNotNull(I18n.t("Description"), data.getDescription()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java index db15b5b0c..699fe1464 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/AdminEntrySerializer.java @@ -2,12 +2,12 @@ import com.nedap.archie.rm.composition.AdminEntry; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import com.nedap.archie.text.serializers.LocatableUtil; public class AdminEntrySerializer implements RmSerializer { @Override - public void serialize(AdminEntry data, RmToTextSerializer serializer) { + public void serialize(AdminEntry data, RmToMarkdownSerializer serializer) { serializer.append("### "); LocatableUtil.serialize(data, serializer); serializer.append(data.getData()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java index b99b4f05c..684a5b513 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/EvaluationSerializer.java @@ -2,12 +2,12 @@ import com.nedap.archie.rm.composition.Evaluation; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import com.nedap.archie.text.serializers.LocatableUtil; public class EvaluationSerializer implements RmSerializer { @Override - public void serialize(Evaluation data, RmToTextSerializer serializer) { + public void serialize(Evaluation data, RmToMarkdownSerializer serializer) { serializer.append("### "); LocatableUtil.serialize(data, serializer); serializer.append(data.getData()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java index 82e712254..204583f0e 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/GenericEntrySerializer.java @@ -2,12 +2,12 @@ import com.nedap.archie.rm.integration.GenericEntry; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import com.nedap.archie.text.serializers.LocatableUtil; public class GenericEntrySerializer implements RmSerializer { @Override - public void serialize(GenericEntry data, RmToTextSerializer serializer) { + public void serialize(GenericEntry data, RmToMarkdownSerializer serializer) { serializer.append("### "); LocatableUtil.serialize(data, serializer); serializer.append(data.getData()); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java index 780f686bd..ba8b442c9 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java @@ -3,13 +3,13 @@ import com.nedap.archie.rm.composition.Activity; import com.nedap.archie.rm.composition.Instruction; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import com.nedap.archie.text.serializers.LocatableUtil; import org.openehr.utils.message.I18n; public class InstructionSerializer implements RmSerializer { @Override - public void serialize(Instruction data, RmToTextSerializer serializer) { + public void serialize(Instruction data, RmToMarkdownSerializer serializer) { serializer.append("### "); LocatableUtil.serialize(data, serializer); if(data.getActivities() != null) { diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java index 3b5943c85..f1cb7e60c 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java @@ -5,13 +5,13 @@ import com.nedap.archie.rm.datastructures.History; import com.nedap.archie.rm.datastructures.ItemStructure; import com.nedap.archie.text.RmSerializer; -import com.nedap.archie.text.RmToTextSerializer; +import com.nedap.archie.text.RmToMarkdownSerializer; import com.nedap.archie.text.serializers.LocatableUtil; import org.openehr.utils.message.I18n; public class ObservationSerializer implements RmSerializer { @Override - public void serialize(Observation data, RmToTextSerializer serializer) { + public void serialize(Observation data, RmToMarkdownSerializer serializer) { serializer.append("### "); LocatableUtil.serialize(data, serializer); @@ -22,7 +22,7 @@ public void serialize(Observation data, RmToTextSerializer serializer) { serializer.append(data.getProtocol()); } - private void writeHistory(History data, RmToTextSerializer serializer) { + private void writeHistory(History data, RmToMarkdownSerializer serializer) { if(data != null) { if(data.getEvents() != null) { for(Event event: data.getEvents()) { diff --git a/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java similarity index 90% rename from tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java rename to tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java index 7dd26dd83..5d1a1d08a 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToTextSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java @@ -4,12 +4,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.nedap.archie.adlparser.ADLParseException; -import com.nedap.archie.adlparser.ADLParser; import com.nedap.archie.aom.Archetype; import com.nedap.archie.aom.OperationalTemplate; import com.nedap.archie.creation.ExampleJsonInstanceGenerator; import com.nedap.archie.flattener.Flattener; -import com.nedap.archie.flattener.FlattenerTest; import com.nedap.archie.flattener.InMemoryFullArchetypeRepository; import com.nedap.archie.json.ArchieJacksonConfiguration; import com.nedap.archie.json.JacksonUtil; @@ -20,12 +18,11 @@ import org.openehr.referencemodels.BuiltinReferenceModels; import java.io.IOException; -import java.io.InputStream; import java.util.Map; import static org.junit.Assert.assertEquals; -public class RmToTextSerializerTest { +public class RmToMarkdownSerializerTest { private static final String TYPE_PROPERTY_NAME = "_type"; @Test @@ -38,9 +35,9 @@ public void bloodPressure() throws Exception { //System.out.println(s); Observation observation = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Observation.class); - RmToTextSerializer rmToTextSerializer = new RmToTextSerializer(); - rmToTextSerializer.append(observation); - System.out.println(rmToTextSerializer.toString()); + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(observation); + System.out.println(rmToMarkdownSerializer.toString()); } @@ -73,9 +70,9 @@ public void bloodPressureComposition() throws Exception { Composition composition = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Composition.class); - RmToTextSerializer rmToTextSerializer = new RmToTextSerializer(); - rmToTextSerializer.append(composition); - System.out.println(rmToTextSerializer); + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(composition); + System.out.println(rmToMarkdownSerializer); } From 8ba4bde96508f9cefb7a81db005dd8031e5af3dd Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Tue, 30 May 2023 14:58:09 +0200 Subject: [PATCH 12/20] Add basic assertions to tests --- .../datatypes/DvIdentifierSerializer.java | 2 +- .../archie/text/RmToMarkdownSerializerTest.java | 16 ++++++++++++++-- ...HR-EHR-COMPOSITION.blood_pressure.v1.0.0.adlt | 10 +++++----- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java index f75e459e9..dc74d9a35 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvIdentifierSerializer.java @@ -32,6 +32,6 @@ public void serialize(DvIdentifier data, RmToMarkdownSerializer serializer) { @Override public Class getSerializedClass() { - return null; + return DvIdentifier.class; } } diff --git a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java index 5d1a1d08a..033acf3fd 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java @@ -21,6 +21,7 @@ import java.util.Map; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class RmToMarkdownSerializerTest { @@ -37,7 +38,11 @@ public void bloodPressure() throws Exception { Observation observation = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Observation.class); RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); rmToMarkdownSerializer.append(observation); - System.out.println(rmToMarkdownSerializer.toString()); + String serialized = rmToMarkdownSerializer.toString(); + System.out.println(serialized); + assertTrue(serialized, serialized.contains("Systolic: 0.0mm[Hg] \n")); //' \n' = newline in Markdown + assertTrue(serialized, serialized.contains("Position: Standing \n")); //' \n' = newline in Markdown + assertTrue(serialized, serialized.contains("### Blood Pressure")); } @@ -72,7 +77,14 @@ public void bloodPressureComposition() throws Exception { RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); rmToMarkdownSerializer.append(composition); - System.out.println(rmToMarkdownSerializer); + String serialized = rmToMarkdownSerializer.toString(); + + assertTrue(serialized, serialized.contains("Systolic: 0.0mm[Hg] \n")); //' \n' = newline in Markdown + assertTrue(serialized, serialized.contains("Position: Standing \n")); //' \n' = newline in Markdown + assertTrue(serialized, serialized.contains("# Blood pressure composition")); + assertTrue(serialized, serialized.contains("## Context")); + assertTrue(serialized, serialized.contains("### Blood pressure")); + assertTrue(serialized, serialized.contains("#### Exertion")); } diff --git a/tools/src/test/resources/com/nedap/archie/flattener/openEHR-EHR-COMPOSITION.blood_pressure.v1.0.0.adlt b/tools/src/test/resources/com/nedap/archie/flattener/openEHR-EHR-COMPOSITION.blood_pressure.v1.0.0.adlt index 374b71c9d..36837d9ca 100644 --- a/tools/src/test/resources/com/nedap/archie/flattener/openEHR-EHR-COMPOSITION.blood_pressure.v1.0.0.adlt +++ b/tools/src/test/resources/com/nedap/archie/flattener/openEHR-EHR-COMPOSITION.blood_pressure.v1.0.0.adlt @@ -65,17 +65,17 @@ terminology description = <"*Document to communicate information to others about the result of a test or assessment.(en)"> > ["id0.0.5"] = < - text = <"*Result Report(en)"> + text = <"*Blood pressure(en)"> description = <"*Document to communicate information to others about the result of a test or assessment.(en)"> > > ["en"] = < ["id1.1.1"] = < - text = <"*Result Report(en)"> + text = <"Blood pressure composition"> description = <"*Document to communicate information to others about the result of a test or assessment.(en)"> > ["id0.0.5"] = < - text = <"*Result Report(en)"> + text = <"Blood pressure"> description = <"*Document to communicate information to others about the result of a test or assessment.(en)"> > > @@ -85,7 +85,7 @@ terminology description = <"*Document to communicate information to others about the result of a test or assessment.(en)"> > ["id0.0.5"] = < - text = <"*Result Report(en)"> + text = <"*Blood pressure(en)"> description = <"*Document to communicate information to others about the result of a test or assessment.(en)"> > > @@ -95,7 +95,7 @@ terminology description = <"*Document to communicate information to others about the result of a test or assessment.(en)"> > ["id0.0.5"] = < - text = <"*Result Report(en)"> + text = <"*Blood pressure(en)"> description = <"*Document to communicate information to others about the result of a test or assessment.(en)"> > > From 309af5888965fcc29a28d95a789a9afa34921ca4 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Tue, 30 May 2023 15:09:15 +0200 Subject: [PATCH 13/20] Add tests for more types, plus some minor layout fixes --- .../serializers/entries/ActionSerializer.java | 2 +- .../text/RmToMarkdownSerializerTest.java | 60 ++++++++++++++++++- 2 files changed, 58 insertions(+), 4 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java index 67768166c..a00409d09 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java @@ -14,7 +14,7 @@ public void serialize(Action data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull(I18n.t("Description"), data.getDescription()); serializer.appendIfNotNull(I18n.t("Protocol"), data.getProtocol()); serializer.appendIfNotNull(I18n.t("Instruction details"), data.getInstructionDetails()); - serializer.appendIfNotNull(I18n.t("State transition"), data.getIsmTransition()); + serializer.appendWithHeaderIfNotNull("##### ", I18n.t("State transition"), data.getIsmTransition()); } @Override diff --git a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java index 033acf3fd..d0cc953b5 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java @@ -11,8 +11,7 @@ import com.nedap.archie.flattener.InMemoryFullArchetypeRepository; import com.nedap.archie.json.ArchieJacksonConfiguration; import com.nedap.archie.json.JacksonUtil; -import com.nedap.archie.rm.composition.Composition; -import com.nedap.archie.rm.composition.Observation; +import com.nedap.archie.rm.composition.*; import com.nedap.archie.testutil.TestUtil; import org.junit.Test; import org.openehr.referencemodels.BuiltinReferenceModels; @@ -39,7 +38,7 @@ public void bloodPressure() throws Exception { RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); rmToMarkdownSerializer.append(observation); String serialized = rmToMarkdownSerializer.toString(); - System.out.println(serialized); + assertTrue(serialized, serialized.contains("Systolic: 0.0mm[Hg] \n")); //' \n' = newline in Markdown assertTrue(serialized, serialized.contains("Position: Standing \n")); //' \n' = newline in Markdown assertTrue(serialized, serialized.contains("### Blood Pressure")); @@ -88,6 +87,61 @@ public void bloodPressureComposition() throws Exception { } + @Test + public void evaluation() throws Exception { + OperationalTemplate opt = createOPT("/ckm-mirror/local/archetypes/entry/evaluation/openEHR-EHR-EVALUATION.recommendation.v1.1.0.adls"); + ExampleJsonInstanceGenerator structureGenerator = createExampleJsonInstanceGenerator(); + + Map structure = structureGenerator.generate(opt); + String s = serializeToJson(structure, true); + + Evaluation evaluation = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Evaluation.class); + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(evaluation); + String serialized = rmToMarkdownSerializer.toString(); + assertTrue(serialized, serialized.contains("### Recommendation")); + assertTrue(serialized, serialized.contains("Recommendation: string \n")); //' \n' = newline in Markdown + assertTrue(serialized, serialized.contains("Rationale: string \n")); //' \n' = newline in Markdown + + + } + + @Test + public void instruction() throws Exception { + OperationalTemplate opt = createOPT("/ckm-mirror/local/archetypes/entry/instruction/openEHR-EHR-INSTRUCTION.medication_order.v1.0.1.adls"); + ExampleJsonInstanceGenerator structureGenerator = createExampleJsonInstanceGenerator(); + + Map structure = structureGenerator.generate(opt); + String s = serializeToJson(structure, true); + + Instruction instruction = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Instruction.class); + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(instruction); + String serialized = rmToMarkdownSerializer.toString(); + assertTrue(serialized, serialized.contains("### Medication order ")); + assertTrue(serialized, serialized.contains("#### Preparation details ")); + assertTrue(serialized, serialized.contains("Substitution direction: Permitted \n")); //' \n' = newline in Markdown + } + + @Test + public void action() throws Exception { + OperationalTemplate opt = createOPT("/ckm-mirror/local/archetypes/entry/action/openEHR-EHR-ACTION.medication.v0.0.1-alpha.adls"); + ExampleJsonInstanceGenerator structureGenerator = createExampleJsonInstanceGenerator(); + + Map structure = structureGenerator.generate(opt); + String s = serializeToJson(structure, true); + + Action instruction = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Action.class); + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(instruction); + String serialized = rmToMarkdownSerializer.toString(); + assertTrue(serialized, serialized.contains("### Medication")); + assertTrue(serialized, serialized.contains("Sequence number: 42 \n")); + assertTrue(serialized, serialized.contains("##### State transition")); + assertTrue(serialized, serialized.contains("Care flow step: Medication recommended ")); + } + + private ExampleJsonInstanceGenerator createExampleJsonInstanceGenerator() { ExampleJsonInstanceGenerator structureGenerator = new ExampleJsonInstanceGenerator(BuiltinReferenceModels.getMetaModels(), "en"); structureGenerator.setAddTwoInstancesWherePossible(false); From 157d683cb12b59caf611c5df6b1dcbc2e95d8fb5 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Wed, 31 May 2023 16:48:34 +0200 Subject: [PATCH 14/20] Add more tests + some small fixes --- .../serializers/EventContextSerializer.java | 2 +- .../datatypes/DvQuantitySerializer.java | 2 +- .../text/RmToMarkdownSerializerTest.java | 76 ++++++++++++++++++- 3 files changed, 76 insertions(+), 4 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java index abecce9f5..30ab98f4a 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java @@ -15,7 +15,7 @@ public void serialize(EventContext data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull("Setting", data.getSetting()); if(data.getParticipations() != null && !data.getParticipations().isEmpty()) { - serializer.append("##### participations"); + serializer.append("##### participations \n"); for(Participation participation:data.getParticipations()) { serializer.append(participation); serializer.appendNewLine(); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java index 321682d02..050b27efd 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java @@ -9,7 +9,7 @@ public class DvQuantitySerializer implements RmSerializer { @Override public void serialize(DvQuantity data, RmToMarkdownSerializer serializer) { if(data.getMagnitude() == null) { - serializer.append("data niet gevuld"); + serializer.append(I18n.t("No data entered")); } else { serializer.append(Double.toString(data.getMagnitude())); } diff --git a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java index d0cc953b5..23cff3d2d 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java @@ -12,11 +12,18 @@ import com.nedap.archie.json.ArchieJacksonConfiguration; import com.nedap.archie.json.JacksonUtil; import com.nedap.archie.rm.composition.*; +import com.nedap.archie.rm.datatypes.CodePhrase; +import com.nedap.archie.rm.datavalues.DvCodedText; +import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.rm.generic.Participation; +import com.nedap.archie.rm.integration.GenericEntry; import com.nedap.archie.testutil.TestUtil; import org.junit.Test; import org.openehr.referencemodels.BuiltinReferenceModels; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import static org.junit.Assert.assertEquals; @@ -131,9 +138,9 @@ public void action() throws Exception { Map structure = structureGenerator.generate(opt); String s = serializeToJson(structure, true); - Action instruction = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Action.class); + Action data = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Action.class); RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); - rmToMarkdownSerializer.append(instruction); + rmToMarkdownSerializer.append(data); String serialized = rmToMarkdownSerializer.toString(); assertTrue(serialized, serialized.contains("### Medication")); assertTrue(serialized, serialized.contains("Sequence number: 42 \n")); @@ -141,6 +148,71 @@ public void action() throws Exception { assertTrue(serialized, serialized.contains("Care flow step: Medication recommended ")); } + @Test + public void adminEntry() throws Exception { + OperationalTemplate opt = createOPT("/ckm-mirror/local/archetypes/entry/admin_entry/openEHR-EHR-ADMIN_ENTRY.admission.v1.0.0.adls"); + ExampleJsonInstanceGenerator structureGenerator = createExampleJsonInstanceGenerator(); + + Map structure = structureGenerator.generate(opt); + String s = serializeToJson(structure, true); + + AdminEntry data = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, AdminEntry.class); + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(data); + String serialized = rmToMarkdownSerializer.toString(); + assertTrue(serialized, serialized.contains("### Patient admission")); + assertTrue(serialized, serialized.contains("Location type: Clinic \n")); + assertTrue(serialized, serialized.contains("#### Attending doctor ")); + } + + @Test + public void genericEntry() throws Exception { + OperationalTemplate opt = createOPT("/com/nedap/archie/aom/openEHR-EHR-GENERIC_ENTRY.included.v1.0.0.adls"); + ExampleJsonInstanceGenerator structureGenerator = createExampleJsonInstanceGenerator(); + + Map structure = structureGenerator.generate(opt); + String s = serializeToJson(structure, true); + + GenericEntry data = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, GenericEntry.class); + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(data); + String serialized = rmToMarkdownSerializer.toString(); + //this is a nearly empty nonsensical test archetype, so the output will also be + assertTrue(serialized, serialized.contains("### root node generic entry en")); + assertTrue(serialized, serialized.contains("an element: Value 1 \n")); + } + + @Test + public void compositionParticipants() throws Exception { + Composition composition = new Composition(); + composition.setName(new DvText("composition name")); + EventContext context = new EventContext(); + composition.setContext(context); + List participations = new ArrayList(); + Participation participation1 = new Participation(); + participation1.setFunction(new DvText("some function")); + participation1.setMode(new DvCodedText("some mode", new CodePhrase("[local::at2]"))); + Participation participation2 = new Participation(); + participation2.setFunction(new DvText("some function 2")); + participation2.setMode(new DvCodedText("some mode 2", new CodePhrase("[local::at3]"))); + + participations.add(participation1); + participations.add(participation2); + context.setParticipations(participations); + + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(composition); + String serialized = rmToMarkdownSerializer.toString(); + + assertTrue(serialized, serialized.startsWith("# composition name \n## Context\n" + + "##### participations \n" + + "Function of participant: some function \n" + + "Mode of participant: some mode \n" + + " \n" + + "Function of participant: some function 2 \n" + + "Mode of participant: some mode 2 \n")); + } + private ExampleJsonInstanceGenerator createExampleJsonInstanceGenerator() { ExampleJsonInstanceGenerator structureGenerator = new ExampleJsonInstanceGenerator(BuiltinReferenceModels.getMetaModels(), "en"); From 347986d4ed24a069fbce2429c54bfbef9574877f Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Mon, 21 Aug 2023 09:22:40 +0200 Subject: [PATCH 15/20] Implement more tests plus layout fixes --- .../archie/text/RmToMarkdownSerializer.java | 8 +-- .../text/serializers/ElementSerializer.java | 2 +- .../audit/FeederAuditDetailsSerializer.java | 6 +- .../audit/FeederAuditSerializer.java | 8 ++- .../text/RmToMarkdownSerializerTest.java | 72 +++++++++++++++++++ 5 files changed, 84 insertions(+), 12 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/RmToMarkdownSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/RmToMarkdownSerializer.java index 0fa1fe4f0..2ae0be03c 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/RmToMarkdownSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/RmToMarkdownSerializer.java @@ -115,16 +115,16 @@ public void appendIfNotNull(String name, RMObject data) { } /** - * Append a header with the data, if data is not null + * Append a header with the data, if data is not null. Adds a newline after the header * @param headerString the markdown header string, for example '## ' or '#### ' - * @param name - * @param data + * @param name the name to serialize as the name of the header + * @param data the data to further serialize. */ public void appendWithHeaderIfNotNull(String headerString, String name, RMObject data) { if(data != null) { append(headerString); append(name); - append("\n"); + appendNewLine(); append(data); appendNewLine(); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java index 0646184fb..79c96457a 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java @@ -16,7 +16,7 @@ public void serialize(Element data, RmToMarkdownSerializer serializer) { serializer.append(data.getValue()); } else { if(data.getNullFlavour() != null) { - serializer.append(I18n.t("Element is empty. Reason: ")); + serializer.append(I18n.t("No value. Reason: ")); serializer.append(data.getNullFlavour()); if(data.getNullReason() != null) { serializer.append(" "); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java index 4d0808b23..6ed17e0ee 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java @@ -12,13 +12,11 @@ public void serialize(FeederAuditDetails data, RmToMarkdownSerializer serializer serializer.appendIfNotNull(I18n.t("Location"), data.getLocation()); if(data.getTime() != null) { - serializer.append(data.getTime()); - serializer.appendNewLine(); + serializer.appendIfNotNull("time", data.getTime()); } serializer.appendIfNotNull(I18n.t("Audit provider"), data.getProvider()); if(data.getOtherDetails() != null) { - serializer.append(data.getOtherDetails()); - serializer.appendNewLine(); + serializer.appendWithHeaderIfNotNull("##### ", "other details", data.getOtherDetails()); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java index e7a16cdf7..38fd47009 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java @@ -8,12 +8,14 @@ public class FeederAuditSerializer implements RmSerializer { @Override public void serialize(FeederAudit data, RmToMarkdownSerializer serializer) { - serializer.append("##### "); - serializer.appendIfNotNull( + + serializer.appendWithHeaderIfNotNull( + "#### ", I18n.t("Originating system audit"), data.getOriginatingSystemAudit()); - serializer.appendIfNotNull( + serializer.appendWithHeaderIfNotNull( + "#### ", I18n.t("Feeder system audit"), data.getFeederSystemAudit()); } diff --git a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java index 23cff3d2d..5b4eac16f 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java @@ -11,10 +11,15 @@ import com.nedap.archie.flattener.InMemoryFullArchetypeRepository; import com.nedap.archie.json.ArchieJacksonConfiguration; import com.nedap.archie.json.JacksonUtil; +import com.nedap.archie.rm.archetyped.FeederAudit; +import com.nedap.archie.rm.archetyped.FeederAuditDetails; import com.nedap.archie.rm.composition.*; +import com.nedap.archie.rm.datastructures.Element; +import com.nedap.archie.rm.datastructures.ItemList; import com.nedap.archie.rm.datatypes.CodePhrase; import com.nedap.archie.rm.datavalues.DvCodedText; import com.nedap.archie.rm.datavalues.DvText; +import com.nedap.archie.rm.datavalues.quantity.datetime.DvDateTime; import com.nedap.archie.rm.generic.Participation; import com.nedap.archie.rm.integration.GenericEntry; import com.nedap.archie.testutil.TestUtil; @@ -22,6 +27,7 @@ import org.openehr.referencemodels.BuiltinReferenceModels; import java.io.IOException; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -213,6 +219,72 @@ public void compositionParticipants() throws Exception { "Mode of participant: some mode 2 \n")); } + @Test + public void compositionSection() throws Exception { + Composition composition = new Composition(); + composition.setName(new DvText("composition name")); + EventContext context = new EventContext(); + composition.setContext(context); + Section section = new Section(); + section.setNameAsString("section"); + Section innerSection = new Section(); + innerSection.setNameAsString("inner section"); + section.addItem(innerSection); + composition.addContent(section); + + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(composition); + String serialized = rmToMarkdownSerializer.toString(); + + assertTrue(serialized, serialized.startsWith("# composition name \n" + + "## section \n" + + "## inner section \n" + + " \n" + + " \n" + + "## Context\n" + + " ")); + } + + @Test + public void compositionFeederAudit() throws Exception { + Composition composition = new Composition(); + composition.setName(new DvText("composition name")); + + FeederAudit feederAudit = new FeederAudit(); + FeederAuditDetails systemAudit = new FeederAuditDetails(); + systemAudit.setSystemId("some system"); + systemAudit.setTime(new DvDateTime(LocalDateTime.of(2023, 5, 1, 10, 23, 5))); + ItemList otherDetails = new ItemList(); + Element content = new Element(); + content.setNameAsString("system audit name"); + content.setNullFlavour(new DvCodedText("unknown", "at26")); + otherDetails.addItem(content); + systemAudit.setOtherDetails(otherDetails); + feederAudit.setFeederSystemAudit(systemAudit); + feederAudit.setOriginatingSystemAudit(systemAudit); + composition.setFeederAudit(feederAudit); + + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(composition); + String serialized = rmToMarkdownSerializer.toString(); + + assertTrue(serialized, serialized.startsWith("# composition name \n" + + "#### Originating system audit \n" + + "Originating system: some system \n" + + "time: 1 May 2023, 10:23:05 \n" + + "##### other details \n" + + "system audit name: No value. Reason: unknown \n" + + " \n" + + " \n" + + "#### Feeder system audit \n" + + "Originating system: some system \n" + + "time: 1 May 2023, 10:23:05 \n" + + "##### other details \n" + + "system audit name: No value. Reason: unknown \n" + + " \n" + + " ")); + } + private ExampleJsonInstanceGenerator createExampleJsonInstanceGenerator() { ExampleJsonInstanceGenerator structureGenerator = new ExampleJsonInstanceGenerator(BuiltinReferenceModels.getMetaModels(), "en"); From da408ffcd24a5f2c8c9a67221851200e8006a3e1 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Thu, 31 Aug 2023 14:47:41 +0200 Subject: [PATCH 16/20] Fix date+time localization in markdown formatter --- .../datatypes/DvDateSerializer.java | 4 ++- .../datatypes/DvDateTimeSerializer.java | 5 +++- .../datatypes/DvTimeSerializer.java | 4 ++- .../text/RmToMarkdownSerializerTest.java | 28 +++++++++++++++---- 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java index 3215b3bb4..cea0dd17c 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java @@ -4,6 +4,7 @@ import com.nedap.archie.rm.datavalues.quantity.datetime.DvDate; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToMarkdownSerializer; +import org.openehr.utils.message.I18n; import java.text.DateFormat; import java.time.format.DateTimeFormatter; @@ -16,7 +17,8 @@ public void serialize(DvDate data, RmToMarkdownSerializer serializer) { serializer.append("data niet gevuld"); return; } - serializer.append(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).format(data.getValue())); + serializer.append(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(I18n.getCurrentLocale()) + .format(data.getValue())); DvQuantifiedUtil.serialize(data, serializer); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java index 8f8e542db..1160d6c1f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java @@ -4,10 +4,12 @@ import com.nedap.archie.rm.datavalues.quantity.datetime.DvDateTime; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToMarkdownSerializer; +import org.openehr.utils.message.I18n; import java.text.DateFormat; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; +import java.util.Locale; public class DvDateTimeSerializer implements RmSerializer { @Override @@ -17,7 +19,8 @@ public void serialize(DvDateTime data, RmToMarkdownSerializer serializer) { return; } - serializer.append(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).format(data.getValue())); + serializer.append(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(I18n.getCurrentLocale()) + .format(data.getValue())); DvQuantifiedUtil.serialize(data, serializer); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java index acbf31f65..f4f0db661 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java @@ -4,6 +4,7 @@ import com.nedap.archie.rm.datavalues.quantity.datetime.DvTime; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToMarkdownSerializer; +import org.openehr.utils.message.I18n; import java.text.DateFormat; import java.time.format.DateTimeFormatter; @@ -16,7 +17,8 @@ public void serialize(DvTime data, RmToMarkdownSerializer serializer) { serializer.append("data niet gevuld"); return; } - serializer.append(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT).format(data.getValue())); + serializer.append(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT).withLocale(I18n.getCurrentLocale()) + .format(data.getValue())); DvQuantifiedUtil.serialize(data, serializer); } diff --git a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java index 5b4eac16f..9f5ff35f1 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java @@ -1,5 +1,6 @@ package com.nedap.archie.text; +import com.esotericsoftware.kryo.kryo5.serializers.DefaultSerializers; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; @@ -23,13 +24,17 @@ import com.nedap.archie.rm.generic.Participation; import com.nedap.archie.rm.integration.GenericEntry; import com.nedap.archie.testutil.TestUtil; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.openehr.referencemodels.BuiltinReferenceModels; +import org.openehr.utils.message.I18n; import java.io.IOException; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import static org.junit.Assert.assertEquals; @@ -38,6 +43,17 @@ public class RmToMarkdownSerializerTest { private static final String TYPE_PROPERTY_NAME = "_type"; + + @Before + public void setLocale() { + I18n.setCurrentLocale(Locale.ENGLISH); + } + + @After + public void unsetLocale() { + I18n.setCurrentLocale(null); + } + @Test public void bloodPressure() throws Exception { OperationalTemplate opt = createOPT("/ckm-mirror/local/archetypes/entry/observation/openEHR-EHR-OBSERVATION.blood_pressure.v1.1.0.adls"); @@ -210,7 +226,7 @@ public void compositionParticipants() throws Exception { rmToMarkdownSerializer.append(composition); String serialized = rmToMarkdownSerializer.toString(); - assertTrue(serialized, serialized.startsWith("# composition name \n## Context\n" + + assertTrue(serialized, serialized.startsWith("# composition name \n## Context \n" + "##### participations \n" + "Function of participant: some function \n" + "Mode of participant: some mode \n" + @@ -241,7 +257,7 @@ public void compositionSection() throws Exception { "## inner section \n" + " \n" + " \n" + - "## Context\n" + + "## Context \n" + " ")); } @@ -268,21 +284,21 @@ public void compositionFeederAudit() throws Exception { rmToMarkdownSerializer.append(composition); String serialized = rmToMarkdownSerializer.toString(); - assertTrue(serialized, serialized.startsWith("# composition name \n" + + assertEquals(serialized, "# composition name \n" + "#### Originating system audit \n" + "Originating system: some system \n" + - "time: 1 May 2023, 10:23:05 \n" + + "time: May 1, 2023, 10:23:05 AM \n" + "##### other details \n" + "system audit name: No value. Reason: unknown \n" + " \n" + " \n" + "#### Feeder system audit \n" + "Originating system: some system \n" + - "time: 1 May 2023, 10:23:05 \n" + + "time: May 1, 2023, 10:23:05 AM \n" + "##### other details \n" + "system audit name: No value. Reason: unknown \n" + " \n" + - " ")); + " \n"); } From 4e15a0675feda6c65d304d8a95a99adb7a9009de Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Thu, 31 Aug 2023 14:53:55 +0200 Subject: [PATCH 17/20] Fix I18n in markdown serializer --- .../text/serializers/EventContextSerializer.java | 14 +++++++++----- .../audit/FeederAuditDetailsSerializer.java | 2 +- .../serializers/datatypes/DvBooleanSerializer.java | 5 +++-- .../serializers/datatypes/DvCountSerializer.java | 3 ++- .../serializers/datatypes/DvDateSerializer.java | 2 +- .../datatypes/DvDateTimeSerializer.java | 2 +- .../datatypes/DvDurationSerializer.java | 3 ++- .../datatypes/DvQuantitySerializer.java | 2 +- .../serializers/datatypes/DvTimeSerializer.java | 2 +- .../demographic/PartySelfSerializer.java | 3 ++- 10 files changed, 23 insertions(+), 15 deletions(-) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java index 30ab98f4a..548d94cbe 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java @@ -4,18 +4,22 @@ import com.nedap.archie.rm.generic.Participation; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToMarkdownSerializer; +import org.openehr.utils.message.I18n; public class EventContextSerializer implements RmSerializer { @Override public void serialize(EventContext data, RmToMarkdownSerializer serializer) { - serializer.appendIfNotNull("Location", data.getLocation()); - serializer.appendIfNotNull("Start time", data.getStartTime()); - serializer.appendIfNotNull("End time", data.getEndTime()); - serializer.appendIfNotNull("Setting", data.getSetting()); + serializer.appendIfNotNull(I18n.t("Location"), data.getLocation()); + serializer.appendIfNotNull(I18n.t("Start time"), data.getStartTime()); + serializer.appendIfNotNull(I18n.t("End time"), data.getEndTime()); + serializer.appendIfNotNull(I18n.t("Setting"), data.getSetting()); if(data.getParticipations() != null && !data.getParticipations().isEmpty()) { - serializer.append("##### participations \n"); + + serializer.append("##### "); + serializer.append(I18n.t("participations")); + serializer.appendNewLine(); for(Participation participation:data.getParticipations()) { serializer.append(participation); serializer.appendNewLine(); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java index 6ed17e0ee..3740419f2 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java @@ -16,7 +16,7 @@ public void serialize(FeederAuditDetails data, RmToMarkdownSerializer serializer } serializer.appendIfNotNull(I18n.t("Audit provider"), data.getProvider()); if(data.getOtherDetails() != null) { - serializer.appendWithHeaderIfNotNull("##### ", "other details", data.getOtherDetails()); + serializer.appendWithHeaderIfNotNull("##### ", I18n.t("other details"), data.getOtherDetails()); } } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java index 4f2bd9a72..620e447f1 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java @@ -3,15 +3,16 @@ import com.nedap.archie.rm.datavalues.DvBoolean; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToMarkdownSerializer; +import org.openehr.utils.message.I18n; public class DvBooleanSerializer implements RmSerializer { @Override public void serialize(DvBoolean data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { - serializer.append("data niet gevuld"); + serializer.append(I18n.t("no value")); return; } - serializer.append(data.getValue() ? "Ja" : "Nee"); + serializer.append(data.getValue() ? I18n.t("Yes") :I18n.t("No")); } @Override diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java index 290ee63eb..283facd0a 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java @@ -3,12 +3,13 @@ import com.nedap.archie.rm.datavalues.quantity.DvCount; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToMarkdownSerializer; +import org.openehr.utils.message.I18n; public class DvCountSerializer implements RmSerializer { @Override public void serialize(DvCount data, RmToMarkdownSerializer serializer) { if(data.getMagnitude() == null) { - serializer.append("data niet gevuld"); + serializer.append(I18n.t("no magnitude")); return; } serializer.append(Long.toString(data.getMagnitude())); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java index cea0dd17c..d8507e157 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java @@ -14,7 +14,7 @@ public class DvDateSerializer implements RmSerializer { @Override public void serialize(DvDate data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { - serializer.append("data niet gevuld"); + serializer.append(I18n.t("no value")); return; } serializer.append(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(I18n.getCurrentLocale()) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java index 1160d6c1f..30ced29ab 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java @@ -15,7 +15,7 @@ public class DvDateTimeSerializer implements RmSerializer { @Override public void serialize(DvDateTime data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { - serializer.append("data niet gevuld"); + serializer.append(I18n.t("no value")); return; } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java index dc252a017..e55e8b16f 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java @@ -4,6 +4,7 @@ import com.nedap.archie.rm.datavalues.quantity.datetime.DvDuration; import com.nedap.archie.text.RmSerializer; import com.nedap.archie.text.RmToMarkdownSerializer; +import org.openehr.utils.message.I18n; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; @@ -12,7 +13,7 @@ public class DvDurationSerializer implements RmSerializer { @Override public void serialize(DvDuration data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { - serializer.append("data niet gevuld"); + serializer.append(I18n.t("no value")); return; } serializer.append(DateTimeSerializerFormatters.serializeDuration(data.getValue())); diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java index 050b27efd..c054db539 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java @@ -9,7 +9,7 @@ public class DvQuantitySerializer implements RmSerializer { @Override public void serialize(DvQuantity data, RmToMarkdownSerializer serializer) { if(data.getMagnitude() == null) { - serializer.append(I18n.t("No data entered")); + serializer.append(I18n.t("no magnitude")); } else { serializer.append(Double.toString(data.getMagnitude())); } diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java index f4f0db661..cdc5eebeb 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java @@ -14,7 +14,7 @@ public class DvTimeSerializer implements RmSerializer { @Override public void serialize(DvTime data, RmToMarkdownSerializer serializer) { if(data.getValue() == null) { - serializer.append("data niet gevuld"); + serializer.append(I18n.t("no value")); return; } serializer.append(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT).withLocale(I18n.getCurrentLocale()) diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java index 2f561ebd9..b1a8e85d1 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java @@ -8,7 +8,8 @@ public class PartySelfSerializer implements RmSerializer { @Override public void serialize(PartySelf data, RmToMarkdownSerializer serializer) { - serializer.append(I18n.t("The person themselves\n")); + serializer.append(I18n.t("The person themselves ")); + serializer.appendNewLine(); } @Override From ff06bb3841b7df70a97069fcbf451ecf71423204 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Thu, 31 Aug 2023 14:55:42 +0200 Subject: [PATCH 18/20] Make translation files up to date --- i18n/po/i18n_en.po | 240 +++++++++++++++++++++++++++++++++++++------- i18n/po/i18n_nl.po | 242 ++++++++++++++++++++++++++++++++++++++------- i18n/po/keys.pot | 240 +++++++++++++++++++++++++++++++++++++------- 3 files changed, 623 insertions(+), 99 deletions(-) diff --git a/i18n/po/i18n_en.po b/i18n/po/i18n_en.po index a4c67a452..957fe0ccd 100644 --- a/i18n/po/i18n_en.po +++ b/i18n/po/i18n_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-04-21 13:45+0200\n" +"POT-Creation-Date: 2023-08-31 14:55+0200\n" "PO-Revision-Date: \n" "Last-Translator: Pieter Bos \n" "Language-Team: \n" @@ -21,7 +21,7 @@ msgstr "" msgid "A cardinality must have an interval - in this case it is null" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:76 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:81 msgid "A closed archetype slot cannot have its includes or excludes assertions modified" msgstr "" @@ -33,20 +33,20 @@ msgstr "" msgid "A redefined value set can only be a subset of its parent value set, nothing can be added" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:76 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:75 msgid "A specialised boolean constraint cannot add a constraint not in its parent" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:71 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:70 msgid "A specialised boolean constraint cannot include the same number of more constraints than its parent" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:217 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:222 #, java-format msgid "A specialized archetype slot must have the same id as the parent id {0}, but it was {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:102 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:107 #, java-format msgid "A {0} cannot specialize a {1}" msgstr "" @@ -60,11 +60,15 @@ msgstr "" msgid "An archetype slot was used in the archetype, but no archetype id was present in the data." msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:320 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:325 #, java-format msgid "An object with the new node id {0} cannot be prohibited" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java:15 +msgid "Archetype for action" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/VariousStructureValidation.java:65 #, java-format msgid "Archetype referenced in use_archetype points to class {0}, which does not exist in this reference model" @@ -121,12 +125,12 @@ msgstr "" msgid "Attribute has {0} occurrences, but must be {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:158 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:163 #, java-format msgid "Attribute tuple with members {0} does not conform to parent attribute tuple" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:167 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:172 #, java-format msgid "Attribute {0} is a non-tuple attribute in the parent archetype, but a tuple attribute in the current archetype. That is not allowed" msgstr "" @@ -147,16 +151,20 @@ msgstr "" msgid "Attribute {0}.{1} cannot contain type {2}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:17 +msgid "Audit provider" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:92 msgid "BMM Schema load error" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:284 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:289 #, java-format msgid "C_OBJECT in this archetype with class {0} is prohibited, which means its class must be the same as parent type {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:288 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:293 #, java-format msgid "C_OBJECT in this archetype with node id {0} is prohibited, which means its node id must be the same as parent {1}" msgstr "" @@ -166,7 +174,7 @@ msgstr "" msgid "C_OBJECT with RM type {0} must have a node id" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:65 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:70 msgid "Cannot redefine a closed archetype slot" msgstr "" @@ -174,6 +182,10 @@ msgstr "" msgid "Cardinality must have an interval present, but it was null" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:13 +msgid "Care flow step" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/CodeValidation.java:76 #, java-format msgid "Code {0} from C_TERMINOLOGY_CODE constraint is not defined in the terminology" @@ -195,16 +207,33 @@ msgstr "" msgid "Code {0} is in the terminology, but not used in the archetype" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:145 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java:15 +msgid "Composer" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:150 #, java-format msgid "Conformance error: {0}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:54 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java:22 +msgid "Context" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:59 #, java-format msgid "Could not find parent object for {0} but it should have been prechecked. Could you report this as a bug?" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:14 +msgid "Current state" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:14 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java:14 +msgid "Description" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/DefinitionStructureValidation.java:67 #, java-format msgid "Differential path must point to a C_ATTRIBUTE in the flat parent, but it pointed instead to a {0}" @@ -238,6 +267,10 @@ msgstr "" msgid "EC Object file not valid" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:15 +msgid "End time" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/ValidationMessage.java:61 msgid "Error" msgstr "" @@ -254,6 +287,18 @@ msgid "" "{4}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java:22 +msgid "Expiry time" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java:19 +msgid "Feeder system audit" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:11 +msgid "Function of participant" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicTerminologyValidation.java:40 #, java-format msgid "Id code {0} in terminology is not a valid term code, should be id, ac or at, followed by digits" @@ -275,6 +320,10 @@ msgstr "" msgid "Incorrect root node id {0}: it must match the specialization depth of the archetype, which is {1}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:16 +msgid "Instruction details" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidator.java:131 #, java-format msgid "Invariant {0} failed on type " @@ -285,6 +334,19 @@ msgstr "" msgid "Language {0} is defined in the translations, but is not present in the terminology" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:13 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:12 +msgid "Location" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:11 +msgid "Magnitude status" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java:14 +msgid "Meaning" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:49 #, java-format msgid "Merged schema {0} into schema {1}" @@ -295,6 +357,10 @@ msgstr "" msgid "Message at {0} ({1}): {2}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:12 +msgid "Mode of participant" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:11 #, java-format msgid "Multiple values for Primitive Object constraint {0}: {1}" @@ -305,6 +371,15 @@ msgstr "" msgid "Multiple values for Tuple constraint {0}: {1}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java:12 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java:12 +msgid "Name" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:15 +msgid "No" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:55 msgid "No ''rm_schemas_load_list'' config setting found; attempting to load all schemas (change via Tools>Options)" msgstr "" @@ -319,7 +394,11 @@ msgstr "" msgid "No matching constraint found in parent for contraint {0}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:238 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java:19 +msgid "No value. Reason: " +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:243 #, java-format msgid "Node ID {0} specialization depth does not conform to the archetype specialization depth {1}" msgstr "" @@ -329,17 +408,17 @@ msgstr "" msgid "Node id {0} already used in path {1}" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:282 +#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:281 #, java-format msgid "Node id {0} does not conform to {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:294 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:299 #, java-format msgid "Node id {0} is not valid here" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:299 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:304 #, java-format msgid "Node id {0} is not valid here because it redefines an object illegally" msgstr "" @@ -349,6 +428,14 @@ msgstr "" msgid "Node id {0} is used in the archetype, but missing in the terminology" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:12 +msgid "Normal range" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:13 +msgid "Normal status" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:10 #, java-format msgid "Object does not match tuple: {0}" @@ -359,7 +446,7 @@ msgstr "" msgid "Object should be type {0}, but was {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:128 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:133 #, java-format msgid "Object with node id {0} should be specialized before excluding the parent node" msgstr "" @@ -387,7 +474,19 @@ msgstr "" msgid "Original language {0} is not defined in the terminology" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:34 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:11 +msgid "Originating system" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java:14 +msgid "Originating system audit" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:16 +msgid "Other Reference ranges" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:39 #, java-format msgid "Parent archetype {0} not found or can not be flattened" msgstr "" @@ -397,10 +496,19 @@ msgstr "" msgid "Parent constraint contains no interval that fully contains {0}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:14 +msgid "Performer" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:70 msgid "Primitive object specialisation validation failed" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java:21 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:15 +msgid "Protocol" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:64 #, java-format msgid "RM Release version {0} is an invalid format for a version, should be x.x.x-(rc|alpha(x)?)?" @@ -515,6 +623,10 @@ msgstr "" msgid "Reference model schema(s) {0} specified in options not valid or not found in schema directories" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java:13 +msgid "Relationship" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:37 #, java-format msgid "Resource description language {0} has an incorrect key: {1}" @@ -680,7 +792,11 @@ msgstr "" msgid "Schema {0} top-level sibling package definitions cannot include a package which is the child of another" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:312 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:16 +msgid "Setting" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:317 #, java-format msgid "Sibling order {0} refers to missing node id" msgstr "" @@ -689,6 +805,19 @@ msgstr "" msgid "Single valued attributes can not have a cardinality" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:14 +msgid "Start time" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:17 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:12 +msgid "State transition" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:17 +msgid "State transition reason" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:72 #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:73 msgid "Syntax error: existence must be one of 0..0, 0..1, or 1..1" @@ -827,6 +956,10 @@ msgstr "" msgid "The path {0} referenced in the rm visibility does not exist in the flat archetype" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java:11 +msgid "The person themselves " +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/aom/CPrimitiveObject.java:134 #, java-format msgid "The primitive object of type {0} does not conform null" @@ -850,7 +983,7 @@ msgstr "" msgid "The specialisation depth of the archetypes must be one greater than the specialisation depth of the parent archetype" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:227 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:232 #, java-format msgid "The use_archetype with type {0} does not match the archetype slow (allow_archetype) with type {1}" msgstr "" @@ -873,6 +1006,14 @@ msgstr "" msgid "The value {0} must be {1}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:13 +msgid "Time" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java:30 +msgid "Time of observation" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:49 #, java-format msgid "Translation details language {0} has an incorrect key: {1}" @@ -888,6 +1029,14 @@ msgstr "" msgid "Type name {0} does not exist" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:19 +msgid "Units display name" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:17 +msgid "Units system" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:54 #, java-format msgid "Unknown Reference Model ''{0}'' mentioned in ''rm_schemas_load_list'' config setting (ignored)" @@ -906,18 +1055,18 @@ msgstr "" msgid "Use_archetype points to type {0}, which is not conformant for type {1} of the archetype root used" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:207 -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:234 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:212 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:239 #, java-format msgid "Use_archetype references archetype id {0}, but no archetype was found" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:201 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:206 #, java-format msgid "Use_archetype specializes an archetype root pointing to {0}, but the archetype {1} is not a descendant" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:242 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:247 #, java-format msgid "Use_archetype {0} does not match the expression of the archetype slot it specialized in the parent" msgstr "" @@ -945,6 +1094,10 @@ msgstr "" msgid "Warning" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:15 +msgid "Yes" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:49 msgid "achetype code specialisation level validity. Each archetype term ('at' code) and constraint code ('ac' code) used in the archetype definition section must have a specialisation level no greater than the specialisation level of the archetype." msgstr "" @@ -1032,22 +1185,22 @@ msgstr "" msgid "cardinality/occurrences upper bound validity: where a cardinality with a finite upper bound is stated on an attribute, for all immediate child objects for which an occurrences constraint is stated, the occurrences must either have an open upper bound (i.e. n..*) which is interpreted as the maximum value allowed within the cardinality, or else a finite upper bound which is ⇐ the cardinality upper bound." msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:235 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:234 #, java-format msgid "child CTerminology code contains more than one constraint, that is not valid. Constraints are: {0}" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:280 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:279 #, java-format msgid "child terminology constraint value code {0} does not conform to parent constraint with value code {0}" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:264 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:263 #, java-format msgid "child terminology constraint value code {0} is not contained in {1}, or a direct specialization of one of its values" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:260 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:259 #, java-format msgid "child terminology constraint value set code {0} does not conform to parent constraint with value set code {1}" msgstr "" @@ -1103,6 +1256,19 @@ msgstr "" msgid "less than {0}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:12 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java:12 +msgid "no magnitude" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java:17 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:12 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java:17 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java:18 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java:16 +msgid "no value" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:47 msgid "node id must be defined in flat terminology" msgstr "" @@ -1127,11 +1293,19 @@ msgstr "" msgid "original language specified. An original_language section containing the meta-data of the original authoring language must exist." msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:238 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:19 +msgid "other details" +msgstr "" + +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:237 #, java-format msgid "parent CTerminology code contains more than one constraint, that is not valid. Constraints are: {0}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:21 +msgid "participations" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:52 msgid "resource detail key does not match resource detail item language" msgstr "" @@ -1208,7 +1382,7 @@ msgstr "" msgid "specialised object node occurrences validity: the sum of the lower occurrences and the sum of the upper occurrences of all objects redefining a node in a specialised archetype, must be contained in the occurrences interval of the corresponding node in the flat parent archetype." msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:244 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:243 #, java-format msgid "specialized CTerminology code constraint status {0} is wider more than parent contraint status {1}" msgstr "" @@ -1230,7 +1404,7 @@ msgid "translations key does not match translations item language" msgstr "" #: ../aom/src/main/java/com/nedap/archie/aom/CPrimitiveObject.java:130 -#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:285 +#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:284 #, java-format msgid "type name {0} does not conform to {1}" msgstr "" diff --git a/i18n/po/i18n_nl.po b/i18n/po/i18n_nl.po index 2d1fed2d5..9e84195b8 100644 --- a/i18n/po/i18n_nl.po +++ b/i18n/po/i18n_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-04-21 13:45+0200\n" +"POT-Creation-Date: 2023-08-31 14:55+0200\n" "PO-Revision-Date: \n" "Last-Translator: Pieter Bos \n" "Language-Team: \n" @@ -21,7 +21,7 @@ msgstr "" msgid "A cardinality must have an interval - in this case it is null" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:76 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:81 msgid "A closed archetype slot cannot have its includes or excludes assertions modified" msgstr "Een gesloten archetype slot kan geen wijzigingen meer bevatten aan de includes en excludes-onderdelen" @@ -33,20 +33,20 @@ msgstr "In dit attribuut is een differential path gebruikt, maar dat is niet toe msgid "A redefined value set can only be a subset of its parent value set, nothing can be added" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:76 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:75 msgid "A specialised boolean constraint cannot add a constraint not in its parent" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:71 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:70 msgid "A specialised boolean constraint cannot include the same number of more constraints than its parent" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:217 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:222 #, java-format msgid "A specialized archetype slot must have the same id as the parent id {0}, but it was {1}" msgstr "Een specialiserend archetype slot moet dezelfde id hebben als in het gespecialiseerde archetype {0}, maar het was {1}" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:102 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:107 #, java-format msgid "A {0} cannot specialize a {1}" msgstr "Een {0} kan niet een {1} specialiseren" @@ -61,11 +61,15 @@ msgstr "ADL-versie {0} is in een incorrect formaat. Dit zou een versie in het fo msgid "An archetype slot was used in the archetype, but no archetype id was present in the data." msgstr "Archetype met id {0} is gebruikt met use_archetype, maar het archetype kon niet worden gevonden" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:320 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:325 #, java-format msgid "An object with the new node id {0} cannot be prohibited" msgstr "Een object met een nieuw node id {0} mag geen occurrences van maximaal 0 hebben" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java:15 +msgid "Archetype for action" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/VariousStructureValidation.java:65 #, java-format msgid "Archetype referenced in use_archetype points to class {0}, which does not exist in this reference model" @@ -122,12 +126,12 @@ msgstr "De existence {0} van dit attribuut komt niet overeen met die de existenc msgid "Attribute has {0} occurrences, but must be {1}" msgstr "Attribuut komt {0} keer voor, maar dit moet {1} zijn" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:158 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:163 #, java-format msgid "Attribute tuple with members {0} does not conform to parent attribute tuple" msgstr "Atribuut-tupel met members {0} komt niet overeen met attribuut-tupel dat gespecializeerd wordt" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:167 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:172 #, java-format msgid "Attribute {0} is a non-tuple attribute in the parent archetype, but a tuple attribute in the current archetype. That is not allowed" msgstr "Attribuut {0} is geen tuple in het archetype dat gespecializeerd wordt, maar wel een tuple attribuut in het huidige archetype. Dat is niet toegestaan" @@ -148,16 +152,20 @@ msgstr "Attribuut {0}.{1} kan niet worden beperkt met een {2}" msgid "Attribute {0}.{1} cannot contain type {2}" msgstr "Attribuut {0}.{1} mag geen type {2} bevatten" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:17 +msgid "Audit provider" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:92 msgid "BMM Schema load error" msgstr "Fout bij het laden van een BMM schema" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:284 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:289 #, java-format msgid "C_OBJECT in this archetype with class {0} is prohibited, which means its class must be the same as parent type {1}" msgstr "Het C_OBJECT in dit archetype met klasse {0} heeft 0 als maximum occurrences (prohibited), maar heeft niet dezelfde klasse als het C_OBJECT dat gespecializeerd wordt: {1}" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:288 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:293 #, java-format msgid "C_OBJECT in this archetype with node id {0} is prohibited, which means its node id must be the same as parent {1}" msgstr "Het C_OBJECT in dit archetype met node id {0} heeft 0 als maximum occurrences (prohibited), maar het node id is anders dan die van het C_OBJECT dat gespecialiseerd wordt {1}" @@ -167,7 +175,7 @@ msgstr "Het C_OBJECT in dit archetype met node id {0} heeft 0 als maximum occurr msgid "C_OBJECT with RM type {0} must have a node id" msgstr "C_OBJECT met RM type {0} moet een node id hebben, maar heeft dat niet" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:65 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:70 msgid "Cannot redefine a closed archetype slot" msgstr "Een gesloten archetype slot kan niet worden hergedefinieerd" @@ -175,6 +183,10 @@ msgstr "Een gesloten archetype slot kan niet worden hergedefinieerd" msgid "Cardinality must have an interval present, but it was null" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:13 +msgid "Care flow step" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/CodeValidation.java:76 #, java-format msgid "Code {0} from C_TERMINOLOGY_CODE constraint is not defined in the terminology" @@ -196,16 +208,33 @@ msgstr "Code {0} van deze C_TERMINOLOGY_CODE bestaat niet in de terminology" msgid "Code {0} is in the terminology, but not used in the archetype" msgstr "Code {0} uit de terminologie is niet gebruikt in de definitie van het archetype" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:145 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java:15 +msgid "Composer" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:150 #, java-format msgid "Conformance error: {0}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:54 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java:22 +msgid "Context" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:59 #, java-format msgid "Could not find parent object for {0} but it should have been prechecked. Could you report this as a bug?" msgstr "Kan parent object voor {0} niet vinden. Deze melding is waarschijnlijk een bug, zou u dat kunnen melden?" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:14 +msgid "Current state" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:14 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java:14 +msgid "Description" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/DefinitionStructureValidation.java:67 #, java-format msgid "Differential path must point to a C_ATTRIBUTE in the flat parent, but it pointed instead to a {0}" @@ -239,6 +268,10 @@ msgstr "Dubbele instantie van reference model {0} gevonden. Het originele schema msgid "EC Object file not valid" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:15 +msgid "End time" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/ValidationMessage.java:61 msgid "Error" msgstr "Fout" @@ -255,6 +288,18 @@ msgid "" "{4}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java:22 +msgid "Expiry time" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java:19 +msgid "Feeder system audit" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:11 +msgid "Function of participant" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicTerminologyValidation.java:40 #, java-format msgid "Id code {0} in terminology is not a valid term code, should be id, ac or at, followed by digits" @@ -276,6 +321,10 @@ msgstr "In het attribuut tupel zijn {0} members opgenomen, maar het primitive tu msgid "Incorrect root node id {0}: it must match the specialization depth of the archetype, which is {1}" msgstr "Fout in root node id {0}: Dit moet kloppen met de specialization depth van het archetype, {1}" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:16 +msgid "Instruction details" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidator.java:131 #, java-format msgid "Invariant {0} failed on type " @@ -286,6 +335,21 @@ msgstr "" msgid "Language {0} is defined in the translations, but is not present in the terminology" msgstr "Taal {0} is opgenomen bij de vertalingen, maar ontbreekt in de terminologie" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:13 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:12 +#, fuzzy +msgid "Location" +msgstr "Documentatie" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:11 +msgid "Magnitude status" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java:14 +#, fuzzy +msgid "Meaning" +msgstr "Waarschuwing" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:49 #, java-format msgid "Merged schema {0} into schema {1}" @@ -296,6 +360,10 @@ msgstr "Schema {0} samengevoegd in schema {1}" msgid "Message at {0} ({1}): {2}" msgstr "Bericht bij {0} ({1}): {2}" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:12 +msgid "Mode of participant" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:11 #, java-format msgid "Multiple values for Primitive Object constraint {0}: {1}" @@ -306,6 +374,15 @@ msgstr "Meerdere waarden voor Primitive Object constraint {0}: {1}" msgid "Multiple values for Tuple constraint {0}: {1}" msgstr "Meerdere waarden voor Tuple constraint {0}: {1}" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java:12 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java:12 +msgid "Name" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:15 +msgid "No" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:55 msgid "No ''rm_schemas_load_list'' config setting found; attempting to load all schemas (change via Tools>Options)" msgstr "" @@ -320,7 +397,11 @@ msgstr "Geen referentiemodel-schema gevonden voor package “{0}”" msgid "No matching constraint found in parent for contraint {0}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:238 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java:19 +msgid "No value. Reason: " +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:243 #, java-format msgid "Node ID {0} specialization depth does not conform to the archetype specialization depth {1}" msgstr "De specialization depth van node id {0} klopt niet bij de specialization depth {1} van het archetype" @@ -330,17 +411,17 @@ msgstr "De specialization depth van node id {0} klopt niet bij de specialization msgid "Node id {0} already used in path {1}" msgstr "Node id {0} is al gebruikt in pad {1}" -#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:282 +#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:281 #, fuzzy, java-format msgid "Node id {0} does not conform to {1}" msgstr "Node id {0} klopt niet bij de node id {1} uit het archetype dat gespecialiseerd wordt" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:294 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:299 #, java-format msgid "Node id {0} is not valid here" msgstr "Node id {0} is hier niet geldig" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:299 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:304 #, java-format msgid "Node id {0} is not valid here because it redefines an object illegally" msgstr "Node id {0} is hiet niet geldig omdat het een object herdefinieert waar dat niet is toegestaan" @@ -350,6 +431,14 @@ msgstr "Node id {0} is hiet niet geldig omdat het een object herdefinieert waar msgid "Node id {0} is used in the archetype, but missing in the terminology" msgstr "Node id {0} is gebruikt in het archetype, maar ontbreekt in de terminologie" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:12 +msgid "Normal range" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:13 +msgid "Normal status" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:10 #, java-format msgid "Object does not match tuple: {0}" @@ -360,7 +449,7 @@ msgstr "Object komt niet overeen met tupel: {0}" msgid "Object should be type {0}, but was {1}" msgstr "Object moet van type {0} zijn, maar is van type {1}" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:128 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:133 #, java-format msgid "Object with node id {0} should be specialized before excluding the parent node" msgstr "Object met node id {0} moet gespecialiseerd worden voordat de parent node excluded wordt" @@ -388,7 +477,19 @@ msgstr "Originele taal bestaat niet in de terminologie" msgid "Original language {0} is not defined in the terminology" msgstr "Originele taal {0} ontbreekt in de terminologie" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:34 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:11 +msgid "Originating system" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java:14 +msgid "Originating system audit" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:16 +msgid "Other Reference ranges" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:39 #, java-format msgid "Parent archetype {0} not found or can not be flattened" msgstr "Parent archetype {0} niet gevonden, of het bevat een fout waardoor het niet kan worden geflattened" @@ -398,10 +499,19 @@ msgstr "Parent archetype {0} niet gevonden, of het bevat een fout waardoor het n msgid "Parent constraint contains no interval that fully contains {0}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:14 +msgid "Performer" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:70 msgid "Primitive object specialisation validation failed" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java:21 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:15 +msgid "Protocol" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:64 #, java-format msgid "RM Release version {0} is an invalid format for a version, should be x.x.x-(rc|alpha(x)?)?" @@ -516,6 +626,10 @@ msgstr "" msgid "Reference model schema(s) {0} specified in options not valid or not found in schema directories" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java:13 +msgid "Relationship" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:37 #, java-format msgid "Resource description language {0} has an incorrect key: {1}" @@ -681,7 +795,11 @@ msgstr "" msgid "Schema {0} top-level sibling package definitions cannot include a package which is the child of another" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:312 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:16 +msgid "Setting" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:317 #, java-format msgid "Sibling order {0} refers to missing node id" msgstr "Sibling order {0} verwijst naar een ontbrekende node id" @@ -690,6 +808,19 @@ msgstr "Sibling order {0} verwijst naar een ontbrekende node id" msgid "Single valued attributes can not have a cardinality" msgstr "Attributen die maar één waarde kunnen bevatten mogen geen cardinaliteit hebben" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:14 +msgid "Start time" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:17 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:12 +msgid "State transition" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:17 +msgid "State transition reason" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:72 #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:73 msgid "Syntax error: existence must be one of 0..0, 0..1, or 1..1" @@ -828,6 +959,10 @@ msgstr "Het pad {0} gebruikt in de annotations bestaat niet in het flattened arc msgid "The path {0} referenced in the rm visibility does not exist in the flat archetype" msgstr "Het pad {0} gebruikt in de annotations bestaat niet in het flattened archetype" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java:11 +msgid "The person themselves " +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/aom/CPrimitiveObject.java:134 #, java-format msgid "The primitive object of type {0} does not conform null" @@ -851,7 +986,7 @@ msgstr "De specialisation depth van het archetype, {0}, moet één groter zijn d msgid "The specialisation depth of the archetypes must be one greater than the specialisation depth of the parent archetype" msgstr "De specialisation depth van het archetype moet één groter zijn dan die van het gespecialiseerde archetype" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:227 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:232 #, java-format msgid "The use_archetype with type {0} does not match the archetype slow (allow_archetype) with type {1}" msgstr "Use_archetype met {0} klopt niet met het archetype slot met type {1} uit het gespecialiseerde archetype" @@ -874,6 +1009,14 @@ msgstr "De waarde {0} moet aan een van de volgende voorwaarden voldoen:" msgid "The value {0} must be {1}" msgstr "De waarde {0} moet {1} zijn" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:13 +msgid "Time" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java:30 +msgid "Time of observation" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:49 #, java-format msgid "Translation details language {0} has an incorrect key: {1}" @@ -889,6 +1032,14 @@ msgstr "Onderdeel van tupel {0} is geen attribuut van type {1}" msgid "Type name {0} does not exist" msgstr "Type met naam {0} bestaat niet" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:19 +msgid "Units display name" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:17 +msgid "Units system" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:54 #, java-format msgid "Unknown Reference Model ''{0}'' mentioned in ''rm_schemas_load_list'' config setting (ignored)" @@ -907,18 +1058,18 @@ msgstr "" msgid "Use_archetype points to type {0}, which is not conformant for type {1} of the archetype root used" msgstr "Use_archetype verwijst naar een pad met type {0}. Dit komt niet overeen met type {1} zoals opgegeven in use_archetype" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:207 -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:234 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:212 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:239 #, java-format msgid "Use_archetype references archetype id {0}, but no archetype was found" msgstr "Use_archetype verwijst naar archetype met id {0}, maar dit archetype kon niet gevonden worden" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:201 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:206 #, java-format msgid "Use_archetype specializes an archetype root pointing to {0}, but the archetype {1} is not a descendant" msgstr "Use_archetype {1} specialiseert een andere use_archetype die verwijst naar {0}. Maar het archeytpe {1} specialiseert niet {0}" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:242 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:247 #, java-format msgid "Use_archetype {0} does not match the expression of the archetype slot it specialized in the parent" msgstr "Use_archetype {0} komt niet overeen met de restricties van het archetype slot dat het specialiseert" @@ -946,6 +1097,10 @@ msgstr "Use_node, hergebruik van een deel van het archetype, verwijst naar type msgid "Warning" msgstr "Waarschuwing" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:15 +msgid "Yes" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:49 msgid "achetype code specialisation level validity. Each archetype term ('at' code) and constraint code ('ac' code) used in the archetype definition section must have a specialisation level no greater than the specialisation level of the archetype." msgstr "" @@ -1033,22 +1188,22 @@ msgstr "" msgid "cardinality/occurrences upper bound validity: where a cardinality with a finite upper bound is stated on an attribute, for all immediate child objects for which an occurrences constraint is stated, the occurrences must either have an open upper bound (i.e. n..*) which is interpreted as the maximum value allowed within the cardinality, or else a finite upper bound which is ⇐ the cardinality upper bound." msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:235 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:234 #, java-format msgid "child CTerminology code contains more than one constraint, that is not valid. Constraints are: {0}" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:280 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:279 #, fuzzy, java-format msgid "child terminology constraint value code {0} does not conform to parent constraint with value code {0}" msgstr "De cardinaliteit {0} van dit attribuut komt niet overeen met de cardinaliteit van het attribuut dat gespecializeerd wordt: {1}" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:264 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:263 #, java-format msgid "child terminology constraint value code {0} is not contained in {1}, or a direct specialization of one of its values" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:260 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:259 #, fuzzy, java-format msgid "child terminology constraint value set code {0} does not conform to parent constraint with value set code {1}" msgstr "De cardinaliteit {0} van dit attribuut komt niet overeen met de cardinaliteit van het attribuut dat gespecializeerd wordt: {1}" @@ -1104,6 +1259,19 @@ msgstr "" msgid "less than {0}" msgstr "kleiner dan {0}" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:12 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java:12 +msgid "no magnitude" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java:17 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:12 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java:17 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java:18 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java:16 +msgid "no value" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:47 msgid "node id must be defined in flat terminology" msgstr "node id ontbreekt in de flat terminologie" @@ -1128,11 +1296,19 @@ msgstr "" msgid "original language specified. An original_language section containing the meta-data of the original authoring language must exist." msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:238 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:19 +msgid "other details" +msgstr "" + +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:237 #, java-format msgid "parent CTerminology code contains more than one constraint, that is not valid. Constraints are: {0}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:21 +msgid "participations" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:52 msgid "resource detail key does not match resource detail item language" msgstr "" @@ -1209,7 +1385,7 @@ msgstr "" msgid "specialised object node occurrences validity: the sum of the lower occurrences and the sum of the upper occurrences of all objects redefining a node in a specialised archetype, must be contained in the occurrences interval of the corresponding node in the flat parent archetype." msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:244 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:243 #, java-format msgid "specialized CTerminology code constraint status {0} is wider more than parent contraint status {1}" msgstr "" @@ -1231,7 +1407,7 @@ msgid "translations key does not match translations item language" msgstr "" #: ../aom/src/main/java/com/nedap/archie/aom/CPrimitiveObject.java:130 -#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:285 +#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:284 #, fuzzy, java-format msgid "type name {0} does not conform to {1}" msgstr "Type {0} klopt niet met type {1} uit het gespecialiseerde archetype" diff --git a/i18n/po/keys.pot b/i18n/po/keys.pot index 317d2c55c..530cb071d 100644 --- a/i18n/po/keys.pot +++ b/i18n/po/keys.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-04-21 13:45+0200\n" +"POT-Creation-Date: 2023-08-31 14:55+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -26,7 +26,7 @@ msgstr "" msgid "A cardinality must have an interval - in this case it is null" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:76 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:81 msgid "A closed archetype slot cannot have its includes or excludes assertions modified" msgstr "" @@ -38,20 +38,20 @@ msgstr "" msgid "A redefined value set can only be a subset of its parent value set, nothing can be added" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:76 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:75 msgid "A specialised boolean constraint cannot add a constraint not in its parent" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:71 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CBoolean.java:70 msgid "A specialised boolean constraint cannot include the same number of more constraints than its parent" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:217 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:222 #, java-format msgid "A specialized archetype slot must have the same id as the parent id {0}, but it was {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:102 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:107 #, java-format msgid "A {0} cannot specialize a {1}" msgstr "" @@ -65,11 +65,15 @@ msgstr "" msgid "An archetype slot was used in the archetype, but no archetype id was present in the data." msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:320 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:325 #, java-format msgid "An object with the new node id {0} cannot be prohibited" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java:15 +msgid "Archetype for action" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/VariousStructureValidation.java:65 #, java-format msgid "Archetype referenced in use_archetype points to class {0}, which does not exist in this reference model" @@ -126,12 +130,12 @@ msgstr "" msgid "Attribute has {0} occurrences, but must be {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:158 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:163 #, java-format msgid "Attribute tuple with members {0} does not conform to parent attribute tuple" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:167 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:172 #, java-format msgid "Attribute {0} is a non-tuple attribute in the parent archetype, but a tuple attribute in the current archetype. That is not allowed" msgstr "" @@ -152,16 +156,20 @@ msgstr "" msgid "Attribute {0}.{1} cannot contain type {2}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:17 +msgid "Audit provider" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:92 msgid "BMM Schema load error" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:284 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:289 #, java-format msgid "C_OBJECT in this archetype with class {0} is prohibited, which means its class must be the same as parent type {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:288 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:293 #, java-format msgid "C_OBJECT in this archetype with node id {0} is prohibited, which means its node id must be the same as parent {1}" msgstr "" @@ -171,7 +179,7 @@ msgstr "" msgid "C_OBJECT with RM type {0} must have a node id" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:65 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:70 msgid "Cannot redefine a closed archetype slot" msgstr "" @@ -179,6 +187,10 @@ msgstr "" msgid "Cardinality must have an interval present, but it was null" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:13 +msgid "Care flow step" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/CodeValidation.java:76 #, java-format msgid "Code {0} from C_TERMINOLOGY_CODE constraint is not defined in the terminology" @@ -200,16 +212,33 @@ msgstr "" msgid "Code {0} is in the terminology, but not used in the archetype" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:145 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java:15 +msgid "Composer" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:150 #, java-format msgid "Conformance error: {0}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:54 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java:22 +msgid "Context" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:59 #, java-format msgid "Could not find parent object for {0} but it should have been prechecked. Could you report this as a bug?" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:14 +msgid "Current state" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:14 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java:14 +msgid "Description" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/DefinitionStructureValidation.java:67 #, java-format msgid "Differential path must point to a C_ATTRIBUTE in the flat parent, but it pointed instead to a {0}" @@ -243,6 +272,10 @@ msgstr "" msgid "EC Object file not valid" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:15 +msgid "End time" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/ValidationMessage.java:61 msgid "Error" msgstr "" @@ -259,6 +292,18 @@ msgid "" "{4}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java:22 +msgid "Expiry time" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java:19 +msgid "Feeder system audit" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:11 +msgid "Function of participant" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicTerminologyValidation.java:40 #, java-format msgid "Id code {0} in terminology is not a valid term code, should be id, ac or at, followed by digits" @@ -280,6 +325,10 @@ msgstr "" msgid "Incorrect root node id {0}: it must match the specialization depth of the archetype, which is {1}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:16 +msgid "Instruction details" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidator.java:131 #, java-format msgid "Invariant {0} failed on type " @@ -290,6 +339,19 @@ msgstr "" msgid "Language {0} is defined in the translations, but is not present in the terminology" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:13 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:12 +msgid "Location" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:11 +msgid "Magnitude status" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java:14 +msgid "Meaning" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:49 #, java-format msgid "Merged schema {0} into schema {1}" @@ -300,6 +362,10 @@ msgstr "" msgid "Message at {0} ({1}): {2}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:12 +msgid "Mode of participant" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:11 #, java-format msgid "Multiple values for Primitive Object constraint {0}: {1}" @@ -310,6 +376,15 @@ msgstr "" msgid "Multiple values for Tuple constraint {0}: {1}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java:12 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java:12 +msgid "Name" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:15 +msgid "No" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:55 msgid "No ''rm_schemas_load_list'' config setting found; attempting to load all schemas (change via Tools>Options)" msgstr "" @@ -324,7 +399,11 @@ msgstr "" msgid "No matching constraint found in parent for contraint {0}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:238 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java:19 +msgid "No value. Reason: " +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:243 #, java-format msgid "Node ID {0} specialization depth does not conform to the archetype specialization depth {1}" msgstr "" @@ -334,17 +413,17 @@ msgstr "" msgid "Node id {0} already used in path {1}" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:282 +#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:281 #, java-format msgid "Node id {0} does not conform to {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:294 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:299 #, java-format msgid "Node id {0} is not valid here" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:299 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:304 #, java-format msgid "Node id {0} is not valid here because it redefines an object illegally" msgstr "" @@ -354,6 +433,14 @@ msgstr "" msgid "Node id {0} is used in the archetype, but missing in the terminology" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:12 +msgid "Normal range" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:13 +msgid "Normal status" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:10 #, java-format msgid "Object does not match tuple: {0}" @@ -364,7 +451,7 @@ msgstr "" msgid "Object should be type {0}, but was {1}" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:128 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:133 #, java-format msgid "Object with node id {0} should be specialized before excluding the parent node" msgstr "" @@ -392,7 +479,19 @@ msgstr "" msgid "Original language {0} is not defined in the terminology" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:34 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:11 +msgid "Originating system" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java:14 +msgid "Originating system audit" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:16 +msgid "Other Reference ranges" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:39 #, java-format msgid "Parent archetype {0} not found or can not be flattened" msgstr "" @@ -402,10 +501,19 @@ msgstr "" msgid "Parent constraint contains no interval that fully contains {0}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:14 +msgid "Performer" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:70 msgid "Primitive object specialisation validation failed" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java:21 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:15 +msgid "Protocol" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:64 #, java-format msgid "RM Release version {0} is an invalid format for a version, should be x.x.x-(rc|alpha(x)?)?" @@ -520,6 +628,10 @@ msgstr "" msgid "Reference model schema(s) {0} specified in options not valid or not found in schema directories" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java:13 +msgid "Relationship" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:37 #, java-format msgid "Resource description language {0} has an incorrect key: {1}" @@ -685,7 +797,11 @@ msgstr "" msgid "Schema {0} top-level sibling package definitions cannot include a package which is the child of another" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:312 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:16 +msgid "Setting" +msgstr "" + +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:317 #, java-format msgid "Sibling order {0} refers to missing node id" msgstr "" @@ -694,6 +810,19 @@ msgstr "" msgid "Single valued attributes can not have a cardinality" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:14 +msgid "Start time" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:17 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:12 +msgid "State transition" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:17 +msgid "State transition reason" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:72 #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:73 msgid "Syntax error: existence must be one of 0..0, 0..1, or 1..1" @@ -832,6 +961,10 @@ msgstr "" msgid "The path {0} referenced in the rm visibility does not exist in the flat archetype" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java:11 +msgid "The person themselves " +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/aom/CPrimitiveObject.java:134 #, java-format msgid "The primitive object of type {0} does not conform null" @@ -855,7 +988,7 @@ msgstr "" msgid "The specialisation depth of the archetypes must be one greater than the specialisation depth of the parent archetype" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:227 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:232 #, java-format msgid "The use_archetype with type {0} does not match the archetype slow (allow_archetype) with type {1}" msgstr "" @@ -878,6 +1011,14 @@ msgstr "" msgid "The value {0} must be {1}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:13 +msgid "Time" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java:30 +msgid "Time of observation" +msgstr "" + #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:49 #, java-format msgid "Translation details language {0} has an incorrect key: {1}" @@ -893,6 +1034,14 @@ msgstr "" msgid "Type name {0} does not exist" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:19 +msgid "Units display name" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:17 +msgid "Units system" +msgstr "" + #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:54 #, java-format msgid "Unknown Reference Model ''{0}'' mentioned in ''rm_schemas_load_list'' config setting (ignored)" @@ -911,18 +1060,18 @@ msgstr "" msgid "Use_archetype points to type {0}, which is not conformant for type {1} of the archetype root used" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:207 -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:234 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:212 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:239 #, java-format msgid "Use_archetype references archetype id {0}, but no archetype was found" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:201 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:206 #, java-format msgid "Use_archetype specializes an archetype root pointing to {0}, but the archetype {1} is not a descendant" msgstr "" -#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:242 +#: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:247 #, java-format msgid "Use_archetype {0} does not match the expression of the archetype slot it specialized in the parent" msgstr "" @@ -950,6 +1099,10 @@ msgstr "" msgid "Warning" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:15 +msgid "Yes" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:49 msgid "achetype code specialisation level validity. Each archetype term ('at' code) and constraint code ('ac' code) used in the archetype definition section must have a specialisation level no greater than the specialisation level of the archetype." msgstr "" @@ -1037,22 +1190,22 @@ msgstr "" msgid "cardinality/occurrences upper bound validity: where a cardinality with a finite upper bound is stated on an attribute, for all immediate child objects for which an occurrences constraint is stated, the occurrences must either have an open upper bound (i.e. n..*) which is interpreted as the maximum value allowed within the cardinality, or else a finite upper bound which is ⇐ the cardinality upper bound." msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:235 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:234 #, java-format msgid "child CTerminology code contains more than one constraint, that is not valid. Constraints are: {0}" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:280 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:279 #, java-format msgid "child terminology constraint value code {0} does not conform to parent constraint with value code {0}" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:264 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:263 #, java-format msgid "child terminology constraint value code {0} is not contained in {1}, or a direct specialization of one of its values" msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:260 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:259 #, java-format msgid "child terminology constraint value set code {0} does not conform to parent constraint with value set code {1}" msgstr "" @@ -1108,6 +1261,19 @@ msgstr "" msgid "less than {0}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:12 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java:12 +msgid "no magnitude" +msgstr "" + +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java:17 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:12 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvTimeSerializer.java:17 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java:18 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java:16 +msgid "no value" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:47 msgid "node id must be defined in flat terminology" msgstr "" @@ -1132,11 +1298,19 @@ msgstr "" msgid "original language specified. An original_language section containing the meta-data of the original authoring language must exist." msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:238 +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:19 +msgid "other details" +msgstr "" + +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:237 #, java-format msgid "parent CTerminology code contains more than one constraint, that is not valid. Constraints are: {0}" msgstr "" +#: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:21 +msgid "participations" +msgstr "" + #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:52 msgid "resource detail key does not match resource detail item language" msgstr "" @@ -1213,7 +1387,7 @@ msgstr "" msgid "specialised object node occurrences validity: the sum of the lower occurrences and the sum of the upper occurrences of all objects redefining a node in a specialised archetype, must be contained in the occurrences interval of the corresponding node in the flat parent archetype." msgstr "" -#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:244 +#: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:243 #, java-format msgid "specialized CTerminology code constraint status {0} is wider more than parent contraint status {1}" msgstr "" @@ -1235,7 +1409,7 @@ msgid "translations key does not match translations item language" msgstr "" #: ../aom/src/main/java/com/nedap/archie/aom/CPrimitiveObject.java:130 -#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:285 +#: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:284 #, java-format msgid "type name {0} does not conform to {1}" msgstr "" From 7d6a367f1fc0ad9b4f29b319695a017195187e91 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Thu, 31 Aug 2023 15:15:32 +0200 Subject: [PATCH 19/20] Update i18n plus Dutch translation for most RM markdown serialization --- .../serializers/ParticipationSerializer.java | 2 +- i18n/.DS_Store | Bin 0 -> 6148 bytes i18n/po/i18n_en.po | 4 +- i18n/po/i18n_nl.mo | Bin 0 -> 25392 bytes i18n/po/i18n_nl.po | 118 ++-- i18n/po/keys.pot | 4 +- i18n/src/main/java/openehrArchie_nl.java | 612 ++++++++++-------- 7 files changed, 412 insertions(+), 328 deletions(-) create mode 100644 i18n/.DS_Store create mode 100644 i18n/po/i18n_nl.mo diff --git a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java index ac73e7fcf..0292644c2 100644 --- a/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java +++ b/archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java @@ -9,7 +9,7 @@ public class ParticipationSerializer implements RmSerializer { @Override public void serialize(Participation data, RmToMarkdownSerializer serializer) { serializer.appendIfNotNull(I18n.t("Function of participant"), data.getFunction()); - serializer.appendIfNotNull(I18n.t("Mode of participant"), data.getMode()); + serializer.appendIfNotNull(I18n.t("Mode of participation"), data.getMode()); serializer.appendIfNotNull(I18n.t("Time"), data.getTime()); serializer.appendIfNotNull(I18n.t("Performer"), data.getPerformer()); } diff --git a/i18n/.DS_Store b/i18n/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..18118d59b86d513832f8b55dc3495b3cc13053b2 GIT binary patch literal 6148 zcmeH~JqiLr422W55Nx)zoW=uqgF*BJUO-f=gcZboj_%8kg{!qJ@&d^>$xhhaSL|#= zL^qG~TBH+^Iov2K3j@#Z zl+PFAc_cmw6`%qmQNX?r1#Ya#7W7XCf{y^;3}rX0eU<==6~LNoK~!KGtzfjOk0Dm~ zcCh5Wnry*n7tP^A^Ui8h3{0b4v><_Lbudr?DlkxB8hK~u{|^3b{vWh3r2\n" "Language-Team: \n" @@ -358,7 +358,7 @@ msgid "Message at {0} ({1}): {2}" msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:12 -msgid "Mode of participant" +msgid "Mode of participation" msgstr "" #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:11 diff --git a/i18n/po/i18n_nl.mo b/i18n/po/i18n_nl.mo new file mode 100644 index 0000000000000000000000000000000000000000..d49f221e9fc74d561d5d58422d48e944abd82cf4 GIT binary patch literal 25392 zcmcJX36N!1dEc)k5up*Q46;~+u2?iPa`)4Wgjh!F%=AbaX?kWn)7rpjxZUse>pT74 zyUkmsr$-3HVna-j9S4E1fdp(!5V2#I<0>kZO39{@0Oh!nlu1&!%1$XJ*e+LWQ{}AS zG{LUE_yuS=PR_=(nc>xlJ9`OyMtf+y!$0d zau=9^$H6DT74ZLp_k-=1CdrlHzW`5y-v-|bwqBMb9dH?Z0Q^1h25{%gljM5vo#55r zW8i-9*TGZZ_rN*u#AQjc3;Yy#H~19T0x$j1B)JFN2Yv|rX;Aa+ctw)z0S|z?!6Eoc z@U!3m{7vvZ;5B?W3qAqv1phV2Qj-4;&VxSy)&HK$ljJABe+k|KzU;@6AuRw-OUhrzirz^n)-ai5^g8u>3yf?na_5T!jg7;qmMfcx;h#3MHSe;ND%_%84Z5G6X38=YOe2)yt|cow{u zkKc?E<>1eNlG9&;V=zbgWgmY4mf!^#3zQz;bBmFld<;aC$!~+=$6tU? zg0H+aNq!A{3OodsJR~}P3zUBR6*vc8bbFFK3?2p#g8vHCdM?@TpP(6`X2Zb;71R*&%X_dAKwKv-n$w65%AYR$+yMi(&x8=p9gOSC67M@uLS=L zyaIe7#J?B38kC-X4jh921AG^F`VMCwUk4@cr$N!%LK$RtZvmx;^WdAn`@vU(kASZL zp8yd-@~hx=;GcjOfmht+^!-Xue7hP{|963HZ~$t&{{%`Oe*j(uzV@(_*Ug~l`9*Li z_+1dyOI~`nv#*1op)4Kno8XP$ z^$$2bUjb45tuQ2lNL$KXj&diV`c z`n{9IEP-DHH^57NGD*7Nhrj{&m!Q_Y#6vFv{~Wvk{NLbp;P*lCapoas4-bRt_Yseu z@c4O9a{Dz<`uab?mw?~*c`d7nGj87rYw$2zV9vW$^3Z zH$YgL{QSFJzV)XdOGtJij8A|c2DP47Ey6SK3!ujPKDZ0K7-swkxK7iLbY4IIkoE*^ zKTYeW=idN9Xcl~^xcC)>5wkSIF za~louSiYe5xRUrInLk4NdH=~TgFi--%->4;3{5|`+i&-4&A)yf_%YhU{{4@8+y}ml zc8z~8z15HOkU75)ArKdPP>4npVPFzL;C^^)iBw;7`%d}pP#0cw99FqrHS`9 z(4{N6?T2eeh%`)G*XetI6i1YSjx-0!0eX_%wg zw`}27TK(rq-rV6ocz5lKu778ehuv-w4d>xzue=M;BlJ#oODfgub*F` z9izQjZ}^cNyxLy5n1o4K?)*5|r(H^W0Zl)jrhU;~x%l!zUZ3;taS`TYf5E?B^eB6~ zh1T}(zYH$Wmi>FdD`}}-@bdwheC03E-b1^Vb|WpP{VeSyZI1RP+Q(`Ch^C)MY4RCI zX=iB%Y4T}*pEgf>1?@4~PFncMc=2A^=V+huAHLt?g&qxd?i}<^4VPB(UN$_{EwlEi zZZRC~+?g(w{pF&Q4)f8d=y%dy-X9fZf0*{m{%n4hK75e62h)f5Jd*5Bm%8OJZ>QOS z(MB6V#@q1;vST6E51M*@y zA86vNo33S}m2^EDrejS~^wW(0N25WpI3DFQDZkUvO2POdag=7=Zn<7{j5Li_G7+Or z45`7HXt4aLZae0Z-o!lz;V)f8!# z+P8B@(lhyB2ve;ebhDzOe+D|*>2f*fK`20X-)$xxu9V|$J6+7vvn~Fc-8EQxZ`NH~ z$#$LHecSHalKuU(Ts)mGK|=wzL}EW*XQ^$Yx<(E|tPRSQVzC&B)sa1e+&I4EI0vgw zRpMMLi#`Gzl}H+axizn^6iX{>($_-Nx*4FRM`eU8~UO#mdkM;Sqz8c9_&XC#<^+6@}TUQEDxSqICNtE z@X=#Oj@|j-se{Mn4h3yTlSgT}>>t8rrDCo0&{-540jFg@*VhkUk5&eoK{E&KqK~?b zHf)|KM43MNCrLXKX?B%r$3fylCXHrCd4<@~`-~+tak}bkp4AJDN6cX2P%>ZXa!nZ= zGfkn;m}d9Uc&(c|i|FOOMQrYwmK*&_YR}eIp=o8QD0_d_4P13LwU1sQYMP@hb7NIL z%UMaDI)%n#1p{cM3vyCTM>atN!t_SC_mRr_oD3>XH{}iOEjSZA5`2Q?!_feBM@1Gl znjnsU*dLEdcPfuFtNEJEKd@v{n$-z^{4%~g{;6n5QabZpd(RpZvl@ppt zoh#|(8P=yr;W`GHM)!;Gy;eFxP{(JQvhDz%Vbaibn`xz8aYi%q6Z4)aXh+Sd1;?8l zbTM#{J2wHNr^ZV94f1rEz?BkS*OG(s+tN7m08^|#$}eh*_d`LqYMyOkG_iC05oKjD zYGrbOc)2yg3hQ?&Z9YCQig?-?^^boU!o+4rV;wxh*+pQHw!Fa44C}hf9NEO*~EJHYGX6Q46;6z!_rNzp!xP z@PT_5@b`+W(h(elvjVqf=(8s*ZlgR{qdg1#Q)bYrluE^@6UOz1RdH;tTp}6~5*@90 z(qf4fq$fh2kj^WzheXgqm}M;%@Y9_;nTli*vX={-u&GYb>6Zh=Vitk$lDRl)Ia7f~U{+Np;e;#YOJ|{zSBY*eVnh4XyV8cyxM~;&i zq{9t_*h{lMQG8&moKU zOqwkz$;w7EFv@4l1cElq8V#Ree2B@a6n(m@Fi+65!NX32D^a^BDp`f-yiU^Z#?wY1 z_!?!bMUPC3jf8u~@&E!_curzO^OM8BR=bH8ftEC~vdQ0C6Kj?WH6^$f-#& zIZ|S5auV}dha8k`lR1#_FqtPxqEq0YgUtt(g^A?oWqc2*^Z9Tns&E+M@h-^Uy)QNQ zEYp?sM4fVTjk}{l8Ixt8L$l`Nk@Lsg{-S1|##S+9e#(OjmU~U>eH4pMj+Xqt$$I^2 zDrd5mEv;$|-ks(2X@fPara|MlWOta}*{K-;ARFeXSJi>O2K3EmqZr)+jyD>S;)JW(Q zuvZL+a!gY+&x<)O#G8wx>3o*&Q0+)vG8VSMiY{8Q@8*2CMC936Jr{+g9Mt(tR~8Uu z5|H<`vf|`eaO2%zY%r>}jObXW^i;5`+hpY}r*xL7cp226nXu2}nFW4*Hl5NFoiY9ClkLLqvAffO0pd6J;Wj7&%Jdt-%X3Xw+E((O?6e)Y=Pe`@a!PaV< zU6bBqSXIK`a5YOLRCuVxu)hj>nSoymDj)}AeyuFK#NkEluG8_F(v!9_2{+y_Iq5bM zVtkZhkbSk)nGm9TI63KxRLMywk=m34#ZV1pMF6W=1TFE=fWG}saB>uM!se1~hZmV8 zdSvR=E;%_l(mvY~0$xHqo2UNJ_@(a}A279CQ*v^H?CGq_3ii1=gvu8#3ZWK$Yrdz| z+B1{#d+&@Q@?Ks%hew@#n-P)#Hc6-j7*kC%K&!Yd?T=ILa|8BEOxKvt}B8ycPQnqHn6q$76rS-^P2-=%}A$Dx%rU^8=d-CRm#d7$yOFb z^3pHas!B1zFV?7L?EPVz?(#WrQWK9R3-pZ7ZDDuj+)7-q%%|RY*mBPYoviDi;(IaT2Hw&aH)Ys*rFn_zTq5;37x#|hpd?5|HE4ef`O>P0fT zN(0rirwrS2%)LfP%~tjG{yJS&`hYi@(8{=s=mVcQ31^f9nQl5ejge`aa-32tO3q}K zJ(ui|ijN9vkTnZg%w-dKKSQkTO=NivMSr72to85>n~FH~rPRFW1gUO##nl)_ote6w zIy|U02o{iQd2D01Ua8;IfwY;Iq^r^rL)X^eD@)HGd#j1IXjOywHHxRz37v03{&hh>v~2)*y#a#Q;SHV=)`MDTf`tBvZ+l7(Pv_wwZ!}dZr*4 z6jqQwpGnLlar~qi(w5#Z@1DUIxsT(Ht)_+MmRVmMytWroLA%;u`-fb~!h3TYH@Jto zzHQQQ#Hfux&_Ja)ng1Jz$a7h)IWbC5^K+Q9_!1>+amBJ%B^jh6W@zs4 zyPiZUW$;U)NJqIj@3&PlY_dZ^Gx~x`f%CJ<+3jRHIOs@#o$2G>D+;5JbXIFqSn%9+ zkTc5p<3|oX;N!`u<0pp41vp2xWLC(O}K%j#Xo79X}Ja{6HK zr8FlC>#OY3_Hb4hdsb9V>R=Q_%`FEFOzzJHR`Gi5Z(h_{e}mkBGGsj+(3@WAQUkq~Bq-2XBC4#Q z+S1wfQ#Pb*q0;fH2$A3hM;nP{J6_q7hC7#DbWv4NZPzFg%&QlQrFvr?ju)=<6ntPU zC$giI8c|7!OC1FFmatM+Z@0p2B6r)N0&TSvwQQBTAd>Jl6c*~Df zEBV7-@Pnbw6K8JK7bUlX1_jBwMfpn!&bGD9uGIzV?5}zogZx;}`hn*#`K(AKmG_)$ zr3>(_Xp?vs%NugLMi~6D(-q>U`cKiUz)?4lRf)Lux$8YBgK zMoDbk=a-!G6#Nt-$Nl0xg2i4BqTNau*S2a>&RS+{!Qu9N;W`~Zn<~ij@h?W{giTXCu{Z)IhCqy`_i{@ zX=}#=vv*QU9%LhYl%`Sa6Uj^*si-U2o%E@If%kb9_t%OH( zkIEcMAzk~Z@zL_G3YvY~1XiI%q2mu`W*l40BVxxBmV0?A6gxX4r5gfj*A9mN}e zi*U%o=~eLv#r0IGV>lYotWs$)&*;-SmA6&nKxeXl?#Qei3B-d%zosh5wt8zeYNd0q z?i_azG?IVDQ|G%(zc)y@M$7x@x#D!+nBjMSJ*d@CP&aPgA|%8*f!DX`XIMxtJ6j-+ zZn_7ih(*a=3{tUT9a;4yFZ^@0B@(fy&JbaSSETavTGd5ETR4k@{owi!U@!fz*xI)xaT~Fbi_3@43n&4T%n^? zujetZc2;Ocq@E!{lkDw}eX1cgsH%<@2YJ5A_0{;j{W=BDu4FA;Z>9Gkc`_eo z7N)mijqXh-s;M%={8h;)N5f?_k%7@std>3Rwsd--k+g1&6c2FpupX2ZRvt#4qcYxe zGTu}?kl!Ps?2j{;3TbjFu~-zGn@FtH6`u`x=mI2G4?hR;i~;6QV^-hMzW|2 zz7#uPi*vNw&}*UES-Tl~Bvm2|=i;Kw>_=h<)_#S@xP-;ITXA z@;o|5UXyO0D+e7U!##H{DdHkTgj7KSfuox)f=@<79;w1bkxvdXZ3xHxkbRu19Vm!5 zeyP$mX|S!K!}SGxjhKzDyQnG0)6~exxqpZSY*b^6Az)&0G4YEbPnssr>aOlrY7pH{ za%{~q6VDMvQj@~hxlqamr? zEX}#3=GEwHU;f&c`&@r9fHiQa_X{pmfSN-V_|xln+?!aw@=Q7g9TV@b@W;{i>z~Fl3q@@-HlRmQ8U_D z6!t_*r@~@dseGinpQ)M$|`3We@CzEuK+A?QcB#u;Px49D->)kkaWl#t4pwp?OlBO;kF z!g5vaX0PG)l=pGXq%64y4axg;)z!GgAl;lnwMnxoe%|v}V142&%g(#~TsNo=H}AkA zuAQK?`8D)f4;@molKGM3wUHN?x?_v!i@9 z?-z~BX1WVPz2Xct1FJ)OV^ivXAm^$FTN5Q@qR`)+Ra!UC^;=wnTaMF3Zt2RU=;%Id z5G;V4-`&}%k1lL;dp7GONAo$1b0wxT= zBE`0fd(7Rcp1ut+<980z_p@|BTy(-Z@C_j_Y^>Djh?JI<}O z%@=T00}Q%vWgW?*Dsx(xGqsm9*LNme?dD>B5UbzGy~POMAiJ(^>)ypPp`zwofHn)^ z(ko6Y{#9>fB`udYD3N2~nl+5DMN!VYa+L|WbSDbj4%mm>2O<=5C)HLU!_dH!=|)fm z?=rVbix2dA;ZOR^$Yu0mXJky*Hl>=$mg%nfIUbPL56k7zIx;!m+q_Ov(co$hc$+)D zOl-x%DnoTTf@?=%y^e>>PH|lu!CJQFJYMRv@=(MfH6xg!H~earjC>)Jo!NlDg(p>6 z@QM3Sm8K5$|HPc9`MHqPSKqnYw^F*s^h7*7Z4w9CJiJW#wVa0dmq^Od{V7R7ut=Bczt%h0F<0)HWRliIjiV$l355D;xF z3zM>m6Pt#5CXex)2aqj4Pm8G>qU<9Ct}S>mSxn}MiLk0cP-y9;(zII6o~{<{p^2fY zhgCXD+8gf(oBSHLgh~IV*T=+&YB=XEMUgWXXGQ3{{sNGks1|UlEZ0^4arPB4q2{W9 z-JBtaJbEWN;LT>*D73(idhN>l-cYqUX$}sBWEuRk5Nu|qkfytctW=NM36-+%y~=tv z(_C=_TEqQe9IQVEsvZ7JBw#MZCS5S!S>+5?gwqA$RW8{_t5W8x6ql?mTVB!MbC1Rr8f*dNhGS6Qob^7v*);V0L>MZ@GS zbG9m{|CbQVnX(aP<9HWB3*n}|Wnf(U>l3TG>aT~JiLz#hIca4|N*5*-Z<`rVyxJAx z^PEGBv`fYu5X$qB28RlR-!myt)r;jdrzCqZ0s68;t_!91FVyIv;QBR1P`$>*;!Ro) z6YVfvy6q-OZ0Au$Li@gP1zMUAE7W!4P3}h&9sYqW`&JLaJF9q|)ITG@zavop?B1z2 zFRIOyyi=ug=8BQy7NrSKAXQXxL-ji(3?uN@jT;^l>fhYLRXU=1UEb_dj;0F5I|^ZU z@Ast>qf7eHotTzNmwXAfL6&U|o5Wb~nOEH>8so;u|2bQ8P*Z5SPtJ}wr*jKc;Qp}v z{h0fkv5CaU-8EA9(A15|Y!2lUGknL1q1}B7VnqwRLPe70Sz)2vWIV^2ypAnp*M+TE zK5jBXJPWIP)-!J&N@}I08P^)M7PmKanUIw8d7P|CM$Gq}BX@!5hvRH>U>C>YEiWyz z76U6|l2}|tq!96rm)?|X zrmWB(?s#iS^^{PH@V?*O*t1>Q_NTMmJntkvJ5?;uOtmCTZ&$ngoh3}L!)JZ1#X3*h zcpZ}PSn2T7E1PQ2nIKcE-iLqCLsn&nOv41rjh@Y)`Bba2V)Ft97oGEj@Rg0;X(v!} z%F$|xgj^n0R?Y42F8llH1O8|z-2Sd7i6&1KTDVY-AK}`l6%(Ouo0^{U0xp5JDoyO` z3dKBays$ll0!7p3R%bE_s4cO=aoLp4!lVVSO14$F^G-al3Q4Z#+z<5BHN3hBFZlu1+D6+Mp^hGl<2BQe6~`N6EFRT14YZ892wiHhrjo4+==sH?W\n" "Language-Team: \n" @@ -10,12 +10,12 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.3.2\n" #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:56 #, java-format msgid "''rm_schemas_load_list'' config setting mentions non-existent schema {0}" -msgstr "" +msgstr "De instelling ‘’rm_schemas_load_list’’ bevat een schema dat niet bestaat: {0}" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/MultiplicitiesValidation.java:42 msgid "A cardinality must have an interval - in this case it is null" @@ -185,7 +185,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:13 msgid "Care flow step" -msgstr "" +msgstr "Stap in zorgproces" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/CodeValidation.java:76 #, java-format @@ -210,7 +210,7 @@ msgstr "Code {0} uit de terminologie is niet gebruikt in de definitie van het ar #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java:15 msgid "Composer" -msgstr "" +msgstr "Opsteller" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:150 #, java-format @@ -219,7 +219,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/CompositionSerializer.java:22 msgid "Context" -msgstr "" +msgstr "Context" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:59 #, java-format @@ -228,12 +228,12 @@ msgstr "Kan parent object voor {0} niet vinden. Deze melding is waarschijnlijk e #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:14 msgid "Current state" -msgstr "" +msgstr "Huidige toestand" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:14 #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/ActivitySerializer.java:14 msgid "Description" -msgstr "" +msgstr "Beschrijving" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/DefinitionStructureValidation.java:67 #, java-format @@ -270,7 +270,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:15 msgid "End time" -msgstr "" +msgstr "Eindtijd" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/ValidationMessage.java:61 msgid "Error" @@ -290,15 +290,15 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java:22 msgid "Expiry time" -msgstr "" +msgstr "Verlooptijd" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditSerializer.java:19 msgid "Feeder system audit" -msgstr "" +msgstr "Audit van aanleverend systeem" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:11 msgid "Function of participant" -msgstr "" +msgstr "Functie van de deelnemer" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicTerminologyValidation.java:40 #, java-format @@ -323,7 +323,7 @@ msgstr "Fout in root node id {0}: Dit moet kloppen met de specialization depth v #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:16 msgid "Instruction details" -msgstr "" +msgstr "Details van de instructie" #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidator.java:131 #, java-format @@ -337,18 +337,16 @@ msgstr "Taal {0} is opgenomen bij de vertalingen, maar ontbreekt in de terminolo #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:13 #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:12 -#, fuzzy msgid "Location" -msgstr "Documentatie" +msgstr "Locatie" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantifiedUtil.java:11 msgid "Magnitude status" -msgstr "" +msgstr "Status van hoeveelheid" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/ReferenceRangeSerializer.java:14 -#, fuzzy msgid "Meaning" -msgstr "Waarschuwing" +msgstr "Betekenis" #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:49 #, java-format @@ -361,8 +359,8 @@ msgid "Message at {0} ({1}): {2}" msgstr "Bericht bij {0} ({1}): {2}" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:12 -msgid "Mode of participant" -msgstr "" +msgid "Mode of participation" +msgstr "Manier van deelnemen" #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:11 #, java-format @@ -377,11 +375,11 @@ msgstr "Meerdere waarden voor Tuple constraint {0}: {1}" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyRelatedSerializer.java:12 #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartyIdentifiedSerializer.java:12 msgid "Name" -msgstr "" +msgstr "Naam" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:15 msgid "No" -msgstr "" +msgstr "Nee" #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:55 msgid "No ''rm_schemas_load_list'' config setting found; attempting to load all schemas (change via Tools>Options)" @@ -399,7 +397,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ElementSerializer.java:19 msgid "No value. Reason: " -msgstr "" +msgstr "Geen waarde. Reden: " #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:243 #, java-format @@ -412,9 +410,9 @@ msgid "Node id {0} already used in path {1}" msgstr "Node id {0} is al gebruikt in pad {1}" #: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:281 -#, fuzzy, java-format +#, java-format msgid "Node id {0} does not conform to {1}" -msgstr "Node id {0} klopt niet bij de node id {1} uit het archetype dat gespecialiseerd wordt" +msgstr "Node id {0} klopt niet met {1}" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:299 #, java-format @@ -501,7 +499,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:14 msgid "Performer" -msgstr "" +msgstr "Uitvoerder" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:70 msgid "Primitive object specialisation validation failed" @@ -510,7 +508,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/InstructionSerializer.java:21 #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:15 msgid "Protocol" -msgstr "" +msgstr "Protocol" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:64 #, java-format @@ -797,7 +795,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:16 msgid "Setting" -msgstr "" +msgstr "Setting" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/SpecializedDefinitionValidation.java:317 #, java-format @@ -810,16 +808,16 @@ msgstr "Attributen die maar één waarde kunnen bevatten mogen geen cardinalitei #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:14 msgid "Start time" -msgstr "" +msgstr "Starttijd" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ActionSerializer.java:17 #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:12 msgid "State transition" -msgstr "" +msgstr "Toestandsovergang" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/action/IsmTransitionSerializer.java:17 msgid "State transition reason" -msgstr "" +msgstr "Reden van toestandsovergang" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:72 #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:73 @@ -864,22 +862,22 @@ msgid "Term binding key {0} points to a path that cannot be found in the archety msgstr "Het pad {0} uit een term binding kan niet worden gevonden in het archetype" #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:19 -#, fuzzy, java-format +#, java-format msgid "The Archetype with id {0} cannot be found" -msgstr "Archetype met id {0} is gebruikt met use_archetype, maar het archetype kon niet worden gevonden" +msgstr "Archetype met id {0} kan niet worden gevonden" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:31 msgid "The adl_version top-level meta-data item must exist and consist of a valid 3-part version identifier." msgstr "" #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:17 -#, fuzzy, java-format +#, java-format msgid "The archetype id {0} does not match the possible archetype ids." -msgstr "Use_archetype met {0} klopt niet met het archetype slot met type {1} uit het gespecialiseerde archetype" +msgstr "Use_archetype met {0} klopt niet met de mogelijke archetype kids" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicDefinitionObjectValidation.java:40 msgid "The attribute cardinality interval has lower > upper, this is not allowed" -msgstr "" +msgstr "Het attribuut cardinality interval heeft lower > upper. Dat is niet toegestaan" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/FlatFormValidation.java:55 #, java-format @@ -955,13 +953,13 @@ msgid "The path {0} referenced in the annotations does not exist in the flat arc msgstr "Het pad {0} gebruikt in de annotations bestaat niet in het flattened archetype of referentiemodel" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/RmOverlayValidation.java:34 -#, fuzzy, java-format +#, java-format msgid "The path {0} referenced in the rm visibility does not exist in the flat archetype" -msgstr "Het pad {0} gebruikt in de annotations bestaat niet in het flattened archetype" +msgstr "Het pad {0} gebruikt in de rm visibility bestaat niet in het flattened archetype" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/demographic/PartySelfSerializer.java:11 msgid "The person themselves " -msgstr "" +msgstr "De persoon zelf" #: ../aom/src/main/java/com/nedap/archie/aom/CPrimitiveObject.java:134 #, java-format @@ -969,9 +967,9 @@ msgid "The primitive object of type {0} does not conform null" msgstr "" #: ../aom/src/main/java/com/nedap/archie/aom/CPrimitiveObject.java:136 -#, fuzzy, java-format +#, java-format msgid "The primitive object of type {0} does not conform to non-primitive object with type {1}" -msgstr "Primitive object met RM type {0} klopt niet bij primitive object met RM type {1} in het archetype dat gespecialiseerd wordt" +msgstr "Primitive object met RM type {0} klopt niet bij niet primitief object met type {1}" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:30 msgid "The rm_release top-level meta-data item must exist and consist of a valid 3-part version identifier." @@ -1011,11 +1009,11 @@ msgstr "De waarde {0} moet {1} zijn" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:13 msgid "Time" -msgstr "" +msgstr "Tijd" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/entries/ObservationSerializer.java:30 msgid "Time of observation" -msgstr "" +msgstr "Tijd van observatie" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/AuthoredArchetypeMetadataChecks.java:49 #, java-format @@ -1034,11 +1032,11 @@ msgstr "Type met naam {0} bestaat niet" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:19 msgid "Units display name" -msgstr "" +msgstr "Weergavenaam van eenheid" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:17 msgid "Units system" -msgstr "" +msgstr "Systeem van eenheid" #: ../bmm/src/main/java/org/openehr/bmm/persistence/validation/BmmMessageIds.java:54 #, java-format @@ -1099,7 +1097,7 @@ msgstr "Waarschuwing" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:15 msgid "Yes" -msgstr "" +msgstr "Ja" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:49 msgid "achetype code specialisation level validity. Each archetype term ('at' code) and constraint code ('ac' code) used in the archetype definition section must have a specialisation level no greater than the specialisation level of the archetype." @@ -1194,9 +1192,9 @@ msgid "child CTerminology code contains more than one constraint, that is not va msgstr "" #: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:279 -#, fuzzy, java-format +#, java-format msgid "child terminology constraint value code {0} does not conform to parent constraint with value code {0}" -msgstr "De cardinaliteit {0} van dit attribuut komt niet overeen met de cardinaliteit van het attribuut dat gespecializeerd wordt: {1}" +msgstr "" #: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:263 #, java-format @@ -1204,9 +1202,9 @@ msgid "child terminology constraint value code {0} is not contained in {1}, or a msgstr "" #: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:259 -#, fuzzy, java-format +#, java-format msgid "child terminology constraint value set code {0} does not conform to parent constraint with value set code {1}" -msgstr "De cardinaliteit {0} van dit attribuut komt niet overeen met de cardinaliteit van het attribuut dat gespecializeerd wordt: {1}" +msgstr "" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:84 msgid "code in terminology not used in archetype definition" @@ -1262,7 +1260,7 @@ msgstr "kleiner dan {0}" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvQuantitySerializer.java:12 #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvCountSerializer.java:12 msgid "no magnitude" -msgstr "" +msgstr "geen waarde" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateSerializer.java:17 #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvBooleanSerializer.java:12 @@ -1270,7 +1268,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDateTimeSerializer.java:18 #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/datatypes/DvDurationSerializer.java:16 msgid "no value" -msgstr "" +msgstr "geen waarde" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:47 msgid "node id must be defined in flat terminology" @@ -1298,7 +1296,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/audit/FeederAuditDetailsSerializer.java:19 msgid "other details" -msgstr "" +msgstr "verdere details" #: ../aom/src/main/java/com/nedap/archie/aom/primitives/CTerminologyCode.java:237 #, java-format @@ -1307,7 +1305,7 @@ msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/EventContextSerializer.java:21 msgid "participations" -msgstr "" +msgstr "deelnemers" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:52 msgid "resource detail key does not match resource detail item language" @@ -1408,9 +1406,9 @@ msgstr "" #: ../aom/src/main/java/com/nedap/archie/aom/CPrimitiveObject.java:130 #: ../aom/src/main/java/com/nedap/archie/aom/CObject.java:284 -#, fuzzy, java-format +#, java-format msgid "type name {0} does not conform to {1}" -msgstr "Type {0} klopt niet met type {1} uit het gespecialiseerde archetype" +msgstr "Typenaam {0} klopt niet met {1}" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:77 msgid "use_node path validity: the path mentioned in a use_node statement must refer to an object node defined elsewhere in the same archetype or any of its specialisation parent archetypes, that is not itself an internal reference node, and which carries a node identifier if one is needed at the reference point." @@ -1435,9 +1433,9 @@ msgstr "" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicTerminologyValidation.java:119 #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicTerminologyValidation.java:123 -#, fuzzy, java-format +#, java-format msgid "value code {0} is used in value set {1}, but not present in terminology" -msgstr "de code {0} van een value bestaat niet in de terminologie" +msgstr "de waarde-code {0} is gebruikt in waarde {1}, maar is niet aanwezig in de terminologie" #: ../aom/src/main/java/com/nedap/archie/archetypevalidator/ErrorType.java:48 msgid "value set assumed value code validity. Each value code (at-code) used as an assumed_value for a value set in a term constraint in the archetype definition must exist in the value set definition in the terminology for the identified value set." @@ -1450,9 +1448,9 @@ msgstr "de code {0} van een value set bestaat niet in de terminologie" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicTerminologyValidation.java:110 #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicTerminologyValidation.java:114 -#, fuzzy, java-format +#, java-format msgid "value set code {0} is used in value set {1}, but not present in terminology" -msgstr "de code {0} van een value set bestaat niet in de terminologie" +msgstr "de waardeset-code {0} is gebruikt in waardeset {1}, maar is niet aanwezig in de terminologie" #: ../tools/src/main/java/com/nedap/archie/archetypevalidator/validations/BasicTerminologyValidation.java:136 #, java-format diff --git a/i18n/po/keys.pot b/i18n/po/keys.pot index 530cb071d..20508c93b 100644 --- a/i18n/po/keys.pot +++ b/i18n/po/keys.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-31 14:55+0200\n" +"POT-Creation-Date: 2023-08-31 15:06+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -363,7 +363,7 @@ msgid "Message at {0} ({1}): {2}" msgstr "" #: ../archie-utils/src/main/java/com/nedap/archie/text/serializers/ParticipationSerializer.java:12 -msgid "Mode of participant" +msgid "Mode of participation" msgstr "" #: ../tools/src/main/java/com/nedap/archie/rmobjectvalidator/RMObjectValidationMessageIds.java:11 diff --git a/i18n/src/main/java/openehrArchie_nl.java b/i18n/src/main/java/openehrArchie_nl.java index 445f7149f..bff2eb7f4 100644 --- a/i18n/src/main/java/openehrArchie_nl.java +++ b/i18n/src/main/java/openehrArchie_nl.java @@ -2,268 +2,354 @@ public class openehrArchie_nl extends java.util.ResourceBundle { private static final java.lang.String[] table; static { - java.lang.String[] t = new java.lang.String[574]; + java.lang.String[] t = new java.lang.String[586]; t[0] = ""; - t[1] = "Project-Id-Version: \nReport-Msgid-Bugs-To: \nPO-Revision-Date: \nLast-Translator: Pieter Bos \nLanguage-Team: \nLanguage: nl\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nX-Generator: Poedit 2.4.2\n"; - t[4] = "The value {0} must be {1}"; - t[5] = "De waarde {0} moet {1} zijn"; - t[6] = "code in terminology not used in archetype definition"; - t[7] = "code uit terminologie is niet gebruikt in de definitie van het archetype"; - t[8] = "Term binding key {0} points to a path that cannot be found in the archetype"; - t[9] = "Het pad {0} uit een term binding kan niet worden gevonden in het archetype"; - t[14] = "Could not find parent object for {0} but it should have been prechecked. Could you report this as a bug?"; - t[15] = "Kan parent object voor {0} niet vinden. Deze melding is waarschijnlijk een bug, zou u dat kunnen melden?"; - t[22] = "value code validity. Each value code (at-code) used in a term constraint in the archetype definition must be defined in the term_definitions part of the terminology of the flattened form of the current archetype."; - t[23] = "Geldigheid van een value code. Elke value code (at-code) gebruikt in een term constraint in de definitie van het archetype moet in de term definities van de flat form van dit archetype opgenomen zijn."; - t[24] = "Multiple values for Primitive Object constraint {0}: {1}"; - t[25] = "Meerdere waarden voor Primitive Object constraint {0}: {1}"; - t[28] = "Template overlay {0} had validation errors"; - t[29] = "Template overlay {0} heeft validatiefouten"; - t[30] = "Parent archetype {0} not found or can not be flattened"; - t[31] = "Parent archetype {0} niet gevonden, of het bevat een fout waardoor het niet kan worden geflattened"; - t[32] = "The existence {0} of attribute {2}.{3} does not match existence {1} of the reference model"; - t[33] = "De existence {0} van attribuut {2}.{3} klopt niet bij existence {1} van het referentiemodel"; - t[34] = "Assumed value {0} from the C_TERMINOLOGY_CODE is not part of value set {1}. Expected one of {2}"; - t[35] = "De assumed value {0} van de C_TERMINOLOGY_CODE is geen onderdeel van value set/codelijst {1}. Verwacht was een van de codes {2}"; - t[46] = "Merged schema {0} into schema {1}"; - t[47] = "Schema {0} samengevoegd in schema {1}"; - t[48] = "Syntax error: existence must be one of 0..0, 0..1, or 1..1"; - t[49] = "Syntaxfout: existence moet een van 0..0, 0..1 of 1..1 zijn"; - t[50] = "The use_archetype with type {0} does not match the archetype slow (allow_archetype) with type {1}"; - t[51] = "Use_archetype met {0} klopt niet met het archetype slot met type {1} uit het gespecialiseerde archetype"; - t[54] = "A {0} cannot specialize a {1}"; - t[55] = "Een {0} kan niet een {1} specialiseren"; - t[58] = "RM Release version {0} is an invalid format for a version, should be x.x.x-(rc|alpha(x)?)?"; - t[59] = "Het formaat van de RM release version {0} klopt niet. dit moet in het formaat x.x.x-(rc|alpha(x)?)? zijn"; - t[62] = "value set code {0} is not present in terminology"; - t[63] = "de code {0} van een value set bestaat niet in de terminologie"; - t[66] = "Tuple member attribute {0} is not an attribute of type {1}"; - t[67] = "Onderdeel van tupel {0} is geen attribuut van type {1}"; - t[68] = "Attribute cardinality {0} does not conform to parent cardinality {1}"; - t[69] = "De cardinaliteit {0} van dit attribuut komt niet overeen met de cardinaliteit van het attribuut dat gespecializeerd wordt: {1}"; - t[72] = "Attribute tuple with members {0} does not conform to parent attribute tuple"; - t[73] = "Atribuut-tupel met members {0} komt niet overeen met attribuut-tupel dat gespecializeerd wordt"; - t[74] = "Multiple values for Tuple constraint {0}: {1}"; - t[75] = "Meerdere waarden voor Tuple constraint {0}: {1}"; - t[80] = "The validation of a template overlay failed"; - t[81] = "De validate van een template overlay is niet geslaagd"; - t[82] = "Use_node (C_COMPLEX_OBJECT_PROXY) points to a path that resolves to more than one object"; - t[83] = "Use_node, hergebruik van een deel van het archetype, verwijst naar een pad dat verwijst naar meer dan \u00e9\u00e9n object"; - t[84] = "value-set members defined. The member codes of a value set must be defined in the term definitions of the terminology of the flattened form of the current archetype"; - t[85] = "value-set waardes gedefinieerd. De waardes uit een value-set moeten in de terminology opgenomen zijn van de flat form van dit archetype."; - t[94] = "an error occurred that has no standard codes"; - t[95] = "er is een fout opgetreden zonder standaard-code"; - t[100] = "Code {0} from C_TERMINOLOGY_CODE constraint is not defined in the terminology"; - t[101] = "Code {0} van deze C_TERMINOLOGY_CODE bestaat niet in de terminologie"; - t[106] = "{0} is not a known attribute of {1}"; - t[107] = "{0} is niet een bekend attribuut van {1}"; - t[108] = "Use_archetype {0} does not match the expression of the archetype slot it specialized in the parent"; - t[109] = "Use_archetype {0} komt niet overeen met de restricties van het archetype slot dat het specialiseert"; - t[110] = "The value {0} must be one of:"; - t[111] = "De waarde {0} moet aan een van de volgende voorwaarden voldoen:"; - t[112] = "Attribute existence is {0}, which does not conform to parent existince {1}"; - t[113] = "De existence {0} van dit attribuut komt niet overeen met die de existence van het attribuut dat gespecializeerd wordt: {1}"; - t[114] = "BMM Schema load error"; - t[115] = "Fout bij het laden van een BMM schema"; - t[118] = "Object does not match tuple: {0}"; - t[119] = "Object komt niet overeen met tupel: {0}"; - t[122] = "A differential path was used in an attribute, but this is not allowed in an archetype that has no parent"; - t[123] = "In dit attribuut is een differential path gebruikt, maar dat is niet toegestaan in een niet specialiserend archetype"; - t[126] = "Object should be type {0}, but was {1}"; - t[127] = "Object moet van type {0} zijn, maar is van type {1}"; - t[128] = "The occurrences upper limit of the C_OBJECT {0} was {1}, which is greater than the parent attribute cardinality {2}"; - t[129] = "De bovenste limiet van de occurrences van dit C_OBJECT {0} was {1}. Dat is groter dan de cardinaliteit van het attribuut dat deze C_OBJECT bevat, {2}"; - t[140] = "value-set id defined. The identifying code of a value set must be defined in the term definitions of the terminology of the current archetype"; - t[141] = "value-set id gedefinieerd. De identificerende code van een value set moet in de termdefinities van de terminologie van dit archetype opgenomen zijn."; - t[142] = "The cardinality of Attribute {0}.{1} is the same as in the reference model - this is not allowed due to strict multiplicities validation being enabled"; - t[143] = "De cardinaliteit van attribuut {0}.{1} is hetzelfde als in het referentiemodel. Dit is niet toegestaan als strikte validatie is ingeschakeld"; - t[144] = "A closed archetype slot cannot have its includes or excludes assertions modified"; - t[145] = "Een gesloten archetype slot kan geen wijzigingen meer bevatten aan de includes en excludes-onderdelen"; - t[150] = "{0} and {1}"; - t[151] = "{0} en {1}"; - t[158] = "Error in parent archetype. Fix those errors before continuing with this archetype: {0}"; - t[159] = "Fout in het gespecialiseerde archetype. Los deze fout in het bovenliggende archetype eerst op, alvorens verder te gaan met dit archetype. De gevonden fouten: {0}"; - t[162] = "C_OBJECT in this archetype with class {0} is prohibited, which means its class must be the same as parent type {1}"; - t[163] = "Het C_OBJECT in dit archetype met klasse {0} heeft 0 als maximum occurrences (prohibited), maar heeft niet dezelfde klasse als het C_OBJECT dat gespecializeerd wordt: {1}"; - t[166] = "Duplicate instance of Reference Model model {0} found; original schema {1}; ignoring instance from schema {2}"; - t[167] = "Dubbele instantie van reference model {0} gevonden. Het originele schema is {1}. Het schema van instantie {2} wordt genegeerd"; - t[180] = "An object with the new node id {0} cannot be prohibited"; - t[181] = "Een object met een nieuw node id {0} mag geen occurrences van maximaal 0 hebben"; - t[182] = "Attribute {0}.{1} cannot be constrained by a {2}"; - t[183] = "Attribuut {0}.{1} kan niet worden beperkt met een {2}"; - t[186] = "Original language not defined in terminology"; - t[187] = "Originele taal bestaat niet in de terminologie"; - t[190] = "Use_node (C_COMPLEX_OBJECT_PROXY) points to type {0}, which does not conform to type {1}"; - t[191] = "Use_node, hergebruik van een deel van het archetype, verwijst naar type {0}, maar dat klopt niet met type {1} zoals gevonden uit het pad"; - t[202] = "greater than {0}"; - t[203] = "groter dan {0}"; - t[210] = "Use_archetype specializes an archetype root pointing to {0}, but the archetype {1} is not a descendant"; - t[211] = "Use_archetype {1} specialiseert een andere use_archetype die verwijst naar {0}. Maar het archeytpe {1} specialiseert niet {0}"; - t[216] = "Use_archetype points to type {0}, which is not conformant for type {1} of the archetype root used"; - t[217] = "Use_archetype verwijst naar een pad met type {0}. Dit komt niet overeen met type {1} zoals opgegeven in use_archetype"; - t[222] = "Use_archetype references archetype id {0}, but no archetype was found"; - t[223] = "Use_archetype verwijst naar archetype met id {0}, maar dit archetype kon niet gevonden worden"; - t[228] = "Language {0} is defined in the translations, but is not present in the terminology"; - t[229] = "Taal {0} is opgenomen bij de vertalingen, maar ontbreekt in de terminologie"; - t[236] = "The specialisation depth of the archetypes must be one greater than the specialisation depth of the parent archetype"; - t[237] = "De specialisation depth van het archetype moet \u00e9\u00e9n groter zijn dan die van het gespecialiseerde archetype"; - t[242] = "Attribute {0}.{1} cannot contain type {2}"; - t[243] = "Attribuut {0}.{1} mag geen type {2} bevatten"; - t[250] = "Node id {0} is not valid here because it redefines an object illegally"; - t[251] = "Node id {0} is hiet niet geldig omdat het een object herdefinieert waar dat niet is toegestaan"; - t[256] = "The path {0} referenced in the annotations does not exist in the flat archetype or reference model"; - t[257] = "Het pad {0} gebruikt in de annotations bestaat niet in het flattened archetype of referentiemodel"; - t[262] = "Original language {0} is not defined in the terminology"; - t[263] = "Originele taal {0} ontbreekt in de terminologie"; - t[268] = "Archetype terminology not defined"; - t[269] = "Archetype terminology ontbreekt"; - t[270] = "The attribute contains {0} objects that are required, but only has an upper cardinality of {1}"; - t[271] = "Het attribuut bevat {0} waarden die verplicht zijn, maar heeft een maximale cardinaliteit van {1}"; - t[282] = "empty"; - t[283] = "leeg"; - t[284] = "Code {0} is in the terminology, but not used in the archetype"; - t[285] = "Code {0} uit de terminologie is niet gebruikt in de definitie van het archetype"; - t[294] = "The code specialization depth of code {0} is {1}, which is greater than archetype specialization depth {2}"; - t[295] = "De specialization depth of code {0} is {1}, maar mag niet groter zijn dan {2}, de specialization depth van het archetype"; - t[300] = "The validation of the parent archetype failed"; - t[301] = "Het bovenliggende archetype bevat een fout, en valideert daardoor niet. Daardoor kan dit archetype niet gevalideerd worden."; - t[302] = "No Reference Model schema found for package ''{0}''"; - t[303] = "Geen referentiemodel-schema gevonden voor package \u201c{0}\u201d"; - t[304] = "The existence of attribute {0}.{1} is the same as in the reference model - this is not allowed due to strict existence validation being enabled"; - t[305] = "De existence van attribuut {0}.{1} is hetzelfde als in het referentiemodel. Dit is niet toegestaan als strikte validatie ingeschakeld is"; - t[308] = "Schema {0} archetype parent class {1} not defined in schema"; - t[309] = "Schema {0} archetype parent class {1} niet gedefinieerd in schema"; - t[312] = "equal to {0}"; - t[313] = "gelijk aan {0}"; - t[316] = "A specialized archetype slot must have the same id as the parent id {0}, but it was {1}"; - t[317] = "Een specialiserend archetype slot moet dezelfde id hebben als in het gespecialiseerde archetype {0}, maar het was {1}"; - t[320] = "Term binding key {0} is not present in the terminology"; - t[321] = "De code {0} van een term binding bestaat niet in de terminologie"; - t[326] = "Use_node (C_COMPLEX_OBJECT_PROXY) points to a path that cannot be found: {0}"; - t[327] = "Use_node, hergebruik van een deel van het archetype, verwijst naar een pad dat niet kan worden gevonden: {0}"; - t[328] = "Reference Model BMM schema {0} incompatible with current release {1} of the tool; obtain up to date schemas"; - t[329] = "Bmm Schema {0} kan niet worden geladen met versie {1} van deze software"; - t[332] = "anything"; - t[333] = "willekeurig"; - t[336] = "The occurrences of all C_OBJECTS under this attributes is at least {0}, which does not fit in the upper limit of the cardinality of the attribute, {1}"; - t[337] = "De occurrences van alle C_OBJECTS onder dit attribuut is ten minste {0}. Dat past niet in de maximale cardinaliteit van het attibruut {1}"; - t[340] = "Syntax error: terminology not specified"; - t[341] = "Syntaxfout: terminologie ontbreekt"; - t[342] = "Archetype referenced in use_archetype points to class {0}, which does not exist in this reference model"; - t[343] = "Het archetype waarnaar use_archetype verwijst, verwijst naar klasse {0}. Deze klasse bestaat niet in het referentiemodel"; - t[352] = "the given id code is not valid"; - t[353] = "de gegeven id code is niet geldig"; - t[354] = "Id code {0} in terminology is not a valid term code, should be id, ac or at, followed by digits"; - t[355] = "Id code {0} in de terminology is geen geldige term-code. De code zou moeten beginnen met id, ac of at, gevolgd door getallen"; - t[356] = "Archetype root must have an archetype reference or be prohibited (occurrences matches 0)"; - t[357] = "Use_archetype moet verwijzen naar een archetype, of beperkt zijn tot occurrences 0"; - t[358] = "Sibling order {0} refers to missing node id"; - t[359] = "Sibling order {0} verwijst naar een ontbrekende node id"; - t[360] = "Documentation"; - t[361] = "Documentatie"; - t[362] = "at least {0}"; - t[363] = "minimaal {0}"; - t[370] = "Code {0} from the C_TERMINOLOGY_CODE constraint has specialization depth {1}, but this must be no greater than {2}"; - t[371] = "Code {0} van de C_TERMINOLOGY_CODE heeft specialization depth {1}, maar dit mag niet groter dan {2} zijn voor dit archetype"; - t[372] = "Error"; - t[373] = "Fout"; - t[380] = "C_OBJECT with RM type {0} must have a node id"; - t[381] = "C_OBJECT met RM type {0} moet een node id hebben, maar heeft dat niet"; - t[382] = "at most {0}"; - t[383] = "maximaal {0}"; - t[384] = "The node_id of the root object of the archetype must be of the form id1'{.1}'*, where the number of .1 components equals the specalisation depth, and must be defined in the terminology"; - t[385] = "De node id van het bovenste object van het archetype moet van de form id'{.1}'* zijn, waar het aantal van .1 onderdelen gelijk is aan de specialization depth, and de code moet bestaan in de terminologie"; - t[386] = "Syntax error: existence must be one of 0..0, 0..1, or 1..1, but was {0}"; - t[387] = "Syntaxfout: existence moet een van 0..0, 0..1 of 1..1 zijn, maar was {0}"; - t[394] = "Message at {0} ({1}): {2}"; - t[395] = "Bericht bij {0} ({1}): {2}"; - t[396] = "RM type in id {0} does not match RM type in definition {1}"; - t[397] = "Reference model type {0} correspondeert niet met het reference model type {1} in de definitie van het archetype"; - t[404] = "Original language is missing in archetype"; - t[405] = "Archetype heeft geen originele taal"; - t[408] = "Attribute {0} of class {1} does not match existence {2}"; - t[409] = "Attribuut {0} van class {1} komt niet overeen met existence {2}"; - t[410] = "at path: "; - t[411] = "op het pad: "; - t[414] = "The node id is not in the form id1.1....1: {0}"; - t[415] = "De node id is niet in de form id1(.1)*: {0}"; - t[416] = "Translation details language {0} has an incorrect key: {1}"; - t[417] = "De beschrijving van de vertaling {0} zou een gelijke sleutelwaarde als de taal moeten hebben, maar heeft de waarde {1}"; - t[418] = "Attribute {0} is a non-tuple attribute in the parent archetype, but a tuple attribute in the current archetype. That is not allowed"; - t[419] = "Attribuut {0} is geen tuple in het archetype dat gespecializeerd wordt, maar wel een tuple attribuut in het huidige archetype. Dat is niet toegestaan"; - t[424] = "Archetype with id {0} used in use_archetype, but it was not found"; - t[425] = "Archetype met id {0} is gebruikt met use_archetype, maar het archetype kon niet worden gevonden"; - t[430] = "The attribute {0} of type {1} can only have a single value, but the occurrences of the C_OBJECTS below has an upper limit of more than 1"; - t[431] = "Het attribuut {0} van type {1} kan maar \u00e9\u00e9n waarde hebben, maar de occurrences van de C_OBJECTS in dit attibuut heeft een maximale limiet van meer dan 1"; - t[432] = "Duplicate attribute constraint with name {0}"; - t[433] = "Attribuut met naam {0} is twee keer gedefinieerd - dit mag maar \u00e9\u00e9n keer zijn"; - t[436] = "Single valued attributes can not have a cardinality"; - t[437] = "Attributen die maar \u00e9\u00e9n waarde kunnen bevatten mogen geen cardinaliteit hebben"; - t[440] = "Node id {0} already used in path {1}"; - t[441] = "Node id {0} is al gebruikt in pad {1}"; - t[442] = "Id code {0} in terminology is of a different specialization depth than the archetype"; - t[443] = "Id code {0} uit de terminologie heeft een andere specialization depth dan het archetype"; - t[444] = "The cardinality {0} of attribute {2}.{3} does not match cardinality {1} of the reference model"; - t[445] = "De cardinaliteit {0} van attribuut {2}.{3} klopt niet met de cardinaliteit {1} uit het referentiemodel"; - t[452] = "node id must be defined in flat terminology"; - t[453] = "node id ontbreekt in de flat terminologie"; - t[454] = "The specialisation depth of the archetype, {0}, must be one greater than the specialisation depth of the parent archetype, {1}"; - t[455] = "De specialisation depth van het archetype, {0}, moet \u00e9\u00e9n groter zijn dan die van het gespecialiseerde archetype, {1}"; - t[456] = "Node id {0} is used in the archetype, but missing in the terminology"; - t[457] = "Node id {0} is gebruikt in het archetype, maar ontbreekt in de terminologie"; - t[462] = "Archetype terminology contains no term definitions"; - t[463] = "De terminologie van dit archetype bevat geen termdefinities"; - t[464] = "Node id {0} is not valid here"; - t[465] = "Node id {0} is hier niet geldig"; - t[466] = "Warning"; - t[467] = "Waarschuwing"; - t[468] = "Term binding key {0} in path format is not present in archetype"; - t[469] = "Het pad {0} uit een term binding kan niet worden gevonden in het archetype"; - t[470] = "Use_node (C_COMPLEX_OBJECT_PROXY) must point to a C_COMPLEX_OBJECT, but points to a {0}"; - t[471] = "Use_node, hergebruik van een deel van het archetype, moet naar een C_COMPLEX_OBJECT verwijzen, maar verwijst naar een {0}"; - t[476] = "Code {0} from the C_TERMINOLOGY_CODE constraint is not defined in the terminology"; - t[477] = "Code {0} van deze C_TERMINOLOGY_CODE bestaat niet in de terminology"; - t[486] = "Term binding key {0} is not present in terminology"; - t[487] = "De code {0} van een term binding bestaat niet in de terminologie"; - t[490] = "Type name {0} does not exist"; - t[491] = "Type met naam {0} bestaat niet"; - t[496] = "ADL version {0} is an invalid format for a version, should be x.x.x-(rc|alpha(x)?)?"; - t[497] = "ADL-versie {0} is in een incorrect formaat. Dit zou een versie in het formaat x.x.x-(rc|alpha(x)?)? moeten zijn"; - t[498] = "Object with node id {0} should be specialized before excluding the parent node"; - t[499] = "Object met node id {0} moet gespecialiseerd worden voordat de parent node excluded wordt"; - t[506] = "an tuple member cannot specialize an attribute that is a non-tuple attribute in its parent"; - t[507] = "een onderdeel van een tupel kan geen attribuut specialiseren die geen tupel is"; - t[518] = "less than {0}"; - t[519] = "kleiner dan {0}"; - t[520] = "value-set members unique. The member codes of a value set must be unique within the value set"; - t[521] = "value-set waardes uniek. Elke waarde mag maar \u00e9\u00e9n keer gebruikt worden in een value-set"; - t[522] = "Archetype root must reference an existing archetype"; - t[523] = "Use_archetype moet verwijzen naar een bestaand archetype"; - t[524] = "Differential path must point to a C_ATTRIBUTE in the flat parent, but it pointed instead to a {0}"; - t[525] = "Het differential pad moet naar een C_ATTRIBUTE verwijzen in het archetype dat gespecialiseerd wordt, maar in plaats daarvan verwijst het naar een {0}"; - t[534] = "Incorrect root node id {0}: it must match the specialization depth of the archetype, which is {1}"; - t[535] = "Fout in root node id {0}: Dit moet kloppen met de specialization depth van het archetype, {1}"; - t[536] = "Cannot redefine a closed archetype slot"; - t[537] = "Een gesloten archetype slot kan niet worden hergedefinieerd"; - t[548] = "Node ID {0} specialization depth does not conform to the archetype specialization depth {1}"; - t[549] = "De specialization depth van node id {0} klopt niet bij de specialization depth {1} van het archetype"; - t[558] = "Differential path {0} was not found in the parent archetype"; - t[559] = "Differential path {0} is niet gevonden in het archetype dat gespecialiseerd wordt"; - t[560] = "Attribute has {0} occurrences, but must be {1}"; - t[561] = "Attribuut komt {0} keer voor, maar dit moet {1} zijn"; - t[562] = "In the attribute tuple {0} members were specified, but the primitive tuple has {1} members instead"; - t[563] = "In het attribuut tupel zijn {0} members opgenomen, maar het primitive tuple heeft {1} members. Dit moet gelijk zijn"; - t[564] = "Duplicate Reference Model schema found for model ''{0}'' in file {1}, ignoring latter"; - t[565] = "Meer dan \u00e9\u00e9n Reference Model schema gevonden voor model ''{0}'' in bestand {1}. De tweede en volgende worden genegeerd"; - t[566] = "Attribute does not match cardinality {0}"; - t[567] = "Attribuut moet {0} waarden bevatten"; - t[570] = "C_OBJECT in this archetype with node id {0} is prohibited, which means its node id must be the same as parent {1}"; - t[571] = "Het C_OBJECT in dit archetype met node id {0} heeft 0 als maximum occurrences (prohibited), maar het node id is anders dan die van het C_OBJECT dat gespecialiseerd wordt {1}"; + t[1] = "Project-Id-Version: \nReport-Msgid-Bugs-To: \nPO-Revision-Date: \nLast-Translator: Pieter Bos \nLanguage-Team: \nLanguage: nl\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nX-Generator: Poedit 3.3.2\n"; + t[2] = "Merged schema {0} into schema {1}"; + t[3] = "Schema {0} samengevoegd in schema {1}"; + t[6] = "RM Release version {0} is an invalid format for a version, should be x.x.x-(rc|alpha(x)?)?"; + t[7] = "Het formaat van de RM release version {0} klopt niet. dit moet in het formaat x.x.x-(rc|alpha(x)?)? zijn"; + t[8] = "value-set id defined. The identifying code of a value set must be defined in the term definitions of the terminology of the current archetype"; + t[9] = "value-set id gedefinieerd. De identificerende code van een value set moet in de termdefinities van de terminologie van dit archetype opgenomen zijn."; + t[14] = "The cardinality {0} of attribute {2}.{3} does not match cardinality {1} of the reference model"; + t[15] = "De cardinaliteit {0} van attribuut {2}.{3} klopt niet met de cardinaliteit {1} uit het referentiemodel"; + t[16] = "Time"; + t[17] = "Tijd"; + t[22] = "No value. Reason: "; + t[23] = "Geen waarde. Reden: "; + t[24] = "End time"; + t[25] = "Eindtijd"; + t[26] = "Reference Model BMM schema {0} incompatible with current release {1} of the tool; obtain up to date schemas"; + t[27] = "Bmm Schema {0} kan niet worden geladen met versie {1} van deze software"; + t[32] = "Sibling order {0} refers to missing node id"; + t[33] = "Sibling order {0} verwijst naar een ontbrekende node id"; + t[34] = "Yes"; + t[35] = "Ja"; + t[40] = "The code specialization depth of code {0} is {1}, which is greater than archetype specialization depth {2}"; + t[41] = "De specialization depth of code {0} is {1}, maar mag niet groter zijn dan {2}, de specialization depth van het archetype"; + t[42] = "Object does not match tuple: {0}"; + t[43] = "Object komt niet overeen met tupel: {0}"; + t[44] = "Original language is missing in archetype"; + t[45] = "Archetype heeft geen originele taal"; + t[46] = "Syntax error: existence must be one of 0..0, 0..1, or 1..1, but was {0}"; + t[47] = "Syntaxfout: existence moet een van 0..0, 0..1 of 1..1 zijn, maar was {0}"; + t[48] = "Use_archetype references archetype id {0}, but no archetype was found"; + t[49] = "Use_archetype verwijst naar archetype met id {0}, maar dit archetype kon niet gevonden worden"; + t[54] = "ADL version {0} is an invalid format for a version, should be x.x.x-(rc|alpha(x)?)?"; + t[55] = "ADL-versie {0} is in een incorrect formaat. Dit zou een versie in het formaat x.x.x-(rc|alpha(x)?)? moeten zijn"; + t[56] = "C_OBJECT in this archetype with class {0} is prohibited, which means its class must be the same as parent type {1}"; + t[57] = "Het C_OBJECT in dit archetype met klasse {0} heeft 0 als maximum occurrences (prohibited), maar heeft niet dezelfde klasse als het C_OBJECT dat gespecializeerd wordt: {1}"; + t[58] = "Differential path must point to a C_ATTRIBUTE in the flat parent, but it pointed instead to a {0}"; + t[59] = "Het differential pad moet naar een C_ATTRIBUTE verwijzen in het archetype dat gespecialiseerd wordt, maar in plaats daarvan verwijst het naar een {0}"; + t[60] = "Attribute {0}.{1} cannot be constrained by a {2}"; + t[61] = "Attribuut {0}.{1} kan niet worden beperkt met een {2}"; + t[64] = "Cannot redefine a closed archetype slot"; + t[65] = "Een gesloten archetype slot kan niet worden hergedefinieerd"; + t[70] = "value set code {0} is used in value set {1}, but not present in terminology"; + t[71] = "de waardeset-code {0} is gebruikt in waardeset {1}, maar is niet aanwezig in de terminologie"; + t[82] = "Code {0} is in the terminology, but not used in the archetype"; + t[83] = "Code {0} uit de terminologie is niet gebruikt in de definitie van het archetype"; + t[84] = "The specialisation depth of the archetypes must be one greater than the specialisation depth of the parent archetype"; + t[85] = "De specialisation depth van het archetype moet \u00e9\u00e9n groter zijn dan die van het gespecialiseerde archetype"; + t[90] = "no magnitude"; + t[91] = "geen waarde"; + t[96] = "Attribute {0} of class {1} does not match existence {2}"; + t[97] = "Attribuut {0} van class {1} komt niet overeen met existence {2}"; + t[104] = "an error occurred that has no standard codes"; + t[105] = "er is een fout opgetreden zonder standaard-code"; + t[110] = "an tuple member cannot specialize an attribute that is a non-tuple attribute in its parent"; + t[111] = "een onderdeel van een tupel kan geen attribuut specialiseren die geen tupel is"; + t[118] = "Attribute existence is {0}, which does not conform to parent existince {1}"; + t[119] = "De existence {0} van dit attribuut komt niet overeen met die de existence van het attribuut dat gespecializeerd wordt: {1}"; + t[122] = "The existence of attribute {0}.{1} is the same as in the reference model - this is not allowed due to strict existence validation being enabled"; + t[123] = "De existence van attribuut {0}.{1} is hetzelfde als in het referentiemodel. Dit is niet toegestaan als strikte validatie ingeschakeld is"; + t[124] = "Protocol"; + t[125] = "Protocol"; + t[128] = "value code validity. Each value code (at-code) used in a term constraint in the archetype definition must be defined in the term_definitions part of the terminology of the flattened form of the current archetype."; + t[129] = "Geldigheid van een value code. Elke value code (at-code) gebruikt in een term constraint in de definitie van het archetype moet in de term definities van de flat form van dit archetype opgenomen zijn."; + t[130] = "Meaning"; + t[131] = "Betekenis"; + t[132] = "The path {0} referenced in the rm visibility does not exist in the flat archetype"; + t[133] = "Het pad {0} gebruikt in de rm visibility bestaat niet in het flattened archetype"; + t[138] = "Attribute {0}.{1} cannot contain type {2}"; + t[139] = "Attribuut {0}.{1} mag geen type {2} bevatten"; + t[142] = "Duplicate Reference Model schema found for model ''{0}'' in file {1}, ignoring latter"; + t[143] = "Meer dan \u00e9\u00e9n Reference Model schema gevonden voor model ''{0}'' in bestand {1}. De tweede en volgende worden genegeerd"; + t[154] = "''rm_schemas_load_list'' config setting mentions non-existent schema {0}"; + t[155] = "De instelling \u2018\u2019rm_schemas_load_list\u2019\u2019 bevat een schema dat niet bestaat: {0}"; + t[156] = "Attribute cardinality {0} does not conform to parent cardinality {1}"; + t[157] = "De cardinaliteit {0} van dit attribuut komt niet overeen met de cardinaliteit van het attribuut dat gespecializeerd wordt: {1}"; + t[158] = "The node_id of the root object of the archetype must be of the form id1'{.1}'*, where the number of .1 components equals the specalisation depth, and must be defined in the terminology"; + t[159] = "De node id van het bovenste object van het archetype moet van de form id'{.1}'* zijn, waar het aantal van .1 onderdelen gelijk is aan de specialization depth, and de code moet bestaan in de terminologie"; + t[160] = "Error in parent archetype. Fix those errors before continuing with this archetype: {0}"; + t[161] = "Fout in het gespecialiseerde archetype. Los deze fout in het bovenliggende archetype eerst op, alvorens verder te gaan met dit archetype. De gevonden fouten: {0}"; + t[162] = "Code {0} from the C_TERMINOLOGY_CODE constraint has specialization depth {1}, but this must be no greater than {2}"; + t[163] = "Code {0} van de C_TERMINOLOGY_CODE heeft specialization depth {1}, maar dit mag niet groter dan {2} zijn voor dit archetype"; + t[164] = "Translation details language {0} has an incorrect key: {1}"; + t[165] = "De beschrijving van de vertaling {0} zou een gelijke sleutelwaarde als de taal moeten hebben, maar heeft de waarde {1}"; + t[166] = "Use_archetype points to type {0}, which is not conformant for type {1} of the archetype root used"; + t[167] = "Use_archetype verwijst naar een pad met type {0}. Dit komt niet overeen met type {1} zoals opgegeven in use_archetype"; + t[168] = "Use_node (C_COMPLEX_OBJECT_PROXY) points to a path that resolves to more than one object"; + t[169] = "Use_node, hergebruik van een deel van het archetype, verwijst naar een pad dat verwijst naar meer dan \u00e9\u00e9n object"; + t[178] = "{0} and {1}"; + t[179] = "{0} en {1}"; + t[184] = "Object with node id {0} should be specialized before excluding the parent node"; + t[185] = "Object met node id {0} moet gespecialiseerd worden voordat de parent node excluded wordt"; + t[196] = "The validation of the parent archetype failed"; + t[197] = "Het bovenliggende archetype bevat een fout, en valideert daardoor niet. Daardoor kan dit archetype niet gevalideerd worden."; + t[200] = "Multiple values for Primitive Object constraint {0}: {1}"; + t[201] = "Meerdere waarden voor Primitive Object constraint {0}: {1}"; + t[204] = "The occurrences of all C_OBJECTS under this attributes is at least {0}, which does not fit in the upper limit of the cardinality of the attribute, {1}"; + t[205] = "De occurrences van alle C_OBJECTS onder dit attribuut is ten minste {0}. Dat past niet in de maximale cardinaliteit van het attibruut {1}"; + t[208] = "A differential path was used in an attribute, but this is not allowed in an archetype that has no parent"; + t[209] = "In dit attribuut is een differential path gebruikt, maar dat is niet toegestaan in een niet specialiserend archetype"; + t[210] = "Language {0} is defined in the translations, but is not present in the terminology"; + t[211] = "Taal {0} is opgenomen bij de vertalingen, maar ontbreekt in de terminologie"; + t[214] = "Code {0} from the C_TERMINOLOGY_CODE constraint is not defined in the terminology"; + t[215] = "Code {0} van deze C_TERMINOLOGY_CODE bestaat niet in de terminology"; + t[218] = "participations"; + t[219] = "deelnemers"; + t[220] = "value-set members unique. The member codes of a value set must be unique within the value set"; + t[221] = "value-set waardes uniek. Elke waarde mag maar \u00e9\u00e9n keer gebruikt worden in een value-set"; + t[236] = "Current state"; + t[237] = "Huidige toestand"; + t[242] = "Schema {0} archetype parent class {1} not defined in schema"; + t[243] = "Schema {0} archetype parent class {1} niet gedefinieerd in schema"; + t[244] = "The validation of a template overlay failed"; + t[245] = "De validate van een template overlay is niet geslaagd"; + t[250] = "Archetype root must have an archetype reference or be prohibited (occurrences matches 0)"; + t[251] = "Use_archetype moet verwijzen naar een archetype, of beperkt zijn tot occurrences 0"; + t[252] = "Use_archetype {0} does not match the expression of the archetype slot it specialized in the parent"; + t[253] = "Use_archetype {0} komt niet overeen met de restricties van het archetype slot dat het specialiseert"; + t[254] = "Start time"; + t[255] = "Starttijd"; + t[260] = "RM type in id {0} does not match RM type in definition {1}"; + t[261] = "Reference model type {0} correspondeert niet met het reference model type {1} in de definitie van het archetype"; + t[262] = "Duplicate instance of Reference Model model {0} found; original schema {1}; ignoring instance from schema {2}"; + t[263] = "Dubbele instantie van reference model {0} gevonden. Het originele schema is {1}. Het schema van instantie {2} wordt genegeerd"; + t[264] = "Time of observation"; + t[265] = "Tijd van observatie"; + t[266] = "Expiry time"; + t[267] = "Verlooptijd"; + t[268] = "at least {0}"; + t[269] = "minimaal {0}"; + t[270] = "Description"; + t[271] = "Beschrijving"; + t[272] = "Care flow step"; + t[273] = "Stap in zorgproces"; + t[274] = "Differential path {0} was not found in the parent archetype"; + t[275] = "Differential path {0} is niet gevonden in het archetype dat gespecialiseerd wordt"; + t[276] = "Use_node (C_COMPLEX_OBJECT_PROXY) points to a path that cannot be found: {0}"; + t[277] = "Use_node, hergebruik van een deel van het archetype, verwijst naar een pad dat niet kan worden gevonden: {0}"; + t[282] = "Units display name"; + t[283] = "Weergavenaam van eenheid"; + t[284] = "The attribute contains {0} objects that are required, but only has an upper cardinality of {1}"; + t[285] = "Het attribuut bevat {0} waarden die verplicht zijn, maar heeft een maximale cardinaliteit van {1}"; + t[286] = "The attribute {0} of type {1} can only have a single value, but the occurrences of the C_OBJECTS below has an upper limit of more than 1"; + t[287] = "Het attribuut {0} van type {1} kan maar \u00e9\u00e9n waarde hebben, maar de occurrences van de C_OBJECTS in dit attibuut heeft een maximale limiet van meer dan 1"; + t[292] = "value-set members defined. The member codes of a value set must be defined in the term definitions of the terminology of the flattened form of the current archetype"; + t[293] = "value-set waardes gedefinieerd. De waardes uit een value-set moeten in de terminology opgenomen zijn van de flat form van dit archetype."; + t[296] = "Tuple member attribute {0} is not an attribute of type {1}"; + t[297] = "Onderdeel van tupel {0} is geen attribuut van type {1}"; + t[302] = "Type name {0} does not exist"; + t[303] = "Type met naam {0} bestaat niet"; + t[304] = "empty"; + t[305] = "leeg"; + t[306] = "anything"; + t[307] = "willekeurig"; + t[308] = "The value {0} must be one of:"; + t[309] = "De waarde {0} moet aan een van de volgende voorwaarden voldoen:"; + t[310] = "Composer"; + t[311] = "Opsteller"; + t[312] = "Syntax error: existence must be one of 0..0, 0..1, or 1..1"; + t[313] = "Syntaxfout: existence moet een van 0..0, 0..1 of 1..1 zijn"; + t[316] = "Use_node (C_COMPLEX_OBJECT_PROXY) must point to a C_COMPLEX_OBJECT, but points to a {0}"; + t[317] = "Use_node, hergebruik van een deel van het archetype, moet naar een C_COMPLEX_OBJECT verwijzen, maar verwijst naar een {0}"; + t[318] = "Error"; + t[319] = "Fout"; + t[324] = "Attribute does not match cardinality {0}"; + t[325] = "Attribuut moet {0} waarden bevatten"; + t[326] = "Node id {0} already used in path {1}"; + t[327] = "Node id {0} is al gebruikt in pad {1}"; + t[328] = "Object should be type {0}, but was {1}"; + t[329] = "Object moet van type {0} zijn, maar is van type {1}"; + t[330] = "The path {0} referenced in the annotations does not exist in the flat archetype or reference model"; + t[331] = "Het pad {0} gebruikt in de annotations bestaat niet in het flattened archetype of referentiemodel"; + t[332] = "Function of participant"; + t[333] = "Functie van de deelnemer"; + t[334] = "Original language {0} is not defined in the terminology"; + t[335] = "Originele taal {0} ontbreekt in de terminologie"; + t[338] = "The attribute cardinality interval has lower > upper, this is not allowed"; + t[339] = "Het attribuut cardinality interval heeft lower > upper. Dat is niet toegestaan"; + t[346] = "greater than {0}"; + t[347] = "groter dan {0}"; + t[350] = "less than {0}"; + t[351] = "kleiner dan {0}"; + t[352] = "other details"; + t[353] = "verdere details"; + t[354] = "code in terminology not used in archetype definition"; + t[355] = "code uit terminologie is niet gebruikt in de definitie van het archetype"; + t[356] = "A closed archetype slot cannot have its includes or excludes assertions modified"; + t[357] = "Een gesloten archetype slot kan geen wijzigingen meer bevatten aan de includes en excludes-onderdelen"; + t[358] = "Context"; + t[359] = "Context"; + t[360] = "Attribute {0} is a non-tuple attribute in the parent archetype, but a tuple attribute in the current archetype. That is not allowed"; + t[361] = "Attribuut {0} is geen tuple in het archetype dat gespecializeerd wordt, maar wel een tuple attribuut in het huidige archetype. Dat is niet toegestaan"; + t[362] = "Template overlay {0} had validation errors"; + t[363] = "Template overlay {0} heeft validatiefouten"; + t[370] = "No"; + t[371] = "Nee"; + t[376] = "The value {0} must be {1}"; + t[377] = "De waarde {0} moet {1} zijn"; + t[378] = "equal to {0}"; + t[379] = "gelijk aan {0}"; + t[380] = "Node id {0} is not valid here"; + t[381] = "Node id {0} is hier niet geldig"; + t[382] = "Node id {0} is not valid here because it redefines an object illegally"; + t[383] = "Node id {0} is hiet niet geldig omdat het een object herdefinieert waar dat niet is toegestaan"; + t[386] = "Id code {0} in terminology is of a different specialization depth than the archetype"; + t[387] = "Id code {0} uit de terminologie heeft een andere specialization depth dan het archetype"; + t[388] = "Setting"; + t[389] = "Setting"; + t[392] = "Feeder system audit"; + t[393] = "Audit van aanleverend systeem"; + t[394] = "at path: "; + t[395] = "op het pad: "; + t[396] = "Term binding key {0} is not present in the terminology"; + t[397] = "De code {0} van een term binding bestaat niet in de terminologie"; + t[404] = "Syntax error: terminology not specified"; + t[405] = "Syntaxfout: terminologie ontbreekt"; + t[408] = "The Archetype with id {0} cannot be found"; + t[409] = "Archetype met id {0} kan niet worden gevonden"; + t[410] = "BMM Schema load error"; + t[411] = "Fout bij het laden van een BMM schema"; + t[412] = "Incorrect root node id {0}: it must match the specialization depth of the archetype, which is {1}"; + t[413] = "Fout in root node id {0}: Dit moet kloppen met de specialization depth van het archetype, {1}"; + t[414] = "Code {0} from C_TERMINOLOGY_CODE constraint is not defined in the terminology"; + t[415] = "Code {0} van deze C_TERMINOLOGY_CODE bestaat niet in de terminologie"; + t[418] = "Attribute has {0} occurrences, but must be {1}"; + t[419] = "Attribuut komt {0} keer voor, maar dit moet {1} zijn"; + t[420] = "No Reference Model schema found for package ''{0}''"; + t[421] = "Geen referentiemodel-schema gevonden voor package \u201c{0}\u201d"; + t[424] = "Duplicate attribute constraint with name {0}"; + t[425] = "Attribuut met naam {0} is twee keer gedefinieerd - dit mag maar \u00e9\u00e9n keer zijn"; + t[428] = "Archetype terminology not defined"; + t[429] = "Archetype terminology ontbreekt"; + t[430] = "Name"; + t[431] = "Naam"; + t[432] = "node id must be defined in flat terminology"; + t[433] = "node id ontbreekt in de flat terminologie"; + t[436] = "value code {0} is used in value set {1}, but not present in terminology"; + t[437] = "de waarde-code {0} is gebruikt in waarde {1}, maar is niet aanwezig in de terminologie"; + t[438] = "C_OBJECT with RM type {0} must have a node id"; + t[439] = "C_OBJECT met RM type {0} moet een node id hebben, maar heeft dat niet"; + t[440] = "Original language not defined in terminology"; + t[441] = "Originele taal bestaat niet in de terminologie"; + t[446] = "The person themselves "; + t[447] = "De persoon zelf"; + t[448] = "Id code {0} in terminology is not a valid term code, should be id, ac or at, followed by digits"; + t[449] = "Id code {0} in de terminology is geen geldige term-code. De code zou moeten beginnen met id, ac of at, gevolgd door getallen"; + t[450] = "type name {0} does not conform to {1}"; + t[451] = "Typenaam {0} klopt niet met {1}"; + t[452] = "The occurrences upper limit of the C_OBJECT {0} was {1}, which is greater than the parent attribute cardinality {2}"; + t[453] = "De bovenste limiet van de occurrences van dit C_OBJECT {0} was {1}. Dat is groter dan de cardinaliteit van het attribuut dat deze C_OBJECT bevat, {2}"; + t[454] = "Performer"; + t[455] = "Uitvoerder"; + t[456] = "Archetype terminology contains no term definitions"; + t[457] = "De terminologie van dit archetype bevat geen termdefinities"; + t[460] = "Could not find parent object for {0} but it should have been prechecked. Could you report this as a bug?"; + t[461] = "Kan parent object voor {0} niet vinden. Deze melding is waarschijnlijk een bug, zou u dat kunnen melden?"; + t[462] = "The archetype id {0} does not match the possible archetype ids."; + t[463] = "Use_archetype met {0} klopt niet met de mogelijke archetype kids"; + t[464] = "Archetype root must reference an existing archetype"; + t[465] = "Use_archetype moet verwijzen naar een bestaand archetype"; + t[466] = "Node id {0} is used in the archetype, but missing in the terminology"; + t[467] = "Node id {0} is gebruikt in het archetype, maar ontbreekt in de terminologie"; + t[468] = "Archetype with id {0} used in use_archetype, but it was not found"; + t[469] = "Archetype met id {0} is gebruikt met use_archetype, maar het archetype kon niet worden gevonden"; + t[474] = "State transition reason"; + t[475] = "Reden van toestandsovergang"; + t[476] = "Warning"; + t[477] = "Waarschuwing"; + t[478] = "C_OBJECT in this archetype with node id {0} is prohibited, which means its node id must be the same as parent {1}"; + t[479] = "Het C_OBJECT in dit archetype met node id {0} heeft 0 als maximum occurrences (prohibited), maar het node id is anders dan die van het C_OBJECT dat gespecialiseerd wordt {1}"; + t[482] = "Term binding key {0} in path format is not present in archetype"; + t[483] = "Het pad {0} uit een term binding kan niet worden gevonden in het archetype"; + t[486] = "Single valued attributes can not have a cardinality"; + t[487] = "Attributen die maar \u00e9\u00e9n waarde kunnen bevatten mogen geen cardinaliteit hebben"; + t[488] = "The primitive object of type {0} does not conform to non-primitive object with type {1}"; + t[489] = "Primitive object met RM type {0} klopt niet bij niet primitief object met type {1}"; + t[490] = "Term binding key {0} is not present in terminology"; + t[491] = "De code {0} van een term binding bestaat niet in de terminologie"; + t[492] = "An object with the new node id {0} cannot be prohibited"; + t[493] = "Een object met een nieuw node id {0} mag geen occurrences van maximaal 0 hebben"; + t[494] = "Message at {0} ({1}): {2}"; + t[495] = "Bericht bij {0} ({1}): {2}"; + t[498] = "The cardinality of Attribute {0}.{1} is the same as in the reference model - this is not allowed due to strict multiplicities validation being enabled"; + t[499] = "De cardinaliteit van attribuut {0}.{1} is hetzelfde als in het referentiemodel. Dit is niet toegestaan als strikte validatie is ingeschakeld"; + t[500] = "at most {0}"; + t[501] = "maximaal {0}"; + t[506] = "Instruction details"; + t[507] = "Details van de instructie"; + t[508] = "Attribute tuple with members {0} does not conform to parent attribute tuple"; + t[509] = "Atribuut-tupel met members {0} komt niet overeen met attribuut-tupel dat gespecializeerd wordt"; + t[510] = "Units system"; + t[511] = "Systeem van eenheid"; + t[512] = "The use_archetype with type {0} does not match the archetype slow (allow_archetype) with type {1}"; + t[513] = "Use_archetype met {0} klopt niet met het archetype slot met type {1} uit het gespecialiseerde archetype"; + t[520] = "Use_node (C_COMPLEX_OBJECT_PROXY) points to type {0}, which does not conform to type {1}"; + t[521] = "Use_node, hergebruik van een deel van het archetype, verwijst naar type {0}, maar dat klopt niet met type {1} zoals gevonden uit het pad"; + t[522] = "State transition"; + t[523] = "Toestandsovergang"; + t[524] = "Term binding key {0} points to a path that cannot be found in the archetype"; + t[525] = "Het pad {0} uit een term binding kan niet worden gevonden in het archetype"; + t[526] = "A {0} cannot specialize a {1}"; + t[527] = "Een {0} kan niet een {1} specialiseren"; + t[530] = "the given id code is not valid"; + t[531] = "de gegeven id code is niet geldig"; + t[532] = "The existence {0} of attribute {2}.{3} does not match existence {1} of the reference model"; + t[533] = "De existence {0} van attribuut {2}.{3} klopt niet bij existence {1} van het referentiemodel"; + t[534] = "The node id is not in the form id1.1....1: {0}"; + t[535] = "De node id is niet in de form id1(.1)*: {0}"; + t[536] = "Use_archetype specializes an archetype root pointing to {0}, but the archetype {1} is not a descendant"; + t[537] = "Use_archetype {1} specialiseert een andere use_archetype die verwijst naar {0}. Maar het archeytpe {1} specialiseert niet {0}"; + t[538] = "A specialized archetype slot must have the same id as the parent id {0}, but it was {1}"; + t[539] = "Een specialiserend archetype slot moet dezelfde id hebben als in het gespecialiseerde archetype {0}, maar het was {1}"; + t[540] = "Parent archetype {0} not found or can not be flattened"; + t[541] = "Parent archetype {0} niet gevonden, of het bevat een fout waardoor het niet kan worden geflattened"; + t[542] = "Mode of participation"; + t[543] = "Manier van deelnemen"; + t[546] = "Assumed value {0} from the C_TERMINOLOGY_CODE is not part of value set {1}. Expected one of {2}"; + t[547] = "De assumed value {0} van de C_TERMINOLOGY_CODE is geen onderdeel van value set/codelijst {1}. Verwacht was een van de codes {2}"; + t[550] = "In the attribute tuple {0} members were specified, but the primitive tuple has {1} members instead"; + t[551] = "In het attribuut tupel zijn {0} members opgenomen, maar het primitive tuple heeft {1} members. Dit moet gelijk zijn"; + t[554] = "value set code {0} is not present in terminology"; + t[555] = "de code {0} van een value set bestaat niet in de terminologie"; + t[556] = "Node id {0} does not conform to {1}"; + t[557] = "Node id {0} klopt niet met {1}"; + t[558] = "no value"; + t[559] = "geen waarde"; + t[560] = "Node ID {0} specialization depth does not conform to the archetype specialization depth {1}"; + t[561] = "De specialization depth van node id {0} klopt niet bij de specialization depth {1} van het archetype"; + t[562] = "{0} is not a known attribute of {1}"; + t[563] = "{0} is niet een bekend attribuut van {1}"; + t[564] = "Location"; + t[565] = "Locatie"; + t[566] = "Magnitude status"; + t[567] = "Status van hoeveelheid"; + t[568] = "Archetype referenced in use_archetype points to class {0}, which does not exist in this reference model"; + t[569] = "Het archetype waarnaar use_archetype verwijst, verwijst naar klasse {0}. Deze klasse bestaat niet in het referentiemodel"; + t[576] = "Multiple values for Tuple constraint {0}: {1}"; + t[577] = "Meerdere waarden voor Tuple constraint {0}: {1}"; + t[578] = "Documentation"; + t[579] = "Documentatie"; + t[580] = "The specialisation depth of the archetype, {0}, must be one greater than the specialisation depth of the parent archetype, {1}"; + t[581] = "De specialisation depth van het archetype, {0}, moet \u00e9\u00e9n groter zijn dan die van het gespecialiseerde archetype, {1}"; table = t; } public java.lang.Object handleGetObject (java.lang.String msgid) throws java.util.MissingResourceException { int hash_val = msgid.hashCode() & 0x7fffffff; - int idx = (hash_val % 287) << 1; + int idx = (hash_val % 293) << 1; { java.lang.Object found = table[idx]; if (found == null) @@ -271,11 +357,11 @@ public java.lang.Object handleGetObject (java.lang.String msgid) throws java.uti if (msgid.equals(found)) return table[idx + 1]; } - int incr = ((hash_val % 285) + 1) << 1; + int incr = ((hash_val % 291) + 1) << 1; for (;;) { idx += incr; - if (idx >= 574) - idx -= 574; + if (idx >= 586) + idx -= 586; java.lang.Object found = table[idx]; if (found == null) return null; @@ -287,13 +373,13 @@ public java.util.Enumeration getKeys () { return new java.util.Enumeration() { private int idx = 0; - { while (idx < 574 && table[idx] == null) idx += 2; } + { while (idx < 586 && table[idx] == null) idx += 2; } public boolean hasMoreElements () { - return (idx < 574); + return (idx < 586); } public java.lang.Object nextElement () { java.lang.Object key = table[idx]; - do idx += 2; while (idx < 574 && table[idx] == null); + do idx += 2; while (idx < 586 && table[idx] == null); return key; } }; From 6432de3118e525281138f00b7dba3d04ebc36d62 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Thu, 31 Aug 2023 15:20:27 +0200 Subject: [PATCH 20/20] Add test to confirm I18n is working for rm markdown serializer --- .../text/RmToMarkdownSerializerTest.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java index 9f5ff35f1..98c84e086 100644 --- a/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java +++ b/tools/src/test/java/com/nedap/archie/text/RmToMarkdownSerializerTest.java @@ -74,6 +74,29 @@ public void bloodPressure() throws Exception { } + @Test + public void dutchBloodPressure() throws Exception { + OperationalTemplate opt = createOPT("/ckm-mirror/local/archetypes/entry/observation/openEHR-EHR-OBSERVATION.blood_pressure.v1.1.0.adls"); + ExampleJsonInstanceGenerator structureGenerator = createExampleJsonInstanceGenerator("nl"); + I18n.setCurrentLocale(Locale.forLanguageTag("nl")); + + Map structure = structureGenerator.generate(opt); + String s = serializeToJson(structure, true); + //System.out.println(s); + + Observation observation = JacksonUtil.getObjectMapper(ArchieJacksonConfiguration.createStandardsCompliant()).readValue(s, Observation.class); + RmToMarkdownSerializer rmToMarkdownSerializer = new RmToMarkdownSerializer(); + rmToMarkdownSerializer.append(observation); + String serialized = rmToMarkdownSerializer.toString(); + + assertTrue(serialized, serialized.contains("Systole: 0.0mm[Hg] \n")); //' \n' = newline in Markdown + assertTrue(serialized, serialized.contains("Houding: Staand \n")); //' \n' = newline in Markdown + assertTrue(serialized, serialized.contains("### Bloeddruk")); + //and a Dutch translation from the I18n po file + assertTrue(serialized, serialized.contains("Tijd van observatie: 1 jan. 2018 12:00:00")); + + } + @Test public void bloodPressureComposition() throws Exception { Archetype report = TestUtil.parseFailOnErrors("/com/nedap/archie/flattener/openEHR-EHR-COMPOSITION.report.v1.adls"); @@ -303,7 +326,10 @@ public void compositionFeederAudit() throws Exception { private ExampleJsonInstanceGenerator createExampleJsonInstanceGenerator() { - ExampleJsonInstanceGenerator structureGenerator = new ExampleJsonInstanceGenerator(BuiltinReferenceModels.getMetaModels(), "en"); + return createExampleJsonInstanceGenerator("en"); + } + private ExampleJsonInstanceGenerator createExampleJsonInstanceGenerator(String language) { + ExampleJsonInstanceGenerator structureGenerator = new ExampleJsonInstanceGenerator(BuiltinReferenceModels.getMetaModels(), language); structureGenerator.setAddTwoInstancesWherePossible(false); structureGenerator.setTypePropertyName(TYPE_PROPERTY_NAME); return structureGenerator;