001/* 002 * #%L 003 * HAPI FHIR - Core Library 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.context.api; 021 022import ca.uhn.fhir.model.api.Include; 023import ca.uhn.fhir.util.ResourceReferenceInfo; 024 025import java.util.Set; 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( 042 ResourceReferenceInfo theReferenceInfo, Set<Include> theIncludes) { 043 return theReferenceInfo.matchesIncludeSet(theIncludes); 044 } 045 }, 046 047 /** 048 * 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) 049 * 050 * This is the original HAPI behavior 051 */ 052 BASED_ON_RESOURCE_PRESENCE { 053 @Override 054 public boolean shouldIncludeReferencedResource( 055 ResourceReferenceInfo theReferenceInfo, Set<Include> theIncludes) { 056 return true; 057 } 058 }; 059 060 public abstract boolean shouldIncludeReferencedResource( 061 ResourceReferenceInfo theReferenceInfo, Set<Include> theIncludes); 062}