001/*- 002 * #%L 003 * HAPI FHIR JPA Server 004 * %% 005 * Copyright (C) 2014 - 2024 Smile CDR, Inc. 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package ca.uhn.fhir.jpa.dao.data; 021 022import ca.uhn.fhir.jpa.entity.MdmLink; 023import ca.uhn.fhir.mdm.api.MdmLinkSourceEnum; 024import ca.uhn.fhir.mdm.api.MdmMatchResultEnum; 025import org.springframework.data.jpa.repository.JpaRepository; 026import org.springframework.data.jpa.repository.Query; 027import org.springframework.data.repository.query.Param; 028import org.springframework.stereotype.Repository; 029 030import java.util.List; 031 032@Repository("metricsRepository") 033public interface IMdmLinkJpaMetricsRepository extends JpaRepository<MdmLink, Long>, IHapiFhirJpaRepository { 034 035 @Query("SELECT ml.myMatchResult AS match_result, ml.myLinkSource AS link_source, count(*) AS c " 036 + "FROM MdmLink ml " 037 + "WHERE ml.myMdmSourceType = :resourceName " 038 + "AND ml.myLinkSource in (:linkSource) " 039 + "AND ml.myMatchResult in (:matchResult) " 040 + "GROUP BY match_result, link_source " 041 + "ORDER BY match_result") 042 Object[][] generateMetrics( 043 @Param("resourceName") String theResourceType, 044 @Param("linkSource") List<MdmLinkSourceEnum> theLinkSources, 045 @Param("matchResult") List<MdmMatchResultEnum> theMatchTypes); 046}