From 7c89addbefe20a44534197434e04e02b511c6cf8 Mon Sep 17 00:00:00 2001 From: Panayiotis Savva Date: Mon, 16 Jan 2023 02:27:33 +0200 Subject: [PATCH] Initial IPS + Cql to Cr migration --- .vscode/launch.json | 14 ++++++++++ .vscode/settings.json | 3 ++- pom.xml | 10 +++++-- .../starter/common/FhirServerConfigDstu3.java | 4 +-- .../starter/common/FhirServerConfigR4.java | 4 +-- .../jpa/starter/common/StarterJpaConfig.java | 27 ++++++++++++++++++- .../jpa/starter/cql/StarterCqlR4Config.java | 11 -------- .../CrConfigCondition.java} | 6 ++--- .../StarterCrDstu3Config.java} | 10 +++---- .../jpa/starter/cr/StarterCrR4Config.java | 11 ++++++++ src/main/resources/application.yaml | 4 +-- 11 files changed, 75 insertions(+), 29 deletions(-) create mode 100644 .vscode/launch.json delete mode 100644 src/main/java/ca/uhn/fhir/jpa/starter/cql/StarterCqlR4Config.java rename src/main/java/ca/uhn/fhir/jpa/starter/{cql/CqlConfigCondition.java => cr/CrConfigCondition.java} (77%) rename src/main/java/ca/uhn/fhir/jpa/starter/{cql/StarterCqlDstu3Config.java => cr/StarterCrDstu3Config.java} (53%) create mode 100644 src/main/java/ca/uhn/fhir/jpa/starter/cr/StarterCrR4Config.java diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..b898333 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + "configurations": [ + { + "type": "java", + "name": "Spring Boot-Application", + "request": "launch", + "cwd": "${workspaceFolder}", + "mainClass": "ca.uhn.fhir.jpa.starter.Application", + "projectName": "hapi-fhir-jpaserver-starter", + "args": "", + "envFile": "${workspaceFolder}/.env" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 2421e38..5b1ccac 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,6 @@ "**/.project": true, "**/.settings": true, "**/.factorypath": true - } + }, + "java.compile.nullAnalysis.mode": "disabled" } \ No newline at end of file diff --git a/pom.xml b/pom.xml index bfa4419..428df3e 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ ca.uhn.hapi.fhir hapi-fhir - 6.3.6-SNAPSHOT + 6.3.7-SNAPSHOT hapi-fhir-jpaserver-starter @@ -117,7 +117,7 @@ ca.uhn.hapi.fhir - hapi-fhir-jpaserver-cql + hapi-fhir-storage-cr ${project.version} @@ -146,6 +146,12 @@ ${project.version} classes + + + ca.uhn.hapi.fhir + hapi-fhir-jpaserver-ips + ${project.version} + 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 0e0c763..bb0f12f 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 @@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.starter.common; import ca.uhn.fhir.jpa.config.dstu3.JpaDstu3Config; import ca.uhn.fhir.jpa.starter.annotations.OnDSTU3Condition; -import ca.uhn.fhir.jpa.starter.cql.StarterCqlDstu3Config; +import ca.uhn.fhir.jpa.starter.cr.StarterCrDstu3Config; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -12,7 +12,7 @@ import org.springframework.context.annotation.Import; @Import({ JpaDstu3Config.class, StarterJpaConfig.class, - StarterCqlDstu3Config.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 6ee7a99..0e1e636 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 @@ -2,7 +2,7 @@ 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.cql.StarterCqlR4Config; +import ca.uhn.fhir.jpa.starter.cr.StarterCrR4Config; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -12,7 +12,7 @@ import org.springframework.context.annotation.Import; @Import({ JpaR4Config.class, StarterJpaConfig.class, - StarterCqlR4Config.class, + StarterCrR4Config.class, ElasticsearchConfig.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 3fac5b7..c9bf910 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,6 +30,11 @@ 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; import ca.uhn.fhir.jpa.partition.PartitionManagementProvider; @@ -238,7 +243,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) { + 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) { RestfulServer fhirServer = new RestfulServer(fhirSystemDao.getContext()); List supportedResourceTypes = appProperties.getSupported_resource_types(); @@ -408,9 +413,29 @@ public class StarterJpaConfig { // register custom interceptors registerCustomInterceptors(fhirServer, appContext, appProperties.getCustomInterceptorClasses()); + + //register the IPS Provider + fhirServer.registerProvider(theIpsOperationProvider); 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/cql/StarterCqlR4Config.java b/src/main/java/ca/uhn/fhir/jpa/starter/cql/StarterCqlR4Config.java deleted file mode 100644 index ff9bf16..0000000 --- a/src/main/java/ca/uhn/fhir/jpa/starter/cql/StarterCqlR4Config.java +++ /dev/null @@ -1,11 +0,0 @@ -package ca.uhn.fhir.jpa.starter.cql; - -import ca.uhn.fhir.cql.config.CqlR4Config; -import ca.uhn.fhir.jpa.starter.annotations.OnR4Condition; -import org.springframework.context.annotation.Conditional; -import org.springframework.context.annotation.Import; - -@Conditional({OnR4Condition.class, CqlConfigCondition.class}) -@Import({CqlR4Config.class}) -public class StarterCqlR4Config { -} diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/cql/CqlConfigCondition.java b/src/main/java/ca/uhn/fhir/jpa/starter/cr/CrConfigCondition.java similarity index 77% rename from src/main/java/ca/uhn/fhir/jpa/starter/cql/CqlConfigCondition.java rename to src/main/java/ca/uhn/fhir/jpa/starter/cr/CrConfigCondition.java index 38622ba..b488bcf 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/cql/CqlConfigCondition.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/cr/CrConfigCondition.java @@ -1,14 +1,14 @@ -package ca.uhn.fhir.jpa.starter.cql; +package ca.uhn.fhir.jpa.starter.cr; import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; -public class CqlConfigCondition implements Condition { +public class CrConfigCondition implements Condition { @Override public boolean matches(ConditionContext theConditionContext, AnnotatedTypeMetadata theAnnotatedTypeMetadata) { - String property = theConditionContext.getEnvironment().getProperty("hapi.fhir.cql_enabled"); + String property = theConditionContext.getEnvironment().getProperty("hapi.fhir.cr_enabled"); return Boolean.parseBoolean(property); } } diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/cql/StarterCqlDstu3Config.java b/src/main/java/ca/uhn/fhir/jpa/starter/cr/StarterCrDstu3Config.java similarity index 53% rename from src/main/java/ca/uhn/fhir/jpa/starter/cql/StarterCqlDstu3Config.java rename to src/main/java/ca/uhn/fhir/jpa/starter/cr/StarterCrDstu3Config.java index 5753dce..9efc086 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/cql/StarterCqlDstu3Config.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/cr/StarterCrDstu3Config.java @@ -1,13 +1,13 @@ -package ca.uhn.fhir.jpa.starter.cql; +package ca.uhn.fhir.jpa.starter.cr; -import ca.uhn.fhir.cql.config.CqlDstu3Config; +import ca.uhn.fhir.cr.config.CrDstu3Config; import ca.uhn.fhir.jpa.starter.annotations.OnDSTU3Condition; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @Configuration -@Conditional({OnDSTU3Condition.class, CqlConfigCondition.class}) -@Import({CqlDstu3Config.class}) -public class StarterCqlDstu3Config { +@Conditional({OnDSTU3Condition.class, CrConfigCondition.class}) +@Import({CrDstu3Config.class}) +public class StarterCrDstu3Config { } diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/cr/StarterCrR4Config.java b/src/main/java/ca/uhn/fhir/jpa/starter/cr/StarterCrR4Config.java new file mode 100644 index 0000000..a97cea7 --- /dev/null +++ b/src/main/java/ca/uhn/fhir/jpa/starter/cr/StarterCrR4Config.java @@ -0,0 +1,11 @@ +package ca.uhn.fhir.jpa.starter.cr; + +import ca.uhn.fhir.cr.config.CrR4Config; +import ca.uhn.fhir.jpa.starter.annotations.OnR4Condition; +import org.springframework.context.annotation.Conditional; +import org.springframework.context.annotation.Import; + +@Conditional({OnR4Condition.class, CrConfigCondition.class}) +@Import({CrR4Config.class}) +public class StarterCrR4Config { +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index fc94a82..52cfa85 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -93,7 +93,7 @@ hapi: # allow_multiple_delete: true # allow_override_default_search_params: true # auto_create_placeholder_reference_targets: false - # cql_enabled: true + # cr_enabled: true # default_encoding: JSON # default_pretty_print: true # default_page_size: 20 @@ -117,7 +117,7 @@ hapi: # fhirpath_interceptor_enabled: false # filter_search_enabled: true # graphql_enabled: true - # narrative_enabled: true + narrative_enabled: false # mdm_enabled: true # local_base_urls: # - https://hapi.fhir.org/baseR4