Update to HAPI 7.6.0 (#731)

* Bump to HAPI 7.5.0-SNAPSHOT

* Bump to latest HAPI version + fix config

* Bump to latest HAPI version + fix CR config + spotless

* Bump parent version to 7.5.4-SNAPSHOT

* Update to HAPI Release 7.6.0

---------

Co-authored-by: Brenin Rhodes <brenin@alphora.com>
This commit is contained in:
dotasek
2024-11-22 12:58:31 -05:00
committed by GitHub
parent 69fede99a4
commit 103fd012c0
14 changed files with 102 additions and 105 deletions

View File

@@ -14,7 +14,7 @@
<parent> <parent>
<groupId>ca.uhn.hapi.fhir</groupId> <groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir</artifactId> <artifactId>hapi-fhir</artifactId>
<version>7.4.0</version> <version>7.6.0</version>
</parent> </parent>
<artifactId>hapi-fhir-jpaserver-starter</artifactId> <artifactId>hapi-fhir-jpaserver-starter</artifactId>

View File

@@ -1,5 +1,6 @@
package ca.uhn.fhir.jpa.starter.common; package ca.uhn.fhir.jpa.starter.common;
import ca.uhn.fhir.batch2.config.Batch2JobRegisterer;
import ca.uhn.fhir.batch2.coordinator.JobDefinitionRegistry; import ca.uhn.fhir.batch2.coordinator.JobDefinitionRegistry;
import ca.uhn.fhir.batch2.jobs.export.BulkDataExportProvider; import ca.uhn.fhir.batch2.jobs.export.BulkDataExportProvider;
import ca.uhn.fhir.batch2.jobs.imprt.BulkDataImportProvider; import ca.uhn.fhir.batch2.jobs.imprt.BulkDataImportProvider;
@@ -46,7 +47,6 @@ import ca.uhn.fhir.jpa.starter.annotations.OnImplementationGuidesPresent;
import ca.uhn.fhir.jpa.starter.common.validation.IRepositoryValidationInterceptorFactory; import ca.uhn.fhir.jpa.starter.common.validation.IRepositoryValidationInterceptorFactory;
import ca.uhn.fhir.jpa.starter.ig.IImplementationGuideOperationProvider; import ca.uhn.fhir.jpa.starter.ig.IImplementationGuideOperationProvider;
import ca.uhn.fhir.jpa.starter.util.EnvironmentHelper; import ca.uhn.fhir.jpa.starter.util.EnvironmentHelper;
import ca.uhn.fhir.jpa.starter.ig.IImplementationGuideOperationProvider;
import ca.uhn.fhir.jpa.subscription.util.SubscriptionDebugLogInterceptor; import ca.uhn.fhir.jpa.subscription.util.SubscriptionDebugLogInterceptor;
import ca.uhn.fhir.jpa.util.ResourceCountCache; import ca.uhn.fhir.jpa.util.ResourceCountCache;
import ca.uhn.fhir.jpa.validation.JpaValidationSupportChain; import ca.uhn.fhir.jpa.validation.JpaValidationSupportChain;
@@ -66,6 +66,8 @@ import ca.uhn.fhir.validation.ResultSeverityEnum;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.EntityManagerFactory;
import org.hl7.fhir.common.hapi.validation.support.CachingValidationSupport; import org.hl7.fhir.common.hapi.validation.support.CachingValidationSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
@@ -89,7 +91,7 @@ import static ca.uhn.fhir.jpa.starter.common.validation.IRepositoryValidationInt
@Import(ThreadPoolFactoryConfig.class) @Import(ThreadPoolFactoryConfig.class)
public class StarterJpaConfig { public class StarterJpaConfig {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(StarterJpaConfig.class); private static final Logger ourLog = LoggerFactory.getLogger(StarterJpaConfig.class);
@Bean @Bean
public IFulltextSearchSvc fullTextSearchSvc() { public IFulltextSearchSvc fullTextSearchSvc() {
@@ -192,10 +194,10 @@ public class StarterJpaConfig {
@Conditional(OnImplementationGuidesPresent.class) @Conditional(OnImplementationGuidesPresent.class)
public IPackageInstallerSvc packageInstaller( public IPackageInstallerSvc packageInstaller(
AppProperties appProperties, AppProperties appProperties,
JobDefinition<ReindexJobParameters> reindexJobParametersJobDefinition, IPackageInstallerSvc packageInstallerSvc,
JobDefinitionRegistry jobDefinitionRegistry, Batch2JobRegisterer batch2JobRegisterer) {
IPackageInstallerSvc packageInstallerSvc) {
jobDefinitionRegistry.addJobDefinitionIfNotRegistered(reindexJobParametersJobDefinition); batch2JobRegisterer.start();
if (appProperties.getImplementationGuides() != null) { if (appProperties.getImplementationGuides() != null) {
Map<String, PackageInstallationSpec> guides = appProperties.getImplementationGuides(); Map<String, PackageInstallationSpec> guides = appProperties.getImplementationGuides();

View File

@@ -27,7 +27,6 @@ public class CqlCompilerProperties {
private Boolean require_from_keyword = false; private Boolean require_from_keyword = false;
private Boolean disable_default_model_info_load = false; private Boolean disable_default_model_info_load = false;
public boolean isValidateUnits() { public boolean isValidateUnits() {
return validate_units; return validate_units;
} }

View File

@@ -14,7 +14,6 @@ public class CqlRuntimeProperties {
this.debug_logging_enabled = debug_logging_enabled; this.debug_logging_enabled = debug_logging_enabled;
} }
public boolean isEnableExpressionCaching() { public boolean isEnableExpressionCaching() {
return enable_expression_caching; return enable_expression_caching;
} }
@@ -30,6 +29,4 @@ public class CqlRuntimeProperties {
public void EnableValidation(boolean enable_validation) { public void EnableValidation(boolean enable_validation) {
this.enable_validation = enable_validation; this.enable_validation = enable_validation;
} }
} }

View File

@@ -1,13 +1,14 @@
package ca.uhn.fhir.jpa.starter.cr; package ca.uhn.fhir.jpa.starter.cr;
import java.util.EnumSet; import ca.uhn.fhir.cr.common.CodeCacheResourceChangeListener;
import java.util.List; import ca.uhn.fhir.cr.common.CqlThreadFactory;
import java.util.Map; import ca.uhn.fhir.cr.common.ElmCacheResourceChangeListener;
import java.util.Set; import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
import java.util.concurrent.ConcurrentHashMap; import ca.uhn.fhir.jpa.cache.IResourceChangeListenerRegistry;
import java.util.concurrent.ExecutorService; import ca.uhn.fhir.jpa.cache.ResourceChangeListenerRegistryInterceptor;
import java.util.concurrent.Executors; import ca.uhn.fhir.jpa.searchparam.SearchParameterMap;
import ca.uhn.fhir.rest.server.RestfulServer;
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
import org.cqframework.cql.cql2elm.CqlCompilerOptions; import org.cqframework.cql.cql2elm.CqlCompilerOptions;
import org.cqframework.cql.cql2elm.model.CompiledLibrary; import org.cqframework.cql.cql2elm.model.CompiledLibrary;
import org.cqframework.cql.cql2elm.model.Model; import org.cqframework.cql.cql2elm.model.Model;
@@ -28,15 +29,13 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.security.concurrent.DelegatingSecurityContextExecutorService; import org.springframework.security.concurrent.DelegatingSecurityContextExecutorService;
import ca.uhn.fhir.cr.common.CodeCacheResourceChangeListener; import java.util.EnumSet;
import ca.uhn.fhir.cr.common.CqlThreadFactory; import java.util.List;
import ca.uhn.fhir.cr.common.ElmCacheResourceChangeListener; import java.util.Map;
import ca.uhn.fhir.jpa.api.dao.DaoRegistry; import java.util.Set;
import ca.uhn.fhir.jpa.cache.IResourceChangeListenerRegistry; import java.util.concurrent.ConcurrentHashMap;
import ca.uhn.fhir.jpa.cache.ResourceChangeListenerRegistryInterceptor; import java.util.concurrent.ExecutorService;
import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; import java.util.concurrent.Executors;
import ca.uhn.fhir.rest.server.RestfulServer;
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
@Configuration @Configuration
@Conditional({CrConfigCondition.class}) @Conditional({CrConfigCondition.class})
@@ -157,8 +156,12 @@ public class CrCommonConfig {
@Bean @Bean
CareGapsProperties careGapsProperties(CrProperties theCrProperties) { CareGapsProperties careGapsProperties(CrProperties theCrProperties) {
var careGapsProperties = new CareGapsProperties(); var careGapsProperties = new CareGapsProperties();
careGapsProperties.setCareGapsReporter(theCrProperties.getCareGaps().getReporter()); // This check for the resource type really should be happening down in CR where the setting is actually used but
careGapsProperties.setCareGapsCompositionSectionAuthor(theCrProperties.getCareGaps().getSection_author()); // that will have to wait for a future CR release
careGapsProperties.setCareGapsReporter(
theCrProperties.getCareGaps().getReporter().replace("Organization/", ""));
careGapsProperties.setCareGapsCompositionSectionAuthor(
theCrProperties.getCareGaps().getSection_author().replace("Organization/", ""));
return careGapsProperties; return careGapsProperties;
} }

View File

@@ -1,9 +1,5 @@
package ca.uhn.fhir.jpa.starter.cr; package ca.uhn.fhir.jpa.starter.cr;
import org.cqframework.cql.cql2elm.CqlCompilerException;
import org.cqframework.cql.cql2elm.CqlTranslator;
import org.cqframework.cql.cql2elm.LibraryBuilder;
public class CrProperties { public class CrProperties {
private Boolean enabled; private Boolean enabled;

View File

@@ -2,10 +2,9 @@ package ca.uhn.fhir.jpa.starter.cr;
import ca.uhn.fhir.cr.config.dstu3.ApplyOperationConfig; import ca.uhn.fhir.cr.config.dstu3.ApplyOperationConfig;
import ca.uhn.fhir.cr.config.dstu3.CrDstu3Config; import ca.uhn.fhir.cr.config.dstu3.CrDstu3Config;
import ca.uhn.fhir.cr.config.dstu3.ExtractOperationConfig; import ca.uhn.fhir.cr.config.dstu3.DataRequirementsOperationConfig;
import ca.uhn.fhir.cr.config.dstu3.EvaluateOperationConfig;
import ca.uhn.fhir.cr.config.dstu3.PackageOperationConfig; import ca.uhn.fhir.cr.config.dstu3.PackageOperationConfig;
import ca.uhn.fhir.cr.config.dstu3.PopulateOperationConfig;
import ca.uhn.fhir.cr.config.dstu3.QuestionnaireOperationConfig;
import ca.uhn.fhir.jpa.starter.annotations.OnDSTU3Condition; import ca.uhn.fhir.jpa.starter.annotations.OnDSTU3Condition;
import org.springframework.context.annotation.*; import org.springframework.context.annotation.*;
@@ -15,11 +14,8 @@ import org.springframework.context.annotation.*;
CrCommonConfig.class, CrCommonConfig.class,
CrDstu3Config.class, CrDstu3Config.class,
ApplyOperationConfig.class, ApplyOperationConfig.class,
ExtractOperationConfig.class, DataRequirementsOperationConfig.class,
PackageOperationConfig.class, EvaluateOperationConfig.class,
PopulateOperationConfig.class, PackageOperationConfig.class
QuestionnaireOperationConfig.class
}) })
public class StarterCrDstu3Config { public class StarterCrDstu3Config {}
}

View File

@@ -2,6 +2,8 @@ package ca.uhn.fhir.jpa.starter.cr;
import ca.uhn.fhir.cr.config.r4.ApplyOperationConfig; import ca.uhn.fhir.cr.config.r4.ApplyOperationConfig;
import ca.uhn.fhir.cr.config.r4.CrR4Config; import ca.uhn.fhir.cr.config.r4.CrR4Config;
import ca.uhn.fhir.cr.config.r4.DataRequirementsOperationConfig;
import ca.uhn.fhir.cr.config.r4.EvaluateOperationConfig;
import ca.uhn.fhir.cr.config.r4.ExtractOperationConfig; import ca.uhn.fhir.cr.config.r4.ExtractOperationConfig;
import ca.uhn.fhir.cr.config.r4.PackageOperationConfig; import ca.uhn.fhir.cr.config.r4.PackageOperationConfig;
import ca.uhn.fhir.cr.config.r4.PopulateOperationConfig; import ca.uhn.fhir.cr.config.r4.PopulateOperationConfig;
@@ -17,11 +19,11 @@ import org.springframework.context.annotation.Import;
CrCommonConfig.class, CrCommonConfig.class,
CrR4Config.class, CrR4Config.class,
ApplyOperationConfig.class, ApplyOperationConfig.class,
DataRequirementsOperationConfig.class,
EvaluateOperationConfig.class,
ExtractOperationConfig.class, ExtractOperationConfig.class,
PackageOperationConfig.class, PackageOperationConfig.class,
PopulateOperationConfig.class, PopulateOperationConfig.class,
QuestionnaireOperationConfig.class QuestionnaireOperationConfig.class
}) })
public class StarterCrR4Config { public class StarterCrR4Config {}
}

View File

@@ -121,7 +121,7 @@ hapi:
valueset_membership_mode: USE_EXPANSION # AUTO, USE_VALIDATE_CODE_OPERATION, USE_EXPANSION valueset_membership_mode: USE_EXPANSION # AUTO, USE_VALIDATE_CODE_OPERATION, USE_EXPANSION
code_lookup_mode: USE_VALIDATE_CODE_OPERATION # AUTO, USE_VALIDATE_CODE_OPERATION, USE_CODESYSTEM_URL code_lookup_mode: USE_VALIDATE_CODE_OPERATION # AUTO, USE_VALIDATE_CODE_OPERATION, USE_CODESYSTEM_URL
data: data:
search_parameter_mode: FILTER_IN_MEMORY # AUTO, USE_SEARCH_PARAMETERS, FILTER_IN_MEMORY search_parameter_mode: USE_SEARCH_PARAMETERS # AUTO, USE_SEARCH_PARAMETERS, FILTER_IN_MEMORY
terminology_parameter_mode: FILTER_IN_MEMORY # AUTO, USE_VALUE_SET_URL, USE_INLINE_CODES, FILTER_IN_MEMORY terminology_parameter_mode: FILTER_IN_MEMORY # AUTO, USE_VALUE_SET_URL, USE_INLINE_CODES, FILTER_IN_MEMORY
profile_mode: DECLARED # ENFORCED, DECLARED, OPTIONAL, TRUST, OFF profile_mode: DECLARED # ENFORCED, DECLARED, OPTIONAL, TRUST, OFF

View File

@@ -177,7 +177,7 @@ hapi:
# allowed_bundle_types: COLLECTION,DOCUMENT,MESSAGE,TRANSACTION,TRANSACTIONRESPONSE,BATCH,BATCHRESPONSE,HISTORY,SEARCHSET # allowed_bundle_types: COLLECTION,DOCUMENT,MESSAGE,TRANSACTION,TRANSACTIONRESPONSE,BATCH,BATCHRESPONSE,HISTORY,SEARCHSET
# allow_cascading_deletes: true # allow_cascading_deletes: true
# allow_contains_searches: true # allow_contains_searches: true
# allow_external_references: true allow_external_references: true
# allow_multiple_delete: true # allow_multiple_delete: true
# allow_override_default_search_params: true # allow_override_default_search_params: true
# auto_create_placeholder_reference_targets: false # auto_create_placeholder_reference_targets: false

View File

@@ -16,6 +16,7 @@ import java.util.GregorianCalendar;
import java.util.List; import java.util.List;
import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch.indices.IndexSettings;
import co.elastic.clients.json.JsonData; import co.elastic.clients.json.JsonData;
import jakarta.annotation.PreDestroy; import jakarta.annotation.PreDestroy;
import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RequestOptions;
@@ -91,7 +92,7 @@ public class ElasticsearchLastNR4IT {
elasticsearchHighLevelRestClient.indices().putTemplate(t->{ elasticsearchHighLevelRestClient.indices().putTemplate(t->{
t.name("hapi_fhir_template"); t.name("hapi_fhir_template");
t.indexPatterns("*"); t.indexPatterns("*");
t.settings("index.max_result_window", JsonData.of(50000)); t.settings(new IndexSettings.Builder().maxResultWindow(50000).build());
return t; return t;
}); });

View File

@@ -69,6 +69,7 @@ import static org.opencds.cqf.fhir.utility.r4.Parameters.stringPart;
"hapi.fhir.cr.enabled=true", "hapi.fhir.cr.enabled=true",
"hapi.fhir.cr.caregaps.section_author=Organization/alphora-author", "hapi.fhir.cr.caregaps.section_author=Organization/alphora-author",
"hapi.fhir.cr.caregaps.reporter=Organization/alphora", "hapi.fhir.cr.caregaps.reporter=Organization/alphora",
"hapi.fhir.cr.cql.data.search_parameter_mode=USE_SEARCH_PARAMETERS",
"hapi.fhir.implementationguides.dk-core.name=hl7.fhir.dk.core", "hapi.fhir.implementationguides.dk-core.name=hl7.fhir.dk.core",
"hapi.fhir.implementationguides.dk-core.version=1.1.0", "hapi.fhir.implementationguides.dk-core.version=1.1.0",
"hapi.fhir.auto_create_placeholder_reference_targets=true", "hapi.fhir.auto_create_placeholder_reference_targets=true",