001/* 002 * #%L 003 * HAPI FHIR - Core Library 004 * %% 005 * Copyright (C) 2014 - 2023 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.context.api; 021 022import java.util.Set; 023 024import ca.uhn.fhir.model.api.Include; 025import ca.uhn.fhir.util.ResourceReferenceInfo; 026 027/** 028 * Created by Bill de Beaubien on 3/4/2015. 029 * 030 * Controls how bundles decide whether referenced resources should be included 031 */ 032public enum BundleInclusionRule { 033 034 /** 035 * Decision is based on whether the resource's Include is in the IncludeSet (e.g. DiagnosticReport.result). Note that the resource has to be populated to be included. 036 * 037 * This is the default behavior 038 */ 039 BASED_ON_INCLUDES { 040 @Override 041 public boolean shouldIncludeReferencedResource(ResourceReferenceInfo theReferenceInfo, Set<Include> theIncludes) { 042 return theReferenceInfo.matchesIncludeSet(theIncludes); 043 } 044 }, 045 046 /** 047 * Decision is based on whether the resource reference is set to a populated resource (in which case its included) or just an id (in which case it's not included) 048 * 049 * This is the original HAPI behavior 050 */ 051 BASED_ON_RESOURCE_PRESENCE { 052 @Override 053 public boolean shouldIncludeReferencedResource(ResourceReferenceInfo theReferenceInfo, Set<Include> theIncludes) { 054 return true; 055 } 056 }; 057 058 public abstract boolean shouldIncludeReferencedResource(ResourceReferenceInfo theReferenceInfo, Set<Include> theIncludes); 059}