1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.commons.ihe.fhir;
17
18 import ca.uhn.fhir.context.FhirContext;
19 import ca.uhn.fhir.context.PerformanceOptionsEnum;
20 import org.openehealth.ipf.commons.ihe.core.TransactionConfiguration;
21 import org.openehealth.ipf.commons.ihe.core.atna.AuditStrategy;
22 import org.openehealth.ipf.commons.ihe.fhir.audit.FhirAuditDataset;
23
24 import java.util.Collections;
25 import java.util.List;
26
27
28
29
30
31
32
33 public class FhirTransactionConfiguration<T extends FhirAuditDataset> extends TransactionConfiguration<T> {
34
35 private final FhirContext fhirContext;
36 private final List<? extends AbstractPlainProvider> staticResourceProviders;
37 private final ClientRequestFactory<?> staticClientRequestFactory;
38 private final FhirTransactionValidator fhirValidator;
39 private boolean supportsLazyLoading;
40 private boolean deferModelScanning;
41
42 public FhirTransactionConfiguration(
43 String name,
44 String description,
45 boolean isQuery,
46 AuditStrategy<T> clientAuditStrategy,
47 AuditStrategy<T> serverAuditStrategy,
48 FhirContext fhirContext,
49 AbstractPlainProvider resourceProvider,
50 ClientRequestFactory<?> clientRequestFactory,
51 FhirTransactionValidator fhirValidator) {
52 this(name, description, isQuery, clientAuditStrategy, serverAuditStrategy, fhirContext,
53 Collections.singletonList(resourceProvider), clientRequestFactory, fhirValidator);
54 }
55
56 public FhirTransactionConfiguration(
57 String name,
58 String description,
59 boolean isQuery,
60 AuditStrategy<T> clientAuditStrategy,
61 AuditStrategy<T> serverAuditStrategy,
62 FhirContext fhirContext,
63 List<? extends AbstractPlainProvider> resourceProviders,
64 ClientRequestFactory<?> clientRequestFactory,
65 FhirTransactionValidator fhirValidator) {
66 super(name, description, isQuery, clientAuditStrategy, serverAuditStrategy);
67 this.fhirContext = fhirContext;
68 this.staticResourceProviders = resourceProviders;
69 this.staticClientRequestFactory = clientRequestFactory;
70 this.fhirValidator = fhirValidator;
71 }
72
73 public List<? extends AbstractPlainProvider> getStaticResourceProvider() {
74 return staticResourceProviders;
75 }
76
77 public ClientRequestFactory<?> getStaticClientRequestFactory() {
78 return staticClientRequestFactory;
79 }
80
81 public FhirContext initializeFhirContext() {
82 fhirContext.setRestfulClientFactory(new SslAwareApacheRestfulClientFactory(fhirContext));
83 if (deferModelScanning) {
84 fhirContext.setPerformanceOptions(PerformanceOptionsEnum.DEFERRED_MODEL_SCANNING);
85 }
86 return fhirContext;
87 }
88
89 public FhirTransactionValidator getFhirValidator() {
90 return fhirValidator;
91 }
92
93
94
95
96
97
98
99 public void setSupportsLazyLoading(boolean supportsLazyLoading) {
100 this.supportsLazyLoading = supportsLazyLoading;
101 }
102
103 public boolean supportsLazyLoading() {
104 return supportsLazyLoading;
105 }
106
107 public boolean isDeferModelScanning() {
108 return deferModelScanning;
109 }
110
111
112
113
114
115
116
117
118 public void setDeferModelScanning(boolean deferModelScanning) {
119 this.deferModelScanning = deferModelScanning;
120 }
121 }