Update to 6.9.8

This commit is contained in:
Brenin Rhodes
2023-09-28 20:15:28 -06:00
parent 68b83d0c8e
commit 3d51876a8d
4 changed files with 205 additions and 14 deletions

View File

@@ -14,7 +14,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir</artifactId>
<version>6.9.7-SNAPSHOT</version>
<version>6.9.8-SNAPSHOT</version>
</parent>
<artifactId>hapi-fhir-jpaserver-starter</artifactId>
@@ -132,6 +132,12 @@
<artifactId>hapi-fhir-jpaserver-mdm</artifactId>
<version>${project.version}</version>
</dependency>
<!-- This dependency includes the CDS Hooks Server -->
<dependency>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir-server-cds-hooks</artifactId>
<version>${project.version}</version>
</dependency>
<!-- This dependency includes the OpenAPI Server -->
<dependency>
<groupId>ca.uhn.hapi.fhir</groupId>

View File

@@ -1,8 +1,12 @@
package ca.uhn.fhir.jpa.starter;
import ca.uhn.fhir.batch2.jobs.config.Batch2JobsConfig;
import ca.uhn.fhir.cr.common.IRepositoryFactory;
import ca.uhn.fhir.cr.repo.HapiFhirRepository;
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
import ca.uhn.fhir.jpa.batch2.JpaBatch2Config;
import ca.uhn.fhir.jpa.starter.annotations.OnEitherVersion;
import ca.uhn.fhir.jpa.starter.cdshooks.StarterCdsHooksConfig;
import ca.uhn.fhir.jpa.starter.common.FhirTesterConfig;
import ca.uhn.fhir.jpa.starter.cr.StarterCrDstu3Config;
import ca.uhn.fhir.jpa.starter.cr.StarterCrR4Config;
@@ -33,6 +37,7 @@ import org.springframework.web.servlet.DispatcherServlet;
@Import({
StarterCrR4Config.class,
StarterCrDstu3Config.class,
StarterCdsHooksConfig.class,
SubscriptionSubmitterConfig.class,
SubscriptionProcessorConfig.class,
SubscriptionChannelConfig.class,
@@ -90,4 +95,9 @@ public class Application extends SpringBootServletInitializer {
return registrationBean;
}
@Bean
IRepositoryFactory repositoryFactory(DaoRegistry theDaoRegistry, RestfulServer theRestfulServer) {
return rd -> new HapiFhirRepository(theDaoRegistry, rd, theRestfulServer);
}
}

View File

@@ -0,0 +1,182 @@
package ca.uhn.fhir.jpa.starter.cr;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.cr.common.IRepositoryFactory;
import ca.uhn.fhir.cr.config.ProviderLoader;
import ca.uhn.fhir.cr.config.ProviderSelector;
import ca.uhn.fhir.cr.r4.IActivityDefinitionProcessorFactory;
import ca.uhn.fhir.cr.r4.ICareGapsServiceFactory;
import ca.uhn.fhir.cr.r4.ICqlExecutionServiceFactory;
import ca.uhn.fhir.cr.r4.IMeasureServiceFactory;
import ca.uhn.fhir.cr.r4.IPlanDefinitionProcessorFactory;
import ca.uhn.fhir.cr.r4.IQuestionnaireProcessorFactory;
import ca.uhn.fhir.cr.r4.IQuestionnaireResponseProcessorFactory;
import ca.uhn.fhir.cr.r4.ISubmitDataProcessorFactory;
import ca.uhn.fhir.cr.r4.activitydefinition.ActivityDefinitionApplyProvider;
import ca.uhn.fhir.cr.r4.cqlexecution.CqlExecutionOperationProvider;
import ca.uhn.fhir.cr.r4.measure.CareGapsOperationProvider;
import ca.uhn.fhir.cr.r4.measure.MeasureOperationsProvider;
import ca.uhn.fhir.cr.r4.measure.MeasureService;
import ca.uhn.fhir.cr.r4.measure.SubmitDataProvider;
import ca.uhn.fhir.cr.r4.plandefinition.PlanDefinitionApplyProvider;
import ca.uhn.fhir.cr.r4.plandefinition.PlanDefinitionPackageProvider;
import ca.uhn.fhir.cr.r4.questionnaire.QuestionnairePackageProvider;
import ca.uhn.fhir.cr.r4.questionnaire.QuestionnairePopulateProvider;
import ca.uhn.fhir.cr.r4.questionnaireresponse.QuestionnaireResponseExtractProvider;
import ca.uhn.fhir.rest.server.RestfulServer;
import org.opencds.cqf.fhir.cql.EvaluationSettings;
import org.opencds.cqf.fhir.cr.activitydefinition.r4.ActivityDefinitionProcessor;
import org.opencds.cqf.fhir.cr.cql.r4.R4CqlExecutionService;
import org.opencds.cqf.fhir.cr.measure.CareGapsProperties;
import org.opencds.cqf.fhir.cr.measure.MeasureEvaluationOptions;
import org.opencds.cqf.fhir.cr.measure.r4.R4CareGapsService;
import org.opencds.cqf.fhir.cr.measure.r4.R4SubmitDataService;
import org.opencds.cqf.fhir.cr.plandefinition.r4.PlanDefinitionProcessor;
import org.opencds.cqf.fhir.cr.questionnaire.r4.QuestionnaireProcessor;
import org.opencds.cqf.fhir.cr.questionnaireresponse.r4.QuestionnaireResponseProcessor;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.Executor;
@Configuration
public class CrR4Config {
@Bean
IMeasureServiceFactory r4MeasureServiceFactory(
IRepositoryFactory theRepositoryFactory, MeasureEvaluationOptions theEvaluationOptions) {
return rd -> new MeasureService(theRepositoryFactory.create(rd), theEvaluationOptions);
}
@Bean
ISubmitDataProcessorFactory r4SubmitDataProcessorFactory(IRepositoryFactory theRepositoryFactory) {
return rd -> new R4SubmitDataService(theRepositoryFactory.create(rd));
}
@Bean
ICqlExecutionServiceFactory r4CqlExecutionServiceFactory(
IRepositoryFactory theRepositoryFactory, EvaluationSettings theEvaluationSettings) {
return rd -> new R4CqlExecutionService(theRepositoryFactory.create(rd), theEvaluationSettings);
}
@Bean
CqlExecutionOperationProvider r4CqlExecutionOperationProvider() {
return new CqlExecutionOperationProvider();
}
@Bean
ICareGapsServiceFactory careGapsServiceFactory(
IRepositoryFactory theRepositoryFactory,
CareGapsProperties theCareGapsProperties,
MeasureEvaluationOptions theMeasureEvaluationOptions,
@Qualifier("cqlExecutor") Executor theExecutor) {
return rd -> new R4CareGapsService(
theCareGapsProperties,
theRepositoryFactory.create(rd),
theMeasureEvaluationOptions,
theExecutor,
rd.getFhirServerBase());
}
@Bean
CareGapsOperationProvider r4CareGapsOperationProvider() {
return new CareGapsOperationProvider();
}
@Bean
SubmitDataProvider r4SubmitDataProvider() {
return new SubmitDataProvider();
}
@Bean
MeasureOperationsProvider r4MeasureOperationsProvider() {
return new MeasureOperationsProvider();
}
@Bean
IActivityDefinitionProcessorFactory r4ActivityDefinitionProcessorFactory(
IRepositoryFactory theRepositoryFactory, EvaluationSettings theEvaluationSettings) {
return rd -> new ActivityDefinitionProcessor(
theRepositoryFactory.create(rd), theEvaluationSettings);
}
@Bean
IPlanDefinitionProcessorFactory r4PlanDefinitionProcessorFactory(
IRepositoryFactory theRepositoryFactory, EvaluationSettings theEvaluationSettings) {
return rd -> new PlanDefinitionProcessor(
theRepositoryFactory.create(rd), theEvaluationSettings);
}
@Bean
IQuestionnaireProcessorFactory r4QuestionnaireProcessorFactory(
IRepositoryFactory theRepositoryFactory, EvaluationSettings theEvaluationSettings) {
return rd -> new QuestionnaireProcessor(
theRepositoryFactory.create(rd), theEvaluationSettings);
}
@Bean
IQuestionnaireResponseProcessorFactory r4QuestionnaireResponseProcessorFactory(
IRepositoryFactory theRepositoryFactory, EvaluationSettings theEvaluationSettings) {
return rd -> new QuestionnaireResponseProcessor(
theRepositoryFactory.create(rd), theEvaluationSettings);
}
@Bean
ActivityDefinitionApplyProvider r4ActivityDefinitionApplyProvider() {
return new ActivityDefinitionApplyProvider();
}
@Bean
PlanDefinitionApplyProvider r4PlanDefinitionApplyProvider() {
return new PlanDefinitionApplyProvider();
}
@Bean
QuestionnaireResponseExtractProvider
r4QuestionnaireResponseExtractProvider() {
return new QuestionnaireResponseExtractProvider();
}
@Bean
PlanDefinitionPackageProvider r4PlanDefinitionPackageProvider() {
return new PlanDefinitionPackageProvider();
}
@Bean
QuestionnairePackageProvider r4QuestionnairePackageProvider() {
return new QuestionnairePackageProvider();
}
@Bean
QuestionnairePopulateProvider r4QuestionnairePopulateProvider() {
return new QuestionnairePopulateProvider();
}
@Bean
public ProviderLoader r4PdLoader(
ApplicationContext theApplicationContext, FhirContext theFhirContext, RestfulServer theRestfulServer) {
var selector = new ProviderSelector(
theFhirContext,
Map.of(
FhirVersionEnum.R4,
Arrays.asList(
MeasureOperationsProvider.class,
SubmitDataProvider.class,
CareGapsOperationProvider.class,
CqlExecutionOperationProvider.class,
ActivityDefinitionApplyProvider.class,
PlanDefinitionApplyProvider.class,
QuestionnaireResponseExtractProvider.class,
QuestionnairePackageProvider.class,
PlanDefinitionPackageProvider.class,
QuestionnairePopulateProvider.class)));
return new ProviderLoader(theRestfulServer, theApplicationContext, selector);
}
}

View File

@@ -1,18 +1,13 @@
package ca.uhn.fhir.jpa.starter.cr;
import ca.uhn.fhir.cr.config.r4.ApplyOperationConfig;
import ca.uhn.fhir.cr.config.r4.CrR4Config;
import ca.uhn.fhir.cr.config.r4.ExtractOperationConfig;
import ca.uhn.fhir.cr.config.r4.PackageOperationConfig;
import ca.uhn.fhir.cr.config.r4.PopulateOperationConfig;
import ca.uhn.fhir.cr.repo.HapiFhirRepository;
import ca.uhn.fhir.jpa.starter.annotations.OnR4Condition;
import ca.uhn.fhir.rest.server.RestfulServer;
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Import;
import ca.uhn.fhir.cr.common.CqlThreadFactory;
import ca.uhn.fhir.cr.common.IRepositoryFactory;
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
import ca.uhn.fhir.jpa.starter.AppProperties;
import org.cqframework.cql.cql2elm.CqlCompilerOptions;
import org.cqframework.cql.cql2elm.model.CompiledLibrary;
@@ -38,11 +33,7 @@ import java.util.concurrent.Executors;
@Configuration
@Conditional({ OnR4Condition.class, CrConfigCondition.class })
@Import({ CrR4Config.class,
ApplyOperationConfig.class,
ExtractOperationConfig.class,
PackageOperationConfig.class,
PopulateOperationConfig.class})
@Import(CrR4Config.class)
public class StarterCrR4Config {
private static final Logger ourLogger = LoggerFactory.getLogger(StarterCrR4Config.class);
@@ -57,6 +48,7 @@ public class StarterCrR4Config {
return executor;
}
@Bean
CareGapsProperties careGapsProperties(AppProperties theAppProperties) {
var careGapsProperties = new CareGapsProperties();
@@ -75,6 +67,7 @@ public class StarterCrR4Config {
}
return measureEvalOptions;
}
@Bean
public EvaluationSettings evaluationSettings(
AppProperties theAppProperties,