From 71541574e9e6998149b87cd74adf624da1b11757 Mon Sep 17 00:00:00 2001 From: Frank Tao Date: Thu, 7 Jan 2021 22:47:02 -0500 Subject: [PATCH] Added Normalized Quantity Search Support --- .../uhn/fhir/jpa/starter/AppProperties.java | 27 +++++++++++++------ .../jpa/starter/BaseJpaRestfulServer.java | 2 ++ .../jpa/starter/FhirServerConfigCommon.java | 1 + src/main/resources/application.yaml | 5 ++++ 4 files changed, 27 insertions(+), 8 deletions(-) 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 d38d1a1..daf3da6 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java @@ -1,22 +1,23 @@ 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.rest.api.EncodingEnum; - import java.util.ArrayList; import java.util.List; import java.util.Map; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; 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 com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; + +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; + @ConfigurationProperties(prefix = "hapi.fhir") @Configuration @@ -66,6 +67,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; @@ -403,7 +405,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 d65d95c..745d838 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/BaseJpaRestfulServer.java @@ -363,6 +363,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 1b99bc3..965e028 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/FhirServerConfigCommon.java @@ -163,6 +163,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 4b5e9b0..067fe72 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -126,6 +126,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 #