001package ca.uhn.fhir.model.api.annotation; 002 003/* 004 * #%L 005 * HAPI FHIR - Core Library 006 * %% 007 * Copyright (C) 2014 - 2021 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 java.lang.annotation.ElementType; 024import java.lang.annotation.Retention; 025import java.lang.annotation.RetentionPolicy; 026import java.lang.annotation.Target; 027 028/** 029 * Field modifier to be placed on a child field (a field also annotated with the {@link Child} annotation) which 030 * indicates that this field is an extension. 031 */ 032@Target(value = { ElementType.FIELD }) 033@Retention(RetentionPolicy.RUNTIME) 034public @interface Extension { 035 036 /** 037 * This parameter affects how the extension is treated when the element definition containing this resource is 038 * exported to a profile. 039 * 040 * <p> 041 * If set to <b><code>true</code></b>, the resource is taken to be a local resource and its definition is exported 042 * along with the reference. Use this option for extension defintions that you have added locally (i.e. within your 043 * own organization) 044 * </p> 045 * 046 * <p> 047 * If set to <b><code>false</code></b>, the resource is taken to be a remote resource and its definition is 048 * <b>not</b> exported to the profile. Use this option for extensions that are defined by other organizations (i.e. 049 * by regional authorities or jurisdictional governments) 050 * </p> 051 */ 052 boolean definedLocally() default true; 053 054 /** 055 * Returns <code>true</code> if this extension is a <a 056 * href="http://www.hl7.org/implement/standards/fhir/extensibility.html#modifierExtension">modifier extension</a> 057 */ 058 boolean isModifier() default false; 059 060 /** 061 * The URL associated with this extension 062 */ 063 String url(); 064 065}