Skip to content

Commit 6b5d24b

Browse files
authored
Merge pull request hapifhir#789 from hapifhir/ld-20250407-cr-cdshooks
Change CR plugins to use new CR HAPI package from Clinical Reasoning
2 parents 02bb28a + 5ba6ab1 commit 6b5d24b

14 files changed

+97
-89
lines changed

pom.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<properties>
77
<java.version>17</java.version>
88
<hapi.fhir.jpa.server.starter.revision>1</hapi.fhir.jpa.server.starter.revision>
9+
<clinical-reasoning.version>3.19.0</clinical-reasoning.version>
910
</properties>
1011

1112
<!-- one-liner to take you to the cloud with settings form the application.yaml file: -->
@@ -113,9 +114,9 @@
113114
</dependency>
114115
<!-- This dependency includes the JPA CQL Server -->
115116
<dependency>
116-
<groupId>ca.uhn.hapi.fhir</groupId>
117-
<artifactId>hapi-fhir-storage-cr</artifactId>
118-
<version>${project.parent.version}</version>
117+
<groupId>org.opencds.cqf.fhir</groupId>
118+
<artifactId>cqf-fhir-cr-hapi</artifactId>
119+
<version>${clinical-reasoning.version}</version>
119120
</dependency>
120121
<!-- This dependency includes the JPA MDM Server -->
121122
<dependency>

src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/CdsHooksServlet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import java.io.IOException;
2525
import java.util.stream.Collectors;
2626

27-
import static ca.uhn.hapi.fhir.cdshooks.config.CdsHooksConfig.CDS_HOOKS_OBJECT_MAPPER_FACTORY;
27+
import static org.opencds.cqf.fhir.cr.hapi.config.test.TestCdsHooksConfig.CDS_HOOKS_OBJECT_MAPPER_FACTORY;
2828

