diff --git a/pom.xml b/pom.xml index 356ab2c..e7c4f12 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 17 1 - 3.21.0 + 3.22.0 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 80c7b21..9c9aeaa 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java @@ -1,6 +1,7 @@ package ca.uhn.fhir.jpa.starter; import ca.uhn.fhir.context.FhirVersionEnum; +import ca.uhn.fhir.jpa.api.config.JpaStorageSettings; import ca.uhn.fhir.jpa.api.config.JpaStorageSettings.ClientIdStrategyEnum; import ca.uhn.fhir.jpa.api.config.JpaStorageSettings.IdStrategyEnum; import ca.uhn.fhir.jpa.model.entity.NormalizedQuantitySearchLevel; @@ -36,6 +37,7 @@ public class AppProperties { private Boolean mdm_enabled = false; private String mdm_rules_json_location = "mdm-rules.json"; private boolean advanced_lucene_indexing = false; + private boolean search_index_full_text_enabled = false; private boolean enable_index_of_type = false; private Boolean allow_cascading_deletes = false; private Boolean allow_contains_searches = true; @@ -108,6 +110,8 @@ public class AppProperties { private Integer pre_expand_value_sets_default_count = 1000; private Integer pre_expand_value_sets_max_count = 1000; private Integer maximum_expansion_size = 1000; + private JpaStorageSettings.StoreMetaSourceInformationEnum store_meta_source_information = + JpaStorageSettings.StoreMetaSourceInformationEnum.NONE; private Map remote_terminology_service = null; private Boolean match_url_cache_enabled = false; @@ -289,6 +293,14 @@ public class AppProperties { advanced_lucene_indexing = theAdvanced_lucene_indexing; } + public boolean getSearch_index_full_text_enabled() { + return this.search_index_full_text_enabled; + } + + public void setSearch_index_full_text_enabled(boolean theSearch_index_full_text_enabled) { + search_index_full_text_enabled = theSearch_index_full_text_enabled; + } + public Boolean getAllow_cascading_deletes() { return allow_cascading_deletes; } @@ -760,6 +772,15 @@ public class AppProperties { public void setIndex_storage_optimized(boolean theIndex_storage_optimized) { index_storage_optimized = theIndex_storage_optimized; + } + + public JpaStorageSettings.StoreMetaSourceInformationEnum getStore_meta_source_information() { + return store_meta_source_information; + } + + public void setStore_meta_source_information( + JpaStorageSettings.StoreMetaSourceInformationEnum store_meta_source_information) { + this.store_meta_source_information = store_meta_source_information; } public static class Cors { diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCdsCrService.java b/src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCdsCrService.java index 414993c..4319fa8 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCdsCrService.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCdsCrService.java @@ -1,12 +1,11 @@ package ca.uhn.fhir.jpa.starter.cdshooks; import ca.uhn.fhir.context.FhirVersionEnum; +import ca.uhn.fhir.repository.IRepository; import ca.uhn.fhir.rest.api.server.RequestDetails; import ca.uhn.fhir.rest.api.server.cdshooks.CdsServiceRequestJson; -import ca.uhn.hapi.fhir.cdshooks.api.ICdsConfigService; import org.hl7.fhir.instance.model.api.IBaseParameters; import org.hl7.fhir.instance.model.api.IPrimitiveType; -import org.opencds.cqf.fhir.api.Repository; import org.opencds.cqf.fhir.cr.hapi.cdshooks.CdsCrService; import org.opencds.cqf.fhir.utility.adapter.IAdapterFactory; @@ -15,9 +14,8 @@ import static org.opencds.cqf.fhir.utility.Constants.APPLY_PARAMETER_DATA; public class UpdatedCdsCrService extends CdsCrService { private final IAdapterFactory adapterFactory; - public UpdatedCdsCrService( - RequestDetails theRequestDetails, Repository theRepository, ICdsConfigService theCdsConfigService) { - super(theRequestDetails, theRepository, theCdsConfigService); + public UpdatedCdsCrService(RequestDetails theRequestDetails, IRepository theRepository) { + super(theRequestDetails, theRepository); adapterFactory = IAdapterFactory.forFhirContext(theRepository.fhirContext()); } diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCrDiscoveryService.java b/src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCrDiscoveryService.java index f01873e..2bc82f0 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCrDiscoveryService.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCrDiscoveryService.java @@ -1,11 +1,11 @@ package ca.uhn.fhir.jpa.starter.cdshooks; +import ca.uhn.fhir.repository.IRepository; import org.hl7.fhir.instance.model.api.IIdType; -import org.opencds.cqf.fhir.api.Repository; import org.opencds.cqf.fhir.cr.hapi.cdshooks.discovery.CrDiscoveryService; public class UpdatedCrDiscoveryService extends CrDiscoveryService { - public UpdatedCrDiscoveryService(IIdType thePlanDefinitionId, Repository theRepository) { + public UpdatedCrDiscoveryService(IIdType thePlanDefinitionId, IRepository theRepository) { super(thePlanDefinitionId, theRepository); maxUriLength = 6000; } 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 4b79117..468f1f5 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 @@ -206,6 +206,7 @@ public class FhirServerConfigCommon { jpaStorageSettings.setFilterParameterEnabled(appProperties.getFilter_search_enabled()); jpaStorageSettings.setHibernateSearchIndexSearchParams(appProperties.getAdvanced_lucene_indexing()); + jpaStorageSettings.setHibernateSearchIndexFullText(appProperties.getSearch_index_full_text_enabled()); jpaStorageSettings.setTreatBaseUrlsAsLocal(new HashSet<>(appProperties.getLocal_base_urls())); jpaStorageSettings.setTreatReferencesAsLogical(new HashSet<>(appProperties.getLogical_urls())); @@ -258,6 +259,10 @@ public class FhirServerConfigCommon { jpaStorageSettings.setBundleBatchPoolSize(appProperties.getBundle_batch_pool_size()); jpaStorageSettings.setBundleBatchPoolSize(appProperties.getBundle_batch_pool_max_size()); + // Set store meta source information + ourLog.debug("Server configured to Store Meta Source: {}", appProperties.getStore_meta_source_information()); + jpaStorageSettings.setStoreMetaSourceInformation(appProperties.getStore_meta_source_information()); + storageSettings(appProperties, jpaStorageSettings); return jpaStorageSettings; } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 240ed29..cff71e2 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -204,6 +204,7 @@ hapi: ### !!Extended Lucene/Elasticsearch Indexing is still a experimental feature, expect some features (e.g. _total=accurate) to not work as expected!! ### more information here: https://hapifhir.io/hapi-fhir/docs/server_jpa/elastic.html advanced_lucene_indexing: false + search_index_full_text_enabled: false bulk_export_enabled: false bulk_import_enabled: false # language_search_parameter_enabled: true @@ -294,7 +295,8 @@ hapi: # classes listed here will be fetched from the Spring context when combined with 'custom-bean-packages', # or will be instantiated via reflection using an no-arg contructor; then registered with the server #custom-provider-classes: - + # specify what should be stored in meta.source based on StoreMetaSourceInformationEnum defaults to NONE + # store_meta_source_information: NONE # Threadpool size for BATCH'ed GETs in a bundle. # bundle_batch_pool_size: 10 # bundle_batch_pool_max_size: 50 diff --git a/src/main/resources/cds.application.yaml b/src/main/resources/cds.application.yaml index 8a734ae..2d98309 100644 --- a/src/main/resources/cds.application.yaml +++ b/src/main/resources/cds.application.yaml @@ -196,6 +196,7 @@ hapi: ### !!Extended Lucene/Elasticsearch Indexing is still a experimental feature, expect some features (e.g. _total=accurate) to not work as expected!! ### more information here: https://hapifhir.io/hapi-fhir/docs/server_jpa/elastic.html advanced_lucene_indexing: false + search_index_full_text_enabled: false bulk_export_enabled: false bulk_import_enabled: false # language_search_parameter_enabled: true diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/ElasticsearchLastNR4IT.java b/src/test/java/ca/uhn/fhir/jpa/starter/ElasticsearchLastNR4IT.java index b827946..26f6b9d 100644 --- a/src/test/java/ca/uhn/fhir/jpa/starter/ElasticsearchLastNR4IT.java +++ b/src/test/java/ca/uhn/fhir/jpa/starter/ElasticsearchLastNR4IT.java @@ -52,6 +52,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; "hapi.fhir.lastn_enabled=true", "hapi.fhir.store_resource_in_lucene_index_enabled=true", "hapi.fhir.advanced_lucene_indexing=true", + "hapi.fhir.search_index_full_text_enabled=true", "elasticsearch.enabled=true", "hapi.fhir.cr_enabled=false", diff --git a/src/test/resources/application.yaml b/src/test/resources/application.yaml index f57c1e2..cf70d28 100644 --- a/src/test/resources/application.yaml +++ b/src/test/resources/application.yaml @@ -129,6 +129,7 @@ hapi: ### !!Extended Lucene/Elasticsearch Indexing is still a experimental feature, expect some features (e.g. _total=accurate) to not work as expected!! ### more information here: https://hapifhir.io/hapi-fhir/docs/server_jpa/elastic.html advanced_lucene_indexing: false + search_index_full_text_enabled: false # enforce_referential_integrity_on_delete: false # This is an experimental feature, and does not fully support _total and other FHIR features. # enforce_referential_integrity_on_delete: false