add cqlconfigbeans
This commit is contained in:
@@ -427,7 +427,7 @@ public class AppProperties {
|
|||||||
getCqlCompilerSignatureLevel(),
|
getCqlCompilerSignatureLevel(),
|
||||||
getCqlCompilerCompatibilityLevel()
|
getCqlCompilerCompatibilityLevel()
|
||||||
);
|
);
|
||||||
public CqlTranslatorOptions getCqlTranslator() {
|
public CqlTranslatorOptions getCqlTranslatorOptions() {
|
||||||
return this.cqlTranslatorOptions;
|
return this.cqlTranslatorOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -446,7 +446,7 @@ public class AppProperties {
|
|||||||
CqlOptions cqlOptions = new CqlOptions();
|
CqlOptions cqlOptions = new CqlOptions();
|
||||||
cqlOptions.setUseEmbeddedLibraries(this.cql_use_embedded_libraries);
|
cqlOptions.setUseEmbeddedLibraries(this.cql_use_embedded_libraries);
|
||||||
cqlOptions.setCqlEngineOptions(this.getCqlEngineOptions());
|
cqlOptions.setCqlEngineOptions(this.getCqlEngineOptions());
|
||||||
cqlOptions.setCqlTranslatorOptions(this.getCqlTranslator());
|
cqlOptions.setCqlTranslatorOptions(this.getCqlTranslatorOptions());
|
||||||
return cqlOptions;
|
return cqlOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import ca.uhn.fhir.rest.server.mail.MailSvc;
|
|||||||
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
|
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
|
||||||
|
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import org.cqframework.cql.cql2elm.CqlTranslatorOptions;
|
||||||
import org.hl7.fhir.r4.model.Bundle.BundleType;
|
import org.hl7.fhir.r4.model.Bundle.BundleType;
|
||||||
import org.springframework.beans.factory.FactoryBean;
|
import org.springframework.beans.factory.FactoryBean;
|
||||||
import org.springframework.boot.env.YamlPropertySourceLoader;
|
import org.springframework.boot.env.YamlPropertySourceLoader;
|
||||||
@@ -255,4 +256,6 @@ public class FhirServerConfigCommon {
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package ca.uhn.fhir.jpa.starter.cr;
|
package ca.uhn.fhir.jpa.starter.cr;
|
||||||
|
|
||||||
import ca.uhn.fhir.context.FhirContext;
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
import ca.uhn.fhir.cr.common.IRepositoryFactory;
|
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||||
import ca.uhn.fhir.cr.config.CrDstu3Config;
|
import ca.uhn.fhir.cr.config.CrDstu3Config;
|
||||||
import ca.uhn.fhir.cr.dstu3.IActivityDefinitionProcessorFactory;
|
import ca.uhn.fhir.cr.dstu3.IActivityDefinitionProcessorFactory;
|
||||||
import ca.uhn.fhir.cr.dstu3.IPlanDefinitionProcessorFactory;
|
import ca.uhn.fhir.cr.dstu3.IPlanDefinitionProcessorFactory;
|
||||||
@@ -11,26 +11,26 @@ import ca.uhn.fhir.cr.dstu3.activitydefinition.ActivityDefinitionOperationsProvi
|
|||||||
import ca.uhn.fhir.cr.dstu3.plandefinition.PlanDefinitionOperationsProvider;
|
import ca.uhn.fhir.cr.dstu3.plandefinition.PlanDefinitionOperationsProvider;
|
||||||
import ca.uhn.fhir.cr.dstu3.questionnaire.QuestionnaireOperationsProvider;
|
import ca.uhn.fhir.cr.dstu3.questionnaire.QuestionnaireOperationsProvider;
|
||||||
import ca.uhn.fhir.cr.dstu3.questionnaireresponse.QuestionnaireResponseOperationsProvider;
|
import ca.uhn.fhir.cr.dstu3.questionnaireresponse.QuestionnaireResponseOperationsProvider;
|
||||||
import ca.uhn.fhir.cr.repo.HapiFhirRepository;
|
import ca.uhn.fhir.jpa.starter.AppProperties;
|
||||||
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
|
||||||
import ca.uhn.fhir.jpa.starter.annotations.OnDSTU3Condition;
|
import ca.uhn.fhir.jpa.starter.annotations.OnDSTU3Condition;
|
||||||
import ca.uhn.fhir.rest.server.RestfulServer;
|
import ca.uhn.fhir.rest.server.RestfulServer;
|
||||||
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
|
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
|
||||||
|
import org.cqframework.cql.cql2elm.CqlTranslatorOptions;
|
||||||
|
import org.opencds.cqf.cql.evaluator.CqlOptions;
|
||||||
import org.opencds.cqf.cql.evaluator.activitydefinition.dstu3.ActivityDefinitionProcessor;
|
import org.opencds.cqf.cql.evaluator.activitydefinition.dstu3.ActivityDefinitionProcessor;
|
||||||
import org.opencds.cqf.cql.evaluator.library.EvaluationSettings;
|
import org.opencds.cqf.cql.evaluator.library.EvaluationSettings;
|
||||||
import org.opencds.cqf.cql.evaluator.plandefinition.dstu3.PlanDefinitionProcessor;
|
import org.opencds.cqf.cql.evaluator.plandefinition.dstu3.PlanDefinitionProcessor;
|
||||||
import org.opencds.cqf.cql.evaluator.questionnaire.dstu3.QuestionnaireProcessor;
|
import org.opencds.cqf.cql.evaluator.questionnaire.dstu3.QuestionnaireProcessor;
|
||||||
import org.opencds.cqf.cql.evaluator.questionnaireresponse.dstu3.QuestionnaireResponseProcessor;
|
import org.opencds.cqf.cql.evaluator.questionnaireresponse.dstu3.QuestionnaireResponseProcessor;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.slf4j.Logger;
|
||||||
import org.springframework.context.annotation.Conditional;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.*;
|
||||||
import org.springframework.context.annotation.Import;
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@Conditional({ OnDSTU3Condition.class, CrConfigCondition.class })
|
@Conditional({ OnDSTU3Condition.class, CrConfigCondition.class })
|
||||||
@Import({ CrDstu3Config.class })
|
@Import({ CrDstu3Config.class })
|
||||||
public class StarterCrDstu3Config {
|
public class StarterCrDstu3Config {
|
||||||
|
private static final Logger ourLogger = LoggerFactory.getLogger(StarterCrDstu3Config.class);
|
||||||
@Bean
|
@Bean
|
||||||
public PostInitProviderRegisterer postInitProviderRegisterer(RestfulServer theRestfulServer,
|
public PostInitProviderRegisterer postInitProviderRegisterer(RestfulServer theRestfulServer,
|
||||||
ResourceProviderFactory theResourceProviderFactory) {
|
ResourceProviderFactory theResourceProviderFactory) {
|
||||||
@@ -93,4 +93,25 @@ public class StarterCrDstu3Config {
|
|||||||
EvaluationSettings theEvaluationSettings) {
|
EvaluationSettings theEvaluationSettings) {
|
||||||
return r -> new PlanDefinitionProcessor(r, theEvaluationSettings);
|
return r -> new PlanDefinitionProcessor(r, theEvaluationSettings);
|
||||||
}
|
}
|
||||||
|
@Primary
|
||||||
|
@Bean
|
||||||
|
public CqlOptions cqlOptions(AppProperties theAppProperties) {
|
||||||
|
return theAppProperties.getCqlOptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Primary
|
||||||
|
@Bean
|
||||||
|
public CqlTranslatorOptions cqlTranslatorOptions(FhirContext theFhirContext, AppProperties theAppProperties) {
|
||||||
|
CqlTranslatorOptions options = theAppProperties.getCqlTranslatorOptions();
|
||||||
|
|
||||||
|
if (theFhirContext.getVersion().getVersion().isOlderThan(FhirVersionEnum.R4)
|
||||||
|
&& (options.getCompatibilityLevel().equals("1.5") || options.getCompatibilityLevel().equals("1.4"))) {
|
||||||
|
ourLogger.warn("{} {} {}",
|
||||||
|
"This server is configured to use CQL version > 1.4 and FHIR version <= DSTU3.",
|
||||||
|
"Most available CQL content for DSTU3 and below is for CQL versions 1.3.",
|
||||||
|
"If your CQL content causes translation errors, try setting the CQL compatibility level to 1.3");
|
||||||
|
}
|
||||||
|
|
||||||
|
return options;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ package ca.uhn.fhir.jpa.starter.cr;
|
|||||||
|
|
||||||
import ca.uhn.fhir.IHapiBootOrder;
|
import ca.uhn.fhir.IHapiBootOrder;
|
||||||
import ca.uhn.fhir.context.FhirContext;
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
import ca.uhn.fhir.cr.common.IRepositoryFactory;
|
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||||
|
|
||||||
import ca.uhn.fhir.cr.config.CrR4Config;
|
import ca.uhn.fhir.cr.config.CrR4Config;
|
||||||
import ca.uhn.fhir.cr.r4.IActivityDefinitionProcessorFactory;
|
import ca.uhn.fhir.cr.r4.IActivityDefinitionProcessorFactory;
|
||||||
import ca.uhn.fhir.cr.r4.IPlanDefinitionProcessorFactory;
|
import ca.uhn.fhir.cr.r4.IPlanDefinitionProcessorFactory;
|
||||||
@@ -12,26 +13,26 @@ import ca.uhn.fhir.cr.r4.activitydefinition.ActivityDefinitionOperationsProvider
|
|||||||
import ca.uhn.fhir.cr.r4.plandefinition.PlanDefinitionOperationsProvider;
|
import ca.uhn.fhir.cr.r4.plandefinition.PlanDefinitionOperationsProvider;
|
||||||
import ca.uhn.fhir.cr.r4.questionnaire.QuestionnaireOperationsProvider;
|
import ca.uhn.fhir.cr.r4.questionnaire.QuestionnaireOperationsProvider;
|
||||||
import ca.uhn.fhir.cr.r4.questionnaireresponse.QuestionnaireResponseOperationsProvider;
|
import ca.uhn.fhir.cr.r4.questionnaireresponse.QuestionnaireResponseOperationsProvider;
|
||||||
import ca.uhn.fhir.cr.repo.HapiFhirRepository;
|
import ca.uhn.fhir.jpa.starter.AppProperties;
|
||||||
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
|
||||||
import ca.uhn.fhir.jpa.starter.annotations.OnR4Condition;
|
import ca.uhn.fhir.jpa.starter.annotations.OnR4Condition;
|
||||||
import ca.uhn.fhir.rest.server.RestfulServer;
|
import ca.uhn.fhir.rest.server.RestfulServer;
|
||||||
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
|
import ca.uhn.fhir.rest.server.provider.ResourceProviderFactory;
|
||||||
|
import org.cqframework.cql.cql2elm.CqlTranslatorOptions;
|
||||||
|
import org.opencds.cqf.cql.evaluator.CqlOptions;
|
||||||
import org.opencds.cqf.cql.evaluator.activitydefinition.r4.ActivityDefinitionProcessor;
|
import org.opencds.cqf.cql.evaluator.activitydefinition.r4.ActivityDefinitionProcessor;
|
||||||
import org.opencds.cqf.cql.evaluator.library.EvaluationSettings;
|
import org.opencds.cqf.cql.evaluator.library.EvaluationSettings;
|
||||||
import org.opencds.cqf.cql.evaluator.plandefinition.r4.PlanDefinitionProcessor;
|
import org.opencds.cqf.cql.evaluator.plandefinition.r4.PlanDefinitionProcessor;
|
||||||
import org.opencds.cqf.cql.evaluator.questionnaire.r4.QuestionnaireProcessor;
|
import org.opencds.cqf.cql.evaluator.questionnaire.r4.QuestionnaireProcessor;
|
||||||
import org.opencds.cqf.cql.evaluator.questionnaireresponse.r4.QuestionnaireResponseProcessor;
|
import org.opencds.cqf.cql.evaluator.questionnaireresponse.r4.QuestionnaireResponseProcessor;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.slf4j.Logger;
|
||||||
import org.springframework.context.annotation.Conditional;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.*;
|
||||||
import org.springframework.context.annotation.Import;
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@Conditional({ OnR4Condition.class, CrConfigCondition.class })
|
@Conditional({ OnR4Condition.class, CrConfigCondition.class })
|
||||||
@Import({ CrR4Config.class })
|
@Import({ CrR4Config.class })
|
||||||
public class StarterCrR4Config {
|
public class StarterCrR4Config {
|
||||||
|
private static final Logger ourLogger = LoggerFactory.getLogger(StarterCrR4Config.class);
|
||||||
@Bean
|
@Bean
|
||||||
public PostInitProviderRegisterer postInitProviderRegisterer(RestfulServer theRestfulServer,
|
public PostInitProviderRegisterer postInitProviderRegisterer(RestfulServer theRestfulServer,
|
||||||
ResourceProviderFactory theResourceProviderFactory) {
|
ResourceProviderFactory theResourceProviderFactory) {
|
||||||
@@ -94,4 +95,27 @@ public class StarterCrR4Config {
|
|||||||
EvaluationSettings theEvaluationSettings) {
|
EvaluationSettings theEvaluationSettings) {
|
||||||
return r -> new PlanDefinitionProcessor(r, theEvaluationSettings);
|
return r -> new PlanDefinitionProcessor(r, theEvaluationSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Primary
|
||||||
|
@Bean
|
||||||
|
public CqlOptions cqlOptions(AppProperties theAppProperties) {
|
||||||
|
return theAppProperties.getCqlOptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Primary
|
||||||
|
@Bean
|
||||||
|
public CqlTranslatorOptions cqlTranslatorOptions(FhirContext theFhirContext, AppProperties theAppProperties) {
|
||||||
|
CqlTranslatorOptions options = theAppProperties.getCqlTranslatorOptions();
|
||||||
|
|
||||||
|
if (theFhirContext.getVersion().getVersion().isOlderThan(FhirVersionEnum.R4)
|
||||||
|
&& (options.getCompatibilityLevel().equals("1.5") || options.getCompatibilityLevel().equals("1.4"))) {
|
||||||
|
ourLogger.warn("{} {} {}",
|
||||||
|
"This server is configured to use CQL version > 1.4 and FHIR version <= DSTU3.",
|
||||||
|
"Most available CQL content for DSTU3 and below is for CQL versions 1.3.",
|
||||||
|
"If your CQL content causes translation errors, try setting the CQL compatibility level to 1.3");
|
||||||
|
}
|
||||||
|
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user