001package ca.uhn.fhir.jpa.mdm.config;
002
003/*-
004 * #%L
005 * HAPI FHIR JPA Server - Master Data Management
006 * %%
007 * Copyright (C) 2014 - 2022 Smile CDR, Inc.
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 *
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 *
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import ca.uhn.fhir.context.FhirContext;
024import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
025import ca.uhn.fhir.jpa.api.svc.IGoldenResourceSearchSvc;
026import ca.uhn.fhir.jpa.mdm.broker.MdmMessageHandler;
027import ca.uhn.fhir.jpa.mdm.broker.MdmMessageKeySvc;
028import ca.uhn.fhir.jpa.mdm.broker.MdmQueueConsumerLoader;
029import ca.uhn.fhir.jpa.mdm.dao.MdmLinkDaoSvc;
030import ca.uhn.fhir.mdm.dao.MdmLinkFactory;
031import ca.uhn.fhir.jpa.mdm.svc.GoldenResourceMergerSvcImpl;
032import ca.uhn.fhir.jpa.mdm.svc.GoldenResourceSearchSvcImpl;
033import ca.uhn.fhir.jpa.mdm.svc.IMdmModelConverterSvc;
034import ca.uhn.fhir.jpa.mdm.svc.MdmControllerSvcImpl;
035import ca.uhn.fhir.jpa.mdm.svc.MdmEidUpdateService;
036import ca.uhn.fhir.jpa.mdm.svc.MdmLinkCreateSvcImpl;
037import ca.uhn.fhir.jpa.mdm.svc.MdmLinkQuerySvcImplSvc;
038import ca.uhn.fhir.jpa.mdm.svc.MdmLinkSvcImpl;
039import ca.uhn.fhir.jpa.mdm.svc.MdmLinkUpdaterSvcImpl;
040import ca.uhn.fhir.jpa.mdm.svc.MdmMatchFinderSvcImpl;
041import ca.uhn.fhir.jpa.mdm.svc.MdmMatchLinkSvc;
042import ca.uhn.fhir.jpa.mdm.svc.MdmModelConverterSvcImpl;
043import ca.uhn.fhir.jpa.mdm.svc.MdmResourceDaoSvc;
044import ca.uhn.fhir.jpa.mdm.svc.MdmResourceFilteringSvc;
045import ca.uhn.fhir.jpa.mdm.svc.MdmSurvivorshipSvcImpl;
046import ca.uhn.fhir.jpa.mdm.svc.candidate.CandidateSearcher;
047import ca.uhn.fhir.jpa.mdm.svc.candidate.FindCandidateByEidSvc;
048import ca.uhn.fhir.jpa.mdm.svc.candidate.FindCandidateByExampleSvc;
049import ca.uhn.fhir.jpa.mdm.svc.candidate.FindCandidateByLinkSvc;
050import ca.uhn.fhir.jpa.mdm.svc.candidate.MdmCandidateSearchCriteriaBuilderSvc;
051import ca.uhn.fhir.jpa.mdm.svc.candidate.MdmCandidateSearchSvc;
052import ca.uhn.fhir.jpa.mdm.svc.candidate.MdmGoldenResourceFindingSvc;
053import ca.uhn.fhir.jpa.mdm.util.MdmPartitionHelper;
054import ca.uhn.fhir.jpa.partition.IRequestPartitionHelperSvc;
055import ca.uhn.fhir.mdm.api.IGoldenResourceMergerSvc;
056import ca.uhn.fhir.mdm.api.IMdmControllerSvc;
057import ca.uhn.fhir.mdm.api.IMdmLinkCreateSvc;
058import ca.uhn.fhir.mdm.api.IMdmLinkQuerySvc;
059import ca.uhn.fhir.mdm.api.IMdmLinkSvc;
060import ca.uhn.fhir.mdm.api.IMdmLinkUpdaterSvc;
061import ca.uhn.fhir.mdm.api.IMdmMatchFinderSvc;
062import ca.uhn.fhir.mdm.api.IMdmSettings;
063import ca.uhn.fhir.mdm.api.IMdmSurvivorshipService;
064import ca.uhn.fhir.mdm.batch2.MdmBatch2Config;
065import ca.uhn.fhir.mdm.dao.IMdmLinkImplFactory;
066import ca.uhn.fhir.mdm.interceptor.IMdmStorageInterceptor;
067import ca.uhn.fhir.mdm.interceptor.MdmStorageInterceptor;
068import ca.uhn.fhir.mdm.log.Logs;
069import ca.uhn.fhir.mdm.provider.MdmControllerHelper;
070import ca.uhn.fhir.mdm.provider.MdmProviderLoader;
071import ca.uhn.fhir.mdm.rules.svc.MdmResourceMatcherSvc;
072import ca.uhn.fhir.mdm.svc.MdmSearchParamSvc;
073import ca.uhn.fhir.mdm.util.EIDHelper;
074import ca.uhn.fhir.mdm.util.GoldenResourceHelper;
075import ca.uhn.fhir.mdm.util.MessageHelper;
076import ca.uhn.fhir.validation.IResourceLoader;
077import org.slf4j.Logger;
078import org.springframework.context.annotation.Bean;
079import org.springframework.context.annotation.Configuration;
080import org.springframework.context.annotation.Import;
081
082@Configuration
083@Import({MdmCommonConfig.class, MdmBatch2Config.class})
084public class MdmConsumerConfig {
085        private static final Logger ourLog = Logs.getMdmTroubleshootingLog();
086
087        @Bean
088        IMdmStorageInterceptor mdmStorageInterceptor() {
089                return new MdmStorageInterceptor();
090        }
091
092        @Bean
093        IMdmSurvivorshipService mdmSurvivorshipService() { return new MdmSurvivorshipSvcImpl(); }
094
095        @Bean
096        MdmQueueConsumerLoader mdmQueueConsumerLoader() {
097                return new MdmQueueConsumerLoader();
098        }
099
100        @Bean
101        MdmMessageHandler mdmMessageHandler() {
102                return new MdmMessageHandler();
103        }
104
105        @Bean
106        MdmMessageKeySvc mdmMessageKeySvc() {
107                return new MdmMessageKeySvc();
108        }
109        @Bean
110        MdmMatchLinkSvc mdmMatchLinkSvc() {
111                return new MdmMatchLinkSvc();
112        }
113
114        @Bean
115        MdmEidUpdateService eidUpdateService() {
116                return new MdmEidUpdateService();
117        }
118
119        @Bean
120        MdmResourceDaoSvc mdmResourceDaoSvc() {
121                return new MdmResourceDaoSvc();
122        }
123
124        @Bean
125        IMdmLinkSvc mdmLinkSvc() {
126                return new MdmLinkSvcImpl();
127        }
128
129        @Bean
130        GoldenResourceHelper goldenResourceHelper(FhirContext theFhirContext) {
131                return new GoldenResourceHelper(theFhirContext);
132        }
133
134        @Bean
135        MessageHelper messageHelper(IMdmSettings theMdmSettings, FhirContext theFhirContext) {
136                return new MessageHelper(theMdmSettings, theFhirContext);
137        }
138
139        @Bean
140        MdmSubscriptionLoader mdmSubscriptionLoader() {
141                return new MdmSubscriptionLoader();
142        }
143
144        @Bean
145        MdmGoldenResourceFindingSvc mdmGoldenResourceFindingSvc() {
146                return new MdmGoldenResourceFindingSvc();
147        }
148
149        @Bean
150        FindCandidateByEidSvc findCandidateByEidSvc() {
151                return new FindCandidateByEidSvc();
152        }
153
154        @Bean
155        FindCandidateByLinkSvc findCandidateByLinkSvc() {
156                return new FindCandidateByLinkSvc();
157        }
158
159        @Bean
160        FindCandidateByExampleSvc findCandidateByScoreSvc() {
161                return new FindCandidateByExampleSvc();
162        }
163
164        @Bean
165        MdmProviderLoader mdmProviderLoader() {
166                return new MdmProviderLoader();
167        }
168
169
170        @Bean
171        IMdmMatchFinderSvc mdmMatchFinderSvc() {
172                return new MdmMatchFinderSvcImpl();
173        }
174
175        @Bean
176        IGoldenResourceMergerSvc mdmGoldenResourceMergerSvc() {
177                return new GoldenResourceMergerSvcImpl();
178        }
179
180
181        @Bean
182        IMdmLinkQuerySvc mdmLinkQuerySvc() {
183                return new MdmLinkQuerySvcImplSvc();
184        }
185
186        @Bean
187        IMdmModelConverterSvc mdmModelConverterSvc() {
188                return new MdmModelConverterSvcImpl();
189        }
190
191
192        @Bean
193        MdmCandidateSearchSvc mdmCandidateSearchSvc() {
194                return new MdmCandidateSearchSvc();
195        }
196
197        @Bean
198        CandidateSearcher candidateSearcher(DaoRegistry theDaoRegistry, IMdmSettings theMdmSettings, MdmSearchParamSvc theMdmSearchParamSvc) {
199                return new CandidateSearcher(theDaoRegistry, theMdmSettings, theMdmSearchParamSvc);
200        }
201
202        @Bean
203        MdmCandidateSearchCriteriaBuilderSvc mdmCriteriaBuilderSvc() {
204                return new MdmCandidateSearchCriteriaBuilderSvc();
205        }
206
207        @Bean
208        MdmResourceMatcherSvc mdmResourceComparatorSvc(FhirContext theFhirContext, IMdmSettings theMdmSettings) {
209                return new MdmResourceMatcherSvc(theFhirContext, theMdmSettings);
210        }
211
212        @Bean
213        EIDHelper eidHelper(FhirContext theFhirContext, IMdmSettings theMdmSettings) {
214                return new EIDHelper(theFhirContext, theMdmSettings);
215        }
216
217        @Bean
218        MdmLinkDaoSvc mdmLinkDaoSvc() {
219                return new MdmLinkDaoSvc();
220        }
221
222        @Bean
223        MdmLinkFactory mdmLinkFactory(IMdmSettings theMdmSettings, IMdmLinkImplFactory theMdmLinkImplFactory) {
224                return new MdmLinkFactory(theMdmSettings, theMdmLinkImplFactory);
225        }
226
227        @Bean
228        IMdmLinkUpdaterSvc mdmLinkUpdaterSvc() {
229                return new MdmLinkUpdaterSvcImpl();
230        }
231
232        @Bean
233        IMdmLinkCreateSvc mdmLinkCreateSvc() {
234                return new MdmLinkCreateSvcImpl();
235        }
236
237
238        @Bean
239        MdmLoader mdmLoader() {
240                return new MdmLoader();
241        }
242
243        @Bean
244        MdmResourceFilteringSvc mdmResourceFilteringSvc() {
245                return new MdmResourceFilteringSvc();
246        }
247
248        @Bean
249        MdmControllerHelper mdmProviderHelper(FhirContext theFhirContext,
250                                                                                                          IResourceLoader theResourceLoader,
251                                                                                                          IMdmSettings theMdmSettings,
252                                                                                                          IMdmMatchFinderSvc theMdmMatchFinderSvc,
253                                                                                                          MessageHelper messageHelper,
254                                                                                                          IRequestPartitionHelperSvc partitionHelperSvc) {
255                return new MdmControllerHelper(theFhirContext,
256                        theResourceLoader,
257                        theMdmMatchFinderSvc,
258                        theMdmSettings,
259                        messageHelper,
260                        partitionHelperSvc);
261        }
262
263        @Bean
264        IMdmControllerSvc mdmControllerSvc() {
265                return new MdmControllerSvcImpl();
266        }
267
268        @Bean
269        MdmPartitionHelper mdmPartitionHelper() {return new MdmPartitionHelper();}
270
271        @Bean
272        public IGoldenResourceSearchSvc goldenResourceSearchSvc() {
273                return new GoldenResourceSearchSvcImpl();
274        }
275}