diff --git a/hapi-deployable-pom/pom.xml b/hapi-deployable-pom/pom.xml index 6f821164873e..96929f76db48 100644 --- a/hapi-deployable-pom/pom.xml +++ b/hapi-deployable-pom/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-android/pom.xml b/hapi-fhir-android/pom.xml index 67fb95573af1..6d2ebf914ac0 100644 --- a/hapi-fhir-android/pom.xml +++ b/hapi-fhir-android/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-base/pom.xml b/hapi-fhir-base/pom.xml index 363ce81c35e5..a477fc4dd3ba 100644 --- a/hapi-fhir-base/pom.xml +++ b/hapi-fhir-base/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/VersionEnum.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/VersionEnum.java index d59f373bee37..d9016df34acb 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/VersionEnum.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/VersionEnum.java @@ -136,7 +136,6 @@ public enum VersionEnum { V7_0_0, V7_0_1, - V7_1_0, V7_2_0; diff --git a/hapi-fhir-bom/pom.xml b/hapi-fhir-bom/pom.xml index c143f2f12790..9f9bdb78a2ab 100644 --- a/hapi-fhir-bom/pom.xml +++ b/hapi-fhir-bom/pom.xml @@ -4,7 +4,7 @@ 4.0.0 ca.uhn.hapi.fhir hapi-fhir-bom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT pom HAPI FHIR BOM @@ -12,7 +12,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-checkstyle/pom.xml b/hapi-fhir-checkstyle/pom.xml index 3c95c9665621..15b70881e0d4 100644 --- a/hapi-fhir-checkstyle/pom.xml +++ b/hapi-fhir-checkstyle/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-cli/hapi-fhir-cli-api/pom.xml b/hapi-fhir-cli/hapi-fhir-cli-api/pom.xml index d89ee9d0d291..4dbdb61e2dc2 100644 --- a/hapi-fhir-cli/hapi-fhir-cli-api/pom.xml +++ b/hapi-fhir-cli/hapi-fhir-cli-api/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-cli/hapi-fhir-cli-app/pom.xml b/hapi-fhir-cli/hapi-fhir-cli-app/pom.xml index e566738ea061..bda4d39ba38a 100644 --- a/hapi-fhir-cli/hapi-fhir-cli-app/pom.xml +++ b/hapi-fhir-cli/hapi-fhir-cli-app/pom.xml @@ -6,7 +6,7 @@ ca.uhn.hapi.fhir hapi-fhir-cli - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-cli/pom.xml b/hapi-fhir-cli/pom.xml index 3f25a356cc2c..033018cffe4e 100644 --- a/hapi-fhir-cli/pom.xml +++ b/hapi-fhir-cli/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-client-okhttp/pom.xml b/hapi-fhir-client-okhttp/pom.xml index e7c77bcaa3bb..c0e0dbc13fbc 100644 --- a/hapi-fhir-client-okhttp/pom.xml +++ b/hapi-fhir-client-okhttp/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-client/pom.xml b/hapi-fhir-client/pom.xml index ed48d38ad05c..d2c1cbaff570 100644 --- a/hapi-fhir-client/pom.xml +++ b/hapi-fhir-client/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-converter/pom.xml b/hapi-fhir-converter/pom.xml index 807198267329..7017a82b772f 100644 --- a/hapi-fhir-converter/pom.xml +++ b/hapi-fhir-converter/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-dist/pom.xml b/hapi-fhir-dist/pom.xml index e43fe5ff571b..6cfa4f4b4f35 100644 --- a/hapi-fhir-dist/pom.xml +++ b/hapi-fhir-dist/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-docs/pom.xml b/hapi-fhir-docs/pom.xml index 47e14f92f94a..fdc080b826fb 100644 --- a/hapi-fhir-docs/pom.xml +++ b/hapi-fhir-docs/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5654-measurescorer-bug.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5654-measurescorer-bug.yaml new file mode 100644 index 000000000000..d922fa2e95cd --- /dev/null +++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5654-measurescorer-bug.yaml @@ -0,0 +1,5 @@ +type: fix +issue: 5654 +title: "Fixed a MeasureReport measureScoring bug impacting any measures currently using denominator-exception population will +incorrectly calculate the score without following specification. This bug adds an extension to MeasureReport Groups to capture calculated denominator and +numerator to bring transparency to the measureScore calculation and act as a dataSource of measureScore instead of behind the scenes calculations." diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5680-npe-on-poll-export-status-system-export-with-patientid-partitioning.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5680-npe-on-poll-export-status-system-export-with-patientid-partitioning.yaml new file mode 100644 index 000000000000..8f0c43ce3a28 --- /dev/null +++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5680-npe-on-poll-export-status-system-export-with-patientid-partitioning.yaml @@ -0,0 +1,5 @@ +--- +type: fix +issue: 5680 +title: "Previously, after registering built-in interceptor `PatientIdPartitionInterceptor`, while performing +an async system bulk export, the `$poll-export-status` operation would fail with a `NullPointerException`. This has been fixed." diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5700-remote-terminology-service-throws-exception-unsupported-property-types.yaml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5700-remote-terminology-service-throws-exception-unsupported-property-types.yaml new file mode 100644 index 000000000000..e81159179fca --- /dev/null +++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5700-remote-terminology-service-throws-exception-unsupported-property-types.yaml @@ -0,0 +1,6 @@ +--- +type: fix +issue: 5700 +title: "Previously (this release cycle), when you call `RemoteTerminologyServiceValidationSupport` method `lookupCode` +with a `CodeSystem` that has properties that are not `string` or `Coding`, the method would throw an exception. +It should instead accept any type and convert any unsupported type to `string`. This has been fixed." diff --git a/hapi-fhir-jacoco/pom.xml b/hapi-fhir-jacoco/pom.xml index 298bd3570b6f..ef21461c0559 100644 --- a/hapi-fhir-jacoco/pom.xml +++ b/hapi-fhir-jacoco/pom.xml @@ -11,7 +11,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jaxrsserver-base/pom.xml b/hapi-fhir-jaxrsserver-base/pom.xml index c3ff56f8f4e5..4fe715ffbadb 100644 --- a/hapi-fhir-jaxrsserver-base/pom.xml +++ b/hapi-fhir-jaxrsserver-base/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpa/pom.xml b/hapi-fhir-jpa/pom.xml index 5aecd9032cdf..4d670f255979 100644 --- a/hapi-fhir-jpa/pom.xml +++ b/hapi-fhir-jpa/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-base/pom.xml b/hapi-fhir-jpaserver-base/pom.xml index 2b6dd5a82217..98a31f12bff4 100644 --- a/hapi-fhir-jpaserver-base/pom.xml +++ b/hapi-fhir-jpaserver-base/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-elastic-test-utilities/pom.xml b/hapi-fhir-jpaserver-elastic-test-utilities/pom.xml index 327b6a68181e..6617a4b129b2 100644 --- a/hapi-fhir-jpaserver-elastic-test-utilities/pom.xml +++ b/hapi-fhir-jpaserver-elastic-test-utilities/pom.xml @@ -6,7 +6,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-hfql/pom.xml b/hapi-fhir-jpaserver-hfql/pom.xml index cb6fcdf89fcf..5267a876c0cb 100644 --- a/hapi-fhir-jpaserver-hfql/pom.xml +++ b/hapi-fhir-jpaserver-hfql/pom.xml @@ -3,7 +3,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-ips/pom.xml b/hapi-fhir-jpaserver-ips/pom.xml index 399cf1ff2245..8a330e391574 100644 --- a/hapi-fhir-jpaserver-ips/pom.xml +++ b/hapi-fhir-jpaserver-ips/pom.xml @@ -3,7 +3,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-mdm/pom.xml b/hapi-fhir-jpaserver-mdm/pom.xml index f25f6ae6c59e..45505e63485e 100644 --- a/hapi-fhir-jpaserver-mdm/pom.xml +++ b/hapi-fhir-jpaserver-mdm/pom.xml @@ -6,7 +6,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-model/pom.xml b/hapi-fhir-jpaserver-model/pom.xml index ed3c7828f52c..522b931f5444 100644 --- a/hapi-fhir-jpaserver-model/pom.xml +++ b/hapi-fhir-jpaserver-model/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-searchparam/pom.xml b/hapi-fhir-jpaserver-searchparam/pom.xml index cc7f51806383..7954b6af9d81 100755 --- a/hapi-fhir-jpaserver-searchparam/pom.xml +++ b/hapi-fhir-jpaserver-searchparam/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-subscription/pom.xml b/hapi-fhir-jpaserver-subscription/pom.xml index aea4770ad9d5..5650b52c2528 100644 --- a/hapi-fhir-jpaserver-subscription/pom.xml +++ b/hapi-fhir-jpaserver-subscription/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-test-dstu2/pom.xml b/hapi-fhir-jpaserver-test-dstu2/pom.xml index 3be07536e19f..ebb7e0cdc069 100644 --- a/hapi-fhir-jpaserver-test-dstu2/pom.xml +++ b/hapi-fhir-jpaserver-test-dstu2/pom.xml @@ -6,7 +6,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-test-dstu3/pom.xml b/hapi-fhir-jpaserver-test-dstu3/pom.xml index 125b22a01008..48cc845eca4d 100644 --- a/hapi-fhir-jpaserver-test-dstu3/pom.xml +++ b/hapi-fhir-jpaserver-test-dstu3/pom.xml @@ -6,7 +6,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-test-r4/pom.xml b/hapi-fhir-jpaserver-test-r4/pom.xml index 8dbfb0dd2b8c..ce4e4f19a7fa 100644 --- a/hapi-fhir-jpaserver-test-r4/pom.xml +++ b/hapi-fhir-jpaserver-test-r4/pom.xml @@ -6,7 +6,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/interceptor/PatientIdPartitionInterceptorTest.java b/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/interceptor/PatientIdPartitionInterceptorTest.java index d0e116343aa9..d4427414795a 100644 --- a/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/interceptor/PatientIdPartitionInterceptorTest.java +++ b/hapi-fhir-jpaserver-test-r4/src/test/java/ca/uhn/fhir/jpa/interceptor/PatientIdPartitionInterceptorTest.java @@ -1,6 +1,8 @@ package ca.uhn.fhir.jpa.interceptor; import ca.uhn.fhir.i18n.Msg; +import ca.uhn.fhir.interceptor.model.ReadPartitionIdRequestDetails; +import ca.uhn.fhir.interceptor.model.RequestPartitionId; import ca.uhn.fhir.jpa.api.model.DaoMethodOutcome; import ca.uhn.fhir.jpa.model.config.PartitionSettings; import ca.uhn.fhir.jpa.model.entity.ResourceTable; @@ -10,19 +12,28 @@ import ca.uhn.fhir.jpa.util.SqlQuery; import ca.uhn.fhir.model.api.Include; import ca.uhn.fhir.rest.api.Constants; +import ca.uhn.fhir.rest.api.RestOperationTypeEnum; import ca.uhn.fhir.rest.api.server.IBundleProvider; import ca.uhn.fhir.rest.api.server.SystemRequestDetails; +import ca.uhn.fhir.rest.api.server.bulk.BulkExportJobParameters; import ca.uhn.fhir.rest.param.ReferenceParam; import ca.uhn.fhir.rest.param.TokenOrListParam; import ca.uhn.fhir.rest.param.TokenParam; import ca.uhn.fhir.rest.server.exceptions.MethodNotAllowedException; +import ca.uhn.fhir.rest.server.provider.BulkDataExportProvider; import ca.uhn.fhir.rest.server.provider.ProviderConstants; import ca.uhn.fhir.util.BundleBuilder; import ca.uhn.fhir.util.MultimapCollector; +import com.google.common.base.Charsets; import com.google.common.collect.ListMultimap; import com.google.common.collect.Multimap; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; +import org.apache.commons.io.IOUtils; +import org.apache.http.Header; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; import org.hl7.fhir.r4.model.Bundle; import org.hl7.fhir.r4.model.Encounter; import org.hl7.fhir.r4.model.Enumerations; @@ -36,6 +47,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.SpyBean; import java.io.IOException; import java.util.List; @@ -49,8 +61,11 @@ import static org.hamcrest.Matchers.either; import static org.hamcrest.Matchers.matchesPattern; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; public class PatientIdPartitionInterceptorTest extends BaseResourceProviderR4Test { public static final int ALTERNATE_DEFAULT_ID = -1; @@ -542,6 +557,70 @@ private Patient createPatientA() { return (Patient)update.getResource(); } + @Test + public void testIdentifyForRead_serverOperation_returnsAllPartitions() { + ReadPartitionIdRequestDetails readRequestDetails = ReadPartitionIdRequestDetails.forServerOperation(ProviderConstants.OPERATION_EXPORT); + RequestPartitionId requestPartitionId = mySvc.identifyForRead(readRequestDetails, mySrd); + assertEquals(requestPartitionId, RequestPartitionId.allPartitions()); + assertEquals(RestOperationTypeEnum.EXTENDED_OPERATION_SERVER, readRequestDetails.getRestOperationType()); + } + + @Test + public void testSystemBulkExport_withPatientIdPartitioningWithNoResourceType_usesNonPatientSpecificPartition() throws IOException { + HttpPost post = new HttpPost(myServer.getBaseUrl() + "/" + ProviderConstants.OPERATION_EXPORT); + post.addHeader(Constants.HEADER_PREFER, Constants.HEADER_PREFER_RESPOND_ASYNC); + + try (CloseableHttpResponse postResponse = myServer.getHttpClient().execute(post)){ + ourLog.info("Response: {}",postResponse); + assertEquals(202, postResponse.getStatusLine().getStatusCode()); + assertEquals("Accepted", postResponse.getStatusLine().getReasonPhrase()); + } + } + + @Test + public void testSystemBulkExport_withPatientIdPartitioningWithResourceType_exportUsesNonPatientSpecificPartition() throws IOException { + HttpPost post = new HttpPost(myServer.getBaseUrl() + "/" + ProviderConstants.OPERATION_EXPORT); + post.addHeader(Constants.HEADER_PREFER, Constants.HEADER_PREFER_RESPOND_ASYNC); + post.addHeader(BulkDataExportProvider.PARAM_EXPORT_TYPE, "Patient"); + post.addHeader(BulkDataExportProvider.PARAM_EXPORT_TYPE_FILTER, "Patient?"); + + try (CloseableHttpResponse postResponse = myServer.getHttpClient().execute(post)){ + ourLog.info("Response: {}",postResponse); + assertEquals(202, postResponse.getStatusLine().getStatusCode()); + assertEquals("Accepted", postResponse.getStatusLine().getReasonPhrase()); + } + } + + @Test + public void testSystemBulkExport_withPatientIdPartitioningWithResourceType_pollSuccessful() throws IOException { + final BulkExportJobParameters options = new BulkExportJobParameters(); + options.setExportStyle(BulkExportJobParameters.ExportStyle.SYSTEM); + options.setOutputFormat(Constants.CT_FHIR_NDJSON); + + HttpPost post = new HttpPost(myServer.getBaseUrl() + "/" + ProviderConstants.OPERATION_EXPORT); + post.addHeader(Constants.HEADER_PREFER, Constants.HEADER_PREFER_RESPOND_ASYNC); + post.addHeader(BulkDataExportProvider.PARAM_EXPORT_TYPE, "Patient"); // ignored when computing partition + post.addHeader(BulkDataExportProvider.PARAM_EXPORT_TYPE_FILTER, "Patient?"); + + String locationUrl; + + try (CloseableHttpResponse postResponse = myServer.getHttpClient().execute(post)){ + ourLog.info("Response: {}",postResponse); + assertEquals(202, postResponse.getStatusLine().getStatusCode()); + assertEquals("Accepted", postResponse.getStatusLine().getReasonPhrase()); + + Header locationHeader = postResponse.getFirstHeader(Constants.HEADER_CONTENT_LOCATION); + assertNotNull(locationHeader); + locationUrl = locationHeader.getValue(); + } + + HttpGet get = new HttpGet(locationUrl); + try (CloseableHttpResponse postResponse = myServer.getHttpClient().execute(get)) { + String responseContent = IOUtils.toString(postResponse.getEntity().getContent(), Charsets.UTF_8); + ourLog.info("Response: {}", responseContent); + assertEquals(202, postResponse.getStatusLine().getStatusCode()); + } + } @Test public void testSystemOperation_withNoResourceType_success() throws IOException { HttpPost post = new HttpPost(myServer.getBaseUrl() + "/" + ProviderConstants.OPERATION_EXPORT); diff --git a/hapi-fhir-jpaserver-test-r4b/pom.xml b/hapi-fhir-jpaserver-test-r4b/pom.xml index 1c6ecd9ade3e..f823ff6408d4 100644 --- a/hapi-fhir-jpaserver-test-r4b/pom.xml +++ b/hapi-fhir-jpaserver-test-r4b/pom.xml @@ -6,7 +6,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-test-r5/pom.xml b/hapi-fhir-jpaserver-test-r5/pom.xml index 59539b64a5b5..0519e0e3cdb0 100644 --- a/hapi-fhir-jpaserver-test-r5/pom.xml +++ b/hapi-fhir-jpaserver-test-r5/pom.xml @@ -6,7 +6,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-test-utilities/pom.xml b/hapi-fhir-jpaserver-test-utilities/pom.xml index 4768d7b6bd6d..16bec4775199 100644 --- a/hapi-fhir-jpaserver-test-utilities/pom.xml +++ b/hapi-fhir-jpaserver-test-utilities/pom.xml @@ -6,7 +6,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-jpaserver-uhnfhirtest/pom.xml b/hapi-fhir-jpaserver-uhnfhirtest/pom.xml index 1a9d85404347..50018343e9f0 100644 --- a/hapi-fhir-jpaserver-uhnfhirtest/pom.xml +++ b/hapi-fhir-jpaserver-uhnfhirtest/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-server-cds-hooks/pom.xml b/hapi-fhir-server-cds-hooks/pom.xml index 14d992e95f1a..e6ce0ecbbe3f 100644 --- a/hapi-fhir-server-cds-hooks/pom.xml +++ b/hapi-fhir-server-cds-hooks/pom.xml @@ -7,7 +7,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-server-mdm/pom.xml b/hapi-fhir-server-mdm/pom.xml index 113b6e4ebfc2..aaf30b412842 100644 --- a/hapi-fhir-server-mdm/pom.xml +++ b/hapi-fhir-server-mdm/pom.xml @@ -7,7 +7,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-server-openapi/pom.xml b/hapi-fhir-server-openapi/pom.xml index a1e4b418b51a..77e9b83e559d 100644 --- a/hapi-fhir-server-openapi/pom.xml +++ b/hapi-fhir-server-openapi/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-server/pom.xml b/hapi-fhir-server/pom.xml index 0a966be02158..62b46972bbbc 100644 --- a/hapi-fhir-server/pom.xml +++ b/hapi-fhir-server/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-serviceloaders/hapi-fhir-caching-api/pom.xml b/hapi-fhir-serviceloaders/hapi-fhir-caching-api/pom.xml index 9de1e9f4c62c..385730c10534 100644 --- a/hapi-fhir-serviceloaders/hapi-fhir-caching-api/pom.xml +++ b/hapi-fhir-serviceloaders/hapi-fhir-caching-api/pom.xml @@ -7,7 +7,7 @@ hapi-fhir-serviceloaders ca.uhn.hapi.fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-serviceloaders/hapi-fhir-caching-caffeine/pom.xml b/hapi-fhir-serviceloaders/hapi-fhir-caching-caffeine/pom.xml index f97408aa71a0..e8c47fac843a 100644 --- a/hapi-fhir-serviceloaders/hapi-fhir-caching-caffeine/pom.xml +++ b/hapi-fhir-serviceloaders/hapi-fhir-caching-caffeine/pom.xml @@ -7,7 +7,7 @@ hapi-fhir-serviceloaders ca.uhn.hapi.fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml @@ -21,7 +21,7 @@ ca.uhn.hapi.fhir hapi-fhir-caching-api - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT diff --git a/hapi-fhir-serviceloaders/hapi-fhir-caching-guava/pom.xml b/hapi-fhir-serviceloaders/hapi-fhir-caching-guava/pom.xml index 9a52f75affe0..e86e65734fad 100644 --- a/hapi-fhir-serviceloaders/hapi-fhir-caching-guava/pom.xml +++ b/hapi-fhir-serviceloaders/hapi-fhir-caching-guava/pom.xml @@ -7,7 +7,7 @@ hapi-fhir-serviceloaders ca.uhn.hapi.fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-serviceloaders/hapi-fhir-caching-testing/pom.xml b/hapi-fhir-serviceloaders/hapi-fhir-caching-testing/pom.xml index d5c9d19cf87a..fa616b0d002f 100644 --- a/hapi-fhir-serviceloaders/hapi-fhir-caching-testing/pom.xml +++ b/hapi-fhir-serviceloaders/hapi-fhir-caching-testing/pom.xml @@ -7,7 +7,7 @@ hapi-fhir ca.uhn.hapi.fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../../pom.xml diff --git a/hapi-fhir-serviceloaders/pom.xml b/hapi-fhir-serviceloaders/pom.xml index de9b98d09ed0..c17ee444659c 100644 --- a/hapi-fhir-serviceloaders/pom.xml +++ b/hapi-fhir-serviceloaders/pom.xml @@ -5,7 +5,7 @@ hapi-deployable-pom ca.uhn.hapi.fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/pom.xml index b0f74140c5af..50bf4ba70b39 100644 --- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/pom.xml +++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-autoconfigure/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-apache/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-apache/pom.xml index 341c4fd0d413..85576aebb139 100644 --- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-apache/pom.xml +++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-apache/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir-spring-boot-samples - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT hapi-fhir-spring-boot-sample-client-apache diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-okhttp/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-okhttp/pom.xml index 5d3bd003dc5c..3506e898c353 100644 --- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-okhttp/pom.xml +++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-client-okhttp/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir-spring-boot-samples - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-server-jersey/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-server-jersey/pom.xml index 6429c18c1300..7b2e450a995d 100644 --- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-server-jersey/pom.xml +++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/hapi-fhir-spring-boot-sample-server-jersey/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir-spring-boot-samples - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/pom.xml index 97b722014255..d3303cdcf8b5 100644 --- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/pom.xml +++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-samples/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir-spring-boot - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT diff --git a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-starter/pom.xml b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-starter/pom.xml index 82280e80b6a3..9b02cd16afff 100644 --- a/hapi-fhir-spring-boot/hapi-fhir-spring-boot-starter/pom.xml +++ b/hapi-fhir-spring-boot/hapi-fhir-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-spring-boot/pom.xml b/hapi-fhir-spring-boot/pom.xml index 6706cd9259f4..ae91db916093 100644 --- a/hapi-fhir-spring-boot/pom.xml +++ b/hapi-fhir-spring-boot/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-sql-migrate/pom.xml b/hapi-fhir-sql-migrate/pom.xml index 6a206776c556..df128579d9ab 100644 --- a/hapi-fhir-sql-migrate/pom.xml +++ b/hapi-fhir-sql-migrate/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-storage-batch2-jobs/pom.xml b/hapi-fhir-storage-batch2-jobs/pom.xml index 63d1b4263d67..29af596c723d 100644 --- a/hapi-fhir-storage-batch2-jobs/pom.xml +++ b/hapi-fhir-storage-batch2-jobs/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-storage-batch2-test-utilities/pom.xml b/hapi-fhir-storage-batch2-test-utilities/pom.xml index 454e9cf36b7f..547f339257d6 100644 --- a/hapi-fhir-storage-batch2-test-utilities/pom.xml +++ b/hapi-fhir-storage-batch2-test-utilities/pom.xml @@ -7,7 +7,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-storage-batch2/pom.xml b/hapi-fhir-storage-batch2/pom.xml index 9d205053e6d6..05a0d8217421 100644 --- a/hapi-fhir-storage-batch2/pom.xml +++ b/hapi-fhir-storage-batch2/pom.xml @@ -7,7 +7,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-storage-cr/pom.xml b/hapi-fhir-storage-cr/pom.xml index b9fa0da3fda0..31acaba78138 100644 --- a/hapi-fhir-storage-cr/pom.xml +++ b/hapi-fhir-storage-cr/pom.xml @@ -7,7 +7,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-storage-cr/src/test/resources/BCSEHEDISMY2022-bundle.json b/hapi-fhir-storage-cr/src/test/resources/BCSEHEDISMY2022-bundle.json index 59ac27f84f0e..0666c3df4161 100644 --- a/hapi-fhir-storage-cr/src/test/resources/BCSEHEDISMY2022-bundle.json +++ b/hapi-fhir-storage-cr/src/test/resources/BCSEHEDISMY2022-bundle.json @@ -1843,6 +1843,7 @@ "guidance": "* For Medicare plans, I-SNP and LTI exclusions are not included in the measure calculation logic and need to be programmed manually. Administrative data must be used for these exclusions.\n*Non-administrative data may be used for the frailty and advanced illness exclusion.\n

**Allocation:**
The member was enrolled with a medical benefit throughout the Participation Period.

No more than one gap in enrollment of up to 45 days for each full calendar year of the Participation Period (i.e., the Measurement Period and the year prior to the Measurement Period).

No gaps in enrollment are allowed from October 1 two years prior to the Measurement Period through December 31 two years prior to the Measurement Period.

**Reporting:**
For Medicare plans, the SES stratifications are mutually exclusive. NCQA calculates a total rate for Medicare plans by adding all six Medicare stratifications.

SES and product line stratifications are not included in the measure calculation logic and need to be programmed manually.

**Stratification:**
1. Commercial.\n2. Medicaid.\n3. Medicare: Non-LIS/DE, Nondisability.\n4. Medicare: LIS/DE.\n5. Medicare: Disability\n6. Medicare: LIS/DE and Disability.\n7. Medicare: Other.\n8. Medicare: Unknown.

", "group": [ { "population": [ { + "id": "initial-population", "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/measure-population", @@ -1856,6 +1857,7 @@ "expression": "Initial Population" } }, { + "id": "denominator", "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/measure-population", @@ -1869,6 +1871,7 @@ "expression": "Denominator" } }, { + "id": "denominator-exclusion", "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/measure-population", @@ -1882,6 +1885,7 @@ "expression": "Exclusions" } }, { + "id": "numerator", "code": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/measure-population", @@ -1897,6 +1901,7 @@ } ] } ], "supplementalData": [ { + "id": "Enrolled-During-Participation-Period", "code": { "text": "Enrolled During Participation Period" }, @@ -1911,6 +1916,7 @@ "expression": "Enrolled During Participation Period" } }, { + "id": "participation-period", "code": { "text": "Participation Period" }, diff --git a/hapi-fhir-storage-cr/src/test/resources/ColorectalCancerScreeningsFHIR-bundle.json b/hapi-fhir-storage-cr/src/test/resources/ColorectalCancerScreeningsFHIR-bundle.json index 87864f5254db..b48340e557e8 100644 --- a/hapi-fhir-storage-cr/src/test/resources/ColorectalCancerScreeningsFHIR-bundle.json +++ b/hapi-fhir-storage-cr/src/test/resources/ColorectalCancerScreeningsFHIR-bundle.json @@ -147712,7 +147712,7 @@ } ], "library": [ - "http://ecqi.healthit.gov/ecqms/Library/ColorectalCancerScreeningsFHIR|0.0.001" + "http://ecqi.healthit.gov/ecqms/Library/ColorectalCancerScreeningsFHIR" ], "disclaimer": "The performance Measure is not a clinical guideline and does not establish a standard of medical care, and has not been tested for all potential applications. THE MEASURE AND SPECIFICATIONS ARE PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND.\n \nDue to technical limitations, registered trademarks are indicated by (R) or [R] and unregistered trademarks are indicated by (TM) or [TM].", "scoring": { diff --git a/hapi-fhir-storage-cr/src/test/resources/Exm104FhirR4MeasureBundle.json b/hapi-fhir-storage-cr/src/test/resources/Exm104FhirR4MeasureBundle.json index 2768880210dc..96f359774128 100644 --- a/hapi-fhir-storage-cr/src/test/resources/Exm104FhirR4MeasureBundle.json +++ b/hapi-fhir-storage-cr/src/test/resources/Exm104FhirR4MeasureBundle.json @@ -140,7 +140,7 @@ } ], "library": [ - "http://localhost:8080/fhir/Library/library-EXM104|8.2.000" + "http://localhost:8080/fhir/Library/EXM104|8.2.000" ], "disclaimer": "These performance measures are not clinical guidelines and do not establish a standard of medical care, and have not been tested for all potential applications. The measures and specifications are provided without warranty.", "scoring": { @@ -177,6 +177,7 @@ "id": "group-1", "population": [ { + "id": "initial-population", "code": { "coding": [ { @@ -192,6 +193,7 @@ } }, { + "id": "numerator", "code": { "coding": [ { @@ -207,6 +209,7 @@ } }, { + "id": "denominator", "code": { "coding": [ { @@ -222,6 +225,7 @@ } }, { + "id": "denominator-exclusion", "code": { "coding": [ { @@ -237,6 +241,7 @@ } }, { + "id": "denominator-exception", "code": { "coding": [ { @@ -341,7 +346,7 @@ { "resource": { "resourceType": "Library", - "id": "library-EXM104", + "id": "EXM104", "extension": [ { "url": "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-softwaresystem", @@ -350,7 +355,7 @@ } } ], - "url": "http://localhost:8080/fhir/Library/library-EXM104", + "url": "http://localhost:8080/fhir/Library/EXM104", "version": "8.2.000", "name": "library-EXM104", "status": "active", @@ -600,7 +605,7 @@ }, "request": { "method": "PUT", - "url": "Library/library-EXM104" + "url": "Library/EXM104" } }, { diff --git a/hapi-fhir-storage-cr/src/test/resources/largeValueSetMeasureTest-Bundle.json b/hapi-fhir-storage-cr/src/test/resources/largeValueSetMeasureTest-Bundle.json index a4785ce25342..1e20e8e31dfa 100644 --- a/hapi-fhir-storage-cr/src/test/resources/largeValueSetMeasureTest-Bundle.json +++ b/hapi-fhir-storage-cr/src/test/resources/largeValueSetMeasureTest-Bundle.json @@ -1377,6 +1377,7 @@ "id": "group-1", "population": [ { + "id": "initial-population", "code": { "coding": [ { @@ -1392,6 +1393,7 @@ } }, { + "id": "denominator", "code": { "coding": [ { @@ -1407,6 +1409,7 @@ } }, { + "id": "numerator", "code": { "coding": [ { diff --git a/hapi-fhir-storage-cr/src/test/resources/multiversion/EXM124-7.0.000-bundle.json b/hapi-fhir-storage-cr/src/test/resources/multiversion/EXM124-7.0.000-bundle.json index 65b48a37b9e9..e33706679ef9 100644 --- a/hapi-fhir-storage-cr/src/test/resources/multiversion/EXM124-7.0.000-bundle.json +++ b/hapi-fhir-storage-cr/src/test/resources/multiversion/EXM124-7.0.000-bundle.json @@ -1372,6 +1372,7 @@ "id": "group-1", "population": [ { + "id": "initial-population", "code": { "coding": [ { @@ -1387,6 +1388,7 @@ } }, { + "id": "numerator", "code": { "coding": [ { @@ -1402,6 +1404,7 @@ } }, { + "id": "denominator", "code": { "coding": [ { @@ -1417,6 +1420,7 @@ } }, { + "id": "denominator-exclusion", "code": { "coding": [ { @@ -1436,6 +1440,7 @@ ], "supplementalData": [ { + "id": "sde-ethnicity", "code": { "text": "sde-ethnicity" }, @@ -1455,6 +1460,7 @@ } }, { + "id": "sde-payer", "code": { "text": "sde-payer" }, @@ -1474,6 +1480,7 @@ } }, { + "id": "sde-race", "code": { "text": "sde-race" }, @@ -1493,6 +1500,7 @@ } }, { + "id": "sde-sex", "code": { "text": "sde-sex" }, diff --git a/hapi-fhir-storage-cr/src/test/resources/multiversion/EXM124-9.0.000-bundle.json b/hapi-fhir-storage-cr/src/test/resources/multiversion/EXM124-9.0.000-bundle.json index afec4ed9ae9a..1e940988fd5c 100644 --- a/hapi-fhir-storage-cr/src/test/resources/multiversion/EXM124-9.0.000-bundle.json +++ b/hapi-fhir-storage-cr/src/test/resources/multiversion/EXM124-9.0.000-bundle.json @@ -1372,6 +1372,7 @@ "id": "group-1", "population": [ { + "id": "initial-population", "code": { "coding": [ { @@ -1387,6 +1388,7 @@ } }, { + "id": "numerator", "code": { "coding": [ { @@ -1402,6 +1404,7 @@ } }, { + "id": "denominator", "code": { "coding": [ { @@ -1417,6 +1420,7 @@ } }, { + "id": "denominator-exclusion", "code": { "coding": [ { @@ -1436,6 +1440,7 @@ ], "supplementalData": [ { + "id": "sde-ethnicity", "code": { "text": "sde-ethnicity" }, @@ -1455,6 +1460,7 @@ } }, { + "id": "sde-payer", "code": { "text": "sde-payer" }, @@ -1474,6 +1480,7 @@ } }, { + "id": "sde-race", "code": { "text": "sde-race" }, @@ -1493,6 +1500,7 @@ } }, { + "id": "sde-sex", "code": { "text": "sde-sex" }, diff --git a/hapi-fhir-storage-mdm/pom.xml b/hapi-fhir-storage-mdm/pom.xml index 52087f84fa8a..d3c58df6f674 100644 --- a/hapi-fhir-storage-mdm/pom.xml +++ b/hapi-fhir-storage-mdm/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-storage-test-utilities/pom.xml b/hapi-fhir-storage-test-utilities/pom.xml index 7666edd31df2..65d0de719b5e 100644 --- a/hapi-fhir-storage-test-utilities/pom.xml +++ b/hapi-fhir-storage-test-utilities/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-storage/pom.xml b/hapi-fhir-storage/pom.xml index 83d5fa7d4c69..a05219b43f74 100644 --- a/hapi-fhir-storage/pom.xml +++ b/hapi-fhir-storage/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-storage/src/main/java/ca/uhn/fhir/jpa/interceptor/PatientIdPartitionInterceptor.java b/hapi-fhir-storage/src/main/java/ca/uhn/fhir/jpa/interceptor/PatientIdPartitionInterceptor.java index c563f19e9d9b..2a0aceafd7a1 100644 --- a/hapi-fhir-storage/src/main/java/ca/uhn/fhir/jpa/interceptor/PatientIdPartitionInterceptor.java +++ b/hapi-fhir-storage/src/main/java/ca/uhn/fhir/jpa/interceptor/PatientIdPartitionInterceptor.java @@ -36,6 +36,7 @@ import ca.uhn.fhir.rest.api.server.RequestDetails; import ca.uhn.fhir.rest.param.ReferenceParam; import ca.uhn.fhir.rest.server.exceptions.MethodNotAllowedException; +import ca.uhn.fhir.rest.server.provider.ProviderConstants; import jakarta.annotation.Nonnull; import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.r4.model.IdType; @@ -151,7 +152,12 @@ public RequestPartitionId identifyForRead( break; case EXTENDED_OPERATION_SERVER: - return provideNonPatientSpecificQueryResponse(theReadDetails); + String extendedOp = theReadDetails.getExtendedOperationName(); + if (ProviderConstants.OPERATION_EXPORT.equals(extendedOp) + || ProviderConstants.OPERATION_EXPORT_POLL_STATUS.equals(extendedOp)) { + return provideNonPatientSpecificQueryResponse(theReadDetails); + } + break; default: // nothing } diff --git a/hapi-fhir-structures-dstu2.1/pom.xml b/hapi-fhir-structures-dstu2.1/pom.xml index 5feea64c5ef7..bbabf3e42d2b 100644 --- a/hapi-fhir-structures-dstu2.1/pom.xml +++ b/hapi-fhir-structures-dstu2.1/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-structures-dstu2/pom.xml b/hapi-fhir-structures-dstu2/pom.xml index e09675b0c14c..0d92336749a5 100644 --- a/hapi-fhir-structures-dstu2/pom.xml +++ b/hapi-fhir-structures-dstu2/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-structures-dstu3/pom.xml b/hapi-fhir-structures-dstu3/pom.xml index 24563186f259..35aea6553c93 100644 --- a/hapi-fhir-structures-dstu3/pom.xml +++ b/hapi-fhir-structures-dstu3/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-structures-hl7org-dstu2/pom.xml b/hapi-fhir-structures-hl7org-dstu2/pom.xml index edede0feca82..760a8f800c1c 100644 --- a/hapi-fhir-structures-hl7org-dstu2/pom.xml +++ b/hapi-fhir-structures-hl7org-dstu2/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-structures-r4/pom.xml b/hapi-fhir-structures-r4/pom.xml index 1dcc4bb483b8..5192a7cbaad3 100644 --- a/hapi-fhir-structures-r4/pom.xml +++ b/hapi-fhir-structures-r4/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-structures-r4b/pom.xml b/hapi-fhir-structures-r4b/pom.xml index e75f5d5931d4..fbc83bd2e6f3 100644 --- a/hapi-fhir-structures-r4b/pom.xml +++ b/hapi-fhir-structures-r4b/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-structures-r5/pom.xml b/hapi-fhir-structures-r5/pom.xml index d3eaea31a2db..4b1356f4f355 100644 --- a/hapi-fhir-structures-r5/pom.xml +++ b/hapi-fhir-structures-r5/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-test-utilities/pom.xml b/hapi-fhir-test-utilities/pom.xml index a040dbbe3b83..331972a559b7 100644 --- a/hapi-fhir-test-utilities/pom.xml +++ b/hapi-fhir-test-utilities/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-testpage-overlay/pom.xml b/hapi-fhir-testpage-overlay/pom.xml index 3cc1275c96a6..b998896b0559 100644 --- a/hapi-fhir-testpage-overlay/pom.xml +++ b/hapi-fhir-testpage-overlay/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-fhir-validation-resources-dstu2.1/pom.xml b/hapi-fhir-validation-resources-dstu2.1/pom.xml index f7263c834886..869b2d098d53 100644 --- a/hapi-fhir-validation-resources-dstu2.1/pom.xml +++ b/hapi-fhir-validation-resources-dstu2.1/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-validation-resources-dstu2/pom.xml b/hapi-fhir-validation-resources-dstu2/pom.xml index 2dcf14738f53..3d369c796bee 100644 --- a/hapi-fhir-validation-resources-dstu2/pom.xml +++ b/hapi-fhir-validation-resources-dstu2/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-validation-resources-dstu3/pom.xml b/hapi-fhir-validation-resources-dstu3/pom.xml index 97aa6040159f..b297010c7d78 100644 --- a/hapi-fhir-validation-resources-dstu3/pom.xml +++ b/hapi-fhir-validation-resources-dstu3/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-validation-resources-r4/pom.xml b/hapi-fhir-validation-resources-r4/pom.xml index 2b42c8253b9e..2bf39d8f2de5 100644 --- a/hapi-fhir-validation-resources-r4/pom.xml +++ b/hapi-fhir-validation-resources-r4/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-validation-resources-r4b/pom.xml b/hapi-fhir-validation-resources-r4b/pom.xml index c6daff498bbd..1b7d519f581d 100644 --- a/hapi-fhir-validation-resources-r4b/pom.xml +++ b/hapi-fhir-validation-resources-r4b/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-validation-resources-r5/pom.xml b/hapi-fhir-validation-resources-r5/pom.xml index 3524ed588d02..80a6a9bc5c37 100644 --- a/hapi-fhir-validation-resources-r5/pom.xml +++ b/hapi-fhir-validation-resources-r5/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-validation/pom.xml b/hapi-fhir-validation/pom.xml index 53280b3951e0..fd0c291a98b7 100644 --- a/hapi-fhir-validation/pom.xml +++ b/hapi-fhir-validation/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-deployable-pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../hapi-deployable-pom/pom.xml diff --git a/hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/RemoteTerminologyServiceValidationSupport.java b/hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/RemoteTerminologyServiceValidationSupport.java index 08f94902a66d..2e69b1a46cf7 100644 --- a/hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/RemoteTerminologyServiceValidationSupport.java +++ b/hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/RemoteTerminologyServiceValidationSupport.java @@ -12,7 +12,6 @@ import ca.uhn.fhir.rest.api.SummaryEnum; import ca.uhn.fhir.rest.client.api.IGenericClient; import ca.uhn.fhir.rest.gclient.IQuery; -import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; import ca.uhn.fhir.util.BundleUtil; import ca.uhn.fhir.util.ParametersUtil; import jakarta.annotation.Nonnull; @@ -314,8 +313,10 @@ private static BaseConceptProperty createBaseConceptPropertyDstu3(List values conceptProperty = new CodingConceptProperty( propertyName, coding.getSystem(), coding.getCode(), coding.getDisplay()); break; + // TODO: add other property types as per FHIR spec https://github.com/hapifhir/hapi-fhir/issues/5699 default: - throw new InternalErrorException(Msg.code(2452) + "Property type " + fhirType + " is not supported."); + // other types will not fail for Remote Terminology + conceptProperty = new StringConceptProperty(propertyName, value.toString()); } return conceptProperty; } @@ -467,8 +472,10 @@ private static BaseConceptProperty createConceptPropertyR4(final String theName, conceptProperty = new CodingConceptProperty(theName, coding.getSystem(), coding.getCode(), coding.getDisplay()); break; + // TODO: add other property types as per FHIR spec https://github.com/hapifhir/hapi-fhir/issues/5699 default: - throw new InternalErrorException(Msg.code(2453) + "Property type " + fhirType + " is not supported."); + // other types will not fail for Remote Terminology + conceptProperty = new StringConceptProperty(theName, theValue.toString()); } return conceptProperty; } diff --git a/hapi-fhir-validation/src/test/java/org/hl7/fhir/common/hapi/validation/ILookupCodeTest.java b/hapi-fhir-validation/src/test/java/org/hl7/fhir/common/hapi/validation/ILookupCodeTest.java index 966a795eef3e..0b4624d733f2 100644 --- a/hapi-fhir-validation/src/test/java/org/hl7/fhir/common/hapi/validation/ILookupCodeTest.java +++ b/hapi-fhir-validation/src/test/java/org/hl7/fhir/common/hapi/validation/ILookupCodeTest.java @@ -39,44 +39,11 @@ interface IValidationTest { IResourceProvider getCodeSystemProvider(); } - @Nested - interface ILookupCodeUnsupportedPropertyTypeTest extends IValidationTest { - - String getInvalidValueErrorCode(); - - String getInvalidValueErrorCodeForConvert(); - - @Override - IMySimpleCodeSystemProvider getCodeSystemProvider(); - - @Test - default void testLookupCode_forCodeSystemWithPropertyInvalidValue_throwsException() { - // test and verify - try { - getService().lookupCode(null, new LookupCodeRequest(CODE_SYSTEM, CODE, LANGUAGE, null)); - fail(); - } catch (InternalErrorException e) { - assertTrue(e.getMessage().contains(getInvalidValueErrorCode() + ": Property type " + getCodeSystemProvider().getPropertyValue().fhirType() + " is not supported")); - } - } - - @Test - default void testCreateConceptProperty_forCodeSystemWithPropertyInvalidValue_throwsException() { - // test and verify - try { - RemoteTerminologyServiceValidationSupport.createConceptProperty("property", getCodeSystemProvider().getPropertyValue()); - fail(); - } catch (InternalErrorException e) { - assertTrue(e.getMessage().contains(getInvalidValueErrorCodeForConvert() + ": Property type " + getCodeSystemProvider().getPropertyValue().fhirType() + " is not supported")); - } - } - } - @Nested interface ILookupCodeSupportedPropertyTest extends IValidationTest { IMyCodeSystemProvider getCodeSystemProvider(); - Stream getEmptyPropertyValues(); + Stream getEmptyPropertyValues(); Stream getPropertyValues(); diff --git a/hapi-fhir-validation/src/test/java/org/hl7/fhir/dstu3/hapi/validation/LookupCodeDstu3Test.java b/hapi-fhir-validation/src/test/java/org/hl7/fhir/dstu3/hapi/validation/LookupCodeDstu3Test.java index 6bf78229f1e7..404d971928e9 100644 --- a/hapi-fhir-validation/src/test/java/org/hl7/fhir/dstu3/hapi/validation/LookupCodeDstu3Test.java +++ b/hapi-fhir-validation/src/test/java/org/hl7/fhir/dstu3/hapi/validation/LookupCodeDstu3Test.java @@ -4,17 +4,14 @@ import ca.uhn.fhir.context.support.IValidationSupport; import ca.uhn.fhir.context.support.IValidationSupport.ConceptDesignation; import ca.uhn.fhir.context.support.IValidationSupport.LookupCodeResult; -import ca.uhn.fhir.i18n.Msg; import ca.uhn.fhir.jpa.model.util.JpaConstants; import ca.uhn.fhir.rest.annotation.Operation; import ca.uhn.fhir.rest.annotation.OperationParam; import ca.uhn.fhir.rest.api.server.RequestDetails; import ca.uhn.fhir.rest.client.interceptor.LoggingInterceptor; -import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; import ca.uhn.fhir.test.utilities.server.RestfulServerExtension; import jakarta.servlet.http.HttpServletRequest; import org.hl7.fhir.common.hapi.validation.ILookupCodeTest.ILookupCodeSupportedPropertyTest; -import org.hl7.fhir.common.hapi.validation.ILookupCodeTest.ILookupCodeUnsupportedPropertyTypeTest; import org.hl7.fhir.common.hapi.validation.ILookupCodeTest.IMyCodeSystemProvider; import org.hl7.fhir.common.hapi.validation.ILookupCodeTest.IMySimpleCodeSystemProvider; import org.hl7.fhir.common.hapi.validation.support.RemoteTerminologyServiceValidationSupport; @@ -29,12 +26,17 @@ import org.hl7.fhir.dstu3.model.UriType; import org.hl7.fhir.instance.model.api.IBaseDatatype; import org.hl7.fhir.instance.model.api.IBaseResource; +import org.hl7.fhir.r4.model.DateTimeType; +import org.hl7.fhir.r4.model.DecimalType; +import org.hl7.fhir.r4.model.InstantType; +import org.hl7.fhir.r4.model.IntegerType; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.provider.Arguments; +import java.util.Calendar; import java.util.List; import java.util.stream.Stream; @@ -57,40 +59,6 @@ public void before() { mySvc.addClientInterceptor(new LoggingInterceptor(true)); } - @TestInstance(TestInstance.Lifecycle.PER_CLASS) - @Nested - class LookupCodeUnsupportedPropertyTypeDstu3Test implements ILookupCodeUnsupportedPropertyTypeTest { - private final MySimplePropertyCodeSystemProviderDstu3 myMySimplePropertyCodeSystemProvider = new MySimplePropertyCodeSystemProviderDstu3(); - - @Override - public IMySimpleCodeSystemProvider getCodeSystemProvider() { - return myMySimplePropertyCodeSystemProvider; - } - - @Override - public RemoteTerminologyServiceValidationSupport getService() { - return mySvc; - } - - @Override - public String getInvalidValueErrorCode() { - return "HAPI-2450"; - } - - @Override - public String getInvalidValueErrorCodeForConvert() { - return "HAPI-2451"; - } - - @BeforeEach - public void before() { - // TODO: use another type when "code" is added to the supported types - myMySimplePropertyCodeSystemProvider.myPropertyName = "somePropertyName"; - myMySimplePropertyCodeSystemProvider.myPropertyValue = new CodeType("someCode"); - ourRestfulServerExtension.getRestfulServer().registerProvider(myMySimplePropertyCodeSystemProvider); - } - } - @TestInstance(TestInstance.Lifecycle.PER_CLASS) @Nested class ILookupCodeSupportedPropertyDstu3Test implements ILookupCodeSupportedPropertyTest { @@ -116,8 +84,13 @@ public void verifyProperty(BaseConceptProperty theConceptProperty, String theExp String type = theConceptProperty.getType(); switch (type) { case IValidationSupport.TYPE_STRING -> { - assertTrue(theExpectedValue instanceof StringType); - StringType stringValue = (StringType) theExpectedValue; + if (!(theExpectedValue instanceof StringType stringValue)) { + // TODO: remove this branch to test other property types as per FHIR spec https://github.com/hapifhir/hapi-fhir/issues/5699 + IValidationSupport.StringConceptProperty stringConceptProperty = (IValidationSupport.StringConceptProperty) theConceptProperty; + assertEquals(theExpectedValue.toString(), stringConceptProperty.getValue()); + break; + } + // StringType stringValue = (StringType) theExpectedValue; assertTrue(theConceptProperty instanceof StringConceptProperty); StringConceptProperty stringConceptProperty = (StringConceptProperty) theConceptProperty; assertEquals(stringValue.getValue(), stringConceptProperty.getValue()); @@ -131,8 +104,10 @@ public void verifyProperty(BaseConceptProperty theConceptProperty, String theExp assertEquals(coding.getSystem(), codingConceptProperty.getCodeSystem()); assertEquals(coding.getDisplay(), codingConceptProperty.getDisplay()); } - default -> - throw new InternalErrorException(Msg.code(2451) + "Property type " + type + " is not supported."); + default -> { + IValidationSupport.StringConceptProperty stringConceptProperty = (IValidationSupport.StringConceptProperty) theConceptProperty; + assertEquals(theExpectedValue.toString(), stringConceptProperty.getValue()); + } } } @@ -149,8 +124,27 @@ public Stream getEmptyPropertyValues() { public Stream getPropertyValues() { return Stream.of( + // FHIR DSTU3 spec types Arguments.arguments(new StringType("value")), - Arguments.arguments(new Coding("code", "system", "display")) + Arguments.arguments(new Coding("code", "system", "display")), + Arguments.arguments(new CodeType("code")), + Arguments.arguments(new BooleanType(true)), + Arguments.arguments(new IntegerType(1)), + Arguments.arguments(new DateTimeType(Calendar.getInstance())), + // other types will also not fail for Remote Terminology + Arguments.arguments(new DecimalType(1.1)), + Arguments.arguments(new InstantType(Calendar.getInstance())), + Arguments.arguments(new Type() { + @Override + protected Type typedCopy() { + return this; + } + + @Override + public String toString() { + return "randomType"; + } + }) ); } diff --git a/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/LookupCodeR4Test.java b/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/LookupCodeR4Test.java index 9fb662a8a3b1..f01e66c16c2d 100644 --- a/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/LookupCodeR4Test.java +++ b/hapi-fhir-validation/src/test/java/org/hl7/fhir/r4/validation/LookupCodeR4Test.java @@ -2,17 +2,14 @@ import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.support.IValidationSupport; -import ca.uhn.fhir.i18n.Msg; import ca.uhn.fhir.jpa.model.util.JpaConstants; import ca.uhn.fhir.rest.annotation.Operation; import ca.uhn.fhir.rest.annotation.OperationParam; import ca.uhn.fhir.rest.api.server.RequestDetails; import ca.uhn.fhir.rest.client.interceptor.LoggingInterceptor; -import ca.uhn.fhir.rest.server.exceptions.InternalErrorException; import ca.uhn.fhir.test.utilities.server.RestfulServerExtension; import jakarta.servlet.http.HttpServletRequest; import org.hl7.fhir.common.hapi.validation.ILookupCodeTest.ILookupCodeSupportedPropertyTest; -import org.hl7.fhir.common.hapi.validation.ILookupCodeTest.ILookupCodeUnsupportedPropertyTypeTest; import org.hl7.fhir.common.hapi.validation.ILookupCodeTest.IMyCodeSystemProvider; import org.hl7.fhir.common.hapi.validation.ILookupCodeTest.IMySimpleCodeSystemProvider; import org.hl7.fhir.common.hapi.validation.support.RemoteTerminologyServiceValidationSupport; @@ -23,6 +20,10 @@ import org.hl7.fhir.r4.model.CodeSystem; import org.hl7.fhir.r4.model.CodeType; import org.hl7.fhir.r4.model.Coding; +import org.hl7.fhir.r4.model.DateTimeType; +import org.hl7.fhir.r4.model.DecimalType; +import org.hl7.fhir.r4.model.InstantType; +import org.hl7.fhir.r4.model.IntegerType; import org.hl7.fhir.r4.model.Parameters; import org.hl7.fhir.r4.model.StringType; import org.hl7.fhir.r4.model.Type; @@ -33,6 +34,7 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.provider.Arguments; +import java.util.Calendar; import java.util.List; import java.util.stream.Stream; @@ -52,41 +54,6 @@ public void before() { mySvc.addClientInterceptor(new LoggingInterceptor(true)); } - @TestInstance(TestInstance.Lifecycle.PER_CLASS) - @Nested - class LookupCodeUnsupportedPropertyTypeR4Test implements ILookupCodeUnsupportedPropertyTypeTest { - private final MySimplePropertyCodeSystemProviderR4 myMySimplePropertyCodeSystemProvider = new MySimplePropertyCodeSystemProviderR4(); - - @Override - public IMySimpleCodeSystemProvider getCodeSystemProvider() { - return myMySimplePropertyCodeSystemProvider; - } - - @Override - public RemoteTerminologyServiceValidationSupport getService() { - return mySvc; - } - - @Override - public String getInvalidValueErrorCode() { - return "HAPI-2452"; - } - - - @Override - public String getInvalidValueErrorCodeForConvert() { - return "HAPI-2453"; - } - - @BeforeEach - public void before() { - // TODO: use another type when "code" is added to the supported types - myMySimplePropertyCodeSystemProvider.myPropertyName = "somePropertyName"; - myMySimplePropertyCodeSystemProvider.myPropertyValue = new CodeType("someCode"); - ourRestfulServerExtension.getRestfulServer().registerProvider(myMySimplePropertyCodeSystemProvider); - } - } - @TestInstance(TestInstance.Lifecycle.PER_CLASS) @Nested class ILookupCodeSupportedPropertyR4Test implements ILookupCodeSupportedPropertyTest { @@ -113,8 +80,13 @@ public void verifyProperty(IValidationSupport.BaseConceptProperty theConceptProp String type = theConceptProperty.getType(); switch (type) { case IValidationSupport.TYPE_STRING -> { - assertTrue(theExpectedValue instanceof StringType); - StringType stringValue = (StringType) theExpectedValue; + if (!(theExpectedValue instanceof StringType stringValue)) { + // TODO: remove this branch to test other property types as per FHIR spec https://github.com/hapifhir/hapi-fhir/issues/5699 + IValidationSupport.StringConceptProperty stringConceptProperty = (IValidationSupport.StringConceptProperty) theConceptProperty; + assertEquals(theExpectedValue.toString(), stringConceptProperty.getValue()); + break; + } + // StringType stringValue = (StringType) theExpectedValue; assertTrue(theConceptProperty instanceof IValidationSupport.StringConceptProperty); IValidationSupport.StringConceptProperty stringConceptProperty = (IValidationSupport.StringConceptProperty) theConceptProperty; assertEquals(stringValue.getValue(), stringConceptProperty.getValue()); @@ -128,8 +100,10 @@ public void verifyProperty(IValidationSupport.BaseConceptProperty theConceptProp assertEquals(coding.getSystem(), codingConceptProperty.getCodeSystem()); assertEquals(coding.getDisplay(), codingConceptProperty.getDisplay()); } - default -> - throw new InternalErrorException(Msg.code(2451) + "Property type " + type + " is not supported."); + default -> { + IValidationSupport.StringConceptProperty stringConceptProperty = (IValidationSupport.StringConceptProperty) theConceptProperty; + assertEquals(theExpectedValue.toString(), stringConceptProperty.getValue()); + } } } @@ -146,13 +120,29 @@ public Stream getEmptyPropertyValues() { public Stream getPropertyValues() { return Stream.of( + // FHIR R4 spec types Arguments.arguments(new StringType("value")), - Arguments.arguments(new Coding("code", "system", "display")) + Arguments.arguments(new Coding("code", "system", "display")), + Arguments.arguments(new CodeType("code")), + Arguments.arguments(new BooleanType(true)), + Arguments.arguments(new IntegerType(1)), + Arguments.arguments(new DateTimeType(Calendar.getInstance())), + Arguments.arguments(new DecimalType(1.1)), + // other types will also not fail for Remote Terminology + Arguments.arguments(new InstantType(Calendar.getInstance())), + Arguments.arguments(new Type() { + @Override + protected Type typedCopy() { + return this; + } + @Override + public String toString() { + return "randomType"; + } + }) ); } - - public Stream getDesignations() { return Stream.of( Arguments.arguments(new IValidationSupport.ConceptDesignation().setLanguage("en").setUseCode("code1").setUseSystem("system-1").setUseDisplay("display").setValue("some value")), diff --git a/hapi-tinder-plugin/pom.xml b/hapi-tinder-plugin/pom.xml index 5b0ff5ea7274..202e0c5e60f1 100644 --- a/hapi-tinder-plugin/pom.xml +++ b/hapi-tinder-plugin/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/hapi-tinder-test/pom.xml b/hapi-tinder-test/pom.xml index 1baa86aedee1..1bcfe10762e2 100644 --- a/hapi-tinder-test/pom.xml +++ b/hapi-tinder-test/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index b219abc329c7..30a683dc67ac 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ ca.uhn.hapi.fhir hapi-fhir pom - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT HAPI-FHIR An open-source implementation of the FHIR specification in Java. @@ -1002,7 +1002,7 @@ 1.0.8 - 3.0.0-PRE14 + 3.0.0-PRE17 5.4.1 diff --git a/release-pipeline.yml b/release-pipeline.yml index 6142cc53b916..766456fce095 100644 --- a/release-pipeline.yml +++ b/release-pipeline.yml @@ -140,7 +140,9 @@ jobs: # want to fail fast if there is an issue, and avoid running the tests more than once, so it doesn't take all day. timeoutInMinutes: 360 dependsOn: ['get_release_version', 'get_branch_id'] - container: maven:3.9-eclipse-temurin-21-jammy + container: + image: smilecdr/hapi-build:latest + steps: - task: Cache@2 inputs: @@ -153,7 +155,7 @@ jobs: releaseType: stable - task: Maven@3 env: - JAVA_HOME_11_X64: /usr/java/openjdk + JAVA_HOME_11_X64: /opt/java/openjdk displayName: Checkstyle Build inputs: mavenPomFile: 'hapi-fhir-checkstyle/pom.xml' diff --git a/tests/hapi-fhir-base-test-jaxrsserver-kotlin/pom.xml b/tests/hapi-fhir-base-test-jaxrsserver-kotlin/pom.xml index 5eb7176ab8f6..bcccdf8b2dce 100644 --- a/tests/hapi-fhir-base-test-jaxrsserver-kotlin/pom.xml +++ b/tests/hapi-fhir-base-test-jaxrsserver-kotlin/pom.xml @@ -7,7 +7,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../../pom.xml diff --git a/tests/hapi-fhir-base-test-mindeps-client/pom.xml b/tests/hapi-fhir-base-test-mindeps-client/pom.xml index a3a7e4f29f60..b6c7b5b3a09f 100644 --- a/tests/hapi-fhir-base-test-mindeps-client/pom.xml +++ b/tests/hapi-fhir-base-test-mindeps-client/pom.xml @@ -4,7 +4,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../../pom.xml diff --git a/tests/hapi-fhir-base-test-mindeps-server/pom.xml b/tests/hapi-fhir-base-test-mindeps-server/pom.xml index 935b0881c295..8d82179e717d 100644 --- a/tests/hapi-fhir-base-test-mindeps-server/pom.xml +++ b/tests/hapi-fhir-base-test-mindeps-server/pom.xml @@ -5,7 +5,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.1.4-SNAPSHOT + 7.1.5-SNAPSHOT ../../pom.xml