001package org.hl7.fhir.r4b.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A formal computable definition of an operation (on the RESTful interface) or a named query (using the search interaction).
052 */
053@ResourceDef(name="OperationDefinition", profile="http://hl7.org/fhir/StructureDefinition/OperationDefinition")
054public class OperationDefinition extends CanonicalResource {
055
056    public enum OperationKind {
057        /**
058         * This operation is invoked as an operation.
059         */
060        OPERATION, 
061        /**
062         * This operation is a named query, invoked using the search mechanism.
063         */
064        QUERY, 
065        /**
066         * added to help the parsers with the generic types
067         */
068        NULL;
069        public static OperationKind fromCode(String codeString) throws FHIRException {
070            if (codeString == null || "".equals(codeString))
071                return null;
072        if ("operation".equals(codeString))
073          return OPERATION;
074        if ("query".equals(codeString))
075          return QUERY;
076        if (Configuration.isAcceptInvalidEnums())
077          return null;
078        else
079          throw new FHIRException("Unknown OperationKind code '"+codeString+"'");
080        }
081        public String toCode() {
082          switch (this) {
083            case OPERATION: return "operation";
084            case QUERY: return "query";
085            case NULL: return null;
086            default: return "?";
087          }
088        }
089        public String getSystem() {
090          switch (this) {
091            case OPERATION: return "http://hl7.org/fhir/operation-kind";
092            case QUERY: return "http://hl7.org/fhir/operation-kind";
093            case NULL: return null;
094            default: return "?";
095          }
096        }
097        public String getDefinition() {
098          switch (this) {
099            case OPERATION: return "This operation is invoked as an operation.";
100            case QUERY: return "This operation is a named query, invoked using the search mechanism.";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDisplay() {
106          switch (this) {
107            case OPERATION: return "Operation";
108            case QUERY: return "Query";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113    }
114
115  public static class OperationKindEnumFactory implements EnumFactory<OperationKind> {
116    public OperationKind fromCode(String codeString) throws IllegalArgumentException {
117      if (codeString == null || "".equals(codeString))
118            if (codeString == null || "".equals(codeString))
119                return null;
120        if ("operation".equals(codeString))
121          return OperationKind.OPERATION;
122        if ("query".equals(codeString))
123          return OperationKind.QUERY;
124        throw new IllegalArgumentException("Unknown OperationKind code '"+codeString+"'");
125        }
126        public Enumeration<OperationKind> fromType(Base code) throws FHIRException {
127          if (code == null)
128            return null;
129          if (code.isEmpty())
130            return new Enumeration<OperationKind>(this);
131          String codeString = ((PrimitiveType) code).asStringValue();
132          if (codeString == null || "".equals(codeString))
133            return null;
134        if ("operation".equals(codeString))
135          return new Enumeration<OperationKind>(this, OperationKind.OPERATION);
136        if ("query".equals(codeString))
137          return new Enumeration<OperationKind>(this, OperationKind.QUERY);
138        throw new FHIRException("Unknown OperationKind code '"+codeString+"'");
139        }
140    public String toCode(OperationKind code) {
141      if (code == OperationKind.OPERATION)
142        return "operation";
143      if (code == OperationKind.QUERY)
144        return "query";
145      return "?";
146      }
147    public String toSystem(OperationKind code) {
148      return code.getSystem();
149      }
150    }
151
152    @Block()
153    public static class OperationDefinitionParameterComponent extends BackboneElement implements IBaseBackboneElement {
154        /**
155         * The name of used to identify the parameter.
156         */
157        @Child(name = "name", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
158        @Description(shortDefinition="Name in Parameters.parameter.name or in URL", formalDefinition="The name of used to identify the parameter." )
159        protected CodeType name;
160
161        /**
162         * Whether this is an input or an output parameter.
163         */
164        @Child(name = "use", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
165        @Description(shortDefinition="in | out", formalDefinition="Whether this is an input or an output parameter." )
166        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/operation-parameter-use")
167        protected Enumeration<OperationParameterUse> use;
168
169        /**
170         * The minimum number of times this parameter SHALL appear in the request or response.
171         */
172        @Child(name = "min", type = {IntegerType.class}, order=3, min=1, max=1, modifier=false, summary=false)
173        @Description(shortDefinition="Minimum Cardinality", formalDefinition="The minimum number of times this parameter SHALL appear in the request or response." )
174        protected IntegerType min;
175
176        /**
177         * The maximum number of times this element is permitted to appear in the request or response.
178         */
179        @Child(name = "max", type = {StringType.class}, order=4, min=1, max=1, modifier=false, summary=false)
180        @Description(shortDefinition="Maximum Cardinality (a number or *)", formalDefinition="The maximum number of times this element is permitted to appear in the request or response." )
181        protected StringType max;
182
183        /**
184         * Describes the meaning or use of this parameter.
185         */
186        @Child(name = "documentation", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
187        @Description(shortDefinition="Description of meaning/use", formalDefinition="Describes the meaning or use of this parameter." )
188        protected StringType documentation;
189
190        /**
191         * The type for this parameter.
192         */
193        @Child(name = "type", type = {CodeType.class}, order=6, min=0, max=1, modifier=false, summary=false)
194        @Description(shortDefinition="What type this parameter has", formalDefinition="The type for this parameter." )
195        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/all-types")
196        protected Enumeration<FHIRAllTypes> type;
197
198        /**
199         * Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.
200         */
201        @Child(name = "targetProfile", type = {CanonicalType.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
202        @Description(shortDefinition="If type is Reference | canonical, allowed targets", formalDefinition="Used when the type is \"Reference\" or \"canonical\", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide." )
203        protected List<CanonicalType> targetProfile;
204
205        /**
206         * How the parameter is understood as a search parameter. This is only used if the parameter type is 'string'.
207         */
208        @Child(name = "searchType", type = {CodeType.class}, order=8, min=0, max=1, modifier=false, summary=false)
209        @Description(shortDefinition="number | date | string | token | reference | composite | quantity | uri | special", formalDefinition="How the parameter is understood as a search parameter. This is only used if the parameter type is 'string'." )
210        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/search-param-type")
211        protected Enumeration<SearchParamType> searchType;
212
213        /**
214         * Binds to a value set if this parameter is coded (code, Coding, CodeableConcept).
215         */
216        @Child(name = "binding", type = {}, order=9, min=0, max=1, modifier=false, summary=false)
217        @Description(shortDefinition="ValueSet details if this is coded", formalDefinition="Binds to a value set if this parameter is coded (code, Coding, CodeableConcept)." )
218        protected OperationDefinitionParameterBindingComponent binding;
219
220        /**
221         * Identifies other resource parameters within the operation invocation that are expected to resolve to this resource.
222         */
223        @Child(name = "referencedFrom", type = {}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
224        @Description(shortDefinition="References to this parameter", formalDefinition="Identifies other resource parameters within the operation invocation that are expected to resolve to this resource." )
225        protected List<OperationDefinitionParameterReferencedFromComponent> referencedFrom;
226
227        /**
228         * The parts of a nested Parameter.
229         */
230        @Child(name = "part", type = {OperationDefinitionParameterComponent.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
231        @Description(shortDefinition="Parts of a nested Parameter", formalDefinition="The parts of a nested Parameter." )
232        protected List<OperationDefinitionParameterComponent> part;
233
234        private static final long serialVersionUID = -153032790L;
235
236    /**
237     * Constructor
238     */
239      public OperationDefinitionParameterComponent() {
240        super();
241      }
242
243    /**
244     * Constructor
245     */
246      public OperationDefinitionParameterComponent(String name, OperationParameterUse use, int min, String max) {
247        super();
248        this.setName(name);
249        this.setUse(use);
250        this.setMin(min);
251        this.setMax(max);
252      }
253
254        /**
255         * @return {@link #name} (The name of used to identify the parameter.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
256         */
257        public CodeType getNameElement() { 
258          if (this.name == null)
259            if (Configuration.errorOnAutoCreate())
260              throw new Error("Attempt to auto-create OperationDefinitionParameterComponent.name");
261            else if (Configuration.doAutoCreate())
262              this.name = new CodeType(); // bb
263          return this.name;
264        }
265
266        public boolean hasNameElement() { 
267          return this.name != null && !this.name.isEmpty();
268        }
269
270        public boolean hasName() { 
271          return this.name != null && !this.name.isEmpty();
272        }
273
274        /**
275         * @param value {@link #name} (The name of used to identify the parameter.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
276         */
277        public OperationDefinitionParameterComponent setNameElement(CodeType value) { 
278          this.name = value;
279          return this;
280        }
281
282        /**
283         * @return The name of used to identify the parameter.
284         */
285        public String getName() { 
286          return this.name == null ? null : this.name.getValue();
287        }
288
289        /**
290         * @param value The name of used to identify the parameter.
291         */
292        public OperationDefinitionParameterComponent setName(String value) { 
293            if (this.name == null)
294              this.name = new CodeType();
295            this.name.setValue(value);
296          return this;
297        }
298
299        /**
300         * @return {@link #use} (Whether this is an input or an output parameter.). This is the underlying object with id, value and extensions. The accessor "getUse" gives direct access to the value
301         */
302        public Enumeration<OperationParameterUse> getUseElement() { 
303          if (this.use == null)
304            if (Configuration.errorOnAutoCreate())
305              throw new Error("Attempt to auto-create OperationDefinitionParameterComponent.use");
306            else if (Configuration.doAutoCreate())
307              this.use = new Enumeration<OperationParameterUse>(new OperationParameterUseEnumFactory()); // bb
308          return this.use;
309        }
310
311        public boolean hasUseElement() { 
312          return this.use != null && !this.use.isEmpty();
313        }
314
315        public boolean hasUse() { 
316          return this.use != null && !this.use.isEmpty();
317        }
318
319        /**
320         * @param value {@link #use} (Whether this is an input or an output parameter.). This is the underlying object with id, value and extensions. The accessor "getUse" gives direct access to the value
321         */
322        public OperationDefinitionParameterComponent setUseElement(Enumeration<OperationParameterUse> value) { 
323          this.use = value;
324          return this;
325        }
326
327        /**
328         * @return Whether this is an input or an output parameter.
329         */
330        public OperationParameterUse getUse() { 
331          return this.use == null ? null : this.use.getValue();
332        }
333
334        /**
335         * @param value Whether this is an input or an output parameter.
336         */
337        public OperationDefinitionParameterComponent setUse(OperationParameterUse value) { 
338            if (this.use == null)
339              this.use = new Enumeration<OperationParameterUse>(new OperationParameterUseEnumFactory());
340            this.use.setValue(value);
341          return this;
342        }
343
344        /**
345         * @return {@link #min} (The minimum number of times this parameter SHALL appear in the request or response.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value
346         */
347        public IntegerType getMinElement() { 
348          if (this.min == null)
349            if (Configuration.errorOnAutoCreate())
350              throw new Error("Attempt to auto-create OperationDefinitionParameterComponent.min");
351            else if (Configuration.doAutoCreate())
352              this.min = new IntegerType(); // bb
353          return this.min;
354        }
355
356        public boolean hasMinElement() { 
357          return this.min != null && !this.min.isEmpty();
358        }
359
360        public boolean hasMin() { 
361          return this.min != null && !this.min.isEmpty();
362        }
363
364        /**
365         * @param value {@link #min} (The minimum number of times this parameter SHALL appear in the request or response.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value
366         */
367        public OperationDefinitionParameterComponent setMinElement(IntegerType value) { 
368          this.min = value;
369          return this;
370        }
371
372        /**
373         * @return The minimum number of times this parameter SHALL appear in the request or response.
374         */
375        public int getMin() { 
376          return this.min == null || this.min.isEmpty() ? 0 : this.min.getValue();
377        }
378
379        /**
380         * @param value The minimum number of times this parameter SHALL appear in the request or response.
381         */
382        public OperationDefinitionParameterComponent setMin(int value) { 
383            if (this.min == null)
384              this.min = new IntegerType();
385            this.min.setValue(value);
386          return this;
387        }
388
389        /**
390         * @return {@link #max} (The maximum number of times this element is permitted to appear in the request or response.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value
391         */
392        public StringType getMaxElement() { 
393          if (this.max == null)
394            if (Configuration.errorOnAutoCreate())
395              throw new Error("Attempt to auto-create OperationDefinitionParameterComponent.max");
396            else if (Configuration.doAutoCreate())
397              this.max = new StringType(); // bb
398          return this.max;
399        }
400
401        public boolean hasMaxElement() { 
402          return this.max != null && !this.max.isEmpty();
403        }
404
405        public boolean hasMax() { 
406          return this.max != null && !this.max.isEmpty();
407        }
408
409        /**
410         * @param value {@link #max} (The maximum number of times this element is permitted to appear in the request or response.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value
411         */
412        public OperationDefinitionParameterComponent setMaxElement(StringType value) { 
413          this.max = value;
414          return this;
415        }
416
417        /**
418         * @return The maximum number of times this element is permitted to appear in the request or response.
419         */
420        public String getMax() { 
421          return this.max == null ? null : this.max.getValue();
422        }
423
424        /**
425         * @param value The maximum number of times this element is permitted to appear in the request or response.
426         */
427        public OperationDefinitionParameterComponent setMax(String value) { 
428            if (this.max == null)
429              this.max = new StringType();
430            this.max.setValue(value);
431          return this;
432        }
433
434        /**
435         * @return {@link #documentation} (Describes the meaning or use of this parameter.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
436         */
437        public StringType getDocumentationElement() { 
438          if (this.documentation == null)
439            if (Configuration.errorOnAutoCreate())
440              throw new Error("Attempt to auto-create OperationDefinitionParameterComponent.documentation");
441            else if (Configuration.doAutoCreate())
442              this.documentation = new StringType(); // bb
443          return this.documentation;
444        }
445
446        public boolean hasDocumentationElement() { 
447          return this.documentation != null && !this.documentation.isEmpty();
448        }
449
450        public boolean hasDocumentation() { 
451          return this.documentation != null && !this.documentation.isEmpty();
452        }
453
454        /**
455         * @param value {@link #documentation} (Describes the meaning or use of this parameter.). This is the underlying object with id, value and extensions. The accessor "getDocumentation" gives direct access to the value
456         */
457        public OperationDefinitionParameterComponent setDocumentationElement(StringType value) { 
458          this.documentation = value;
459          return this;
460        }
461
462        /**
463         * @return Describes the meaning or use of this parameter.
464         */
465        public String getDocumentation() { 
466          return this.documentation == null ? null : this.documentation.getValue();
467        }
468
469        /**
470         * @param value Describes the meaning or use of this parameter.
471         */
472        public OperationDefinitionParameterComponent setDocumentation(String value) { 
473          if (Utilities.noString(value))
474            this.documentation = null;
475          else {
476            if (this.documentation == null)
477              this.documentation = new StringType();
478            this.documentation.setValue(value);
479          }
480          return this;
481        }
482
483        /**
484         * @return {@link #type} (The type for this parameter.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
485         */
486        public Enumeration<FHIRAllTypes> getTypeElement() { 
487          if (this.type == null)
488            if (Configuration.errorOnAutoCreate())
489              throw new Error("Attempt to auto-create OperationDefinitionParameterComponent.type");
490            else if (Configuration.doAutoCreate())
491              this.type = new Enumeration<FHIRAllTypes>(new FHIRAllTypesEnumFactory()); // bb
492          return this.type;
493        }
494
495        public boolean hasTypeElement() { 
496          return this.type != null && !this.type.isEmpty();
497        }
498
499        public boolean hasType() { 
500          return this.type != null && !this.type.isEmpty();
501        }
502
503        /**
504         * @param value {@link #type} (The type for this parameter.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
505         */
506        public OperationDefinitionParameterComponent setTypeElement(Enumeration<FHIRAllTypes> value) { 
507          this.type = value;
508          return this;
509        }
510
511        /**
512         * @return The type for this parameter.
513         */
514        public FHIRAllTypes getType() { 
515          return this.type == null ? null : this.type.getValue();
516        }
517
518        /**
519         * @param value The type for this parameter.
520         */
521        public OperationDefinitionParameterComponent setType(FHIRAllTypes value) { 
522          if (value == null)
523            this.type = null;
524          else {
525            if (this.type == null)
526              this.type = new Enumeration<FHIRAllTypes>(new FHIRAllTypesEnumFactory());
527            this.type.setValue(value);
528          }
529          return this;
530        }
531
532        /**
533         * @return {@link #targetProfile} (Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.)
534         */
535        public List<CanonicalType> getTargetProfile() { 
536          if (this.targetProfile == null)
537            this.targetProfile = new ArrayList<CanonicalType>();
538          return this.targetProfile;
539        }
540
541        /**
542         * @return Returns a reference to <code>this</code> for easy method chaining
543         */
544        public OperationDefinitionParameterComponent setTargetProfile(List<CanonicalType> theTargetProfile) { 
545          this.targetProfile = theTargetProfile;
546          return this;
547        }
548
549        public boolean hasTargetProfile() { 
550          if (this.targetProfile == null)
551            return false;
552          for (CanonicalType item : this.targetProfile)
553            if (!item.isEmpty())
554              return true;
555          return false;
556        }
557
558        /**
559         * @return {@link #targetProfile} (Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.)
560         */
561        public CanonicalType addTargetProfileElement() {//2 
562          CanonicalType t = new CanonicalType();
563          if (this.targetProfile == null)
564            this.targetProfile = new ArrayList<CanonicalType>();
565          this.targetProfile.add(t);
566          return t;
567        }
568
569        /**
570         * @param value {@link #targetProfile} (Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.)
571         */
572        public OperationDefinitionParameterComponent addTargetProfile(String value) { //1
573          CanonicalType t = new CanonicalType();
574          t.setValue(value);
575          if (this.targetProfile == null)
576            this.targetProfile = new ArrayList<CanonicalType>();
577          this.targetProfile.add(t);
578          return this;
579        }
580
581        /**
582         * @param value {@link #targetProfile} (Used when the type is "Reference" or "canonical", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.)
583         */
584        public boolean hasTargetProfile(String value) { 
585          if (this.targetProfile == null)
586            return false;
587          for (CanonicalType v : this.targetProfile)
588            if (v.getValue().equals(value)) // canonical
589              return true;
590          return false;
591        }
592
593        /**
594         * @return {@link #searchType} (How the parameter is understood as a search parameter. This is only used if the parameter type is 'string'.). This is the underlying object with id, value and extensions. The accessor "getSearchType" gives direct access to the value
595         */
596        public Enumeration<SearchParamType> getSearchTypeElement() { 
597          if (this.searchType == null)
598            if (Configuration.errorOnAutoCreate())
599              throw new Error("Attempt to auto-create OperationDefinitionParameterComponent.searchType");
600            else if (Configuration.doAutoCreate())
601              this.searchType = new Enumeration<SearchParamType>(new SearchParamTypeEnumFactory()); // bb
602          return this.searchType;
603        }
604
605        public boolean hasSearchTypeElement() { 
606          return this.searchType != null && !this.searchType.isEmpty();
607        }
608
609        public boolean hasSearchType() { 
610          return this.searchType != null && !this.searchType.isEmpty();
611        }
612
613        /**
614         * @param value {@link #searchType} (How the parameter is understood as a search parameter. This is only used if the parameter type is 'string'.). This is the underlying object with id, value and extensions. The accessor "getSearchType" gives direct access to the value
615         */
616        public OperationDefinitionParameterComponent setSearchTypeElement(Enumeration<SearchParamType> value) { 
617          this.searchType = value;
618          return this;
619        }
620
621        /**
622         * @return How the parameter is understood as a search parameter. This is only used if the parameter type is 'string'.
623         */
624        public SearchParamType getSearchType() { 
625          return this.searchType == null ? null : this.searchType.getValue();
626        }
627
628        /**
629         * @param value How the parameter is understood as a search parameter. This is only used if the parameter type is 'string'.
630         */
631        public OperationDefinitionParameterComponent setSearchType(SearchParamType value) { 
632          if (value == null)
633            this.searchType = null;
634          else {
635            if (this.searchType == null)
636              this.searchType = new Enumeration<SearchParamType>(new SearchParamTypeEnumFactory());
637            this.searchType.setValue(value);
638          }
639          return this;
640        }
641
642        /**
643         * @return {@link #binding} (Binds to a value set if this parameter is coded (code, Coding, CodeableConcept).)
644         */
645        public OperationDefinitionParameterBindingComponent getBinding() { 
646          if (this.binding == null)
647            if (Configuration.errorOnAutoCreate())
648              throw new Error("Attempt to auto-create OperationDefinitionParameterComponent.binding");
649            else if (Configuration.doAutoCreate())
650              this.binding = new OperationDefinitionParameterBindingComponent(); // cc
651          return this.binding;
652        }
653
654        public boolean hasBinding() { 
655          return this.binding != null && !this.binding.isEmpty();
656        }
657
658        /**
659         * @param value {@link #binding} (Binds to a value set if this parameter is coded (code, Coding, CodeableConcept).)
660         */
661        public OperationDefinitionParameterComponent setBinding(OperationDefinitionParameterBindingComponent value) { 
662          this.binding = value;
663          return this;
664        }
665
666        /**
667         * @return {@link #referencedFrom} (Identifies other resource parameters within the operation invocation that are expected to resolve to this resource.)
668         */
669        public List<OperationDefinitionParameterReferencedFromComponent> getReferencedFrom() { 
670          if (this.referencedFrom == null)
671            this.referencedFrom = new ArrayList<OperationDefinitionParameterReferencedFromComponent>();
672          return this.referencedFrom;
673        }
674
675        /**
676         * @return Returns a reference to <code>this</code> for easy method chaining
677         */
678        public OperationDefinitionParameterComponent setReferencedFrom(List<OperationDefinitionParameterReferencedFromComponent> theReferencedFrom) { 
679          this.referencedFrom = theReferencedFrom;
680          return this;
681        }
682
683        public boolean hasReferencedFrom() { 
684          if (this.referencedFrom == null)
685            return false;
686          for (OperationDefinitionParameterReferencedFromComponent item : this.referencedFrom)
687            if (!item.isEmpty())
688              return true;
689          return false;
690        }
691
692        public OperationDefinitionParameterReferencedFromComponent addReferencedFrom() { //3
693          OperationDefinitionParameterReferencedFromComponent t = new OperationDefinitionParameterReferencedFromComponent();
694          if (this.referencedFrom == null)
695            this.referencedFrom = new ArrayList<OperationDefinitionParameterReferencedFromComponent>();
696          this.referencedFrom.add(t);
697          return t;
698        }
699
700        public OperationDefinitionParameterComponent addReferencedFrom(OperationDefinitionParameterReferencedFromComponent t) { //3
701          if (t == null)
702            return this;
703          if (this.referencedFrom == null)
704            this.referencedFrom = new ArrayList<OperationDefinitionParameterReferencedFromComponent>();
705          this.referencedFrom.add(t);
706          return this;
707        }
708
709        /**
710         * @return The first repetition of repeating field {@link #referencedFrom}, creating it if it does not already exist {3}
711         */
712        public OperationDefinitionParameterReferencedFromComponent getReferencedFromFirstRep() { 
713          if (getReferencedFrom().isEmpty()) {
714            addReferencedFrom();
715          }
716          return getReferencedFrom().get(0);
717        }
718
719        /**
720         * @return {@link #part} (The parts of a nested Parameter.)
721         */
722        public List<OperationDefinitionParameterComponent> getPart() { 
723          if (this.part == null)
724            this.part = new ArrayList<OperationDefinitionParameterComponent>();
725          return this.part;
726        }
727
728        /**
729         * @return Returns a reference to <code>this</code> for easy method chaining
730         */
731        public OperationDefinitionParameterComponent setPart(List<OperationDefinitionParameterComponent> thePart) { 
732          this.part = thePart;
733          return this;
734        }
735
736        public boolean hasPart() { 
737          if (this.part == null)
738            return false;
739          for (OperationDefinitionParameterComponent item : this.part)
740            if (!item.isEmpty())
741              return true;
742          return false;
743        }
744
745        public OperationDefinitionParameterComponent addPart() { //3
746          OperationDefinitionParameterComponent t = new OperationDefinitionParameterComponent();
747          if (this.part == null)
748            this.part = new ArrayList<OperationDefinitionParameterComponent>();
749          this.part.add(t);
750          return t;
751        }
752
753        public OperationDefinitionParameterComponent addPart(OperationDefinitionParameterComponent t) { //3
754          if (t == null)
755            return this;
756          if (this.part == null)
757            this.part = new ArrayList<OperationDefinitionParameterComponent>();
758          this.part.add(t);
759          return this;
760        }
761
762        /**
763         * @return The first repetition of repeating field {@link #part}, creating it if it does not already exist {3}
764         */
765        public OperationDefinitionParameterComponent getPartFirstRep() { 
766          if (getPart().isEmpty()) {
767            addPart();
768          }
769          return getPart().get(0);
770        }
771
772        protected void listChildren(List<Property> children) {
773          super.listChildren(children);
774          children.add(new Property("name", "code", "The name of used to identify the parameter.", 0, 1, name));
775          children.add(new Property("use", "code", "Whether this is an input or an output parameter.", 0, 1, use));
776          children.add(new Property("min", "integer", "The minimum number of times this parameter SHALL appear in the request or response.", 0, 1, min));
777          children.add(new Property("max", "string", "The maximum number of times this element is permitted to appear in the request or response.", 0, 1, max));
778          children.add(new Property("documentation", "string", "Describes the meaning or use of this parameter.", 0, 1, documentation));
779          children.add(new Property("type", "code", "The type for this parameter.", 0, 1, type));
780          children.add(new Property("targetProfile", "canonical(StructureDefinition)", "Used when the type is \"Reference\" or \"canonical\", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.", 0, java.lang.Integer.MAX_VALUE, targetProfile));
781          children.add(new Property("searchType", "code", "How the parameter is understood as a search parameter. This is only used if the parameter type is 'string'.", 0, 1, searchType));
782          children.add(new Property("binding", "", "Binds to a value set if this parameter is coded (code, Coding, CodeableConcept).", 0, 1, binding));
783          children.add(new Property("referencedFrom", "", "Identifies other resource parameters within the operation invocation that are expected to resolve to this resource.", 0, java.lang.Integer.MAX_VALUE, referencedFrom));
784          children.add(new Property("part", "@OperationDefinition.parameter", "The parts of a nested Parameter.", 0, java.lang.Integer.MAX_VALUE, part));
785        }
786
787        @Override
788        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
789          switch (_hash) {
790          case 3373707: /*name*/  return new Property("name", "code", "The name of used to identify the parameter.", 0, 1, name);
791          case 116103: /*use*/  return new Property("use", "code", "Whether this is an input or an output parameter.", 0, 1, use);
792          case 108114: /*min*/  return new Property("min", "integer", "The minimum number of times this parameter SHALL appear in the request or response.", 0, 1, min);
793          case 107876: /*max*/  return new Property("max", "string", "The maximum number of times this element is permitted to appear in the request or response.", 0, 1, max);
794          case 1587405498: /*documentation*/  return new Property("documentation", "string", "Describes the meaning or use of this parameter.", 0, 1, documentation);
795          case 3575610: /*type*/  return new Property("type", "code", "The type for this parameter.", 0, 1, type);
796          case 1994521304: /*targetProfile*/  return new Property("targetProfile", "canonical(StructureDefinition)", "Used when the type is \"Reference\" or \"canonical\", and identifies a profile structure or implementation Guide that applies to the target of the reference this parameter refers to. If any profiles are specified, then the content must conform to at least one of them. The URL can be a local reference - to a contained StructureDefinition, or a reference to another StructureDefinition or Implementation Guide by a canonical URL. When an implementation guide is specified, the target resource SHALL conform to at least one profile defined in the implementation guide.", 0, java.lang.Integer.MAX_VALUE, targetProfile);
797          case -710454014: /*searchType*/  return new Property("searchType", "code", "How the parameter is understood as a search parameter. This is only used if the parameter type is 'string'.", 0, 1, searchType);
798          case -108220795: /*binding*/  return new Property("binding", "", "Binds to a value set if this parameter is coded (code, Coding, CodeableConcept).", 0, 1, binding);
799          case -1896721981: /*referencedFrom*/  return new Property("referencedFrom", "", "Identifies other resource parameters within the operation invocation that are expected to resolve to this resource.", 0, java.lang.Integer.MAX_VALUE, referencedFrom);
800          case 3433459: /*part*/  return new Property("part", "@OperationDefinition.parameter", "The parts of a nested Parameter.", 0, java.lang.Integer.MAX_VALUE, part);
801          default: return super.getNamedProperty(_hash, _name, _checkValid);
802          }
803
804        }
805
806      @Override
807      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
808        switch (hash) {
809        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // CodeType
810        case 116103: /*use*/ return this.use == null ? new Base[0] : new Base[] {this.use}; // Enumeration<OperationParameterUse>
811        case 108114: /*min*/ return this.min == null ? new Base[0] : new Base[] {this.min}; // IntegerType
812        case 107876: /*max*/ return this.max == null ? new Base[0] : new Base[] {this.max}; // StringType
813        case 1587405498: /*documentation*/ return this.documentation == null ? new Base[0] : new Base[] {this.documentation}; // StringType
814        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<FHIRAllTypes>
815        case 1994521304: /*targetProfile*/ return this.targetProfile == null ? new Base[0] : this.targetProfile.toArray(new Base[this.targetProfile.size()]); // CanonicalType
816        case -710454014: /*searchType*/ return this.searchType == null ? new Base[0] : new Base[] {this.searchType}; // Enumeration<SearchParamType>
817        case -108220795: /*binding*/ return this.binding == null ? new Base[0] : new Base[] {this.binding}; // OperationDefinitionParameterBindingComponent
818        case -1896721981: /*referencedFrom*/ return this.referencedFrom == null ? new Base[0] : this.referencedFrom.toArray(new Base[this.referencedFrom.size()]); // OperationDefinitionParameterReferencedFromComponent
819        case 3433459: /*part*/ return this.part == null ? new Base[0] : this.part.toArray(new Base[this.part.size()]); // OperationDefinitionParameterComponent
820        default: return super.getProperty(hash, name, checkValid);
821        }
822
823      }
824
825      @Override
826      public Base setProperty(int hash, String name, Base value) throws FHIRException {
827        switch (hash) {
828        case 3373707: // name
829          this.name = TypeConvertor.castToCode(value); // CodeType
830          return value;
831        case 116103: // use
832          value = new OperationParameterUseEnumFactory().fromType(TypeConvertor.castToCode(value));
833          this.use = (Enumeration) value; // Enumeration<OperationParameterUse>
834          return value;
835        case 108114: // min
836          this.min = TypeConvertor.castToInteger(value); // IntegerType
837          return value;
838        case 107876: // max
839          this.max = TypeConvertor.castToString(value); // StringType
840          return value;
841        case 1587405498: // documentation
842          this.documentation = TypeConvertor.castToString(value); // StringType
843          return value;
844        case 3575610: // type
845          value = new FHIRAllTypesEnumFactory().fromType(TypeConvertor.castToCode(value));
846          this.type = (Enumeration) value; // Enumeration<FHIRAllTypes>
847          return value;
848        case 1994521304: // targetProfile
849          this.getTargetProfile().add(TypeConvertor.castToCanonical(value)); // CanonicalType
850          return value;
851        case -710454014: // searchType
852          value = new SearchParamTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
853          this.searchType = (Enumeration) value; // Enumeration<SearchParamType>
854          return value;
855        case -108220795: // binding
856          this.binding = (OperationDefinitionParameterBindingComponent) value; // OperationDefinitionParameterBindingComponent
857          return value;
858        case -1896721981: // referencedFrom
859          this.getReferencedFrom().add((OperationDefinitionParameterReferencedFromComponent) value); // OperationDefinitionParameterReferencedFromComponent
860          return value;
861        case 3433459: // part
862          this.getPart().add((OperationDefinitionParameterComponent) value); // OperationDefinitionParameterComponent
863          return value;
864        default: return super.setProperty(hash, name, value);
865        }
866
867      }
868
869      @Override
870      public Base setProperty(String name, Base value) throws FHIRException {
871        if (name.equals("name")) {
872          this.name = TypeConvertor.castToCode(value); // CodeType
873        } else if (name.equals("use")) {
874          value = new OperationParameterUseEnumFactory().fromType(TypeConvertor.castToCode(value));
875          this.use = (Enumeration) value; // Enumeration<OperationParameterUse>
876        } else if (name.equals("min")) {
877          this.min = TypeConvertor.castToInteger(value); // IntegerType
878        } else if (name.equals("max")) {
879          this.max = TypeConvertor.castToString(value); // StringType
880        } else if (name.equals("documentation")) {
881          this.documentation = TypeConvertor.castToString(value); // StringType
882        } else if (name.equals("type")) {
883          value = new FHIRAllTypesEnumFactory().fromType(TypeConvertor.castToCode(value));
884          this.type = (Enumeration) value; // Enumeration<FHIRAllTypes>
885        } else if (name.equals("targetProfile")) {
886          this.getTargetProfile().add(TypeConvertor.castToCanonical(value));
887        } else if (name.equals("searchType")) {
888          value = new SearchParamTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
889          this.searchType = (Enumeration) value; // Enumeration<SearchParamType>
890        } else if (name.equals("binding")) {
891          this.binding = (OperationDefinitionParameterBindingComponent) value; // OperationDefinitionParameterBindingComponent
892        } else if (name.equals("referencedFrom")) {
893          this.getReferencedFrom().add((OperationDefinitionParameterReferencedFromComponent) value);
894        } else if (name.equals("part")) {
895          this.getPart().add((OperationDefinitionParameterComponent) value);
896        } else
897          return super.setProperty(name, value);
898        return value;
899      }
900
901      @Override
902      public Base makeProperty(int hash, String name) throws FHIRException {
903        switch (hash) {
904        case 3373707:  return getNameElement();
905        case 116103:  return getUseElement();
906        case 108114:  return getMinElement();
907        case 107876:  return getMaxElement();
908        case 1587405498:  return getDocumentationElement();
909        case 3575610:  return getTypeElement();
910        case 1994521304:  return addTargetProfileElement();
911        case -710454014:  return getSearchTypeElement();
912        case -108220795:  return getBinding();
913        case -1896721981:  return addReferencedFrom(); 
914        case 3433459:  return addPart(); 
915        default: return super.makeProperty(hash, name);
916        }
917
918      }
919
920      @Override
921      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
922        switch (hash) {
923        case 3373707: /*name*/ return new String[] {"code"};
924        case 116103: /*use*/ return new String[] {"code"};
925        case 108114: /*min*/ return new String[] {"integer"};
926        case 107876: /*max*/ return new String[] {"string"};
927        case 1587405498: /*documentation*/ return new String[] {"string"};
928        case 3575610: /*type*/ return new String[] {"code"};
929        case 1994521304: /*targetProfile*/ return new String[] {"canonical"};
930        case -710454014: /*searchType*/ return new String[] {"code"};
931        case -108220795: /*binding*/ return new String[] {};
932        case -1896721981: /*referencedFrom*/ return new String[] {};
933        case 3433459: /*part*/ return new String[] {"@OperationDefinition.parameter"};
934        default: return super.getTypesForProperty(hash, name);
935        }
936
937      }
938
939      @Override
940      public Base addChild(String name) throws FHIRException {
941        if (name.equals("name")) {
942          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.name");
943        }
944        else if (name.equals("use")) {
945          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.use");
946        }
947        else if (name.equals("min")) {
948          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.min");
949        }
950        else if (name.equals("max")) {
951          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.max");
952        }
953        else if (name.equals("documentation")) {
954          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.documentation");
955        }
956        else if (name.equals("type")) {
957          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.type");
958        }
959        else if (name.equals("targetProfile")) {
960          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.targetProfile");
961        }
962        else if (name.equals("searchType")) {
963          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.searchType");
964        }
965        else if (name.equals("binding")) {
966          this.binding = new OperationDefinitionParameterBindingComponent();
967          return this.binding;
968        }
969        else if (name.equals("referencedFrom")) {
970          return addReferencedFrom();
971        }
972        else if (name.equals("part")) {
973          return addPart();
974        }
975        else
976          return super.addChild(name);
977      }
978
979      public OperationDefinitionParameterComponent copy() {
980        OperationDefinitionParameterComponent dst = new OperationDefinitionParameterComponent();
981        copyValues(dst);
982        return dst;
983      }
984
985      public void copyValues(OperationDefinitionParameterComponent dst) {
986        super.copyValues(dst);
987        dst.name = name == null ? null : name.copy();
988        dst.use = use == null ? null : use.copy();
989        dst.min = min == null ? null : min.copy();
990        dst.max = max == null ? null : max.copy();
991        dst.documentation = documentation == null ? null : documentation.copy();
992        dst.type = type == null ? null : type.copy();
993        if (targetProfile != null) {
994          dst.targetProfile = new ArrayList<CanonicalType>();
995          for (CanonicalType i : targetProfile)
996            dst.targetProfile.add(i.copy());
997        };
998        dst.searchType = searchType == null ? null : searchType.copy();
999        dst.binding = binding == null ? null : binding.copy();
1000        if (referencedFrom != null) {
1001          dst.referencedFrom = new ArrayList<OperationDefinitionParameterReferencedFromComponent>();
1002          for (OperationDefinitionParameterReferencedFromComponent i : referencedFrom)
1003            dst.referencedFrom.add(i.copy());
1004        };
1005        if (part != null) {
1006          dst.part = new ArrayList<OperationDefinitionParameterComponent>();
1007          for (OperationDefinitionParameterComponent i : part)
1008            dst.part.add(i.copy());
1009        };
1010      }
1011
1012      @Override
1013      public boolean equalsDeep(Base other_) {
1014        if (!super.equalsDeep(other_))
1015          return false;
1016        if (!(other_ instanceof OperationDefinitionParameterComponent))
1017          return false;
1018        OperationDefinitionParameterComponent o = (OperationDefinitionParameterComponent) other_;
1019        return compareDeep(name, o.name, true) && compareDeep(use, o.use, true) && compareDeep(min, o.min, true)
1020           && compareDeep(max, o.max, true) && compareDeep(documentation, o.documentation, true) && compareDeep(type, o.type, true)
1021           && compareDeep(targetProfile, o.targetProfile, true) && compareDeep(searchType, o.searchType, true)
1022           && compareDeep(binding, o.binding, true) && compareDeep(referencedFrom, o.referencedFrom, true)
1023           && compareDeep(part, o.part, true);
1024      }
1025
1026      @Override
1027      public boolean equalsShallow(Base other_) {
1028        if (!super.equalsShallow(other_))
1029          return false;
1030        if (!(other_ instanceof OperationDefinitionParameterComponent))
1031          return false;
1032        OperationDefinitionParameterComponent o = (OperationDefinitionParameterComponent) other_;
1033        return compareValues(name, o.name, true) && compareValues(use, o.use, true) && compareValues(min, o.min, true)
1034           && compareValues(max, o.max, true) && compareValues(documentation, o.documentation, true) && compareValues(type, o.type, true)
1035           && compareValues(targetProfile, o.targetProfile, true) && compareValues(searchType, o.searchType, true)
1036          ;
1037      }
1038
1039      public boolean isEmpty() {
1040        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, use, min, max, documentation
1041          , type, targetProfile, searchType, binding, referencedFrom, part);
1042      }
1043
1044  public String fhirType() {
1045    return "OperationDefinition.parameter";
1046
1047  }
1048
1049  }
1050
1051    @Block()
1052    public static class OperationDefinitionParameterBindingComponent extends BackboneElement implements IBaseBackboneElement {
1053        /**
1054         * Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.
1055         */
1056        @Child(name = "strength", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1057        @Description(shortDefinition="required | extensible | preferred | example", formalDefinition="Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances." )
1058        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/binding-strength")
1059        protected Enumeration<BindingStrength> strength;
1060
1061        /**
1062         * Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used.
1063         */
1064        @Child(name = "valueSet", type = {CanonicalType.class}, order=2, min=1, max=1, modifier=false, summary=false)
1065        @Description(shortDefinition="Source of value set", formalDefinition="Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used." )
1066        protected CanonicalType valueSet;
1067
1068        private static final long serialVersionUID = -2048653907L;
1069
1070    /**
1071     * Constructor
1072     */
1073      public OperationDefinitionParameterBindingComponent() {
1074        super();
1075      }
1076
1077    /**
1078     * Constructor
1079     */
1080      public OperationDefinitionParameterBindingComponent(BindingStrength strength, String valueSet) {
1081        super();
1082        this.setStrength(strength);
1083        this.setValueSet(valueSet);
1084      }
1085
1086        /**
1087         * @return {@link #strength} (Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.). This is the underlying object with id, value and extensions. The accessor "getStrength" gives direct access to the value
1088         */
1089        public Enumeration<BindingStrength> getStrengthElement() { 
1090          if (this.strength == null)
1091            if (Configuration.errorOnAutoCreate())
1092              throw new Error("Attempt to auto-create OperationDefinitionParameterBindingComponent.strength");
1093            else if (Configuration.doAutoCreate())
1094              this.strength = new Enumeration<BindingStrength>(new BindingStrengthEnumFactory()); // bb
1095          return this.strength;
1096        }
1097
1098        public boolean hasStrengthElement() { 
1099          return this.strength != null && !this.strength.isEmpty();
1100        }
1101
1102        public boolean hasStrength() { 
1103          return this.strength != null && !this.strength.isEmpty();
1104        }
1105
1106        /**
1107         * @param value {@link #strength} (Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.). This is the underlying object with id, value and extensions. The accessor "getStrength" gives direct access to the value
1108         */
1109        public OperationDefinitionParameterBindingComponent setStrengthElement(Enumeration<BindingStrength> value) { 
1110          this.strength = value;
1111          return this;
1112        }
1113
1114        /**
1115         * @return Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.
1116         */
1117        public BindingStrength getStrength() { 
1118          return this.strength == null ? null : this.strength.getValue();
1119        }
1120
1121        /**
1122         * @param value Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.
1123         */
1124        public OperationDefinitionParameterBindingComponent setStrength(BindingStrength value) { 
1125            if (this.strength == null)
1126              this.strength = new Enumeration<BindingStrength>(new BindingStrengthEnumFactory());
1127            this.strength.setValue(value);
1128          return this;
1129        }
1130
1131        /**
1132         * @return {@link #valueSet} (Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used.). This is the underlying object with id, value and extensions. The accessor "getValueSet" gives direct access to the value
1133         */
1134        public CanonicalType getValueSetElement() { 
1135          if (this.valueSet == null)
1136            if (Configuration.errorOnAutoCreate())
1137              throw new Error("Attempt to auto-create OperationDefinitionParameterBindingComponent.valueSet");
1138            else if (Configuration.doAutoCreate())
1139              this.valueSet = new CanonicalType(); // bb
1140          return this.valueSet;
1141        }
1142
1143        public boolean hasValueSetElement() { 
1144          return this.valueSet != null && !this.valueSet.isEmpty();
1145        }
1146
1147        public boolean hasValueSet() { 
1148          return this.valueSet != null && !this.valueSet.isEmpty();
1149        }
1150
1151        /**
1152         * @param value {@link #valueSet} (Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used.). This is the underlying object with id, value and extensions. The accessor "getValueSet" gives direct access to the value
1153         */
1154        public OperationDefinitionParameterBindingComponent setValueSetElement(CanonicalType value) { 
1155          this.valueSet = value;
1156          return this;
1157        }
1158
1159        /**
1160         * @return Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used.
1161         */
1162        public String getValueSet() { 
1163          return this.valueSet == null ? null : this.valueSet.getValue();
1164        }
1165
1166        /**
1167         * @param value Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used.
1168         */
1169        public OperationDefinitionParameterBindingComponent setValueSet(String value) { 
1170            if (this.valueSet == null)
1171              this.valueSet = new CanonicalType();
1172            this.valueSet.setValue(value);
1173          return this;
1174        }
1175
1176        protected void listChildren(List<Property> children) {
1177          super.listChildren(children);
1178          children.add(new Property("strength", "code", "Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.", 0, 1, strength));
1179          children.add(new Property("valueSet", "canonical(ValueSet)", "Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used.", 0, 1, valueSet));
1180        }
1181
1182        @Override
1183        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1184          switch (_hash) {
1185          case 1791316033: /*strength*/  return new Property("strength", "code", "Indicates the degree of conformance expectations associated with this binding - that is, the degree to which the provided value set must be adhered to in the instances.", 0, 1, strength);
1186          case -1410174671: /*valueSet*/  return new Property("valueSet", "canonical(ValueSet)", "Points to the value set or external definition (e.g. implicit value set) that identifies the set of codes to be used.", 0, 1, valueSet);
1187          default: return super.getNamedProperty(_hash, _name, _checkValid);
1188          }
1189
1190        }
1191
1192      @Override
1193      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1194        switch (hash) {
1195        case 1791316033: /*strength*/ return this.strength == null ? new Base[0] : new Base[] {this.strength}; // Enumeration<BindingStrength>
1196        case -1410174671: /*valueSet*/ return this.valueSet == null ? new Base[0] : new Base[] {this.valueSet}; // CanonicalType
1197        default: return super.getProperty(hash, name, checkValid);
1198        }
1199
1200      }
1201
1202      @Override
1203      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1204        switch (hash) {
1205        case 1791316033: // strength
1206          value = new BindingStrengthEnumFactory().fromType(TypeConvertor.castToCode(value));
1207          this.strength = (Enumeration) value; // Enumeration<BindingStrength>
1208          return value;
1209        case -1410174671: // valueSet
1210          this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType
1211          return value;
1212        default: return super.setProperty(hash, name, value);
1213        }
1214
1215      }
1216
1217      @Override
1218      public Base setProperty(String name, Base value) throws FHIRException {
1219        if (name.equals("strength")) {
1220          value = new BindingStrengthEnumFactory().fromType(TypeConvertor.castToCode(value));
1221          this.strength = (Enumeration) value; // Enumeration<BindingStrength>
1222        } else if (name.equals("valueSet")) {
1223          this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType
1224        } else
1225          return super.setProperty(name, value);
1226        return value;
1227      }
1228
1229      @Override
1230      public Base makeProperty(int hash, String name) throws FHIRException {
1231        switch (hash) {
1232        case 1791316033:  return getStrengthElement();
1233        case -1410174671:  return getValueSetElement();
1234        default: return super.makeProperty(hash, name);
1235        }
1236
1237      }
1238
1239      @Override
1240      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1241        switch (hash) {
1242        case 1791316033: /*strength*/ return new String[] {"code"};
1243        case -1410174671: /*valueSet*/ return new String[] {"canonical"};
1244        default: return super.getTypesForProperty(hash, name);
1245        }
1246
1247      }
1248
1249      @Override
1250      public Base addChild(String name) throws FHIRException {
1251        if (name.equals("strength")) {
1252          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.binding.strength");
1253        }
1254        else if (name.equals("valueSet")) {
1255          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.binding.valueSet");
1256        }
1257        else
1258          return super.addChild(name);
1259      }
1260
1261      public OperationDefinitionParameterBindingComponent copy() {
1262        OperationDefinitionParameterBindingComponent dst = new OperationDefinitionParameterBindingComponent();
1263        copyValues(dst);
1264        return dst;
1265      }
1266
1267      public void copyValues(OperationDefinitionParameterBindingComponent dst) {
1268        super.copyValues(dst);
1269        dst.strength = strength == null ? null : strength.copy();
1270        dst.valueSet = valueSet == null ? null : valueSet.copy();
1271      }
1272
1273      @Override
1274      public boolean equalsDeep(Base other_) {
1275        if (!super.equalsDeep(other_))
1276          return false;
1277        if (!(other_ instanceof OperationDefinitionParameterBindingComponent))
1278          return false;
1279        OperationDefinitionParameterBindingComponent o = (OperationDefinitionParameterBindingComponent) other_;
1280        return compareDeep(strength, o.strength, true) && compareDeep(valueSet, o.valueSet, true);
1281      }
1282
1283      @Override
1284      public boolean equalsShallow(Base other_) {
1285        if (!super.equalsShallow(other_))
1286          return false;
1287        if (!(other_ instanceof OperationDefinitionParameterBindingComponent))
1288          return false;
1289        OperationDefinitionParameterBindingComponent o = (OperationDefinitionParameterBindingComponent) other_;
1290        return compareValues(strength, o.strength, true) && compareValues(valueSet, o.valueSet, true);
1291      }
1292
1293      public boolean isEmpty() {
1294        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(strength, valueSet);
1295      }
1296
1297  public String fhirType() {
1298    return "OperationDefinition.parameter.binding";
1299
1300  }
1301
1302  }
1303
1304    @Block()
1305    public static class OperationDefinitionParameterReferencedFromComponent extends BackboneElement implements IBaseBackboneElement {
1306        /**
1307         * The name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resource.
1308         */
1309        @Child(name = "source", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1310        @Description(shortDefinition="Referencing parameter", formalDefinition="The name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resource." )
1311        protected StringType source;
1312
1313        /**
1314         * The id of the element in the referencing resource that is expected to resolve to this resource.
1315         */
1316        @Child(name = "sourceId", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1317        @Description(shortDefinition="Element id of reference", formalDefinition="The id of the element in the referencing resource that is expected to resolve to this resource." )
1318        protected StringType sourceId;
1319
1320        private static final long serialVersionUID = -104239783L;
1321
1322    /**
1323     * Constructor
1324     */
1325      public OperationDefinitionParameterReferencedFromComponent() {
1326        super();
1327      }
1328
1329    /**
1330     * Constructor
1331     */
1332      public OperationDefinitionParameterReferencedFromComponent(String source) {
1333        super();
1334        this.setSource(source);
1335      }
1336
1337        /**
1338         * @return {@link #source} (The name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resource.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value
1339         */
1340        public StringType getSourceElement() { 
1341          if (this.source == null)
1342            if (Configuration.errorOnAutoCreate())
1343              throw new Error("Attempt to auto-create OperationDefinitionParameterReferencedFromComponent.source");
1344            else if (Configuration.doAutoCreate())
1345              this.source = new StringType(); // bb
1346          return this.source;
1347        }
1348
1349        public boolean hasSourceElement() { 
1350          return this.source != null && !this.source.isEmpty();
1351        }
1352
1353        public boolean hasSource() { 
1354          return this.source != null && !this.source.isEmpty();
1355        }
1356
1357        /**
1358         * @param value {@link #source} (The name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resource.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value
1359         */
1360        public OperationDefinitionParameterReferencedFromComponent setSourceElement(StringType value) { 
1361          this.source = value;
1362          return this;
1363        }
1364
1365        /**
1366         * @return The name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resource.
1367         */
1368        public String getSource() { 
1369          return this.source == null ? null : this.source.getValue();
1370        }
1371
1372        /**
1373         * @param value The name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resource.
1374         */
1375        public OperationDefinitionParameterReferencedFromComponent setSource(String value) { 
1376            if (this.source == null)
1377              this.source = new StringType();
1378            this.source.setValue(value);
1379          return this;
1380        }
1381
1382        /**
1383         * @return {@link #sourceId} (The id of the element in the referencing resource that is expected to resolve to this resource.). This is the underlying object with id, value and extensions. The accessor "getSourceId" gives direct access to the value
1384         */
1385        public StringType getSourceIdElement() { 
1386          if (this.sourceId == null)
1387            if (Configuration.errorOnAutoCreate())
1388              throw new Error("Attempt to auto-create OperationDefinitionParameterReferencedFromComponent.sourceId");
1389            else if (Configuration.doAutoCreate())
1390              this.sourceId = new StringType(); // bb
1391          return this.sourceId;
1392        }
1393
1394        public boolean hasSourceIdElement() { 
1395          return this.sourceId != null && !this.sourceId.isEmpty();
1396        }
1397
1398        public boolean hasSourceId() { 
1399          return this.sourceId != null && !this.sourceId.isEmpty();
1400        }
1401
1402        /**
1403         * @param value {@link #sourceId} (The id of the element in the referencing resource that is expected to resolve to this resource.). This is the underlying object with id, value and extensions. The accessor "getSourceId" gives direct access to the value
1404         */
1405        public OperationDefinitionParameterReferencedFromComponent setSourceIdElement(StringType value) { 
1406          this.sourceId = value;
1407          return this;
1408        }
1409
1410        /**
1411         * @return The id of the element in the referencing resource that is expected to resolve to this resource.
1412         */
1413        public String getSourceId() { 
1414          return this.sourceId == null ? null : this.sourceId.getValue();
1415        }
1416
1417        /**
1418         * @param value The id of the element in the referencing resource that is expected to resolve to this resource.
1419         */
1420        public OperationDefinitionParameterReferencedFromComponent setSourceId(String value) { 
1421          if (Utilities.noString(value))
1422            this.sourceId = null;
1423          else {
1424            if (this.sourceId == null)
1425              this.sourceId = new StringType();
1426            this.sourceId.setValue(value);
1427          }
1428          return this;
1429        }
1430
1431        protected void listChildren(List<Property> children) {
1432          super.listChildren(children);
1433          children.add(new Property("source", "string", "The name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resource.", 0, 1, source));
1434          children.add(new Property("sourceId", "string", "The id of the element in the referencing resource that is expected to resolve to this resource.", 0, 1, sourceId));
1435        }
1436
1437        @Override
1438        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1439          switch (_hash) {
1440          case -896505829: /*source*/  return new Property("source", "string", "The name of the parameter or dot-separated path of parameter names pointing to the resource parameter that is expected to contain a reference to this resource.", 0, 1, source);
1441          case 1746327190: /*sourceId*/  return new Property("sourceId", "string", "The id of the element in the referencing resource that is expected to resolve to this resource.", 0, 1, sourceId);
1442          default: return super.getNamedProperty(_hash, _name, _checkValid);
1443          }
1444
1445        }
1446
1447      @Override
1448      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1449        switch (hash) {
1450        case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // StringType
1451        case 1746327190: /*sourceId*/ return this.sourceId == null ? new Base[0] : new Base[] {this.sourceId}; // StringType
1452        default: return super.getProperty(hash, name, checkValid);
1453        }
1454
1455      }
1456
1457      @Override
1458      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1459        switch (hash) {
1460        case -896505829: // source
1461          this.source = TypeConvertor.castToString(value); // StringType
1462          return value;
1463        case 1746327190: // sourceId
1464          this.sourceId = TypeConvertor.castToString(value); // StringType
1465          return value;
1466        default: return super.setProperty(hash, name, value);
1467        }
1468
1469      }
1470
1471      @Override
1472      public Base setProperty(String name, Base value) throws FHIRException {
1473        if (name.equals("source")) {
1474          this.source = TypeConvertor.castToString(value); // StringType
1475        } else if (name.equals("sourceId")) {
1476          this.sourceId = TypeConvertor.castToString(value); // StringType
1477        } else
1478          return super.setProperty(name, value);
1479        return value;
1480      }
1481
1482      @Override
1483      public Base makeProperty(int hash, String name) throws FHIRException {
1484        switch (hash) {
1485        case -896505829:  return getSourceElement();
1486        case 1746327190:  return getSourceIdElement();
1487        default: return super.makeProperty(hash, name);
1488        }
1489
1490      }
1491
1492      @Override
1493      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1494        switch (hash) {
1495        case -896505829: /*source*/ return new String[] {"string"};
1496        case 1746327190: /*sourceId*/ return new String[] {"string"};
1497        default: return super.getTypesForProperty(hash, name);
1498        }
1499
1500      }
1501
1502      @Override
1503      public Base addChild(String name) throws FHIRException {
1504        if (name.equals("source")) {
1505          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.referencedFrom.source");
1506        }
1507        else if (name.equals("sourceId")) {
1508          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.parameter.referencedFrom.sourceId");
1509        }
1510        else
1511          return super.addChild(name);
1512      }
1513
1514      public OperationDefinitionParameterReferencedFromComponent copy() {
1515        OperationDefinitionParameterReferencedFromComponent dst = new OperationDefinitionParameterReferencedFromComponent();
1516        copyValues(dst);
1517        return dst;
1518      }
1519
1520      public void copyValues(OperationDefinitionParameterReferencedFromComponent dst) {
1521        super.copyValues(dst);
1522        dst.source = source == null ? null : source.copy();
1523        dst.sourceId = sourceId == null ? null : sourceId.copy();
1524      }
1525
1526      @Override
1527      public boolean equalsDeep(Base other_) {
1528        if (!super.equalsDeep(other_))
1529          return false;
1530        if (!(other_ instanceof OperationDefinitionParameterReferencedFromComponent))
1531          return false;
1532        OperationDefinitionParameterReferencedFromComponent o = (OperationDefinitionParameterReferencedFromComponent) other_;
1533        return compareDeep(source, o.source, true) && compareDeep(sourceId, o.sourceId, true);
1534      }
1535
1536      @Override
1537      public boolean equalsShallow(Base other_) {
1538        if (!super.equalsShallow(other_))
1539          return false;
1540        if (!(other_ instanceof OperationDefinitionParameterReferencedFromComponent))
1541          return false;
1542        OperationDefinitionParameterReferencedFromComponent o = (OperationDefinitionParameterReferencedFromComponent) other_;
1543        return compareValues(source, o.source, true) && compareValues(sourceId, o.sourceId, true);
1544      }
1545
1546      public boolean isEmpty() {
1547        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(source, sourceId);
1548      }
1549
1550  public String fhirType() {
1551    return "OperationDefinition.parameter.referencedFrom";
1552
1553  }
1554
1555  }
1556
1557    @Block()
1558    public static class OperationDefinitionOverloadComponent extends BackboneElement implements IBaseBackboneElement {
1559        /**
1560         * Name of parameter to include in overload.
1561         */
1562        @Child(name = "parameterName", type = {StringType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1563        @Description(shortDefinition="Name of parameter to include in overload", formalDefinition="Name of parameter to include in overload." )
1564        protected List<StringType> parameterName;
1565
1566        /**
1567         * Comments to go on overload.
1568         */
1569        @Child(name = "comment", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1570        @Description(shortDefinition="Comments to go on overload", formalDefinition="Comments to go on overload." )
1571        protected StringType comment;
1572
1573        private static final long serialVersionUID = -907948545L;
1574
1575    /**
1576     * Constructor
1577     */
1578      public OperationDefinitionOverloadComponent() {
1579        super();
1580      }
1581
1582        /**
1583         * @return {@link #parameterName} (Name of parameter to include in overload.)
1584         */
1585        public List<StringType> getParameterName() { 
1586          if (this.parameterName == null)
1587            this.parameterName = new ArrayList<StringType>();
1588          return this.parameterName;
1589        }
1590
1591        /**
1592         * @return Returns a reference to <code>this</code> for easy method chaining
1593         */
1594        public OperationDefinitionOverloadComponent setParameterName(List<StringType> theParameterName) { 
1595          this.parameterName = theParameterName;
1596          return this;
1597        }
1598
1599        public boolean hasParameterName() { 
1600          if (this.parameterName == null)
1601            return false;
1602          for (StringType item : this.parameterName)
1603            if (!item.isEmpty())
1604              return true;
1605          return false;
1606        }
1607
1608        /**
1609         * @return {@link #parameterName} (Name of parameter to include in overload.)
1610         */
1611        public StringType addParameterNameElement() {//2 
1612          StringType t = new StringType();
1613          if (this.parameterName == null)
1614            this.parameterName = new ArrayList<StringType>();
1615          this.parameterName.add(t);
1616          return t;
1617        }
1618
1619        /**
1620         * @param value {@link #parameterName} (Name of parameter to include in overload.)
1621         */
1622        public OperationDefinitionOverloadComponent addParameterName(String value) { //1
1623          StringType t = new StringType();
1624          t.setValue(value);
1625          if (this.parameterName == null)
1626            this.parameterName = new ArrayList<StringType>();
1627          this.parameterName.add(t);
1628          return this;
1629        }
1630
1631        /**
1632         * @param value {@link #parameterName} (Name of parameter to include in overload.)
1633         */
1634        public boolean hasParameterName(String value) { 
1635          if (this.parameterName == null)
1636            return false;
1637          for (StringType v : this.parameterName)
1638            if (v.getValue().equals(value)) // string
1639              return true;
1640          return false;
1641        }
1642
1643        /**
1644         * @return {@link #comment} (Comments to go on overload.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
1645         */
1646        public StringType getCommentElement() { 
1647          if (this.comment == null)
1648            if (Configuration.errorOnAutoCreate())
1649              throw new Error("Attempt to auto-create OperationDefinitionOverloadComponent.comment");
1650            else if (Configuration.doAutoCreate())
1651              this.comment = new StringType(); // bb
1652          return this.comment;
1653        }
1654
1655        public boolean hasCommentElement() { 
1656          return this.comment != null && !this.comment.isEmpty();
1657        }
1658
1659        public boolean hasComment() { 
1660          return this.comment != null && !this.comment.isEmpty();
1661        }
1662
1663        /**
1664         * @param value {@link #comment} (Comments to go on overload.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
1665         */
1666        public OperationDefinitionOverloadComponent setCommentElement(StringType value) { 
1667          this.comment = value;
1668          return this;
1669        }
1670
1671        /**
1672         * @return Comments to go on overload.
1673         */
1674        public String getComment() { 
1675          return this.comment == null ? null : this.comment.getValue();
1676        }
1677
1678        /**
1679         * @param value Comments to go on overload.
1680         */
1681        public OperationDefinitionOverloadComponent setComment(String value) { 
1682          if (Utilities.noString(value))
1683            this.comment = null;
1684          else {
1685            if (this.comment == null)
1686              this.comment = new StringType();
1687            this.comment.setValue(value);
1688          }
1689          return this;
1690        }
1691
1692        protected void listChildren(List<Property> children) {
1693          super.listChildren(children);
1694          children.add(new Property("parameterName", "string", "Name of parameter to include in overload.", 0, java.lang.Integer.MAX_VALUE, parameterName));
1695          children.add(new Property("comment", "string", "Comments to go on overload.", 0, 1, comment));
1696        }
1697
1698        @Override
1699        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1700          switch (_hash) {
1701          case -379607596: /*parameterName*/  return new Property("parameterName", "string", "Name of parameter to include in overload.", 0, java.lang.Integer.MAX_VALUE, parameterName);
1702          case 950398559: /*comment*/  return new Property("comment", "string", "Comments to go on overload.", 0, 1, comment);
1703          default: return super.getNamedProperty(_hash, _name, _checkValid);
1704          }
1705
1706        }
1707
1708      @Override
1709      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1710        switch (hash) {
1711        case -379607596: /*parameterName*/ return this.parameterName == null ? new Base[0] : this.parameterName.toArray(new Base[this.parameterName.size()]); // StringType
1712        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
1713        default: return super.getProperty(hash, name, checkValid);
1714        }
1715
1716      }
1717
1718      @Override
1719      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1720        switch (hash) {
1721        case -379607596: // parameterName
1722          this.getParameterName().add(TypeConvertor.castToString(value)); // StringType
1723          return value;
1724        case 950398559: // comment
1725          this.comment = TypeConvertor.castToString(value); // StringType
1726          return value;
1727        default: return super.setProperty(hash, name, value);
1728        }
1729
1730      }
1731
1732      @Override
1733      public Base setProperty(String name, Base value) throws FHIRException {
1734        if (name.equals("parameterName")) {
1735          this.getParameterName().add(TypeConvertor.castToString(value));
1736        } else if (name.equals("comment")) {
1737          this.comment = TypeConvertor.castToString(value); // StringType
1738        } else
1739          return super.setProperty(name, value);
1740        return value;
1741      }
1742
1743      @Override
1744      public Base makeProperty(int hash, String name) throws FHIRException {
1745        switch (hash) {
1746        case -379607596:  return addParameterNameElement();
1747        case 950398559:  return getCommentElement();
1748        default: return super.makeProperty(hash, name);
1749        }
1750
1751      }
1752
1753      @Override
1754      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1755        switch (hash) {
1756        case -379607596: /*parameterName*/ return new String[] {"string"};
1757        case 950398559: /*comment*/ return new String[] {"string"};
1758        default: return super.getTypesForProperty(hash, name);
1759        }
1760
1761      }
1762
1763      @Override
1764      public Base addChild(String name) throws FHIRException {
1765        if (name.equals("parameterName")) {
1766          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.overload.parameterName");
1767        }
1768        else if (name.equals("comment")) {
1769          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.overload.comment");
1770        }
1771        else
1772          return super.addChild(name);
1773      }
1774
1775      public OperationDefinitionOverloadComponent copy() {
1776        OperationDefinitionOverloadComponent dst = new OperationDefinitionOverloadComponent();
1777        copyValues(dst);
1778        return dst;
1779      }
1780
1781      public void copyValues(OperationDefinitionOverloadComponent dst) {
1782        super.copyValues(dst);
1783        if (parameterName != null) {
1784          dst.parameterName = new ArrayList<StringType>();
1785          for (StringType i : parameterName)
1786            dst.parameterName.add(i.copy());
1787        };
1788        dst.comment = comment == null ? null : comment.copy();
1789      }
1790
1791      @Override
1792      public boolean equalsDeep(Base other_) {
1793        if (!super.equalsDeep(other_))
1794          return false;
1795        if (!(other_ instanceof OperationDefinitionOverloadComponent))
1796          return false;
1797        OperationDefinitionOverloadComponent o = (OperationDefinitionOverloadComponent) other_;
1798        return compareDeep(parameterName, o.parameterName, true) && compareDeep(comment, o.comment, true)
1799          ;
1800      }
1801
1802      @Override
1803      public boolean equalsShallow(Base other_) {
1804        if (!super.equalsShallow(other_))
1805          return false;
1806        if (!(other_ instanceof OperationDefinitionOverloadComponent))
1807          return false;
1808        OperationDefinitionOverloadComponent o = (OperationDefinitionOverloadComponent) other_;
1809        return compareValues(parameterName, o.parameterName, true) && compareValues(comment, o.comment, true)
1810          ;
1811      }
1812
1813      public boolean isEmpty() {
1814        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(parameterName, comment);
1815      }
1816
1817  public String fhirType() {
1818    return "OperationDefinition.overload";
1819
1820  }
1821
1822  }
1823
1824    /**
1825     * An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different servers.
1826     */
1827    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
1828    @Description(shortDefinition="Canonical identifier for this operation definition, represented as a URI (globally unique)", formalDefinition="An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different servers." )
1829    protected UriType url;
1830
1831    /**
1832     * The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
1833     */
1834    @Child(name = "version", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
1835    @Description(shortDefinition="Business version of the operation definition", formalDefinition="The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence." )
1836    protected StringType version;
1837
1838    /**
1839     * A natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1840     */
1841    @Child(name = "name", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=true)
1842    @Description(shortDefinition="Name for this operation definition (computer friendly)", formalDefinition="A natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
1843    protected StringType name;
1844
1845    /**
1846     * A short, descriptive, user-friendly title for the operation definition.
1847     */
1848    @Child(name = "title", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
1849    @Description(shortDefinition="Name for this operation definition (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the operation definition." )
1850    protected StringType title;
1851
1852    /**
1853     * The status of this operation definition. Enables tracking the life-cycle of the content.
1854     */
1855    @Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1, modifier=true, summary=true)
1856    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this operation definition. Enables tracking the life-cycle of the content." )
1857    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
1858    protected Enumeration<PublicationStatus> status;
1859
1860    /**
1861     * Whether this is an operation or a named query.
1862     */
1863    @Child(name = "kind", type = {CodeType.class}, order=5, min=1, max=1, modifier=false, summary=true)
1864    @Description(shortDefinition="operation | query", formalDefinition="Whether this is an operation or a named query." )
1865    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/operation-kind")
1866    protected Enumeration<OperationKind> kind;
1867
1868    /**
1869     * A Boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
1870     */
1871    @Child(name = "experimental", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true)
1872    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
1873    protected BooleanType experimental;
1874
1875    /**
1876     * The date  (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changes.
1877     */
1878    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
1879    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changes." )
1880    protected DateTimeType date;
1881
1882    /**
1883     * The name of the organization or individual that published the operation definition.
1884     */
1885    @Child(name = "publisher", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
1886    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the operation definition." )
1887    protected StringType publisher;
1888
1889    /**
1890     * Contact details to assist a user in finding and communicating with the publisher.
1891     */
1892    @Child(name = "contact", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1893    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
1894    protected List<ContactDetail> contact;
1895
1896    /**
1897     * A free text natural language description of the operation definition from a consumer's perspective.
1898     */
1899    @Child(name = "description", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=false)
1900    @Description(shortDefinition="Natural language description of the operation definition", formalDefinition="A free text natural language description of the operation definition from a consumer's perspective." )
1901    protected MarkdownType description;
1902
1903    /**
1904     * The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate operation definition instances.
1905     */
1906    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1907    @Description(shortDefinition="The context that the content is intended to support", formalDefinition="The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate operation definition instances." )
1908    protected List<UsageContext> useContext;
1909
1910    /**
1911     * A legal or geographic region in which the operation definition is intended to be used.
1912     */
1913    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1914    @Description(shortDefinition="Intended jurisdiction for operation definition (if applicable)", formalDefinition="A legal or geographic region in which the operation definition is intended to be used." )
1915    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
1916    protected List<CodeableConcept> jurisdiction;
1917
1918    /**
1919     * Explanation of why this operation definition is needed and why it has been designed as it has.
1920     */
1921    @Child(name = "purpose", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=false)
1922    @Description(shortDefinition="Why this operation definition is defined", formalDefinition="Explanation of why this operation definition is needed and why it has been designed as it has." )
1923    protected MarkdownType purpose;
1924
1925    /**
1926     * Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting  state'.
1927     */
1928    @Child(name = "affectsState", type = {BooleanType.class}, order=14, min=0, max=1, modifier=false, summary=true)
1929    @Description(shortDefinition="Whether content is changed by the operation", formalDefinition="Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting  state'." )
1930    protected BooleanType affectsState;
1931
1932    /**
1933     * The name used to invoke the operation.
1934     */
1935    @Child(name = "code", type = {CodeType.class}, order=15, min=1, max=1, modifier=false, summary=true)
1936    @Description(shortDefinition="Name used to invoke the operation", formalDefinition="The name used to invoke the operation." )
1937    protected CodeType code;
1938
1939    /**
1940     * Additional information about how to use this operation or named query.
1941     */
1942    @Child(name = "comment", type = {MarkdownType.class}, order=16, min=0, max=1, modifier=false, summary=false)
1943    @Description(shortDefinition="Additional information about use", formalDefinition="Additional information about how to use this operation or named query." )
1944    protected MarkdownType comment;
1945
1946    /**
1947     * Indicates that this operation definition is a constraining profile on the base.
1948     */
1949    @Child(name = "base", type = {CanonicalType.class}, order=17, min=0, max=1, modifier=false, summary=true)
1950    @Description(shortDefinition="Marks this as a profile of the base", formalDefinition="Indicates that this operation definition is a constraining profile on the base." )
1951    protected CanonicalType base;
1952
1953    /**
1954     * The types on which this operation can be executed.
1955     */
1956    @Child(name = "resource", type = {CodeType.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1957    @Description(shortDefinition="Types this operation applies to", formalDefinition="The types on which this operation can be executed." )
1958    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
1959    protected List<CodeType> resource;
1960
1961    /**
1962     * Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context).
1963     */
1964    @Child(name = "system", type = {BooleanType.class}, order=19, min=1, max=1, modifier=false, summary=true)
1965    @Description(shortDefinition="Invoke at the system level?", formalDefinition="Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context)." )
1966    protected BooleanType system;
1967
1968    /**
1969     * Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource id for the context).
1970     */
1971    @Child(name = "type", type = {BooleanType.class}, order=20, min=1, max=1, modifier=false, summary=true)
1972    @Description(shortDefinition="Invoke at the type level?", formalDefinition="Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource id for the context)." )
1973    protected BooleanType type;
1974
1975    /**
1976     * Indicates whether this operation can be invoked on a particular instance of one of the given types.
1977     */
1978    @Child(name = "instance", type = {BooleanType.class}, order=21, min=1, max=1, modifier=false, summary=true)
1979    @Description(shortDefinition="Invoke on an instance?", formalDefinition="Indicates whether this operation can be invoked on a particular instance of one of the given types." )
1980    protected BooleanType instance;
1981
1982    /**
1983     * Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a whole.
1984     */
1985    @Child(name = "inputProfile", type = {CanonicalType.class}, order=22, min=0, max=1, modifier=false, summary=false)
1986    @Description(shortDefinition="Validation information for in parameters", formalDefinition="Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a whole." )
1987    protected CanonicalType inputProfile;
1988
1989    /**
1990     * Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource.
1991     */
1992    @Child(name = "outputProfile", type = {CanonicalType.class}, order=23, min=0, max=1, modifier=false, summary=false)
1993    @Description(shortDefinition="Validation information for out parameters", formalDefinition="Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource." )
1994    protected CanonicalType outputProfile;
1995
1996    /**
1997     * The parameters for the operation/query.
1998     */
1999    @Child(name = "parameter", type = {}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2000    @Description(shortDefinition="Parameters for the operation/query", formalDefinition="The parameters for the operation/query." )
2001    protected List<OperationDefinitionParameterComponent> parameter;
2002
2003    /**
2004     * Defines an appropriate combination of parameters to use when invoking this operation, to help code generators when generating overloaded parameter sets for this operation.
2005     */
2006    @Child(name = "overload", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2007    @Description(shortDefinition="Define overloaded variants for when  generating code", formalDefinition="Defines an appropriate combination of parameters to use when invoking this operation, to help code generators when generating overloaded parameter sets for this operation." )
2008    protected List<OperationDefinitionOverloadComponent> overload;
2009
2010    private static final long serialVersionUID = 715394391L;
2011
2012  /**
2013   * Constructor
2014   */
2015    public OperationDefinition() {
2016      super();
2017    }
2018
2019  /**
2020   * Constructor
2021   */
2022    public OperationDefinition(String name, PublicationStatus status, OperationKind kind, String code, boolean system, boolean type, boolean instance) {
2023      super();
2024      this.setName(name);
2025      this.setStatus(status);
2026      this.setKind(kind);
2027      this.setCode(code);
2028      this.setSystem(system);
2029      this.setType(type);
2030      this.setInstance(instance);
2031    }
2032
2033    /**
2034     * @return {@link #url} (An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2035     */
2036    public UriType getUrlElement() { 
2037      if (this.url == null)
2038        if (Configuration.errorOnAutoCreate())
2039          throw new Error("Attempt to auto-create OperationDefinition.url");
2040        else if (Configuration.doAutoCreate())
2041          this.url = new UriType(); // bb
2042      return this.url;
2043    }
2044
2045    public boolean hasUrlElement() { 
2046      return this.url != null && !this.url.isEmpty();
2047    }
2048
2049    public boolean hasUrl() { 
2050      return this.url != null && !this.url.isEmpty();
2051    }
2052
2053    /**
2054     * @param value {@link #url} (An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2055     */
2056    public OperationDefinition setUrlElement(UriType value) { 
2057      this.url = value;
2058      return this;
2059    }
2060
2061    /**
2062     * @return An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different servers.
2063     */
2064    public String getUrl() { 
2065      return this.url == null ? null : this.url.getValue();
2066    }
2067
2068    /**
2069     * @param value An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different servers.
2070     */
2071    public OperationDefinition setUrl(String value) { 
2072      if (Utilities.noString(value))
2073        this.url = null;
2074      else {
2075        if (this.url == null)
2076          this.url = new UriType();
2077        this.url.setValue(value);
2078      }
2079      return this;
2080    }
2081
2082    /**
2083     * @return {@link #version} (The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
2084     */
2085    public StringType getVersionElement() { 
2086      if (this.version == null)
2087        if (Configuration.errorOnAutoCreate())
2088          throw new Error("Attempt to auto-create OperationDefinition.version");
2089        else if (Configuration.doAutoCreate())
2090          this.version = new StringType(); // bb
2091      return this.version;
2092    }
2093
2094    public boolean hasVersionElement() { 
2095      return this.version != null && !this.version.isEmpty();
2096    }
2097
2098    public boolean hasVersion() { 
2099      return this.version != null && !this.version.isEmpty();
2100    }
2101
2102    /**
2103     * @param value {@link #version} (The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
2104     */
2105    public OperationDefinition setVersionElement(StringType value) { 
2106      this.version = value;
2107      return this;
2108    }
2109
2110    /**
2111     * @return The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
2112     */
2113    public String getVersion() { 
2114      return this.version == null ? null : this.version.getValue();
2115    }
2116
2117    /**
2118     * @param value The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
2119     */
2120    public OperationDefinition setVersion(String value) { 
2121      if (Utilities.noString(value))
2122        this.version = null;
2123      else {
2124        if (this.version == null)
2125          this.version = new StringType();
2126        this.version.setValue(value);
2127      }
2128      return this;
2129    }
2130
2131    /**
2132     * @return {@link #name} (A natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2133     */
2134    public StringType getNameElement() { 
2135      if (this.name == null)
2136        if (Configuration.errorOnAutoCreate())
2137          throw new Error("Attempt to auto-create OperationDefinition.name");
2138        else if (Configuration.doAutoCreate())
2139          this.name = new StringType(); // bb
2140      return this.name;
2141    }
2142
2143    public boolean hasNameElement() { 
2144      return this.name != null && !this.name.isEmpty();
2145    }
2146
2147    public boolean hasName() { 
2148      return this.name != null && !this.name.isEmpty();
2149    }
2150
2151    /**
2152     * @param value {@link #name} (A natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2153     */
2154    public OperationDefinition setNameElement(StringType value) { 
2155      this.name = value;
2156      return this;
2157    }
2158
2159    /**
2160     * @return A natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2161     */
2162    public String getName() { 
2163      return this.name == null ? null : this.name.getValue();
2164    }
2165
2166    /**
2167     * @param value A natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2168     */
2169    public OperationDefinition setName(String value) { 
2170        if (this.name == null)
2171          this.name = new StringType();
2172        this.name.setValue(value);
2173      return this;
2174    }
2175
2176    /**
2177     * @return {@link #title} (A short, descriptive, user-friendly title for the operation definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2178     */
2179    public StringType getTitleElement() { 
2180      if (this.title == null)
2181        if (Configuration.errorOnAutoCreate())
2182          throw new Error("Attempt to auto-create OperationDefinition.title");
2183        else if (Configuration.doAutoCreate())
2184          this.title = new StringType(); // bb
2185      return this.title;
2186    }
2187
2188    public boolean hasTitleElement() { 
2189      return this.title != null && !this.title.isEmpty();
2190    }
2191
2192    public boolean hasTitle() { 
2193      return this.title != null && !this.title.isEmpty();
2194    }
2195
2196    /**
2197     * @param value {@link #title} (A short, descriptive, user-friendly title for the operation definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2198     */
2199    public OperationDefinition setTitleElement(StringType value) { 
2200      this.title = value;
2201      return this;
2202    }
2203
2204    /**
2205     * @return A short, descriptive, user-friendly title for the operation definition.
2206     */
2207    public String getTitle() { 
2208      return this.title == null ? null : this.title.getValue();
2209    }
2210
2211    /**
2212     * @param value A short, descriptive, user-friendly title for the operation definition.
2213     */
2214    public OperationDefinition setTitle(String value) { 
2215      if (Utilities.noString(value))
2216        this.title = null;
2217      else {
2218        if (this.title == null)
2219          this.title = new StringType();
2220        this.title.setValue(value);
2221      }
2222      return this;
2223    }
2224
2225    /**
2226     * @return {@link #status} (The status of this operation definition. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2227     */
2228    public Enumeration<PublicationStatus> getStatusElement() { 
2229      if (this.status == null)
2230        if (Configuration.errorOnAutoCreate())
2231          throw new Error("Attempt to auto-create OperationDefinition.status");
2232        else if (Configuration.doAutoCreate())
2233          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
2234      return this.status;
2235    }
2236
2237    public boolean hasStatusElement() { 
2238      return this.status != null && !this.status.isEmpty();
2239    }
2240
2241    public boolean hasStatus() { 
2242      return this.status != null && !this.status.isEmpty();
2243    }
2244
2245    /**
2246     * @param value {@link #status} (The status of this operation definition. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2247     */
2248    public OperationDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
2249      this.status = value;
2250      return this;
2251    }
2252
2253    /**
2254     * @return The status of this operation definition. Enables tracking the life-cycle of the content.
2255     */
2256    public PublicationStatus getStatus() { 
2257      return this.status == null ? null : this.status.getValue();
2258    }
2259
2260    /**
2261     * @param value The status of this operation definition. Enables tracking the life-cycle of the content.
2262     */
2263    public OperationDefinition setStatus(PublicationStatus value) { 
2264        if (this.status == null)
2265          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
2266        this.status.setValue(value);
2267      return this;
2268    }
2269
2270    /**
2271     * @return {@link #kind} (Whether this is an operation or a named query.). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
2272     */
2273    public Enumeration<OperationKind> getKindElement() { 
2274      if (this.kind == null)
2275        if (Configuration.errorOnAutoCreate())
2276          throw new Error("Attempt to auto-create OperationDefinition.kind");
2277        else if (Configuration.doAutoCreate())
2278          this.kind = new Enumeration<OperationKind>(new OperationKindEnumFactory()); // bb
2279      return this.kind;
2280    }
2281
2282    public boolean hasKindElement() { 
2283      return this.kind != null && !this.kind.isEmpty();
2284    }
2285
2286    public boolean hasKind() { 
2287      return this.kind != null && !this.kind.isEmpty();
2288    }
2289
2290    /**
2291     * @param value {@link #kind} (Whether this is an operation or a named query.). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
2292     */
2293    public OperationDefinition setKindElement(Enumeration<OperationKind> value) { 
2294      this.kind = value;
2295      return this;
2296    }
2297
2298    /**
2299     * @return Whether this is an operation or a named query.
2300     */
2301    public OperationKind getKind() { 
2302      return this.kind == null ? null : this.kind.getValue();
2303    }
2304
2305    /**
2306     * @param value Whether this is an operation or a named query.
2307     */
2308    public OperationDefinition setKind(OperationKind value) { 
2309        if (this.kind == null)
2310          this.kind = new Enumeration<OperationKind>(new OperationKindEnumFactory());
2311        this.kind.setValue(value);
2312      return this;
2313    }
2314
2315    /**
2316     * @return {@link #experimental} (A Boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
2317     */
2318    public BooleanType getExperimentalElement() { 
2319      if (this.experimental == null)
2320        if (Configuration.errorOnAutoCreate())
2321          throw new Error("Attempt to auto-create OperationDefinition.experimental");
2322        else if (Configuration.doAutoCreate())
2323          this.experimental = new BooleanType(); // bb
2324      return this.experimental;
2325    }
2326
2327    public boolean hasExperimentalElement() { 
2328      return this.experimental != null && !this.experimental.isEmpty();
2329    }
2330
2331    public boolean hasExperimental() { 
2332      return this.experimental != null && !this.experimental.isEmpty();
2333    }
2334
2335    /**
2336     * @param value {@link #experimental} (A Boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
2337     */
2338    public OperationDefinition setExperimentalElement(BooleanType value) { 
2339      this.experimental = value;
2340      return this;
2341    }
2342
2343    /**
2344     * @return A Boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
2345     */
2346    public boolean getExperimental() { 
2347      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
2348    }
2349
2350    /**
2351     * @param value A Boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
2352     */
2353    public OperationDefinition setExperimental(boolean value) { 
2354        if (this.experimental == null)
2355          this.experimental = new BooleanType();
2356        this.experimental.setValue(value);
2357      return this;
2358    }
2359
2360    /**
2361     * @return {@link #date} (The date  (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
2362     */
2363    public DateTimeType getDateElement() { 
2364      if (this.date == null)
2365        if (Configuration.errorOnAutoCreate())
2366          throw new Error("Attempt to auto-create OperationDefinition.date");
2367        else if (Configuration.doAutoCreate())
2368          this.date = new DateTimeType(); // bb
2369      return this.date;
2370    }
2371
2372    public boolean hasDateElement() { 
2373      return this.date != null && !this.date.isEmpty();
2374    }
2375
2376    public boolean hasDate() { 
2377      return this.date != null && !this.date.isEmpty();
2378    }
2379
2380    /**
2381     * @param value {@link #date} (The date  (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
2382     */
2383    public OperationDefinition setDateElement(DateTimeType value) { 
2384      this.date = value;
2385      return this;
2386    }
2387
2388    /**
2389     * @return The date  (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changes.
2390     */
2391    public Date getDate() { 
2392      return this.date == null ? null : this.date.getValue();
2393    }
2394
2395    /**
2396     * @param value The date  (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changes.
2397     */
2398    public OperationDefinition setDate(Date value) { 
2399      if (value == null)
2400        this.date = null;
2401      else {
2402        if (this.date == null)
2403          this.date = new DateTimeType();
2404        this.date.setValue(value);
2405      }
2406      return this;
2407    }
2408
2409    /**
2410     * @return {@link #publisher} (The name of the organization or individual that published the operation definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2411     */
2412    public StringType getPublisherElement() { 
2413      if (this.publisher == null)
2414        if (Configuration.errorOnAutoCreate())
2415          throw new Error("Attempt to auto-create OperationDefinition.publisher");
2416        else if (Configuration.doAutoCreate())
2417          this.publisher = new StringType(); // bb
2418      return this.publisher;
2419    }
2420
2421    public boolean hasPublisherElement() { 
2422      return this.publisher != null && !this.publisher.isEmpty();
2423    }
2424
2425    public boolean hasPublisher() { 
2426      return this.publisher != null && !this.publisher.isEmpty();
2427    }
2428
2429    /**
2430     * @param value {@link #publisher} (The name of the organization or individual that published the operation definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2431     */
2432    public OperationDefinition setPublisherElement(StringType value) { 
2433      this.publisher = value;
2434      return this;
2435    }
2436
2437    /**
2438     * @return The name of the organization or individual that published the operation definition.
2439     */
2440    public String getPublisher() { 
2441      return this.publisher == null ? null : this.publisher.getValue();
2442    }
2443
2444    /**
2445     * @param value The name of the organization or individual that published the operation definition.
2446     */
2447    public OperationDefinition setPublisher(String value) { 
2448      if (Utilities.noString(value))
2449        this.publisher = null;
2450      else {
2451        if (this.publisher == null)
2452          this.publisher = new StringType();
2453        this.publisher.setValue(value);
2454      }
2455      return this;
2456    }
2457
2458    /**
2459     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
2460     */
2461    public List<ContactDetail> getContact() { 
2462      if (this.contact == null)
2463        this.contact = new ArrayList<ContactDetail>();
2464      return this.contact;
2465    }
2466
2467    /**
2468     * @return Returns a reference to <code>this</code> for easy method chaining
2469     */
2470    public OperationDefinition setContact(List<ContactDetail> theContact) { 
2471      this.contact = theContact;
2472      return this;
2473    }
2474
2475    public boolean hasContact() { 
2476      if (this.contact == null)
2477        return false;
2478      for (ContactDetail item : this.contact)
2479        if (!item.isEmpty())
2480          return true;
2481      return false;
2482    }
2483
2484    public ContactDetail addContact() { //3
2485      ContactDetail t = new ContactDetail();
2486      if (this.contact == null)
2487        this.contact = new ArrayList<ContactDetail>();
2488      this.contact.add(t);
2489      return t;
2490    }
2491
2492    public OperationDefinition addContact(ContactDetail t) { //3
2493      if (t == null)
2494        return this;
2495      if (this.contact == null)
2496        this.contact = new ArrayList<ContactDetail>();
2497      this.contact.add(t);
2498      return this;
2499    }
2500
2501    /**
2502     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
2503     */
2504    public ContactDetail getContactFirstRep() { 
2505      if (getContact().isEmpty()) {
2506        addContact();
2507      }
2508      return getContact().get(0);
2509    }
2510
2511    /**
2512     * @return {@link #description} (A free text natural language description of the operation definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2513     */
2514    public MarkdownType getDescriptionElement() { 
2515      if (this.description == null)
2516        if (Configuration.errorOnAutoCreate())
2517          throw new Error("Attempt to auto-create OperationDefinition.description");
2518        else if (Configuration.doAutoCreate())
2519          this.description = new MarkdownType(); // bb
2520      return this.description;
2521    }
2522
2523    public boolean hasDescriptionElement() { 
2524      return this.description != null && !this.description.isEmpty();
2525    }
2526
2527    public boolean hasDescription() { 
2528      return this.description != null && !this.description.isEmpty();
2529    }
2530
2531    /**
2532     * @param value {@link #description} (A free text natural language description of the operation definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2533     */
2534    public OperationDefinition setDescriptionElement(MarkdownType value) { 
2535      this.description = value;
2536      return this;
2537    }
2538
2539    /**
2540     * @return A free text natural language description of the operation definition from a consumer's perspective.
2541     */
2542    public String getDescription() { 
2543      return this.description == null ? null : this.description.getValue();
2544    }
2545
2546    /**
2547     * @param value A free text natural language description of the operation definition from a consumer's perspective.
2548     */
2549    public OperationDefinition setDescription(String value) { 
2550      if (value == null)
2551        this.description = null;
2552      else {
2553        if (this.description == null)
2554          this.description = new MarkdownType();
2555        this.description.setValue(value);
2556      }
2557      return this;
2558    }
2559
2560    /**
2561     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate operation definition instances.)
2562     */
2563    public List<UsageContext> getUseContext() { 
2564      if (this.useContext == null)
2565        this.useContext = new ArrayList<UsageContext>();
2566      return this.useContext;
2567    }
2568
2569    /**
2570     * @return Returns a reference to <code>this</code> for easy method chaining
2571     */
2572    public OperationDefinition setUseContext(List<UsageContext> theUseContext) { 
2573      this.useContext = theUseContext;
2574      return this;
2575    }
2576
2577    public boolean hasUseContext() { 
2578      if (this.useContext == null)
2579        return false;
2580      for (UsageContext item : this.useContext)
2581        if (!item.isEmpty())
2582          return true;
2583      return false;
2584    }
2585
2586    public UsageContext addUseContext() { //3
2587      UsageContext t = new UsageContext();
2588      if (this.useContext == null)
2589        this.useContext = new ArrayList<UsageContext>();
2590      this.useContext.add(t);
2591      return t;
2592    }
2593
2594    public OperationDefinition addUseContext(UsageContext t) { //3
2595      if (t == null)
2596        return this;
2597      if (this.useContext == null)
2598        this.useContext = new ArrayList<UsageContext>();
2599      this.useContext.add(t);
2600      return this;
2601    }
2602
2603    /**
2604     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
2605     */
2606    public UsageContext getUseContextFirstRep() { 
2607      if (getUseContext().isEmpty()) {
2608        addUseContext();
2609      }
2610      return getUseContext().get(0);
2611    }
2612
2613    /**
2614     * @return {@link #jurisdiction} (A legal or geographic region in which the operation definition is intended to be used.)
2615     */
2616    public List<CodeableConcept> getJurisdiction() { 
2617      if (this.jurisdiction == null)
2618        this.jurisdiction = new ArrayList<CodeableConcept>();
2619      return this.jurisdiction;
2620    }
2621
2622    /**
2623     * @return Returns a reference to <code>this</code> for easy method chaining
2624     */
2625    public OperationDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
2626      this.jurisdiction = theJurisdiction;
2627      return this;
2628    }
2629
2630    public boolean hasJurisdiction() { 
2631      if (this.jurisdiction == null)
2632        return false;
2633      for (CodeableConcept item : this.jurisdiction)
2634        if (!item.isEmpty())
2635          return true;
2636      return false;
2637    }
2638
2639    public CodeableConcept addJurisdiction() { //3
2640      CodeableConcept t = new CodeableConcept();
2641      if (this.jurisdiction == null)
2642        this.jurisdiction = new ArrayList<CodeableConcept>();
2643      this.jurisdiction.add(t);
2644      return t;
2645    }
2646
2647    public OperationDefinition addJurisdiction(CodeableConcept t) { //3
2648      if (t == null)
2649        return this;
2650      if (this.jurisdiction == null)
2651        this.jurisdiction = new ArrayList<CodeableConcept>();
2652      this.jurisdiction.add(t);
2653      return this;
2654    }
2655
2656    /**
2657     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
2658     */
2659    public CodeableConcept getJurisdictionFirstRep() { 
2660      if (getJurisdiction().isEmpty()) {
2661        addJurisdiction();
2662      }
2663      return getJurisdiction().get(0);
2664    }
2665
2666    /**
2667     * @return {@link #purpose} (Explanation of why this operation definition is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
2668     */
2669    public MarkdownType getPurposeElement() { 
2670      if (this.purpose == null)
2671        if (Configuration.errorOnAutoCreate())
2672          throw new Error("Attempt to auto-create OperationDefinition.purpose");
2673        else if (Configuration.doAutoCreate())
2674          this.purpose = new MarkdownType(); // bb
2675      return this.purpose;
2676    }
2677
2678    public boolean hasPurposeElement() { 
2679      return this.purpose != null && !this.purpose.isEmpty();
2680    }
2681
2682    public boolean hasPurpose() { 
2683      return this.purpose != null && !this.purpose.isEmpty();
2684    }
2685
2686    /**
2687     * @param value {@link #purpose} (Explanation of why this operation definition is needed and why it has been designed as it has.). This is the underlying object with id, value and extensions. The accessor "getPurpose" gives direct access to the value
2688     */
2689    public OperationDefinition setPurposeElement(MarkdownType value) { 
2690      this.purpose = value;
2691      return this;
2692    }
2693
2694    /**
2695     * @return Explanation of why this operation definition is needed and why it has been designed as it has.
2696     */
2697    public String getPurpose() { 
2698      return this.purpose == null ? null : this.purpose.getValue();
2699    }
2700
2701    /**
2702     * @param value Explanation of why this operation definition is needed and why it has been designed as it has.
2703     */
2704    public OperationDefinition setPurpose(String value) { 
2705      if (value == null)
2706        this.purpose = null;
2707      else {
2708        if (this.purpose == null)
2709          this.purpose = new MarkdownType();
2710        this.purpose.setValue(value);
2711      }
2712      return this;
2713    }
2714
2715    /**
2716     * @return {@link #affectsState} (Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting  state'.). This is the underlying object with id, value and extensions. The accessor "getAffectsState" gives direct access to the value
2717     */
2718    public BooleanType getAffectsStateElement() { 
2719      if (this.affectsState == null)
2720        if (Configuration.errorOnAutoCreate())
2721          throw new Error("Attempt to auto-create OperationDefinition.affectsState");
2722        else if (Configuration.doAutoCreate())
2723          this.affectsState = new BooleanType(); // bb
2724      return this.affectsState;
2725    }
2726
2727    public boolean hasAffectsStateElement() { 
2728      return this.affectsState != null && !this.affectsState.isEmpty();
2729    }
2730
2731    public boolean hasAffectsState() { 
2732      return this.affectsState != null && !this.affectsState.isEmpty();
2733    }
2734
2735    /**
2736     * @param value {@link #affectsState} (Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting  state'.). This is the underlying object with id, value and extensions. The accessor "getAffectsState" gives direct access to the value
2737     */
2738    public OperationDefinition setAffectsStateElement(BooleanType value) { 
2739      this.affectsState = value;
2740      return this;
2741    }
2742
2743    /**
2744     * @return Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting  state'.
2745     */
2746    public boolean getAffectsState() { 
2747      return this.affectsState == null || this.affectsState.isEmpty() ? false : this.affectsState.getValue();
2748    }
2749
2750    /**
2751     * @param value Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting  state'.
2752     */
2753    public OperationDefinition setAffectsState(boolean value) { 
2754        if (this.affectsState == null)
2755          this.affectsState = new BooleanType();
2756        this.affectsState.setValue(value);
2757      return this;
2758    }
2759
2760    /**
2761     * @return {@link #code} (The name used to invoke the operation.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
2762     */
2763    public CodeType getCodeElement() { 
2764      if (this.code == null)
2765        if (Configuration.errorOnAutoCreate())
2766          throw new Error("Attempt to auto-create OperationDefinition.code");
2767        else if (Configuration.doAutoCreate())
2768          this.code = new CodeType(); // bb
2769      return this.code;
2770    }
2771
2772    public boolean hasCodeElement() { 
2773      return this.code != null && !this.code.isEmpty();
2774    }
2775
2776    public boolean hasCode() { 
2777      return this.code != null && !this.code.isEmpty();
2778    }
2779
2780    /**
2781     * @param value {@link #code} (The name used to invoke the operation.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
2782     */
2783    public OperationDefinition setCodeElement(CodeType value) { 
2784      this.code = value;
2785      return this;
2786    }
2787
2788    /**
2789     * @return The name used to invoke the operation.
2790     */
2791    public String getCode() { 
2792      return this.code == null ? null : this.code.getValue();
2793    }
2794
2795    /**
2796     * @param value The name used to invoke the operation.
2797     */
2798    public OperationDefinition setCode(String value) { 
2799        if (this.code == null)
2800          this.code = new CodeType();
2801        this.code.setValue(value);
2802      return this;
2803    }
2804
2805    /**
2806     * @return {@link #comment} (Additional information about how to use this operation or named query.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
2807     */
2808    public MarkdownType getCommentElement() { 
2809      if (this.comment == null)
2810        if (Configuration.errorOnAutoCreate())
2811          throw new Error("Attempt to auto-create OperationDefinition.comment");
2812        else if (Configuration.doAutoCreate())
2813          this.comment = new MarkdownType(); // bb
2814      return this.comment;
2815    }
2816
2817    public boolean hasCommentElement() { 
2818      return this.comment != null && !this.comment.isEmpty();
2819    }
2820
2821    public boolean hasComment() { 
2822      return this.comment != null && !this.comment.isEmpty();
2823    }
2824
2825    /**
2826     * @param value {@link #comment} (Additional information about how to use this operation or named query.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
2827     */
2828    public OperationDefinition setCommentElement(MarkdownType value) { 
2829      this.comment = value;
2830      return this;
2831    }
2832
2833    /**
2834     * @return Additional information about how to use this operation or named query.
2835     */
2836    public String getComment() { 
2837      return this.comment == null ? null : this.comment.getValue();
2838    }
2839
2840    /**
2841     * @param value Additional information about how to use this operation or named query.
2842     */
2843    public OperationDefinition setComment(String value) { 
2844      if (value == null)
2845        this.comment = null;
2846      else {
2847        if (this.comment == null)
2848          this.comment = new MarkdownType();
2849        this.comment.setValue(value);
2850      }
2851      return this;
2852    }
2853
2854    /**
2855     * @return {@link #base} (Indicates that this operation definition is a constraining profile on the base.). This is the underlying object with id, value and extensions. The accessor "getBase" gives direct access to the value
2856     */
2857    public CanonicalType getBaseElement() { 
2858      if (this.base == null)
2859        if (Configuration.errorOnAutoCreate())
2860          throw new Error("Attempt to auto-create OperationDefinition.base");
2861        else if (Configuration.doAutoCreate())
2862          this.base = new CanonicalType(); // bb
2863      return this.base;
2864    }
2865
2866    public boolean hasBaseElement() { 
2867      return this.base != null && !this.base.isEmpty();
2868    }
2869
2870    public boolean hasBase() { 
2871      return this.base != null && !this.base.isEmpty();
2872    }
2873
2874    /**
2875     * @param value {@link #base} (Indicates that this operation definition is a constraining profile on the base.). This is the underlying object with id, value and extensions. The accessor "getBase" gives direct access to the value
2876     */
2877    public OperationDefinition setBaseElement(CanonicalType value) { 
2878      this.base = value;
2879      return this;
2880    }
2881
2882    /**
2883     * @return Indicates that this operation definition is a constraining profile on the base.
2884     */
2885    public String getBase() { 
2886      return this.base == null ? null : this.base.getValue();
2887    }
2888
2889    /**
2890     * @param value Indicates that this operation definition is a constraining profile on the base.
2891     */
2892    public OperationDefinition setBase(String value) { 
2893      if (Utilities.noString(value))
2894        this.base = null;
2895      else {
2896        if (this.base == null)
2897          this.base = new CanonicalType();
2898        this.base.setValue(value);
2899      }
2900      return this;
2901    }
2902
2903    /**
2904     * @return {@link #resource} (The types on which this operation can be executed.)
2905     */
2906    public List<CodeType> getResource() { 
2907      if (this.resource == null)
2908        this.resource = new ArrayList<CodeType>();
2909      return this.resource;
2910    }
2911
2912    /**
2913     * @return Returns a reference to <code>this</code> for easy method chaining
2914     */
2915    public OperationDefinition setResource(List<CodeType> theResource) { 
2916      this.resource = theResource;
2917      return this;
2918    }
2919
2920    public boolean hasResource() { 
2921      if (this.resource == null)
2922        return false;
2923      for (CodeType item : this.resource)
2924        if (!item.isEmpty())
2925          return true;
2926      return false;
2927    }
2928
2929    /**
2930     * @return {@link #resource} (The types on which this operation can be executed.)
2931     */
2932    public CodeType addResourceElement() {//2 
2933      CodeType t = new CodeType();
2934      if (this.resource == null)
2935        this.resource = new ArrayList<CodeType>();
2936      this.resource.add(t);
2937      return t;
2938    }
2939
2940    /**
2941     * @param value {@link #resource} (The types on which this operation can be executed.)
2942     */
2943    public OperationDefinition addResource(String value) { //1
2944      CodeType t = new CodeType();
2945      t.setValue(value);
2946      if (this.resource == null)
2947        this.resource = new ArrayList<CodeType>();
2948      this.resource.add(t);
2949      return this;
2950    }
2951
2952    /**
2953     * @param value {@link #resource} (The types on which this operation can be executed.)
2954     */
2955    public boolean hasResource(String value) { 
2956      if (this.resource == null)
2957        return false;
2958      for (CodeType v : this.resource)
2959        if (v.getValue().equals(value)) // code
2960          return true;
2961      return false;
2962    }
2963
2964    /**
2965     * @return {@link #system} (Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context).). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
2966     */
2967    public BooleanType getSystemElement() { 
2968      if (this.system == null)
2969        if (Configuration.errorOnAutoCreate())
2970          throw new Error("Attempt to auto-create OperationDefinition.system");
2971        else if (Configuration.doAutoCreate())
2972          this.system = new BooleanType(); // bb
2973      return this.system;
2974    }
2975
2976    public boolean hasSystemElement() { 
2977      return this.system != null && !this.system.isEmpty();
2978    }
2979
2980    public boolean hasSystem() { 
2981      return this.system != null && !this.system.isEmpty();
2982    }
2983
2984    /**
2985     * @param value {@link #system} (Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context).). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
2986     */
2987    public OperationDefinition setSystemElement(BooleanType value) { 
2988      this.system = value;
2989      return this;
2990    }
2991
2992    /**
2993     * @return Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context).
2994     */
2995    public boolean getSystem() { 
2996      return this.system == null || this.system.isEmpty() ? false : this.system.getValue();
2997    }
2998
2999    /**
3000     * @param value Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context).
3001     */
3002    public OperationDefinition setSystem(boolean value) { 
3003        if (this.system == null)
3004          this.system = new BooleanType();
3005        this.system.setValue(value);
3006      return this;
3007    }
3008
3009    /**
3010     * @return {@link #type} (Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource id for the context).). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
3011     */
3012    public BooleanType getTypeElement() { 
3013      if (this.type == null)
3014        if (Configuration.errorOnAutoCreate())
3015          throw new Error("Attempt to auto-create OperationDefinition.type");
3016        else if (Configuration.doAutoCreate())
3017          this.type = new BooleanType(); // bb
3018      return this.type;
3019    }
3020
3021    public boolean hasTypeElement() { 
3022      return this.type != null && !this.type.isEmpty();
3023    }
3024
3025    public boolean hasType() { 
3026      return this.type != null && !this.type.isEmpty();
3027    }
3028
3029    /**
3030     * @param value {@link #type} (Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource id for the context).). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
3031     */
3032    public OperationDefinition setTypeElement(BooleanType value) { 
3033      this.type = value;
3034      return this;
3035    }
3036
3037    /**
3038     * @return Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource id for the context).
3039     */
3040    public boolean getType() { 
3041      return this.type == null || this.type.isEmpty() ? false : this.type.getValue();
3042    }
3043
3044    /**
3045     * @param value Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource id for the context).
3046     */
3047    public OperationDefinition setType(boolean value) { 
3048        if (this.type == null)
3049          this.type = new BooleanType();
3050        this.type.setValue(value);
3051      return this;
3052    }
3053
3054    /**
3055     * @return {@link #instance} (Indicates whether this operation can be invoked on a particular instance of one of the given types.). This is the underlying object with id, value and extensions. The accessor "getInstance" gives direct access to the value
3056     */
3057    public BooleanType getInstanceElement() { 
3058      if (this.instance == null)
3059        if (Configuration.errorOnAutoCreate())
3060          throw new Error("Attempt to auto-create OperationDefinition.instance");
3061        else if (Configuration.doAutoCreate())
3062          this.instance = new BooleanType(); // bb
3063      return this.instance;
3064    }
3065
3066    public boolean hasInstanceElement() { 
3067      return this.instance != null && !this.instance.isEmpty();
3068    }
3069
3070    public boolean hasInstance() { 
3071      return this.instance != null && !this.instance.isEmpty();
3072    }
3073
3074    /**
3075     * @param value {@link #instance} (Indicates whether this operation can be invoked on a particular instance of one of the given types.). This is the underlying object with id, value and extensions. The accessor "getInstance" gives direct access to the value
3076     */
3077    public OperationDefinition setInstanceElement(BooleanType value) { 
3078      this.instance = value;
3079      return this;
3080    }
3081
3082    /**
3083     * @return Indicates whether this operation can be invoked on a particular instance of one of the given types.
3084     */
3085    public boolean getInstance() { 
3086      return this.instance == null || this.instance.isEmpty() ? false : this.instance.getValue();
3087    }
3088
3089    /**
3090     * @param value Indicates whether this operation can be invoked on a particular instance of one of the given types.
3091     */
3092    public OperationDefinition setInstance(boolean value) { 
3093        if (this.instance == null)
3094          this.instance = new BooleanType();
3095        this.instance.setValue(value);
3096      return this;
3097    }
3098
3099    /**
3100     * @return {@link #inputProfile} (Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a whole.). This is the underlying object with id, value and extensions. The accessor "getInputProfile" gives direct access to the value
3101     */
3102    public CanonicalType getInputProfileElement() { 
3103      if (this.inputProfile == null)
3104        if (Configuration.errorOnAutoCreate())
3105          throw new Error("Attempt to auto-create OperationDefinition.inputProfile");
3106        else if (Configuration.doAutoCreate())
3107          this.inputProfile = new CanonicalType(); // bb
3108      return this.inputProfile;
3109    }
3110
3111    public boolean hasInputProfileElement() { 
3112      return this.inputProfile != null && !this.inputProfile.isEmpty();
3113    }
3114
3115    public boolean hasInputProfile() { 
3116      return this.inputProfile != null && !this.inputProfile.isEmpty();
3117    }
3118
3119    /**
3120     * @param value {@link #inputProfile} (Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a whole.). This is the underlying object with id, value and extensions. The accessor "getInputProfile" gives direct access to the value
3121     */
3122    public OperationDefinition setInputProfileElement(CanonicalType value) { 
3123      this.inputProfile = value;
3124      return this;
3125    }
3126
3127    /**
3128     * @return Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a whole.
3129     */
3130    public String getInputProfile() { 
3131      return this.inputProfile == null ? null : this.inputProfile.getValue();
3132    }
3133
3134    /**
3135     * @param value Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a whole.
3136     */
3137    public OperationDefinition setInputProfile(String value) { 
3138      if (Utilities.noString(value))
3139        this.inputProfile = null;
3140      else {
3141        if (this.inputProfile == null)
3142          this.inputProfile = new CanonicalType();
3143        this.inputProfile.setValue(value);
3144      }
3145      return this;
3146    }
3147
3148    /**
3149     * @return {@link #outputProfile} (Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource.). This is the underlying object with id, value and extensions. The accessor "getOutputProfile" gives direct access to the value
3150     */
3151    public CanonicalType getOutputProfileElement() { 
3152      if (this.outputProfile == null)
3153        if (Configuration.errorOnAutoCreate())
3154          throw new Error("Attempt to auto-create OperationDefinition.outputProfile");
3155        else if (Configuration.doAutoCreate())
3156          this.outputProfile = new CanonicalType(); // bb
3157      return this.outputProfile;
3158    }
3159
3160    public boolean hasOutputProfileElement() { 
3161      return this.outputProfile != null && !this.outputProfile.isEmpty();
3162    }
3163
3164    public boolean hasOutputProfile() { 
3165      return this.outputProfile != null && !this.outputProfile.isEmpty();
3166    }
3167
3168    /**
3169     * @param value {@link #outputProfile} (Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource.). This is the underlying object with id, value and extensions. The accessor "getOutputProfile" gives direct access to the value
3170     */
3171    public OperationDefinition setOutputProfileElement(CanonicalType value) { 
3172      this.outputProfile = value;
3173      return this;
3174    }
3175
3176    /**
3177     * @return Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource.
3178     */
3179    public String getOutputProfile() { 
3180      return this.outputProfile == null ? null : this.outputProfile.getValue();
3181    }
3182
3183    /**
3184     * @param value Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource.
3185     */
3186    public OperationDefinition setOutputProfile(String value) { 
3187      if (Utilities.noString(value))
3188        this.outputProfile = null;
3189      else {
3190        if (this.outputProfile == null)
3191          this.outputProfile = new CanonicalType();
3192        this.outputProfile.setValue(value);
3193      }
3194      return this;
3195    }
3196
3197    /**
3198     * @return {@link #parameter} (The parameters for the operation/query.)
3199     */
3200    public List<OperationDefinitionParameterComponent> getParameter() { 
3201      if (this.parameter == null)
3202        this.parameter = new ArrayList<OperationDefinitionParameterComponent>();
3203      return this.parameter;
3204    }
3205
3206    /**
3207     * @return Returns a reference to <code>this</code> for easy method chaining
3208     */
3209    public OperationDefinition setParameter(List<OperationDefinitionParameterComponent> theParameter) { 
3210      this.parameter = theParameter;
3211      return this;
3212    }
3213
3214    public boolean hasParameter() { 
3215      if (this.parameter == null)
3216        return false;
3217      for (OperationDefinitionParameterComponent item : this.parameter)
3218        if (!item.isEmpty())
3219          return true;
3220      return false;
3221    }
3222
3223    public OperationDefinitionParameterComponent addParameter() { //3
3224      OperationDefinitionParameterComponent t = new OperationDefinitionParameterComponent();
3225      if (this.parameter == null)
3226        this.parameter = new ArrayList<OperationDefinitionParameterComponent>();
3227      this.parameter.add(t);
3228      return t;
3229    }
3230
3231    public OperationDefinition addParameter(OperationDefinitionParameterComponent t) { //3
3232      if (t == null)
3233        return this;
3234      if (this.parameter == null)
3235        this.parameter = new ArrayList<OperationDefinitionParameterComponent>();
3236      this.parameter.add(t);
3237      return this;
3238    }
3239
3240    /**
3241     * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist {3}
3242     */
3243    public OperationDefinitionParameterComponent getParameterFirstRep() { 
3244      if (getParameter().isEmpty()) {
3245        addParameter();
3246      }
3247      return getParameter().get(0);
3248    }
3249
3250    /**
3251     * @return {@link #overload} (Defines an appropriate combination of parameters to use when invoking this operation, to help code generators when generating overloaded parameter sets for this operation.)
3252     */
3253    public List<OperationDefinitionOverloadComponent> getOverload() { 
3254      if (this.overload == null)
3255        this.overload = new ArrayList<OperationDefinitionOverloadComponent>();
3256      return this.overload;
3257    }
3258
3259    /**
3260     * @return Returns a reference to <code>this</code> for easy method chaining
3261     */
3262    public OperationDefinition setOverload(List<OperationDefinitionOverloadComponent> theOverload) { 
3263      this.overload = theOverload;
3264      return this;
3265    }
3266
3267    public boolean hasOverload() { 
3268      if (this.overload == null)
3269        return false;
3270      for (OperationDefinitionOverloadComponent item : this.overload)
3271        if (!item.isEmpty())
3272          return true;
3273      return false;
3274    }
3275
3276    public OperationDefinitionOverloadComponent addOverload() { //3
3277      OperationDefinitionOverloadComponent t = new OperationDefinitionOverloadComponent();
3278      if (this.overload == null)
3279        this.overload = new ArrayList<OperationDefinitionOverloadComponent>();
3280      this.overload.add(t);
3281      return t;
3282    }
3283
3284    public OperationDefinition addOverload(OperationDefinitionOverloadComponent t) { //3
3285      if (t == null)
3286        return this;
3287      if (this.overload == null)
3288        this.overload = new ArrayList<OperationDefinitionOverloadComponent>();
3289      this.overload.add(t);
3290      return this;
3291    }
3292
3293    /**
3294     * @return The first repetition of repeating field {@link #overload}, creating it if it does not already exist {3}
3295     */
3296    public OperationDefinitionOverloadComponent getOverloadFirstRep() { 
3297      if (getOverload().isEmpty()) {
3298        addOverload();
3299      }
3300      return getOverload().get(0);
3301    }
3302
3303      protected void listChildren(List<Property> children) {
3304        super.listChildren(children);
3305        children.add(new Property("url", "uri", "An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different servers.", 0, 1, url));
3306        children.add(new Property("version", "string", "The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version));
3307        children.add(new Property("name", "string", "A natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
3308        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the operation definition.", 0, 1, title));
3309        children.add(new Property("status", "code", "The status of this operation definition. Enables tracking the life-cycle of the content.", 0, 1, status));
3310        children.add(new Property("kind", "code", "Whether this is an operation or a named query.", 0, 1, kind));
3311        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
3312        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changes.", 0, 1, date));
3313        children.add(new Property("publisher", "string", "The name of the organization or individual that published the operation definition.", 0, 1, publisher));
3314        children.add(new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact));
3315        children.add(new Property("description", "markdown", "A free text natural language description of the operation definition from a consumer's perspective.", 0, 1, description));
3316        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate operation definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
3317        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the operation definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
3318        children.add(new Property("purpose", "markdown", "Explanation of why this operation definition is needed and why it has been designed as it has.", 0, 1, purpose));
3319        children.add(new Property("affectsState", "boolean", "Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting  state'.", 0, 1, affectsState));
3320        children.add(new Property("code", "code", "The name used to invoke the operation.", 0, 1, code));
3321        children.add(new Property("comment", "markdown", "Additional information about how to use this operation or named query.", 0, 1, comment));
3322        children.add(new Property("base", "canonical(OperationDefinition)", "Indicates that this operation definition is a constraining profile on the base.", 0, 1, base));
3323        children.add(new Property("resource", "code", "The types on which this operation can be executed.", 0, java.lang.Integer.MAX_VALUE, resource));
3324        children.add(new Property("system", "boolean", "Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context).", 0, 1, system));
3325        children.add(new Property("type", "boolean", "Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource id for the context).", 0, 1, type));
3326        children.add(new Property("instance", "boolean", "Indicates whether this operation can be invoked on a particular instance of one of the given types.", 0, 1, instance));
3327        children.add(new Property("inputProfile", "canonical(StructureDefinition)", "Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a whole.", 0, 1, inputProfile));
3328        children.add(new Property("outputProfile", "canonical(StructureDefinition)", "Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource.", 0, 1, outputProfile));
3329        children.add(new Property("parameter", "", "The parameters for the operation/query.", 0, java.lang.Integer.MAX_VALUE, parameter));
3330        children.add(new Property("overload", "", "Defines an appropriate combination of parameters to use when invoking this operation, to help code generators when generating overloaded parameter sets for this operation.", 0, java.lang.Integer.MAX_VALUE, overload));
3331      }
3332
3333      @Override
3334      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3335        switch (_hash) {
3336        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this operation definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this operation definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the operation definition is stored on different servers.", 0, 1, url);
3337        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the operation definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the operation definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version);
3338        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the operation definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
3339        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the operation definition.", 0, 1, title);
3340        case -892481550: /*status*/  return new Property("status", "code", "The status of this operation definition. Enables tracking the life-cycle of the content.", 0, 1, status);
3341        case 3292052: /*kind*/  return new Property("kind", "code", "Whether this is an operation or a named query.", 0, 1, kind);
3342        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this operation definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
3343        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the operation definition was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the operation definition changes.", 0, 1, date);
3344        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the operation definition.", 0, 1, publisher);
3345        case 951526432: /*contact*/  return new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact);
3346        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the operation definition from a consumer's perspective.", 0, 1, description);
3347        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate operation definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
3348        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the operation definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
3349        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this operation definition is needed and why it has been designed as it has.", 0, 1, purpose);
3350        case -14805197: /*affectsState*/  return new Property("affectsState", "boolean", "Whether the operation affects state. Side effects such as producing audit trail entries do not count as 'affecting  state'.", 0, 1, affectsState);
3351        case 3059181: /*code*/  return new Property("code", "code", "The name used to invoke the operation.", 0, 1, code);
3352        case 950398559: /*comment*/  return new Property("comment", "markdown", "Additional information about how to use this operation or named query.", 0, 1, comment);
3353        case 3016401: /*base*/  return new Property("base", "canonical(OperationDefinition)", "Indicates that this operation definition is a constraining profile on the base.", 0, 1, base);
3354        case -341064690: /*resource*/  return new Property("resource", "code", "The types on which this operation can be executed.", 0, java.lang.Integer.MAX_VALUE, resource);
3355        case -887328209: /*system*/  return new Property("system", "boolean", "Indicates whether this operation or named query can be invoked at the system level (e.g. without needing to choose a resource type for the context).", 0, 1, system);
3356        case 3575610: /*type*/  return new Property("type", "boolean", "Indicates whether this operation or named query can be invoked at the resource type level for any given resource type level (e.g. without needing to choose a specific resource id for the context).", 0, 1, type);
3357        case 555127957: /*instance*/  return new Property("instance", "boolean", "Indicates whether this operation can be invoked on a particular instance of one of the given types.", 0, 1, instance);
3358        case 676942463: /*inputProfile*/  return new Property("inputProfile", "canonical(StructureDefinition)", "Additional validation information for the in parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource as a whole.", 0, 1, inputProfile);
3359        case 1826166120: /*outputProfile*/  return new Property("outputProfile", "canonical(StructureDefinition)", "Additional validation information for the out parameters - a single profile that covers all the parameters. The profile is a constraint on the parameters resource.", 0, 1, outputProfile);
3360        case 1954460585: /*parameter*/  return new Property("parameter", "", "The parameters for the operation/query.", 0, java.lang.Integer.MAX_VALUE, parameter);
3361        case 529823674: /*overload*/  return new Property("overload", "", "Defines an appropriate combination of parameters to use when invoking this operation, to help code generators when generating overloaded parameter sets for this operation.", 0, java.lang.Integer.MAX_VALUE, overload);
3362        default: return super.getNamedProperty(_hash, _name, _checkValid);
3363        }
3364
3365      }
3366
3367      @Override
3368      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3369        switch (hash) {
3370        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
3371        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
3372        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3373        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
3374        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
3375        case 3292052: /*kind*/ return this.kind == null ? new Base[0] : new Base[] {this.kind}; // Enumeration<OperationKind>
3376        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
3377        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
3378        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
3379        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
3380        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
3381        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
3382        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
3383        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
3384        case -14805197: /*affectsState*/ return this.affectsState == null ? new Base[0] : new Base[] {this.affectsState}; // BooleanType
3385        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
3386        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // MarkdownType
3387        case 3016401: /*base*/ return this.base == null ? new Base[0] : new Base[] {this.base}; // CanonicalType
3388        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // CodeType
3389        case -887328209: /*system*/ return this.system == null ? new Base[0] : new Base[] {this.system}; // BooleanType
3390        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // BooleanType
3391        case 555127957: /*instance*/ return this.instance == null ? new Base[0] : new Base[] {this.instance}; // BooleanType
3392        case 676942463: /*inputProfile*/ return this.inputProfile == null ? new Base[0] : new Base[] {this.inputProfile}; // CanonicalType
3393        case 1826166120: /*outputProfile*/ return this.outputProfile == null ? new Base[0] : new Base[] {this.outputProfile}; // CanonicalType
3394        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // OperationDefinitionParameterComponent
3395        case 529823674: /*overload*/ return this.overload == null ? new Base[0] : this.overload.toArray(new Base[this.overload.size()]); // OperationDefinitionOverloadComponent
3396        default: return super.getProperty(hash, name, checkValid);
3397        }
3398
3399      }
3400
3401      @Override
3402      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3403        switch (hash) {
3404        case 116079: // url
3405          this.url = TypeConvertor.castToUri(value); // UriType
3406          return value;
3407        case 351608024: // version
3408          this.version = TypeConvertor.castToString(value); // StringType
3409          return value;
3410        case 3373707: // name
3411          this.name = TypeConvertor.castToString(value); // StringType
3412          return value;
3413        case 110371416: // title
3414          this.title = TypeConvertor.castToString(value); // StringType
3415          return value;
3416        case -892481550: // status
3417          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3418          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3419          return value;
3420        case 3292052: // kind
3421          value = new OperationKindEnumFactory().fromType(TypeConvertor.castToCode(value));
3422          this.kind = (Enumeration) value; // Enumeration<OperationKind>
3423          return value;
3424        case -404562712: // experimental
3425          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3426          return value;
3427        case 3076014: // date
3428          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3429          return value;
3430        case 1447404028: // publisher
3431          this.publisher = TypeConvertor.castToString(value); // StringType
3432          return value;
3433        case 951526432: // contact
3434          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3435          return value;
3436        case -1724546052: // description
3437          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3438          return value;
3439        case -669707736: // useContext
3440          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
3441          return value;
3442        case -507075711: // jurisdiction
3443          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3444          return value;
3445        case -220463842: // purpose
3446          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3447          return value;
3448        case -14805197: // affectsState
3449          this.affectsState = TypeConvertor.castToBoolean(value); // BooleanType
3450          return value;
3451        case 3059181: // code
3452          this.code = TypeConvertor.castToCode(value); // CodeType
3453          return value;
3454        case 950398559: // comment
3455          this.comment = TypeConvertor.castToMarkdown(value); // MarkdownType
3456          return value;
3457        case 3016401: // base
3458          this.base = TypeConvertor.castToCanonical(value); // CanonicalType
3459          return value;
3460        case -341064690: // resource
3461          this.getResource().add(TypeConvertor.castToCode(value)); // CodeType
3462          return value;
3463        case -887328209: // system
3464          this.system = TypeConvertor.castToBoolean(value); // BooleanType
3465          return value;
3466        case 3575610: // type
3467          this.type = TypeConvertor.castToBoolean(value); // BooleanType
3468          return value;
3469        case 555127957: // instance
3470          this.instance = TypeConvertor.castToBoolean(value); // BooleanType
3471          return value;
3472        case 676942463: // inputProfile
3473          this.inputProfile = TypeConvertor.castToCanonical(value); // CanonicalType
3474          return value;
3475        case 1826166120: // outputProfile
3476          this.outputProfile = TypeConvertor.castToCanonical(value); // CanonicalType
3477          return value;
3478        case 1954460585: // parameter
3479          this.getParameter().add((OperationDefinitionParameterComponent) value); // OperationDefinitionParameterComponent
3480          return value;
3481        case 529823674: // overload
3482          this.getOverload().add((OperationDefinitionOverloadComponent) value); // OperationDefinitionOverloadComponent
3483          return value;
3484        default: return super.setProperty(hash, name, value);
3485        }
3486
3487      }
3488
3489      @Override
3490      public Base setProperty(String name, Base value) throws FHIRException {
3491        if (name.equals("url")) {
3492          this.url = TypeConvertor.castToUri(value); // UriType
3493        } else if (name.equals("version")) {
3494          this.version = TypeConvertor.castToString(value); // StringType
3495        } else if (name.equals("name")) {
3496          this.name = TypeConvertor.castToString(value); // StringType
3497        } else if (name.equals("title")) {
3498          this.title = TypeConvertor.castToString(value); // StringType
3499        } else if (name.equals("status")) {
3500          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3501          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3502        } else if (name.equals("kind")) {
3503          value = new OperationKindEnumFactory().fromType(TypeConvertor.castToCode(value));
3504          this.kind = (Enumeration) value; // Enumeration<OperationKind>
3505        } else if (name.equals("experimental")) {
3506          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3507        } else if (name.equals("date")) {
3508          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3509        } else if (name.equals("publisher")) {
3510          this.publisher = TypeConvertor.castToString(value); // StringType
3511        } else if (name.equals("contact")) {
3512          this.getContact().add(TypeConvertor.castToContactDetail(value));
3513        } else if (name.equals("description")) {
3514          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3515        } else if (name.equals("useContext")) {
3516          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
3517        } else if (name.equals("jurisdiction")) {
3518          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
3519        } else if (name.equals("purpose")) {
3520          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3521        } else if (name.equals("affectsState")) {
3522          this.affectsState = TypeConvertor.castToBoolean(value); // BooleanType
3523        } else if (name.equals("code")) {
3524          this.code = TypeConvertor.castToCode(value); // CodeType
3525        } else if (name.equals("comment")) {
3526          this.comment = TypeConvertor.castToMarkdown(value); // MarkdownType
3527        } else if (name.equals("base")) {
3528          this.base = TypeConvertor.castToCanonical(value); // CanonicalType
3529        } else if (name.equals("resource")) {
3530          this.getResource().add(TypeConvertor.castToCode(value));
3531        } else if (name.equals("system")) {
3532          this.system = TypeConvertor.castToBoolean(value); // BooleanType
3533        } else if (name.equals("type")) {
3534          this.type = TypeConvertor.castToBoolean(value); // BooleanType
3535        } else if (name.equals("instance")) {
3536          this.instance = TypeConvertor.castToBoolean(value); // BooleanType
3537        } else if (name.equals("inputProfile")) {
3538          this.inputProfile = TypeConvertor.castToCanonical(value); // CanonicalType
3539        } else if (name.equals("outputProfile")) {
3540          this.outputProfile = TypeConvertor.castToCanonical(value); // CanonicalType
3541        } else if (name.equals("parameter")) {
3542          this.getParameter().add((OperationDefinitionParameterComponent) value);
3543        } else if (name.equals("overload")) {
3544          this.getOverload().add((OperationDefinitionOverloadComponent) value);
3545        } else
3546          return super.setProperty(name, value);
3547        return value;
3548      }
3549
3550      @Override
3551      public Base makeProperty(int hash, String name) throws FHIRException {
3552        switch (hash) {
3553        case 116079:  return getUrlElement();
3554        case 351608024:  return getVersionElement();
3555        case 3373707:  return getNameElement();
3556        case 110371416:  return getTitleElement();
3557        case -892481550:  return getStatusElement();
3558        case 3292052:  return getKindElement();
3559        case -404562712:  return getExperimentalElement();
3560        case 3076014:  return getDateElement();
3561        case 1447404028:  return getPublisherElement();
3562        case 951526432:  return addContact(); 
3563        case -1724546052:  return getDescriptionElement();
3564        case -669707736:  return addUseContext(); 
3565        case -507075711:  return addJurisdiction(); 
3566        case -220463842:  return getPurposeElement();
3567        case -14805197:  return getAffectsStateElement();
3568        case 3059181:  return getCodeElement();
3569        case 950398559:  return getCommentElement();
3570        case 3016401:  return getBaseElement();
3571        case -341064690:  return addResourceElement();
3572        case -887328209:  return getSystemElement();
3573        case 3575610:  return getTypeElement();
3574        case 555127957:  return getInstanceElement();
3575        case 676942463:  return getInputProfileElement();
3576        case 1826166120:  return getOutputProfileElement();
3577        case 1954460585:  return addParameter(); 
3578        case 529823674:  return addOverload(); 
3579        default: return super.makeProperty(hash, name);
3580        }
3581
3582      }
3583
3584      @Override
3585      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3586        switch (hash) {
3587        case 116079: /*url*/ return new String[] {"uri"};
3588        case 351608024: /*version*/ return new String[] {"string"};
3589        case 3373707: /*name*/ return new String[] {"string"};
3590        case 110371416: /*title*/ return new String[] {"string"};
3591        case -892481550: /*status*/ return new String[] {"code"};
3592        case 3292052: /*kind*/ return new String[] {"code"};
3593        case -404562712: /*experimental*/ return new String[] {"boolean"};
3594        case 3076014: /*date*/ return new String[] {"dateTime"};
3595        case 1447404028: /*publisher*/ return new String[] {"string"};
3596        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
3597        case -1724546052: /*description*/ return new String[] {"markdown"};
3598        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
3599        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
3600        case -220463842: /*purpose*/ return new String[] {"markdown"};
3601        case -14805197: /*affectsState*/ return new String[] {"boolean"};
3602        case 3059181: /*code*/ return new String[] {"code"};
3603        case 950398559: /*comment*/ return new String[] {"markdown"};
3604        case 3016401: /*base*/ return new String[] {"canonical"};
3605        case -341064690: /*resource*/ return new String[] {"code"};
3606        case -887328209: /*system*/ return new String[] {"boolean"};
3607        case 3575610: /*type*/ return new String[] {"boolean"};
3608        case 555127957: /*instance*/ return new String[] {"boolean"};
3609        case 676942463: /*inputProfile*/ return new String[] {"canonical"};
3610        case 1826166120: /*outputProfile*/ return new String[] {"canonical"};
3611        case 1954460585: /*parameter*/ return new String[] {};
3612        case 529823674: /*overload*/ return new String[] {};
3613        default: return super.getTypesForProperty(hash, name);
3614        }
3615
3616      }
3617
3618      @Override
3619      public Base addChild(String name) throws FHIRException {
3620        if (name.equals("url")) {
3621          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.url");
3622        }
3623        else if (name.equals("version")) {
3624          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.version");
3625        }
3626        else if (name.equals("name")) {
3627          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.name");
3628        }
3629        else if (name.equals("title")) {
3630          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.title");
3631        }
3632        else if (name.equals("status")) {
3633          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.status");
3634        }
3635        else if (name.equals("kind")) {
3636          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.kind");
3637        }
3638        else if (name.equals("experimental")) {
3639          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.experimental");
3640        }
3641        else if (name.equals("date")) {
3642          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.date");
3643        }
3644        else if (name.equals("publisher")) {
3645          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.publisher");
3646        }
3647        else if (name.equals("contact")) {
3648          return addContact();
3649        }
3650        else if (name.equals("description")) {
3651          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.description");
3652        }
3653        else if (name.equals("useContext")) {
3654          return addUseContext();
3655        }
3656        else if (name.equals("jurisdiction")) {
3657          return addJurisdiction();
3658        }
3659        else if (name.equals("purpose")) {
3660          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.purpose");
3661        }
3662        else if (name.equals("affectsState")) {
3663          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.affectsState");
3664        }
3665        else if (name.equals("code")) {
3666          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.code");
3667        }
3668        else if (name.equals("comment")) {
3669          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.comment");
3670        }
3671        else if (name.equals("base")) {
3672          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.base");
3673        }
3674        else if (name.equals("resource")) {
3675          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.resource");
3676        }
3677        else if (name.equals("system")) {
3678          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.system");
3679        }
3680        else if (name.equals("type")) {
3681          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.type");
3682        }
3683        else if (name.equals("instance")) {
3684          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.instance");
3685        }
3686        else if (name.equals("inputProfile")) {
3687          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.inputProfile");
3688        }
3689        else if (name.equals("outputProfile")) {
3690          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.outputProfile");
3691        }
3692        else if (name.equals("parameter")) {
3693          return addParameter();
3694        }
3695        else if (name.equals("overload")) {
3696          return addOverload();
3697        }
3698        else
3699          return super.addChild(name);
3700      }
3701
3702  public String fhirType() {
3703    return "OperationDefinition";
3704
3705  }
3706
3707      public OperationDefinition copy() {
3708        OperationDefinition dst = new OperationDefinition();
3709        copyValues(dst);
3710        return dst;
3711      }
3712
3713      public void copyValues(OperationDefinition dst) {
3714        super.copyValues(dst);
3715        dst.url = url == null ? null : url.copy();
3716        dst.version = version == null ? null : version.copy();
3717        dst.name = name == null ? null : name.copy();
3718        dst.title = title == null ? null : title.copy();
3719        dst.status = status == null ? null : status.copy();
3720        dst.kind = kind == null ? null : kind.copy();
3721        dst.experimental = experimental == null ? null : experimental.copy();
3722        dst.date = date == null ? null : date.copy();
3723        dst.publisher = publisher == null ? null : publisher.copy();
3724        if (contact != null) {
3725          dst.contact = new ArrayList<ContactDetail>();
3726          for (ContactDetail i : contact)
3727            dst.contact.add(i.copy());
3728        };
3729        dst.description = description == null ? null : description.copy();
3730        if (useContext != null) {
3731          dst.useContext = new ArrayList<UsageContext>();
3732          for (UsageContext i : useContext)
3733            dst.useContext.add(i.copy());
3734        };
3735        if (jurisdiction != null) {
3736          dst.jurisdiction = new ArrayList<CodeableConcept>();
3737          for (CodeableConcept i : jurisdiction)
3738            dst.jurisdiction.add(i.copy());
3739        };
3740        dst.purpose = purpose == null ? null : purpose.copy();
3741        dst.affectsState = affectsState == null ? null : affectsState.copy();
3742        dst.code = code == null ? null : code.copy();
3743        dst.comment = comment == null ? null : comment.copy();
3744        dst.base = base == null ? null : base.copy();
3745        if (resource != null) {
3746          dst.resource = new ArrayList<CodeType>();
3747          for (CodeType i : resource)
3748            dst.resource.add(i.copy());
3749        };
3750        dst.system = system == null ? null : system.copy();
3751        dst.type = type == null ? null : type.copy();
3752        dst.instance = instance == null ? null : instance.copy();
3753        dst.inputProfile = inputProfile == null ? null : inputProfile.copy();
3754        dst.outputProfile = outputProfile == null ? null : outputProfile.copy();
3755        if (parameter != null) {
3756          dst.parameter = new ArrayList<OperationDefinitionParameterComponent>();
3757          for (OperationDefinitionParameterComponent i : parameter)
3758            dst.parameter.add(i.copy());
3759        };
3760        if (overload != null) {
3761          dst.overload = new ArrayList<OperationDefinitionOverloadComponent>();
3762          for (OperationDefinitionOverloadComponent i : overload)
3763            dst.overload.add(i.copy());
3764        };
3765      }
3766
3767      protected OperationDefinition typedCopy() {
3768        return copy();
3769      }
3770
3771      @Override
3772      public boolean equalsDeep(Base other_) {
3773        if (!super.equalsDeep(other_))
3774          return false;
3775        if (!(other_ instanceof OperationDefinition))
3776          return false;
3777        OperationDefinition o = (OperationDefinition) other_;
3778        return compareDeep(url, o.url, true) && compareDeep(version, o.version, true) && compareDeep(name, o.name, true)
3779           && compareDeep(title, o.title, true) && compareDeep(status, o.status, true) && compareDeep(kind, o.kind, true)
3780           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
3781           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
3782           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(affectsState, o.affectsState, true)
3783           && compareDeep(code, o.code, true) && compareDeep(comment, o.comment, true) && compareDeep(base, o.base, true)
3784           && compareDeep(resource, o.resource, true) && compareDeep(system, o.system, true) && compareDeep(type, o.type, true)
3785           && compareDeep(instance, o.instance, true) && compareDeep(inputProfile, o.inputProfile, true) && compareDeep(outputProfile, o.outputProfile, true)
3786           && compareDeep(parameter, o.parameter, true) && compareDeep(overload, o.overload, true);
3787      }
3788
3789      @Override
3790      public boolean equalsShallow(Base other_) {
3791        if (!super.equalsShallow(other_))
3792          return false;
3793        if (!(other_ instanceof OperationDefinition))
3794          return false;
3795        OperationDefinition o = (OperationDefinition) other_;
3796        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
3797           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(kind, o.kind, true)
3798           && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true)
3799           && compareValues(description, o.description, true) && compareValues(purpose, o.purpose, true) && compareValues(affectsState, o.affectsState, true)
3800           && compareValues(code, o.code, true) && compareValues(comment, o.comment, true) && compareValues(base, o.base, true)
3801           && compareValues(resource, o.resource, true) && compareValues(system, o.system, true) && compareValues(type, o.type, true)
3802           && compareValues(instance, o.instance, true) && compareValues(inputProfile, o.inputProfile, true) && compareValues(outputProfile, o.outputProfile, true)
3803          ;
3804      }
3805
3806      public boolean isEmpty() {
3807        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, version, name, title
3808          , status, kind, experimental, date, publisher, contact, description, useContext
3809          , jurisdiction, purpose, affectsState, code, comment, base, resource, system
3810          , type, instance, inputProfile, outputProfile, parameter, overload);
3811      }
3812
3813  @Override
3814  public ResourceType getResourceType() {
3815    return ResourceType.OperationDefinition;
3816   }
3817
3818// Manual code (from Configuration.txt):
3819  public boolean supportsCopyright() {
3820    return false;
3821  }
3822
3823  @Override
3824  public List<Identifier> getIdentifier() {
3825    return new ArrayList<>();
3826  }
3827
3828  @Override
3829  public CanonicalResource setIdentifier(List<Identifier> theIdentifier) {
3830    return this;
3831  }
3832
3833  @Override
3834  public boolean hasIdentifier() {
3835    return false;
3836  }
3837
3838  @Override
3839  public Identifier addIdentifier() {
3840    return new Identifier();
3841  }
3842
3843  @Override
3844  public CanonicalResource addIdentifier(Identifier t) {
3845    return this;
3846  }
3847
3848  @Override
3849  public Identifier getIdentifierFirstRep() {
3850    return new Identifier();
3851  }
3852
3853  @Override
3854  public MarkdownType getCopyrightElement() {
3855    return new MarkdownType();
3856  }
3857
3858  @Override
3859  public boolean hasCopyrightElement() {
3860    return false;
3861  }
3862
3863  @Override
3864  public boolean hasCopyright() {
3865    return false;
3866  }
3867
3868  @Override
3869  public CanonicalResource setCopyrightElement(MarkdownType value) {
3870    return this;
3871  }
3872
3873  @Override
3874  public String getCopyright() {
3875    return null;
3876  }
3877
3878  @Override
3879  public CanonicalResource setCopyright(String value) {
3880    return this;
3881  }
3882
3883 
3884// end addition
3885
3886 /**
3887   * Search parameter: <b>base</b>
3888   * <p>
3889   * Description: <b>Marks this as a profile of the base</b><br>
3890   * Type: <b>reference</b><br>
3891   * Path: <b>OperationDefinition.base</b><br>
3892   * </p>
3893   */
3894  @SearchParamDefinition(name="base", path="OperationDefinition.base", description="Marks this as a profile of the base", type="reference", target={OperationDefinition.class } )
3895  public static final String SP_BASE = "base";
3896 /**
3897   * <b>Fluent Client</b> search parameter constant for <b>base</b>
3898   * <p>
3899   * Description: <b>Marks this as a profile of the base</b><br>
3900   * Type: <b>reference</b><br>
3901   * Path: <b>OperationDefinition.base</b><br>
3902   * </p>
3903   */
3904  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASE);
3905
3906/**
3907   * Constant for fluent queries to be used to add include statements. Specifies
3908   * the path value of "<b>OperationDefinition:base</b>".
3909   */
3910  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASE = new ca.uhn.fhir.model.api.Include("OperationDefinition:base").toLocked();
3911
3912 /**
3913   * Search parameter: <b>code</b>
3914   * <p>
3915   * Description: <b>Name used to invoke the operation</b><br>
3916   * Type: <b>token</b><br>
3917   * Path: <b>OperationDefinition.code</b><br>
3918   * </p>
3919   */
3920  @SearchParamDefinition(name="code", path="OperationDefinition.code", description="Name used to invoke the operation", type="token" )
3921  public static final String SP_CODE = "code";
3922 /**
3923   * <b>Fluent Client</b> search parameter constant for <b>code</b>
3924   * <p>
3925   * Description: <b>Name used to invoke the operation</b><br>
3926   * Type: <b>token</b><br>
3927   * Path: <b>OperationDefinition.code</b><br>
3928   * </p>
3929   */
3930  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
3931
3932 /**
3933   * Search parameter: <b>input-profile</b>
3934   * <p>
3935   * Description: <b>Validation information for in parameters</b><br>
3936   * Type: <b>reference</b><br>
3937   * Path: <b>OperationDefinition.inputProfile</b><br>
3938   * </p>
3939   */
3940  @SearchParamDefinition(name="input-profile", path="OperationDefinition.inputProfile", description="Validation information for in parameters", type="reference", target={StructureDefinition.class } )
3941  public static final String SP_INPUT_PROFILE = "input-profile";
3942 /**
3943   * <b>Fluent Client</b> search parameter constant for <b>input-profile</b>
3944   * <p>
3945   * Description: <b>Validation information for in parameters</b><br>
3946   * Type: <b>reference</b><br>
3947   * Path: <b>OperationDefinition.inputProfile</b><br>
3948   * </p>
3949   */
3950  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INPUT_PROFILE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INPUT_PROFILE);
3951
3952/**
3953   * Constant for fluent queries to be used to add include statements. Specifies
3954   * the path value of "<b>OperationDefinition:input-profile</b>".
3955   */
3956  public static final ca.uhn.fhir.model.api.Include INCLUDE_INPUT_PROFILE = new ca.uhn.fhir.model.api.Include("OperationDefinition:input-profile").toLocked();
3957
3958 /**
3959   * Search parameter: <b>instance</b>
3960   * <p>
3961   * Description: <b>Invoke on an instance?</b><br>
3962   * Type: <b>token</b><br>
3963   * Path: <b>OperationDefinition.instance</b><br>
3964   * </p>
3965   */
3966  @SearchParamDefinition(name="instance", path="OperationDefinition.instance", description="Invoke on an instance?", type="token" )
3967  public static final String SP_INSTANCE = "instance";
3968 /**
3969   * <b>Fluent Client</b> search parameter constant for <b>instance</b>
3970   * <p>
3971   * Description: <b>Invoke on an instance?</b><br>
3972   * Type: <b>token</b><br>
3973   * Path: <b>OperationDefinition.instance</b><br>
3974   * </p>
3975   */
3976  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INSTANCE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INSTANCE);
3977
3978 /**
3979   * Search parameter: <b>kind</b>
3980   * <p>
3981   * Description: <b>operation | query</b><br>
3982   * Type: <b>token</b><br>
3983   * Path: <b>OperationDefinition.kind</b><br>
3984   * </p>
3985   */
3986  @SearchParamDefinition(name="kind", path="OperationDefinition.kind", description="operation | query", type="token" )
3987  public static final String SP_KIND = "kind";
3988 /**
3989   * <b>Fluent Client</b> search parameter constant for <b>kind</b>
3990   * <p>
3991   * Description: <b>operation | query</b><br>
3992   * Type: <b>token</b><br>
3993   * Path: <b>OperationDefinition.kind</b><br>
3994   * </p>
3995   */
3996  public static final ca.uhn.fhir.rest.gclient.TokenClientParam KIND = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_KIND);
3997
3998 /**
3999   * Search parameter: <b>output-profile</b>
4000   * <p>
4001   * Description: <b>Validation information for out parameters</b><br>
4002   * Type: <b>reference</b><br>
4003   * Path: <b>OperationDefinition.outputProfile</b><br>
4004   * </p>
4005   */
4006  @SearchParamDefinition(name="output-profile", path="OperationDefinition.outputProfile", description="Validation information for out parameters", type="reference", target={StructureDefinition.class } )
4007  public static final String SP_OUTPUT_PROFILE = "output-profile";
4008 /**
4009   * <b>Fluent Client</b> search parameter constant for <b>output-profile</b>
4010   * <p>
4011   * Description: <b>Validation information for out parameters</b><br>
4012   * Type: <b>reference</b><br>
4013   * Path: <b>OperationDefinition.outputProfile</b><br>
4014   * </p>
4015   */
4016  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam OUTPUT_PROFILE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_OUTPUT_PROFILE);
4017
4018/**
4019   * Constant for fluent queries to be used to add include statements. Specifies
4020   * the path value of "<b>OperationDefinition:output-profile</b>".
4021   */
4022  public static final ca.uhn.fhir.model.api.Include INCLUDE_OUTPUT_PROFILE = new ca.uhn.fhir.model.api.Include("OperationDefinition:output-profile").toLocked();
4023
4024 /**
4025   * Search parameter: <b>system</b>
4026   * <p>
4027   * Description: <b>Invoke at the system level?</b><br>
4028   * Type: <b>token</b><br>
4029   * Path: <b>OperationDefinition.system</b><br>
4030   * </p>
4031   */
4032  @SearchParamDefinition(name="system", path="OperationDefinition.system", description="Invoke at the system level?", type="token" )
4033  public static final String SP_SYSTEM = "system";
4034 /**
4035   * <b>Fluent Client</b> search parameter constant for <b>system</b>
4036   * <p>
4037   * Description: <b>Invoke at the system level?</b><br>
4038   * Type: <b>token</b><br>
4039   * Path: <b>OperationDefinition.system</b><br>
4040   * </p>
4041   */
4042  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SYSTEM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SYSTEM);
4043
4044 /**
4045   * Search parameter: <b>type</b>
4046   * <p>
4047   * Description: <b>Invoke at the type level?</b><br>
4048   * Type: <b>token</b><br>
4049   * Path: <b>OperationDefinition.type</b><br>
4050   * </p>
4051   */
4052  @SearchParamDefinition(name="type", path="OperationDefinition.type", description="Invoke at the type level?", type="token" )
4053  public static final String SP_TYPE = "type";
4054 /**
4055   * <b>Fluent Client</b> search parameter constant for <b>type</b>
4056   * <p>
4057   * Description: <b>Invoke at the type level?</b><br>
4058   * Type: <b>token</b><br>
4059   * Path: <b>OperationDefinition.type</b><br>
4060   * </p>
4061   */
4062  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
4063
4064 /**
4065   * Search parameter: <b>context-quantity</b>
4066   * <p>
4067   * Description: <b>Multiple Resources: 
4068
4069* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
4070* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
4071* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
4072* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
4073* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
4074* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
4075* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
4076* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
4077* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
4078* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
4079* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
4080* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
4081* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
4082* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
4083</b><br>
4084   * Type: <b>quantity</b><br>
4085   * Path: <b>(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
4086   * </p>
4087   */
4088  @SearchParamDefinition(name="context-quantity", path="(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set\r\n", type="quantity" )
4089  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
4090 /**
4091   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
4092   * <p>
4093   * Description: <b>Multiple Resources: 
4094
4095* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
4096* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
4097* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
4098* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
4099* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
4100* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
4101* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
4102* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
4103* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
4104* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
4105* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
4106* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
4107* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
4108* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
4109</b><br>
4110   * Type: <b>quantity</b><br>
4111   * Path: <b>(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
4112   * </p>
4113   */
4114  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
4115
4116 /**
4117   * Search parameter: <b>context-type-quantity</b>
4118   * <p>
4119   * Description: <b>Multiple Resources: 
4120
4121* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
4122* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
4123* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
4124* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
4125* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
4126* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
4127* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
4128* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
4129* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
4130* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
4131* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
4132* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
4133* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
4134* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
4135</b><br>
4136   * Type: <b>composite</b><br>
4137   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
4138   * </p>
4139   */
4140  @SearchParamDefinition(name="context-type-quantity", path="CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context-quantity"} )
4141  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
4142 /**
4143   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
4144   * <p>
4145   * Description: <b>Multiple Resources: 
4146
4147* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
4148* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
4149* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
4150* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
4151* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
4152* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
4153* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
4154* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
4155* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
4156* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
4157* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
4158* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
4159* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
4160* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
4161</b><br>
4162   * Type: <b>composite</b><br>
4163   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
4164   * </p>
4165   */
4166  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam> CONTEXT_TYPE_QUANTITY = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam>(SP_CONTEXT_TYPE_QUANTITY);
4167
4168 /**
4169   * Search parameter: <b>context-type-value</b>
4170   * <p>
4171   * Description: <b>Multiple Resources: 
4172
4173* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4174* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4175* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4176* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4177* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4178* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4179* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4180* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4181* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4182* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4183* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4184* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4185* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4186* [ValueSet](valueset.html): A use context type and value assigned to the value set
4187</b><br>
4188   * Type: <b>composite</b><br>
4189   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
4190   * </p>
4191   */
4192  @SearchParamDefinition(name="context-type-value", path="CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context type and value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context type and value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context"} )
4193  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
4194 /**
4195   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
4196   * <p>
4197   * Description: <b>Multiple Resources: 
4198
4199* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4200* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4201* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4202* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4203* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4204* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4205* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4206* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4207* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4208* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4209* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4210* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4211* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4212* [ValueSet](valueset.html): A use context type and value assigned to the value set
4213</b><br>
4214   * Type: <b>composite</b><br>
4215   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
4216   * </p>
4217   */
4218  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> CONTEXT_TYPE_VALUE = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_CONTEXT_TYPE_VALUE);
4219
4220 /**
4221   * Search parameter: <b>context-type</b>
4222   * <p>
4223   * Description: <b>Multiple Resources: 
4224
4225* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4226* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4227* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4228* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4229* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4230* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4231* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4232* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4233* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4234* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4235* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4236* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4237* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4238* [ValueSet](valueset.html): A type of use context assigned to the value set
4239</b><br>
4240   * Type: <b>token</b><br>
4241   * Path: <b>CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code</b><br>
4242   * </p>
4243   */
4244  @SearchParamDefinition(name="context-type", path="CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A type of use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A type of use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A type of use context assigned to the value set\r\n", type="token" )
4245  public static final String SP_CONTEXT_TYPE = "context-type";
4246 /**
4247   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
4248   * <p>
4249   * Description: <b>Multiple Resources: 
4250
4251* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4252* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4253* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4254* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4255* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4256* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4257* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4258* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4259* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4260* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4261* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4262* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4263* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4264* [ValueSet](valueset.html): A type of use context assigned to the value set
4265</b><br>
4266   * Type: <b>token</b><br>
4267   * Path: <b>CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code</b><br>
4268   * </p>
4269   */
4270  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
4271
4272 /**
4273   * Search parameter: <b>context</b>
4274   * <p>
4275   * Description: <b>Multiple Resources: 
4276
4277* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4278* [CodeSystem](codesystem.html): A use context assigned to the code system
4279* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4280* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4281* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4282* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4283* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4284* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4285* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4286* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4287* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4288* [StructureMap](structuremap.html): A use context assigned to the structure map
4289* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4290* [ValueSet](valueset.html): A use context assigned to the value set
4291</b><br>
4292   * Type: <b>token</b><br>
4293   * Path: <b>(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
4294   * </p>
4295   */
4296  @SearchParamDefinition(name="context", path="(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context assigned to the value set\r\n", type="token" )
4297  public static final String SP_CONTEXT = "context";
4298 /**
4299   * <b>Fluent Client</b> search parameter constant for <b>context</b>
4300   * <p>
4301   * Description: <b>Multiple Resources: 
4302
4303* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4304* [CodeSystem](codesystem.html): A use context assigned to the code system
4305* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4306* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4307* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4308* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4309* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4310* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4311* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4312* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4313* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4314* [StructureMap](structuremap.html): A use context assigned to the structure map
4315* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4316* [ValueSet](valueset.html): A use context assigned to the value set
4317</b><br>
4318   * Type: <b>token</b><br>
4319   * Path: <b>(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
4320   * </p>
4321   */
4322  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
4323
4324 /**
4325   * Search parameter: <b>date</b>
4326   * <p>
4327   * Description: <b>Multiple Resources: 
4328
4329* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4330* [CodeSystem](codesystem.html): The code system publication date
4331* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4332* [ConceptMap](conceptmap.html): The concept map publication date
4333* [GraphDefinition](graphdefinition.html): The graph definition publication date
4334* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4335* [MessageDefinition](messagedefinition.html): The message definition publication date
4336* [NamingSystem](namingsystem.html): The naming system publication date
4337* [OperationDefinition](operationdefinition.html): The operation definition publication date
4338* [SearchParameter](searchparameter.html): The search parameter publication date
4339* [StructureDefinition](structuredefinition.html): The structure definition publication date
4340* [StructureMap](structuremap.html): The structure map publication date
4341* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4342* [ValueSet](valueset.html): The value set publication date
4343</b><br>
4344   * Type: <b>date</b><br>
4345   * Path: <b>CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date</b><br>
4346   * </p>
4347   */
4348  @SearchParamDefinition(name="date", path="CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The capability statement publication date\r\n* [CodeSystem](codesystem.html): The code system publication date\r\n* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date\r\n* [ConceptMap](conceptmap.html): The concept map publication date\r\n* [GraphDefinition](graphdefinition.html): The graph definition publication date\r\n* [ImplementationGuide](implementationguide.html): The implementation guide publication date\r\n* [MessageDefinition](messagedefinition.html): The message definition publication date\r\n* [NamingSystem](namingsystem.html): The naming system publication date\r\n* [OperationDefinition](operationdefinition.html): The operation definition publication date\r\n* [SearchParameter](searchparameter.html): The search parameter publication date\r\n* [StructureDefinition](structuredefinition.html): The structure definition publication date\r\n* [StructureMap](structuremap.html): The structure map publication date\r\n* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date\r\n* [ValueSet](valueset.html): The value set publication date\r\n", type="date" )
4349  public static final String SP_DATE = "date";
4350 /**
4351   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4352   * <p>
4353   * Description: <b>Multiple Resources: 
4354
4355* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4356* [CodeSystem](codesystem.html): The code system publication date
4357* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4358* [ConceptMap](conceptmap.html): The concept map publication date
4359* [GraphDefinition](graphdefinition.html): The graph definition publication date
4360* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4361* [MessageDefinition](messagedefinition.html): The message definition publication date
4362* [NamingSystem](namingsystem.html): The naming system publication date
4363* [OperationDefinition](operationdefinition.html): The operation definition publication date
4364* [SearchParameter](searchparameter.html): The search parameter publication date
4365* [StructureDefinition](structuredefinition.html): The structure definition publication date
4366* [StructureMap](structuremap.html): The structure map publication date
4367* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4368* [ValueSet](valueset.html): The value set publication date
4369</b><br>
4370   * Type: <b>date</b><br>
4371   * Path: <b>CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date</b><br>
4372   * </p>
4373   */
4374  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4375
4376 /**
4377   * Search parameter: <b>description</b>
4378   * <p>
4379   * Description: <b>Multiple Resources: 
4380
4381* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4382* [CodeSystem](codesystem.html): The description of the code system
4383* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4384* [ConceptMap](conceptmap.html): The description of the concept map
4385* [GraphDefinition](graphdefinition.html): The description of the graph definition
4386* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4387* [MessageDefinition](messagedefinition.html): The description of the message definition
4388* [NamingSystem](namingsystem.html): The description of the naming system
4389* [OperationDefinition](operationdefinition.html): The description of the operation definition
4390* [SearchParameter](searchparameter.html): The description of the search parameter
4391* [StructureDefinition](structuredefinition.html): The description of the structure definition
4392* [StructureMap](structuremap.html): The description of the structure map
4393* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4394* [ValueSet](valueset.html): The description of the value set
4395</b><br>
4396   * Type: <b>string</b><br>
4397   * Path: <b>CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description</b><br>
4398   * </p>
4399   */
4400  @SearchParamDefinition(name="description", path="CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The description of the capability statement\r\n* [CodeSystem](codesystem.html): The description of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition\r\n* [ConceptMap](conceptmap.html): The description of the concept map\r\n* [GraphDefinition](graphdefinition.html): The description of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The description of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The description of the message definition\r\n* [NamingSystem](namingsystem.html): The description of the naming system\r\n* [OperationDefinition](operationdefinition.html): The description of the operation definition\r\n* [SearchParameter](searchparameter.html): The description of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The description of the structure definition\r\n* [StructureMap](structuremap.html): The description of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities\r\n* [ValueSet](valueset.html): The description of the value set\r\n", type="string" )
4401  public static final String SP_DESCRIPTION = "description";
4402 /**
4403   * <b>Fluent Client</b> search parameter constant for <b>description</b>
4404   * <p>
4405   * Description: <b>Multiple Resources: 
4406
4407* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4408* [CodeSystem](codesystem.html): The description of the code system
4409* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4410* [ConceptMap](conceptmap.html): The description of the concept map
4411* [GraphDefinition](graphdefinition.html): The description of the graph definition
4412* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4413* [MessageDefinition](messagedefinition.html): The description of the message definition
4414* [NamingSystem](namingsystem.html): The description of the naming system
4415* [OperationDefinition](operationdefinition.html): The description of the operation definition
4416* [SearchParameter](searchparameter.html): The description of the search parameter
4417* [StructureDefinition](structuredefinition.html): The description of the structure definition
4418* [StructureMap](structuremap.html): The description of the structure map
4419* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4420* [ValueSet](valueset.html): The description of the value set
4421</b><br>
4422   * Type: <b>string</b><br>
4423   * Path: <b>CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description</b><br>
4424   * </p>
4425   */
4426  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
4427
4428 /**
4429   * Search parameter: <b>jurisdiction</b>
4430   * <p>
4431   * Description: <b>Multiple Resources: 
4432
4433* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4434* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4435* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4436* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4437* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4438* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4439* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4440* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4441* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4442* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4443* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4444* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4445* [ValueSet](valueset.html): Intended jurisdiction for the value set
4446</b><br>
4447   * Type: <b>token</b><br>
4448   * Path: <b>CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction</b><br>
4449   * </p>
4450   */
4451  @SearchParamDefinition(name="jurisdiction", path="CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement\r\n* [CodeSystem](codesystem.html): Intended jurisdiction for the code system\r\n* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map\r\n* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition\r\n* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition\r\n* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system\r\n* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition\r\n* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter\r\n* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition\r\n* [StructureMap](structuremap.html): Intended jurisdiction for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities\r\n* [ValueSet](valueset.html): Intended jurisdiction for the value set\r\n", type="token" )
4452  public static final String SP_JURISDICTION = "jurisdiction";
4453 /**
4454   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
4455   * <p>
4456   * Description: <b>Multiple Resources: 
4457
4458* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4459* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4460* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4461* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4462* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4463* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4464* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4465* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4466* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4467* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4468* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4469* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4470* [ValueSet](valueset.html): Intended jurisdiction for the value set
4471</b><br>
4472   * Type: <b>token</b><br>
4473   * Path: <b>CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction</b><br>
4474   * </p>
4475   */
4476  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
4477
4478 /**
4479   * Search parameter: <b>name</b>
4480   * <p>
4481   * Description: <b>Multiple Resources: 
4482
4483* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4484* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4485* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4486* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4487* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4488* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4489* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4490* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4491* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4492* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4493* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4494* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4495* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4496* [ValueSet](valueset.html): Computationally friendly name of the value set
4497</b><br>
4498   * Type: <b>string</b><br>
4499   * Path: <b>CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name</b><br>
4500   * </p>
4501   */
4502  @SearchParamDefinition(name="name", path="CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement\r\n* [CodeSystem](codesystem.html): Computationally friendly name of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition\r\n* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map\r\n* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition\r\n* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system\r\n* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition\r\n* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition\r\n* [StructureMap](structuremap.html): Computationally friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities\r\n* [ValueSet](valueset.html): Computationally friendly name of the value set\r\n", type="string" )
4503  public static final String SP_NAME = "name";
4504 /**
4505   * <b>Fluent Client</b> search parameter constant for <b>name</b>
4506   * <p>
4507   * Description: <b>Multiple Resources: 
4508
4509* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4510* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4511* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4512* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4513* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4514* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4515* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4516* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4517* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4518* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4519* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4520* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4521* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4522* [ValueSet](valueset.html): Computationally friendly name of the value set
4523</b><br>
4524   * Type: <b>string</b><br>
4525   * Path: <b>CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name</b><br>
4526   * </p>
4527   */
4528  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
4529
4530 /**
4531   * Search parameter: <b>publisher</b>
4532   * <p>
4533   * Description: <b>Multiple Resources: 
4534
4535* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4536* [CodeSystem](codesystem.html): Name of the publisher of the code system
4537* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4538* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4539* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4540* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4541* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4542* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4543* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4544* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4545* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4546* [StructureMap](structuremap.html): Name of the publisher of the structure map
4547* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4548* [ValueSet](valueset.html): Name of the publisher of the value set
4549</b><br>
4550   * Type: <b>string</b><br>
4551   * Path: <b>CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher</b><br>
4552   * </p>
4553   */
4554  @SearchParamDefinition(name="publisher", path="CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement\r\n* [CodeSystem](codesystem.html): Name of the publisher of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition\r\n* [ConceptMap](conceptmap.html): Name of the publisher of the concept map\r\n* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition\r\n* [NamingSystem](namingsystem.html): Name of the publisher of the naming system\r\n* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition\r\n* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition\r\n* [StructureMap](structuremap.html): Name of the publisher of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities\r\n* [ValueSet](valueset.html): Name of the publisher of the value set\r\n", type="string" )
4555  public static final String SP_PUBLISHER = "publisher";
4556 /**
4557   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
4558   * <p>
4559   * Description: <b>Multiple Resources: 
4560
4561* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4562* [CodeSystem](codesystem.html): Name of the publisher of the code system
4563* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4564* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4565* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4566* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4567* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4568* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4569* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4570* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4571* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4572* [StructureMap](structuremap.html): Name of the publisher of the structure map
4573* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4574* [ValueSet](valueset.html): Name of the publisher of the value set
4575</b><br>
4576   * Type: <b>string</b><br>
4577   * Path: <b>CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher</b><br>
4578   * </p>
4579   */
4580  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
4581
4582 /**
4583   * Search parameter: <b>status</b>
4584   * <p>
4585   * Description: <b>Multiple Resources: 
4586
4587* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4588* [CodeSystem](codesystem.html): The current status of the code system
4589* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4590* [ConceptMap](conceptmap.html): The current status of the concept map
4591* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4592* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4593* [MessageDefinition](messagedefinition.html): The current status of the message definition
4594* [NamingSystem](namingsystem.html): The current status of the naming system
4595* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4596* [SearchParameter](searchparameter.html): The current status of the search parameter
4597* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4598* [StructureMap](structuremap.html): The current status of the structure map
4599* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4600* [ValueSet](valueset.html): The current status of the value set
4601</b><br>
4602   * Type: <b>token</b><br>
4603   * Path: <b>CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status</b><br>
4604   * </p>
4605   */
4606  @SearchParamDefinition(name="status", path="CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement\r\n* [CodeSystem](codesystem.html): The current status of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition\r\n* [ConceptMap](conceptmap.html): The current status of the concept map\r\n* [GraphDefinition](graphdefinition.html): The current status of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The current status of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The current status of the message definition\r\n* [NamingSystem](namingsystem.html): The current status of the naming system\r\n* [OperationDefinition](operationdefinition.html): The current status of the operation definition\r\n* [SearchParameter](searchparameter.html): The current status of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The current status of the structure definition\r\n* [StructureMap](structuremap.html): The current status of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities\r\n* [ValueSet](valueset.html): The current status of the value set\r\n", type="token" )
4607  public static final String SP_STATUS = "status";
4608 /**
4609   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4610   * <p>
4611   * Description: <b>Multiple Resources: 
4612
4613* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4614* [CodeSystem](codesystem.html): The current status of the code system
4615* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4616* [ConceptMap](conceptmap.html): The current status of the concept map
4617* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4618* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4619* [MessageDefinition](messagedefinition.html): The current status of the message definition
4620* [NamingSystem](namingsystem.html): The current status of the naming system
4621* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4622* [SearchParameter](searchparameter.html): The current status of the search parameter
4623* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4624* [StructureMap](structuremap.html): The current status of the structure map
4625* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4626* [ValueSet](valueset.html): The current status of the value set
4627</b><br>
4628   * Type: <b>token</b><br>
4629   * Path: <b>CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status</b><br>
4630   * </p>
4631   */
4632  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4633
4634 /**
4635   * Search parameter: <b>title</b>
4636   * <p>
4637   * Description: <b>Multiple Resources: 
4638
4639* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4640* [CodeSystem](codesystem.html): The human-friendly name of the code system
4641* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4642* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4643* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4644* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4645* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4646* [StructureMap](structuremap.html): The human-friendly name of the structure map
4647* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4648* [ValueSet](valueset.html): The human-friendly name of the value set
4649</b><br>
4650   * Type: <b>string</b><br>
4651   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4652   * </p>
4653   */
4654  @SearchParamDefinition(name="title", path="CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement\r\n* [CodeSystem](codesystem.html): The human-friendly name of the code system\r\n* [ConceptMap](conceptmap.html): The human-friendly name of the concept map\r\n* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition\r\n* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition\r\n* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition\r\n* [StructureMap](structuremap.html): The human-friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities\r\n* [ValueSet](valueset.html): The human-friendly name of the value set\r\n", type="string" )
4655  public static final String SP_TITLE = "title";
4656 /**
4657   * <b>Fluent Client</b> search parameter constant for <b>title</b>
4658   * <p>
4659   * Description: <b>Multiple Resources: 
4660
4661* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4662* [CodeSystem](codesystem.html): The human-friendly name of the code system
4663* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4664* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4665* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4666* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4667* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4668* [StructureMap](structuremap.html): The human-friendly name of the structure map
4669* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4670* [ValueSet](valueset.html): The human-friendly name of the value set
4671</b><br>
4672   * Type: <b>string</b><br>
4673   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4674   * </p>
4675   */
4676  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
4677
4678 /**
4679   * Search parameter: <b>url</b>
4680   * <p>
4681   * Description: <b>Multiple Resources: 
4682
4683* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4684* [CodeSystem](codesystem.html): The uri that identifies the code system
4685* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4686* [ConceptMap](conceptmap.html): The uri that identifies the concept map
4687* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4688* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4689* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4690* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4691* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4692* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4693* [StructureMap](structuremap.html): The uri that identifies the structure map
4694* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4695* [ValueSet](valueset.html): The uri that identifies the value set
4696</b><br>
4697   * Type: <b>uri</b><br>
4698   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
4699   * </p>
4700   */
4701  @SearchParamDefinition(name="url", path="CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\r\n* [CodeSystem](codesystem.html): The uri that identifies the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition\r\n* [ConceptMap](conceptmap.html): The uri that identifies the concept map\r\n* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition\r\n* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition\r\n* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\r\n* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition\r\n* [StructureMap](structuremap.html): The uri that identifies the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
4702  public static final String SP_URL = "url";
4703 /**
4704   * <b>Fluent Client</b> search parameter constant for <b>url</b>
4705   * <p>
4706   * Description: <b>Multiple Resources: 
4707
4708* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4709* [CodeSystem](codesystem.html): The uri that identifies the code system
4710* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4711* [ConceptMap](conceptmap.html): The uri that identifies the concept map
4712* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4713* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4714* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4715* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4716* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4717* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4718* [StructureMap](structuremap.html): The uri that identifies the structure map
4719* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4720* [ValueSet](valueset.html): The uri that identifies the value set
4721</b><br>
4722   * Type: <b>uri</b><br>
4723   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
4724   * </p>
4725   */
4726  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
4727
4728 /**
4729   * Search parameter: <b>version</b>
4730   * <p>
4731   * Description: <b>Multiple Resources: 
4732
4733* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4734* [CodeSystem](codesystem.html): The business version of the code system
4735* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4736* [ConceptMap](conceptmap.html): The business version of the concept map
4737* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4738* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4739* [MessageDefinition](messagedefinition.html): The business version of the message definition
4740* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4741* [SearchParameter](searchparameter.html): The business version of the search parameter
4742* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4743* [StructureMap](structuremap.html): The business version of the structure map
4744* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4745* [ValueSet](valueset.html): The business version of the value set
4746</b><br>
4747   * Type: <b>token</b><br>
4748   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
4749   * </p>
4750   */
4751  @SearchParamDefinition(name="version", path="CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\r\n* [CodeSystem](codesystem.html): The business version of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition\r\n* [ConceptMap](conceptmap.html): The business version of the concept map\r\n* [GraphDefinition](graphdefinition.html): The business version of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The business version of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The business version of the message definition\r\n* [OperationDefinition](operationdefinition.html): The business version of the operation definition\r\n* [SearchParameter](searchparameter.html): The business version of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The business version of the structure definition\r\n* [StructureMap](structuremap.html): The business version of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
4752  public static final String SP_VERSION = "version";
4753 /**
4754   * <b>Fluent Client</b> search parameter constant for <b>version</b>
4755   * <p>
4756   * Description: <b>Multiple Resources: 
4757
4758* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4759* [CodeSystem](codesystem.html): The business version of the code system
4760* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4761* [ConceptMap](conceptmap.html): The business version of the concept map
4762* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4763* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4764* [MessageDefinition](messagedefinition.html): The business version of the message definition
4765* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4766* [SearchParameter](searchparameter.html): The business version of the search parameter
4767* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4768* [StructureMap](structuremap.html): The business version of the structure map
4769* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4770* [ValueSet](valueset.html): The business version of the value set
4771</b><br>
4772   * Type: <b>token</b><br>
4773   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
4774   * </p>
4775   */
4776  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
4777
4778}
4779