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 8d3e878..fa0dac2 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java @@ -21,7 +21,8 @@ import java.util.Objects; @EnableConfigurationProperties public class AppProperties { - private Boolean cql_enabled = false; + private Boolean cr_enabled = false; + private Boolean ips_enabled = false; private Boolean openapi_enabled = false; private Boolean mdm_enabled = false; private boolean advanced_lucene_indexing = false; @@ -149,14 +150,23 @@ public class AppProperties { this.partitioning = partitioning; } - public Boolean getCql_enabled() { - return cql_enabled; + public Boolean getCr_enabled() { + return cr_enabled; } - public void setCql_enabled(Boolean cql_enabled) { - this.cql_enabled = cql_enabled; + public void setCr_enabled(Boolean cr_enabled) { + this.cr_enabled = cr_enabled; } + public Boolean getIps_enabled() { + return ips_enabled; + } + + public void setIps_enabled(Boolean ips_enabled) { + this.ips_enabled = ips_enabled; + } + + public Boolean getMdm_enabled() { return mdm_enabled; } diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigDstu3.java b/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigDstu3.java index bb0f12f..085764d 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigDstu3.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigDstu3.java @@ -12,7 +12,7 @@ import org.springframework.context.annotation.Import; @Import({ JpaDstu3Config.class, StarterJpaConfig.class, - StarterCrDstu3Config.class, + StarterCrDstu3Config.class, ElasticsearchConfig.class}) public class FhirServerConfigDstu3 { } diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigR4.java b/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigR4.java index 0e1e636..61dbab5 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigR4.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigR4.java @@ -3,6 +3,8 @@ package ca.uhn.fhir.jpa.starter.common; import ca.uhn.fhir.jpa.config.r4.JpaR4Config; import ca.uhn.fhir.jpa.starter.annotations.OnR4Condition; import ca.uhn.fhir.jpa.starter.cr.StarterCrR4Config; +import ca.uhn.fhir.jpa.starter.ips.StarterIpsConfig; + import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -13,7 +15,8 @@ import org.springframework.context.annotation.Import; JpaR4Config.class, StarterJpaConfig.class, StarterCrR4Config.class, - ElasticsearchConfig.class + ElasticsearchConfig.class, + StarterIpsConfig.class }) public class FhirServerConfigR4 { } diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java b/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java index c9bf910..3c8abd0 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java @@ -30,10 +30,6 @@ import ca.uhn.fhir.jpa.delete.ThreadSafeResourceDeleterSvc; import ca.uhn.fhir.jpa.graphql.GraphQLProvider; import ca.uhn.fhir.jpa.interceptor.CascadingDeleteInterceptor; import ca.uhn.fhir.jpa.interceptor.validation.RepositoryValidatingInterceptor; -import ca.uhn.fhir.jpa.ips.api.IIpsGenerationStrategy; -import ca.uhn.fhir.jpa.ips.generator.DefaultIpsGenerationStrategy; -import ca.uhn.fhir.jpa.ips.generator.IIpsGeneratorSvc; -import ca.uhn.fhir.jpa.ips.generator.IpsGeneratorSvcImpl; import ca.uhn.fhir.jpa.ips.provider.IpsOperationProvider; import ca.uhn.fhir.jpa.packages.IPackageInstallerSvc; import ca.uhn.fhir.jpa.packages.PackageInstallationSpec; @@ -47,6 +43,7 @@ import ca.uhn.fhir.jpa.starter.AppProperties; import ca.uhn.fhir.jpa.starter.annotations.OnCorsPresent; import ca.uhn.fhir.jpa.starter.annotations.OnImplementationGuidesPresent; import ca.uhn.fhir.jpa.starter.common.validation.IRepositoryValidationInterceptorFactory; +import ca.uhn.fhir.jpa.starter.ips.IpsConfigCondition; import ca.uhn.fhir.jpa.starter.util.EnvironmentHelper; import ca.uhn.fhir.jpa.subscription.util.SubscriptionDebugLogInterceptor; import ca.uhn.fhir.jpa.util.ResourceCountCache; @@ -243,7 +240,7 @@ public class StarterJpaConfig { } @Bean - public RestfulServer restfulServer(IFhirSystemDao fhirSystemDao, AppProperties appProperties, DaoRegistry daoRegistry, Optional mdmProviderProvider, IJpaSystemProvider jpaSystemProvider, ResourceProviderFactory resourceProviderFactory, DaoConfig daoConfig, ISearchParamRegistry searchParamRegistry, IValidationSupport theValidationSupport, DatabaseBackedPagingProvider databaseBackedPagingProvider, LoggingInterceptor loggingInterceptor, Optional terminologyUploaderProvider, Optional subscriptionTriggeringProvider, Optional corsInterceptor, IInterceptorBroadcaster interceptorBroadcaster, Optional binaryAccessProvider, BinaryStorageInterceptor binaryStorageInterceptor, IValidatorModule validatorModule, Optional graphQLProvider, BulkDataExportProvider bulkDataExportProvider, BulkDataImportProvider bulkDataImportProvider, ValueSetOperationProvider theValueSetOperationProvider, ReindexProvider reindexProvider, PartitionManagementProvider partitionManagementProvider, Optional repositoryValidatingInterceptor, IPackageInstallerSvc packageInstallerSvc, ThreadSafeResourceDeleterSvc theThreadSafeResourceDeleterSvc, ApplicationContext appContext, IpsOperationProvider theIpsOperationProvider) { + public RestfulServer restfulServer(IFhirSystemDao fhirSystemDao, AppProperties appProperties, DaoRegistry daoRegistry, Optional mdmProviderProvider, IJpaSystemProvider jpaSystemProvider, ResourceProviderFactory resourceProviderFactory, DaoConfig daoConfig, ISearchParamRegistry searchParamRegistry, IValidationSupport theValidationSupport, DatabaseBackedPagingProvider databaseBackedPagingProvider, LoggingInterceptor loggingInterceptor, Optional terminologyUploaderProvider, Optional subscriptionTriggeringProvider, Optional corsInterceptor, IInterceptorBroadcaster interceptorBroadcaster, Optional binaryAccessProvider, BinaryStorageInterceptor binaryStorageInterceptor, IValidatorModule validatorModule, Optional graphQLProvider, BulkDataExportProvider bulkDataExportProvider, BulkDataImportProvider bulkDataImportProvider, ValueSetOperationProvider theValueSetOperationProvider, ReindexProvider reindexProvider, PartitionManagementProvider partitionManagementProvider, Optional repositoryValidatingInterceptor, IPackageInstallerSvc packageInstallerSvc, ThreadSafeResourceDeleterSvc theThreadSafeResourceDeleterSvc, ApplicationContext appContext, Optional theIpsOperationProvider) { RestfulServer fhirServer = new RestfulServer(fhirSystemDao.getContext()); List supportedResourceTypes = appProperties.getSupported_resource_types(); @@ -415,27 +412,13 @@ public class StarterJpaConfig { //register the IPS Provider - fhirServer.registerProvider(theIpsOperationProvider); + if (!theIpsOperationProvider.isEmpty()) { + fhirServer.registerProvider(theIpsOperationProvider.get()); + } + return fhirServer; } - @Bean - public IIpsGeneratorSvc IpsGeneratorSvcImpl(FhirContext theFhirContext, IIpsGenerationStrategy theGenerationStrategy, DaoRegistry theDaoRegistry) - { - return new IpsGeneratorSvcImpl(theFhirContext, theGenerationStrategy, theDaoRegistry); - } - - @Bean - public IpsOperationProvider IpsOperationProvider(IIpsGeneratorSvc theIpsGeneratorSvc){ - return new IpsOperationProvider(theIpsGeneratorSvc); - } - - @Bean IIpsGenerationStrategy IpsGenerationStrategy() - { - return new DefaultIpsGenerationStrategy(); - } - - /** * check the properties for custom interceptor classes and registers them. */ diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/cr/CrConfigCondition.java b/src/main/java/ca/uhn/fhir/jpa/starter/cr/CrConfigCondition.java index b488bcf..72e331c 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/cr/CrConfigCondition.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/cr/CrConfigCondition.java @@ -8,7 +8,7 @@ public class CrConfigCondition implements Condition { @Override public boolean matches(ConditionContext theConditionContext, AnnotatedTypeMetadata theAnnotatedTypeMetadata) { - String property = theConditionContext.getEnvironment().getProperty("hapi.fhir.cr_enabled"); + String property = theConditionContext.getEnvironment().getProperty("hapi.fhir.cql_enabled"); return Boolean.parseBoolean(property); } } diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/ips/IpsConfigCondition.java b/src/main/java/ca/uhn/fhir/jpa/starter/ips/IpsConfigCondition.java new file mode 100644 index 0000000..973491a --- /dev/null +++ b/src/main/java/ca/uhn/fhir/jpa/starter/ips/IpsConfigCondition.java @@ -0,0 +1,14 @@ +package ca.uhn.fhir.jpa.starter.ips; + +import org.springframework.context.annotation.Condition; +import org.springframework.context.annotation.ConditionContext; +import org.springframework.core.type.AnnotatedTypeMetadata; + +public class IpsConfigCondition implements Condition { + + @Override + public boolean matches(ConditionContext theConditionContext, AnnotatedTypeMetadata theAnnotatedTypeMetadata) { + String property = theConditionContext.getEnvironment().getProperty("hapi.fhir.ips_enabled"); + return Boolean.parseBoolean(property); + } +} diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/ips/StarterIpsConfig.java b/src/main/java/ca/uhn/fhir/jpa/starter/ips/StarterIpsConfig.java new file mode 100644 index 0000000..698fd91 --- /dev/null +++ b/src/main/java/ca/uhn/fhir/jpa/starter/ips/StarterIpsConfig.java @@ -0,0 +1,34 @@ +package ca.uhn.fhir.jpa.starter.ips; + +import org.springframework.context.annotation.Bean; + +import ca.uhn.fhir.context.FhirContext; +import ca.uhn.fhir.jpa.api.dao.DaoRegistry; +import ca.uhn.fhir.jpa.ips.api.IIpsGenerationStrategy; +import ca.uhn.fhir.jpa.ips.generator.DefaultIpsGenerationStrategy; +import ca.uhn.fhir.jpa.ips.generator.IIpsGeneratorSvc; +import org.springframework.context.annotation.Conditional; +import ca.uhn.fhir.jpa.ips.provider.IpsOperationProvider; +import ca.uhn.fhir.jpa.ips.generator.IpsGeneratorSvcImpl; + + +@Conditional(IpsConfigCondition.class) +public class StarterIpsConfig { + @Bean + IIpsGenerationStrategy IpsGenerationStrategy() + { + return new DefaultIpsGenerationStrategy(); + } + + @Bean + public IpsOperationProvider IpsOperationProvider(IIpsGeneratorSvc theIpsGeneratorSvc){ + return new IpsOperationProvider(theIpsGeneratorSvc); + } + + @Bean + public IIpsGeneratorSvc IpsGeneratorSvcImpl(FhirContext theFhirContext, IIpsGenerationStrategy theGenerationStrategy, DaoRegistry theDaoRegistry) + { + return new IpsGeneratorSvcImpl(theFhirContext, theGenerationStrategy, theDaoRegistry); + } + +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 52cfa85..405d03a 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -94,6 +94,7 @@ hapi: # allow_override_default_search_params: true # auto_create_placeholder_reference_targets: false # cr_enabled: true + # ips_enabled: false # default_encoding: JSON # default_pretty_print: true # default_page_size: 20