Skip to content

Commit 0f31c03

Browse files
committed
Add conversion to 2.0 (well, partially, for some reason)
1 parent be673b1 commit 0f31c03

6 files changed

Lines changed: 51 additions & 9 deletions

File tree

aom/src/main/java/com/nedap/archie/adl14/ADL14DescriptionConverter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ public class ADL14DescriptionConverter {
1010

1111
public void convert(Archetype archetype) {
1212
ResourceDescription description = archetype.getDescription();
13+
if(description == null) {
14+
return;
15+
}
1316
description.setLicence(description.getOtherDetails().remove("licence"));
1417
description.setOriginalNamespace(description.getOtherDetails().remove("original_namespace"));
1518
description.setOriginalPublisher(description.getOtherDetails().remove("original_publisher"));

opt14/build.gradle

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ dependencies {
1616
compile project(':path-queries')
1717
compile project(':utils')
1818
compile project(':tools')
19-
testCompile project(':openehr-rm')
20-
testCompile project(':archie-utils')
21-
testCompile project(':i18n')
19+
compile project(':referencemodels')
20+
compile project(':openehr-rm')
21+
compile project(':archie-utils')
22+
compile project(':i18n')
2223
testCompile project(':test-rm')
23-
testCompile project(':referencemodels')
24+
2425

2526

2627
xjc "javax.xml.bind:jaxb-api:$jaxbVersion"
Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
package com.nedap.archie.opt14;
22

3+
import com.google.common.collect.Lists;
4+
import com.nedap.archie.adl14.ADL14Converter;
5+
import com.nedap.archie.adl14.ADL2ConversionResultList;
6+
import com.nedap.archie.adl14.OpenEHRADL14ConversionConfiguration;
37
import com.nedap.archie.aom.ArchetypeHRID;
48
import com.nedap.archie.aom.Template;
9+
import com.nedap.archie.flattener.InMemoryFullArchetypeRepository;
10+
import org.openehr.referencemodels.BuiltinReferenceModels;
11+
12+
import java.io.IOException;
513

614
public class Opt14Converter {
715

8-
public Template convert(OPERATIONALTEMPLATE opt14) {
16+
public ADL2ConversionResultList convert(OPERATIONALTEMPLATE opt14, InMemoryFullArchetypeRepository adl2Archetypes) {
917
Template template = new Template();
1018
template.setArchetypeId(new ArchetypeHRID("openEHR-EHR-" + opt14.getDefinition().getRmTypeName() + "." + opt14.getTemplateId().getValue() + "v1.0.0"));
1119
template.setParentArchetypeId(opt14.getDefinition().getArchetypeId().getValue());
@@ -15,6 +23,13 @@ public Template convert(OPERATIONALTEMPLATE opt14) {
1523
DescriptionConverter.convert(template, opt14);
1624

1725
new DefinitionConverter().convert(template, opt14);
18-
return template;
26+
try {
27+
ADL14Converter converter = new ADL14Converter(BuiltinReferenceModels.getMetaModels(), OpenEHRADL14ConversionConfiguration.getConfig());
28+
converter.setExistingRepository(adl2Archetypes);
29+
ADL2ConversionResultList converted = converter.convert(Lists.newArrayList(template));
30+
return converted;
31+
} catch (IOException e) {
32+
throw new RuntimeException(e);
33+
}
1934
}
2035
}

opt14/src/test/java/com/nedap/archie/opt14/ConverterTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.nedap.archie.opt14;
22

3+
import com.nedap.archie.adl14.ADL2ConversionResultList;
34
import com.nedap.archie.adlparser.ADLParser;
45
import com.nedap.archie.aom.Archetype;
56
import com.nedap.archie.aom.Template;
@@ -28,8 +29,8 @@ public void procedureList() throws Exception {
2829
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
2930
try(InputStream stream = getClass().getResourceAsStream("/procedure_list.opt")) {
3031
OPERATIONALTEMPLATE opt14 = ((JAXBElement<OPERATIONALTEMPLATE>) unmarshaller.unmarshal(stream)).getValue();
31-
Template template = new Opt14Converter().convert(opt14);
32-
System.out.println(ADLArchetypeSerializer.serialize(template));
32+
ADL2ConversionResultList convert = new Opt14Converter().convert(opt14, repository);
33+
System.out.println(ADLArchetypeSerializer.serialize(convert.getConversionResults().get(0).getArchetype()));
3334
}
3435
}
3536

tools/src/main/java/com/nedap/archie/adl14/ADL14Converter.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.Comparator;
2020
import java.util.LinkedHashMap;
2121
import java.util.List;
22+
import java.util.Optional;
2223

2324
public class ADL14Converter {
2425

@@ -67,6 +68,8 @@ public ADL2ConversionResultList convert(List<Archetype> archetypes, ADL2Conversi
6768
for(TemplateOverlay overlay:t.getTemplateOverlays()) {
6869
templateOverlays.add(overlay);
6970
overlay.setRmRelease(t.getRmRelease());
71+
overlay.setOriginalLanguage(t.getOriginalLanguage());
72+
overlay.setTranslationList(t.getTranslationList());
7073
}
7174
}
7275
}
@@ -109,6 +112,25 @@ public ADL2ConversionResultList convert(List<Archetype> archetypes, ADL2Conversi
109112
}
110113
}
111114

115+
for(ADL2ConversionResult ar:resultList.getConversionResults()) {
116+
//template overlays have been processed as separate archetypes. So combine them here again
117+
if(ar.getArchetype() != null && ar.getArchetype() instanceof Template) {
118+
Template t = (Template) ar.getArchetype();
119+
120+
List<TemplateOverlay> newOverlays = new ArrayList<>();
121+
for(TemplateOverlay overlay:t.getTemplateOverlays()) {
122+
Optional<ADL2ConversionResult> convertedOverlay = resultList.getConversionResults().stream().filter(r -> r.getArchetypeId().startsWith(overlay.getArchetypeId().getFullId())).findFirst();
123+
if(convertedOverlay.isPresent()) {
124+
newOverlays.add((TemplateOverlay) convertedOverlay.get().getArchetype());
125+
} else {
126+
newOverlays.add(overlay);
127+
//TODO: add error
128+
}
129+
t.setTemplateOverlays(newOverlays);
130+
}
131+
}
132+
}
133+
112134

113135
return resultList;
114136
}

tools/src/main/java/com/nedap/archie/diff/TerminologyDifferentiator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ private void removeAdditionalTranslations(Archetype result) {
3232
// so remove all from the terminology that have not been speciafically defined in the archetype resource description
3333
List<String> translationsToRemove = new ArrayList<>();
3434
for(String key: result.getTerminology().getTermDefinitions().keySet()) {
35-
if(!result.getTranslations().containsKey(key) && !result.getTerminology().getOriginalLanguage().equals(key)) {
35+
if(!(result.getTranslations() != null && result.getTranslations().containsKey(key)) && !key.equals(result.getTerminology().getOriginalLanguage())) {
3636
translationsToRemove.add(key);
3737
}
3838
}

0 commit comments

Comments
 (0)