2929
@Configurable
3030
public class CdsHooksServlet extends HttpServlet {

src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/StarterCdsHooksConfig.java

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@
55
import ca.uhn.fhir.jpa.starter.cr.CrConfigCondition;
66
import ca.uhn.fhir.jpa.starter.cr.CrProperties;
77
import ca.uhn.hapi.fhir.cdshooks.api.ICdsHooksDaoAuthorizationSvc;
8-
import ca.uhn.hapi.fhir.cdshooks.config.CdsHooksConfig;
98
import ca.uhn.hapi.fhir.cdshooks.svc.CdsHooksContextBooter;
10-
import ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrServiceRegistry;
11-
import ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrSettings;
12-
import ca.uhn.hapi.fhir.cdshooks.svc.cr.ICdsCrServiceRegistry;
13-
import ca.uhn.hapi.fhir.cdshooks.svc.cr.discovery.CdsCrDiscoveryServiceRegistry;
14-
import ca.uhn.hapi.fhir.cdshooks.svc.cr.discovery.ICdsCrDiscoveryServiceRegistry;
159
import org.hl7.fhir.instance.model.api.IBaseResource;
10+
import org.opencds.cqf.fhir.cr.hapi.cdshooks.CdsCrServiceRegistry;
11+
import org.opencds.cqf.fhir.cr.hapi.cdshooks.CdsCrSettings;
12+
import org.opencds.cqf.fhir.cr.hapi.cdshooks.ICdsCrServiceRegistry;
13+
import org.opencds.cqf.fhir.cr.hapi.cdshooks.discovery.CdsCrDiscoveryServiceRegistry;
14+
import org.opencds.cqf.fhir.cr.hapi.cdshooks.discovery.ICdsCrDiscoveryServiceRegistry;
15+
import org.opencds.cqf.fhir.cr.hapi.config.CrCdsHooksConfig;
16+
import org.opencds.cqf.fhir.cr.hapi.config.RepositoryConfig;
17+
import org.opencds.cqf.fhir.cr.hapi.config.test.TestCdsHooksConfig;
1618
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
1719
import org.springframework.boot.web.servlet.ServletRegistrationBean;
1820
import org.springframework.context.annotation.Bean;
@@ -22,35 +24,22 @@
2224

2325
@Configuration
2426
@Conditional({CdsHooksConfigCondition.class, CrConfigCondition.class})
25-
@Import({CdsHooksConfig.class, CrCommonConfig.class})
27+
@Import({RepositoryConfig.class, TestCdsHooksConfig.class, CrCdsHooksConfig.class, CrCommonConfig.class})
2628
public class StarterCdsHooksConfig {
2729

28-
// @Bean
29-
// CdsPrefetchSvc cdsPrefetchSvc(
30-
// CdsResolutionStrategySvc theCdsResolutionStrategySvc,
31-
// CdsPrefetchDaoSvc theResourcePrefetchDao,
32-
// CdsPrefetchFhirClientSvc theResourcePrefetchFhirClient,
33-
// ICdsHooksDaoAuthorizationSvc theCdsHooksDaoAuthorizationSvc) {
34-
// return new ModuleConfigurationPrefetchSvc(
35-
// theCdsResolutionStrategySvc,
36-
// theResourcePrefetchDao,
37-
// theResourcePrefetchFhirClient,
38-
// theCdsHooksDaoAuthorizationSvc);
39-
// }
40-
4130
@Bean
4231
public ICdsCrDiscoveryServiceRegistry cdsCrDiscoveryServiceRegistry() {
4332
CdsCrDiscoveryServiceRegistry registry = new CdsCrDiscoveryServiceRegistry();
4433
registry.unregister(FhirVersionEnum.R4);
45-
registry.register(FhirVersionEnum.R4, UpdatedCrDiscoveryServiceR4.class);
34+
registry.register(FhirVersionEnum.R4, UpdatedCrDiscoveryService.class);
4635
return registry;
4736
}
4837

4938
@Bean
5039
public ICdsCrServiceRegistry cdsCrServiceRegistry() {
5140
CdsCrServiceRegistry registry = new CdsCrServiceRegistry();
5241
registry.unregister(FhirVersionEnum.R4);
53-
registry.register(FhirVersionEnum.R4, UpdatedCdsCrServiceR4.class);
42+
registry.register(FhirVersionEnum.R4, UpdatedCdsCrService.class);
5443
return registry;
5544
}
5645

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package ca.uhn.fhir.jpa.starter.cdshooks;
2+
3+
import ca.uhn.fhir.context.FhirVersionEnum;
4+
import ca.uhn.fhir.rest.api.server.RequestDetails;
5+
import ca.uhn.fhir.rest.api.server.cdshooks.CdsServiceRequestJson;
6+
import ca.uhn.hapi.fhir.cdshooks.api.ICdsConfigService;
7+
import org.hl7.fhir.instance.model.api.IBaseParameters;
8+
import org.hl7.fhir.instance.model.api.IPrimitiveType;
9+
import org.opencds.cqf.fhir.api.Repository;
10+
import org.opencds.cqf.fhir.cr.hapi.cdshooks.CdsCrService;
11+
import org.opencds.cqf.fhir.utility.adapter.IAdapterFactory;
12+
13+
import static org.opencds.cqf.fhir.utility.Constants.APPLY_PARAMETER_DATA;
14+
15+
public class UpdatedCdsCrService extends CdsCrService {
16+
private final IAdapterFactory adapterFactory;
17+
18+
public UpdatedCdsCrService(
19+
RequestDetails theRequestDetails, Repository theRepository, ICdsConfigService theCdsConfigService) {
20+
super(theRequestDetails, theRepository, theCdsConfigService);
21+
adapterFactory = IAdapterFactory.forFhirContext(theRepository.fhirContext());
22+
}
23+
24+
@Override
25+
public IBaseParameters encodeParams(CdsServiceRequestJson theJson) {
26+
var parameters = adapterFactory.createParameters(super.encodeParams(theJson));
27+
if (parameters.hasParameter(APPLY_PARAMETER_DATA)) {
28+
parameters.addParameter(
29+
"useServerData",
30+
booleanTypeForVersion(parameters.fhirContext().getVersion().getVersion(), false));
31+
}
32+
return (IBaseParameters) parameters.get();
33+
}
34+
35+
private IPrimitiveType<Boolean> booleanTypeForVersion(FhirVersionEnum fhirVersion, boolean value) {
36+
return switch (fhirVersion) {
37+
case DSTU2 -> new org.hl7.fhir.dstu2.model.BooleanType(value);
38+
case DSTU3 -> new org.hl7.fhir.dstu3.model.BooleanType(value);
39+
case R4 -> new org.hl7.fhir.r4.model.BooleanType(value);
40+
case R5 -> new org.hl7.fhir.r5.model.BooleanType(value);
41+
default -> throw new IllegalArgumentException("unknown or unsupported FHIR version");
42+
};
43+
}
44+
}

src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCdsCrServiceR4.java

Lines changed: 0 additions & 28 deletions
This file was deleted.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package ca.uhn.fhir.jpa.starter.cdshooks;
2+
3+
import org.hl7.fhir.instance.model.api.IIdType;
4+
import org.opencds.cqf.fhir.api.Repository;
5+
import org.opencds.cqf.fhir.cr.hapi.cdshooks.discovery.CrDiscoveryService;
6+
7+
public class UpdatedCrDiscoveryService extends CrDiscoveryService {
8+
public UpdatedCrDiscoveryService(IIdType thePlanDefinitionId, Repository theRepository) {
9+
super(thePlanDefinitionId, theRepository);
10+
maxUriLength = 6000;
11+
}
12+
}

src/main/java/ca/uhn/fhir/jpa/starter/cdshooks/UpdatedCrDiscoveryServiceR4.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/main/java/ca/uhn/fhir/jpa/starter/cr/CrCommonConfig.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package ca.uhn.fhir.jpa.starter.cr;
22

3-
import ca.uhn.fhir.cr.common.CodeCacheResourceChangeListener;
4-
import ca.uhn.fhir.cr.common.CqlThreadFactory;
5-
import ca.uhn.fhir.cr.common.ElmCacheResourceChangeListener;
63
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
74
import ca.uhn.fhir.jpa.cache.IResourceChangeListenerRegistry;
85
import ca.uhn.fhir.jpa.cache.ResourceChangeListenerRegistryInterceptor;
@@ -19,6 +16,9 @@
1916
import org.opencds.cqf.fhir.cql.EvaluationSettings;
2017
import org.opencds.cqf.fhir.cql.engine.retrieve.RetrieveSettings;
2118
import org.opencds.cqf.fhir.cql.engine.terminology.TerminologySettings;
19+
import org.opencds.cqf.fhir.cr.hapi.common.CodeCacheResourceChangeListener;
20+
import org.opencds.cqf.fhir.cr.hapi.common.CqlThreadFactory;
21+
import org.opencds.cqf.fhir.cr.hapi.common.ElmCacheResourceChangeListener;
2222
import org.opencds.cqf.fhir.cr.measure.CareGapsProperties;
2323
import org.opencds.cqf.fhir.cr.measure.MeasureEvaluationOptions;
2424
import org.opencds.cqf.fhir.utility.ValidationProfile;

src/main/java/ca/uhn/fhir/jpa/starter/cr/StarterCrDstu3Config.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package ca.uhn.fhir.jpa.starter.cr;
22

3-
import ca.uhn.fhir.cr.config.dstu3.ApplyOperationConfig;
4-
import ca.uhn.fhir.cr.config.dstu3.CrDstu3Config;
5-
import ca.uhn.fhir.cr.config.dstu3.DataRequirementsOperationConfig;
6-
import ca.uhn.fhir.cr.config.dstu3.EvaluateOperationConfig;
7-
import ca.uhn.fhir.cr.config.dstu3.PackageOperationConfig;
83
import ca.uhn.fhir.jpa.starter.annotations.OnDSTU3Condition;
4+
import org.opencds.cqf.fhir.cr.hapi.config.dstu3.ApplyOperationConfig;
5+
import org.opencds.cqf.fhir.cr.hapi.config.dstu3.CrDstu3Config;
6+
import org.opencds.cqf.fhir.cr.hapi.config.dstu3.DataRequirementsOperationConfig;
7+
import org.opencds.cqf.fhir.cr.hapi.config.dstu3.EvaluateOperationConfig;
8+
import org.opencds.cqf.fhir.cr.hapi.config.dstu3.PackageOperationConfig;
99
import org.springframework.context.annotation.*;
1010

1111
@Configuration

src/main/java/ca/uhn/fhir/jpa/starter/cr/StarterCrR4Config.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package ca.uhn.fhir.jpa.starter.cr;
22

3-
import ca.uhn.fhir.cr.config.r4.ApplyOperationConfig;
4-
import ca.uhn.fhir.cr.config.r4.CrR4Config;
5-
import ca.uhn.fhir.cr.config.r4.DataRequirementsOperationConfig;
6-
import ca.uhn.fhir.cr.config.r4.EvaluateOperationConfig;
7-
import ca.uhn.fhir.cr.config.r4.ExtractOperationConfig;
8-
import ca.uhn.fhir.cr.config.r4.PackageOperationConfig;
9-
import ca.uhn.fhir.cr.config.r4.PopulateOperationConfig;
10-
import ca.uhn.fhir.cr.config.r4.QuestionnaireOperationConfig;
113
import ca.uhn.fhir.jpa.starter.annotations.OnR4Condition;
4+
import org.opencds.cqf.fhir.cr.hapi.config.r4.ApplyOperationConfig;
5+
import org.opencds.cqf.fhir.cr.hapi.config.r4.CrR4Config;
6+
import org.opencds.cqf.fhir.cr.hapi.config.r4.DataRequirementsOperationConfig;
7+
import org.opencds.cqf.fhir.cr.hapi.config.r4.EvaluateOperationConfig;
8+
import org.opencds.cqf.fhir.cr.hapi.config.r4.ExtractOperationConfig;
9+
import org.opencds.cqf.fhir.cr.hapi.config.r4.PackageOperationConfig;
10+
import org.opencds.cqf.fhir.cr.hapi.config.r4.PopulateOperationConfig;
11+
import org.opencds.cqf.fhir.cr.hapi.config.r4.QuestionnaireOperationConfig;
1212
import org.springframework.context.annotation.Conditional;
1313
import org.springframework.context.annotation.Configuration;
1414
import org.springframework.context.annotation.Import;

0 commit comments

Comments
 (0)