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}