001package ca.uhn.fhir.jpa.mdm.config; 002 003/*- 004 * #%L 005 * HAPI FHIR JPA Server - Master Data Management 006 * %% 007 * Copyright (C) 2014 - 2023 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.jpa.mdm.svc.GoldenResourceMergerSvcImpl; 031import ca.uhn.fhir.jpa.mdm.svc.GoldenResourceSearchSvcImpl; 032import ca.uhn.fhir.jpa.mdm.svc.IMdmModelConverterSvc; 033import ca.uhn.fhir.jpa.mdm.svc.MdmControllerSvcImpl; 034import ca.uhn.fhir.jpa.mdm.svc.MdmEidUpdateService; 035import ca.uhn.fhir.jpa.mdm.svc.MdmLinkCreateSvcImpl; 036import ca.uhn.fhir.jpa.mdm.svc.MdmLinkQuerySvcImplSvc; 037import ca.uhn.fhir.jpa.mdm.svc.MdmLinkSvcImpl; 038import ca.uhn.fhir.jpa.mdm.svc.MdmLinkUpdaterSvcImpl; 039import ca.uhn.fhir.jpa.mdm.svc.MdmMatchFinderSvcImpl; 040import ca.uhn.fhir.jpa.mdm.svc.MdmMatchLinkSvc; 041import ca.uhn.fhir.jpa.mdm.svc.MdmModelConverterSvcImpl; 042import ca.uhn.fhir.jpa.mdm.svc.MdmResourceDaoSvc; 043import ca.uhn.fhir.jpa.mdm.svc.MdmResourceFilteringSvc; 044import ca.uhn.fhir.jpa.mdm.svc.MdmSurvivorshipSvcImpl; 045import ca.uhn.fhir.jpa.mdm.svc.candidate.CandidateSearcher; 046import ca.uhn.fhir.jpa.mdm.svc.candidate.FindCandidateByEidSvc; 047import ca.uhn.fhir.jpa.mdm.svc.candidate.FindCandidateByExampleSvc; 048import ca.uhn.fhir.jpa.mdm.svc.candidate.FindCandidateByLinkSvc; 049import ca.uhn.fhir.jpa.mdm.svc.candidate.MdmCandidateSearchCriteriaBuilderSvc; 050import ca.uhn.fhir.jpa.mdm.svc.candidate.MdmCandidateSearchSvc; 051import ca.uhn.fhir.jpa.mdm.svc.candidate.MdmGoldenResourceFindingSvc; 052import ca.uhn.fhir.jpa.mdm.util.MdmPartitionHelper; 053import ca.uhn.fhir.jpa.partition.IRequestPartitionHelperSvc; 054import ca.uhn.fhir.jpa.subscription.channel.api.IChannelFactory; 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.dao.MdmLinkFactory; 067import ca.uhn.fhir.mdm.interceptor.IMdmStorageInterceptor; 068import ca.uhn.fhir.mdm.interceptor.MdmStorageInterceptor; 069import ca.uhn.fhir.mdm.log.Logs; 070import ca.uhn.fhir.mdm.provider.MdmControllerHelper; 071import ca.uhn.fhir.mdm.provider.MdmProviderLoader; 072import ca.uhn.fhir.mdm.rules.svc.MdmResourceMatcherSvc; 073import ca.uhn.fhir.mdm.svc.MdmSearchParamSvc; 074import ca.uhn.fhir.mdm.util.EIDHelper; 075import ca.uhn.fhir.mdm.util.GoldenResourceHelper; 076import ca.uhn.fhir.mdm.util.MessageHelper; 077import ca.uhn.fhir.validation.IResourceLoader; 078import org.slf4j.Logger; 079import org.springframework.context.annotation.Bean; 080import org.springframework.context.annotation.Configuration; 081import org.springframework.context.annotation.Import; 082 083@Configuration 084@Import({MdmCommonConfig.class, MdmBatch2Config.class}) 085public class MdmConsumerConfig { 086 private static final Logger ourLog = Logs.getMdmTroubleshootingLog(); 087 088 @Bean 089 IMdmStorageInterceptor mdmStorageInterceptor() { 090 return new MdmStorageInterceptor(); 091 } 092 093 @Bean 094 IMdmSurvivorshipService mdmSurvivorshipService() { return new MdmSurvivorshipSvcImpl(); } 095 096 @Bean 097 MdmQueueConsumerLoader mdmQueueConsumerLoader(IChannelFactory theChannelFactory, IMdmSettings theMdmSettings, MdmMessageHandler theMdmMessageHandler) { 098 return new MdmQueueConsumerLoader(theChannelFactory, theMdmSettings, theMdmMessageHandler); 099 } 100 101 @Bean 102 MdmMessageHandler mdmMessageHandler() { 103 return new MdmMessageHandler(); 104 } 105 106 @Bean 107 MdmMessageKeySvc mdmMessageKeySvc() { 108 return new MdmMessageKeySvc(); 109 } 110 @Bean 111 MdmMatchLinkSvc mdmMatchLinkSvc() { 112 return new MdmMatchLinkSvc(); 113 } 114 115 @Bean 116 MdmEidUpdateService eidUpdateService() { 117 return new MdmEidUpdateService(); 118 } 119 120 @Bean 121 MdmResourceDaoSvc mdmResourceDaoSvc() { 122 return new MdmResourceDaoSvc(); 123 } 124 125 @Bean 126 IMdmLinkSvc mdmLinkSvc() { 127 return new MdmLinkSvcImpl(); 128 } 129 130 @Bean 131 GoldenResourceHelper goldenResourceHelper(FhirContext theFhirContext) { 132 return new GoldenResourceHelper(theFhirContext); 133 } 134 135 @Bean 136 MessageHelper messageHelper(IMdmSettings theMdmSettings, FhirContext theFhirContext) { 137 return new MessageHelper(theMdmSettings, theFhirContext); 138 } 139 140 @Bean 141 MdmSubscriptionLoader mdmSubscriptionLoader() { 142 return new MdmSubscriptionLoader(); 143 } 144 145 @Bean 146 MdmGoldenResourceFindingSvc mdmGoldenResourceFindingSvc() { 147 return new MdmGoldenResourceFindingSvc(); 148 } 149 150 @Bean 151 FindCandidateByEidSvc findCandidateByEidSvc() { 152 return new FindCandidateByEidSvc(); 153 } 154 155 @Bean 156 FindCandidateByLinkSvc findCandidateByLinkSvc() { 157 return new FindCandidateByLinkSvc(); 158 } 159 160 @Bean 161 FindCandidateByExampleSvc findCandidateByScoreSvc() { 162 return new FindCandidateByExampleSvc(); 163 } 164 165 @Bean 166 MdmProviderLoader mdmProviderLoader() { 167 return new MdmProviderLoader(); 168 } 169 170 171 @Bean 172 IMdmMatchFinderSvc mdmMatchFinderSvc() { 173 return new MdmMatchFinderSvcImpl(); 174 } 175 176 @Bean 177 IGoldenResourceMergerSvc mdmGoldenResourceMergerSvc() { 178 return new GoldenResourceMergerSvcImpl(); 179 } 180 181 182 @Bean 183 IMdmLinkQuerySvc mdmLinkQuerySvc() { 184 return new MdmLinkQuerySvcImplSvc(); 185 } 186 187 @Bean 188 IMdmModelConverterSvc mdmModelConverterSvc() { 189 return new MdmModelConverterSvcImpl(); 190 } 191 192 193 @Bean 194 MdmCandidateSearchSvc mdmCandidateSearchSvc() { 195 return new MdmCandidateSearchSvc(); 196 } 197 198 @Bean 199 CandidateSearcher candidateSearcher(DaoRegistry theDaoRegistry, IMdmSettings theMdmSettings, MdmSearchParamSvc theMdmSearchParamSvc) { 200 return new CandidateSearcher(theDaoRegistry, theMdmSettings, theMdmSearchParamSvc); 201 } 202 203 @Bean 204 MdmCandidateSearchCriteriaBuilderSvc mdmCriteriaBuilderSvc() { 205 return new MdmCandidateSearchCriteriaBuilderSvc(); 206 } 207 208 @Bean 209 MdmResourceMatcherSvc mdmResourceComparatorSvc(FhirContext theFhirContext, IMdmSettings theMdmSettings) { 210 return new MdmResourceMatcherSvc(theFhirContext, theMdmSettings); 211 } 212 213 @Bean 214 EIDHelper eidHelper(FhirContext theFhirContext, IMdmSettings theMdmSettings) { 215 return new EIDHelper(theFhirContext, theMdmSettings); 216 } 217 218 @Bean 219 MdmLinkDaoSvc mdmLinkDaoSvc() { 220 return new MdmLinkDaoSvc(); 221 } 222 223 @Bean 224 MdmLinkFactory mdmLinkFactory(IMdmSettings theMdmSettings, IMdmLinkImplFactory theMdmLinkImplFactory) { 225 return new MdmLinkFactory(theMdmSettings, theMdmLinkImplFactory); 226 } 227 228 @Bean 229 IMdmLinkUpdaterSvc mdmLinkUpdaterSvc() { 230 return new MdmLinkUpdaterSvcImpl(); 231 } 232 233 @Bean 234 IMdmLinkCreateSvc mdmLinkCreateSvc() { 235 return new MdmLinkCreateSvcImpl(); 236 } 237 238 239 @Bean 240 MdmLoader mdmLoader() { 241 return new MdmLoader(); 242 } 243 244 @Bean 245 MdmResourceFilteringSvc mdmResourceFilteringSvc() { 246 return new MdmResourceFilteringSvc(); 247 } 248 249 @Bean 250 MdmControllerHelper mdmProviderHelper(FhirContext theFhirContext, 251 IResourceLoader theResourceLoader, 252 IMdmSettings theMdmSettings, 253 IMdmMatchFinderSvc theMdmMatchFinderSvc, 254 MessageHelper messageHelper, 255 IRequestPartitionHelperSvc partitionHelperSvc) { 256 return new MdmControllerHelper(theFhirContext, 257 theResourceLoader, 258 theMdmMatchFinderSvc, 259 theMdmSettings, 260 messageHelper, 261 partitionHelperSvc); 262 } 263 264 @Bean 265 IMdmControllerSvc mdmControllerSvc() { 266 return new MdmControllerSvcImpl(); 267 } 268 269 @Bean 270 MdmPartitionHelper mdmPartitionHelper() {return new MdmPartitionHelper();} 271 272 @Bean 273 public IGoldenResourceSearchSvc goldenResourceSearchSvc() { 274 return new GoldenResourceSearchSvcImpl(); 275 } 276}