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