diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java b/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java index 9931bfb..729b873 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java @@ -3,20 +3,19 @@ package ca.uhn.fhir.jpa.starter; import ca.uhn.fhir.context.FhirVersionEnum; import ca.uhn.fhir.jpa.api.config.DaoConfig.ClientIdStrategyEnum; +import ca.uhn.fhir.jpa.model.entity.NormalizedQuantitySearchLevel; import ca.uhn.fhir.rest.api.EncodingEnum; +import com.google.common.collect.ImmutableList; +import org.hl7.fhir.r4.model.Bundle; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Configuration; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; -import com.google.common.collect.ImmutableList; -import org.hl7.fhir.r4.model.Bundle; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Configuration; - @ConfigurationProperties(prefix = "hapi.fhir") @Configuration @EnableConfigurationProperties @@ -66,6 +65,7 @@ public class AppProperties { private Map implementationGuides = null; private Boolean lastn_enabled = false; + private NormalizedQuantitySearchLevel normalized_quantity_search_level = NormalizedQuantitySearchLevel.NORMALIZED_QUANTITY_SEARCH_NOT_SUPPORTED; public Integer getDefer_indexing_for_codesystems_of_size() { return defer_indexing_for_codesystems_of_size; @@ -414,7 +414,16 @@ public class AppProperties { this.lastn_enabled = lastn_enabled; } - public static class Cors { + public NormalizedQuantitySearchLevel getNormalized_quantity_search_level() { + return this.normalized_quantity_search_level; + } + + public void setNormalized_quantity_search_level(NormalizedQuantitySearchLevel normalized_quantity_search_level) { + this.normalized_quantity_search_level = normalized_quantity_search_level; + } + + +public static class Cors { private Boolean allow_Credentials = true; private List allowed_origin = ImmutableList.of("*"); diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java b/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java index 027801a..7655af7 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java @@ -366,6 +366,8 @@ public class BaseJpaRestfulServer extends RestfulServer { daoConfig.setLastNEnabled(true); } + daoConfig.getModelConfig().setNormalizedQuantitySearchLevel(appProperties.getNormalized_quantity_search_level()); + // Repository Validating Interceptor if (Boolean.TRUE.equals(appProperties.getEnable_repository_validating_interceptor())) { RepositoryValidationInterceptorFactory repositoryValidationInterceptorFactory = myApplicationContext.getBean(RepositoryValidationInterceptorFactory.class); diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java b/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java index 9a19e5c..a8cff64 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java @@ -169,6 +169,7 @@ public class FhirServerConfigCommon { modelConfig.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.EMAIL); } + modelConfig.setNormalizedQuantitySearchLevel(appProperties.getNormalized_quantity_search_level()); return modelConfig; } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 5b78b63..320edc4 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -125,6 +125,11 @@ hapi: # startTlsRequired: # quitWait: # lastn_enabled: true + ### This is configuration for normalized quantity serach level default is 0 + ### 0: NORMALIZED_QUANTITY_SEARCH_NOT_SUPPORTED - default + ### 1: NORMALIZED_QUANTITY_STORAGE_SUPPORTED + ### 2: NORMALIZED_QUANTITY_SEARCH_SUPPORTED +# normalized_quantity_search_level: 2 # diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java index 279c9ae..c94a3a8 100644 --- a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java +++ b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java @@ -1,8 +1,6 @@ package ca.uhn.fhir.jpa.starter; import ca.uhn.fhir.context.FhirContext; -import ca.uhn.fhir.jpa.api.dao.DaoRegistry; -import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.rest.api.CacheControlDirective; import ca.uhn.fhir.rest.api.EncodingEnum; import ca.uhn.fhir.rest.api.MethodOutcome; @@ -22,12 +20,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.LocalServerPort; import org.springframework.test.context.junit.jupiter.SpringExtension; -import java.io.IOException; import java.net.URI; import java.util.List; import java.util.concurrent.Future; @@ -78,6 +74,7 @@ public class ExampleServerR4IT { Patient pt2 = ourClient.read().resource(Patient.class).withId(id).execute(); assertEquals(methodName, pt2.getName().get(0).getFamily()); + // Test MDM // Wait until the MDM message has been processed