From a12e30c7d28fdf90c00fc23aa92ca937f002a667 Mon Sep 17 00:00:00 2001 From: Tadgh Date: Wed, 25 Sep 2024 15:34:56 -0400 Subject: [PATCH] Expose setting, add docs --- .../ca/uhn/fhir/jpa/starter/AppProperties.java | 13 ++++++++++++- .../starter/common/FhirServerConfigCommon.java | 1 + src/main/resources/application.yaml | 15 +++++++++++++-- 3 files changed, 26 insertions(+), 3 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 0f63df44ae5..18c4bec9d40 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java @@ -104,6 +104,8 @@ public class AppProperties { private final List custom_provider_classes = new ArrayList<>(); + private List search_prefetch_thresholds = new ArrayList<>(); + public List getCustomInterceptorClasses() { return custom_interceptor_classes; @@ -643,7 +645,16 @@ public void setLanguage_search_parameter_enabled(Boolean language_search_paramet this.language_search_parameter_enabled = language_search_parameter_enabled; } - public static class Cors { + public List getSearch_prefetch_thresholds() { + return this.search_prefetch_thresholds; + } + + public void setSearch_prefetch_thresholds(List thePrefetchThresholds) { + this.search_prefetch_thresholds = thePrefetchThresholds; + } + + + public static class Cors { private Boolean allow_Credentials = true; private List allowed_origin = List.of("*"); diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigCommon.java b/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigCommon.java index a312360723c..8380505a1af 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigCommon.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigCommon.java @@ -150,6 +150,7 @@ public JpaStorageSettings jpaStorageSettings(AppProperties appProperties) { jpaStorageSettings.setExpungeEnabled(appProperties.getExpunge_enabled()); jpaStorageSettings.setLanguageSearchParameterEnabled(appProperties.getLanguage_search_parameter_enabled()); + jpaStorageSettings.setSearchPreFetchThresholds(appProperties.getSearch_prefetch_thresholds()); Integer maxFetchSize = appProperties.getMax_page_size(); jpaStorageSettings.setFetchSizeDefaultMaximum(maxFetchSize); diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 394c97b0382..d233a5f129d 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -76,7 +76,7 @@ hapi: ### This flag when enabled to true, will avail evaluate measure operations from CR Module. ### Flag is false by default, can be passed as command line argument to override. cr: - enabled: false + enabled: true caregaps: reporter: "default" section_author: "default" @@ -229,7 +229,18 @@ hapi: search-coord-core-pool-size: 20 search-coord-max-pool-size: 100 search-coord-queue-capacity: 200 - + + # Search Prefetch Thresholds. + + # This setting sets the number of search results to prefetch. For example, if this list + # is set to [100, 1000, -1] then the server will initially load 100 results and not + # attempt to load more. If the user requests subsequent page(s) of results and goes + # past 100 results, the system will load the next 900 (up to the following threshold of 1000). + # The system will progressively work through these thresholds. + # A threshold of -1 means to load all results. Note that if the final threshold is a + # number other than -1, the system will never prefetch more than the given number. + search_prefetch_thresholds: 13,503,2003 + # comma-separated package names, will be @ComponentScan'ed by Spring to allow for creating custom Spring beans #custom-bean-packages: