From b87d450cb4c58e29fdd93ec83457c988fb5377f8 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 1 May 2023 12:51:18 -0400 Subject: [PATCH 01/25] WIP Mark places for change --- .../conv30_40/resources30_40/Immunization30_40.java | 1 + .../conv30_50/resources30_50/ActorDefinition30_50.java | 1 + .../conv30_50/resources30_50/Requirements30_50.java | 1 + .../conv40_50/resources40_50/ActorDefinition40_50.java | 1 + .../conv40_50/resources40_50/Requirements40_50.java | 1 + .../conv43_50/resources43_50/ActorDefinition43_50.java | 1 + .../conv43_50/resources43_50/Requirements43_50.java | 1 + .../conv43_50/resources43_50/Resource43_50.java | 10 ++++++---- .../resources43_50/SubscriptionTopic43_50.java | 4 ++++ 9 files changed, 17 insertions(+), 4 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Immunization30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Immunization30_40.java index 51aa26e0d..4e25a58aa 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Immunization30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Immunization30_40.java @@ -82,6 +82,7 @@ public class Immunization30_40 { if (src == null) return null; org.hl7.fhir.dstu3.model.Immunization tgt = new org.hl7.fhir.dstu3.model.Immunization(); + //FIXME add ignore ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt); for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier()) tgt.addIdentifier(Identifier30_40.convertIdentifier(t)); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ActorDefinition30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ActorDefinition30_50.java index f24b39c95..afe52f17f 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ActorDefinition30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ActorDefinition30_50.java @@ -57,6 +57,7 @@ public class ActorDefinition30_50 { throw new FHIRException("Error in logic: this basic resource is not an ActorDefinition"); } org.hl7.fhir.r5.model.ActorDefinition tgt = new org.hl7.fhir.r5.model.ActorDefinition(); + //FIXME add ignore ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier()) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/Requirements30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/Requirements30_50.java index 4ca6663fe..78e3cdd87 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/Requirements30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/Requirements30_50.java @@ -63,6 +63,7 @@ public class Requirements30_50 { throw new FHIRException("Error in logic: this basic resource is not an Requirements"); } org.hl7.fhir.r5.model.Requirements tgt = new org.hl7.fhir.r5.model.Requirements(); + //FIXME add ignore ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier()) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ActorDefinition40_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ActorDefinition40_50.java index e869aab2b..5be16755f 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ActorDefinition40_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/ActorDefinition40_50.java @@ -59,6 +59,7 @@ public class ActorDefinition40_50 { throw new FHIRException("Error in logic: this basic resource is not an ActorDefinition"); } org.hl7.fhir.r5.model.ActorDefinition tgt = new org.hl7.fhir.r5.model.ActorDefinition(); + //FIXME add ignore ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt); for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier()) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/Requirements40_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/Requirements40_50.java index 38e8acb3c..50ac41f5c 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/Requirements40_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/Requirements40_50.java @@ -65,6 +65,7 @@ public class Requirements40_50 { throw new FHIRException("Error in logic: this basic resource is not an Requirements"); } org.hl7.fhir.r5.model.Requirements tgt = new org.hl7.fhir.r5.model.Requirements(); + //FIXME add ignore ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyDomainResource(src, tgt); for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier()) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ActorDefinition43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ActorDefinition43_50.java index 7c59c17d5..671d9fe9c 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ActorDefinition43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/ActorDefinition43_50.java @@ -59,6 +59,7 @@ public class ActorDefinition43_50 { throw new FHIRException("Error in logic: this basic resource is not an ActorDefinition"); } org.hl7.fhir.r5.model.ActorDefinition tgt = new org.hl7.fhir.r5.model.ActorDefinition(); + //FIXME add ignore ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyDomainResource(src, tgt); for (org.hl7.fhir.r4b.model.Identifier t : src.getIdentifier()) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Requirements43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Requirements43_50.java index c0e786565..2e3e88c55 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Requirements43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Requirements43_50.java @@ -65,6 +65,7 @@ public class Requirements43_50 { throw new FHIRException("Error in logic: this basic resource is not an Requirements"); } org.hl7.fhir.r5.model.Requirements tgt = new org.hl7.fhir.r5.model.Requirements(); + //FIXME add ignore ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyDomainResource(src, tgt); for (org.hl7.fhir.r4b.model.Identifier t : src.getIdentifier()) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Resource43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Resource43_50.java index bfceab044..b34059aa3 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Resource43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Resource43_50.java @@ -10,6 +10,8 @@ import org.hl7.fhir.convertors.conv43_50.datatypes43_50.special43_50.Meta43_50; import org.hl7.fhir.convertors.conv43_50.datatypes43_50.special43_50.Narrative43_50; import org.hl7.fhir.exceptions.FHIRException; +import java.util.Arrays; + public class Resource43_50 { public final BaseAdvisor_43_50 advisor; @@ -512,7 +514,7 @@ public class Resource43_50 { } } - public void copyDomainResource(org.hl7.fhir.r4b.model.DomainResource src, org.hl7.fhir.r5.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource(org.hl7.fhir.r4b.model.DomainResource src, org.hl7.fhir.r5.model.DomainResource tgt, String ... ignoredExtensions) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative43_50.convertNarrative(src.getText())); src.getContained().stream() @@ -523,7 +525,7 @@ public class Resource43_50 { org.hl7.fhir.r5.model.Extension convertExtension = new org.hl7.fhir.r5.model.Extension(); advisor.handleExtension(ConversionContext43_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext43_50.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext43_50.INSTANCE.path(), extension) && !Arrays.asList(ignoredExtensions).contains(extension.getUrl())) { tgt.addExtension(Extension43_50.convertExtension(extension)); } }); @@ -533,7 +535,7 @@ public class Resource43_50 { .forEach(tgt::addModifierExtension); } - public void copyDomainResource(org.hl7.fhir.r5.model.DomainResource src, org.hl7.fhir.r4b.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource(org.hl7.fhir.r5.model.DomainResource src, org.hl7.fhir.r4b.model.DomainResource tgt, String ... ignoredExtensions) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative43_50.convertNarrative(src.getText())); src.getContained().stream() @@ -544,7 +546,7 @@ public class Resource43_50 { org.hl7.fhir.r4b.model.Extension convertExtension = new org.hl7.fhir.r4b.model.Extension(); advisor.handleExtension(ConversionContext43_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext43_50.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext43_50.INSTANCE.path(), extension) && !Arrays.asList(ignoredExtensions).contains(extension.getUrl())) { tgt.addExtension(Extension43_50.convertExtension(extension)); } }); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/SubscriptionTopic43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/SubscriptionTopic43_50.java index 9f332f18a..dee8da541 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/SubscriptionTopic43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/SubscriptionTopic43_50.java @@ -9,11 +9,14 @@ import org.hl7.fhir.convertors.conv43_50.datatypes43_50.metadata43_50.UsageConte import org.hl7.fhir.convertors.conv43_50.datatypes43_50.primitive43_50.*; import org.hl7.fhir.r4b.model.SubscriptionTopic; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class SubscriptionTopic43_50 { + + private static final List ignoredExtensionUrls = Arrays.asList("http://hl7.org/fhir/5.0/StructureDefinition/extension-TestScript.scope"); public static org.hl7.fhir.r4b.model.SubscriptionTopic convertSubscriptionTopic(org.hl7.fhir.r5.model.SubscriptionTopic src) { if (src == null) return null; @@ -243,6 +246,7 @@ public class SubscriptionTopic43_50 { return null; org.hl7.fhir.r5.model.SubscriptionTopic tgt = new org.hl7.fhir.r5.model.SubscriptionTopic(); ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyResource(src, tgt); + //FIXME add ignore ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyDomainResource(src, tgt); if (src.hasExtension("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.name")) { From 9b1d46f48815933e8a47117a11a6a93654317e0f Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 1 May 2023 14:26:39 -0400 Subject: [PATCH 02/25] Move ignore extension logic in 43_50 convertors --- .../advisors/impl/BaseAdvisor_43_50.java | 6 - .../conv43_50/VersionConvertor_43_50.java | 10 +- .../resources43_50/ActorDefinition43_50.java | 158 +++++++++++------- .../resources43_50/Requirements43_50.java | 139 +++++++++------ .../SubscriptionTopic43_50.java | 27 +-- 5 files changed, 213 insertions(+), 127 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_43_50.java index 2a205c4a6..db2336bb7 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_43_50.java @@ -27,12 +27,6 @@ public class BaseAdvisor_43_50 extends BaseAdvisor50 ignoredExtensionUrls = Arrays.asList("http://hl7.org/fhir/5.0/StructureDefinition/extension-TestScript.scope"); + + public static final String NAME_EXTENSION_URL = "http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.name"; + public static final String COPYRIGHT_LABEL_EXTENSION_URL = "http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.copyrightLabel"; + + private static final String[] IGNORED_EXTENSION_URLS = new String[]{ + NAME_EXTENSION_URL, + COPYRIGHT_LABEL_EXTENSION_URL + }; + public static org.hl7.fhir.r4b.model.SubscriptionTopic convertSubscriptionTopic(org.hl7.fhir.r5.model.SubscriptionTopic src) { if (src == null) return null; @@ -58,10 +65,10 @@ public class SubscriptionTopic43_50 { if (src.hasCopyright()) tgt.setCopyrightElement(MarkDown43_50.convertMarkdown(src.getCopyrightElement())); if (src.hasCopyrightLabel()) { - tgt.addExtension("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.copyrightLabel", String43_50.convertString(src.getCopyrightLabelElement())); + tgt.addExtension(COPYRIGHT_LABEL_EXTENSION_URL, String43_50.convertString(src.getCopyrightLabelElement())); } if (src.hasName()) { - tgt.addExtension("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.name", String43_50.convertString(src.getNameElement())); + tgt.addExtension(NAME_EXTENSION_URL, String43_50.convertString(src.getNameElement())); } if (src.hasApprovalDate()) tgt.setApprovalDateElement(Date43_50.convertDate(src.getApprovalDateElement())); @@ -246,14 +253,14 @@ public class SubscriptionTopic43_50 { return null; org.hl7.fhir.r5.model.SubscriptionTopic tgt = new org.hl7.fhir.r5.model.SubscriptionTopic(); ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyResource(src, tgt); - //FIXME add ignore - ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyDomainResource(src, tgt); - if (src.hasExtension("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.name")) { - tgt.setNameElement(String43_50.convertString((org.hl7.fhir.r4b.model.StringType) src.getExtensionByUrl("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.name").getValue())); + ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyDomainResource(src, tgt, IGNORED_EXTENSION_URLS); + + if (src.hasExtension(NAME_EXTENSION_URL)) { + tgt.setNameElement(String43_50.convertString((org.hl7.fhir.r4b.model.StringType) src.getExtensionByUrl(NAME_EXTENSION_URL).getValue())); } - if (src.hasExtension("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.copyrightLabel")) { - tgt.setCopyrightLabelElement(String43_50.convertString((org.hl7.fhir.r4b.model.StringType) src.getExtensionByUrl("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.copyrightLabel").getValue())); + if (src.hasExtension(COPYRIGHT_LABEL_EXTENSION_URL)) { + tgt.setCopyrightLabelElement(String43_50.convertString((org.hl7.fhir.r4b.model.StringType) src.getExtensionByUrl(COPYRIGHT_LABEL_EXTENSION_URL).getValue())); } if (src.hasUrl()) tgt.setUrlElement(Uri43_50.convertUri(src.getUrlElement())); From 3e5a63e0f2b35da1f98269176d629cc1dfbb6475 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 1 May 2023 15:58:38 -0400 Subject: [PATCH 03/25] Move ignore extension logic in 40_50 convertors --- .../advisors/impl/BaseAdvisor_40_50.java | 7 +- .../conv40_50/VersionConvertor_40_50.java | 8 +- .../resources40_50/ActorDefinition40_50.java | 158 +++++++++++------- .../resources40_50/Requirements40_50.java | 140 ++++++++++------ .../resources40_50/Resource40_50.java | 10 +- 5 files changed, 203 insertions(+), 120 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_40_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_40_50.java index efd01620b..5c2581f30 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_40_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_40_50.java @@ -34,11 +34,8 @@ public class BaseAdvisor_40_50 extends BaseAdvisor50 Date: Mon, 1 May 2023 16:01:42 -0400 Subject: [PATCH 04/25] Rename argument --- .../conv40_50/resources40_50/Resource40_50.java | 8 ++++---- .../conv43_50/resources43_50/Resource43_50.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/Resource40_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/Resource40_50.java index d425b4d8e..1df2482e6 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/Resource40_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/resources40_50/Resource40_50.java @@ -527,7 +527,7 @@ public class Resource40_50 { } } - public void copyDomainResource(org.hl7.fhir.r4.model.DomainResource src, org.hl7.fhir.r5.model.DomainResource tgt, String... ignoredExtensionUrls) throws FHIRException { + public void copyDomainResource(org.hl7.fhir.r4.model.DomainResource src, org.hl7.fhir.r5.model.DomainResource tgt, String... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative40_50.convertNarrative(src.getText())); src.getContained().stream() @@ -538,7 +538,7 @@ public class Resource40_50 { org.hl7.fhir.r5.model.Extension convertExtension = new org.hl7.fhir.r5.model.Extension(); advisor.handleExtension(ConversionContext40_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext40_50.INSTANCE.path(), extension) && !Arrays.asList(ignoredExtensionUrls).contains(extension.getUrl())) { + } else if (!advisor.ignoreExtension(ConversionContext40_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension40_50.convertExtension(extension)); } }); @@ -548,7 +548,7 @@ public class Resource40_50 { .forEach(tgt::addModifierExtension); } - public void copyDomainResource(org.hl7.fhir.r5.model.DomainResource src, org.hl7.fhir.r4.model.DomainResource tgt, String... ignoredExtensionUrls) throws FHIRException { + public void copyDomainResource(org.hl7.fhir.r5.model.DomainResource src, org.hl7.fhir.r4.model.DomainResource tgt, String... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative40_50.convertNarrative(src.getText())); src.getContained().stream() @@ -559,7 +559,7 @@ public class Resource40_50 { org.hl7.fhir.r4.model.Extension convertExtension = new org.hl7.fhir.r4.model.Extension(); advisor.handleExtension(ConversionContext40_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext40_50.INSTANCE.path(), extension) && !Arrays.asList(ignoredExtensionUrls).contains(extension.getUrl())) { + } else if (!advisor.ignoreExtension(ConversionContext40_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension40_50.convertExtension(extension)); } }); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Resource43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Resource43_50.java index b34059aa3..141affaef 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Resource43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/Resource43_50.java @@ -514,7 +514,7 @@ public class Resource43_50 { } } - public void copyDomainResource(org.hl7.fhir.r4b.model.DomainResource src, org.hl7.fhir.r5.model.DomainResource tgt, String ... ignoredExtensions) throws FHIRException { + public void copyDomainResource(org.hl7.fhir.r4b.model.DomainResource src, org.hl7.fhir.r5.model.DomainResource tgt, String ... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative43_50.convertNarrative(src.getText())); src.getContained().stream() @@ -525,7 +525,7 @@ public class Resource43_50 { org.hl7.fhir.r5.model.Extension convertExtension = new org.hl7.fhir.r5.model.Extension(); advisor.handleExtension(ConversionContext43_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext43_50.INSTANCE.path(), extension) && !Arrays.asList(ignoredExtensions).contains(extension.getUrl())) { + } else if (!advisor.ignoreExtension(ConversionContext43_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension43_50.convertExtension(extension)); } }); @@ -535,7 +535,7 @@ public class Resource43_50 { .forEach(tgt::addModifierExtension); } - public void copyDomainResource(org.hl7.fhir.r5.model.DomainResource src, org.hl7.fhir.r4b.model.DomainResource tgt, String ... ignoredExtensions) throws FHIRException { + public void copyDomainResource(org.hl7.fhir.r5.model.DomainResource src, org.hl7.fhir.r4b.model.DomainResource tgt, String ... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative43_50.convertNarrative(src.getText())); src.getContained().stream() @@ -546,7 +546,7 @@ public class Resource43_50 { org.hl7.fhir.r4b.model.Extension convertExtension = new org.hl7.fhir.r4b.model.Extension(); advisor.handleExtension(ConversionContext43_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext43_50.INSTANCE.path(), extension) && !Arrays.asList(ignoredExtensions).contains(extension.getUrl())) { + } else if (!advisor.ignoreExtension(ConversionContext43_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension43_50.convertExtension(extension)); } }); From 077a0790830987f03a244b4ec7269f6292936560 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 1 May 2023 17:40:48 -0400 Subject: [PATCH 05/25] Move ignore extension logic in 30_50 convertors --- .../advisors/impl/BaseAdvisor_30_50.java | 9 +- .../convertors/conv30_50/Resource30_50.java | 10 +- .../conv30_50/VersionConvertor_30_50.java | 8 +- .../resources30_50/ActorDefinition30_50.java | 158 +++++++++++------- .../resources30_50/Requirements30_50.java | 139 +++++++++------ 5 files changed, 204 insertions(+), 120 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_50.java index 41d8a64c6..c54dd81e1 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_50.java @@ -29,11 +29,10 @@ public class BaseAdvisor_30_50 extends BaseAdvisor50 Date: Mon, 1 May 2023 17:43:09 -0400 Subject: [PATCH 06/25] WIP actually test capabilityStatement conversion --- .../CapabilityStatement30_40.java | 1 + .../CapabilityStatement30_50.java | 35 +++- .../CapabilityStatement30_50Test.java | 39 +++++ .../resources/capability_statement_50.json | 151 ++++++++++++++++++ 4 files changed, 219 insertions(+), 7 deletions(-) create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java create mode 100644 org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java index 025ebaccb..81b110c18 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java @@ -24,6 +24,7 @@ public class CapabilityStatement30_40 { if (src == null) return null; org.hl7.fhir.dstu3.model.CapabilityStatement tgt = new org.hl7.fhir.dstu3.model.CapabilityStatement(); + //FIXME add ignore ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt); if (src.hasUrl()) tgt.setUrlElement(Uri30_40.convertUri(src.getUrlElement())); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java index 19ea47cde..04788034b 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java @@ -20,11 +20,26 @@ import org.hl7.fhir.exceptions.FHIRException; public class CapabilityStatement30_50 { + public static final String ACCEPT_UNKNOWN_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"; + public static final String PROFILE_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile"; + + public static final String ACCEPT_LANGUAGE_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptLanguage"; + + private static final String[] IGNORED_R5_EXTENSION_URLS = new String[]{ + + ACCEPT_UNKNOWN_EXTENSION_URL + }; + + private static final String[] IGNORED_DSTU3_EXTENSION_URLS = new String[]{ + PROFILE_EXTENSION_URL, + ACCEPT_LANGUAGE_EXTENSION_URL + }; public static org.hl7.fhir.r5.model.CapabilityStatement convertCapabilityStatement(org.hl7.fhir.dstu3.model.CapabilityStatement src) throws FHIRException { if (src == null) return null; org.hl7.fhir.r5.model.CapabilityStatement tgt = new org.hl7.fhir.r5.model.CapabilityStatement(); - ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); + //FIXME add ignore + ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt, IGNORED_DSTU3_EXTENSION_URLS); if (src.hasUrl()) tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement())); if (src.hasVersion()) @@ -63,14 +78,17 @@ public class CapabilityStatement30_50 { if (src.hasFhirVersion()) tgt.setFhirVersion(org.hl7.fhir.r5.model.Enumerations.FHIRVersion.fromCode(fixCode(src.getFhirVersion()))); if (src.hasAcceptUnknown()) - tgt.addExtension().setUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); + tgt.addExtension().setUrl(ACCEPT_UNKNOWN_EXTENSION_URL).setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); for (org.hl7.fhir.dstu3.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.dstu3.model.CodeType t : src.getPatchFormat()) tgt.addPatchFormat(t.getValue()); + for (org.hl7.fhir.dstu3.model.Extension extension : src.getExtensionsByUrl(ACCEPT_LANGUAGE_EXTENSION_URL)) { + tgt.addAcceptLanguageElement().setValue(extension.getValue().primitiveValue()); + } for (org.hl7.fhir.dstu3.model.UriType t : src.getImplementationGuide()) tgt.addImplementationGuide(t.getValue()); for (org.hl7.fhir.dstu3.model.CapabilityStatement.CapabilityStatementRestComponent t : src.getRest()) tgt.addRest(convertCapabilityStatementRestComponent(t)); for (org.hl7.fhir.dstu3.model.Reference t : src.getProfile()) - tgt.addExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile", Reference30_50.convertReference(t)); + tgt.addExtension(PROFILE_EXTENSION_URL, Reference30_50.convertReference(t)); for (org.hl7.fhir.dstu3.model.CapabilityStatement.CapabilityStatementMessagingComponent t : src.getMessaging()) tgt.addMessaging(convertCapabilityStatementMessagingComponent(t)); for (org.hl7.fhir.dstu3.model.CapabilityStatement.CapabilityStatementDocumentComponent t : src.getDocument()) @@ -90,7 +108,7 @@ public class CapabilityStatement30_50 { if (src == null) return null; org.hl7.fhir.dstu3.model.CapabilityStatement tgt = new org.hl7.fhir.dstu3.model.CapabilityStatement(); - ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); + ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt, IGNORED_R5_EXTENSION_URLS); if (src.hasUrl()) tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement())); if (src.hasVersion()) @@ -128,17 +146,20 @@ public class CapabilityStatement30_50 { tgt.setImplementation(convertCapabilityStatementImplementationComponent(src.getImplementation())); if (src.hasFhirVersion()) tgt.setFhirVersion(src.getFhirVersion().toCode()); - if (src.hasExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")) - tgt.setAcceptUnknown(org.hl7.fhir.dstu3.model.CapabilityStatement.UnknownContentCode.fromCode(src.getExtensionByUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").getValue().primitiveValue())); + if (src.hasExtension(ACCEPT_UNKNOWN_EXTENSION_URL)) + tgt.setAcceptUnknown(org.hl7.fhir.dstu3.model.CapabilityStatement.UnknownContentCode.fromCode(src.getExtensionByUrl(ACCEPT_UNKNOWN_EXTENSION_URL).getValue().primitiveValue())); for (org.hl7.fhir.r5.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.r5.model.CodeType t : src.getPatchFormat()) tgt.addPatchFormat(t.getValue()); + for (org.hl7.fhir.r5.model.CodeType t : src.getAcceptLanguage()) { + tgt.addExtension(ACCEPT_LANGUAGE_EXTENSION_URL, Code30_50.convertCodeToString(t)); + } for (org.hl7.fhir.r5.model.UriType t : src.getImplementationGuide()) tgt.addImplementationGuide(t.getValue()); for (org.hl7.fhir.r5.model.CapabilityStatement.CapabilityStatementRestComponent r : src.getRest()) for (org.hl7.fhir.r5.model.CapabilityStatement.CapabilityStatementRestResourceComponent rr : r.getResource()) for (org.hl7.fhir.r5.model.CanonicalType t : rr.getSupportedProfile()) tgt.addProfile(Reference30_50.convertCanonicalToReference(t)); for (org.hl7.fhir.r5.model.Extension ext : src.getExtension()) { - if ("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile".equals(ext.getUrl())) { + if (PROFILE_EXTENSION_URL.equals(ext.getUrl())) { tgt.addProfile(Reference30_50.convertReference((org.hl7.fhir.r5.model.Reference) ext.getValue())); } } diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java new file mode 100644 index 000000000..2f1161066 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java @@ -0,0 +1,39 @@ +package org.hl7.fhir.convertors.conv30_50; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50; +import org.hl7.fhir.r5.formats.JsonParser; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CapabilityStatement30_50Test { + + + @Test + @DisplayName("Test r5 -> dstu3 capabilityStatement conversion.") + public void testR5_DSTU3() throws IOException { + InputStream r5_input = this.getClass().getResourceAsStream("/capability_statement_50.json"); + + JsonParser r5_parser = new JsonParser(); + org.hl7.fhir.r5.model.CapabilityStatement r5_actual = (org.hl7.fhir.r5.model.CapabilityStatement) r5_parser.parse(r5_input); + org.hl7.fhir.dstu3.model.Resource dstu3_conv = VersionConvertorFactory_30_50.convertResource(r5_actual); + + org.hl7.fhir.dstu3.formats.JsonParser dstu3_parser = new org.hl7.fhir.dstu3.formats.JsonParser(); + + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + dstu3_parser.compose(stream, dstu3_conv); + + org.hl7.fhir.dstu3.model.Resource dstu3_streamed = (org.hl7.fhir.dstu3.model.CapabilityStatement) dstu3_parser.parse(new ByteArrayInputStream(stream.toByteArray())); + org.hl7.fhir.r5.model.Resource r5_conv = VersionConvertorFactory_30_50.convertResource(dstu3_streamed); + + assertTrue(r5_actual.equalsDeep(r5_conv), "should be the same"); + } + +} diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json new file mode 100644 index 000000000..fa1a4a9a2 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json @@ -0,0 +1,151 @@ +{ + "resourceType" : "CapabilityStatement", + "id" : "example", + "text" : { + "status" : "generated", + "div" : "
\n\t\t\t\n

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t\n

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t\n

The EHR Application has a \n \n general document profile.\n \n

\n\t\t\n
" + }, + "url" : "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", + "version" : "20130510", + "name" : "ACMEEHR", + "title" : "ACME EHR capability statement", + "status" : "draft", + "experimental" : true, + "date" : "2012-01-04", + "publisher" : "ACME Corporation", + "contact" : [{ + "name" : "System Administrator", + "telecom" : [{ + "system" : "email", + "value" : "wile@acme.org" + }] + }], + "description" : "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "useContext" : [{ + "code" : { + "system" : "http://terminology.hl7.org/CodeSystem/usage-context-type", + "code" : "focus" + }, + "valueCodeableConcept" : { + "coding" : [{ + "system" : "http://terminology.hl7.org/CodeSystem/variant-state", + "code" : "positive" + }] + } + }], + "jurisdiction" : [{ + "coding" : [{ + "system" : "urn:iso:std:iso:3166", + "code" : "US", + "display" : "United States of America (the)" + }] + }], + "purpose" : "Main EHR capability statement, published for contracting and operational support", + "copyright" : "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind" : "instance", + "instantiates" : ["http://ihe.org/fhir/CapabilityStatement/pixm-client"], + "software" : { + "name" : "EHR", + "version" : "0.00.020.2134", + "releaseDate" : "2012-01-04" + }, + "implementation" : { + "description" : "main EHR at ACME", + "url" : "http://10.2.3.4/fhir" + }, + "fhirVersion" : "5.0.0", + "format" : ["xml", + "json"], + "patchFormat" : ["application/xml-patch+xml", + "application/json-patch+json"], + "acceptLanguage" : ["en", + "es"], + "implementationGuide" : ["http://example.org/fhir/us/lab"], + "rest" : [{ + "mode" : "server", + "documentation" : "Main FHIR endpoint for acem health", + "security" : { + "cors" : true, + "service" : [{ + "coding" : [{ + "system" : "http://hl7.org/fhir/restful-security-service", + "code" : "SMART-on-FHIR" + }] + }], + "description" : "See Smart on FHIR documentation" + }, + "resource" : [{ + "type" : "Patient", + "profile" : "http://registry.fhir.org/r5/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416", + "supportedProfile" : ["http://registry.fhir.org/r5/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347"], + "documentation" : "This server does not let the clients create identities.", + "interaction" : [{ + "code" : "read" + }, + { + "code" : "vread", + "documentation" : "Only supported for patient records since 12-Dec 2012" + }, + { + "code" : "update" + }, + { + "code" : "history-instance" + }, + { + "code" : "create" + }, + { + "code" : "history-type" + }], + "versioning" : "versioned-update", + "readHistory" : true, + "updateCreate" : false, + "conditionalCreate" : true, + "conditionalRead" : "full-support", + "conditionalUpdate" : false, + "conditionalPatch" : false, + "conditionalDelete" : "not-supported", + "searchInclude" : ["Patient:organization"], + "searchRevInclude" : ["Person:patient"], + "searchParam" : [{ + "name" : "identifier", + "definition" : "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type" : "token", + "documentation" : "Only supports search by institution MRN" + }, + { + "name" : "general-practitioner", + "definition" : "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type" : "reference" + }] + }], + "interaction" : [{ + "code" : "transaction" + }, + { + "code" : "history-system" + }], + "compartment" : ["http://hl7.org/fhir/CompartmentDefinition/patient"] + }], + "messaging" : [{ + "endpoint" : [{ + "protocol" : { + "system" : "http://hl7.org/fhir/message-transport", + "code" : "mllp" + }, + "address" : "mllp:10.1.1.10:9234" + }], + "reliableCache" : 30, + "documentation" : "ADT A08 equivalent for external system notifications", + "supportedMessage" : [{ + "mode" : "receiver", + "definition" : "http://hl7.org/fhir/MessageDefinition/example" + }] + }], + "document" : [{ + "mode" : "consumer", + "documentation" : "Basic rules for all documents in the EHR system", + "profile" : "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + }] +} \ No newline at end of file From f5e049cbbe3a72ed939c3927530d440c0afc714f Mon Sep 17 00:00:00 2001 From: dotasek Date: Thu, 4 May 2023 09:45:58 -0400 Subject: [PATCH 07/25] Fix copy-paste mistake --- .../convertors/conv30_50/ActorDefinition30_50Test.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ActorDefinition30_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ActorDefinition30_50Test.java index 10cfcba5e..72d94fa4a 100644 --- a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ActorDefinition30_50Test.java +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ActorDefinition30_50Test.java @@ -15,17 +15,17 @@ public class ActorDefinition30_50Test { @Test - @DisplayName("Test r5 -> r4 ActorDefinition conversion.") - public void testR5_R4() throws IOException { + @DisplayName("Test r5 -> dstu3 ActorDefinition conversion.") + public void testR5_dstu3() throws IOException { InputStream r5_input = this.getClass().getResourceAsStream("/actordefinition_50_example.json"); org.hl7.fhir.r5.model.ActorDefinition r5_actual = (org.hl7.fhir.r5.model.ActorDefinition) new org.hl7.fhir.r5.formats.JsonParser().parse(r5_input); org.hl7.fhir.dstu3.model.Resource r4_conv = VersionConvertorFactory_30_50.convertResource(r5_actual); - org.hl7.fhir.dstu3.formats.XmlParser r4_parser = new org.hl7.fhir.dstu3.formats.XmlParser(); + org.hl7.fhir.dstu3.formats.XmlParser dstu3_parser = new org.hl7.fhir.dstu3.formats.XmlParser(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); - r4_parser.compose(stream, r4_conv); + dstu3_parser.compose(stream, r4_conv); org.hl7.fhir.dstu3.model.Resource r4_streamed = (org.hl7.fhir.dstu3.model.Basic) new org.hl7.fhir.dstu3.formats.XmlParser().parse(new ByteArrayInputStream(stream.toByteArray())); org.hl7.fhir.r5.model.Resource r5_conv = VersionConvertorFactory_30_50.convertResource(r4_streamed); From bf5f57cbb76ad92480e4538073651d4d2d2b972e Mon Sep 17 00:00:00 2001 From: dotasek Date: Thu, 4 May 2023 09:46:19 -0400 Subject: [PATCH 08/25] Add tests 1 --- .../CapabilityStatement30_40Test.java | 29 +++ .../CapabilityStatement30_50Test.java | 28 +++ .../resources/capability_statement_40.json | 204 +++++++++++++++++ .../resources/capability_statement_40_30.json | 207 +++++++++++++++++ .../resources/capability_statement_50.json | 215 ++++++++++++++++++ .../resources/capability_statement_50_30.json | 210 +++++++++++++++++ 6 files changed, 893 insertions(+) create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_40/CapabilityStatement30_40Test.java create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java create mode 100644 org.hl7.fhir.convertors/src/test/resources/capability_statement_40.json create mode 100644 org.hl7.fhir.convertors/src/test/resources/capability_statement_40_30.json create mode 100644 org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json create mode 100644 org.hl7.fhir.convertors/src/test/resources/capability_statement_50_30.json diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_40/CapabilityStatement30_40Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_40/CapabilityStatement30_40Test.java new file mode 100644 index 000000000..40ee14a0e --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_40/CapabilityStatement30_40Test.java @@ -0,0 +1,29 @@ +package org.hl7.fhir.convertors.conv30_40; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_40; +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CapabilityStatement30_40Test { + @Test + @DisplayName("Test r4 -> dstu3 CapabilityStatement conversion.") + public void testR4_Dstu3() throws IOException { + InputStream r4_input = this.getClass().getResourceAsStream("/capability_statement_40.json"); + + org.hl7.fhir.r4.model.CapabilityStatement r5_actual = (org.hl7.fhir.r4.model.CapabilityStatement) new org.hl7.fhir.r4.formats.JsonParser().parse(r4_input); + org.hl7.fhir.dstu3.model.Resource dstu3_conv = VersionConvertorFactory_30_40.convertResource(r5_actual); + + org.hl7.fhir.dstu3.formats.JsonParser dstu3_parser = new org.hl7.fhir.dstu3.formats.JsonParser(); + + InputStream dstu3_input = this.getClass().getResourceAsStream("/capability_statement_40_30.json"); + org.hl7.fhir.dstu3.model.CapabilityStatement dstu3_actual = (org.hl7.fhir.dstu3.model.CapabilityStatement) dstu3_parser.parse(dstu3_input); + + assertTrue(dstu3_actual.equalsDeep(dstu3_conv), "should be the same"); + } +} diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java new file mode 100644 index 000000000..874064b78 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java @@ -0,0 +1,28 @@ +package org.hl7.fhir.convertors.conv30_50; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CapabilityStatement30_50Test { + @Test + @DisplayName("Test r5 -> dstu3 CapabilityStatement conversion.") + public void testR5_Dstu3() throws IOException { + InputStream r5_input = this.getClass().getResourceAsStream("/capability_statement_50.json"); + + org.hl7.fhir.r5.model.CapabilityStatement r5_actual = (org.hl7.fhir.r5.model.CapabilityStatement) new org.hl7.fhir.r5.formats.JsonParser().parse(r5_input); + org.hl7.fhir.dstu3.model.Resource dstu3_conv = VersionConvertorFactory_30_50.convertResource(r5_actual); + + org.hl7.fhir.dstu3.formats.JsonParser dstu3_parser = new org.hl7.fhir.dstu3.formats.JsonParser(); + + InputStream dstu3_input = this.getClass().getResourceAsStream("/capability_statement_50_30.json"); + org.hl7.fhir.dstu3.model.CapabilityStatement dstu3_actual = (org.hl7.fhir.dstu3.model.CapabilityStatement) dstu3_parser.parse(dstu3_input); + + assertTrue(dstu3_actual.equalsDeep(dstu3_conv), "should be the same"); + } +} diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_40.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_40.json new file mode 100644 index 000000000..af1adc1ee --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/capability_statement_40.json @@ -0,0 +1,204 @@ +{ + "resourceType": "CapabilityStatement", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, update, history, search(name,gender), create and updates.

\n\t\t\t

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t

The EHR Application has a general document profile.\n

\n\t\t
" + }, + "extension": [ + { + "url": "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown", + "valueCode": "both" + } + ], + "url": "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", + "version": "20130510", + "name": "ACMEEHR", + "title": "ACME EHR capability statement", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "useContext": [ + { + "code": { + "system": "http://terminology.hl7.org/CodeSystem/usage-context-type", + "code": "focus" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/variant-state", + "code": "positive" + } + ] + } + } + ], + "jurisdiction": [ + { + "coding": [ + { + "system": "urn:iso:std:iso:3166", + "code": "US", + "display": "United States of America (the)" + } + ] + } + ], + "purpose": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "instantiates": [ + "http://ihe.org/fhir/CapabilityStatement/pixm-client" + ], + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "4.0.1", + "format": [ + "xml", + "json" + ], + "patchFormat": [ + "application/xml-patch+xml", + "application/json-patch+json" + ], + "implementationGuide": [ + "http://hl7.org/fhir/us/lab" + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation" + }, + "resource": [ + { + "type": "Patient", + "profile": "http://registry.fhir.org/r4/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416", + "supportedProfile": [ + "http://registry.fhir.org/r4/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347" + ], + "documentation": "This server does not let the clients create identities.", + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalRead": "full-support", + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Organization" + ], + "searchRevInclude": [ + "Person" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://terminology.hl7.org/CodeSystem/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications", + "supportedMessage": [ + { + "mode": "receiver", + "definition": "http://hl7.org/fhir/MessageDefinition/example" + } + ] + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + ] + } \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_40_30.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_40_30.json new file mode 100644 index 000000000..f444cd2b2 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/capability_statement_40_30.json @@ -0,0 +1,207 @@ +{ + "resourceType": "CapabilityStatement", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, update, history, search(name,gender), create and updates.

\n\t\t\t

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t

The EHR Application has a general document profile.\n

\n\t\t
" + }, + "url": "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", + "version": "20130510", + "name": "ACMEEHR", + "title": "ACME EHR capability statement", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "useContext": [ + { + "code": { + "system": "http://terminology.hl7.org/CodeSystem/usage-context-type", + "code": "focus" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/variant-state", + "code": "positive" + } + ] + } + } + ], + "jurisdiction": [ + { + "coding": [ + { + "system": "urn:iso:std:iso:3166", + "code": "US", + "display": "United States of America (the)" + } + ] + } + ], + "purpose": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "instantiates": [ + "http://ihe.org/fhir/CapabilityStatement/pixm-client" + ], + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "4.0.1", + "acceptUnknown": "both", + "format": [ + "xml", + "json" + ], + "patchFormat": [ + "application/xml-patch+xml", + "application/json-patch+json" + ], + "implementationGuide": [ + "http://hl7.org/fhir/us/lab" + ], + "profile": [ + { + "reference": "http://registry.fhir.org/r4/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347" + } + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation" + }, + "resource": [ + { + "type": "Patient", + "profile": { + "reference": "http://registry.fhir.org/r4/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "documentation": "This server does not let the clients create identities.", + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalRead": "full-support", + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Organization" + ], + "searchRevInclude": [ + "Person" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://terminology.hl7.org/CodeSystem/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications", + "supportedMessage": [ + { + "mode": "receiver", + "definition": { + "reference": "http://hl7.org/fhir/MessageDefinition/example" + } + } + ] + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json new file mode 100644 index 000000000..663e8001b --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json @@ -0,0 +1,215 @@ +{ + "resourceType": "CapabilityStatement", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t\n

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t\n

The EHR Application has a \n \n general document profile.\n \n

\n\t\t\n
" + }, + "extension": [ + { + "url": "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown", + "valueCode": "both" + }, + { + "url": "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile", + "valueReference": { + "reference": "http://hl7.org/fhir/us/core/StructureDefinition/familymemberhistory-genetic" + } + } + ], + "url": "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", + "version": "20130510", + "name": "ACMEEHR", + "title": "ACME EHR capability statement", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "useContext": [ + { + "code": { + "system": "http://terminology.hl7.org/CodeSystem/usage-context-type", + "code": "focus" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/variant-state", + "code": "positive" + } + ] + } + } + ], + "jurisdiction": [ + { + "coding": [ + { + "system": "urn:iso:std:iso:3166", + "code": "US", + "display": "United States of America (the)" + } + ] + } + ], + "purpose": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "instantiates": [ + "http://ihe.org/fhir/CapabilityStatement/pixm-client" + ], + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "5.0.0", + "format": [ + "xml", + "json" + ], + "patchFormat": [ + "application/xml-patch+xml", + "application/json-patch+json" + ], + "acceptLanguage": [ + "en", + "es" + ], + "implementationGuide": [ + "http://example.org/fhir/us/lab" + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation" + }, + "resource": [ + { + "type": "Patient", + "profile": "http://registry.fhir.org/r5/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416", + "supportedProfile": [ + "http://registry.fhir.org/r5/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347" + ], + "documentation": "This server does not let the clients create identities.", + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalRead": "full-support", + "conditionalUpdate": false, + "conditionalPatch": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Patient:organization" + ], + "searchRevInclude": [ + "Person:patient" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications", + "supportedMessage": [ + { + "mode": "receiver", + "definition": "http://hl7.org/fhir/MessageDefinition/example" + } + ] + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + ] +} \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_50_30.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50_30.json new file mode 100644 index 000000000..f63472eb8 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50_30.json @@ -0,0 +1,210 @@ +{ + "resourceType": "CapabilityStatement", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t\n

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t\n

The EHR Application has a \n \n general document profile.\n \n

\n\t\t\n
" + }, + "url": "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", + "version": "20130510", + "name": "ACMEEHR", + "title": "ACME EHR capability statement", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "useContext": [ + { + "code": { + "system": "http://terminology.hl7.org/CodeSystem/usage-context-type", + "code": "focus" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/variant-state", + "code": "positive" + } + ] + } + } + ], + "jurisdiction": [ + { + "coding": [ + { + "system": "urn:iso:std:iso:3166", + "code": "US", + "display": "United States of America (the)" + } + ] + } + ], + "purpose": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "instantiates": [ + "http://ihe.org/fhir/CapabilityStatement/pixm-client" + ], + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "5.0.0", + "acceptUnknown": "both", + "format": [ + "xml", + "json" + ], + "patchFormat": [ + "application/xml-patch+xml", + "application/json-patch+json" + ], + "implementationGuide": [ + "http://example.org/fhir/us/lab" + ], + "profile": [ + { + "reference": "http://registry.fhir.org/r5/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347" + }, + { + "reference": "http://hl7.org/fhir/us/core/StructureDefinition/familymemberhistory-genetic" + } + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation" + }, + "resource": [ + { + "type": "Patient", + "profile": { + "reference": "http://registry.fhir.org/r5/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "documentation": "This server does not let the clients create identities.", + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalRead": "full-support", + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Patient:organization" + ], + "searchRevInclude": [ + "Person:patient" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications", + "supportedMessage": [ + { + "mode": "receiver", + "definition": { + "reference": "http://hl7.org/fhir/MessageDefinition/example" + } + } + ] + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} From 91a8ff379cb0eda570051c89f8cd267f35a1597a Mon Sep 17 00:00:00 2001 From: dotasek Date: Thu, 4 May 2023 12:06:07 -0400 Subject: [PATCH 09/25] Add 14_50 Test. Will fail until dstu2016may Base.equalsDeep is fixed. --- .../CapabilityStatement14_50Test.java | 29 +++ .../resources/capability_statement_50_14.json | 186 ++++++++++++++++++ 2 files changed, 215 insertions(+) create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_50/CapabilityStatement14_50Test.java create mode 100644 org.hl7.fhir.convertors/src/test/resources/capability_statement_50_14.json diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_50/CapabilityStatement14_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_50/CapabilityStatement14_50Test.java new file mode 100644 index 000000000..ae770a4e0 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_50/CapabilityStatement14_50Test.java @@ -0,0 +1,29 @@ +package org.hl7.fhir.convertors.conv14_50; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_50; +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CapabilityStatement14_50Test { + @Test + @DisplayName("Test r5 -> dstu2016 CapabilityStatement conversion.") + public void testR5_Dstu3() throws IOException { + InputStream r5_input = this.getClass().getResourceAsStream("/capability_statement_50.json"); + + org.hl7.fhir.r5.model.CapabilityStatement r5_actual = (org.hl7.fhir.r5.model.CapabilityStatement) new org.hl7.fhir.r5.formats.JsonParser().parse(r5_input); + org.hl7.fhir.dstu2016may.model.Resource dstu2016_conv = VersionConvertorFactory_14_50.convertResource(r5_actual); + + org.hl7.fhir.dstu2016may.formats.JsonParser dstu2016_parser = new org.hl7.fhir.dstu2016may.formats.JsonParser(); + + InputStream dstu2016_input = this.getClass().getResourceAsStream("/capability_statement_50_14.json"); + org.hl7.fhir.dstu2016may.model.Conformance dstu2016_actual = (org.hl7.fhir.dstu2016may.model.Conformance) dstu2016_parser.parse(dstu2016_input); + + assertTrue(dstu2016_actual.equalsDeep(dstu2016_conv), "should be the same"); + } +} diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_50_14.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50_14.json new file mode 100644 index 000000000..b2a3c7f40 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50_14.json @@ -0,0 +1,186 @@ +{ + "resourceType": "Conformance", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t\n

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t\n

The EHR Application has a \n \n general document profile.\n \n

\n\t\t\n
" + }, + "extension": [ + { + "url": "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile", + "valueReference": { + "reference": "http://hl7.org/fhir/us/core/StructureDefinition/familymemberhistory-genetic" + } + } + ], + "url": "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", + "version": "20130510", + "name": "ACMEEHR", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "useContext": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/variant-state", + "code": "positive" + } + ] + }, + { + "coding": [ + { + "system": "urn:iso:std:iso:3166", + "code": "US", + "display": "United States of America (the)" + } + ] + } + ], + "requirements": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "5.0.0", + "acceptUnknown": "both", + "format": [ + "xml", + "json" + ], + "profile": [ + { + "reference": "http://registry.fhir.org/r5/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347" + } + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation" + }, + "resource": [ + { + "type": "Patient", + "profile": { + "reference": "http://registry.fhir.org/r5/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Patient:organization" + ], + "searchRevInclude": [ + "Person:patient" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications" + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} From 3a0e68e08ffaa497d93fbb88ed91b6613846a828 Mon Sep 17 00:00:00 2001 From: dotasek Date: Thu, 4 May 2023 12:16:48 -0400 Subject: [PATCH 10/25] Tests and fix for Base equals methods --- .../org/hl7/fhir/dstu2016may/model/Base.java | 60 ++-- .../dstu2016may/test/ResourceEqualsTests.java | 65 ++++ .../test/resources/conformance_example_1.json | 282 ++++++++++++++++++ .../test/resources/conformance_example_2.json | 282 ++++++++++++++++++ .../resources/immunization_example_1.json | 135 +++++++++ .../resources/immunization_example_2.json | 135 +++++++++ .../src/test/resources/patient_example_1.json | 154 ++++++++++ .../src/test/resources/patient_example_2.json | 153 ++++++++++ 8 files changed, 1236 insertions(+), 30 deletions(-) create mode 100644 org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ResourceEqualsTests.java create mode 100644 org.hl7.fhir.dstu2016may/src/test/resources/conformance_example_1.json create mode 100644 org.hl7.fhir.dstu2016may/src/test/resources/conformance_example_2.json create mode 100644 org.hl7.fhir.dstu2016may/src/test/resources/immunization_example_1.json create mode 100644 org.hl7.fhir.dstu2016may/src/test/resources/immunization_example_2.json create mode 100644 org.hl7.fhir.dstu2016may/src/test/resources/patient_example_1.json create mode 100644 org.hl7.fhir.dstu2016may/src/test/resources/patient_example_2.json diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/model/Base.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/model/Base.java index 232970a71..0ede60f70 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/model/Base.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/model/Base.java @@ -1,33 +1,33 @@ package org.hl7.fhir.dstu2016may.model; -/* - Copyright (c) 2011+, HL7, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of HL7 nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - */ +/* + Copyright (c) 2011+, HL7, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of HL7 nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + */ @@ -200,11 +200,11 @@ private Map userData; } public boolean equalsDeep(Base other) { - return other == this; + return other != null; } public boolean equalsShallow(Base other) { - return other == this; + return other != null; } public static boolean compareDeep(List e1, List e2, boolean allowNull) { diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ResourceEqualsTests.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ResourceEqualsTests.java new file mode 100644 index 000000000..c4d75ae88 --- /dev/null +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ResourceEqualsTests.java @@ -0,0 +1,65 @@ +package org.hl7.fhir.dstu2016may.test; + + +import org.hl7.fhir.dstu2016may.formats.JsonParser; +import org.hl7.fhir.dstu2016may.model.Resource; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; + +import javax.annotation.Nonnull; +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class ResourceEqualsTests { + + private JsonParser dstu2016_parser = new JsonParser();; + + @ParameterizedTest + @ValueSource(strings = { + "conformance_example_1.json", + "immunization_example_1.json", + "patient_example_1.json" + }) + public void testEquals(String resourcePath) throws IOException { + + org.hl7.fhir.dstu2016may.model.Resource resourceA = getResource(resourcePath); + + org.hl7.fhir.dstu2016may.model.Resource resourceB = getResource(resourcePath); + + assertTrue(resourceA.equalsShallow(resourceB)); + assertTrue(resourceA.equalsDeep(resourceB)); + + } + + private Resource getResource(String resource) throws IOException { + Resource resourceA; + InputStream inputA = this.getClass().getResourceAsStream(getResourcePath(resource)); + resourceA = dstu2016_parser.parse(inputA); + return resourceA; + } + + @Nonnull + private static String getResourcePath(String resource) { + return "/" + resource; + } + + /* All files pairs contain a single difference, which can be evaluated with a diff. These differences are at various depths in the element tree. */ + @ParameterizedTest + @CsvSource({ + "conformance_example_1.json,conformance_example_2.json", + "immunization_example_1.json,immunization_example_2.json", + "patient_example_1.json,patient_example_2.json" + }) + public void testEqualsFalse(String resourceAName, String resourceBName) throws IOException { + org.hl7.fhir.dstu2016may.model.Resource resourceA = getResource(resourceAName); + + org.hl7.fhir.dstu2016may.model.Resource resourceB = getResource(resourceBName); + + assertFalse(resourceA.equalsShallow(resourceB)); + assertFalse(resourceA.equalsDeep(resourceB)); + } +} diff --git a/org.hl7.fhir.dstu2016may/src/test/resources/conformance_example_1.json b/org.hl7.fhir.dstu2016may/src/test/resources/conformance_example_1.json new file mode 100644 index 000000000..5f858df21 --- /dev/null +++ b/org.hl7.fhir.dstu2016may/src/test/resources/conformance_example_1.json @@ -0,0 +1,282 @@ +{ + "resourceType": "Conformance", + "id": "example", + "text": { + "status": "generated", + "div": "
\n \n

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n \n

The EHR System supports the following message: admin-notify::Person.

\n \n

The EHR Application has a \n general document profile.\n

\n \n
" + }, + "url": "68D043B5-9ECF-4559-A57A-396E0D452311", + "_url": { + "fhir_comments": [ + " the identifier for this conformance statement. \n The identifier and version establish identifiers that other specifications etc.may use to \n refer to the conformance statement that this resource represents in a logical manner \n rather than in a literal (URL) fashion \n\n The identifier should be globally unique - a UUID, an OID, or a URL/URI\n " + ] + }, + "version": "20130510", + "name": "ACME EHR Conformance statement", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "description": "This is the FHIR conformance statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "requirements": "Main EHR conformance statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "1.0.0", + "_fhirVersion": { + "fhir_comments": [ + " while the FHIR infrastructure is turning over prior to development, a version is \n required. Note that this may be rescinded later? " + ] + }, + "acceptUnknown": "both", + "_acceptUnknown": { + "fhir_comments": [ + " this system accepts unknown content in the resources " + ] + }, + "format": [ + "xml", + "json" + ], + "_format": [ + { + "fhir_comments": [ + " this system can do either xml or json. (Listing both implies full support for either, with interconversion) " + ] + }, + null + ], + "rest": [ + { + "fhir_comments": [ + " in a real conformance statement, it's unlikely that a single conformance statement \n would declare conformance for REST, messaging and documents, though it is legal. \n This example does so in order to show all the parts of a conformance statement " + ], + "mode": "server", + "_mode": { + "fhir_comments": [ + " this is a server conformance statement. Note that servers are required to provide \n one of these. It can easily be edited by hand - copy this, replace the metadata above, \n delete the messaging and document stuff below, and then replace the details appropriately. " + ] + }, + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "_cors": { + "fhir_comments": [ + " cors support is highly recommended - mandatory if using SMART on FHIR " + ] + }, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation", + "certificate": [ + { + "type": "application/jwt", + "blob": "IHRoaXMgYmxvYiBpcyBub3QgdmFsaWQ=", + "_blob": { + "fhir_comments": [ + " base JWT. this blob is not valid " + ] + } + } + ] + }, + "resource": [ + { + "fhir_comments": [ + " zero or more of these - declaration of support for a resource " + ], + "type": "Patient", + "profile": { + "fhir_comments": [ + " let's assume that HL7 has stood up a profile registry at http://fhir.hl7.org/fhir \n - it's likely to have a registry, though this is not decided, nor is a URL decided. \n This application simply uses a profile registered directly with HL7. For the simplest \n case of a FHIR REST Server, just delete this profile reference. Profile references do \n not need to be a UUID, though a profile registry could insist that they are " + ], + "reference": "http://fhir.hl7.org/base/Profile7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "_updateCreate": { + "fhir_comments": [ + " this server doesn't let the clients create identities " + ] + }, + "conditionalCreate": true, + "_conditionalCreate": { + "fhir_comments": [ + " it's good to support conditional create on patients; this solves a common middleware problem " + ] + }, + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "_conditionalDelete": { + "fhir_comments": [ + " 0..1 If allows/uses conditional update " + ] + }, + "searchInclude": [ + "Organization" + ], + "searchRevInclude": [ + "Person" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN", + "modifier": [ + "missing" + ] + }, + { + "name": "careprovider", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-careprovider", + "type": "reference", + "target": [ + "Organization" + ], + "_target": [ + { + "fhir_comments": [ + " there's not a lot of value in saying this, since it's the only \n choice anyway. but in other cases it's pretty important " + ] + } + ], + "modifier": [ + "missing" + ], + "chain": [ + "name", + "identifier" + ] + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/compartment/Patient" + ] + } + ], + "messaging": [ + { + "fhir_comments": [ + " a messaging conformance statement. Applications are not required to make a conformance \n statement with regard to messaging, though there is active argument that they should. " + ], + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234", + "_address": { + "fhir_comments": [ + " LLP server at 10.1.1.10 on port 9234 " + ] + } + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications", + "event": [ + { + "code": { + "system": "http://hl7.org/fhir/message-type", + "code": "admin-notify" + }, + "category": "Consequence", + "mode": "receiver", + "_mode": { + "fhir_comments": [ + " this a receiver - i.e. answers. Not neccessariy a server (though this is) " + ] + }, + "focus": "Patient", + "request": { + "fhir_comments": [ + " specify a profile for the request person. Very often there's no \n point profiling the response, it's not interesting " + ], + "reference": "StructureDefinition/daf-patient" + }, + "response": { + "reference": "StructureDefinition/MessageHeader" + }, + "documentation": "Notification of an update to a patient resource. changing the links is not supported" + } + ] + } + ], + "document": [ + { + "fhir_comments": [ + " a document conformance statement " + ], + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "fhir_comments": [ + " this is the important element: a reference to a published document profile \n note that this is a version specific reference. " + ], + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} \ No newline at end of file diff --git a/org.hl7.fhir.dstu2016may/src/test/resources/conformance_example_2.json b/org.hl7.fhir.dstu2016may/src/test/resources/conformance_example_2.json new file mode 100644 index 000000000..e080d404e --- /dev/null +++ b/org.hl7.fhir.dstu2016may/src/test/resources/conformance_example_2.json @@ -0,0 +1,282 @@ +{ + "resourceType": "Conformance", + "id": "example", + "text": { + "status": "generated", + "div": "
\n \n

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n \n

The EHR System supports the following message: admin-notify::Person.

\n \n

The EHR Application has a \n general document profile.\n

\n \n
" + }, + "url": "68D043B5-9ECF-4559-A57A-396E0D452311", + "_url": { + "fhir_comments": [ + " the identifier for this conformance statement. \n The identifier and version establish identifiers that other specifications etc.may use to \n refer to the conformance statement that this resource represents in a logical manner \n rather than in a literal (URL) fashion \n\n The identifier should be globally unique - a UUID, an OID, or a URL/URI\n " + ] + }, + "version": "20130510", + "name": "ACME EHR Conformance statement", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wilecoyote@acme.org" + } + ] + } + ], + "description": "This is the FHIR conformance statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "requirements": "Main EHR conformance statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "1.0.0", + "_fhirVersion": { + "fhir_comments": [ + " while the FHIR infrastructure is turning over prior to development, a version is \n required. Note that this may be rescinded later? " + ] + }, + "acceptUnknown": "both", + "_acceptUnknown": { + "fhir_comments": [ + " this system accepts unknown content in the resources " + ] + }, + "format": [ + "xml", + "json" + ], + "_format": [ + { + "fhir_comments": [ + " this system can do either xml or json. (Listing both implies full support for either, with interconversion) " + ] + }, + null + ], + "rest": [ + { + "fhir_comments": [ + " in a real conformance statement, it's unlikely that a single conformance statement \n would declare conformance for REST, messaging and documents, though it is legal. \n This example does so in order to show all the parts of a conformance statement " + ], + "mode": "server", + "_mode": { + "fhir_comments": [ + " this is a server conformance statement. Note that servers are required to provide \n one of these. It can easily be edited by hand - copy this, replace the metadata above, \n delete the messaging and document stuff below, and then replace the details appropriately. " + ] + }, + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "_cors": { + "fhir_comments": [ + " cors support is highly recommended - mandatory if using SMART on FHIR " + ] + }, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation", + "certificate": [ + { + "type": "application/jwt", + "blob": "IHRoaXMgYmxvYiBpcyBub3QgdmFsaWQ=", + "_blob": { + "fhir_comments": [ + " base JWT. this blob is not valid " + ] + } + } + ] + }, + "resource": [ + { + "fhir_comments": [ + " zero or more of these - declaration of support for a resource " + ], + "type": "Patient", + "profile": { + "fhir_comments": [ + " let's assume that HL7 has stood up a profile registry at http://fhir.hl7.org/fhir \n - it's likely to have a registry, though this is not decided, nor is a URL decided. \n This application simply uses a profile registered directly with HL7. For the simplest \n case of a FHIR REST Server, just delete this profile reference. Profile references do \n not need to be a UUID, though a profile registry could insist that they are " + ], + "reference": "http://fhir.hl7.org/base/Profile7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "_updateCreate": { + "fhir_comments": [ + " this server doesn't let the clients create identities " + ] + }, + "conditionalCreate": true, + "_conditionalCreate": { + "fhir_comments": [ + " it's good to support conditional create on patients; this solves a common middleware problem " + ] + }, + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "_conditionalDelete": { + "fhir_comments": [ + " 0..1 If allows/uses conditional update " + ] + }, + "searchInclude": [ + "Organization" + ], + "searchRevInclude": [ + "Person" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN", + "modifier": [ + "missing" + ] + }, + { + "name": "careprovider", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-careprovider", + "type": "reference", + "target": [ + "Organization" + ], + "_target": [ + { + "fhir_comments": [ + " there's not a lot of value in saying this, since it's the only \n choice anyway. but in other cases it's pretty important " + ] + } + ], + "modifier": [ + "missing" + ], + "chain": [ + "name", + "identifier" + ] + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/compartment/Patient" + ] + } + ], + "messaging": [ + { + "fhir_comments": [ + " a messaging conformance statement. Applications are not required to make a conformance \n statement with regard to messaging, though there is active argument that they should. " + ], + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234", + "_address": { + "fhir_comments": [ + " LLP server at 10.1.1.10 on port 9234 " + ] + } + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications", + "event": [ + { + "code": { + "system": "http://hl7.org/fhir/message-type", + "code": "admin-notify" + }, + "category": "Consequence", + "mode": "receiver", + "_mode": { + "fhir_comments": [ + " this a receiver - i.e. answers. Not neccessariy a server (though this is) " + ] + }, + "focus": "Patient", + "request": { + "fhir_comments": [ + " specify a profile for the request person. Very often there's no \n point profiling the response, it's not interesting " + ], + "reference": "StructureDefinition/daf-patient" + }, + "response": { + "reference": "StructureDefinition/MessageHeader" + }, + "documentation": "Notification of an update to a patient resource. changing the links is not supported" + } + ] + } + ], + "document": [ + { + "fhir_comments": [ + " a document conformance statement " + ], + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "fhir_comments": [ + " this is the important element: a reference to a published document profile \n note that this is a version specific reference. " + ], + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} \ No newline at end of file diff --git a/org.hl7.fhir.dstu2016may/src/test/resources/immunization_example_1.json b/org.hl7.fhir.dstu2016may/src/test/resources/immunization_example_1.json new file mode 100644 index 000000000..06a5c27cb --- /dev/null +++ b/org.hl7.fhir.dstu2016may/src/test/resources/immunization_example_1.json @@ -0,0 +1,135 @@ +{ + "resourceType": "Immunization", + "id": "example", + "text": { + "status": "generated", + "div": "

Generated Narrative with Details

id: example

identifier: urn:oid:1.3.6.1.4.1.21367.2005.3.7.1234

status: completed

date: 10/01/2013

vaccineCode: Fluvax (Influenza) (Details : {urn:oid:1.2.36.1.2001.1005.17 code 'FLUVAX' = '??)

patient: Patient/example

wasNotGiven: false

reported: false

performer: Practitioner/example

requester: Practitioner/example

encounter: Encounter/example

manufacturer: Organization/hl7

location: Location/1

lotNumber: AAJN11K

expirationDate: 15/02/2015

site: left arm (Details : {http://hl7.org/fhir/v3/ActSite code 'LA' = 'left arm', given as 'left arm'})

route: Injection, intramuscular (Details : {http://hl7.org/fhir/v3/RouteOfAdministration code 'IM' = 'Injection, intramuscular', given as 'Injection, intramuscular'})

doseQuantity: 5 mg (Details: http://unitsofmeasure.org code mg = 'mg')

note: Notes on adminstration of vaccine

Explanations

-Reason
*Procedure to meet occupational requirement (procedure) (Details : {SNOMED CT code '429060002' = 'Procedure to meet occupational requirement (procedure))

Reactions

-DateDetailReported
*10/01/2013Observation/exampletrue

VaccinationProtocols

-DoseSequenceDescriptionAuthoritySeriesSeriesDosesTargetDiseaseDoseStatusDoseStatusReason
*1Vaccination Protocol Sequence 1Organization/hl7Vaccination Series 12Congenital rubella syndrome (disorder) (Details : {SNOMED CT code '1857005' = 'Congenital rubella syndrome (disorder))Counts (Details : {http://hl7.org/fhir/vaccination-protocol-dose-status code 'count' = 'Counts', given as 'Counts'})Cold chain break (Details : {http://hl7.org/fhir/vaccination-protocol-dose-status-reason code 'coldchbrk' = 'Cold chain break', given as 'Cold chain break'})
" + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:oid:1.3.6.1.4.1.21367.2005.3.7.1234" + } + ], + "status": "completed", + "date": "2013-01-10", + "vaccineCode": { + "coding": [ + { + "system": "urn:oid:1.2.36.1.2001.1005.17", + "code": "FLUVAX" + } + ], + "text": "Fluvax (Influenza)" + }, + "patient": { + "reference": "Patient/example" + }, + "wasNotGiven": false, + "reported": false, + "performer": { + "reference": "Practitioner/example" + }, + "requester": { + "reference": "Practitioner/example" + }, + "encounter": { + "reference": "Encounter/example" + }, + "manufacturer": { + "reference": "Organization/hl7" + }, + "location": { + "reference": "Location/1" + }, + "lotNumber": "AAJN11K", + "expirationDate": "2015-02-15", + "site": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/ActSite", + "code": "LA", + "display": "left arm" + } + ] + }, + "route": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/RouteOfAdministration", + "code": "IM", + "display": "Injection, intramuscular" + } + ] + }, + "doseQuantity": { + "value": 5, + "system": "http://unitsofmeasure.org", + "code": "mg" + }, + "note": [ + { + "text": "Notes on adminstration of vaccine" + } + ], + "explanation": { + "reason": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "429060002" + } + ] + } + ] + }, + "reaction": [ + { + "date": "2013-01-10", + "detail": { + "reference": "Observation/example" + }, + "reported": true + } + ], + "vaccinationProtocol": [ + { + "doseSequence": 1, + "description": "Vaccination Protocol Sequence 1", + "authority": { + "reference": "Organization/hl7" + }, + "series": "Vaccination Series 1", + "seriesDoses": 2, + "targetDisease": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "1857005" + } + ] + } + ], + "doseStatus": { + "coding": [ + { + "system": "http://hl7.org/fhir/vaccination-protocol-dose-status", + "code": "count", + "display": "Counts" + } + ] + }, + "doseStatusReason": { + "coding": [ + { + "system": "http://hl7.org/fhir/vaccination-protocol-dose-status-reason", + "code": "coldchbrk", + "display": "Cold chain break" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/org.hl7.fhir.dstu2016may/src/test/resources/immunization_example_2.json b/org.hl7.fhir.dstu2016may/src/test/resources/immunization_example_2.json new file mode 100644 index 000000000..8809343f3 --- /dev/null +++ b/org.hl7.fhir.dstu2016may/src/test/resources/immunization_example_2.json @@ -0,0 +1,135 @@ +{ + "resourceType": "Immunization", + "id": "example", + "text": { + "status": "generated", + "div": "

Generated Narrative with Details

id: example

identifier: urn:oid:1.3.6.1.4.1.21367.2005.3.7.1234

status: completed

date: 10/01/2013

vaccineCode: Fluvax (Influenza) (Details : {urn:oid:1.2.36.1.2001.1005.17 code 'FLUVAX' = '??)

patient: Patient/example

wasNotGiven: false

reported: false

performer: Practitioner/example

requester: Practitioner/example

encounter: Encounter/example

manufacturer: Organization/hl7

location: Location/1

lotNumber: AAJN11K

expirationDate: 15/02/2015

site: left arm (Details : {http://hl7.org/fhir/v3/ActSite code 'LA' = 'left arm', given as 'left arm'})

route: Injection, intramuscular (Details : {http://hl7.org/fhir/v3/RouteOfAdministration code 'IM' = 'Injection, intramuscular', given as 'Injection, intramuscular'})

doseQuantity: 5 mg (Details: http://unitsofmeasure.org code mg = 'mg')

note: Notes on adminstration of vaccine

Explanations

-Reason
*Procedure to meet occupational requirement (procedure) (Details : {SNOMED CT code '429060002' = 'Procedure to meet occupational requirement (procedure))

Reactions

-DateDetailReported
*10/01/2013Observation/exampletrue

VaccinationProtocols

-DoseSequenceDescriptionAuthoritySeriesSeriesDosesTargetDiseaseDoseStatusDoseStatusReason
*1Vaccination Protocol Sequence 1Organization/hl7Vaccination Series 12Congenital rubella syndrome (disorder) (Details : {SNOMED CT code '1857005' = 'Congenital rubella syndrome (disorder))Counts (Details : {http://hl7.org/fhir/vaccination-protocol-dose-status code 'count' = 'Counts', given as 'Counts'})Cold chain break (Details : {http://hl7.org/fhir/vaccination-protocol-dose-status-reason code 'coldchbrk' = 'Cold chain break', given as 'Cold chain break'})
" + }, + "identifier": [ + { + "system": "urn:ietf:rfc:3986", + "value": "urn:oid:1.3.6.1.4.1.21367.2005.3.7.1234" + } + ], + "status": "completed", + "date": "2013-01-10", + "vaccineCode": { + "coding": [ + { + "system": "urn:oid:1.2.36.1.2001.1005.17", + "code": "FLUVAX" + } + ], + "text": "Fluvax (Influenza)" + }, + "patient": { + "reference": "Patient/example" + }, + "wasNotGiven": false, + "reported": false, + "performer": { + "reference": "Practitioner/example" + }, + "requester": { + "reference": "Practitioner/example" + }, + "encounter": { + "reference": "Encounter/example" + }, + "manufacturer": { + "reference": "Organization/hl7" + }, + "location": { + "reference": "Location/1" + }, + "lotNumber": "AAJN11K", + "expirationDate": "2015-02-15", + "site": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/ActSite", + "code": "LA", + "display": "left arm" + } + ] + }, + "route": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/RouteOfAdministration", + "code": "IM", + "display": "Injection, intramuscular" + } + ] + }, + "doseQuantity": { + "value": 5, + "system": "http://unitsofmeasure.org", + "code": "mg" + }, + "note": [ + { + "text": "Notes on adminstration of vaccine" + } + ], + "explanation": { + "reason": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "429060002" + } + ] + } + ] + }, + "reaction": [ + { + "date": "2013-01-10", + "detail": { + "reference": "Observation/example" + }, + "reported": true + } + ], + "vaccinationProtocol": [ + { + "doseSequence": 1, + "description": "Vaccination Protocol Sequence 1", + "authority": { + "reference": "Organization/hl7" + }, + "series": "Vaccination Series 1", + "seriesDoses": 2, + "targetDisease": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "1857004" + } + ] + } + ], + "doseStatus": { + "coding": [ + { + "system": "http://hl7.org/fhir/vaccination-protocol-dose-status", + "code": "count", + "display": "Counts" + } + ] + }, + "doseStatusReason": { + "coding": [ + { + "system": "http://hl7.org/fhir/vaccination-protocol-dose-status-reason", + "code": "coldchbrk", + "display": "Cold chain break" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/org.hl7.fhir.dstu2016may/src/test/resources/patient_example_1.json b/org.hl7.fhir.dstu2016may/src/test/resources/patient_example_1.json new file mode 100644 index 000000000..c8e3201e6 --- /dev/null +++ b/org.hl7.fhir.dstu2016may/src/test/resources/patient_example_1.json @@ -0,0 +1,154 @@ +{ + "resourceType": "Patient", + "id": "example", + "text": { + "status": "generated", + "div": "
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NamePeter James \n Chalmers ("Jim")\n
Address534 Erewhon, Pleasantville, Vic, 3999
ContactsHome: unknown. Work: (03) 5555 6473
IdMRN: 12345 (Acme Healthcare)
\n \n
" + }, + "identifier": [ + { + "fhir_comments": [ + " MRN assigned by ACME healthcare on 6-May 2001 " + ], + "use": "usual", + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0203", + "code": "MR" + } + ] + }, + "system": "urn:oid:1.2.36.146.595.217.0.1", + "value": "12345", + "period": { + "start": "2001-05-06" + }, + "assigner": { + "display": "Acme Healthcare" + } + } + ], + "active": true, + "name": [ + { + "fhir_comments": [ + " Peter James Chalmers, but called \"Jim\" " + ], + "use": "official", + "family": [ + "Chalmers" + ], + "given": [ + "Peter", + "James" + ] + }, + { + "use": "usual", + "given": [ + "Jim" + ] + } + ], + "telecom": [ + { + "fhir_comments": [ + " home communication details aren't known " + ], + "use": "home" + }, + { + "system": "phone", + "value": "(03) 5555 6473", + "use": "work" + } + ], + "gender": "male", + "_gender": { + "fhir_comments": [ + " use FHIR code system for male / female " + ] + }, + "birthDate": "1974-12-25", + "_birthDate": { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime", + "valueDateTime": "1974-12-25T14:35:45-05:00" + } + ] + }, + "deceasedBoolean": false, + "address": [ + { + "use": "home", + "type": "both", + "line": [ + "534 Erewhon St" + ], + "city": "PleasantVille", + "district": "Rainbow", + "state": "Vic", + "postalCode": "3999", + "period": { + "start": "1974-12-25" + } + } + ], + "contact": [ + { + "relationship": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/patient-contact-relationship", + "code": "partner" + } + ] + } + ], + "name": { + "family": [ + "du", + "Marché" + ], + "_family": [ + { + "extension": [ + { + "fhir_comments": [ + " the \"du\" part is a family name prefix (VV in iso 21090) " + ], + "url": "http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier", + "valueCode": "VV" + } + ] + }, + null + ], + "given": [ + "Bénédicte" + ] + }, + "telecom": [ + { + "system": "phone", + "value": "+33 (237) 998327" + } + ], + "gender": "female", + "period": { + "start": "2012", + "_start": { + "fhir_comments": [ + " The contact relationship started in 2012 " + ] + } + } + } + ], + "managingOrganization": { + "reference": "Organization/1" + } +} \ No newline at end of file diff --git a/org.hl7.fhir.dstu2016may/src/test/resources/patient_example_2.json b/org.hl7.fhir.dstu2016may/src/test/resources/patient_example_2.json new file mode 100644 index 000000000..bd2ba01d5 --- /dev/null +++ b/org.hl7.fhir.dstu2016may/src/test/resources/patient_example_2.json @@ -0,0 +1,153 @@ +{ + "resourceType": "Patient", + "id": "example", + "text": { + "status": "generated", + "div": "
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NamePeter James \n Chalmers ("Jim")\n
Address534 Erewhon, Pleasantville, Vic, 3999
ContactsHome: unknown. Work: (03) 5555 6473
IdMRN: 12345 (Acme Healthcare)
\n \n
" + }, + "identifier": [ + { + "fhir_comments": [ + " MRN assigned by ACME healthcare on 6-May 2001 " + ], + "use": "usual", + "type": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0203", + "code": "MR" + } + ] + }, + "system": "urn:oid:1.2.36.146.595.217.0.1", + "value": "12345", + "period": { + "start": "2001-05-06" + }, + "assigner": { + "display": "Acme Healthcare" + } + } + ], + "active": true, + "name": [ + { + "fhir_comments": [ + " Peter James Chalmers, but called \"Jim\" " + ], + "use": "official", + "family": [ + "Chalmers" + ], + "given": [ + "Supernintendo" + ] + }, + { + "use": "usual", + "given": [ + "Jim" + ] + } + ], + "telecom": [ + { + "fhir_comments": [ + " home communication details aren't known " + ], + "use": "home" + }, + { + "system": "phone", + "value": "(03) 5555 6473", + "use": "work" + } + ], + "gender": "male", + "_gender": { + "fhir_comments": [ + " use FHIR code system for male / female " + ] + }, + "birthDate": "1974-12-25", + "_birthDate": { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime", + "valueDateTime": "1974-12-25T14:35:45-05:00" + } + ] + }, + "deceasedBoolean": false, + "address": [ + { + "use": "home", + "type": "both", + "line": [ + "534 Erewhon St" + ], + "city": "PleasantVille", + "district": "Rainbow", + "state": "Vic", + "postalCode": "3999", + "period": { + "start": "1974-12-25" + } + } + ], + "contact": [ + { + "relationship": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/patient-contact-relationship", + "code": "partner" + } + ] + } + ], + "name": { + "family": [ + "du", + "Marché" + ], + "_family": [ + { + "extension": [ + { + "fhir_comments": [ + " the \"du\" part is a family name prefix (VV in iso 21090) " + ], + "url": "http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier", + "valueCode": "VV" + } + ] + }, + null + ], + "given": [ + "Bénédicte" + ] + }, + "telecom": [ + { + "system": "phone", + "value": "+33 (237) 998327" + } + ], + "gender": "female", + "period": { + "start": "2012", + "_start": { + "fhir_comments": [ + " The contact relationship started in 2012 " + ] + } + } + } + ], + "managingOrganization": { + "reference": "Organization/1" + } +} \ No newline at end of file From 76ef9370d0563e4a13824f7f346c3cc723f617d8 Mon Sep 17 00:00:00 2001 From: dotasek Date: Fri, 5 May 2023 16:55:55 -0400 Subject: [PATCH 11/25] Add test coverage for CapabilityStatement.Conformance + fix 10_40/50 Fixes incorrect lastPath preventing ignoring of acceptUnknown extensions --- .../advisors/impl/BaseAdvisor_10_40.java | 2 +- .../advisors/impl/BaseAdvisor_10_50.java | 2 +- .../CapabilityStatement10_30Test.java | 29 +++ .../CapabilityStatement10_40Test.java | 29 +++ .../CapabilityStatement10_50Test.java | 29 +++ .../CapabilityStatement14_30Test.java | 29 +++ .../CapabilityStatement14_40Test.java | 28 +++ .../CapabilityStatement14_50Test.java | 8 +- .../CapabilityStatement30_40Test.java | 3 +- .../CapabilityStatement30_50Test.java | 2 +- .../resources/capability_statement_30.json | 223 ++++++++++++++++++ ...lity_statement_40_with_30_extensions.json} | 0 ...lity_statement_50_with_30_extensions.json} | 0 .../src/test/resources/conformance_30_10.json | 184 +++++++++++++++ .../src/test/resources/conformance_30_14.json | 202 ++++++++++++++++ .../src/test/resources/conformance_40_10.json | 168 +++++++++++++ .../src/test/resources/conformance_40_14.json | 178 ++++++++++++++ .../src/test/resources/conformance_50_10.json | 168 +++++++++++++ ...ment_50_14.json => conformance_50_14.json} | 0 19 files changed, 1275 insertions(+), 9 deletions(-) create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_30/CapabilityStatement10_30Test.java create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_40/CapabilityStatement10_40Test.java create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_50/CapabilityStatement10_50Test.java create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_30/CapabilityStatement14_30Test.java create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_40/CapabilityStatement14_40Test.java create mode 100644 org.hl7.fhir.convertors/src/test/resources/capability_statement_30.json rename org.hl7.fhir.convertors/src/test/resources/{capability_statement_40.json => capability_statement_40_with_30_extensions.json} (100%) rename org.hl7.fhir.convertors/src/test/resources/{capability_statement_50.json => capability_statement_50_with_30_extensions.json} (100%) create mode 100644 org.hl7.fhir.convertors/src/test/resources/conformance_30_10.json create mode 100644 org.hl7.fhir.convertors/src/test/resources/conformance_30_14.json create mode 100644 org.hl7.fhir.convertors/src/test/resources/conformance_40_10.json create mode 100644 org.hl7.fhir.convertors/src/test/resources/conformance_40_14.json create mode 100644 org.hl7.fhir.convertors/src/test/resources/conformance_50_10.json rename org.hl7.fhir.convertors/src/test/resources/{capability_statement_50_14.json => conformance_50_14.json} (100%) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java index 54501bf52..9a4035bab 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java @@ -28,7 +28,7 @@ public class BaseAdvisor_10_40 extends BaseAdvisor40 paths = Arrays.asList(path.split(",")); final String lastPath = paths.get(paths.size() - 1); - return (lastPath.equals("Conformance")) && (conformanceIgnoredUrls.contains(url)); + return (lastPath.equals("CapabilityStatement")) && (conformanceIgnoredUrls.contains(url)); } @Override diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java index 5653a2dd7..ce43f8876 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java @@ -26,7 +26,7 @@ public class BaseAdvisor_10_50 extends BaseAdvisor50 paths = Arrays.asList(path.split(",")); final String lastPath = paths.get(paths.size() - 1); - return (lastPath.equals("Conformance")) && (conformanceIgnoredUrls.contains(url)); + return (lastPath.equals("CapabilityStatement")) && (conformanceIgnoredUrls.contains(url)); } public boolean ignoreType(@Nonnull String path, diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_30/CapabilityStatement10_30Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_30/CapabilityStatement10_30Test.java new file mode 100644 index 000000000..b3ed1af23 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_30/CapabilityStatement10_30Test.java @@ -0,0 +1,29 @@ +package org.hl7.fhir.convertors.conv10_30; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_10_30; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CapabilityStatement10_30Test { + @Test + @DisplayName("Test dstu3 -> dstu2 CapabilityStatement conversion.") + public void testDstu3_Dstu2() throws IOException { + InputStream dstu3_input = this.getClass().getResourceAsStream("/capability_statement_30.json"); + + org.hl7.fhir.dstu3.model.CapabilityStatement dstu3 = (org.hl7.fhir.dstu3.model.CapabilityStatement) new org.hl7.fhir.dstu3.formats.JsonParser().parse(dstu3_input); + org.hl7.fhir.dstu2.model.Resource dstu2_conv = VersionConvertorFactory_10_30.convertResource(dstu3); + + org.hl7.fhir.dstu2.formats.JsonParser dstu2_parser = new org.hl7.fhir.dstu2.formats.JsonParser(); + + InputStream dstu2_input = this.getClass().getResourceAsStream("/conformance_30_10.json"); + org.hl7.fhir.dstu2.model.Conformance dstu2_actual = (org.hl7.fhir.dstu2.model.Conformance) dstu2_parser.parse(dstu2_input); + + assertTrue(dstu2_actual.equalsDeep(dstu2_conv), "should be the same"); + } +} diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_40/CapabilityStatement10_40Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_40/CapabilityStatement10_40Test.java new file mode 100644 index 000000000..b44bb0185 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_40/CapabilityStatement10_40Test.java @@ -0,0 +1,29 @@ +package org.hl7.fhir.convertors.conv10_40; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_10_40; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CapabilityStatement10_40Test { + @Test + @DisplayName("Test r4 -> dstu2 CapabilityStatement conversion.") + public void testR4_Dstu2() throws IOException { + InputStream r4_input = this.getClass().getResourceAsStream("/capability_statement_50_with_30_extensions.json"); + + org.hl7.fhir.r4.model.CapabilityStatement r4_actual = (org.hl7.fhir.r4.model.CapabilityStatement) new org.hl7.fhir.r4.formats.JsonParser().parse(r4_input); + org.hl7.fhir.dstu2.model.Resource dstu2_conv = VersionConvertorFactory_10_40.convertResource(r4_actual); + + org.hl7.fhir.dstu2.formats.JsonParser dstu2_parser = new org.hl7.fhir.dstu2.formats.JsonParser(); + + InputStream dstu2_input = this.getClass().getResourceAsStream("/conformance_40_10.json"); + org.hl7.fhir.dstu2.model.Conformance dstu2_actual = (org.hl7.fhir.dstu2.model.Conformance) dstu2_parser.parse(dstu2_input); + + assertTrue(dstu2_actual.equalsDeep(dstu2_conv), "should be the same"); + } +} diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_50/CapabilityStatement10_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_50/CapabilityStatement10_50Test.java new file mode 100644 index 000000000..f33384c97 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv10_50/CapabilityStatement10_50Test.java @@ -0,0 +1,29 @@ +package org.hl7.fhir.convertors.conv10_50; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_10_50; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CapabilityStatement10_50Test { + @Test + @DisplayName("Test r5 -> dstu2 CapabilityStatement conversion.") + public void testR5_Dstu2() throws IOException { + InputStream r5_input = this.getClass().getResourceAsStream("/capability_statement_50_with_30_extensions.json"); + + org.hl7.fhir.r5.model.CapabilityStatement r5_actual = (org.hl7.fhir.r5.model.CapabilityStatement) new org.hl7.fhir.r5.formats.JsonParser().parse(r5_input); + org.hl7.fhir.dstu2.model.Resource dstu2_conv = VersionConvertorFactory_10_50.convertResource(r5_actual); + + org.hl7.fhir.dstu2.formats.JsonParser dstu2_parser = new org.hl7.fhir.dstu2.formats.JsonParser(); + + InputStream dstu2_input = this.getClass().getResourceAsStream("/conformance_50_10.json"); + org.hl7.fhir.dstu2.model.Conformance dstu2_actual = (org.hl7.fhir.dstu2.model.Conformance) dstu2_parser.parse(dstu2_input); + + assertTrue(dstu2_actual.equalsDeep(dstu2_conv), "should be the same"); + } +} diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_30/CapabilityStatement14_30Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_30/CapabilityStatement14_30Test.java new file mode 100644 index 000000000..6b9971bea --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_30/CapabilityStatement14_30Test.java @@ -0,0 +1,29 @@ +package org.hl7.fhir.convertors.conv14_30; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_30; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CapabilityStatement14_30Test { + @Test + @DisplayName("Test r4 -> dstu2016 CapabilityStatement conversion.") + public void testDstu3_Dstu2016() throws IOException { + InputStream dstu3_input = this.getClass().getResourceAsStream("/capability_statement_30.json"); + + org.hl7.fhir.dstu3.model.CapabilityStatement dstu3 = (org.hl7.fhir.dstu3.model.CapabilityStatement) new org.hl7.fhir.dstu3.formats.JsonParser().parse(dstu3_input); + org.hl7.fhir.dstu2016may.model.Resource dstu2016_conv = VersionConvertorFactory_14_30.convertResource(dstu3); + + org.hl7.fhir.dstu2016may.formats.JsonParser dstu2016_parser = new org.hl7.fhir.dstu2016may.formats.JsonParser(); + + InputStream dstu2016_input = this.getClass().getResourceAsStream("/conformance_30_14.json"); + org.hl7.fhir.dstu2016may.model.Conformance dstu2016_actual = (org.hl7.fhir.dstu2016may.model.Conformance) dstu2016_parser.parse(dstu2016_input); + + assertTrue(dstu2016_actual.equalsDeep(dstu2016_conv), "should be the same"); + } +} diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_40/CapabilityStatement14_40Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_40/CapabilityStatement14_40Test.java new file mode 100644 index 000000000..cb0b319ed --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_40/CapabilityStatement14_40Test.java @@ -0,0 +1,28 @@ +package org.hl7.fhir.convertors.conv14_40; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_40; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CapabilityStatement14_40Test { + @Test + @DisplayName("Test r4 -> dstu2016 CapabilityStatement conversion.") + public void testR4_Dstu3() throws IOException { + InputStream r4_input = this.getClass().getResourceAsStream("/capability_statement_40_with_30_extensions.json"); + + org.hl7.fhir.r4.model.CapabilityStatement r4_actual = (org.hl7.fhir.r4.model.CapabilityStatement) new org.hl7.fhir.r4.formats.JsonParser().parse(r4_input); + org.hl7.fhir.dstu2016may.model.Resource dstu2016_conv = VersionConvertorFactory_14_40.convertResource(r4_actual); + + org.hl7.fhir.dstu2016may.formats.JsonParser dstu2016_parser = new org.hl7.fhir.dstu2016may.formats.JsonParser(); + + InputStream dstu2016_input = this.getClass().getResourceAsStream("/conformance_40_14.json"); + org.hl7.fhir.dstu2016may.model.Conformance dstu2016_actual = (org.hl7.fhir.dstu2016may.model.Conformance) dstu2016_parser.parse(dstu2016_input); + + assertTrue(dstu2016_actual.equalsDeep(dstu2016_conv), "should be the same"); + } +} diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_50/CapabilityStatement14_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_50/CapabilityStatement14_50Test.java index ae770a4e0..65d982174 100644 --- a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_50/CapabilityStatement14_50Test.java +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv14_50/CapabilityStatement14_50Test.java @@ -1,7 +1,7 @@ package org.hl7.fhir.convertors.conv14_50; import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_50; -import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -13,15 +13,15 @@ import static org.junit.jupiter.api.Assertions.assertTrue; public class CapabilityStatement14_50Test { @Test @DisplayName("Test r5 -> dstu2016 CapabilityStatement conversion.") - public void testR5_Dstu3() throws IOException { - InputStream r5_input = this.getClass().getResourceAsStream("/capability_statement_50.json"); + public void testR5_Dstu2016() throws IOException { + InputStream r5_input = this.getClass().getResourceAsStream("/capability_statement_50_with_30_extensions.json"); org.hl7.fhir.r5.model.CapabilityStatement r5_actual = (org.hl7.fhir.r5.model.CapabilityStatement) new org.hl7.fhir.r5.formats.JsonParser().parse(r5_input); org.hl7.fhir.dstu2016may.model.Resource dstu2016_conv = VersionConvertorFactory_14_50.convertResource(r5_actual); org.hl7.fhir.dstu2016may.formats.JsonParser dstu2016_parser = new org.hl7.fhir.dstu2016may.formats.JsonParser(); - InputStream dstu2016_input = this.getClass().getResourceAsStream("/capability_statement_50_14.json"); + InputStream dstu2016_input = this.getClass().getResourceAsStream("/conformance_50_14.json"); org.hl7.fhir.dstu2016may.model.Conformance dstu2016_actual = (org.hl7.fhir.dstu2016may.model.Conformance) dstu2016_parser.parse(dstu2016_input); assertTrue(dstu2016_actual.equalsDeep(dstu2016_conv), "should be the same"); diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_40/CapabilityStatement30_40Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_40/CapabilityStatement30_40Test.java index 40ee14a0e..7743da5b3 100644 --- a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_40/CapabilityStatement30_40Test.java +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_40/CapabilityStatement30_40Test.java @@ -1,7 +1,6 @@ package org.hl7.fhir.convertors.conv30_40; import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_40; -import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -14,7 +13,7 @@ public class CapabilityStatement30_40Test { @Test @DisplayName("Test r4 -> dstu3 CapabilityStatement conversion.") public void testR4_Dstu3() throws IOException { - InputStream r4_input = this.getClass().getResourceAsStream("/capability_statement_40.json"); + InputStream r4_input = this.getClass().getResourceAsStream("/capability_statement_40_with_30_extensions.json"); org.hl7.fhir.r4.model.CapabilityStatement r5_actual = (org.hl7.fhir.r4.model.CapabilityStatement) new org.hl7.fhir.r4.formats.JsonParser().parse(r4_input); org.hl7.fhir.dstu3.model.Resource dstu3_conv = VersionConvertorFactory_30_40.convertResource(r5_actual); diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java index 874064b78..095bfea3c 100644 --- a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java @@ -13,7 +13,7 @@ public class CapabilityStatement30_50Test { @Test @DisplayName("Test r5 -> dstu3 CapabilityStatement conversion.") public void testR5_Dstu3() throws IOException { - InputStream r5_input = this.getClass().getResourceAsStream("/capability_statement_50.json"); + InputStream r5_input = this.getClass().getResourceAsStream("/capability_statement_50_with_30_extensions.json"); org.hl7.fhir.r5.model.CapabilityStatement r5_actual = (org.hl7.fhir.r5.model.CapabilityStatement) new org.hl7.fhir.r5.formats.JsonParser().parse(r5_input); org.hl7.fhir.dstu3.model.Resource dstu3_conv = VersionConvertorFactory_30_50.convertResource(r5_actual); diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_30.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_30.json new file mode 100644 index 000000000..787c70c14 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/capability_statement_30.json @@ -0,0 +1,223 @@ +{ + "resourceType": "CapabilityStatement", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t

The EHR Application has a \n general document profile.\n

\n\t\t
" + }, + "url": "urn:uuid:68D043B5-9ECF-4559-A57A-396E0D452311", + "version": "20130510", + "name": "ACME-EHR", + "title": "ACME EHR capability statement", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "useContext": [ + { + "code": { + "system": "http://hl7.org/fhir/usage-context-type", + "code": "focus" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/variant-state", + "code": "positive" + } + ] + } + } + ], + "jurisdiction": [ + { + "coding": [ + { + "system": "urn:iso:std:iso:3166", + "code": "US", + "display": "United States of America (the)" + } + ] + } + ], + "purpose": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "instantiates": [ + "http://ihe.org/fhir/CapabilityStatement/pixm-client" + ], + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "1.0.0", + "acceptUnknown": "both", + "format": [ + "xml", + "json" + ], + "patchFormat": [ + "application/xml-patch+xml", + "application/json-patch+json" + ], + "implementationGuide": [ + "http://hl7.org/fhir/us/lab" + ], + "profile": [ + { + "reference": "http://hl7.org/fhir/us/core/StructureDefinition/familymemberhistory-genetic" + } + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation", + "certificate": [ + { + "type": "application/jwt", + "blob": "IHRoaXMgYmxvYiBpcyBub3QgdmFsaWQ=" + } + ] + }, + "resource": [ + { + "type": "Patient", + "profile": { + "reference": "http://fhir.hl7.org/base/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "documentation": "This server does not let the clients create identities.", + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalRead": "full-support", + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Organization" + ], + "searchRevInclude": [ + "Person" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications", + "event": [ + { + "code": { + "system": "http://hl7.org/fhir/message-events", + "code": "admin-notify" + }, + "category": "Consequence", + "mode": "receiver", + "focus": "Patient", + "request": { + "reference": "StructureDefinition/Patient" + }, + "response": { + "reference": "StructureDefinition/MessageHeader" + }, + "documentation": "Notification of an update to a patient resource. changing the links is not supported" + } + ] + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_40.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_40_with_30_extensions.json similarity index 100% rename from org.hl7.fhir.convertors/src/test/resources/capability_statement_40.json rename to org.hl7.fhir.convertors/src/test/resources/capability_statement_40_with_30_extensions.json diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50_with_30_extensions.json similarity index 100% rename from org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json rename to org.hl7.fhir.convertors/src/test/resources/capability_statement_50_with_30_extensions.json diff --git a/org.hl7.fhir.convertors/src/test/resources/conformance_30_10.json b/org.hl7.fhir.convertors/src/test/resources/conformance_30_10.json new file mode 100644 index 000000000..be6774a1b --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/conformance_30_10.json @@ -0,0 +1,184 @@ +{ + "resourceType": "Conformance", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t

The EHR Application has a \n general document profile.\n

\n\t\t
" + }, + "url": "urn:uuid:68D043B5-9ECF-4559-A57A-396E0D452311", + "version": "20130510", + "name": "ACME-EHR", + "status": "draft", + "experimental": true, + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "date": "2012-01-04", + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "requirements": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "1.0.0", + "acceptUnknown": "both", + "format": [ + "xml", + "json" + ], + "profile": [ + { + "reference": "http://hl7.org/fhir/us/core/StructureDefinition/familymemberhistory-genetic" + } + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation", + "certificate": [ + { + "type": "application/jwt", + "blob": "IHRoaXMgYmxvYiBpcyBub3QgdmFsaWQ=" + } + ] + }, + "resource": [ + { + "type": "Patient", + "profile": { + "reference": "http://fhir.hl7.org/base/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Organization" + ], + "searchRevInclude": [ + "Person" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "transactionMode": "transaction", + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications", + "event": [ + { + "code": { + "system": "http://hl7.org/fhir/message-events", + "code": "admin-notify" + }, + "category": "Consequence", + "mode": "receiver", + "focus": "Patient", + "request": { + "reference": "StructureDefinition/Patient" + }, + "response": { + "reference": "StructureDefinition/MessageHeader" + }, + "documentation": "Notification of an update to a patient resource. changing the links is not supported" + } + ] + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} diff --git a/org.hl7.fhir.convertors/src/test/resources/conformance_30_14.json b/org.hl7.fhir.convertors/src/test/resources/conformance_30_14.json new file mode 100644 index 000000000..b0d0263b3 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/conformance_30_14.json @@ -0,0 +1,202 @@ +{ + "resourceType": "Conformance", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t

The EHR Application has a \n general document profile.\n

\n\t\t
" + }, + "url": "urn:uuid:68D043B5-9ECF-4559-A57A-396E0D452311", + "version": "20130510", + "name": "ACME-EHR", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "useContext": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/variant-state", + "code": "positive" + } + ] + }, + { + "coding": [ + { + "system": "urn:iso:std:iso:3166", + "code": "US", + "display": "United States of America (the)" + } + ] + } + ], + "requirements": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "1.0.0", + "acceptUnknown": "both", + "format": [ + "xml", + "json" + ], + "profile": [ + { + "reference": "http://hl7.org/fhir/us/core/StructureDefinition/familymemberhistory-genetic" + } + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation", + "certificate": [ + { + "type": "application/jwt", + "blob": "IHRoaXMgYmxvYiBpcyBub3QgdmFsaWQ=" + } + ] + }, + "resource": [ + { + "type": "Patient", + "profile": { + "reference": "http://fhir.hl7.org/base/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Organization" + ], + "searchRevInclude": [ + "Person" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications", + "event": [ + { + "code": { + "system": "http://hl7.org/fhir/message-events", + "code": "admin-notify" + }, + "category": "Consequence", + "mode": "receiver", + "focus": "Patient", + "request": { + "reference": "StructureDefinition/Patient" + }, + "response": { + "reference": "StructureDefinition/MessageHeader" + }, + "documentation": "Notification of an update to a patient resource. changing the links is not supported" + } + ] + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/test/resources/conformance_40_10.json b/org.hl7.fhir.convertors/src/test/resources/conformance_40_10.json new file mode 100644 index 000000000..0893409b4 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/conformance_40_10.json @@ -0,0 +1,168 @@ +{ + "resourceType": "Conformance", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t\n

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t\n

The EHR Application has a \n \n general document profile.\n \n

\n\t\t\n
" + }, + "extension": [ + { + "url": "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile", + "valueReference": { + "reference": "http://hl7.org/fhir/us/core/StructureDefinition/familymemberhistory-genetic" + } + } + ], + "url": "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", + "version": "20130510", + "name": "ACMEEHR", + "status": "draft", + "experimental": true, + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "date": "2012-01-04", + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "requirements": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "5.0.0", + "acceptUnknown": "both", + "format": [ + "xml", + "json" + ], + "profile": [ + { + "reference": "http://registry.fhir.org/r5/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347" + } + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation" + }, + "resource": [ + { + "type": "Patient", + "profile": { + "reference": "http://registry.fhir.org/r5/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Patient:organization" + ], + "searchRevInclude": [ + "Person:patient" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "transactionMode": "transaction", + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications" + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} diff --git a/org.hl7.fhir.convertors/src/test/resources/conformance_40_14.json b/org.hl7.fhir.convertors/src/test/resources/conformance_40_14.json new file mode 100644 index 000000000..2812f406e --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/conformance_40_14.json @@ -0,0 +1,178 @@ +{ + "resourceType": "Conformance", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, update, history, search(name,gender), create and updates.

\n\t\t\t

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t

The EHR Application has a general document profile.\n

\n\t\t
" + }, + "url": "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", + "version": "20130510", + "name": "ACMEEHR", + "status": "draft", + "experimental": true, + "date": "2012-01-04", + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "useContext": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/variant-state", + "code": "positive" + } + ] + }, + { + "coding": [ + { + "system": "urn:iso:std:iso:3166", + "code": "US", + "display": "United States of America (the)" + } + ] + } + ], + "requirements": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "4.0.1", + "acceptUnknown": "both", + "format": [ + "xml", + "json" + ], + "profile": [ + { + "reference": "http://registry.fhir.org/r4/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347" + } + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation" + }, + "resource": [ + { + "type": "Patient", + "profile": { + "reference": "http://registry.fhir.org/r4/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Organization" + ], + "searchRevInclude": [ + "Person" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://terminology.hl7.org/CodeSystem/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications" + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/test/resources/conformance_50_10.json b/org.hl7.fhir.convertors/src/test/resources/conformance_50_10.json new file mode 100644 index 000000000..0893409b4 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/conformance_50_10.json @@ -0,0 +1,168 @@ +{ + "resourceType": "Conformance", + "id": "example", + "text": { + "status": "generated", + "div": "
\n\t\t\t

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t\n

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t\n

The EHR Application has a \n \n general document profile.\n \n

\n\t\t\n
" + }, + "extension": [ + { + "url": "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile", + "valueReference": { + "reference": "http://hl7.org/fhir/us/core/StructureDefinition/familymemberhistory-genetic" + } + } + ], + "url": "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", + "version": "20130510", + "name": "ACMEEHR", + "status": "draft", + "experimental": true, + "publisher": "ACME Corporation", + "contact": [ + { + "name": "System Administrator", + "telecom": [ + { + "system": "email", + "value": "wile@acme.org" + } + ] + } + ], + "date": "2012-01-04", + "description": "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", + "requirements": "Main EHR capability statement, published for contracting and operational support", + "copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems", + "kind": "instance", + "software": { + "name": "EHR", + "version": "0.00.020.2134", + "releaseDate": "2012-01-04" + }, + "implementation": { + "description": "main EHR at ACME", + "url": "http://10.2.3.4/fhir" + }, + "fhirVersion": "5.0.0", + "acceptUnknown": "both", + "format": [ + "xml", + "json" + ], + "profile": [ + { + "reference": "http://registry.fhir.org/r5/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347" + } + ], + "rest": [ + { + "mode": "server", + "documentation": "Main FHIR endpoint for acem health", + "security": { + "cors": true, + "service": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/restful-security-service", + "code": "SMART-on-FHIR" + } + ] + } + ], + "description": "See Smart on FHIR documentation" + }, + "resource": [ + { + "type": "Patient", + "profile": { + "reference": "http://registry.fhir.org/r5/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread", + "documentation": "Only supported for patient records since 12-Dec 2012" + }, + { + "code": "update" + }, + { + "code": "history-instance" + }, + { + "code": "create" + }, + { + "code": "history-type" + } + ], + "versioning": "versioned-update", + "readHistory": true, + "updateCreate": false, + "conditionalCreate": true, + "conditionalUpdate": false, + "conditionalDelete": "not-supported", + "searchInclude": [ + "Patient:organization" + ], + "searchRevInclude": [ + "Person:patient" + ], + "searchParam": [ + { + "name": "identifier", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier", + "type": "token", + "documentation": "Only supports search by institution MRN" + }, + { + "name": "general-practitioner", + "definition": "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", + "type": "reference" + } + ] + } + ], + "interaction": [ + { + "code": "transaction" + }, + { + "code": "history-system" + } + ], + "transactionMode": "transaction", + "compartment": [ + "http://hl7.org/fhir/CompartmentDefinition/patient" + ] + } + ], + "messaging": [ + { + "endpoint": [ + { + "protocol": { + "system": "http://hl7.org/fhir/message-transport", + "code": "mllp" + }, + "address": "mllp:10.1.1.10:9234" + } + ], + "reliableCache": 30, + "documentation": "ADT A08 equivalent for external system notifications" + } + ], + "document": [ + { + "mode": "consumer", + "documentation": "Basic rules for all documents in the EHR system", + "profile": { + "reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" + } + } + ] +} diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_50_14.json b/org.hl7.fhir.convertors/src/test/resources/conformance_50_14.json similarity index 100% rename from org.hl7.fhir.convertors/src/test/resources/capability_statement_50_14.json rename to org.hl7.fhir.convertors/src/test/resources/conformance_50_14.json From a3603e2e3aa9da049285426e6a901c4f74558349 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 1 May 2023 17:43:09 -0400 Subject: [PATCH 12/25] Revert "WIP actually test capabilityStatement conversion" This reverts commit 729d03bd2e5c41b5ebe62d854863c41e01bd1cee. --- .../CapabilityStatement30_40.java | 1 - .../CapabilityStatement30_50.java | 35 +--- .../CapabilityStatement30_50Test.java | 39 ----- .../resources/capability_statement_50.json | 151 ------------------ 4 files changed, 7 insertions(+), 219 deletions(-) delete mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java delete mode 100644 org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java index 81b110c18..025ebaccb 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java @@ -24,7 +24,6 @@ public class CapabilityStatement30_40 { if (src == null) return null; org.hl7.fhir.dstu3.model.CapabilityStatement tgt = new org.hl7.fhir.dstu3.model.CapabilityStatement(); - //FIXME add ignore ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt); if (src.hasUrl()) tgt.setUrlElement(Uri30_40.convertUri(src.getUrlElement())); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java index 04788034b..19ea47cde 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java @@ -20,26 +20,11 @@ import org.hl7.fhir.exceptions.FHIRException; public class CapabilityStatement30_50 { - public static final String ACCEPT_UNKNOWN_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"; - public static final String PROFILE_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile"; - - public static final String ACCEPT_LANGUAGE_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptLanguage"; - - private static final String[] IGNORED_R5_EXTENSION_URLS = new String[]{ - - ACCEPT_UNKNOWN_EXTENSION_URL - }; - - private static final String[] IGNORED_DSTU3_EXTENSION_URLS = new String[]{ - PROFILE_EXTENSION_URL, - ACCEPT_LANGUAGE_EXTENSION_URL - }; public static org.hl7.fhir.r5.model.CapabilityStatement convertCapabilityStatement(org.hl7.fhir.dstu3.model.CapabilityStatement src) throws FHIRException { if (src == null) return null; org.hl7.fhir.r5.model.CapabilityStatement tgt = new org.hl7.fhir.r5.model.CapabilityStatement(); - //FIXME add ignore - ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt, IGNORED_DSTU3_EXTENSION_URLS); + ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); if (src.hasUrl()) tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement())); if (src.hasVersion()) @@ -78,17 +63,14 @@ public class CapabilityStatement30_50 { if (src.hasFhirVersion()) tgt.setFhirVersion(org.hl7.fhir.r5.model.Enumerations.FHIRVersion.fromCode(fixCode(src.getFhirVersion()))); if (src.hasAcceptUnknown()) - tgt.addExtension().setUrl(ACCEPT_UNKNOWN_EXTENSION_URL).setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); + tgt.addExtension().setUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); for (org.hl7.fhir.dstu3.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.dstu3.model.CodeType t : src.getPatchFormat()) tgt.addPatchFormat(t.getValue()); - for (org.hl7.fhir.dstu3.model.Extension extension : src.getExtensionsByUrl(ACCEPT_LANGUAGE_EXTENSION_URL)) { - tgt.addAcceptLanguageElement().setValue(extension.getValue().primitiveValue()); - } for (org.hl7.fhir.dstu3.model.UriType t : src.getImplementationGuide()) tgt.addImplementationGuide(t.getValue()); for (org.hl7.fhir.dstu3.model.CapabilityStatement.CapabilityStatementRestComponent t : src.getRest()) tgt.addRest(convertCapabilityStatementRestComponent(t)); for (org.hl7.fhir.dstu3.model.Reference t : src.getProfile()) - tgt.addExtension(PROFILE_EXTENSION_URL, Reference30_50.convertReference(t)); + tgt.addExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile", Reference30_50.convertReference(t)); for (org.hl7.fhir.dstu3.model.CapabilityStatement.CapabilityStatementMessagingComponent t : src.getMessaging()) tgt.addMessaging(convertCapabilityStatementMessagingComponent(t)); for (org.hl7.fhir.dstu3.model.CapabilityStatement.CapabilityStatementDocumentComponent t : src.getDocument()) @@ -108,7 +90,7 @@ public class CapabilityStatement30_50 { if (src == null) return null; org.hl7.fhir.dstu3.model.CapabilityStatement tgt = new org.hl7.fhir.dstu3.model.CapabilityStatement(); - ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt, IGNORED_R5_EXTENSION_URLS); + ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); if (src.hasUrl()) tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement())); if (src.hasVersion()) @@ -146,20 +128,17 @@ public class CapabilityStatement30_50 { tgt.setImplementation(convertCapabilityStatementImplementationComponent(src.getImplementation())); if (src.hasFhirVersion()) tgt.setFhirVersion(src.getFhirVersion().toCode()); - if (src.hasExtension(ACCEPT_UNKNOWN_EXTENSION_URL)) - tgt.setAcceptUnknown(org.hl7.fhir.dstu3.model.CapabilityStatement.UnknownContentCode.fromCode(src.getExtensionByUrl(ACCEPT_UNKNOWN_EXTENSION_URL).getValue().primitiveValue())); + if (src.hasExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")) + tgt.setAcceptUnknown(org.hl7.fhir.dstu3.model.CapabilityStatement.UnknownContentCode.fromCode(src.getExtensionByUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").getValue().primitiveValue())); for (org.hl7.fhir.r5.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.r5.model.CodeType t : src.getPatchFormat()) tgt.addPatchFormat(t.getValue()); - for (org.hl7.fhir.r5.model.CodeType t : src.getAcceptLanguage()) { - tgt.addExtension(ACCEPT_LANGUAGE_EXTENSION_URL, Code30_50.convertCodeToString(t)); - } for (org.hl7.fhir.r5.model.UriType t : src.getImplementationGuide()) tgt.addImplementationGuide(t.getValue()); for (org.hl7.fhir.r5.model.CapabilityStatement.CapabilityStatementRestComponent r : src.getRest()) for (org.hl7.fhir.r5.model.CapabilityStatement.CapabilityStatementRestResourceComponent rr : r.getResource()) for (org.hl7.fhir.r5.model.CanonicalType t : rr.getSupportedProfile()) tgt.addProfile(Reference30_50.convertCanonicalToReference(t)); for (org.hl7.fhir.r5.model.Extension ext : src.getExtension()) { - if (PROFILE_EXTENSION_URL.equals(ext.getUrl())) { + if ("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile".equals(ext.getUrl())) { tgt.addProfile(Reference30_50.convertReference((org.hl7.fhir.r5.model.Reference) ext.getValue())); } } diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java deleted file mode 100644 index 2f1161066..000000000 --- a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/CapabilityStatement30_50Test.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.hl7.fhir.convertors.conv30_50; - -import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50; -import org.hl7.fhir.r5.formats.JsonParser; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -public class CapabilityStatement30_50Test { - - - @Test - @DisplayName("Test r5 -> dstu3 capabilityStatement conversion.") - public void testR5_DSTU3() throws IOException { - InputStream r5_input = this.getClass().getResourceAsStream("/capability_statement_50.json"); - - JsonParser r5_parser = new JsonParser(); - org.hl7.fhir.r5.model.CapabilityStatement r5_actual = (org.hl7.fhir.r5.model.CapabilityStatement) r5_parser.parse(r5_input); - org.hl7.fhir.dstu3.model.Resource dstu3_conv = VersionConvertorFactory_30_50.convertResource(r5_actual); - - org.hl7.fhir.dstu3.formats.JsonParser dstu3_parser = new org.hl7.fhir.dstu3.formats.JsonParser(); - - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - dstu3_parser.compose(stream, dstu3_conv); - - org.hl7.fhir.dstu3.model.Resource dstu3_streamed = (org.hl7.fhir.dstu3.model.CapabilityStatement) dstu3_parser.parse(new ByteArrayInputStream(stream.toByteArray())); - org.hl7.fhir.r5.model.Resource r5_conv = VersionConvertorFactory_30_50.convertResource(dstu3_streamed); - - assertTrue(r5_actual.equalsDeep(r5_conv), "should be the same"); - } - -} diff --git a/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json b/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json deleted file mode 100644 index fa1a4a9a2..000000000 --- a/org.hl7.fhir.convertors/src/test/resources/capability_statement_50.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "resourceType" : "CapabilityStatement", - "id" : "example", - "text" : { - "status" : "generated", - "div" : "
\n\t\t\t\n

The EHR Server supports the following transactions for the resource Person: read, vread, \n update, history, search(name,gender), create and updates.

\n\t\t\t\n

The EHR System supports the following message: admin-notify::Person.

\n\t\t\t\n

The EHR Application has a \n \n general document profile.\n \n

\n\t\t\n
" - }, - "url" : "urn:uuid:68d043b5-9ecf-4559-a57a-396e0d452311", - "version" : "20130510", - "name" : "ACMEEHR", - "title" : "ACME EHR capability statement", - "status" : "draft", - "experimental" : true, - "date" : "2012-01-04", - "publisher" : "ACME Corporation", - "contact" : [{ - "name" : "System Administrator", - "telecom" : [{ - "system" : "email", - "value" : "wile@acme.org" - }] - }], - "description" : "This is the FHIR capability statement for the main EHR at ACME for the private interface - it does not describe the public interface", - "useContext" : [{ - "code" : { - "system" : "http://terminology.hl7.org/CodeSystem/usage-context-type", - "code" : "focus" - }, - "valueCodeableConcept" : { - "coding" : [{ - "system" : "http://terminology.hl7.org/CodeSystem/variant-state", - "code" : "positive" - }] - } - }], - "jurisdiction" : [{ - "coding" : [{ - "system" : "urn:iso:std:iso:3166", - "code" : "US", - "display" : "United States of America (the)" - }] - }], - "purpose" : "Main EHR capability statement, published for contracting and operational support", - "copyright" : "Copyright © Acme Healthcare and GoodCorp EHR Systems", - "kind" : "instance", - "instantiates" : ["http://ihe.org/fhir/CapabilityStatement/pixm-client"], - "software" : { - "name" : "EHR", - "version" : "0.00.020.2134", - "releaseDate" : "2012-01-04" - }, - "implementation" : { - "description" : "main EHR at ACME", - "url" : "http://10.2.3.4/fhir" - }, - "fhirVersion" : "5.0.0", - "format" : ["xml", - "json"], - "patchFormat" : ["application/xml-patch+xml", - "application/json-patch+json"], - "acceptLanguage" : ["en", - "es"], - "implementationGuide" : ["http://example.org/fhir/us/lab"], - "rest" : [{ - "mode" : "server", - "documentation" : "Main FHIR endpoint for acem health", - "security" : { - "cors" : true, - "service" : [{ - "coding" : [{ - "system" : "http://hl7.org/fhir/restful-security-service", - "code" : "SMART-on-FHIR" - }] - }], - "description" : "See Smart on FHIR documentation" - }, - "resource" : [{ - "type" : "Patient", - "profile" : "http://registry.fhir.org/r5/StructureDefinition/7896271d-57f6-4231-89dc-dcc91eab2416", - "supportedProfile" : ["http://registry.fhir.org/r5/StructureDefinition/00ab9e7a-06c7-4f77-9234-4154ca1e3347"], - "documentation" : "This server does not let the clients create identities.", - "interaction" : [{ - "code" : "read" - }, - { - "code" : "vread", - "documentation" : "Only supported for patient records since 12-Dec 2012" - }, - { - "code" : "update" - }, - { - "code" : "history-instance" - }, - { - "code" : "create" - }, - { - "code" : "history-type" - }], - "versioning" : "versioned-update", - "readHistory" : true, - "updateCreate" : false, - "conditionalCreate" : true, - "conditionalRead" : "full-support", - "conditionalUpdate" : false, - "conditionalPatch" : false, - "conditionalDelete" : "not-supported", - "searchInclude" : ["Patient:organization"], - "searchRevInclude" : ["Person:patient"], - "searchParam" : [{ - "name" : "identifier", - "definition" : "http://hl7.org/fhir/SearchParameter/Patient-identifier", - "type" : "token", - "documentation" : "Only supports search by institution MRN" - }, - { - "name" : "general-practitioner", - "definition" : "http://hl7.org/fhir/SearchParameter/Patient-general-practitioner", - "type" : "reference" - }] - }], - "interaction" : [{ - "code" : "transaction" - }, - { - "code" : "history-system" - }], - "compartment" : ["http://hl7.org/fhir/CompartmentDefinition/patient"] - }], - "messaging" : [{ - "endpoint" : [{ - "protocol" : { - "system" : "http://hl7.org/fhir/message-transport", - "code" : "mllp" - }, - "address" : "mllp:10.1.1.10:9234" - }], - "reliableCache" : 30, - "documentation" : "ADT A08 equivalent for external system notifications", - "supportedMessage" : [{ - "mode" : "receiver", - "definition" : "http://hl7.org/fhir/MessageDefinition/example" - }] - }], - "document" : [{ - "mode" : "consumer", - "documentation" : "Basic rules for all documents in the EHR system", - "profile" : "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796" - }] -} \ No newline at end of file From 7a87cfda32f9d169b40e9a1b5dc127dfea7944b2 Mon Sep 17 00:00:00 2001 From: dotasek Date: Fri, 5 May 2023 18:03:23 -0400 Subject: [PATCH 13/25] Typo --- .../fhir/convertors/conv30_50/ActorDefinition30_50Test.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ActorDefinition30_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ActorDefinition30_50Test.java index 72d94fa4a..4ccea65c2 100644 --- a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ActorDefinition30_50Test.java +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ActorDefinition30_50Test.java @@ -20,12 +20,12 @@ public class ActorDefinition30_50Test { InputStream r5_input = this.getClass().getResourceAsStream("/actordefinition_50_example.json"); org.hl7.fhir.r5.model.ActorDefinition r5_actual = (org.hl7.fhir.r5.model.ActorDefinition) new org.hl7.fhir.r5.formats.JsonParser().parse(r5_input); - org.hl7.fhir.dstu3.model.Resource r4_conv = VersionConvertorFactory_30_50.convertResource(r5_actual); + org.hl7.fhir.dstu3.model.Resource dstu3_conv = VersionConvertorFactory_30_50.convertResource(r5_actual); org.hl7.fhir.dstu3.formats.XmlParser dstu3_parser = new org.hl7.fhir.dstu3.formats.XmlParser(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); - dstu3_parser.compose(stream, r4_conv); + dstu3_parser.compose(stream, dstu3_conv); org.hl7.fhir.dstu3.model.Resource r4_streamed = (org.hl7.fhir.dstu3.model.Basic) new org.hl7.fhir.dstu3.formats.XmlParser().parse(new ByteArrayInputStream(stream.toByteArray())); org.hl7.fhir.r5.model.Resource r5_conv = VersionConvertorFactory_30_50.convertResource(r4_streamed); From a974077366010067b17fa36b75da150c16ae46fa Mon Sep 17 00:00:00 2001 From: dotasek Date: Fri, 5 May 2023 18:03:36 -0400 Subject: [PATCH 14/25] Add ValueSet test --- .../conv30_50/ValueSet30_50Test.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ValueSet30_50Test.java diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ValueSet30_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ValueSet30_50Test.java new file mode 100644 index 000000000..421e9677f --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv30_50/ValueSet30_50Test.java @@ -0,0 +1,34 @@ +package org.hl7.fhir.convertors.conv30_50; + +import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class ValueSet30_50Test { + @Test + @DisplayName("Test r5 -> dstu3 ValueSet conversion.") + public void testR5_Dstu3() throws IOException { + InputStream dstu3_input = this.getClass().getResourceAsStream("/valueset_30.json"); + + org.hl7.fhir.dstu3.model.ValueSet dstu3_actual = (org.hl7.fhir.dstu3.model.ValueSet) new org.hl7.fhir.dstu3.formats.JsonParser().parse(dstu3_input); + org.hl7.fhir.r5.model.Resource r5_conv = VersionConvertorFactory_30_50.convertResource(dstu3_actual); + + org.hl7.fhir.r5.formats.JsonParser r5_parser = new org.hl7.fhir.r5.formats.JsonParser(); + + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + r5_parser.compose(stream, r5_conv); + + org.hl7.fhir.r5.model.Resource r5 = new org.hl7.fhir.r5.formats.JsonParser().parse(new ByteArrayInputStream(stream.toByteArray())); + org.hl7.fhir.dstu3.model.Resource dstu3_conv = VersionConvertorFactory_30_50.convertResource(r5); + + assertTrue(dstu3_actual.equalsDeep(dstu3_conv), "should be the same"); + } +} From 9464be872824bf62fd70ca52f164567b768f9e4c Mon Sep 17 00:00:00 2001 From: dotasek Date: Fri, 5 May 2023 18:03:50 -0400 Subject: [PATCH 15/25] ValueSet test resource --- .../src/test/resources/valueset_30.json | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 org.hl7.fhir.convertors/src/test/resources/valueset_30.json diff --git a/org.hl7.fhir.convertors/src/test/resources/valueset_30.json b/org.hl7.fhir.convertors/src/test/resources/valueset_30.json new file mode 100644 index 000000000..59325d0f1 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/valueset_30.json @@ -0,0 +1,52 @@ +{ + "resourceType": "ValueSet", + "id": "yesnodontknow", + "text": { + "status": "generated", + "div": "
\n

Value Set Contents

\n

This value set contains 3 concepts

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n Code\n \n System\n \n Display\n \n Definition\n
\n \n Y\n http://hl7.org/fhir/v2/0136Yes\n
\n \n N\n http://hl7.org/fhir/v2/0136No\n
\n \n asked\n http://hl7.org/fhir/data-absent-reasonDon't knowThe source human does not know the value.
\n
" + }, + "url": "http://hl7.org/fhir/ValueSet/yesnodontknow", + "name": "Yes/No/Don't Know", + "status": "draft", + "description": "For Capturing simple yes-no-don't know answers", + "extensible": true, + "compose": { + "include": [ + { + "valueSet": [ + "http://hl7.org/fhir/ValueSet/v2-0136" + ] + }, + { + "system": "http://hl7.org/fhir/data-absent-reason", + "concept": [ + { + "code": "asked", + "display": "Don't know" + } + ] + } + ] + }, + "expansion": { + "identifier": "urn:uuid:bf99fe50-2c2b-41ad-bd63-bee6919810b4", + "timestamp": "2015-07-14T10:00:00Z", + "contains": [ + { + "system": "http://hl7.org/fhir/v2/0136", + "code": "Y", + "display": "Yes" + }, + { + "system": "http://hl7.org/fhir/v2/0136", + "code": "N", + "display": "No" + }, + { + "system": "http://hl7.org/fhir/data-absent-reason", + "code": "asked", + "display": "Don't know" + } + ] + } +} \ No newline at end of file From 33f28daf33a26d1fc0da7f88f4d30cf4e3896102 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 8 May 2023 10:57:08 -0400 Subject: [PATCH 16/25] Move ignore extension logic in 30_50 convertors Part 2 --- .../advisors/impl/BaseAdvisor_30_50.java | 14 ++----------- .../conv30_50/VersionConvertor_30_50.java | 8 ++++---- .../CapabilityStatement30_50.java | 20 +++++++++++++------ .../resources30_50/ValueSet30_50.java | 13 ++++++++---- 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_50.java index c54dd81e1..a0ead0adb 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_50.java @@ -11,10 +11,6 @@ import org.hl7.fhir.exceptions.FHIRException; public class BaseAdvisor_30_50 extends BaseAdvisor50 { - final List valueSetIgnoredUrls = Collections.singletonList("http://hl7.org/fhir/StructureDefinition/valueset-extensible"); - final List capabilityStatementIgnoredUrls = Arrays.asList("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown", - "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile"); - public BaseAdvisor_30_50() { } @@ -25,14 +21,8 @@ public class BaseAdvisor_30_50 extends BaseAdvisor50 paths = Arrays.asList(path.split(",")); - final String lastPath = paths.get(paths.size() - 1); - if ((lastPath.equals("ValueSet")) && (valueSetIgnoredUrls.contains(url))) { - return true; - } - else - return (lastPath.equals("CapabilityStatement")) && (capabilityStatementIgnoredUrls.contains(url)); - + // no globally ignored extensions here. + return false; } } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/VersionConvertor_30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/VersionConvertor_30_50.java index 5c6415958..a25194ea9 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/VersionConvertor_30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/VersionConvertor_30_50.java @@ -148,14 +148,14 @@ public class VersionConvertor_30_50 { public void copyElement(@Nonnull org.hl7.fhir.r5.model.Element src, @Nonnull org.hl7.fhir.dstu3.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext30_50.INSTANCE.path(), var); + String... ignoredExtensionUrls) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext30_50.INSTANCE.path(), ignoredExtensionUrls); } public void copyBackboneElement(@Nonnull org.hl7.fhir.r5.model.BackboneElement src, @Nonnull org.hl7.fhir.dstu3.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + String... ignoredExtensionUrls) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, ignoredExtensionUrls); } public void copyBackboneElement(@Nonnull org.hl7.fhir.dstu3.model.BackboneElement src, diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java index 19ea47cde..2f8e62bd2 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/CapabilityStatement30_50.java @@ -20,6 +20,14 @@ import org.hl7.fhir.exceptions.FHIRException; public class CapabilityStatement30_50 { + public static final String ACCEPT_UNKNOWN_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"; + public static final String PROFILE_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile"; + + private static final String[] IGNORED_EXTENSION_URLS = new String[]{ + ACCEPT_UNKNOWN_EXTENSION_URL, + PROFILE_EXTENSION_URL + }; + public static org.hl7.fhir.r5.model.CapabilityStatement convertCapabilityStatement(org.hl7.fhir.dstu3.model.CapabilityStatement src) throws FHIRException { if (src == null) return null; @@ -63,14 +71,14 @@ public class CapabilityStatement30_50 { if (src.hasFhirVersion()) tgt.setFhirVersion(org.hl7.fhir.r5.model.Enumerations.FHIRVersion.fromCode(fixCode(src.getFhirVersion()))); if (src.hasAcceptUnknown()) - tgt.addExtension().setUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); + tgt.addExtension().setUrl(ACCEPT_UNKNOWN_EXTENSION_URL).setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); for (org.hl7.fhir.dstu3.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.dstu3.model.CodeType t : src.getPatchFormat()) tgt.addPatchFormat(t.getValue()); for (org.hl7.fhir.dstu3.model.UriType t : src.getImplementationGuide()) tgt.addImplementationGuide(t.getValue()); for (org.hl7.fhir.dstu3.model.CapabilityStatement.CapabilityStatementRestComponent t : src.getRest()) tgt.addRest(convertCapabilityStatementRestComponent(t)); for (org.hl7.fhir.dstu3.model.Reference t : src.getProfile()) - tgt.addExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile", Reference30_50.convertReference(t)); + tgt.addExtension(PROFILE_EXTENSION_URL, Reference30_50.convertReference(t)); for (org.hl7.fhir.dstu3.model.CapabilityStatement.CapabilityStatementMessagingComponent t : src.getMessaging()) tgt.addMessaging(convertCapabilityStatementMessagingComponent(t)); for (org.hl7.fhir.dstu3.model.CapabilityStatement.CapabilityStatementDocumentComponent t : src.getDocument()) @@ -90,7 +98,7 @@ public class CapabilityStatement30_50 { if (src == null) return null; org.hl7.fhir.dstu3.model.CapabilityStatement tgt = new org.hl7.fhir.dstu3.model.CapabilityStatement(); - ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); + ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt, IGNORED_EXTENSION_URLS); if (src.hasUrl()) tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement())); if (src.hasVersion()) @@ -128,8 +136,8 @@ public class CapabilityStatement30_50 { tgt.setImplementation(convertCapabilityStatementImplementationComponent(src.getImplementation())); if (src.hasFhirVersion()) tgt.setFhirVersion(src.getFhirVersion().toCode()); - if (src.hasExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")) - tgt.setAcceptUnknown(org.hl7.fhir.dstu3.model.CapabilityStatement.UnknownContentCode.fromCode(src.getExtensionByUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").getValue().primitiveValue())); + if (src.hasExtension(ACCEPT_UNKNOWN_EXTENSION_URL)) + tgt.setAcceptUnknown(org.hl7.fhir.dstu3.model.CapabilityStatement.UnknownContentCode.fromCode(src.getExtensionByUrl(ACCEPT_UNKNOWN_EXTENSION_URL).getValue().primitiveValue())); for (org.hl7.fhir.r5.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.r5.model.CodeType t : src.getPatchFormat()) tgt.addPatchFormat(t.getValue()); for (org.hl7.fhir.r5.model.UriType t : src.getImplementationGuide()) tgt.addImplementationGuide(t.getValue()); @@ -138,7 +146,7 @@ public class CapabilityStatement30_50 { for (org.hl7.fhir.r5.model.CanonicalType t : rr.getSupportedProfile()) tgt.addProfile(Reference30_50.convertCanonicalToReference(t)); for (org.hl7.fhir.r5.model.Extension ext : src.getExtension()) { - if ("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.profile".equals(ext.getUrl())) { + if (PROFILE_EXTENSION_URL.equals(ext.getUrl())) { tgt.addProfile(Reference30_50.convertReference((org.hl7.fhir.r5.model.Reference) ext.getValue())); } } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ValueSet30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ValueSet30_50.java index 77d6622d1..19b42ae82 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ValueSet30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/resources30_50/ValueSet30_50.java @@ -19,6 +19,11 @@ import org.hl7.fhir.r5.model.BooleanType; public class ValueSet30_50 { + public static final String EXTENSIBLE_EXTENSION_URL = "http://hl7.org/fhir/StructureDefinition/valueset-extensible"; + + private static final String[] IGNORED_EXTENSION_URLS = new String[]{ + EXTENSIBLE_EXTENSION_URL + }; public static org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent convertConceptReferenceComponent(org.hl7.fhir.r5.model.ValueSet.ConceptReferenceComponent src) throws FHIRException { if (src == null) return null; @@ -215,7 +220,7 @@ public class ValueSet30_50 { if (src.hasCopyright()) tgt.setCopyrightElement(MarkDown30_50.convertMarkdown(src.getCopyrightElement())); if (src.hasExtensible()) - tgt.addExtension("http://hl7.org/fhir/StructureDefinition/valueset-extensible", new BooleanType(src.getExtensible())); + tgt.addExtension(EXTENSIBLE_EXTENSION_URL, new BooleanType(src.getExtensible())); if (src.hasCompose()) tgt.setCompose(convertValueSetComposeComponent(src.getCompose())); if (src.hasExpansion()) @@ -227,7 +232,7 @@ public class ValueSet30_50 { if (src == null) return null; org.hl7.fhir.dstu3.model.ValueSet tgt = new org.hl7.fhir.dstu3.model.ValueSet(); - ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt); + ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt, IGNORED_EXTENSION_URLS); if (src.hasUrl()) tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement())); for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier()) @@ -260,8 +265,8 @@ public class ValueSet30_50 { tgt.setPurposeElement(MarkDown30_50.convertMarkdown(src.getPurposeElement())); if (src.hasCopyright()) tgt.setCopyrightElement(MarkDown30_50.convertMarkdown(src.getCopyrightElement())); - if (src.hasExtension("http://hl7.org/fhir/StructureDefinition/valueset-extensible")) - tgt.setExtensible(((BooleanType) src.getExtensionByUrl("http://hl7.org/fhir/StructureDefinition/valueset-extensible").getValue()).booleanValue()); + if (src.hasExtension(EXTENSIBLE_EXTENSION_URL)) + tgt.setExtensible(((BooleanType) src.getExtensionByUrl(EXTENSIBLE_EXTENSION_URL).getValue()).booleanValue()); if (src.hasCompose()) tgt.setCompose(convertValueSetComposeComponent(src.getCompose())); if (src.hasExpansion()) From 42cf58cfbbe2f190abe8a332f8ac4e23a94ac7e8 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 8 May 2023 11:11:34 -0400 Subject: [PATCH 17/25] Move ignore extension logic in 30_40 convertors --- .../advisors/impl/BaseAdvisor_30_40.java | 8 +------- .../conv30_40/VersionConvertor_30_40.java | 8 ++++---- .../resources30_40/CapabilityStatement30_40.java | 14 ++++++++++---- .../resources30_40/Immunization30_40.java | 8 ++++++-- .../conv30_40/resources30_40/Resource30_40.java | 12 ++++++++---- 5 files changed, 29 insertions(+), 21 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_40.java index 315cea928..f725c76c2 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_40.java @@ -25,13 +25,7 @@ public class BaseAdvisor_30_40 extends BaseAdvisor40 paths = Arrays.asList(path.split(",")); - final String lastPath = paths.get(paths.size() - 1); - if (lastPath.equals("CapabilityStatement")) { - return capabilityStatementIgnoredUrls.contains(url); - } else if (lastPath.equals("Immunization")) { - return immunizationIgnoredUrls.contains(url); - } + // no globally ignored extensions here. return false; } } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/VersionConvertor_30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/VersionConvertor_30_40.java index 9d73a678f..bb3d2aced 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/VersionConvertor_30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/VersionConvertor_30_40.java @@ -133,13 +133,13 @@ public class VersionConvertor_30_40 { } public void copyDomainResource(@Nonnull org.hl7.fhir.dstu3.model.DomainResource src, - @Nonnull org.hl7.fhir.r4.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + @Nonnull org.hl7.fhir.r4.model.DomainResource tgt, String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } public void copyDomainResource(@Nonnull org.hl7.fhir.r4.model.DomainResource src, - @Nonnull org.hl7.fhir.dstu3.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + @Nonnull org.hl7.fhir.dstu3.model.DomainResource tgt, String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } public void copyElement(@Nonnull org.hl7.fhir.dstu3.model.Element src, diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java index 025ebaccb..083e81ba6 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/CapabilityStatement30_40.java @@ -20,11 +20,17 @@ import org.hl7.fhir.exceptions.FHIRException; public class CapabilityStatement30_40 { + public static final String ACCEPT_UNKNOWN_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"; + + private static final String[] IGNORED_EXTENSION_URLS = new String[]{ + ACCEPT_UNKNOWN_EXTENSION_URL + }; + public static org.hl7.fhir.dstu3.model.CapabilityStatement convertCapabilityStatement(org.hl7.fhir.r4.model.CapabilityStatement src) throws FHIRException { if (src == null) return null; org.hl7.fhir.dstu3.model.CapabilityStatement tgt = new org.hl7.fhir.dstu3.model.CapabilityStatement(); - ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt); + ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt, IGNORED_EXTENSION_URLS); if (src.hasUrl()) tgt.setUrlElement(Uri30_40.convertUri(src.getUrlElement())); if (src.hasVersion()) @@ -62,8 +68,8 @@ public class CapabilityStatement30_40 { tgt.setImplementation(convertCapabilityStatementImplementationComponent(src.getImplementation())); if (src.hasFhirVersion()) tgt.setFhirVersion(src.getFhirVersion().toCode()); - if (src.hasExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")) - tgt.setAcceptUnknown(org.hl7.fhir.dstu3.model.CapabilityStatement.UnknownContentCode.fromCode(src.getExtensionByUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").getValue().primitiveValue())); + if (src.hasExtension(ACCEPT_UNKNOWN_EXTENSION_URL)) + tgt.setAcceptUnknown(org.hl7.fhir.dstu3.model.CapabilityStatement.UnknownContentCode.fromCode(src.getExtensionByUrl(ACCEPT_UNKNOWN_EXTENSION_URL).getValue().primitiveValue())); for (org.hl7.fhir.r4.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.r4.model.CodeType t : src.getPatchFormat()) tgt.addPatchFormat(t.getValue()); for (org.hl7.fhir.r4.model.UriType t : src.getImplementationGuide()) tgt.addImplementationGuide(t.getValue()); @@ -128,7 +134,7 @@ public class CapabilityStatement30_40 { if (src.hasFhirVersion()) tgt.setFhirVersion(org.hl7.fhir.r4.model.Enumerations.FHIRVersion.fromCode(src.getFhirVersion())); if (src.hasAcceptUnknown()) - tgt.addExtension().setUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").setValue(new org.hl7.fhir.r4.model.CodeType(src.getAcceptUnknownElement().asStringValue())); + tgt.addExtension().setUrl(ACCEPT_UNKNOWN_EXTENSION_URL).setValue(new org.hl7.fhir.r4.model.CodeType(src.getAcceptUnknownElement().asStringValue())); for (org.hl7.fhir.dstu3.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.dstu3.model.CodeType t : src.getPatchFormat()) tgt.addPatchFormat(t.getValue()); for (org.hl7.fhir.dstu3.model.UriType t : src.getImplementationGuide()) tgt.addImplementationGuide(t.getValue()); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Immunization30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Immunization30_40.java index 4e25a58aa..fa82874aa 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Immunization30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Immunization30_40.java @@ -20,6 +20,10 @@ public class Immunization30_40 { public static final String NOT_GIVEN_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-Immunization.notGiven"; + private static final String[] IGNORED_EXTENSION_URLS = new String[]{ + NOT_GIVEN_EXTENSION_URL + }; + public static org.hl7.fhir.r4.model.Immunization convertImmunization(org.hl7.fhir.dstu3.model.Immunization src) throws FHIRException { if (src == null) return null; @@ -82,8 +86,8 @@ public class Immunization30_40 { if (src == null) return null; org.hl7.fhir.dstu3.model.Immunization tgt = new org.hl7.fhir.dstu3.model.Immunization(); - //FIXME add ignore - ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt); + + ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyDomainResource(src, tgt, IGNORED_EXTENSION_URLS); for (org.hl7.fhir.r4.model.Identifier t : src.getIdentifier()) tgt.addIdentifier(Identifier30_40.convertIdentifier(t)); if (src.hasStatus()) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Resource30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Resource30_40.java index 8eab2452e..36e962454 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Resource30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/resources30_40/Resource30_40.java @@ -7,6 +7,8 @@ import org.hl7.fhir.convertors.conv30_40.datatypes30_40.Meta30_40; import org.hl7.fhir.convertors.conv30_40.datatypes30_40.Narrative30_40; import org.hl7.fhir.exceptions.FHIRException; +import java.util.Arrays; + public class Resource30_40 { public final BaseAdvisor_30_40 advisor; @@ -384,7 +386,8 @@ public class Resource30_40 { } public void copyDomainResource(org.hl7.fhir.dstu3.model.DomainResource src, - org.hl7.fhir.r4.model.DomainResource tgt) throws FHIRException { + org.hl7.fhir.r4.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative30_40.convertNarrative(src.getText())); src.getContained().stream() @@ -396,7 +399,7 @@ public class Resource30_40 { org.hl7.fhir.r4.model.Extension convertExtension = new org.hl7.fhir.r4.model.Extension(); advisor.handleExtension(ConversionContext30_40.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext30_40.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext30_40.INSTANCE.path(), extension)&& !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension30_40.convertExtension(extension)); } }); @@ -407,7 +410,8 @@ public class Resource30_40 { } public void copyDomainResource(org.hl7.fhir.r4.model.DomainResource src, - org.hl7.fhir.dstu3.model.DomainResource tgt) throws FHIRException { + org.hl7.fhir.dstu3.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative30_40.convertNarrative(src.getText())); src.getContained().stream() @@ -418,7 +422,7 @@ public class Resource30_40 { org.hl7.fhir.dstu3.model.Extension convertExtension = new org.hl7.fhir.dstu3.model.Extension(); advisor.handleExtension(ConversionContext30_40.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext30_40.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext30_40.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension30_40.convertExtension(extension)); } }); From b9433f0e8c5a51c471bdc02a9ee8ece69dedf1c5 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 8 May 2023 11:21:50 -0400 Subject: [PATCH 18/25] Move ignore extension logic in 14_50 convertors --- .../advisors/impl/BaseAdvisor_14_50.java | 7 ++----- .../conv14_50/VersionConvertor_14_50.java | 16 ++++++++++------ .../resources14_50/Conformance14_50.java | 14 ++++++++++---- .../resources14_50/Resource14_50.java | 18 ++++++++++++------ 4 files changed, 34 insertions(+), 21 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_50.java index c0a0d2886..811902a54 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_50.java @@ -11,8 +11,6 @@ import org.hl7.fhir.exceptions.FHIRException; public class BaseAdvisor_14_50 extends BaseAdvisor50 { - final List capabilityStatementIgnoredUrls = Collections.singletonList("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"); - public BaseAdvisor_14_50() { } @@ -23,8 +21,7 @@ public class BaseAdvisor_14_50 extends BaseAdvisor50 paths = Arrays.asList(path.split(",")); - final String lastPath = paths.get(paths.size() - 1); - return (lastPath.equals("CapabilityStatement")) && (capabilityStatementIgnoredUrls.contains(url)); + // no globally ignored extensions here. + return false; } } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/VersionConvertor_14_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/VersionConvertor_14_50.java index 0718ec831..444666cf6 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/VersionConvertor_14_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/VersionConvertor_14_50.java @@ -129,14 +129,18 @@ public class VersionConvertor_14_50 { } } - public void copyDomainResource(@Nonnull org.hl7.fhir.dstu2016may.model.DomainResource src, - @Nonnull org.hl7.fhir.r5.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + public void copyDomainResource( + @Nonnull org.hl7.fhir.dstu2016may.model.DomainResource src, + @Nonnull org.hl7.fhir.r5.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyDomainResource(@Nonnull org.hl7.fhir.r5.model.DomainResource src, - @Nonnull org.hl7.fhir.dstu2016may.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + public void copyDomainResource( + @Nonnull org.hl7.fhir.r5.model.DomainResource src, + @Nonnull org.hl7.fhir.dstu2016may.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } public void copyElement(@Nonnull org.hl7.fhir.dstu2016may.model.Element src, diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/resources14_50/Conformance14_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/resources14_50/Conformance14_50.java index c98e72650..afe87693e 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/resources14_50/Conformance14_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/resources14_50/Conformance14_50.java @@ -18,6 +18,12 @@ import org.hl7.fhir.r5.model.CapabilityStatement.CapabilityStatementRestResource public class Conformance14_50 { + public static final String ACCEPT_UNKNOWN_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"; + + private static final String[] IGNORED_EXTENSION_URLS = new String[]{ + ACCEPT_UNKNOWN_EXTENSION_URL + }; + static public org.hl7.fhir.dstu2016may.model.Enumeration convertConditionalDeleteStatus(org.hl7.fhir.r5.model.Enumeration src) throws FHIRException { if (src == null || src.isEmpty()) return null; @@ -103,7 +109,7 @@ public class Conformance14_50 { if (src.hasFhirVersion()) tgt.setFhirVersion(org.hl7.fhir.r5.model.Enumerations.FHIRVersion.fromCode(src.getFhirVersion())); if (src.hasAcceptUnknown()) - tgt.addExtension().setUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); + tgt.addExtension().setUrl(ACCEPT_UNKNOWN_EXTENSION_URL).setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); for (org.hl7.fhir.dstu2016may.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.dstu2016may.model.Conformance.ConformanceRestComponent t : src.getRest()) tgt.addRest(convertConformanceRestComponent(t)); @@ -118,7 +124,7 @@ public class Conformance14_50 { if (src == null || src.isEmpty()) return null; org.hl7.fhir.dstu2016may.model.Conformance tgt = new org.hl7.fhir.dstu2016may.model.Conformance(); - ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyDomainResource(src, tgt); + ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyDomainResource(src, tgt, IGNORED_EXTENSION_URLS); if (src.hasUrl()) tgt.setUrlElement(Uri14_50.convertUri(src.getUrlElement())); if (src.hasVersion()) @@ -153,8 +159,8 @@ public class Conformance14_50 { if (src.hasImplementation()) tgt.setImplementation(convertConformanceImplementationComponent(src.getImplementation())); tgt.setFhirVersion(src.getFhirVersion().toCode()); - if (src.hasExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")) - tgt.setAcceptUnknown(org.hl7.fhir.dstu2016may.model.Conformance.UnknownContentCode.fromCode(src.getExtensionByUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").getValue().primitiveValue())); + if (src.hasExtension(ACCEPT_UNKNOWN_EXTENSION_URL)) + tgt.setAcceptUnknown(org.hl7.fhir.dstu2016may.model.Conformance.UnknownContentCode.fromCode(src.getExtensionByUrl(ACCEPT_UNKNOWN_EXTENSION_URL).getValue().primitiveValue())); for (org.hl7.fhir.r5.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (CapabilityStatementRestComponent r : src.getRest()) for (CapabilityStatementRestResourceComponent rr : r.getResource()) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/resources14_50/Resource14_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/resources14_50/Resource14_50.java index c84d0d33b..d0cb14f8a 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/resources14_50/Resource14_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/resources14_50/Resource14_50.java @@ -7,6 +7,8 @@ import org.hl7.fhir.convertors.conv14_50.datatypes14_50.Meta14_50; import org.hl7.fhir.convertors.conv14_50.datatypes14_50.Narrative14_50; import org.hl7.fhir.exceptions.FHIRException; +import java.util.Arrays; + public class Resource14_50 { public final BaseAdvisor_14_50 advisor; @@ -113,8 +115,10 @@ public class Resource14_50 { } } - public void copyDomainResource(org.hl7.fhir.dstu2016may.model.DomainResource src, - org.hl7.fhir.r5.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource( + org.hl7.fhir.dstu2016may.model.DomainResource src, + org.hl7.fhir.r5.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative14_50.convertNarrative(src.getText())); src.getContained().stream() @@ -125,7 +129,7 @@ public class Resource14_50 { org.hl7.fhir.r5.model.Extension convertExtension = new org.hl7.fhir.r5.model.Extension(); advisor.handleExtension(ConversionContext14_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext14_50.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext14_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension14_50.convertExtension(extension)); } }); @@ -135,8 +139,10 @@ public class Resource14_50 { .forEach(tgt::addModifierExtension); } - public void copyDomainResource(org.hl7.fhir.r5.model.DomainResource src, - org.hl7.fhir.dstu2016may.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource( + org.hl7.fhir.r5.model.DomainResource src, + org.hl7.fhir.dstu2016may.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative14_50.convertNarrative(src.getText())); src.getContained().stream() @@ -147,7 +153,7 @@ public class Resource14_50 { org.hl7.fhir.dstu2016may.model.Extension convertExtension = new org.hl7.fhir.dstu2016may.model.Extension(); advisor.handleExtension(ConversionContext14_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext14_50.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext14_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension14_50.convertExtension(extension)); } }); From 9a70ebb2c90d7774b3529560b9d0ed9ea041b865 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 8 May 2023 11:39:44 -0400 Subject: [PATCH 19/25] Move ignore extension logic in 14_40 convertors --- .../advisors/impl/BaseAdvisor_14_40.java | 11 ++--------- .../conv14_40/VersionConvertor_14_40.java | 16 ++++++++++------ .../resources14_40/Conformance14_40.java | 14 ++++++++++---- .../resources14_40/Resource14_40.java | 18 ++++++++++++------ 4 files changed, 34 insertions(+), 25 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_40.java index f72bccbf2..18e671aeb 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_40.java @@ -13,8 +13,6 @@ import org.hl7.fhir.r4.model.Type; public class BaseAdvisor_14_40 extends BaseAdvisor40 { - final List conformanceIgnoredUrls = Collections.singletonList("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"); - private final List ignoredUrls = new ArrayList<>(Collections.singletonList("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")); private final List> ignoredExtensionTypes = new ArrayList<>(Collections.singletonList(Expression.class)); public BaseAdvisor_14_40() { @@ -27,13 +25,8 @@ public class BaseAdvisor_14_40 extends BaseAdvisor40 paths = Arrays.asList(path.split(",")); - final String lastPath = paths.get(paths.size() - 1); - if ((lastPath.equals("Conformance")) && (conformanceIgnoredUrls.contains(url))) { - return true; - } else { - return this.ignoredUrls.contains(url); - } + // no globally ignored extensions here. + return false; } public boolean ignoreType(@Nonnull String path, @Nonnull Type type) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/VersionConvertor_14_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/VersionConvertor_14_40.java index eb0d50d5c..12d4051dd 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/VersionConvertor_14_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/VersionConvertor_14_40.java @@ -137,14 +137,18 @@ public class VersionConvertor_14_40 { } } - public void copyDomainResource(@Nonnull org.hl7.fhir.dstu2016may.model.DomainResource src, - @Nonnull org.hl7.fhir.r4.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + public void copyDomainResource( + @Nonnull org.hl7.fhir.dstu2016may.model.DomainResource src, + @Nonnull org.hl7.fhir.r4.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyDomainResource(@Nonnull org.hl7.fhir.r4.model.DomainResource src, - @Nonnull org.hl7.fhir.dstu2016may.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + public void copyDomainResource( + @Nonnull org.hl7.fhir.r4.model.DomainResource src, + @Nonnull org.hl7.fhir.dstu2016may.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } public void copyElement(@Nonnull org.hl7.fhir.dstu2016may.model.Element src, diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/resources14_40/Conformance14_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/resources14_40/Conformance14_40.java index 29ac51302..12734273f 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/resources14_40/Conformance14_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/resources14_40/Conformance14_40.java @@ -19,6 +19,12 @@ import org.hl7.fhir.r4.model.CapabilityStatement.CapabilityStatementRestResource public class Conformance14_40 { + public static final String ACCEPT_UNKNOWN_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"; + + private static final String[] IGNORED_EXTENSION_URLS = new String[]{ + ACCEPT_UNKNOWN_EXTENSION_URL + }; + static public org.hl7.fhir.r4.model.Enumeration convertConditionalDeleteStatus(org.hl7.fhir.dstu2016may.model.Enumeration src) throws FHIRException { if (src == null || src.isEmpty()) return null; @@ -67,7 +73,7 @@ public class Conformance14_40 { if (src == null || src.isEmpty()) return null; org.hl7.fhir.dstu2016may.model.Conformance tgt = new org.hl7.fhir.dstu2016may.model.Conformance(); - ConversionContext14_40.INSTANCE.getVersionConvertor_14_40().copyDomainResource(src, tgt); + ConversionContext14_40.INSTANCE.getVersionConvertor_14_40().copyDomainResource(src, tgt, IGNORED_EXTENSION_URLS); if (src.hasUrl()) tgt.setUrlElement(Uri14_40.convertUri(src.getUrlElement())); if (src.hasVersion()) @@ -102,8 +108,8 @@ public class Conformance14_40 { if (src.hasImplementation()) tgt.setImplementation(convertConformanceImplementationComponent(src.getImplementation())); tgt.setFhirVersion(src.getFhirVersion().toCode()); - if (src.hasExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")) - tgt.setAcceptUnknown(org.hl7.fhir.dstu2016may.model.Conformance.UnknownContentCode.fromCode(src.getExtensionByUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").getValue().primitiveValue())); + if (src.hasExtension(ACCEPT_UNKNOWN_EXTENSION_URL)) + tgt.setAcceptUnknown(org.hl7.fhir.dstu2016may.model.Conformance.UnknownContentCode.fromCode(src.getExtensionByUrl(ACCEPT_UNKNOWN_EXTENSION_URL).getValue().primitiveValue())); for (org.hl7.fhir.r4.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (CapabilityStatementRestComponent r : src.getRest()) for (CapabilityStatementRestResourceComponent rr : r.getResource()) @@ -159,7 +165,7 @@ public class Conformance14_40 { if (src.hasFhirVersion()) tgt.setFhirVersion(org.hl7.fhir.r4.model.Enumerations.FHIRVersion.fromCode(src.getFhirVersion())); if (src.hasAcceptUnknown()) - tgt.addExtension().setUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").setValue(new org.hl7.fhir.r4.model.CodeType(src.getAcceptUnknownElement().asStringValue())); + tgt.addExtension().setUrl(ACCEPT_UNKNOWN_EXTENSION_URL).setValue(new org.hl7.fhir.r4.model.CodeType(src.getAcceptUnknownElement().asStringValue())); for (org.hl7.fhir.dstu2016may.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.dstu2016may.model.Conformance.ConformanceRestComponent t : src.getRest()) tgt.addRest(convertConformanceRestComponent(t)); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/resources14_40/Resource14_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/resources14_40/Resource14_40.java index 08477d722..6d3bb6b94 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/resources14_40/Resource14_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/resources14_40/Resource14_40.java @@ -7,6 +7,8 @@ import org.hl7.fhir.convertors.conv14_40.datatypes14_40.Meta14_40; import org.hl7.fhir.convertors.conv14_40.datatypes14_40.Narrative14_40; import org.hl7.fhir.exceptions.FHIRException; +import java.util.Arrays; + public class Resource14_40 { public final BaseAdvisor_14_40 advisor; @@ -113,8 +115,10 @@ public class Resource14_40 { } } - public void copyDomainResource(org.hl7.fhir.dstu2016may.model.DomainResource src, - org.hl7.fhir.r4.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource( + org.hl7.fhir.dstu2016may.model.DomainResource src, + org.hl7.fhir.r4.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative14_40.convertNarrative(src.getText())); src.getContained().stream() @@ -125,7 +129,7 @@ public class Resource14_40 { org.hl7.fhir.r4.model.Extension convertExtension = new org.hl7.fhir.r4.model.Extension(); advisor.handleExtension(ConversionContext14_40.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext14_40.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext14_40.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension14_40.convertExtension(extension)); } }); @@ -135,8 +139,10 @@ public class Resource14_40 { .forEach(tgt::addModifierExtension); } - public void copyDomainResource(org.hl7.fhir.r4.model.DomainResource src, - org.hl7.fhir.dstu2016may.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource( + org.hl7.fhir.r4.model.DomainResource src, + org.hl7.fhir.dstu2016may.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative14_40.convertNarrative(src.getText())); src.getContained().stream() @@ -147,7 +153,7 @@ public class Resource14_40 { org.hl7.fhir.dstu2016may.model.Extension convertExtension = new org.hl7.fhir.dstu2016may.model.Extension(); advisor.handleExtension(ConversionContext14_40.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext14_40.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext14_40.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension14_40.convertExtension(extension)); } }); From bcef73257664c9508b31e1bf1cf4bbf1d1aa5b0a Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 8 May 2023 12:38:29 -0400 Subject: [PATCH 20/25] Move ignore extension logic in 14_30 convertors --- .../advisors/impl/BaseAdvisor_14_30.java | 5 ++--- .../conv14_30/VersionConvertor_14_30.java | 16 ++++++++++------ .../resources14_30/Resource14_30.java | 19 +++++++++++++------ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_30.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_30.java index d4a399054..213f8b0f6 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_30.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_14_30.java @@ -10,8 +10,6 @@ import org.hl7.fhir.convertors.advisors.interfaces.BaseAdvisor30; public class BaseAdvisor_14_30 extends BaseAdvisor30 { - private final List ignoredUrls = new ArrayList<>(Collections.singletonList("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")); - public BaseAdvisor_14_30() { } @@ -22,6 +20,7 @@ public class BaseAdvisor_14_30 extends BaseAdvisor30 Date: Mon, 8 May 2023 12:47:55 -0400 Subject: [PATCH 21/25] Move ignore extension logic in 10_50 convertors --- .../advisors/impl/BaseAdvisor_10_50.java | 5 ++--- .../conv10_50/VersionConvertor_10_50.java | 16 ++++++++++------ .../resources10_50/Conformance10_50.java | 14 ++++++++++---- .../conv10_50/resources10_50/Resource10_50.java | 16 ++++++++++++---- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java index ce43f8876..4cfb59537 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java @@ -24,9 +24,8 @@ public class BaseAdvisor_10_50 extends BaseAdvisor50 paths = Arrays.asList(path.split(",")); - final String lastPath = paths.get(paths.size() - 1); - return (lastPath.equals("CapabilityStatement")) && (conformanceIgnoredUrls.contains(url)); + // no globally ignored extensions here. + return false; } public boolean ignoreType(@Nonnull String path, diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/VersionConvertor_10_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/VersionConvertor_10_50.java index 21663a2e5..88a52115b 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/VersionConvertor_10_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/VersionConvertor_10_50.java @@ -144,14 +144,18 @@ public class VersionConvertor_10_50 { } } - public void copyDomainResource(@Nonnull org.hl7.fhir.dstu2.model.DomainResource src, - @Nonnull org.hl7.fhir.r5.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + public void copyDomainResource( + @Nonnull org.hl7.fhir.dstu2.model.DomainResource src, + @Nonnull org.hl7.fhir.r5.model.DomainResource tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyDomainResource(@Nonnull org.hl7.fhir.r5.model.DomainResource src, - @Nonnull org.hl7.fhir.dstu2.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + public void copyDomainResource( + @Nonnull org.hl7.fhir.r5.model.DomainResource src, + @Nonnull org.hl7.fhir.dstu2.model.DomainResource tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } public void copyElement(@Nonnull org.hl7.fhir.dstu2.model.Element src, diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/resources10_50/Conformance10_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/resources10_50/Conformance10_50.java index 3660c1ccb..f313c496f 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/resources10_50/Conformance10_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/resources10_50/Conformance10_50.java @@ -20,6 +20,12 @@ import org.hl7.fhir.r5.model.CapabilityStatement.SystemRestfulInteraction; public class Conformance10_50 { + public static final String ACCEPT_UNKNOWN_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"; + + private static final String[] IGNORED_EXTENSION_URLS = new String[]{ + ACCEPT_UNKNOWN_EXTENSION_URL + }; + static public org.hl7.fhir.dstu2.model.Enumeration convertConditionalDeleteStatus(org.hl7.fhir.r5.model.Enumeration src) throws FHIRException { if (src == null || src.isEmpty()) return null; @@ -72,7 +78,7 @@ public class Conformance10_50 { if (src == null || src.isEmpty()) return null; org.hl7.fhir.dstu2.model.Conformance tgt = new org.hl7.fhir.dstu2.model.Conformance(); - ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt); + ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyDomainResource(src, tgt, IGNORED_EXTENSION_URLS); if (src.hasUrlElement()) tgt.setUrlElement(Uri10_50.convertUri(src.getUrlElement())); if (src.hasVersionElement()) @@ -103,8 +109,8 @@ public class Conformance10_50 { tgt.setImplementation(convertConformanceImplementationComponent(src.getImplementation())); if (src.hasFhirVersion()) tgt.setFhirVersion(src.getFhirVersion().toCode()); - if (src.hasExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")) - tgt.setAcceptUnknown(org.hl7.fhir.dstu2.model.Conformance.UnknownContentCode.fromCode(src.getExtensionByUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").getValue().primitiveValue())); + if (src.hasExtension(ACCEPT_UNKNOWN_EXTENSION_URL)) + tgt.setAcceptUnknown(org.hl7.fhir.dstu2.model.Conformance.UnknownContentCode.fromCode(src.getExtensionByUrl(ACCEPT_UNKNOWN_EXTENSION_URL).getValue().primitiveValue())); for (org.hl7.fhir.r5.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (CapabilityStatementRestComponent r : src.getRest()) for (CapabilityStatementRestResourceComponent rr : r.getResource()) @@ -155,7 +161,7 @@ public class Conformance10_50 { if (src.hasFhirVersion()) tgt.setFhirVersion(org.hl7.fhir.r5.model.Enumerations.FHIRVersion.fromCode(src.getFhirVersion())); if (src.hasAcceptUnknown()) - tgt.addExtension().setUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); + tgt.addExtension().setUrl(ACCEPT_UNKNOWN_EXTENSION_URL).setValue(new org.hl7.fhir.r5.model.CodeType(src.getAcceptUnknownElement().asStringValue())); for (org.hl7.fhir.dstu2.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.dstu2.model.Conformance.ConformanceRestComponent t : src.getRest()) tgt.addRest(convertConformanceRestComponent(t)); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/resources10_50/Resource10_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/resources10_50/Resource10_50.java index 1be52c7cf..ce6df2961 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/resources10_50/Resource10_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/resources10_50/Resource10_50.java @@ -8,6 +8,8 @@ import org.hl7.fhir.convertors.conv10_50.datatypes10_50.Narrative10_50; import org.hl7.fhir.dstu2.model.Extension; import org.hl7.fhir.exceptions.FHIRException; +import java.util.Arrays; + public class Resource10_50 { public final BaseAdvisor_10_50 advisor; @@ -264,7 +266,10 @@ public class Resource10_50 { } } - public void copyDomainResource(org.hl7.fhir.dstu2.model.DomainResource src, org.hl7.fhir.r5.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource( + org.hl7.fhir.dstu2.model.DomainResource src, + org.hl7.fhir.r5.model.DomainResource tgt, + String ... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative10_50.convertNarrative(src.getText())); src.getContained().stream() @@ -275,7 +280,7 @@ public class Resource10_50 { org.hl7.fhir.r5.model.Extension convertExtension = new org.hl7.fhir.r5.model.Extension(); advisor.handleExtension(ConversionContext10_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext10_50.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext10_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension10_50.convertExtension(extension)); } }); @@ -285,7 +290,10 @@ public class Resource10_50 { .forEach(tgt::addModifierExtension); } - public void copyDomainResource(org.hl7.fhir.r5.model.DomainResource src, org.hl7.fhir.dstu2.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource( + org.hl7.fhir.r5.model.DomainResource src, + org.hl7.fhir.dstu2.model.DomainResource tgt, + String ... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative10_50.convertNarrative(src.getText())); src.getContained().stream() @@ -296,7 +304,7 @@ public class Resource10_50 { Extension convertExtension = new Extension(); advisor.handleExtension(ConversionContext10_50.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext10_50.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext10_50.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension10_50.convertExtension(extension)); } }); From 6f1b57dc1503ac3777b042eebc0036ecede7530b Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 8 May 2023 12:57:17 -0400 Subject: [PATCH 22/25] Move ignore extension logic in 10_40 convertors --- .../advisors/impl/BaseAdvisor_10_40.java | 5 ++-- .../conv10_40/VersionConvertor_10_40.java | 16 +++++++----- .../resources10_40/Conformance10_40.java | 13 +++++++--- .../resources10_40/Resource10_40.java | 26 ++++++++++++------- 4 files changed, 37 insertions(+), 23 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java index 9a4035bab..dd4c97679 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java @@ -26,9 +26,8 @@ public class BaseAdvisor_10_40 extends BaseAdvisor40 paths = Arrays.asList(path.split(",")); - final String lastPath = paths.get(paths.size() - 1); - return (lastPath.equals("CapabilityStatement")) && (conformanceIgnoredUrls.contains(url)); + // no globally ignored extensions here. + return false; } @Override diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/VersionConvertor_10_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/VersionConvertor_10_40.java index b0d396cd7..f31b617d5 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/VersionConvertor_10_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/VersionConvertor_10_40.java @@ -143,14 +143,18 @@ public class VersionConvertor_10_40 { } } - public void copyDomainResource(@Nonnull org.hl7.fhir.dstu2.model.DomainResource src, - @Nonnull org.hl7.fhir.r4.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + public void copyDomainResource( + @Nonnull org.hl7.fhir.dstu2.model.DomainResource src, + @Nonnull org.hl7.fhir.r4.model.DomainResource tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyDomainResource(@Nonnull org.hl7.fhir.r4.model.DomainResource src, - @Nonnull org.hl7.fhir.dstu2.model.DomainResource tgt) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt); + public void copyDomainResource( + @Nonnull org.hl7.fhir.r4.model.DomainResource src, + @Nonnull org.hl7.fhir.dstu2.model.DomainResource tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } public void copyElement(@Nonnull org.hl7.fhir.dstu2.model.Element src, diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/resources10_40/Conformance10_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/resources10_40/Conformance10_40.java index 424e9fa31..1f244df69 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/resources10_40/Conformance10_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/resources10_40/Conformance10_40.java @@ -21,6 +21,11 @@ import org.hl7.fhir.r4.model.CapabilityStatement.SystemRestfulInteraction; public class Conformance10_40 { + public static final String ACCEPT_UNKNOWN_EXTENSION_URL = "http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"; + + private static final String[] IGNORED_EXTENSION_URLS = new String[]{ + ACCEPT_UNKNOWN_EXTENSION_URL + }; static public org.hl7.fhir.dstu2.model.Enumeration convertConditionalDeleteStatus(org.hl7.fhir.r4.model.Enumeration src) throws FHIRException { if (src == null || src.isEmpty()) return null; @@ -69,7 +74,7 @@ public class Conformance10_40 { if (src == null || src.isEmpty()) return null; org.hl7.fhir.dstu2.model.Conformance tgt = new org.hl7.fhir.dstu2.model.Conformance(); - ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt); + ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyDomainResource(src, tgt, IGNORED_EXTENSION_URLS); if (src.hasUrlElement()) tgt.setUrlElement(Uri10_40.convertUri(src.getUrlElement())); if (src.hasVersionElement()) @@ -100,8 +105,8 @@ public class Conformance10_40 { tgt.setImplementation(convertConformanceImplementationComponent(src.getImplementation())); if (src.hasFhirVersion()) tgt.setFhirVersion(src.getFhirVersion().toCode()); - if (src.hasExtension("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")) - tgt.setAcceptUnknown(org.hl7.fhir.dstu2.model.Conformance.UnknownContentCode.fromCode(src.getExtensionByUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").getValue().primitiveValue())); + if (src.hasExtension(ACCEPT_UNKNOWN_EXTENSION_URL)) + tgt.setAcceptUnknown(org.hl7.fhir.dstu2.model.Conformance.UnknownContentCode.fromCode(src.getExtensionByUrl(ACCEPT_UNKNOWN_EXTENSION_URL).getValue().primitiveValue())); for (org.hl7.fhir.r4.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (CapabilityStatementRestComponent r : src.getRest()) for (CapabilityStatementRestResourceComponent rr : r.getResource()) @@ -152,7 +157,7 @@ public class Conformance10_40 { if (src.hasFhirVersion()) tgt.setFhirVersion(org.hl7.fhir.r4.model.Enumerations.FHIRVersion.fromCode(src.getFhirVersion())); if (src.hasAcceptUnknown()) - tgt.addExtension().setUrl("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown").setValue(new org.hl7.fhir.r4.model.CodeType(src.getAcceptUnknownElement().asStringValue())); + tgt.addExtension().setUrl(ACCEPT_UNKNOWN_EXTENSION_URL).setValue(new org.hl7.fhir.r4.model.CodeType(src.getAcceptUnknownElement().asStringValue())); for (org.hl7.fhir.dstu2.model.CodeType t : src.getFormat()) tgt.addFormat(t.getValue()); for (org.hl7.fhir.dstu2.model.Conformance.ConformanceRestComponent t : src.getRest()) tgt.addRest(convertConformanceRestComponent(t)); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/resources10_40/Resource10_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/resources10_40/Resource10_40.java index d6e6dfeb2..b35793e67 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/resources10_40/Resource10_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/resources10_40/Resource10_40.java @@ -8,6 +8,8 @@ import org.hl7.fhir.convertors.conv10_40.datatypes10_40.Narrative10_40; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.r4.model.Extension; +import java.util.Arrays; + public class Resource10_40 { public final BaseAdvisor_10_40 advisor; @@ -272,20 +274,22 @@ public class Resource10_40 { } } - public void copyDomainResource(org.hl7.fhir.dstu2.model.DomainResource src, - org.hl7.fhir.r4.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource( + org.hl7.fhir.dstu2.model.DomainResource src, + org.hl7.fhir.r4.model.DomainResource tgt, + String ... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative10_40.convertNarrative(src.getText())); src.getContained().stream() .map(this::convertResource) .forEach(tgt::addContained); - src.getExtension().forEach(ext -> { - if (advisor.useAdvisorForExtension(ConversionContext10_40.INSTANCE.path(), ext)) { + src.getExtension().forEach(extension -> { + if (advisor.useAdvisorForExtension(ConversionContext10_40.INSTANCE.path(), extension)) { Extension convertExtension = new Extension(); - advisor.handleExtension(ConversionContext10_40.INSTANCE.path(), ext, convertExtension); + advisor.handleExtension(ConversionContext10_40.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext10_40.INSTANCE.path(), ext)) { - tgt.addExtension(Extension10_40.convertExtension(ext)); + } else if (!advisor.ignoreExtension(ConversionContext10_40.INSTANCE.path(), extension) && !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { + tgt.addExtension(Extension10_40.convertExtension(extension)); } }); src.getModifierExtension().stream() @@ -294,8 +298,10 @@ public class Resource10_40 { .forEach(tgt::addModifierExtension); } - public void copyDomainResource(org.hl7.fhir.r4.model.DomainResource src, - org.hl7.fhir.dstu2.model.DomainResource tgt) throws FHIRException { + public void copyDomainResource( + org.hl7.fhir.r4.model.DomainResource src, + org.hl7.fhir.dstu2.model.DomainResource tgt, + String ... extensionUrlsToIgnore) throws FHIRException { copyResource(src, tgt); if (src.hasText()) tgt.setText(Narrative10_40.convertNarrative(src.getText())); src.getContained().stream() @@ -306,7 +312,7 @@ public class Resource10_40 { org.hl7.fhir.dstu2.model.Extension convertExtension = new org.hl7.fhir.dstu2.model.Extension(); advisor.handleExtension(ConversionContext10_40.INSTANCE.path(), extension, convertExtension); tgt.addExtension(convertExtension); - } else if (!advisor.ignoreExtension(ConversionContext10_40.INSTANCE.path(), extension)) { + } else if (!advisor.ignoreExtension(ConversionContext10_40.INSTANCE.path(), extension)&& !Arrays.asList(extensionUrlsToIgnore).contains(extension.getUrl())) { tgt.addExtension(Extension10_40.convertExtension(extension)); } }); From 5f18101686e864896e18efe1e96c76df76dcfb64 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 8 May 2023 13:00:17 -0400 Subject: [PATCH 23/25] Cleanup - delete unused fields --- .../hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java | 1 - .../hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java | 2 +- .../hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_40.java | 5 ----- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java index dd4c97679..803d733b0 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_40.java @@ -13,7 +13,6 @@ import org.hl7.fhir.r4.model.Type; public class BaseAdvisor_10_40 extends BaseAdvisor40 { - final List conformanceIgnoredUrls = Collections.singletonList("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"); private final List> ignoredExtensionTypes = new ArrayList<>(Collections.singletonList(Expression.class)); public BaseAdvisor_10_40() { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java index 4cfb59537..8c1aca1c6 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_50.java @@ -12,7 +12,7 @@ import org.hl7.fhir.r5.model.DataType; import org.hl7.fhir.r5.model.Expression; public class BaseAdvisor_10_50 extends BaseAdvisor50 { - final List conformanceIgnoredUrls = Collections.singletonList("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"); + private final List> ignoredExtensionTypes = new ArrayList<>(Collections.singletonList(Expression.class)); public BaseAdvisor_10_50() { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_40.java index f725c76c2..e5594879f 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_30_40.java @@ -10,11 +10,6 @@ import org.hl7.fhir.convertors.advisors.interfaces.BaseAdvisor40; import org.hl7.fhir.exceptions.FHIRException; public class BaseAdvisor_30_40 extends BaseAdvisor40 { - - final List capabilityStatementIgnoredUrls = Collections.singletonList("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown"); - - final List immunizationIgnoredUrls = Collections.singletonList("http://hl7.org/fhir/3.0/StructureDefinition/extension-Immunization.notGiven"); - public BaseAdvisor_30_40() { } From 9ca316bb2f0c210defb06cb1d2f69a322440b5fb Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 8 May 2023 13:10:28 -0400 Subject: [PATCH 24/25] Move ignore extension logic in 10_30 convertors --- .../advisors/impl/BaseAdvisor_10_30.java | 5 +-- .../conv10_30/VersionConvertor_10_30.java | 17 ++++++--- .../resources10_30/Resource10_30.java | 38 ++++++++++++------- 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_30.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_30.java index 178a9cda3..9391cd1d1 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_30.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/advisors/impl/BaseAdvisor_10_30.java @@ -10,8 +10,6 @@ import org.hl7.fhir.convertors.advisors.interfaces.BaseAdvisor30; public class BaseAdvisor_10_30 extends BaseAdvisor30 { - private final List ignoredUrls = new ArrayList<>(Collections.singletonList("http://hl7.org/fhir/3.0/StructureDefinition/extension-CapabilityStatement.acceptUnknown")); - public BaseAdvisor_10_30() { } @@ -21,6 +19,7 @@ public class BaseAdvisor_10_30 extends BaseAdvisor30 Date: Mon, 8 May 2023 14:09:31 -0400 Subject: [PATCH 25/25] Refactor: Use useful and consistent parameter names --- .../conv10_30/VersionConvertor_10_30.java | 16 +++--- .../datatypes10_30/BackboneElement10_30.java | 18 ++++--- .../datatypes10_30/Element10_30.java | 12 ++--- .../conv10_40/VersionConvertor_10_40.java | 12 ++--- .../datatypes10_40/BackboneElement10_40.java | 18 ++++--- .../datatypes10_40/Element10_40.java | 4 +- .../conv10_50/VersionConvertor_10_50.java | 35 ++++++------ .../datatypes10_50/BackboneElement10_50.java | 18 ++++--- .../datatypes10_50/Element10_50.java | 12 ++--- .../conv14_30/VersionConvertor_14_30.java | 36 +++++++------ .../datatypes14_30/BackboneElement14_30.java | 18 ++++--- .../datatypes14_30/Element14_30.java | 8 +-- .../conv14_40/VersionConvertor_14_40.java | 36 +++++++------ .../datatypes14_40/BackboneElement14_40.java | 8 +-- .../datatypes14_40/Element14_40.java | 8 +-- .../conv14_50/VersionConvertor_14_50.java | 36 +++++++------ .../datatypes14_50/BackboneElement14_50.java | 18 ++++--- .../datatypes14_50/Element14_50.java | 8 +-- .../conv30_40/VersionConvertor_30_40.java | 42 ++++++++------- .../datatypes30_40/BackboneElement30_40.java | 8 +-- .../datatypes30_40/Element30_40.java | 12 ++--- .../conv30_50/VersionConvertor_30_50.java | 48 ++++++++++------- .../datatypes30_50/BackboneElement30_50.java | 8 +-- .../datatypes30_50/Element30_50.java | 12 ++--- .../conv40_50/VersionConvertor_40_50.java | 52 ++++++++++-------- .../datatypes40_50/BackboneElement40_50.java | 8 +-- .../datatypes40_50/Element40_50.java | 8 +-- .../conv43_50/VersionConvertor_43_50.java | 54 ++++++++++--------- .../datatypes43_50/BackboneElement43_50.java | 8 +-- .../datatypes43_50/Element43_50.java | 12 ++--- 30 files changed, 324 insertions(+), 269 deletions(-) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/VersionConvertor_10_30.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/VersionConvertor_10_30.java index eb027841f..ab0f84901 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/VersionConvertor_10_30.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/VersionConvertor_10_30.java @@ -128,15 +128,17 @@ public class VersionConvertor_10_30 { resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.dstu2.model.Element src, - @Nonnull org.hl7.fhir.dstu3.model.Element tgt, String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext10_30.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.dstu2.model.Element src, + @Nonnull org.hl7.fhir.dstu3.model.Element tgt, String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext10_30.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.dstu3.model.Element src, - @Nonnull org.hl7.fhir.dstu2.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext10_30.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.dstu3.model.Element src, + @Nonnull org.hl7.fhir.dstu2.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext10_30.INSTANCE.path(), extensionUrlsToIgnore); } public void copyElement(@Nonnull org.hl7.fhir.dstu3.model.DomainResource src, diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/datatypes10_30/BackboneElement10_30.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/datatypes10_30/BackboneElement10_30.java index 80298ad18..9da9f8d22 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/datatypes10_30/BackboneElement10_30.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/datatypes10_30/BackboneElement10_30.java @@ -4,19 +4,21 @@ import org.hl7.fhir.convertors.context.ConversionContext10_30; import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement10_30 { - static public void copyBackboneElement(org.hl7.fhir.dstu2.model.BackboneElement src, - org.hl7.fhir.dstu3.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.dstu2.model.BackboneElement src, + org.hl7.fhir.dstu3.model.BackboneElement tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu2.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension10_30.convertExtension(e)); } } - static public void copyBackboneElement(org.hl7.fhir.dstu3.model.BackboneElement src, - org.hl7.fhir.dstu2.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.dstu3.model.BackboneElement src, + org.hl7.fhir.dstu2.model.BackboneElement tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu3.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension10_30.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/datatypes10_30/Element10_30.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/datatypes10_30/Element10_30.java index 2d11cdde9..700420de3 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/datatypes10_30/Element10_30.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_30/datatypes10_30/Element10_30.java @@ -14,17 +14,17 @@ public class Element10_30 { this.advisor = advisor; } - public boolean isExemptExtension(String url, String[] extensionsToIgnore) { - return Arrays.asList(extensionsToIgnore).contains(url); + public boolean isExemptExtension(String url, String[] extensionUrlsToIgnore) { + return Arrays.asList(extensionUrlsToIgnore).contains(url); } public void copyElement(org.hl7.fhir.dstu2.model.Element src, org.hl7.fhir.dstu3.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.dstu3.model.Extension convertedExtension = new org.hl7.fhir.dstu3.model.Extension(); @@ -39,10 +39,10 @@ public class Element10_30 { public void copyElement(org.hl7.fhir.dstu3.model.Element src, org.hl7.fhir.dstu2.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.dstu2.model.Extension convertedExtension = new org.hl7.fhir.dstu2.model.Extension(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/VersionConvertor_10_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/VersionConvertor_10_40.java index f31b617d5..81c02c936 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/VersionConvertor_10_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/VersionConvertor_10_40.java @@ -159,20 +159,20 @@ public class VersionConvertor_10_40 { public void copyElement(@Nonnull org.hl7.fhir.dstu2.model.Element src, @Nonnull org.hl7.fhir.r4.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext10_40.INSTANCE.path(), var); + String... ignoredExtensionUrls) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext10_40.INSTANCE.path(), ignoredExtensionUrls); } public void copyElement(@Nonnull org.hl7.fhir.r4.model.Element src, @Nonnull org.hl7.fhir.dstu2.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext10_40.INSTANCE.path(), var); + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext10_40.INSTANCE.path(), extensionUrlsToIgnore); } public void copyElement(@Nonnull org.hl7.fhir.r4.model.DomainResource src, @Nonnull org.hl7.fhir.dstu2.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext10_40.INSTANCE.path(), var); + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext10_40.INSTANCE.path(), extensionUrlsToIgnore); } public void copyBackboneElement(@Nonnull org.hl7.fhir.r4.model.BackboneElement src, diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/datatypes10_40/BackboneElement10_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/datatypes10_40/BackboneElement10_40.java index 0fbc37574..9f1aa4e06 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/datatypes10_40/BackboneElement10_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/datatypes10_40/BackboneElement10_40.java @@ -4,19 +4,21 @@ import org.hl7.fhir.convertors.context.ConversionContext10_40; import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement10_40 { - static public void copyBackboneElement(org.hl7.fhir.dstu2.model.BackboneElement src, - org.hl7.fhir.r4.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.dstu2.model.BackboneElement src, + org.hl7.fhir.r4.model.BackboneElement tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu2.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension10_40.convertExtension(e)); } } - static public void copyBackboneElement(org.hl7.fhir.r4.model.BackboneElement src, - org.hl7.fhir.dstu2.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.r4.model.BackboneElement src, + org.hl7.fhir.dstu2.model.BackboneElement tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext10_40.INSTANCE.getVersionConvertor_10_40().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r4.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension10_40.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/datatypes10_40/Element10_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/datatypes10_40/Element10_40.java index 6263e05e8..4e26c90f9 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/datatypes10_40/Element10_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_40/datatypes10_40/Element10_40.java @@ -20,10 +20,10 @@ public class Element10_40 { public void copyElement(org.hl7.fhir.dstu2.model.Element src, org.hl7.fhir.r4.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r4.model.Extension convertedExtension = new org.hl7.fhir.r4.model.Extension(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/VersionConvertor_10_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/VersionConvertor_10_50.java index 88a52115b..ad0b3814c 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/VersionConvertor_10_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/VersionConvertor_10_50.java @@ -160,31 +160,34 @@ public class VersionConvertor_10_50 { public void copyElement(@Nonnull org.hl7.fhir.dstu2.model.Element src, @Nonnull org.hl7.fhir.r5.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext10_50.INSTANCE.path(), var); + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext10_50.INSTANCE.path(), extensionUrlsToIgnore); } public void copyElement(@Nonnull org.hl7.fhir.r5.model.Element src, @Nonnull org.hl7.fhir.dstu2.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext10_50.INSTANCE.path(), var); + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext10_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.r5.model.DomainResource src, - @Nonnull org.hl7.fhir.dstu2.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext10_50.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.r5.model.DomainResource src, + @Nonnull org.hl7.fhir.dstu2.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext10_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.r5.model.BackboneElement src, - @Nonnull org.hl7.fhir.dstu2.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.r5.model.BackboneElement src, + @Nonnull org.hl7.fhir.dstu2.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.dstu2.model.BackboneElement src, - @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.dstu2.model.BackboneElement src, + @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } } \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/datatypes10_50/BackboneElement10_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/datatypes10_50/BackboneElement10_50.java index fc5b83be5..bbc4ee939 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/datatypes10_50/BackboneElement10_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/datatypes10_50/BackboneElement10_50.java @@ -4,19 +4,21 @@ import org.hl7.fhir.convertors.context.ConversionContext10_50; import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement10_50 { - static public void copyBackboneElement(org.hl7.fhir.dstu2.model.BackboneElement src, - org.hl7.fhir.r5.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.dstu2.model.BackboneElement src, + org.hl7.fhir.r5.model.BackboneElement tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu2.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension10_50.convertExtension(e)); } } - static public void copyBackboneElement(org.hl7.fhir.r5.model.BackboneElement src, - org.hl7.fhir.dstu2.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.r5.model.BackboneElement src, + org.hl7.fhir.dstu2.model.BackboneElement tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext10_50.INSTANCE.getVersionConvertor_10_50().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r5.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension10_50.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/datatypes10_50/Element10_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/datatypes10_50/Element10_50.java index 30d76b29d..e89d5b0c4 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/datatypes10_50/Element10_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv10_50/datatypes10_50/Element10_50.java @@ -20,10 +20,10 @@ public class Element10_50 { public void copyElement(org.hl7.fhir.dstu2.model.Element src, org.hl7.fhir.r5.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r5.model.Extension convertedExtension = new org.hl7.fhir.r5.model.Extension(); @@ -38,10 +38,10 @@ public class Element10_50 { public void copyElement(org.hl7.fhir.r5.model.Element src, org.hl7.fhir.dstu2.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.dstu2.model.Extension convertedExtension = new org.hl7.fhir.dstu2.model.Extension(); @@ -56,10 +56,10 @@ public class Element10_50 { public void copyElement(org.hl7.fhir.r5.model.DomainResource src, org.hl7.fhir.dstu2.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.dstu2.model.Extension convertedExtension = new org.hl7.fhir.dstu2.model.Extension(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/VersionConvertor_14_30.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/VersionConvertor_14_30.java index b6c28f694..ea976f060 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/VersionConvertor_14_30.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/VersionConvertor_14_30.java @@ -127,27 +127,31 @@ public class VersionConvertor_14_30 { resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.dstu2016may.model.Element src, - @Nonnull org.hl7.fhir.dstu3.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext14_30.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.dstu2016may.model.Element src, + @Nonnull org.hl7.fhir.dstu3.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext14_30.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.dstu3.model.Element src, - @Nonnull org.hl7.fhir.dstu2016may.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext14_30.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.dstu3.model.Element src, + @Nonnull org.hl7.fhir.dstu2016may.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext14_30.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement src, - @Nonnull org.hl7.fhir.dstu3.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement src, + @Nonnull org.hl7.fhir.dstu3.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.dstu3.model.BackboneElement src, - @Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.dstu3.model.BackboneElement src, + @Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } } \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/datatypes14_30/BackboneElement14_30.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/datatypes14_30/BackboneElement14_30.java index 0adbc503e..6de09b207 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/datatypes14_30/BackboneElement14_30.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/datatypes14_30/BackboneElement14_30.java @@ -4,19 +4,21 @@ import org.hl7.fhir.convertors.context.ConversionContext14_30; import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement14_30 { - static public void copyBackboneElement(org.hl7.fhir.dstu2016may.model.BackboneElement src, - org.hl7.fhir.dstu3.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.dstu2016may.model.BackboneElement src, + org.hl7.fhir.dstu3.model.BackboneElement tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu2016may.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension14_30.convertExtension(e)); } } - static public void copyBackboneElement(org.hl7.fhir.dstu3.model.BackboneElement src, - org.hl7.fhir.dstu2016may.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.dstu3.model.BackboneElement src, + org.hl7.fhir.dstu2016may.model.BackboneElement tgt, + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext14_30.INSTANCE.getVersionConvertor_14_30().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu3.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension14_30.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/datatypes14_30/Element14_30.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/datatypes14_30/Element14_30.java index 62d2bfd90..cd5b9d95a 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/datatypes14_30/Element14_30.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_30/datatypes14_30/Element14_30.java @@ -21,10 +21,10 @@ public class Element14_30 { public void copyElement(org.hl7.fhir.dstu2016may.model.Element src, org.hl7.fhir.dstu3.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore) && (!(e.getUrl().equals(VersionConvertorConstants.PROFILE_EXTENSION) || e.getUrl().equals(VersionConvertorConstants.IG_DEPENDSON_PACKAGE_EXTENSION) || e.getUrl().equals(VersionConvertorConstants.IG_DEPENDSON_VERSION_EXTENSION)))) @@ -42,10 +42,10 @@ public class Element14_30 { public void copyElement(org.hl7.fhir.dstu3.model.Element src, org.hl7.fhir.dstu2016may.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.dstu2016may.model.Extension convertedExtension = new org.hl7.fhir.dstu2016may.model.Extension(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/VersionConvertor_14_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/VersionConvertor_14_40.java index 12d4051dd..02e99095e 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/VersionConvertor_14_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/VersionConvertor_14_40.java @@ -151,27 +151,31 @@ public class VersionConvertor_14_40 { resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.dstu2016may.model.Element src, - @Nonnull org.hl7.fhir.r4.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext14_40.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.dstu2016may.model.Element src, + @Nonnull org.hl7.fhir.r4.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext14_40.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.r4.model.Element src, - @Nonnull org.hl7.fhir.dstu2016may.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext14_40.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.r4.model.Element src, + @Nonnull org.hl7.fhir.dstu2016may.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext14_40.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.r4.model.BackboneElement src, - @Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.r4.model.BackboneElement src, + @Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement src, - @Nonnull org.hl7.fhir.r4.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement src, + @Nonnull org.hl7.fhir.r4.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } } \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/datatypes14_40/BackboneElement14_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/datatypes14_40/BackboneElement14_40.java index 480120e1d..d05e2c062 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/datatypes14_40/BackboneElement14_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/datatypes14_40/BackboneElement14_40.java @@ -6,8 +6,8 @@ import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement14_40 { static public void copyBackboneElement(org.hl7.fhir.dstu2016may.model.BackboneElement src, org.hl7.fhir.r4.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext14_40.INSTANCE.getVersionConvertor_14_40().copyElement(src, tgt, var); + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext14_40.INSTANCE.getVersionConvertor_14_40().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu2016may.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension14_40.convertExtension(e)); } @@ -15,8 +15,8 @@ public class BackboneElement14_40 { static public void copyBackboneElement(org.hl7.fhir.r4.model.BackboneElement src, org.hl7.fhir.dstu2016may.model.BackboneElement tgt, - String ... var) throws FHIRException { - ConversionContext14_40.INSTANCE.getVersionConvertor_14_40().copyElement(src, tgt, var); + String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext14_40.INSTANCE.getVersionConvertor_14_40().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r4.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension14_40.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/datatypes14_40/Element14_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/datatypes14_40/Element14_40.java index 998bb754f..bbd811ebc 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/datatypes14_40/Element14_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_40/datatypes14_40/Element14_40.java @@ -20,10 +20,10 @@ public class Element14_40 { public void copyElement(org.hl7.fhir.dstu2016may.model.Element src, org.hl7.fhir.r4.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r4.model.Extension convertedExtension = new org.hl7.fhir.r4.model.Extension(); @@ -38,10 +38,10 @@ public class Element14_40 { public void copyElement(org.hl7.fhir.r4.model.Element src, org.hl7.fhir.dstu2016may.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.dstu2016may.model.Extension convertedExtension = new org.hl7.fhir.dstu2016may.model.Extension(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/VersionConvertor_14_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/VersionConvertor_14_50.java index 444666cf6..83290b301 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/VersionConvertor_14_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/VersionConvertor_14_50.java @@ -143,27 +143,31 @@ public class VersionConvertor_14_50 { resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.dstu2016may.model.Element src, - @Nonnull org.hl7.fhir.r5.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext14_50.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.dstu2016may.model.Element src, + @Nonnull org.hl7.fhir.r5.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext14_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.r5.model.Element src, - @Nonnull org.hl7.fhir.dstu2016may.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext14_50.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.r5.model.Element src, + @Nonnull org.hl7.fhir.dstu2016may.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext14_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.r5.model.BackboneElement src, - @Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.r5.model.BackboneElement src, + @Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement src, - @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.dstu2016may.model.BackboneElement src, + @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } } \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/datatypes14_50/BackboneElement14_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/datatypes14_50/BackboneElement14_50.java index 2d1ad0f45..e7bf94f7f 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/datatypes14_50/BackboneElement14_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/datatypes14_50/BackboneElement14_50.java @@ -4,19 +4,21 @@ import org.hl7.fhir.convertors.context.ConversionContext14_50; import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement14_50 { - static public void copyBackboneElement(org.hl7.fhir.dstu2016may.model.BackboneElement src, - org.hl7.fhir.r5.model.BackboneElement tgt, - String... var) throws FHIRException { - ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.dstu2016may.model.BackboneElement src, + org.hl7.fhir.r5.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu2016may.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension14_50.convertExtension(e)); } } - static public void copyBackboneElement(org.hl7.fhir.r5.model.BackboneElement src, - org.hl7.fhir.dstu2016may.model.BackboneElement tgt, - String... var) throws FHIRException { - ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt, var); + static public void copyBackboneElement( + org.hl7.fhir.r5.model.BackboneElement src, + org.hl7.fhir.dstu2016may.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + ConversionContext14_50.INSTANCE.getVersionConvertor_14_50().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r5.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension14_50.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/datatypes14_50/Element14_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/datatypes14_50/Element14_50.java index a0c7a2576..145b94718 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/datatypes14_50/Element14_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv14_50/datatypes14_50/Element14_50.java @@ -21,10 +21,10 @@ public class Element14_50 { public void copyElement(org.hl7.fhir.dstu2016may.model.Element src, org.hl7.fhir.r5.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r5.model.Extension convertedExtension = new org.hl7.fhir.r5.model.Extension(); @@ -39,10 +39,10 @@ public class Element14_50 { public void copyElement(org.hl7.fhir.r5.model.Element src, org.hl7.fhir.dstu2016may.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.dstu2016may.model.Extension convertedExtension = new org.hl7.fhir.dstu2016may.model.Extension(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/VersionConvertor_30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/VersionConvertor_30_40.java index bb3d2aced..1ef82420b 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/VersionConvertor_30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/VersionConvertor_30_40.java @@ -137,32 +137,38 @@ public class VersionConvertor_30_40 { resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyDomainResource(@Nonnull org.hl7.fhir.r4.model.DomainResource src, - @Nonnull org.hl7.fhir.dstu3.model.DomainResource tgt, String... extensionUrlsToIgnore) throws FHIRException { + public void copyDomainResource( + @Nonnull org.hl7.fhir.r4.model.DomainResource src, + @Nonnull org.hl7.fhir.dstu3.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.dstu3.model.Element src, - @Nonnull org.hl7.fhir.r4.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext30_40.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.dstu3.model.Element src, + @Nonnull org.hl7.fhir.r4.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext30_40.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.r4.model.Element src, - @Nonnull org.hl7.fhir.dstu3.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext30_40.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.r4.model.Element src, + @Nonnull org.hl7.fhir.dstu3.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext30_40.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.r4.model.BackboneElement src, - @Nonnull org.hl7.fhir.dstu3.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.r4.model.BackboneElement src, + @Nonnull org.hl7.fhir.dstu3.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.dstu3.model.BackboneElement src, - @Nonnull org.hl7.fhir.r4.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.dstu3.model.BackboneElement src, + @Nonnull org.hl7.fhir.r4.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } } \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/datatypes30_40/BackboneElement30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/datatypes30_40/BackboneElement30_40.java index cce1ac0eb..6cd69b570 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/datatypes30_40/BackboneElement30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/datatypes30_40/BackboneElement30_40.java @@ -4,15 +4,15 @@ import org.hl7.fhir.convertors.context.ConversionContext30_40; import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement30_40 { - static public void copyBackboneElement(org.hl7.fhir.dstu3.model.BackboneElement src, org.hl7.fhir.r4.model.BackboneElement tgt, String... var) throws FHIRException { - ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt, var); + static public void copyBackboneElement(org.hl7.fhir.dstu3.model.BackboneElement src, org.hl7.fhir.r4.model.BackboneElement tgt, String... extensionUrlsToIgnore) throws FHIRException { + ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu3.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension30_40.convertExtension(e)); } } - static public void copyBackboneElement(org.hl7.fhir.r4.model.BackboneElement src, org.hl7.fhir.dstu3.model.BackboneElement tgt, String... var) throws FHIRException { - ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt, var); + static public void copyBackboneElement(org.hl7.fhir.r4.model.BackboneElement src, org.hl7.fhir.dstu3.model.BackboneElement tgt, String... extensionUrlsToIgnore) throws FHIRException { + ConversionContext30_40.INSTANCE.getVersionConvertor_30_40().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r4.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension30_40.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/datatypes30_40/Element30_40.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/datatypes30_40/Element30_40.java index 5f00af98a..813ac6d11 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/datatypes30_40/Element30_40.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_40/datatypes30_40/Element30_40.java @@ -13,17 +13,17 @@ public class Element30_40 { this.advisor = advisor; } - public boolean isExemptExtension(String url, String[] extensionsToIgnore) { - return Arrays.asList(extensionsToIgnore).contains(url); + public boolean isExemptExtension(String url, String[] extensionUrlsToIgnore) { + return Arrays.asList(extensionUrlsToIgnore).contains(url); } public void copyElement(org.hl7.fhir.dstu3.model.Element src, org.hl7.fhir.r4.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r4.model.Extension convertedExtension = new org.hl7.fhir.r4.model.Extension(); @@ -38,10 +38,10 @@ public class Element30_40 { public void copyElement(org.hl7.fhir.r4.model.Element src, org.hl7.fhir.dstu3.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.dstu3.model.Extension convertedExtension = new org.hl7.fhir.dstu3.model.Extension(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/VersionConvertor_30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/VersionConvertor_30_50.java index a25194ea9..39051261c 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/VersionConvertor_30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/VersionConvertor_30_50.java @@ -130,37 +130,45 @@ public class VersionConvertor_30_50 { } } - public void copyDomainResource(@Nonnull org.hl7.fhir.dstu3.model.DomainResource src, - @Nonnull org.hl7.fhir.r5.model.DomainResource tgt, String... extensionUrlsToIgnore) throws FHIRException { + public void copyDomainResource( + @Nonnull org.hl7.fhir.dstu3.model.DomainResource src, + @Nonnull org.hl7.fhir.r5.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyDomainResource(@Nonnull org.hl7.fhir.r5.model.DomainResource src, - @Nonnull org.hl7.fhir.dstu3.model.DomainResource tgt, String... extensionUrlsToIgnore) throws FHIRException { + public void copyDomainResource( + @Nonnull org.hl7.fhir.r5.model.DomainResource src, + @Nonnull org.hl7.fhir.dstu3.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.dstu3.model.Element src, - @Nonnull org.hl7.fhir.r5.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext30_50.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.dstu3.model.Element src, + @Nonnull org.hl7.fhir.r5.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext30_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.r5.model.Element src, - @Nonnull org.hl7.fhir.dstu3.model.Element tgt, - String... ignoredExtensionUrls) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext30_50.INSTANCE.path(), ignoredExtensionUrls); + public void copyElement( + @Nonnull org.hl7.fhir.r5.model.Element src, + @Nonnull org.hl7.fhir.dstu3.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext30_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.r5.model.BackboneElement src, - @Nonnull org.hl7.fhir.dstu3.model.BackboneElement tgt, - String... ignoredExtensionUrls) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, ignoredExtensionUrls); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.r5.model.BackboneElement src, + @Nonnull org.hl7.fhir.dstu3.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.dstu3.model.BackboneElement src, - @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.dstu3.model.BackboneElement src, + @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } } \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/datatypes30_50/BackboneElement30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/datatypes30_50/BackboneElement30_50.java index 40ff12ca6..4e6bd297d 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/datatypes30_50/BackboneElement30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/datatypes30_50/BackboneElement30_50.java @@ -4,15 +4,15 @@ import org.hl7.fhir.convertors.context.ConversionContext30_50; import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement30_50 { - static public void copyBackboneElement(org.hl7.fhir.dstu3.model.BackboneElement src, org.hl7.fhir.r5.model.BackboneElement tgt, String ... var) throws FHIRException { - ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src,tgt, var); + static public void copyBackboneElement(org.hl7.fhir.dstu3.model.BackboneElement src, org.hl7.fhir.r5.model.BackboneElement tgt, String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src,tgt, extensionUrlsToIgnore); for (org.hl7.fhir.dstu3.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension30_50.convertExtension(e)); } } - static public void copyBackboneElement(org.hl7.fhir.r5.model.BackboneElement src, org.hl7.fhir.dstu3.model.BackboneElement tgt, String ... var) throws FHIRException { - ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt, var); + static public void copyBackboneElement(org.hl7.fhir.r5.model.BackboneElement src, org.hl7.fhir.dstu3.model.BackboneElement tgt, String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r5.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension30_50.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/datatypes30_50/Element30_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/datatypes30_50/Element30_50.java index 6dcc899cf..a1f03db44 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/datatypes30_50/Element30_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv30_50/datatypes30_50/Element30_50.java @@ -13,17 +13,17 @@ public class Element30_50 { this.advisor = advisor; } - public boolean isExemptExtension(String url, String[] extensionsToIgnore) { - return Arrays.asList(extensionsToIgnore).contains(url); + public boolean isExemptExtension(String url, String[] extensionUrlsToIgnore) { + return Arrays.asList(extensionUrlsToIgnore).contains(url); } public void copyElement(org.hl7.fhir.dstu3.model.Element src, org.hl7.fhir.r5.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r5.model.Extension convertedExtension = new org.hl7.fhir.r5.model.Extension(); @@ -38,10 +38,10 @@ public class Element30_50 { public void copyElement(org.hl7.fhir.r5.model.Element src, org.hl7.fhir.dstu3.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.dstu3.model.Extension convertedExtension = new org.hl7.fhir.dstu3.model.Extension(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/VersionConvertor_40_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/VersionConvertor_40_50.java index 3ba719a18..638226e83 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/VersionConvertor_40_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/VersionConvertor_40_50.java @@ -107,37 +107,45 @@ public class VersionConvertor_40_50 { } } - public void copyDomainResource(@Nonnull org.hl7.fhir.r4.model.DomainResource src, - @Nonnull org.hl7.fhir.r5.model.DomainResource tgt, String... ignoredExtensionUrls) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt, ignoredExtensionUrls); + public void copyDomainResource( + @Nonnull org.hl7.fhir.r4.model.DomainResource src, + @Nonnull org.hl7.fhir.r5.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyDomainResource(@Nonnull org.hl7.fhir.r5.model.DomainResource src, - @Nonnull org.hl7.fhir.r4.model.DomainResource tgt, String... ignoredExtensionUrls) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt, ignoredExtensionUrls); + public void copyDomainResource( + @Nonnull org.hl7.fhir.r5.model.DomainResource src, + @Nonnull org.hl7.fhir.r4.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.r4.model.Element src, - @Nonnull org.hl7.fhir.r5.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext40_50.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.r4.model.Element src, + @Nonnull org.hl7.fhir.r5.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext40_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.r5.model.Element src, - @Nonnull org.hl7.fhir.r4.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext40_50.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.r5.model.Element src, + @Nonnull org.hl7.fhir.r4.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext40_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.r5.model.BackboneElement src, - @Nonnull org.hl7.fhir.r4.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.r5.model.BackboneElement src, + @Nonnull org.hl7.fhir.r4.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.r4.model.BackboneElement src, - @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.r4.model.BackboneElement src, + @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } } \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/datatypes40_50/BackboneElement40_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/datatypes40_50/BackboneElement40_50.java index 46c8dad3b..ccd124b48 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/datatypes40_50/BackboneElement40_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/datatypes40_50/BackboneElement40_50.java @@ -5,15 +5,15 @@ import org.hl7.fhir.convertors.conv40_50.datatypes40_50.special40_50.Extension40 import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement40_50 { - public static void copyBackboneElement(org.hl7.fhir.r4.model.BackboneElement src, org.hl7.fhir.r5.model.BackboneElement tgt, String ... var) throws FHIRException { - ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt, var); + public static void copyBackboneElement(org.hl7.fhir.r4.model.BackboneElement src, org.hl7.fhir.r5.model.BackboneElement tgt, String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r4.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension40_50.convertExtension(e)); } } - public static void copyBackboneElement(org.hl7.fhir.r5.model.BackboneElement src, org.hl7.fhir.r4.model.BackboneElement tgt, String... var) throws FHIRException { - ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt, var); + public static void copyBackboneElement(org.hl7.fhir.r5.model.BackboneElement src, org.hl7.fhir.r4.model.BackboneElement tgt, String... extensionUrlsToIgnore) throws FHIRException { + ConversionContext40_50.INSTANCE.getVersionConvertor_40_50().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r5.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension40_50.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/datatypes40_50/Element40_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/datatypes40_50/Element40_50.java index 52bf28954..b53445972 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/datatypes40_50/Element40_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv40_50/datatypes40_50/Element40_50.java @@ -21,10 +21,10 @@ public class Element40_50 { public void copyElement(org.hl7.fhir.r4.model.Element src, org.hl7.fhir.r5.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r5.model.Extension convertedExtension = new org.hl7.fhir.r5.model.Extension(); @@ -39,10 +39,10 @@ public class Element40_50 { public void copyElement(org.hl7.fhir.r5.model.Element src, org.hl7.fhir.r4.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r4.model.Extension convertedExtension = new org.hl7.fhir.r4.model.Extension(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/VersionConvertor_43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/VersionConvertor_43_50.java index d839398d4..c4d50132c 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/VersionConvertor_43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/VersionConvertor_43_50.java @@ -107,39 +107,45 @@ public class VersionConvertor_43_50 { } } - public void copyDomainResource(@Nonnull org.hl7.fhir.r4b.model.DomainResource src, - @Nonnull org.hl7.fhir.r5.model.DomainResource tgt, - String... extensionUrlToIgnore) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt, extensionUrlToIgnore); + public void copyDomainResource( + @Nonnull org.hl7.fhir.r4b.model.DomainResource src, + @Nonnull org.hl7.fhir.r5.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyDomainResource(@Nonnull org.hl7.fhir.r5.model.DomainResource src, - @Nonnull org.hl7.fhir.r4b.model.DomainResource tgt, - String... extensionUrlToIgnore) throws FHIRException { - resourceConvertor.copyDomainResource(src, tgt, extensionUrlToIgnore); + public void copyDomainResource( + @Nonnull org.hl7.fhir.r5.model.DomainResource src, + @Nonnull org.hl7.fhir.r4b.model.DomainResource tgt, + String... extensionUrlsToIgnore) throws FHIRException { + resourceConvertor.copyDomainResource(src, tgt, extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.r4b.model.Element src, - @Nonnull org.hl7.fhir.r5.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext43_50.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.r4b.model.Element src, + @Nonnull org.hl7.fhir.r5.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext43_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyElement(@Nonnull org.hl7.fhir.r5.model.Element src, - @Nonnull org.hl7.fhir.r4b.model.Element tgt, - String... var) throws FHIRException { - elementConvertor.copyElement(src, tgt, ConversionContext43_50.INSTANCE.path(), var); + public void copyElement( + @Nonnull org.hl7.fhir.r5.model.Element src, + @Nonnull org.hl7.fhir.r4b.model.Element tgt, + String... extensionUrlsToIgnore) throws FHIRException { + elementConvertor.copyElement(src, tgt, ConversionContext43_50.INSTANCE.path(), extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.r5.model.BackboneElement src, - @Nonnull org.hl7.fhir.r4b.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.r5.model.BackboneElement src, + @Nonnull org.hl7.fhir.r4b.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } - public void copyBackboneElement(@Nonnull org.hl7.fhir.r4b.model.BackboneElement src, - @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, - String... var) throws FHIRException { - backboneElementConvertor.copyBackboneElement(src, tgt, var); + public void copyBackboneElement( + @Nonnull org.hl7.fhir.r4b.model.BackboneElement src, + @Nonnull org.hl7.fhir.r5.model.BackboneElement tgt, + String... extensionUrlsToIgnore) throws FHIRException { + backboneElementConvertor.copyBackboneElement(src, tgt, extensionUrlsToIgnore); } } \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/datatypes43_50/BackboneElement43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/datatypes43_50/BackboneElement43_50.java index cbef0e80d..24686761a 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/datatypes43_50/BackboneElement43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/datatypes43_50/BackboneElement43_50.java @@ -5,15 +5,15 @@ import org.hl7.fhir.convertors.conv43_50.datatypes43_50.special43_50.Extension43 import org.hl7.fhir.exceptions.FHIRException; public class BackboneElement43_50 { - public static void copyBackboneElement(org.hl7.fhir.r4b.model.BackboneElement src, org.hl7.fhir.r5.model.BackboneElement tgt, String ... var) throws FHIRException { - ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt, var); + public static void copyBackboneElement(org.hl7.fhir.r4b.model.BackboneElement src, org.hl7.fhir.r5.model.BackboneElement tgt, String ... extensionUrlsToIgnore) throws FHIRException { + ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r4b.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension43_50.convertExtension(e)); } } - public static void copyBackboneElement(org.hl7.fhir.r5.model.BackboneElement src, org.hl7.fhir.r4b.model.BackboneElement tgt, String... var) throws FHIRException { - ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt, var); + public static void copyBackboneElement(org.hl7.fhir.r5.model.BackboneElement src, org.hl7.fhir.r4b.model.BackboneElement tgt, String... extensionUrlsToIgnore) throws FHIRException { + ConversionContext43_50.INSTANCE.getVersionConvertor_43_50().copyElement(src, tgt, extensionUrlsToIgnore); for (org.hl7.fhir.r5.model.Extension e : src.getModifierExtension()) { tgt.addModifierExtension(Extension43_50.convertExtension(e)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/datatypes43_50/Element43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/datatypes43_50/Element43_50.java index c7cd18342..2109751e4 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/datatypes43_50/Element43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/datatypes43_50/Element43_50.java @@ -14,17 +14,17 @@ public class Element43_50 { this.advisor = advisor; } - public static boolean isExemptExtension(String url, String[] extensionsToIgnore) { - return Arrays.asList(extensionsToIgnore).contains(url); + public static boolean isExemptExtension(String url, String[] extensionUrlsToIgnore) { + return Arrays.asList(extensionUrlsToIgnore).contains(url); } public void copyElement(org.hl7.fhir.r4b.model.Element src, org.hl7.fhir.r5.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r5.model.Extension convertedExtension = new org.hl7.fhir.r5.model.Extension(); @@ -39,10 +39,10 @@ public class Element43_50 { public void copyElement(org.hl7.fhir.r5.model.Element src, org.hl7.fhir.r4b.model.Element tgt, String path, - String... extensionsToIgnore) throws FHIRException { + String... extensionUrlsToIgnore) throws FHIRException { if (src.hasId()) tgt.setId(src.getId()); src.getExtension().stream() - .filter(e -> !isExemptExtension(e.getUrl(), extensionsToIgnore)) + .filter(e -> !isExemptExtension(e.getUrl(), extensionUrlsToIgnore)) .forEach(e -> { if (advisor.useAdvisorForExtension(path, e)) { org.hl7.fhir.r4b.model.Extension convertedExtension = new org.hl7.fhir.r4b.model.Extension();