001package org.hl7.fhir.r5.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, Jul 15, 2022 11:20+1000 for FHIR v5.0.0-snapshot2
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.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    /**
3304     * not supported on this implementation
3305     */
3306    @Override
3307    public int getIdentifierMax() { 
3308      return 0;
3309    }
3310    /**
3311     * @return {@link #identifier} (A formal identifier that is used to identify this operation definition when it is represented in other formats, or referenced in a specification, model, design or an instance.)
3312     */
3313    public List<Identifier> getIdentifier() { 
3314      return new ArrayList<>();
3315    }
3316    /**
3317     * @return Returns a reference to <code>this</code> for easy method chaining
3318     */
3319    public OperationDefinition setIdentifier(List<Identifier> theIdentifier) { 
3320      throw new Error("The resource type \"OperationDefinition\" does not implement the property \"identifier\"");
3321    }
3322    public boolean hasIdentifier() { 
3323      return false;
3324    }
3325
3326    public Identifier addIdentifier() { //3
3327      throw new Error("The resource type \"OperationDefinition\" does not implement the property \"identifier\"");
3328    }
3329    public OperationDefinition addIdentifier(Identifier t) { //3
3330      throw new Error("The resource type \"OperationDefinition\" does not implement the property \"identifier\"");
3331    }
3332    /**
3333     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {2}
3334     */
3335    public Identifier getIdentifierFirstRep() { 
3336      throw new Error("The resource type \"OperationDefinition\" does not implement the property \"identifier\"");
3337    }
3338    /**
3339     * not supported on this implementation
3340     */
3341    @Override
3342    public int getCopyrightMax() { 
3343      return 0;
3344    }
3345    /**
3346     * @return {@link #copyright} (A copyright statement relating to the operation definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the operation definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3347     */
3348    public MarkdownType getCopyrightElement() { 
3349      throw new Error("The resource type \"OperationDefinition\" does not implement the property \"copyright\"");
3350    }
3351
3352    public boolean hasCopyrightElement() { 
3353      return false;
3354    }
3355    public boolean hasCopyright() {
3356      return false;
3357    }
3358
3359    /**
3360     * @param value {@link #copyright} (A copyright statement relating to the operation definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the operation definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3361     */
3362    public OperationDefinition setCopyrightElement(MarkdownType value) { 
3363      throw new Error("The resource type \"OperationDefinition\" does not implement the property \"copyright\"");
3364    }
3365    public String getCopyright() { 
3366      throw new Error("The resource type \"OperationDefinition\" does not implement the property \"copyright\"");
3367    }
3368    /**
3369     * @param value A copyright statement relating to the operation definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the operation definition.
3370     */
3371    public OperationDefinition setCopyright(String value) { 
3372      throw new Error("The resource type \"OperationDefinition\" does not implement the property \"copyright\"");
3373    }
3374      protected void listChildren(List<Property> children) {
3375        super.listChildren(children);
3376        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));
3377        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));
3378        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));
3379        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the operation definition.", 0, 1, title));
3380        children.add(new Property("status", "code", "The status of this operation definition. Enables tracking the life-cycle of the content.", 0, 1, status));
3381        children.add(new Property("kind", "code", "Whether this is an operation or a named query.", 0, 1, kind));
3382        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));
3383        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));
3384        children.add(new Property("publisher", "string", "The name of the organization or individual that published the operation definition.", 0, 1, publisher));
3385        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));
3386        children.add(new Property("description", "markdown", "A free text natural language description of the operation definition from a consumer's perspective.", 0, 1, description));
3387        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));
3388        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));
3389        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));
3390        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));
3391        children.add(new Property("code", "code", "The name used to invoke the operation.", 0, 1, code));
3392        children.add(new Property("comment", "markdown", "Additional information about how to use this operation or named query.", 0, 1, comment));
3393        children.add(new Property("base", "canonical(OperationDefinition)", "Indicates that this operation definition is a constraining profile on the base.", 0, 1, base));
3394        children.add(new Property("resource", "code", "The types on which this operation can be executed.", 0, java.lang.Integer.MAX_VALUE, resource));
3395        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));
3396        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));
3397        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));
3398        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));
3399        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));
3400        children.add(new Property("parameter", "", "The parameters for the operation/query.", 0, java.lang.Integer.MAX_VALUE, parameter));
3401        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));
3402      }
3403
3404      @Override
3405      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3406        switch (_hash) {
3407        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);
3408        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);
3409        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);
3410        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the operation definition.", 0, 1, title);
3411        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);
3412        case 3292052: /*kind*/  return new Property("kind", "code", "Whether this is an operation or a named query.", 0, 1, kind);
3413        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);
3414        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);
3415        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the operation definition.", 0, 1, publisher);
3416        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);
3417        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);
3418        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);
3419        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);
3420        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);
3421        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);
3422        case 3059181: /*code*/  return new Property("code", "code", "The name used to invoke the operation.", 0, 1, code);
3423        case 950398559: /*comment*/  return new Property("comment", "markdown", "Additional information about how to use this operation or named query.", 0, 1, comment);
3424        case 3016401: /*base*/  return new Property("base", "canonical(OperationDefinition)", "Indicates that this operation definition is a constraining profile on the base.", 0, 1, base);
3425        case -341064690: /*resource*/  return new Property("resource", "code", "The types on which this operation can be executed.", 0, java.lang.Integer.MAX_VALUE, resource);
3426        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);
3427        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);
3428        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);
3429        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);
3430        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);
3431        case 1954460585: /*parameter*/  return new Property("parameter", "", "The parameters for the operation/query.", 0, java.lang.Integer.MAX_VALUE, parameter);
3432        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);
3433        default: return super.getNamedProperty(_hash, _name, _checkValid);
3434        }
3435
3436      }
3437
3438      @Override
3439      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3440        switch (hash) {
3441        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
3442        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
3443        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3444        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
3445        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
3446        case 3292052: /*kind*/ return this.kind == null ? new Base[0] : new Base[] {this.kind}; // Enumeration<OperationKind>
3447        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
3448        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
3449        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
3450        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
3451        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
3452        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
3453        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
3454        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
3455        case -14805197: /*affectsState*/ return this.affectsState == null ? new Base[0] : new Base[] {this.affectsState}; // BooleanType
3456        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
3457        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // MarkdownType
3458        case 3016401: /*base*/ return this.base == null ? new Base[0] : new Base[] {this.base}; // CanonicalType
3459        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // CodeType
3460        case -887328209: /*system*/ return this.system == null ? new Base[0] : new Base[] {this.system}; // BooleanType
3461        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // BooleanType
3462        case 555127957: /*instance*/ return this.instance == null ? new Base[0] : new Base[] {this.instance}; // BooleanType
3463        case 676942463: /*inputProfile*/ return this.inputProfile == null ? new Base[0] : new Base[] {this.inputProfile}; // CanonicalType
3464        case 1826166120: /*outputProfile*/ return this.outputProfile == null ? new Base[0] : new Base[] {this.outputProfile}; // CanonicalType
3465        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // OperationDefinitionParameterComponent
3466        case 529823674: /*overload*/ return this.overload == null ? new Base[0] : this.overload.toArray(new Base[this.overload.size()]); // OperationDefinitionOverloadComponent
3467        default: return super.getProperty(hash, name, checkValid);
3468        }
3469
3470      }
3471
3472      @Override
3473      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3474        switch (hash) {
3475        case 116079: // url
3476          this.url = TypeConvertor.castToUri(value); // UriType
3477          return value;
3478        case 351608024: // version
3479          this.version = TypeConvertor.castToString(value); // StringType
3480          return value;
3481        case 3373707: // name
3482          this.name = TypeConvertor.castToString(value); // StringType
3483          return value;
3484        case 110371416: // title
3485          this.title = TypeConvertor.castToString(value); // StringType
3486          return value;
3487        case -892481550: // status
3488          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3489          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3490          return value;
3491        case 3292052: // kind
3492          value = new OperationKindEnumFactory().fromType(TypeConvertor.castToCode(value));
3493          this.kind = (Enumeration) value; // Enumeration<OperationKind>
3494          return value;
3495        case -404562712: // experimental
3496          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3497          return value;
3498        case 3076014: // date
3499          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3500          return value;
3501        case 1447404028: // publisher
3502          this.publisher = TypeConvertor.castToString(value); // StringType
3503          return value;
3504        case 951526432: // contact
3505          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3506          return value;
3507        case -1724546052: // description
3508          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3509          return value;
3510        case -669707736: // useContext
3511          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
3512          return value;
3513        case -507075711: // jurisdiction
3514          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3515          return value;
3516        case -220463842: // purpose
3517          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3518          return value;
3519        case -14805197: // affectsState
3520          this.affectsState = TypeConvertor.castToBoolean(value); // BooleanType
3521          return value;
3522        case 3059181: // code
3523          this.code = TypeConvertor.castToCode(value); // CodeType
3524          return value;
3525        case 950398559: // comment
3526          this.comment = TypeConvertor.castToMarkdown(value); // MarkdownType
3527          return value;
3528        case 3016401: // base
3529          this.base = TypeConvertor.castToCanonical(value); // CanonicalType
3530          return value;
3531        case -341064690: // resource
3532          this.getResource().add(TypeConvertor.castToCode(value)); // CodeType
3533          return value;
3534        case -887328209: // system
3535          this.system = TypeConvertor.castToBoolean(value); // BooleanType
3536          return value;
3537        case 3575610: // type
3538          this.type = TypeConvertor.castToBoolean(value); // BooleanType
3539          return value;
3540        case 555127957: // instance
3541          this.instance = TypeConvertor.castToBoolean(value); // BooleanType
3542          return value;
3543        case 676942463: // inputProfile
3544          this.inputProfile = TypeConvertor.castToCanonical(value); // CanonicalType
3545          return value;
3546        case 1826166120: // outputProfile
3547          this.outputProfile = TypeConvertor.castToCanonical(value); // CanonicalType
3548          return value;
3549        case 1954460585: // parameter
3550          this.getParameter().add((OperationDefinitionParameterComponent) value); // OperationDefinitionParameterComponent
3551          return value;
3552        case 529823674: // overload
3553          this.getOverload().add((OperationDefinitionOverloadComponent) value); // OperationDefinitionOverloadComponent
3554          return value;
3555        default: return super.setProperty(hash, name, value);
3556        }
3557
3558      }
3559
3560      @Override
3561      public Base setProperty(String name, Base value) throws FHIRException {
3562        if (name.equals("url")) {
3563          this.url = TypeConvertor.castToUri(value); // UriType
3564        } else if (name.equals("version")) {
3565          this.version = TypeConvertor.castToString(value); // StringType
3566        } else if (name.equals("name")) {
3567          this.name = TypeConvertor.castToString(value); // StringType
3568        } else if (name.equals("title")) {
3569          this.title = TypeConvertor.castToString(value); // StringType
3570        } else if (name.equals("status")) {
3571          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3572          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3573        } else if (name.equals("kind")) {
3574          value = new OperationKindEnumFactory().fromType(TypeConvertor.castToCode(value));
3575          this.kind = (Enumeration) value; // Enumeration<OperationKind>
3576        } else if (name.equals("experimental")) {
3577          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3578        } else if (name.equals("date")) {
3579          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3580        } else if (name.equals("publisher")) {
3581          this.publisher = TypeConvertor.castToString(value); // StringType
3582        } else if (name.equals("contact")) {
3583          this.getContact().add(TypeConvertor.castToContactDetail(value));
3584        } else if (name.equals("description")) {
3585          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3586        } else if (name.equals("useContext")) {
3587          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
3588        } else if (name.equals("jurisdiction")) {
3589          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
3590        } else if (name.equals("purpose")) {
3591          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3592        } else if (name.equals("affectsState")) {
3593          this.affectsState = TypeConvertor.castToBoolean(value); // BooleanType
3594        } else if (name.equals("code")) {
3595          this.code = TypeConvertor.castToCode(value); // CodeType
3596        } else if (name.equals("comment")) {
3597          this.comment = TypeConvertor.castToMarkdown(value); // MarkdownType
3598        } else if (name.equals("base")) {
3599          this.base = TypeConvertor.castToCanonical(value); // CanonicalType
3600        } else if (name.equals("resource")) {
3601          this.getResource().add(TypeConvertor.castToCode(value));
3602        } else if (name.equals("system")) {
3603          this.system = TypeConvertor.castToBoolean(value); // BooleanType
3604        } else if (name.equals("type")) {
3605          this.type = TypeConvertor.castToBoolean(value); // BooleanType
3606        } else if (name.equals("instance")) {
3607          this.instance = TypeConvertor.castToBoolean(value); // BooleanType
3608        } else if (name.equals("inputProfile")) {
3609          this.inputProfile = TypeConvertor.castToCanonical(value); // CanonicalType
3610        } else if (name.equals("outputProfile")) {
3611          this.outputProfile = TypeConvertor.castToCanonical(value); // CanonicalType
3612        } else if (name.equals("parameter")) {
3613          this.getParameter().add((OperationDefinitionParameterComponent) value);
3614        } else if (name.equals("overload")) {
3615          this.getOverload().add((OperationDefinitionOverloadComponent) value);
3616        } else
3617          return super.setProperty(name, value);
3618        return value;
3619      }
3620
3621      @Override
3622      public Base makeProperty(int hash, String name) throws FHIRException {
3623        switch (hash) {
3624        case 116079:  return getUrlElement();
3625        case 351608024:  return getVersionElement();
3626        case 3373707:  return getNameElement();
3627        case 110371416:  return getTitleElement();
3628        case -892481550:  return getStatusElement();
3629        case 3292052:  return getKindElement();
3630        case -404562712:  return getExperimentalElement();
3631        case 3076014:  return getDateElement();
3632        case 1447404028:  return getPublisherElement();
3633        case 951526432:  return addContact(); 
3634        case -1724546052:  return getDescriptionElement();
3635        case -669707736:  return addUseContext(); 
3636        case -507075711:  return addJurisdiction(); 
3637        case -220463842:  return getPurposeElement();
3638        case -14805197:  return getAffectsStateElement();
3639        case 3059181:  return getCodeElement();
3640        case 950398559:  return getCommentElement();
3641        case 3016401:  return getBaseElement();
3642        case -341064690:  return addResourceElement();
3643        case -887328209:  return getSystemElement();
3644        case 3575610:  return getTypeElement();
3645        case 555127957:  return getInstanceElement();
3646        case 676942463:  return getInputProfileElement();
3647        case 1826166120:  return getOutputProfileElement();
3648        case 1954460585:  return addParameter(); 
3649        case 529823674:  return addOverload(); 
3650        default: return super.makeProperty(hash, name);
3651        }
3652
3653      }
3654
3655      @Override
3656      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3657        switch (hash) {
3658        case 116079: /*url*/ return new String[] {"uri"};
3659        case 351608024: /*version*/ return new String[] {"string"};
3660        case 3373707: /*name*/ return new String[] {"string"};
3661        case 110371416: /*title*/ return new String[] {"string"};
3662        case -892481550: /*status*/ return new String[] {"code"};
3663        case 3292052: /*kind*/ return new String[] {"code"};
3664        case -404562712: /*experimental*/ return new String[] {"boolean"};
3665        case 3076014: /*date*/ return new String[] {"dateTime"};
3666        case 1447404028: /*publisher*/ return new String[] {"string"};
3667        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
3668        case -1724546052: /*description*/ return new String[] {"markdown"};
3669        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
3670        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
3671        case -220463842: /*purpose*/ return new String[] {"markdown"};
3672        case -14805197: /*affectsState*/ return new String[] {"boolean"};
3673        case 3059181: /*code*/ return new String[] {"code"};
3674        case 950398559: /*comment*/ return new String[] {"markdown"};
3675        case 3016401: /*base*/ return new String[] {"canonical"};
3676        case -341064690: /*resource*/ return new String[] {"code"};
3677        case -887328209: /*system*/ return new String[] {"boolean"};
3678        case 3575610: /*type*/ return new String[] {"boolean"};
3679        case 555127957: /*instance*/ return new String[] {"boolean"};
3680        case 676942463: /*inputProfile*/ return new String[] {"canonical"};
3681        case 1826166120: /*outputProfile*/ return new String[] {"canonical"};
3682        case 1954460585: /*parameter*/ return new String[] {};
3683        case 529823674: /*overload*/ return new String[] {};
3684        default: return super.getTypesForProperty(hash, name);
3685        }
3686
3687      }
3688
3689      @Override
3690      public Base addChild(String name) throws FHIRException {
3691        if (name.equals("url")) {
3692          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.url");
3693        }
3694        else if (name.equals("version")) {
3695          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.version");
3696        }
3697        else if (name.equals("name")) {
3698          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.name");
3699        }
3700        else if (name.equals("title")) {
3701          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.title");
3702        }
3703        else if (name.equals("status")) {
3704          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.status");
3705        }
3706        else if (name.equals("kind")) {
3707          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.kind");
3708        }
3709        else if (name.equals("experimental")) {
3710          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.experimental");
3711        }
3712        else if (name.equals("date")) {
3713          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.date");
3714        }
3715        else if (name.equals("publisher")) {
3716          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.publisher");
3717        }
3718        else if (name.equals("contact")) {
3719          return addContact();
3720        }
3721        else if (name.equals("description")) {
3722          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.description");
3723        }
3724        else if (name.equals("useContext")) {
3725          return addUseContext();
3726        }
3727        else if (name.equals("jurisdiction")) {
3728          return addJurisdiction();
3729        }
3730        else if (name.equals("purpose")) {
3731          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.purpose");
3732        }
3733        else if (name.equals("affectsState")) {
3734          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.affectsState");
3735        }
3736        else if (name.equals("code")) {
3737          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.code");
3738        }
3739        else if (name.equals("comment")) {
3740          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.comment");
3741        }
3742        else if (name.equals("base")) {
3743          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.base");
3744        }
3745        else if (name.equals("resource")) {
3746          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.resource");
3747        }
3748        else if (name.equals("system")) {
3749          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.system");
3750        }
3751        else if (name.equals("type")) {
3752          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.type");
3753        }
3754        else if (name.equals("instance")) {
3755          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.instance");
3756        }
3757        else if (name.equals("inputProfile")) {
3758          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.inputProfile");
3759        }
3760        else if (name.equals("outputProfile")) {
3761          throw new FHIRException("Cannot call addChild on a primitive type OperationDefinition.outputProfile");
3762        }
3763        else if (name.equals("parameter")) {
3764          return addParameter();
3765        }
3766        else if (name.equals("overload")) {
3767          return addOverload();
3768        }
3769        else
3770          return super.addChild(name);
3771      }
3772
3773  public String fhirType() {
3774    return "OperationDefinition";
3775
3776  }
3777
3778      public OperationDefinition copy() {
3779        OperationDefinition dst = new OperationDefinition();
3780        copyValues(dst);
3781        return dst;
3782      }
3783
3784      public void copyValues(OperationDefinition dst) {
3785        super.copyValues(dst);
3786        dst.url = url == null ? null : url.copy();
3787        dst.version = version == null ? null : version.copy();
3788        dst.name = name == null ? null : name.copy();
3789        dst.title = title == null ? null : title.copy();
3790        dst.status = status == null ? null : status.copy();
3791        dst.kind = kind == null ? null : kind.copy();
3792        dst.experimental = experimental == null ? null : experimental.copy();
3793        dst.date = date == null ? null : date.copy();
3794        dst.publisher = publisher == null ? null : publisher.copy();
3795        if (contact != null) {
3796          dst.contact = new ArrayList<ContactDetail>();
3797          for (ContactDetail i : contact)
3798            dst.contact.add(i.copy());
3799        };
3800        dst.description = description == null ? null : description.copy();
3801        if (useContext != null) {
3802          dst.useContext = new ArrayList<UsageContext>();
3803          for (UsageContext i : useContext)
3804            dst.useContext.add(i.copy());
3805        };
3806        if (jurisdiction != null) {
3807          dst.jurisdiction = new ArrayList<CodeableConcept>();
3808          for (CodeableConcept i : jurisdiction)
3809            dst.jurisdiction.add(i.copy());
3810        };
3811        dst.purpose = purpose == null ? null : purpose.copy();
3812        dst.affectsState = affectsState == null ? null : affectsState.copy();
3813        dst.code = code == null ? null : code.copy();
3814        dst.comment = comment == null ? null : comment.copy();
3815        dst.base = base == null ? null : base.copy();
3816        if (resource != null) {
3817          dst.resource = new ArrayList<CodeType>();
3818          for (CodeType i : resource)
3819            dst.resource.add(i.copy());
3820        };
3821        dst.system = system == null ? null : system.copy();
3822        dst.type = type == null ? null : type.copy();
3823        dst.instance = instance == null ? null : instance.copy();
3824        dst.inputProfile = inputProfile == null ? null : inputProfile.copy();
3825        dst.outputProfile = outputProfile == null ? null : outputProfile.copy();
3826        if (parameter != null) {
3827          dst.parameter = new ArrayList<OperationDefinitionParameterComponent>();
3828          for (OperationDefinitionParameterComponent i : parameter)
3829            dst.parameter.add(i.copy());
3830        };
3831        if (overload != null) {
3832          dst.overload = new ArrayList<OperationDefinitionOverloadComponent>();
3833          for (OperationDefinitionOverloadComponent i : overload)
3834            dst.overload.add(i.copy());
3835        };
3836      }
3837
3838      protected OperationDefinition typedCopy() {
3839        return copy();
3840      }
3841
3842      @Override
3843      public boolean equalsDeep(Base other_) {
3844        if (!super.equalsDeep(other_))
3845          return false;
3846        if (!(other_ instanceof OperationDefinition))
3847          return false;
3848        OperationDefinition o = (OperationDefinition) other_;
3849        return compareDeep(url, o.url, true) && compareDeep(version, o.version, true) && compareDeep(name, o.name, true)
3850           && compareDeep(title, o.title, true) && compareDeep(status, o.status, true) && compareDeep(kind, o.kind, true)
3851           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
3852           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
3853           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(affectsState, o.affectsState, true)
3854           && compareDeep(code, o.code, true) && compareDeep(comment, o.comment, true) && compareDeep(base, o.base, true)
3855           && compareDeep(resource, o.resource, true) && compareDeep(system, o.system, true) && compareDeep(type, o.type, true)
3856           && compareDeep(instance, o.instance, true) && compareDeep(inputProfile, o.inputProfile, true) && compareDeep(outputProfile, o.outputProfile, true)
3857           && compareDeep(parameter, o.parameter, true) && compareDeep(overload, o.overload, true);
3858      }
3859
3860      @Override
3861      public boolean equalsShallow(Base other_) {
3862        if (!super.equalsShallow(other_))
3863          return false;
3864        if (!(other_ instanceof OperationDefinition))
3865          return false;
3866        OperationDefinition o = (OperationDefinition) other_;
3867        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
3868           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(kind, o.kind, true)
3869           && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true)
3870           && compareValues(description, o.description, true) && compareValues(purpose, o.purpose, true) && compareValues(affectsState, o.affectsState, true)
3871           && compareValues(code, o.code, true) && compareValues(comment, o.comment, true) && compareValues(base, o.base, true)
3872           && compareValues(resource, o.resource, true) && compareValues(system, o.system, true) && compareValues(type, o.type, true)
3873           && compareValues(instance, o.instance, true) && compareValues(inputProfile, o.inputProfile, true) && compareValues(outputProfile, o.outputProfile, true)
3874          ;
3875      }
3876
3877      public boolean isEmpty() {
3878        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, version, name, title
3879          , status, kind, experimental, date, publisher, contact, description, useContext
3880          , jurisdiction, purpose, affectsState, code, comment, base, resource, system
3881          , type, instance, inputProfile, outputProfile, parameter, overload);
3882      }
3883
3884  @Override
3885  public ResourceType getResourceType() {
3886    return ResourceType.OperationDefinition;
3887   }
3888
3889 /**
3890   * Search parameter: <b>base</b>
3891   * <p>
3892   * Description: <b>Marks this as a profile of the base</b><br>
3893   * Type: <b>reference</b><br>
3894   * Path: <b>OperationDefinition.base</b><br>
3895   * </p>
3896   */
3897  @SearchParamDefinition(name="base", path="OperationDefinition.base", description="Marks this as a profile of the base", type="reference", target={OperationDefinition.class } )
3898  public static final String SP_BASE = "base";
3899 /**
3900   * <b>Fluent Client</b> search parameter constant for <b>base</b>
3901   * <p>
3902   * Description: <b>Marks this as a profile of the base</b><br>
3903   * Type: <b>reference</b><br>
3904   * Path: <b>OperationDefinition.base</b><br>
3905   * </p>
3906   */
3907  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASE);
3908
3909/**
3910   * Constant for fluent queries to be used to add include statements. Specifies
3911   * the path value of "<b>OperationDefinition:base</b>".
3912   */
3913  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASE = new ca.uhn.fhir.model.api.Include("OperationDefinition:base").toLocked();
3914
3915 /**
3916   * Search parameter: <b>code</b>
3917   * <p>
3918   * Description: <b>Name used to invoke the operation</b><br>
3919   * Type: <b>token</b><br>
3920   * Path: <b>OperationDefinition.code</b><br>
3921   * </p>
3922   */
3923  @SearchParamDefinition(name="code", path="OperationDefinition.code", description="Name used to invoke the operation", type="token" )
3924  public static final String SP_CODE = "code";
3925 /**
3926   * <b>Fluent Client</b> search parameter constant for <b>code</b>
3927   * <p>
3928   * Description: <b>Name used to invoke the operation</b><br>
3929   * Type: <b>token</b><br>
3930   * Path: <b>OperationDefinition.code</b><br>
3931   * </p>
3932   */
3933  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
3934
3935 /**
3936   * Search parameter: <b>input-profile</b>
3937   * <p>
3938   * Description: <b>Validation information for in parameters</b><br>
3939   * Type: <b>reference</b><br>
3940   * Path: <b>OperationDefinition.inputProfile</b><br>
3941   * </p>
3942   */
3943  @SearchParamDefinition(name="input-profile", path="OperationDefinition.inputProfile", description="Validation information for in parameters", type="reference", target={StructureDefinition.class } )
3944  public static final String SP_INPUT_PROFILE = "input-profile";
3945 /**
3946   * <b>Fluent Client</b> search parameter constant for <b>input-profile</b>
3947   * <p>
3948   * Description: <b>Validation information for in parameters</b><br>
3949   * Type: <b>reference</b><br>
3950   * Path: <b>OperationDefinition.inputProfile</b><br>
3951   * </p>
3952   */
3953  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INPUT_PROFILE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INPUT_PROFILE);
3954
3955/**
3956   * Constant for fluent queries to be used to add include statements. Specifies
3957   * the path value of "<b>OperationDefinition:input-profile</b>".
3958   */
3959  public static final ca.uhn.fhir.model.api.Include INCLUDE_INPUT_PROFILE = new ca.uhn.fhir.model.api.Include("OperationDefinition:input-profile").toLocked();
3960
3961 /**
3962   * Search parameter: <b>instance</b>
3963   * <p>
3964   * Description: <b>Invoke on an instance?</b><br>
3965   * Type: <b>token</b><br>
3966   * Path: <b>OperationDefinition.instance</b><br>
3967   * </p>
3968   */
3969  @SearchParamDefinition(name="instance", path="OperationDefinition.instance", description="Invoke on an instance?", type="token" )
3970  public static final String SP_INSTANCE = "instance";
3971 /**
3972   * <b>Fluent Client</b> search parameter constant for <b>instance</b>
3973   * <p>
3974   * Description: <b>Invoke on an instance?</b><br>
3975   * Type: <b>token</b><br>
3976   * Path: <b>OperationDefinition.instance</b><br>
3977   * </p>
3978   */
3979  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INSTANCE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INSTANCE);
3980
3981 /**
3982   * Search parameter: <b>kind</b>
3983   * <p>
3984   * Description: <b>operation | query</b><br>
3985   * Type: <b>token</b><br>
3986   * Path: <b>OperationDefinition.kind</b><br>
3987   * </p>
3988   */
3989  @SearchParamDefinition(name="kind", path="OperationDefinition.kind", description="operation | query", type="token" )
3990  public static final String SP_KIND = "kind";
3991 /**
3992   * <b>Fluent Client</b> search parameter constant for <b>kind</b>
3993   * <p>
3994   * Description: <b>operation | query</b><br>
3995   * Type: <b>token</b><br>
3996   * Path: <b>OperationDefinition.kind</b><br>
3997   * </p>
3998   */
3999  public static final ca.uhn.fhir.rest.gclient.TokenClientParam KIND = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_KIND);
4000
4001 /**
4002   * Search parameter: <b>output-profile</b>
4003   * <p>
4004   * Description: <b>Validation information for out parameters</b><br>
4005   * Type: <b>reference</b><br>
4006   * Path: <b>OperationDefinition.outputProfile</b><br>
4007   * </p>
4008   */
4009  @SearchParamDefinition(name="output-profile", path="OperationDefinition.outputProfile", description="Validation information for out parameters", type="reference", target={StructureDefinition.class } )
4010  public static final String SP_OUTPUT_PROFILE = "output-profile";
4011 /**
4012   * <b>Fluent Client</b> search parameter constant for <b>output-profile</b>
4013   * <p>
4014   * Description: <b>Validation information for out parameters</b><br>
4015   * Type: <b>reference</b><br>
4016   * Path: <b>OperationDefinition.outputProfile</b><br>
4017   * </p>
4018   */
4019  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam OUTPUT_PROFILE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_OUTPUT_PROFILE);
4020
4021/**
4022   * Constant for fluent queries to be used to add include statements. Specifies
4023   * the path value of "<b>OperationDefinition:output-profile</b>".
4024   */
4025  public static final ca.uhn.fhir.model.api.Include INCLUDE_OUTPUT_PROFILE = new ca.uhn.fhir.model.api.Include("OperationDefinition:output-profile").toLocked();
4026
4027 /**
4028   * Search parameter: <b>system</b>
4029   * <p>
4030   * Description: <b>Invoke at the system level?</b><br>
4031   * Type: <b>token</b><br>
4032   * Path: <b>OperationDefinition.system</b><br>
4033   * </p>
4034   */
4035  @SearchParamDefinition(name="system", path="OperationDefinition.system", description="Invoke at the system level?", type="token" )
4036  public static final String SP_SYSTEM = "system";
4037 /**
4038   * <b>Fluent Client</b> search parameter constant for <b>system</b>
4039   * <p>
4040   * Description: <b>Invoke at the system level?</b><br>
4041   * Type: <b>token</b><br>
4042   * Path: <b>OperationDefinition.system</b><br>
4043   * </p>
4044   */
4045  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SYSTEM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SYSTEM);
4046
4047 /**
4048   * Search parameter: <b>type</b>
4049   * <p>
4050   * Description: <b>Invoke at the type level?</b><br>
4051   * Type: <b>token</b><br>
4052   * Path: <b>OperationDefinition.type</b><br>
4053   * </p>
4054   */
4055  @SearchParamDefinition(name="type", path="OperationDefinition.type", description="Invoke at the type level?", type="token" )
4056  public static final String SP_TYPE = "type";
4057 /**
4058   * <b>Fluent Client</b> search parameter constant for <b>type</b>
4059   * <p>
4060   * Description: <b>Invoke at the type level?</b><br>
4061   * Type: <b>token</b><br>
4062   * Path: <b>OperationDefinition.type</b><br>
4063   * </p>
4064   */
4065  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TYPE);
4066
4067 /**
4068   * Search parameter: <b>context-quantity</b>
4069   * <p>
4070   * Description: <b>Multiple Resources: 
4071
4072* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
4073* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
4074* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
4075* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
4076* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
4077* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
4078* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
4079* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
4080* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
4081* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
4082* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
4083* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
4084* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
4085* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
4086</b><br>
4087   * Type: <b>quantity</b><br>
4088   * 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>
4089   * </p>
4090   */
4091  @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" )
4092  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
4093 /**
4094   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
4095   * <p>
4096   * Description: <b>Multiple Resources: 
4097
4098* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
4099* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
4100* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
4101* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
4102* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
4103* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
4104* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
4105* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
4106* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
4107* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
4108* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
4109* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
4110* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
4111* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
4112</b><br>
4113   * Type: <b>quantity</b><br>
4114   * 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>
4115   * </p>
4116   */
4117  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
4118
4119 /**
4120   * Search parameter: <b>context-type-quantity</b>
4121   * <p>
4122   * Description: <b>Multiple Resources: 
4123
4124* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
4125* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
4126* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
4127* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
4128* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
4129* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
4130* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
4131* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
4132* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
4133* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
4134* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
4135* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
4136* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
4137* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
4138</b><br>
4139   * Type: <b>composite</b><br>
4140   * 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>
4141   * </p>
4142   */
4143  @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"} )
4144  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
4145 /**
4146   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
4147   * <p>
4148   * Description: <b>Multiple Resources: 
4149
4150* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
4151* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
4152* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
4153* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
4154* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
4155* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
4156* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
4157* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
4158* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
4159* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
4160* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
4161* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
4162* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
4163* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
4164</b><br>
4165   * Type: <b>composite</b><br>
4166   * 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>
4167   * </p>
4168   */
4169  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);
4170
4171 /**
4172   * Search parameter: <b>context-type-value</b>
4173   * <p>
4174   * Description: <b>Multiple Resources: 
4175
4176* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4177* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4178* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4179* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4180* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4181* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4182* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4183* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4184* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4185* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4186* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4187* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4188* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4189* [ValueSet](valueset.html): A use context type and value assigned to the value set
4190</b><br>
4191   * Type: <b>composite</b><br>
4192   * 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>
4193   * </p>
4194   */
4195  @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"} )
4196  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
4197 /**
4198   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
4199   * <p>
4200   * Description: <b>Multiple Resources: 
4201
4202* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4203* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4204* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4205* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4206* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4207* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4208* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4209* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4210* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4211* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4212* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4213* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4214* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4215* [ValueSet](valueset.html): A use context type and value assigned to the value set
4216</b><br>
4217   * Type: <b>composite</b><br>
4218   * 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>
4219   * </p>
4220   */
4221  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);
4222
4223 /**
4224   * Search parameter: <b>context-type</b>
4225   * <p>
4226   * Description: <b>Multiple Resources: 
4227
4228* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4229* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4230* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4231* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4232* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4233* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4234* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4235* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4236* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4237* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4238* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4239* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4240* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4241* [ValueSet](valueset.html): A type of use context assigned to the value set
4242</b><br>
4243   * Type: <b>token</b><br>
4244   * 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>
4245   * </p>
4246   */
4247  @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" )
4248  public static final String SP_CONTEXT_TYPE = "context-type";
4249 /**
4250   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
4251   * <p>
4252   * Description: <b>Multiple Resources: 
4253
4254* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4255* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4256* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4257* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4258* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4259* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4260* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4261* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4262* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4263* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4264* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4265* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4266* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4267* [ValueSet](valueset.html): A type of use context assigned to the value set
4268</b><br>
4269   * Type: <b>token</b><br>
4270   * 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>
4271   * </p>
4272   */
4273  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
4274
4275 /**
4276   * Search parameter: <b>context</b>
4277   * <p>
4278   * Description: <b>Multiple Resources: 
4279
4280* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4281* [CodeSystem](codesystem.html): A use context assigned to the code system
4282* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4283* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4284* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4285* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4286* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4287* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4288* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4289* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4290* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4291* [StructureMap](structuremap.html): A use context assigned to the structure map
4292* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4293* [ValueSet](valueset.html): A use context assigned to the value set
4294</b><br>
4295   * Type: <b>token</b><br>
4296   * 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>
4297   * </p>
4298   */
4299  @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" )
4300  public static final String SP_CONTEXT = "context";
4301 /**
4302   * <b>Fluent Client</b> search parameter constant for <b>context</b>
4303   * <p>
4304   * Description: <b>Multiple Resources: 
4305
4306* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4307* [CodeSystem](codesystem.html): A use context assigned to the code system
4308* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4309* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4310* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4311* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4312* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4313* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4314* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4315* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4316* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4317* [StructureMap](structuremap.html): A use context assigned to the structure map
4318* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4319* [ValueSet](valueset.html): A use context assigned to the value set
4320</b><br>
4321   * Type: <b>token</b><br>
4322   * 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>
4323   * </p>
4324   */
4325  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
4326
4327 /**
4328   * Search parameter: <b>date</b>
4329   * <p>
4330   * Description: <b>Multiple Resources: 
4331
4332* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4333* [CodeSystem](codesystem.html): The code system publication date
4334* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4335* [ConceptMap](conceptmap.html): The concept map publication date
4336* [GraphDefinition](graphdefinition.html): The graph definition publication date
4337* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4338* [MessageDefinition](messagedefinition.html): The message definition publication date
4339* [NamingSystem](namingsystem.html): The naming system publication date
4340* [OperationDefinition](operationdefinition.html): The operation definition publication date
4341* [SearchParameter](searchparameter.html): The search parameter publication date
4342* [StructureDefinition](structuredefinition.html): The structure definition publication date
4343* [StructureMap](structuremap.html): The structure map publication date
4344* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4345* [ValueSet](valueset.html): The value set publication date
4346</b><br>
4347   * Type: <b>date</b><br>
4348   * 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>
4349   * </p>
4350   */
4351  @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" )
4352  public static final String SP_DATE = "date";
4353 /**
4354   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4355   * <p>
4356   * Description: <b>Multiple Resources: 
4357
4358* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4359* [CodeSystem](codesystem.html): The code system publication date
4360* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4361* [ConceptMap](conceptmap.html): The concept map publication date
4362* [GraphDefinition](graphdefinition.html): The graph definition publication date
4363* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4364* [MessageDefinition](messagedefinition.html): The message definition publication date
4365* [NamingSystem](namingsystem.html): The naming system publication date
4366* [OperationDefinition](operationdefinition.html): The operation definition publication date
4367* [SearchParameter](searchparameter.html): The search parameter publication date
4368* [StructureDefinition](structuredefinition.html): The structure definition publication date
4369* [StructureMap](structuremap.html): The structure map publication date
4370* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4371* [ValueSet](valueset.html): The value set publication date
4372</b><br>
4373   * Type: <b>date</b><br>
4374   * 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>
4375   * </p>
4376   */
4377  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4378
4379 /**
4380   * Search parameter: <b>description</b>
4381   * <p>
4382   * Description: <b>Multiple Resources: 
4383
4384* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4385* [CodeSystem](codesystem.html): The description of the code system
4386* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4387* [ConceptMap](conceptmap.html): The description of the concept map
4388* [GraphDefinition](graphdefinition.html): The description of the graph definition
4389* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4390* [MessageDefinition](messagedefinition.html): The description of the message definition
4391* [NamingSystem](namingsystem.html): The description of the naming system
4392* [OperationDefinition](operationdefinition.html): The description of the operation definition
4393* [SearchParameter](searchparameter.html): The description of the search parameter
4394* [StructureDefinition](structuredefinition.html): The description of the structure definition
4395* [StructureMap](structuremap.html): The description of the structure map
4396* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4397* [ValueSet](valueset.html): The description of the value set
4398</b><br>
4399   * Type: <b>string</b><br>
4400   * 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>
4401   * </p>
4402   */
4403  @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" )
4404  public static final String SP_DESCRIPTION = "description";
4405 /**
4406   * <b>Fluent Client</b> search parameter constant for <b>description</b>
4407   * <p>
4408   * Description: <b>Multiple Resources: 
4409
4410* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4411* [CodeSystem](codesystem.html): The description of the code system
4412* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4413* [ConceptMap](conceptmap.html): The description of the concept map
4414* [GraphDefinition](graphdefinition.html): The description of the graph definition
4415* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4416* [MessageDefinition](messagedefinition.html): The description of the message definition
4417* [NamingSystem](namingsystem.html): The description of the naming system
4418* [OperationDefinition](operationdefinition.html): The description of the operation definition
4419* [SearchParameter](searchparameter.html): The description of the search parameter
4420* [StructureDefinition](structuredefinition.html): The description of the structure definition
4421* [StructureMap](structuremap.html): The description of the structure map
4422* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4423* [ValueSet](valueset.html): The description of the value set
4424</b><br>
4425   * Type: <b>string</b><br>
4426   * 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>
4427   * </p>
4428   */
4429  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
4430
4431 /**
4432   * Search parameter: <b>jurisdiction</b>
4433   * <p>
4434   * Description: <b>Multiple Resources: 
4435
4436* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4437* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4438* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4439* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4440* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4441* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4442* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4443* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4444* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4445* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4446* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4447* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4448* [ValueSet](valueset.html): Intended jurisdiction for the value set
4449</b><br>
4450   * Type: <b>token</b><br>
4451   * 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>
4452   * </p>
4453   */
4454  @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" )
4455  public static final String SP_JURISDICTION = "jurisdiction";
4456 /**
4457   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
4458   * <p>
4459   * Description: <b>Multiple Resources: 
4460
4461* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4462* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4463* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4464* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4465* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4466* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4467* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4468* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4469* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4470* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4471* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4472* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4473* [ValueSet](valueset.html): Intended jurisdiction for the value set
4474</b><br>
4475   * Type: <b>token</b><br>
4476   * 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>
4477   * </p>
4478   */
4479  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
4480
4481 /**
4482   * Search parameter: <b>name</b>
4483   * <p>
4484   * Description: <b>Multiple Resources: 
4485
4486* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4487* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4488* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4489* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4490* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4491* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4492* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4493* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4494* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4495* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4496* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4497* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4498* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4499* [ValueSet](valueset.html): Computationally friendly name of the value set
4500</b><br>
4501   * Type: <b>string</b><br>
4502   * 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>
4503   * </p>
4504   */
4505  @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" )
4506  public static final String SP_NAME = "name";
4507 /**
4508   * <b>Fluent Client</b> search parameter constant for <b>name</b>
4509   * <p>
4510   * Description: <b>Multiple Resources: 
4511
4512* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4513* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4514* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4515* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4516* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4517* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4518* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4519* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4520* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4521* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4522* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4523* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4524* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4525* [ValueSet](valueset.html): Computationally friendly name of the value set
4526</b><br>
4527   * Type: <b>string</b><br>
4528   * 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>
4529   * </p>
4530   */
4531  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
4532
4533 /**
4534   * Search parameter: <b>publisher</b>
4535   * <p>
4536   * Description: <b>Multiple Resources: 
4537
4538* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4539* [CodeSystem](codesystem.html): Name of the publisher of the code system
4540* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4541* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4542* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4543* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4544* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4545* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4546* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4547* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4548* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4549* [StructureMap](structuremap.html): Name of the publisher of the structure map
4550* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4551* [ValueSet](valueset.html): Name of the publisher of the value set
4552</b><br>
4553   * Type: <b>string</b><br>
4554   * 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>
4555   * </p>
4556   */
4557  @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" )
4558  public static final String SP_PUBLISHER = "publisher";
4559 /**
4560   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
4561   * <p>
4562   * Description: <b>Multiple Resources: 
4563
4564* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4565* [CodeSystem](codesystem.html): Name of the publisher of the code system
4566* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4567* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4568* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4569* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4570* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4571* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4572* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4573* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4574* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4575* [StructureMap](structuremap.html): Name of the publisher of the structure map
4576* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4577* [ValueSet](valueset.html): Name of the publisher of the value set
4578</b><br>
4579   * Type: <b>string</b><br>
4580   * 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>
4581   * </p>
4582   */
4583  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
4584
4585 /**
4586   * Search parameter: <b>status</b>
4587   * <p>
4588   * Description: <b>Multiple Resources: 
4589
4590* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4591* [CodeSystem](codesystem.html): The current status of the code system
4592* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4593* [ConceptMap](conceptmap.html): The current status of the concept map
4594* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4595* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4596* [MessageDefinition](messagedefinition.html): The current status of the message definition
4597* [NamingSystem](namingsystem.html): The current status of the naming system
4598* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4599* [SearchParameter](searchparameter.html): The current status of the search parameter
4600* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4601* [StructureMap](structuremap.html): The current status of the structure map
4602* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4603* [ValueSet](valueset.html): The current status of the value set
4604</b><br>
4605   * Type: <b>token</b><br>
4606   * 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>
4607   * </p>
4608   */
4609  @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" )
4610  public static final String SP_STATUS = "status";
4611 /**
4612   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4613   * <p>
4614   * Description: <b>Multiple Resources: 
4615
4616* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4617* [CodeSystem](codesystem.html): The current status of the code system
4618* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4619* [ConceptMap](conceptmap.html): The current status of the concept map
4620* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4621* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4622* [MessageDefinition](messagedefinition.html): The current status of the message definition
4623* [NamingSystem](namingsystem.html): The current status of the naming system
4624* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4625* [SearchParameter](searchparameter.html): The current status of the search parameter
4626* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4627* [StructureMap](structuremap.html): The current status of the structure map
4628* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4629* [ValueSet](valueset.html): The current status of the value set
4630</b><br>
4631   * Type: <b>token</b><br>
4632   * 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>
4633   * </p>
4634   */
4635  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4636
4637 /**
4638   * Search parameter: <b>title</b>
4639   * <p>
4640   * Description: <b>Multiple Resources: 
4641
4642* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4643* [CodeSystem](codesystem.html): The human-friendly name of the code system
4644* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4645* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4646* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4647* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4648* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4649* [StructureMap](structuremap.html): The human-friendly name of the structure map
4650* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4651* [ValueSet](valueset.html): The human-friendly name of the value set
4652</b><br>
4653   * Type: <b>string</b><br>
4654   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4655   * </p>
4656   */
4657  @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" )
4658  public static final String SP_TITLE = "title";
4659 /**
4660   * <b>Fluent Client</b> search parameter constant for <b>title</b>
4661   * <p>
4662   * Description: <b>Multiple Resources: 
4663
4664* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4665* [CodeSystem](codesystem.html): The human-friendly name of the code system
4666* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4667* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4668* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4669* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4670* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4671* [StructureMap](structuremap.html): The human-friendly name of the structure map
4672* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4673* [ValueSet](valueset.html): The human-friendly name of the value set
4674</b><br>
4675   * Type: <b>string</b><br>
4676   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4677   * </p>
4678   */
4679  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
4680
4681 /**
4682   * Search parameter: <b>url</b>
4683   * <p>
4684   * Description: <b>Multiple Resources: 
4685
4686* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4687* [CodeSystem](codesystem.html): The uri that identifies the code system
4688* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4689* [ConceptMap](conceptmap.html): The uri that identifies the concept map
4690* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4691* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4692* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4693* [NamingSystem](namingsystem.html): The uri that identifies the naming system
4694* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4695* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4696* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4697* [StructureMap](structuremap.html): The uri that identifies the structure map
4698* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4699* [ValueSet](valueset.html): The uri that identifies the value set
4700</b><br>
4701   * Type: <b>uri</b><br>
4702   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
4703   * </p>
4704   */
4705  @SearchParamDefinition(name="url", path="CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.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* [NamingSystem](namingsystem.html): The uri that identifies the naming system\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" )
4706  public static final String SP_URL = "url";
4707 /**
4708   * <b>Fluent Client</b> search parameter constant for <b>url</b>
4709   * <p>
4710   * Description: <b>Multiple Resources: 
4711
4712* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4713* [CodeSystem](codesystem.html): The uri that identifies the code system
4714* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4715* [ConceptMap](conceptmap.html): The uri that identifies the concept map
4716* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4717* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4718* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4719* [NamingSystem](namingsystem.html): The uri that identifies the naming system
4720* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4721* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4722* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4723* [StructureMap](structuremap.html): The uri that identifies the structure map
4724* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4725* [ValueSet](valueset.html): The uri that identifies the value set
4726</b><br>
4727   * Type: <b>uri</b><br>
4728   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
4729   * </p>
4730   */
4731  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
4732
4733 /**
4734   * Search parameter: <b>version</b>
4735   * <p>
4736   * Description: <b>Multiple Resources: 
4737
4738* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4739* [CodeSystem](codesystem.html): The business version of the code system
4740* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4741* [ConceptMap](conceptmap.html): The business version of the concept map
4742* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4743* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4744* [MessageDefinition](messagedefinition.html): The business version of the message definition
4745* [NamingSystem](namingsystem.html): The business version of the naming system
4746* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4747* [SearchParameter](searchparameter.html): The business version of the search parameter
4748* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4749* [StructureMap](structuremap.html): The business version of the structure map
4750* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4751* [ValueSet](valueset.html): The business version of the value set
4752</b><br>
4753   * Type: <b>token</b><br>
4754   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
4755   * </p>
4756   */
4757  @SearchParamDefinition(name="version", path="CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.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* [NamingSystem](namingsystem.html): The business version of the naming system\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" )
4758  public static final String SP_VERSION = "version";
4759 /**
4760   * <b>Fluent Client</b> search parameter constant for <b>version</b>
4761   * <p>
4762   * Description: <b>Multiple Resources: 
4763
4764* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4765* [CodeSystem](codesystem.html): The business version of the code system
4766* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4767* [ConceptMap](conceptmap.html): The business version of the concept map
4768* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4769* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4770* [MessageDefinition](messagedefinition.html): The business version of the message definition
4771* [NamingSystem](namingsystem.html): The business version of the naming system
4772* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4773* [SearchParameter](searchparameter.html): The business version of the search parameter
4774* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4775* [StructureMap](structuremap.html): The business version of the structure map
4776* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4777* [ValueSet](valueset.html): The business version of the value set
4778</b><br>
4779   * Type: <b>token</b><br>
4780   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
4781   * </p>
4782   */
4783  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
4784
4785// Manual code (from Configuration.txt):
4786  public boolean supportsCopyright() {
4787    return false;
4788  }
4789
4790// end addition
4791
4792}
4793