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