From 00f3c2e895fa172d76290434340b12478f9349f7 Mon Sep 17 00:00:00 2001 From: Lloyd McKenzie Date: Sun, 14 Apr 2024 22:31:54 -0600 Subject: [PATCH 1/3] Handle extra profiles on resources in an IG --- .../resources30_50/ImplementationGuide30_50.java | 15 +++++++++++++++ .../resources40_50/ImplementationGuide40_50.java | 11 +++++++++++ .../resources43_50/ImplementationGuide43_50.java | 16 +++++++++++++++- 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java index 56793307f..e657fdd2e 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java @@ -14,10 +14,16 @@ import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Date import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.MarkDown30_50; import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.String30_50; import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Uri30_50; +import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Canonical40_50; +import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Canonical43_50; import org.hl7.fhir.dstu3.model.ImplementationGuide; import org.hl7.fhir.exceptions.FHIRException; +import org.hl7.fhir.r4.model.Extension; +import org.hl7.fhir.r5.model.CanonicalType; import org.hl7.fhir.r5.model.Enumeration; +static final String EXT_IG_DEFINITION_RESOURCE_PROFILE = "http://hl7.org/fhir/5.0/StructureDefinition/extension-ImplementationGuide.definition.resource.profile"; + public class ImplementationGuide30_50 { public static org.hl7.fhir.dstu3.model.ImplementationGuide convertImplementationGuide(org.hl7.fhir.r5.model.ImplementationGuide src) throws FHIRException { @@ -204,10 +210,16 @@ public class ImplementationGuide30_50 { if (src.hasProfile()) { tgt.setExampleFor(Reference30_50.convertCanonicalToReference(src.getProfile().get(0))); tgt.setExample(true); + if (src.getProfile().size() > 1) { + for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size()-1)) { + tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Canonical30_50.convertCanonical(p)); + } + } } else if (src.hasIsExample()) tgt.setExample(src.getIsExample()); else tgt.setExample(false); + if (src.hasName()) tgt.setNameElement(String30_50.convertString(src.getNameElement())); if (src.hasDescription()) @@ -222,6 +234,9 @@ public class ImplementationGuide30_50 { return null; org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent(); ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt); + for (Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { + tgt.getProfile().add(Canonical30_50.convertCanonical((org.hl7.fhir.r3.model.CanonicalType)ext.getValue())); + } if (src.hasExampleFor()) { tgt.getProfile().add(Reference30_50.convertReferenceToCanonical(src.getExampleFor())); } else if (src.hasExample()) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ImplementationGuide40_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ImplementationGuide40_50.java index 8b5f92a6c..d0e8d2bfd 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ImplementationGuide40_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ImplementationGuide40_50.java @@ -17,7 +17,9 @@ import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Uri40_50; import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Url40_50; import org.hl7.fhir.convertors.conv40_50.datatypes40_50.special40_50.Reference40_50; import org.hl7.fhir.exceptions.FHIRException; +import org.hl7.fhir.r4.model.Extension; import org.hl7.fhir.r4.model.UrlType; +import org.hl7.fhir.r5.model.CanonicalType; import org.hl7.fhir.r5.model.ImplementationGuide; import org.hl7.fhir.utilities.Utilities; @@ -56,6 +58,7 @@ public class ImplementationGuide40_50 { static final String EXT_IG_DEFINITION_PARAMETER = "http://hl7.org/fhir/tools/StructureDefinition/ig-parameter"; static final String EXT_IG_DEFINITION_PARAM_URL_EXT = "http://hl7.org/fhir/tools/CodeSystem/ig-parameters"; static final String EXT_IG_DEFINITION_PARAM_URL_BASE = "http://hl7.org/fhir/guide-parameter-code"; + static final String EXT_IG_DEFINITION_RESOURCE_PROFILE = "http://hl7.org/fhir/5.0/StructureDefinition/extension-ImplementationGuide.definition.resource.profile"; public static org.hl7.fhir.r5.model.ImplementationGuide convertImplementationGuide(org.hl7.fhir.r4.model.ImplementationGuide src) throws FHIRException { if (src == null) @@ -322,6 +325,9 @@ public class ImplementationGuide40_50 { tgt.setIsExample(true); tgt.getProfile().add(Canonical40_50.convertCanonical(src.getExampleCanonicalType())); } + for (Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { + tgt.getProfile().add(Canonical40_50.convertCanonical((org.hl7.fhir.r4.model.CanonicalType)ext.getValue())); + } if (src.hasGroupingId()) tgt.setGroupingIdElement(Id40_50.convertId(src.getGroupingIdElement())); return tgt; @@ -343,6 +349,11 @@ public class ImplementationGuide40_50 { if (src.hasProfile() && (!src.hasIsExample() || src.getIsExample())) { tgt.setExample(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getProfile().get(0))); } + if (src.getProfile().size() > 1) { + for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size()-1)) { + tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Canonical40_50.convertCanonical(p)); + } + } if (src.hasGroupingId()) tgt.setGroupingIdElement(Id40_50.convertId(src.getGroupingIdElement())); return tgt; diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java index b759b009a..d69d5549f 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java @@ -3,6 +3,7 @@ package org.hl7.fhir.convertors.conv43_50.resources43_50; import java.util.stream.Collectors; import org.hl7.fhir.convertors.context.ConversionContext43_50; +import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Canonical40_50; import org.hl7.fhir.convertors.conv43_50.datatypes43_50.general43_50.CodeableConcept43_50; import org.hl7.fhir.convertors.conv43_50.datatypes43_50.metadata43_50.ContactDetail43_50; import org.hl7.fhir.convertors.conv43_50.datatypes43_50.metadata43_50.UsageContext43_50; @@ -17,6 +18,8 @@ import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Uri43_50; import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Url43_50; import org.hl7.fhir.convertors.conv43_50.datatypes43_50.special43_50.Reference43_50; import org.hl7.fhir.exceptions.FHIRException; +import org.hl7.fhir.r4.model.Extension; +import org.hl7.fhir.r5.model.CanonicalType; import org.hl7.fhir.utilities.Utilities; /* @@ -51,6 +54,7 @@ import org.hl7.fhir.utilities.Utilities; public class ImplementationGuide43_50 { static final String EXT_IG_DEFINITION_PARAMETER = "http://hl7.org/fhir/tools/StructureDefinition/ig-parameter"; + static final String EXT_IG_DEFINITION_RESOURCE_PROFILE = "http://hl7.org/fhir/5.0/StructureDefinition/extension-ImplementationGuide.definition.resource.profile"; public static org.hl7.fhir.r5.model.ImplementationGuide convertImplementationGuide(org.hl7.fhir.r4b.model.ImplementationGuide src) throws FHIRException { if (src == null) @@ -312,8 +316,13 @@ public class ImplementationGuide43_50 { tgt.setDescriptionElement(String43_50.convertStringToMarkdown(src.getDescriptionElement())); if (src.hasExampleBooleanType()) tgt.setIsExampleElement(Boolean43_50.convertBoolean(src.getExampleBooleanType())); - if (src.hasExampleCanonicalType()) + if (src.hasExampleCanonicalType()) { + tgt.setIsExample(true); tgt.getProfile().add(Canonical43_50.convertCanonical(src.getExampleCanonicalType())); + } + for (Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { + tgt.getProfile().add(Canonical43_50.convertCanonical((org.hl7.fhir.r43.model.CanonicalType)ext.getValue())); + } if (src.hasGroupingId()) tgt.setGroupingIdElement(Id43_50.convertId(src.getGroupingIdElement())); return tgt; @@ -337,6 +346,11 @@ public class ImplementationGuide43_50 { tgt.setExample(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getIsExampleElement())); if (src.hasProfile()) tgt.setExample(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getProfile().get(0))); + if (src.getProfile().size() > 1) { + for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size()-1)) { + tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Canonical43_50.convertCanonical(p)); + } + } if (src.hasGroupingId()) tgt.setGroupingIdElement(Id43_50.convertId(src.getGroupingIdElement())); return tgt; From 88d0a3d7c9040218638b7947c60a1028bae07f21 Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Wed, 17 Apr 2024 06:01:54 +1000 Subject: [PATCH 2/3] Compile fixes --- .../resources30_50/ImplementationGuide30_50.java | 12 +++++------- .../resources43_50/ImplementationGuide43_50.java | 4 ++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java index e657fdd2e..58b7ed571 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java @@ -14,18 +14,16 @@ import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Date import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.MarkDown30_50; import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.String30_50; import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Uri30_50; -import org.hl7.fhir.convertors.conv40_50.datatypes40_50.primitive40_50.Canonical40_50; -import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.Canonical43_50; import org.hl7.fhir.dstu3.model.ImplementationGuide; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.r4.model.Extension; import org.hl7.fhir.r5.model.CanonicalType; import org.hl7.fhir.r5.model.Enumeration; -static final String EXT_IG_DEFINITION_RESOURCE_PROFILE = "http://hl7.org/fhir/5.0/StructureDefinition/extension-ImplementationGuide.definition.resource.profile"; - public class ImplementationGuide30_50 { + static final String EXT_IG_DEFINITION_RESOURCE_PROFILE = "http://hl7.org/fhir/5.0/StructureDefinition/extension-ImplementationGuide.definition.resource.profile"; + public static org.hl7.fhir.dstu3.model.ImplementationGuide convertImplementationGuide(org.hl7.fhir.r5.model.ImplementationGuide src) throws FHIRException { if (src == null) return null; @@ -212,7 +210,7 @@ public class ImplementationGuide30_50 { tgt.setExample(true); if (src.getProfile().size() > 1) { for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size()-1)) { - tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Canonical30_50.convertCanonical(p)); + tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Uri30_50.convertCanonical(p)); } } } else if (src.hasIsExample()) @@ -234,8 +232,8 @@ public class ImplementationGuide30_50 { return null; org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent(); ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt); - for (Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { - tgt.getProfile().add(Canonical30_50.convertCanonical((org.hl7.fhir.r3.model.CanonicalType)ext.getValue())); + for (org.hl7.fhir.dstu3.model.Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { + tgt.getProfile().add(Uri30_50.convertCanonical((org.hl7.fhir.dstu3.model.UriType)ext.getValue())); } if (src.hasExampleFor()) { tgt.getProfile().add(Reference30_50.convertReferenceToCanonical(src.getExampleFor())); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java index d69d5549f..b043375a2 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java @@ -320,8 +320,8 @@ public class ImplementationGuide43_50 { tgt.setIsExample(true); tgt.getProfile().add(Canonical43_50.convertCanonical(src.getExampleCanonicalType())); } - for (Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { - tgt.getProfile().add(Canonical43_50.convertCanonical((org.hl7.fhir.r43.model.CanonicalType)ext.getValue())); + for (org.hl7.fhir.r4b.model.Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { + tgt.getProfile().add(Canonical43_50.convertCanonical((org.hl7.fhir.r4b.model.CanonicalType)ext.getValue())); } if (src.hasGroupingId()) tgt.setGroupingIdElement(Id43_50.convertId(src.getGroupingIdElement())); From 7992610ccdcf0be988f9498a35402cfa74cd4fcf Mon Sep 17 00:00:00 2001 From: Lloyd McKenzie Date: Wed, 29 May 2024 16:55:30 -0600 Subject: [PATCH 3/3] Corrections to profile conversion, added test case --- .../resources30_50/ImplementationGuide30_50.java | 12 ++++++------ .../resources40_50/ImplementationGuide40_50.java | 2 +- .../resources43_50/ImplementationGuide43_50.java | 6 +++--- .../conv40_50/ImplementationGuide40_50Test.java | 10 ++++++++++ .../src/test/resources/implementation_guide_50.json | 3 ++- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java index e657fdd2e..b26c0f7cd 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ImplementationGuide30_50.java @@ -22,10 +22,10 @@ import org.hl7.fhir.r4.model.Extension; import org.hl7.fhir.r5.model.CanonicalType; import org.hl7.fhir.r5.model.Enumeration; -static final String EXT_IG_DEFINITION_RESOURCE_PROFILE = "http://hl7.org/fhir/5.0/StructureDefinition/extension-ImplementationGuide.definition.resource.profile"; - public class ImplementationGuide30_50 { + static final String EXT_IG_DEFINITION_RESOURCE_PROFILE = "http://hl7.org/fhir/5.0/StructureDefinition/extension-ImplementationGuide.definition.resource.profile"; + public static org.hl7.fhir.dstu3.model.ImplementationGuide convertImplementationGuide(org.hl7.fhir.r5.model.ImplementationGuide src) throws FHIRException { if (src == null) return null; @@ -211,8 +211,8 @@ public class ImplementationGuide30_50 { tgt.setExampleFor(Reference30_50.convertCanonicalToReference(src.getProfile().get(0))); tgt.setExample(true); if (src.getProfile().size() > 1) { - for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size()-1)) { - tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Canonical30_50.convertCanonical(p)); + for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size())) { + tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Reference30_50.convertCanonicalToReference(p)); } } } else if (src.hasIsExample()) @@ -234,8 +234,8 @@ public class ImplementationGuide30_50 { return null; org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent tgt = new org.hl7.fhir.r5.model.ImplementationGuide.ImplementationGuideDefinitionResourceComponent(); ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt); - for (Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { - tgt.getProfile().add(Canonical30_50.convertCanonical((org.hl7.fhir.r3.model.CanonicalType)ext.getValue())); + for (org.hl7.fhir.dstu3.model.Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { + tgt.getProfile().add(Reference30_50.convertReferenceToCanonical((org.hl7.fhir.dstu3.model.Reference)ext.getValue())); } if (src.hasExampleFor()) { tgt.getProfile().add(Reference30_50.convertReferenceToCanonical(src.getExampleFor())); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ImplementationGuide40_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ImplementationGuide40_50.java index d0e8d2bfd..6aa82d66a 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ImplementationGuide40_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ImplementationGuide40_50.java @@ -350,7 +350,7 @@ public class ImplementationGuide40_50 { tgt.setExample(ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().convertType(src.getProfile().get(0))); } if (src.getProfile().size() > 1) { - for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size()-1)) { + for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size())) { tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Canonical40_50.convertCanonical(p)); } } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java index d69d5549f..7e6999aee 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ImplementationGuide43_50.java @@ -320,8 +320,8 @@ public class ImplementationGuide43_50 { tgt.setIsExample(true); tgt.getProfile().add(Canonical43_50.convertCanonical(src.getExampleCanonicalType())); } - for (Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { - tgt.getProfile().add(Canonical43_50.convertCanonical((org.hl7.fhir.r43.model.CanonicalType)ext.getValue())); + for (org.hl7.fhir.r4b.model.Extension ext: src.getExtensionsByUrl(EXT_IG_DEFINITION_RESOURCE_PROFILE)) { + tgt.getProfile().add(Canonical43_50.convertCanonical((org.hl7.fhir.r4b.model.CanonicalType)ext.getValue())); } if (src.hasGroupingId()) tgt.setGroupingIdElement(Id43_50.convertId(src.getGroupingIdElement())); @@ -347,7 +347,7 @@ public class ImplementationGuide43_50 { if (src.hasProfile()) tgt.setExample(ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().convertType(src.getProfile().get(0))); if (src.getProfile().size() > 1) { - for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size()-1)) { + for (CanonicalType p: src.getProfile().subList(1, src.getProfile().size())) { tgt.addExtension(EXT_IG_DEFINITION_RESOURCE_PROFILE, Canonical43_50.convertCanonical(p)); } } diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv40_50/ImplementationGuide40_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv40_50/ImplementationGuide40_50Test.java index df5919c64..6d71403d4 100644 --- a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv40_50/ImplementationGuide40_50Test.java +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv40_50/ImplementationGuide40_50Test.java @@ -36,6 +36,16 @@ public class ImplementationGuide40_50Test { } + @Test + public void testRoundTripProfiles() throws IOException { + ImplementationGuide r5_actual = getR5ImplementationGuide(); + + org.hl7.fhir.r4.model.ImplementationGuide converted = (org.hl7.fhir.r4.model.ImplementationGuide) VersionConvertorFactory_40_50.convertResource(r5_actual); + ImplementationGuide r5_converted = (ImplementationGuide) VersionConvertorFactory_40_50.convertResource(converted); + + assertEquals(r5_actual.getDefinition().getResourceFirstRep().getProfile().size(), r5_converted.getDefinition().getResourceFirstRep().getProfile().size()); + } + private ImplementationGuide getR5ImplementationGuide() throws IOException { ImplementationGuide r5_actual; InputStream r5_stream = this.getClass().getResourceAsStream("/implementation_guide_50.json"); diff --git a/org.hl7.fhir.convertors/src/test/resources/implementation_guide_50.json b/org.hl7.fhir.convertors/src/test/resources/implementation_guide_50.json index 85e113f2f..f86eb441a 100644 --- a/org.hl7.fhir.convertors/src/test/resources/implementation_guide_50.json +++ b/org.hl7.fhir.convertors/src/test/resources/implementation_guide_50.json @@ -75,7 +75,8 @@ "name": "Test Example", "description": "A test example to show how an implementation guide works", "profile": [ - "http://hl7.org/fhir/us/core/StructureDefinition/patient" + "http://hl7.org/fhir/us/core/StructureDefinition/patient", + "http://hl7.org/fhir/uv/ips/StructureDefinition/Patient-uv-ips" ] } ],