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 13, 2022 17:53+1100 for FHIR vcurrent
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 ValueSet resource instance specifies a set of codes drawn from one or more code systems, intended for use in a particular context. Value sets link between [[[CodeSystem]]] definitions and their use in [coded elements](terminologies.html).
052 */
053@ResourceDef(name="ValueSet", profile="http://hl7.org/fhir/StructureDefinition/ValueSet")
054public class ValueSet extends MetadataResource {
055
056    @Block()
057    public static class ValueSetComposeComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version.
060         */
061        @Child(name = "lockedDate", type = {DateType.class}, order=1, min=0, max=1, modifier=false, summary=true)
062        @Description(shortDefinition="Fixed date for references with no specified version (transitive)", formalDefinition="The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version." )
063        protected DateType lockedDate;
064
065        /**
066         * Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included).
067         */
068        @Child(name = "inactive", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=true)
069        @Description(shortDefinition="Whether inactive codes are in the value set", formalDefinition="Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included)." )
070        protected BooleanType inactive;
071
072        /**
073         * Include one or more codes from a code system or other value set(s).
074         */
075        @Child(name = "include", type = {}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
076        @Description(shortDefinition="Include one or more codes from a code system or other value set(s)", formalDefinition="Include one or more codes from a code system or other value set(s)." )
077        protected List<ConceptSetComponent> include;
078
079        /**
080         * Exclude one or more codes from the value set based on code system filters and/or other value sets.
081         */
082        @Child(name = "exclude", type = {ConceptSetComponent.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
083        @Description(shortDefinition="Explicitly exclude codes from a code system or other value sets", formalDefinition="Exclude one or more codes from the value set based on code system filters and/or other value sets." )
084        protected List<ConceptSetComponent> exclude;
085
086        /**
087         * A property to return in the expansion, if the client doesn't ask for any particular properties. May be either a code from the code system definition (convenient) or a the formal URI that refers to the property. The special value '*' means all properties known to the server.
088         */
089        @Child(name = "property", type = {StringType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
090        @Description(shortDefinition="Property to return if client doesn't override", formalDefinition="A property to return in the expansion, if the client doesn't ask for any particular properties. May be either a code from the code system definition (convenient) or a the formal URI that refers to the property. The special value '*' means all properties known to the server." )
091        protected List<StringType> property;
092
093        private static final long serialVersionUID = -15414259L;
094
095    /**
096     * Constructor
097     */
098      public ValueSetComposeComponent() {
099        super();
100      }
101
102    /**
103     * Constructor
104     */
105      public ValueSetComposeComponent(ConceptSetComponent include) {
106        super();
107        this.addInclude(include);
108      }
109
110        /**
111         * @return {@link #lockedDate} (The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version.). This is the underlying object with id, value and extensions. The accessor "getLockedDate" gives direct access to the value
112         */
113        public DateType getLockedDateElement() { 
114          if (this.lockedDate == null)
115            if (Configuration.errorOnAutoCreate())
116              throw new Error("Attempt to auto-create ValueSetComposeComponent.lockedDate");
117            else if (Configuration.doAutoCreate())
118              this.lockedDate = new DateType(); // bb
119          return this.lockedDate;
120        }
121
122        public boolean hasLockedDateElement() { 
123          return this.lockedDate != null && !this.lockedDate.isEmpty();
124        }
125
126        public boolean hasLockedDate() { 
127          return this.lockedDate != null && !this.lockedDate.isEmpty();
128        }
129
130        /**
131         * @param value {@link #lockedDate} (The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version.). This is the underlying object with id, value and extensions. The accessor "getLockedDate" gives direct access to the value
132         */
133        public ValueSetComposeComponent setLockedDateElement(DateType value) { 
134          this.lockedDate = value;
135          return this;
136        }
137
138        /**
139         * @return The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version.
140         */
141        public Date getLockedDate() { 
142          return this.lockedDate == null ? null : this.lockedDate.getValue();
143        }
144
145        /**
146         * @param value The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version.
147         */
148        public ValueSetComposeComponent setLockedDate(Date value) { 
149          if (value == null)
150            this.lockedDate = null;
151          else {
152            if (this.lockedDate == null)
153              this.lockedDate = new DateType();
154            this.lockedDate.setValue(value);
155          }
156          return this;
157        }
158
159        /**
160         * @return {@link #inactive} (Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included).). This is the underlying object with id, value and extensions. The accessor "getInactive" gives direct access to the value
161         */
162        public BooleanType getInactiveElement() { 
163          if (this.inactive == null)
164            if (Configuration.errorOnAutoCreate())
165              throw new Error("Attempt to auto-create ValueSetComposeComponent.inactive");
166            else if (Configuration.doAutoCreate())
167              this.inactive = new BooleanType(); // bb
168          return this.inactive;
169        }
170
171        public boolean hasInactiveElement() { 
172          return this.inactive != null && !this.inactive.isEmpty();
173        }
174
175        public boolean hasInactive() { 
176          return this.inactive != null && !this.inactive.isEmpty();
177        }
178
179        /**
180         * @param value {@link #inactive} (Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included).). This is the underlying object with id, value and extensions. The accessor "getInactive" gives direct access to the value
181         */
182        public ValueSetComposeComponent setInactiveElement(BooleanType value) { 
183          this.inactive = value;
184          return this;
185        }
186
187        /**
188         * @return Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included).
189         */
190        public boolean getInactive() { 
191          return this.inactive == null || this.inactive.isEmpty() ? false : this.inactive.getValue();
192        }
193
194        /**
195         * @param value Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included).
196         */
197        public ValueSetComposeComponent setInactive(boolean value) { 
198            if (this.inactive == null)
199              this.inactive = new BooleanType();
200            this.inactive.setValue(value);
201          return this;
202        }
203
204        /**
205         * @return {@link #include} (Include one or more codes from a code system or other value set(s).)
206         */
207        public List<ConceptSetComponent> getInclude() { 
208          if (this.include == null)
209            this.include = new ArrayList<ConceptSetComponent>();
210          return this.include;
211        }
212
213        /**
214         * @return Returns a reference to <code>this</code> for easy method chaining
215         */
216        public ValueSetComposeComponent setInclude(List<ConceptSetComponent> theInclude) { 
217          this.include = theInclude;
218          return this;
219        }
220
221        public boolean hasInclude() { 
222          if (this.include == null)
223            return false;
224          for (ConceptSetComponent item : this.include)
225            if (!item.isEmpty())
226              return true;
227          return false;
228        }
229
230        public ConceptSetComponent addInclude() { //3
231          ConceptSetComponent t = new ConceptSetComponent();
232          if (this.include == null)
233            this.include = new ArrayList<ConceptSetComponent>();
234          this.include.add(t);
235          return t;
236        }
237
238        public ValueSetComposeComponent addInclude(ConceptSetComponent t) { //3
239          if (t == null)
240            return this;
241          if (this.include == null)
242            this.include = new ArrayList<ConceptSetComponent>();
243          this.include.add(t);
244          return this;
245        }
246
247        /**
248         * @return The first repetition of repeating field {@link #include}, creating it if it does not already exist {3}
249         */
250        public ConceptSetComponent getIncludeFirstRep() { 
251          if (getInclude().isEmpty()) {
252            addInclude();
253          }
254          return getInclude().get(0);
255        }
256
257        /**
258         * @return {@link #exclude} (Exclude one or more codes from the value set based on code system filters and/or other value sets.)
259         */
260        public List<ConceptSetComponent> getExclude() { 
261          if (this.exclude == null)
262            this.exclude = new ArrayList<ConceptSetComponent>();
263          return this.exclude;
264        }
265
266        /**
267         * @return Returns a reference to <code>this</code> for easy method chaining
268         */
269        public ValueSetComposeComponent setExclude(List<ConceptSetComponent> theExclude) { 
270          this.exclude = theExclude;
271          return this;
272        }
273
274        public boolean hasExclude() { 
275          if (this.exclude == null)
276            return false;
277          for (ConceptSetComponent item : this.exclude)
278            if (!item.isEmpty())
279              return true;
280          return false;
281        }
282
283        public ConceptSetComponent addExclude() { //3
284          ConceptSetComponent t = new ConceptSetComponent();
285          if (this.exclude == null)
286            this.exclude = new ArrayList<ConceptSetComponent>();
287          this.exclude.add(t);
288          return t;
289        }
290
291        public ValueSetComposeComponent addExclude(ConceptSetComponent t) { //3
292          if (t == null)
293            return this;
294          if (this.exclude == null)
295            this.exclude = new ArrayList<ConceptSetComponent>();
296          this.exclude.add(t);
297          return this;
298        }
299
300        /**
301         * @return The first repetition of repeating field {@link #exclude}, creating it if it does not already exist {3}
302         */
303        public ConceptSetComponent getExcludeFirstRep() { 
304          if (getExclude().isEmpty()) {
305            addExclude();
306          }
307          return getExclude().get(0);
308        }
309
310        /**
311         * @return {@link #property} (A property to return in the expansion, if the client doesn't ask for any particular properties. May be either a code from the code system definition (convenient) or a the formal URI that refers to the property. The special value '*' means all properties known to the server.)
312         */
313        public List<StringType> getProperty() { 
314          if (this.property == null)
315            this.property = new ArrayList<StringType>();
316          return this.property;
317        }
318
319        /**
320         * @return Returns a reference to <code>this</code> for easy method chaining
321         */
322        public ValueSetComposeComponent setProperty(List<StringType> theProperty) { 
323          this.property = theProperty;
324          return this;
325        }
326
327        public boolean hasProperty() { 
328          if (this.property == null)
329            return false;
330          for (StringType item : this.property)
331            if (!item.isEmpty())
332              return true;
333          return false;
334        }
335
336        /**
337         * @return {@link #property} (A property to return in the expansion, if the client doesn't ask for any particular properties. May be either a code from the code system definition (convenient) or a the formal URI that refers to the property. The special value '*' means all properties known to the server.)
338         */
339        public StringType addPropertyElement() {//2 
340          StringType t = new StringType();
341          if (this.property == null)
342            this.property = new ArrayList<StringType>();
343          this.property.add(t);
344          return t;
345        }
346
347        /**
348         * @param value {@link #property} (A property to return in the expansion, if the client doesn't ask for any particular properties. May be either a code from the code system definition (convenient) or a the formal URI that refers to the property. The special value '*' means all properties known to the server.)
349         */
350        public ValueSetComposeComponent addProperty(String value) { //1
351          StringType t = new StringType();
352          t.setValue(value);
353          if (this.property == null)
354            this.property = new ArrayList<StringType>();
355          this.property.add(t);
356          return this;
357        }
358
359        /**
360         * @param value {@link #property} (A property to return in the expansion, if the client doesn't ask for any particular properties. May be either a code from the code system definition (convenient) or a the formal URI that refers to the property. The special value '*' means all properties known to the server.)
361         */
362        public boolean hasProperty(String value) { 
363          if (this.property == null)
364            return false;
365          for (StringType v : this.property)
366            if (v.getValue().equals(value)) // string
367              return true;
368          return false;
369        }
370
371        protected void listChildren(List<Property> children) {
372          super.listChildren(children);
373          children.add(new Property("lockedDate", "date", "The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version.", 0, 1, lockedDate));
374          children.add(new Property("inactive", "boolean", "Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included).", 0, 1, inactive));
375          children.add(new Property("include", "", "Include one or more codes from a code system or other value set(s).", 0, java.lang.Integer.MAX_VALUE, include));
376          children.add(new Property("exclude", "@ValueSet.compose.include", "Exclude one or more codes from the value set based on code system filters and/or other value sets.", 0, java.lang.Integer.MAX_VALUE, exclude));
377          children.add(new Property("property", "string", "A property to return in the expansion, if the client doesn't ask for any particular properties. May be either a code from the code system definition (convenient) or a the formal URI that refers to the property. The special value '*' means all properties known to the server.", 0, java.lang.Integer.MAX_VALUE, property));
378        }
379
380        @Override
381        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
382          switch (_hash) {
383          case 1391591896: /*lockedDate*/  return new Property("lockedDate", "date", "The Locked Date is  the effective date that is used to determine the version of all referenced Code Systems and Value Set Definitions included in the compose that are not already tied to a specific version.", 0, 1, lockedDate);
384          case 24665195: /*inactive*/  return new Property("inactive", "boolean", "Whether inactive codes - codes that are not approved for current use - are in the value set. If inactive = true, inactive codes are to be included in the expansion, if inactive = false, the inactive codes will not be included in the expansion. If absent, the behavior is determined by the implementation, or by the applicable $expand parameters (but generally, inactive codes would be expected to be included).", 0, 1, inactive);
385          case 1942574248: /*include*/  return new Property("include", "", "Include one or more codes from a code system or other value set(s).", 0, java.lang.Integer.MAX_VALUE, include);
386          case -1321148966: /*exclude*/  return new Property("exclude", "@ValueSet.compose.include", "Exclude one or more codes from the value set based on code system filters and/or other value sets.", 0, java.lang.Integer.MAX_VALUE, exclude);
387          case -993141291: /*property*/  return new Property("property", "string", "A property to return in the expansion, if the client doesn't ask for any particular properties. May be either a code from the code system definition (convenient) or a the formal URI that refers to the property. The special value '*' means all properties known to the server.", 0, java.lang.Integer.MAX_VALUE, property);
388          default: return super.getNamedProperty(_hash, _name, _checkValid);
389          }
390
391        }
392
393      @Override
394      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
395        switch (hash) {
396        case 1391591896: /*lockedDate*/ return this.lockedDate == null ? new Base[0] : new Base[] {this.lockedDate}; // DateType
397        case 24665195: /*inactive*/ return this.inactive == null ? new Base[0] : new Base[] {this.inactive}; // BooleanType
398        case 1942574248: /*include*/ return this.include == null ? new Base[0] : this.include.toArray(new Base[this.include.size()]); // ConceptSetComponent
399        case -1321148966: /*exclude*/ return this.exclude == null ? new Base[0] : this.exclude.toArray(new Base[this.exclude.size()]); // ConceptSetComponent
400        case -993141291: /*property*/ return this.property == null ? new Base[0] : this.property.toArray(new Base[this.property.size()]); // StringType
401        default: return super.getProperty(hash, name, checkValid);
402        }
403
404      }
405
406      @Override
407      public Base setProperty(int hash, String name, Base value) throws FHIRException {
408        switch (hash) {
409        case 1391591896: // lockedDate
410          this.lockedDate = TypeConvertor.castToDate(value); // DateType
411          return value;
412        case 24665195: // inactive
413          this.inactive = TypeConvertor.castToBoolean(value); // BooleanType
414          return value;
415        case 1942574248: // include
416          this.getInclude().add((ConceptSetComponent) value); // ConceptSetComponent
417          return value;
418        case -1321148966: // exclude
419          this.getExclude().add((ConceptSetComponent) value); // ConceptSetComponent
420          return value;
421        case -993141291: // property
422          this.getProperty().add(TypeConvertor.castToString(value)); // StringType
423          return value;
424        default: return super.setProperty(hash, name, value);
425        }
426
427      }
428
429      @Override
430      public Base setProperty(String name, Base value) throws FHIRException {
431        if (name.equals("lockedDate")) {
432          this.lockedDate = TypeConvertor.castToDate(value); // DateType
433        } else if (name.equals("inactive")) {
434          this.inactive = TypeConvertor.castToBoolean(value); // BooleanType
435        } else if (name.equals("include")) {
436          this.getInclude().add((ConceptSetComponent) value);
437        } else if (name.equals("exclude")) {
438          this.getExclude().add((ConceptSetComponent) value);
439        } else if (name.equals("property")) {
440          this.getProperty().add(TypeConvertor.castToString(value));
441        } else
442          return super.setProperty(name, value);
443        return value;
444      }
445
446      @Override
447      public Base makeProperty(int hash, String name) throws FHIRException {
448        switch (hash) {
449        case 1391591896:  return getLockedDateElement();
450        case 24665195:  return getInactiveElement();
451        case 1942574248:  return addInclude(); 
452        case -1321148966:  return addExclude(); 
453        case -993141291:  return addPropertyElement();
454        default: return super.makeProperty(hash, name);
455        }
456
457      }
458
459      @Override
460      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
461        switch (hash) {
462        case 1391591896: /*lockedDate*/ return new String[] {"date"};
463        case 24665195: /*inactive*/ return new String[] {"boolean"};
464        case 1942574248: /*include*/ return new String[] {};
465        case -1321148966: /*exclude*/ return new String[] {"@ValueSet.compose.include"};
466        case -993141291: /*property*/ return new String[] {"string"};
467        default: return super.getTypesForProperty(hash, name);
468        }
469
470      }
471
472      @Override
473      public Base addChild(String name) throws FHIRException {
474        if (name.equals("lockedDate")) {
475          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.lockedDate");
476        }
477        else if (name.equals("inactive")) {
478          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.inactive");
479        }
480        else if (name.equals("include")) {
481          return addInclude();
482        }
483        else if (name.equals("exclude")) {
484          return addExclude();
485        }
486        else if (name.equals("property")) {
487          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.property");
488        }
489        else
490          return super.addChild(name);
491      }
492
493      public ValueSetComposeComponent copy() {
494        ValueSetComposeComponent dst = new ValueSetComposeComponent();
495        copyValues(dst);
496        return dst;
497      }
498
499      public void copyValues(ValueSetComposeComponent dst) {
500        super.copyValues(dst);
501        dst.lockedDate = lockedDate == null ? null : lockedDate.copy();
502        dst.inactive = inactive == null ? null : inactive.copy();
503        if (include != null) {
504          dst.include = new ArrayList<ConceptSetComponent>();
505          for (ConceptSetComponent i : include)
506            dst.include.add(i.copy());
507        };
508        if (exclude != null) {
509          dst.exclude = new ArrayList<ConceptSetComponent>();
510          for (ConceptSetComponent i : exclude)
511            dst.exclude.add(i.copy());
512        };
513        if (property != null) {
514          dst.property = new ArrayList<StringType>();
515          for (StringType i : property)
516            dst.property.add(i.copy());
517        };
518      }
519
520      @Override
521      public boolean equalsDeep(Base other_) {
522        if (!super.equalsDeep(other_))
523          return false;
524        if (!(other_ instanceof ValueSetComposeComponent))
525          return false;
526        ValueSetComposeComponent o = (ValueSetComposeComponent) other_;
527        return compareDeep(lockedDate, o.lockedDate, true) && compareDeep(inactive, o.inactive, true) && compareDeep(include, o.include, true)
528           && compareDeep(exclude, o.exclude, true) && compareDeep(property, o.property, true);
529      }
530
531      @Override
532      public boolean equalsShallow(Base other_) {
533        if (!super.equalsShallow(other_))
534          return false;
535        if (!(other_ instanceof ValueSetComposeComponent))
536          return false;
537        ValueSetComposeComponent o = (ValueSetComposeComponent) other_;
538        return compareValues(lockedDate, o.lockedDate, true) && compareValues(inactive, o.inactive, true) && compareValues(property, o.property, true)
539          ;
540      }
541
542      public boolean isEmpty() {
543        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(lockedDate, inactive, include
544          , exclude, property);
545      }
546
547  public String fhirType() {
548    return "ValueSet.compose";
549
550  }
551
552  }
553
554    @Block()
555    public static class ConceptSetComponent extends BackboneElement implements IBaseBackboneElement {
556        /**
557         * An absolute URI which is the code system from which the selected codes come from.
558         */
559        @Child(name = "system", type = {UriType.class}, order=1, min=0, max=1, modifier=false, summary=true)
560        @Description(shortDefinition="The system the codes come from", formalDefinition="An absolute URI which is the code system from which the selected codes come from." )
561        protected UriType system;
562
563        /**
564         * The version of the code system that the codes are selected from, or the special version '*' for all versions.
565         */
566        @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
567        @Description(shortDefinition="Specific version of the code system referred to", formalDefinition="The version of the code system that the codes are selected from, or the special version '*' for all versions." )
568        protected StringType version;
569
570        /**
571         * Specifies a concept to be included or excluded.
572         */
573        @Child(name = "concept", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
574        @Description(shortDefinition="A concept defined in the system", formalDefinition="Specifies a concept to be included or excluded." )
575        protected List<ConceptReferenceComponent> concept;
576
577        /**
578         * Select concepts by specifying a matching criterion based on the properties (including relationships) defined by the system, or on filters defined by the system. If multiple filters are specified within the include, they SHALL all be true.
579         */
580        @Child(name = "filter", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
581        @Description(shortDefinition="Select codes/concepts by their properties (including relationships)", formalDefinition="Select concepts by specifying a matching criterion based on the properties (including relationships) defined by the system, or on filters defined by the system. If multiple filters are specified within the include, they SHALL all be true." )
582        protected List<ConceptSetFilterComponent> filter;
583
584        /**
585         * Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the intersection of the contents of all of the referenced value sets.
586         */
587        @Child(name = "valueSet", type = {CanonicalType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
588        @Description(shortDefinition="Select the contents included in this value set", formalDefinition="Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the intersection of the contents of all of the referenced value sets." )
589        protected List<CanonicalType> valueSet;
590
591        /**
592         * A copyright statement for the specific code system asserted by the containing ValueSet.compose.include element's system value (if the associated ValueSet.compose.include.version element is not present); or the code system and version combination (if the associated ValueSet.compose.include.version element is present).
593         */
594        @Child(name = "copyright", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
595        @Description(shortDefinition="A copyright statement for the specific code system included in the value set", formalDefinition="A copyright statement for the specific code system asserted by the containing ValueSet.compose.include element's system value (if the associated ValueSet.compose.include.version element is not present); or the code system and version combination (if the associated ValueSet.compose.include.version element is present)." )
596        protected StringType copyright;
597
598        private static final long serialVersionUID = -517139062L;
599
600    /**
601     * Constructor
602     */
603      public ConceptSetComponent() {
604        super();
605      }
606
607        /**
608         * @return {@link #system} (An absolute URI which is the code system from which the selected codes come from.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
609         */
610        public UriType getSystemElement() { 
611          if (this.system == null)
612            if (Configuration.errorOnAutoCreate())
613              throw new Error("Attempt to auto-create ConceptSetComponent.system");
614            else if (Configuration.doAutoCreate())
615              this.system = new UriType(); // bb
616          return this.system;
617        }
618
619        public boolean hasSystemElement() { 
620          return this.system != null && !this.system.isEmpty();
621        }
622
623        public boolean hasSystem() { 
624          return this.system != null && !this.system.isEmpty();
625        }
626
627        /**
628         * @param value {@link #system} (An absolute URI which is the code system from which the selected codes come from.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
629         */
630        public ConceptSetComponent setSystemElement(UriType value) { 
631          this.system = value;
632          return this;
633        }
634
635        /**
636         * @return An absolute URI which is the code system from which the selected codes come from.
637         */
638        public String getSystem() { 
639          return this.system == null ? null : this.system.getValue();
640        }
641
642        /**
643         * @param value An absolute URI which is the code system from which the selected codes come from.
644         */
645        public ConceptSetComponent setSystem(String value) { 
646          if (Utilities.noString(value))
647            this.system = null;
648          else {
649            if (this.system == null)
650              this.system = new UriType();
651            this.system.setValue(value);
652          }
653          return this;
654        }
655
656        /**
657         * @return {@link #version} (The version of the code system that the codes are selected from, or the special version '*' for all versions.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
658         */
659        public StringType getVersionElement() { 
660          if (this.version == null)
661            if (Configuration.errorOnAutoCreate())
662              throw new Error("Attempt to auto-create ConceptSetComponent.version");
663            else if (Configuration.doAutoCreate())
664              this.version = new StringType(); // bb
665          return this.version;
666        }
667
668        public boolean hasVersionElement() { 
669          return this.version != null && !this.version.isEmpty();
670        }
671
672        public boolean hasVersion() { 
673          return this.version != null && !this.version.isEmpty();
674        }
675
676        /**
677         * @param value {@link #version} (The version of the code system that the codes are selected from, or the special version '*' for all versions.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
678         */
679        public ConceptSetComponent setVersionElement(StringType value) { 
680          this.version = value;
681          return this;
682        }
683
684        /**
685         * @return The version of the code system that the codes are selected from, or the special version '*' for all versions.
686         */
687        public String getVersion() { 
688          return this.version == null ? null : this.version.getValue();
689        }
690
691        /**
692         * @param value The version of the code system that the codes are selected from, or the special version '*' for all versions.
693         */
694        public ConceptSetComponent setVersion(String value) { 
695          if (Utilities.noString(value))
696            this.version = null;
697          else {
698            if (this.version == null)
699              this.version = new StringType();
700            this.version.setValue(value);
701          }
702          return this;
703        }
704
705        /**
706         * @return {@link #concept} (Specifies a concept to be included or excluded.)
707         */
708        public List<ConceptReferenceComponent> getConcept() { 
709          if (this.concept == null)
710            this.concept = new ArrayList<ConceptReferenceComponent>();
711          return this.concept;
712        }
713
714        /**
715         * @return Returns a reference to <code>this</code> for easy method chaining
716         */
717        public ConceptSetComponent setConcept(List<ConceptReferenceComponent> theConcept) { 
718          this.concept = theConcept;
719          return this;
720        }
721
722        public boolean hasConcept() { 
723          if (this.concept == null)
724            return false;
725          for (ConceptReferenceComponent item : this.concept)
726            if (!item.isEmpty())
727              return true;
728          return false;
729        }
730
731        public ConceptReferenceComponent addConcept() { //3
732          ConceptReferenceComponent t = new ConceptReferenceComponent();
733          if (this.concept == null)
734            this.concept = new ArrayList<ConceptReferenceComponent>();
735          this.concept.add(t);
736          return t;
737        }
738
739        public ConceptSetComponent addConcept(ConceptReferenceComponent t) { //3
740          if (t == null)
741            return this;
742          if (this.concept == null)
743            this.concept = new ArrayList<ConceptReferenceComponent>();
744          this.concept.add(t);
745          return this;
746        }
747
748        /**
749         * @return The first repetition of repeating field {@link #concept}, creating it if it does not already exist {3}
750         */
751        public ConceptReferenceComponent getConceptFirstRep() { 
752          if (getConcept().isEmpty()) {
753            addConcept();
754          }
755          return getConcept().get(0);
756        }
757
758        /**
759         * @return {@link #filter} (Select concepts by specifying a matching criterion based on the properties (including relationships) defined by the system, or on filters defined by the system. If multiple filters are specified within the include, they SHALL all be true.)
760         */
761        public List<ConceptSetFilterComponent> getFilter() { 
762          if (this.filter == null)
763            this.filter = new ArrayList<ConceptSetFilterComponent>();
764          return this.filter;
765        }
766
767        /**
768         * @return Returns a reference to <code>this</code> for easy method chaining
769         */
770        public ConceptSetComponent setFilter(List<ConceptSetFilterComponent> theFilter) { 
771          this.filter = theFilter;
772          return this;
773        }
774
775        public boolean hasFilter() { 
776          if (this.filter == null)
777            return false;
778          for (ConceptSetFilterComponent item : this.filter)
779            if (!item.isEmpty())
780              return true;
781          return false;
782        }
783
784        public ConceptSetFilterComponent addFilter() { //3
785          ConceptSetFilterComponent t = new ConceptSetFilterComponent();
786          if (this.filter == null)
787            this.filter = new ArrayList<ConceptSetFilterComponent>();
788          this.filter.add(t);
789          return t;
790        }
791
792        public ConceptSetComponent addFilter(ConceptSetFilterComponent t) { //3
793          if (t == null)
794            return this;
795          if (this.filter == null)
796            this.filter = new ArrayList<ConceptSetFilterComponent>();
797          this.filter.add(t);
798          return this;
799        }
800
801        /**
802         * @return The first repetition of repeating field {@link #filter}, creating it if it does not already exist {3}
803         */
804        public ConceptSetFilterComponent getFilterFirstRep() { 
805          if (getFilter().isEmpty()) {
806            addFilter();
807          }
808          return getFilter().get(0);
809        }
810
811        /**
812         * @return {@link #valueSet} (Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the intersection of the contents of all of the referenced value sets.)
813         */
814        public List<CanonicalType> getValueSet() { 
815          if (this.valueSet == null)
816            this.valueSet = new ArrayList<CanonicalType>();
817          return this.valueSet;
818        }
819
820        /**
821         * @return Returns a reference to <code>this</code> for easy method chaining
822         */
823        public ConceptSetComponent setValueSet(List<CanonicalType> theValueSet) { 
824          this.valueSet = theValueSet;
825          return this;
826        }
827
828        public boolean hasValueSet() { 
829          if (this.valueSet == null)
830            return false;
831          for (CanonicalType item : this.valueSet)
832            if (!item.isEmpty())
833              return true;
834          return false;
835        }
836
837        /**
838         * @return {@link #valueSet} (Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the intersection of the contents of all of the referenced value sets.)
839         */
840        public CanonicalType addValueSetElement() {//2 
841          CanonicalType t = new CanonicalType();
842          if (this.valueSet == null)
843            this.valueSet = new ArrayList<CanonicalType>();
844          this.valueSet.add(t);
845          return t;
846        }
847
848        /**
849         * @param value {@link #valueSet} (Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the intersection of the contents of all of the referenced value sets.)
850         */
851        public ConceptSetComponent addValueSet(String value) { //1
852          CanonicalType t = new CanonicalType();
853          t.setValue(value);
854          if (this.valueSet == null)
855            this.valueSet = new ArrayList<CanonicalType>();
856          this.valueSet.add(t);
857          return this;
858        }
859
860        /**
861         * @param value {@link #valueSet} (Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the intersection of the contents of all of the referenced value sets.)
862         */
863        public boolean hasValueSet(String value) { 
864          if (this.valueSet == null)
865            return false;
866          for (CanonicalType v : this.valueSet)
867            if (v.getValue().equals(value)) // canonical
868              return true;
869          return false;
870        }
871
872        /**
873         * @return {@link #copyright} (A copyright statement for the specific code system asserted by the containing ValueSet.compose.include element's system value (if the associated ValueSet.compose.include.version element is not present); or the code system and version combination (if the associated ValueSet.compose.include.version element is present).). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
874         */
875        public StringType getCopyrightElement() { 
876          if (this.copyright == null)
877            if (Configuration.errorOnAutoCreate())
878              throw new Error("Attempt to auto-create ConceptSetComponent.copyright");
879            else if (Configuration.doAutoCreate())
880              this.copyright = new StringType(); // bb
881          return this.copyright;
882        }
883
884        public boolean hasCopyrightElement() { 
885          return this.copyright != null && !this.copyright.isEmpty();
886        }
887
888        public boolean hasCopyright() { 
889          return this.copyright != null && !this.copyright.isEmpty();
890        }
891
892        /**
893         * @param value {@link #copyright} (A copyright statement for the specific code system asserted by the containing ValueSet.compose.include element's system value (if the associated ValueSet.compose.include.version element is not present); or the code system and version combination (if the associated ValueSet.compose.include.version element is present).). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
894         */
895        public ConceptSetComponent setCopyrightElement(StringType value) { 
896          this.copyright = value;
897          return this;
898        }
899
900        /**
901         * @return A copyright statement for the specific code system asserted by the containing ValueSet.compose.include element's system value (if the associated ValueSet.compose.include.version element is not present); or the code system and version combination (if the associated ValueSet.compose.include.version element is present).
902         */
903        public String getCopyright() { 
904          return this.copyright == null ? null : this.copyright.getValue();
905        }
906
907        /**
908         * @param value A copyright statement for the specific code system asserted by the containing ValueSet.compose.include element's system value (if the associated ValueSet.compose.include.version element is not present); or the code system and version combination (if the associated ValueSet.compose.include.version element is present).
909         */
910        public ConceptSetComponent setCopyright(String value) { 
911          if (Utilities.noString(value))
912            this.copyright = null;
913          else {
914            if (this.copyright == null)
915              this.copyright = new StringType();
916            this.copyright.setValue(value);
917          }
918          return this;
919        }
920
921        protected void listChildren(List<Property> children) {
922          super.listChildren(children);
923          children.add(new Property("system", "uri", "An absolute URI which is the code system from which the selected codes come from.", 0, 1, system));
924          children.add(new Property("version", "string", "The version of the code system that the codes are selected from, or the special version '*' for all versions.", 0, 1, version));
925          children.add(new Property("concept", "", "Specifies a concept to be included or excluded.", 0, java.lang.Integer.MAX_VALUE, concept));
926          children.add(new Property("filter", "", "Select concepts by specifying a matching criterion based on the properties (including relationships) defined by the system, or on filters defined by the system. If multiple filters are specified within the include, they SHALL all be true.", 0, java.lang.Integer.MAX_VALUE, filter));
927          children.add(new Property("valueSet", "canonical(ValueSet)", "Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the intersection of the contents of all of the referenced value sets.", 0, java.lang.Integer.MAX_VALUE, valueSet));
928          children.add(new Property("copyright", "string", "A copyright statement for the specific code system asserted by the containing ValueSet.compose.include element's system value (if the associated ValueSet.compose.include.version element is not present); or the code system and version combination (if the associated ValueSet.compose.include.version element is present).", 0, 1, copyright));
929        }
930
931        @Override
932        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
933          switch (_hash) {
934          case -887328209: /*system*/  return new Property("system", "uri", "An absolute URI which is the code system from which the selected codes come from.", 0, 1, system);
935          case 351608024: /*version*/  return new Property("version", "string", "The version of the code system that the codes are selected from, or the special version '*' for all versions.", 0, 1, version);
936          case 951024232: /*concept*/  return new Property("concept", "", "Specifies a concept to be included or excluded.", 0, java.lang.Integer.MAX_VALUE, concept);
937          case -1274492040: /*filter*/  return new Property("filter", "", "Select concepts by specifying a matching criterion based on the properties (including relationships) defined by the system, or on filters defined by the system. If multiple filters are specified within the include, they SHALL all be true.", 0, java.lang.Integer.MAX_VALUE, filter);
938          case -1410174671: /*valueSet*/  return new Property("valueSet", "canonical(ValueSet)", "Selects the concepts found in this value set (based on its value set definition). This is an absolute URI that is a reference to ValueSet.url.  If multiple value sets are specified this includes the intersection of the contents of all of the referenced value sets.", 0, java.lang.Integer.MAX_VALUE, valueSet);
939          case 1522889671: /*copyright*/  return new Property("copyright", "string", "A copyright statement for the specific code system asserted by the containing ValueSet.compose.include element's system value (if the associated ValueSet.compose.include.version element is not present); or the code system and version combination (if the associated ValueSet.compose.include.version element is present).", 0, 1, copyright);
940          default: return super.getNamedProperty(_hash, _name, _checkValid);
941          }
942
943        }
944
945      @Override
946      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
947        switch (hash) {
948        case -887328209: /*system*/ return this.system == null ? new Base[0] : new Base[] {this.system}; // UriType
949        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
950        case 951024232: /*concept*/ return this.concept == null ? new Base[0] : this.concept.toArray(new Base[this.concept.size()]); // ConceptReferenceComponent
951        case -1274492040: /*filter*/ return this.filter == null ? new Base[0] : this.filter.toArray(new Base[this.filter.size()]); // ConceptSetFilterComponent
952        case -1410174671: /*valueSet*/ return this.valueSet == null ? new Base[0] : this.valueSet.toArray(new Base[this.valueSet.size()]); // CanonicalType
953        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // StringType
954        default: return super.getProperty(hash, name, checkValid);
955        }
956
957      }
958
959      @Override
960      public Base setProperty(int hash, String name, Base value) throws FHIRException {
961        switch (hash) {
962        case -887328209: // system
963          this.system = TypeConvertor.castToUri(value); // UriType
964          return value;
965        case 351608024: // version
966          this.version = TypeConvertor.castToString(value); // StringType
967          return value;
968        case 951024232: // concept
969          this.getConcept().add((ConceptReferenceComponent) value); // ConceptReferenceComponent
970          return value;
971        case -1274492040: // filter
972          this.getFilter().add((ConceptSetFilterComponent) value); // ConceptSetFilterComponent
973          return value;
974        case -1410174671: // valueSet
975          this.getValueSet().add(TypeConvertor.castToCanonical(value)); // CanonicalType
976          return value;
977        case 1522889671: // copyright
978          this.copyright = TypeConvertor.castToString(value); // StringType
979          return value;
980        default: return super.setProperty(hash, name, value);
981        }
982
983      }
984
985      @Override
986      public Base setProperty(String name, Base value) throws FHIRException {
987        if (name.equals("system")) {
988          this.system = TypeConvertor.castToUri(value); // UriType
989        } else if (name.equals("version")) {
990          this.version = TypeConvertor.castToString(value); // StringType
991        } else if (name.equals("concept")) {
992          this.getConcept().add((ConceptReferenceComponent) value);
993        } else if (name.equals("filter")) {
994          this.getFilter().add((ConceptSetFilterComponent) value);
995        } else if (name.equals("valueSet")) {
996          this.getValueSet().add(TypeConvertor.castToCanonical(value));
997        } else if (name.equals("copyright")) {
998          this.copyright = TypeConvertor.castToString(value); // StringType
999        } else
1000          return super.setProperty(name, value);
1001        return value;
1002      }
1003
1004      @Override
1005      public Base makeProperty(int hash, String name) throws FHIRException {
1006        switch (hash) {
1007        case -887328209:  return getSystemElement();
1008        case 351608024:  return getVersionElement();
1009        case 951024232:  return addConcept(); 
1010        case -1274492040:  return addFilter(); 
1011        case -1410174671:  return addValueSetElement();
1012        case 1522889671:  return getCopyrightElement();
1013        default: return super.makeProperty(hash, name);
1014        }
1015
1016      }
1017
1018      @Override
1019      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1020        switch (hash) {
1021        case -887328209: /*system*/ return new String[] {"uri"};
1022        case 351608024: /*version*/ return new String[] {"string"};
1023        case 951024232: /*concept*/ return new String[] {};
1024        case -1274492040: /*filter*/ return new String[] {};
1025        case -1410174671: /*valueSet*/ return new String[] {"canonical"};
1026        case 1522889671: /*copyright*/ return new String[] {"string"};
1027        default: return super.getTypesForProperty(hash, name);
1028        }
1029
1030      }
1031
1032      @Override
1033      public Base addChild(String name) throws FHIRException {
1034        if (name.equals("system")) {
1035          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.system");
1036        }
1037        else if (name.equals("version")) {
1038          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.version");
1039        }
1040        else if (name.equals("concept")) {
1041          return addConcept();
1042        }
1043        else if (name.equals("filter")) {
1044          return addFilter();
1045        }
1046        else if (name.equals("valueSet")) {
1047          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.valueSet");
1048        }
1049        else if (name.equals("copyright")) {
1050          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.copyright");
1051        }
1052        else
1053          return super.addChild(name);
1054      }
1055
1056      public ConceptSetComponent copy() {
1057        ConceptSetComponent dst = new ConceptSetComponent();
1058        copyValues(dst);
1059        return dst;
1060      }
1061
1062      public void copyValues(ConceptSetComponent dst) {
1063        super.copyValues(dst);
1064        dst.system = system == null ? null : system.copy();
1065        dst.version = version == null ? null : version.copy();
1066        if (concept != null) {
1067          dst.concept = new ArrayList<ConceptReferenceComponent>();
1068          for (ConceptReferenceComponent i : concept)
1069            dst.concept.add(i.copy());
1070        };
1071        if (filter != null) {
1072          dst.filter = new ArrayList<ConceptSetFilterComponent>();
1073          for (ConceptSetFilterComponent i : filter)
1074            dst.filter.add(i.copy());
1075        };
1076        if (valueSet != null) {
1077          dst.valueSet = new ArrayList<CanonicalType>();
1078          for (CanonicalType i : valueSet)
1079            dst.valueSet.add(i.copy());
1080        };
1081        dst.copyright = copyright == null ? null : copyright.copy();
1082      }
1083
1084      @Override
1085      public boolean equalsDeep(Base other_) {
1086        if (!super.equalsDeep(other_))
1087          return false;
1088        if (!(other_ instanceof ConceptSetComponent))
1089          return false;
1090        ConceptSetComponent o = (ConceptSetComponent) other_;
1091        return compareDeep(system, o.system, true) && compareDeep(version, o.version, true) && compareDeep(concept, o.concept, true)
1092           && compareDeep(filter, o.filter, true) && compareDeep(valueSet, o.valueSet, true) && compareDeep(copyright, o.copyright, true)
1093          ;
1094      }
1095
1096      @Override
1097      public boolean equalsShallow(Base other_) {
1098        if (!super.equalsShallow(other_))
1099          return false;
1100        if (!(other_ instanceof ConceptSetComponent))
1101          return false;
1102        ConceptSetComponent o = (ConceptSetComponent) other_;
1103        return compareValues(system, o.system, true) && compareValues(version, o.version, true) && compareValues(valueSet, o.valueSet, true)
1104           && compareValues(copyright, o.copyright, true);
1105      }
1106
1107      public boolean isEmpty() {
1108        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(system, version, concept
1109          , filter, valueSet, copyright);
1110      }
1111
1112  public String fhirType() {
1113    return "ValueSet.compose.include";
1114
1115  }
1116
1117  }
1118
1119    @Block()
1120    public static class ConceptReferenceComponent extends BackboneElement implements IBaseBackboneElement {
1121        /**
1122         * Specifies a code for the concept to be included or excluded.
1123         */
1124        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1125        @Description(shortDefinition="Code or expression from system", formalDefinition="Specifies a code for the concept to be included or excluded." )
1126        protected CodeType code;
1127
1128        /**
1129         * The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system.
1130         */
1131        @Child(name = "display", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1132        @Description(shortDefinition="Text to display for this code for this value set in this valueset", formalDefinition="The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system." )
1133        protected StringType display;
1134
1135        /**
1136         * Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc.
1137         */
1138        @Child(name = "designation", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1139        @Description(shortDefinition="Additional representations for this concept", formalDefinition="Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc." )
1140        protected List<ConceptReferenceDesignationComponent> designation;
1141
1142        private static final long serialVersionUID = 260579971L;
1143
1144    /**
1145     * Constructor
1146     */
1147      public ConceptReferenceComponent() {
1148        super();
1149      }
1150
1151    /**
1152     * Constructor
1153     */
1154      public ConceptReferenceComponent(String code) {
1155        super();
1156        this.setCode(code);
1157      }
1158
1159        /**
1160         * @return {@link #code} (Specifies a code for the concept to be included or excluded.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1161         */
1162        public CodeType getCodeElement() { 
1163          if (this.code == null)
1164            if (Configuration.errorOnAutoCreate())
1165              throw new Error("Attempt to auto-create ConceptReferenceComponent.code");
1166            else if (Configuration.doAutoCreate())
1167              this.code = new CodeType(); // bb
1168          return this.code;
1169        }
1170
1171        public boolean hasCodeElement() { 
1172          return this.code != null && !this.code.isEmpty();
1173        }
1174
1175        public boolean hasCode() { 
1176          return this.code != null && !this.code.isEmpty();
1177        }
1178
1179        /**
1180         * @param value {@link #code} (Specifies a code for the concept to be included or excluded.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1181         */
1182        public ConceptReferenceComponent setCodeElement(CodeType value) { 
1183          this.code = value;
1184          return this;
1185        }
1186
1187        /**
1188         * @return Specifies a code for the concept to be included or excluded.
1189         */
1190        public String getCode() { 
1191          return this.code == null ? null : this.code.getValue();
1192        }
1193
1194        /**
1195         * @param value Specifies a code for the concept to be included or excluded.
1196         */
1197        public ConceptReferenceComponent setCode(String value) { 
1198            if (this.code == null)
1199              this.code = new CodeType();
1200            this.code.setValue(value);
1201          return this;
1202        }
1203
1204        /**
1205         * @return {@link #display} (The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
1206         */
1207        public StringType getDisplayElement() { 
1208          if (this.display == null)
1209            if (Configuration.errorOnAutoCreate())
1210              throw new Error("Attempt to auto-create ConceptReferenceComponent.display");
1211            else if (Configuration.doAutoCreate())
1212              this.display = new StringType(); // bb
1213          return this.display;
1214        }
1215
1216        public boolean hasDisplayElement() { 
1217          return this.display != null && !this.display.isEmpty();
1218        }
1219
1220        public boolean hasDisplay() { 
1221          return this.display != null && !this.display.isEmpty();
1222        }
1223
1224        /**
1225         * @param value {@link #display} (The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
1226         */
1227        public ConceptReferenceComponent setDisplayElement(StringType value) { 
1228          this.display = value;
1229          return this;
1230        }
1231
1232        /**
1233         * @return The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system.
1234         */
1235        public String getDisplay() { 
1236          return this.display == null ? null : this.display.getValue();
1237        }
1238
1239        /**
1240         * @param value The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system.
1241         */
1242        public ConceptReferenceComponent setDisplay(String value) { 
1243          if (Utilities.noString(value))
1244            this.display = null;
1245          else {
1246            if (this.display == null)
1247              this.display = new StringType();
1248            this.display.setValue(value);
1249          }
1250          return this;
1251        }
1252
1253        /**
1254         * @return {@link #designation} (Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc.)
1255         */
1256        public List<ConceptReferenceDesignationComponent> getDesignation() { 
1257          if (this.designation == null)
1258            this.designation = new ArrayList<ConceptReferenceDesignationComponent>();
1259          return this.designation;
1260        }
1261
1262        /**
1263         * @return Returns a reference to <code>this</code> for easy method chaining
1264         */
1265        public ConceptReferenceComponent setDesignation(List<ConceptReferenceDesignationComponent> theDesignation) { 
1266          this.designation = theDesignation;
1267          return this;
1268        }
1269
1270        public boolean hasDesignation() { 
1271          if (this.designation == null)
1272            return false;
1273          for (ConceptReferenceDesignationComponent item : this.designation)
1274            if (!item.isEmpty())
1275              return true;
1276          return false;
1277        }
1278
1279        public ConceptReferenceDesignationComponent addDesignation() { //3
1280          ConceptReferenceDesignationComponent t = new ConceptReferenceDesignationComponent();
1281          if (this.designation == null)
1282            this.designation = new ArrayList<ConceptReferenceDesignationComponent>();
1283          this.designation.add(t);
1284          return t;
1285        }
1286
1287        public ConceptReferenceComponent addDesignation(ConceptReferenceDesignationComponent t) { //3
1288          if (t == null)
1289            return this;
1290          if (this.designation == null)
1291            this.designation = new ArrayList<ConceptReferenceDesignationComponent>();
1292          this.designation.add(t);
1293          return this;
1294        }
1295
1296        /**
1297         * @return The first repetition of repeating field {@link #designation}, creating it if it does not already exist {3}
1298         */
1299        public ConceptReferenceDesignationComponent getDesignationFirstRep() { 
1300          if (getDesignation().isEmpty()) {
1301            addDesignation();
1302          }
1303          return getDesignation().get(0);
1304        }
1305
1306        protected void listChildren(List<Property> children) {
1307          super.listChildren(children);
1308          children.add(new Property("code", "code", "Specifies a code for the concept to be included or excluded.", 0, 1, code));
1309          children.add(new Property("display", "string", "The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system.", 0, 1, display));
1310          children.add(new Property("designation", "", "Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc.", 0, java.lang.Integer.MAX_VALUE, designation));
1311        }
1312
1313        @Override
1314        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1315          switch (_hash) {
1316          case 3059181: /*code*/  return new Property("code", "code", "Specifies a code for the concept to be included or excluded.", 0, 1, code);
1317          case 1671764162: /*display*/  return new Property("display", "string", "The text to display to the user for this concept in the context of this valueset. If no display is provided, then applications using the value set use the display specified for the code by the system.", 0, 1, display);
1318          case -900931593: /*designation*/  return new Property("designation", "", "Additional representations for this concept when used in this value set - other languages, aliases, specialized purposes, used for particular purposes, etc.", 0, java.lang.Integer.MAX_VALUE, designation);
1319          default: return super.getNamedProperty(_hash, _name, _checkValid);
1320          }
1321
1322        }
1323
1324      @Override
1325      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1326        switch (hash) {
1327        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
1328        case 1671764162: /*display*/ return this.display == null ? new Base[0] : new Base[] {this.display}; // StringType
1329        case -900931593: /*designation*/ return this.designation == null ? new Base[0] : this.designation.toArray(new Base[this.designation.size()]); // ConceptReferenceDesignationComponent
1330        default: return super.getProperty(hash, name, checkValid);
1331        }
1332
1333      }
1334
1335      @Override
1336      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1337        switch (hash) {
1338        case 3059181: // code
1339          this.code = TypeConvertor.castToCode(value); // CodeType
1340          return value;
1341        case 1671764162: // display
1342          this.display = TypeConvertor.castToString(value); // StringType
1343          return value;
1344        case -900931593: // designation
1345          this.getDesignation().add((ConceptReferenceDesignationComponent) value); // ConceptReferenceDesignationComponent
1346          return value;
1347        default: return super.setProperty(hash, name, value);
1348        }
1349
1350      }
1351
1352      @Override
1353      public Base setProperty(String name, Base value) throws FHIRException {
1354        if (name.equals("code")) {
1355          this.code = TypeConvertor.castToCode(value); // CodeType
1356        } else if (name.equals("display")) {
1357          this.display = TypeConvertor.castToString(value); // StringType
1358        } else if (name.equals("designation")) {
1359          this.getDesignation().add((ConceptReferenceDesignationComponent) value);
1360        } else
1361          return super.setProperty(name, value);
1362        return value;
1363      }
1364
1365      @Override
1366      public Base makeProperty(int hash, String name) throws FHIRException {
1367        switch (hash) {
1368        case 3059181:  return getCodeElement();
1369        case 1671764162:  return getDisplayElement();
1370        case -900931593:  return addDesignation(); 
1371        default: return super.makeProperty(hash, name);
1372        }
1373
1374      }
1375
1376      @Override
1377      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1378        switch (hash) {
1379        case 3059181: /*code*/ return new String[] {"code"};
1380        case 1671764162: /*display*/ return new String[] {"string"};
1381        case -900931593: /*designation*/ return new String[] {};
1382        default: return super.getTypesForProperty(hash, name);
1383        }
1384
1385      }
1386
1387      @Override
1388      public Base addChild(String name) throws FHIRException {
1389        if (name.equals("code")) {
1390          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.concept.code");
1391        }
1392        else if (name.equals("display")) {
1393          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.concept.display");
1394        }
1395        else if (name.equals("designation")) {
1396          return addDesignation();
1397        }
1398        else
1399          return super.addChild(name);
1400      }
1401
1402      public ConceptReferenceComponent copy() {
1403        ConceptReferenceComponent dst = new ConceptReferenceComponent();
1404        copyValues(dst);
1405        return dst;
1406      }
1407
1408      public void copyValues(ConceptReferenceComponent dst) {
1409        super.copyValues(dst);
1410        dst.code = code == null ? null : code.copy();
1411        dst.display = display == null ? null : display.copy();
1412        if (designation != null) {
1413          dst.designation = new ArrayList<ConceptReferenceDesignationComponent>();
1414          for (ConceptReferenceDesignationComponent i : designation)
1415            dst.designation.add(i.copy());
1416        };
1417      }
1418
1419      @Override
1420      public boolean equalsDeep(Base other_) {
1421        if (!super.equalsDeep(other_))
1422          return false;
1423        if (!(other_ instanceof ConceptReferenceComponent))
1424          return false;
1425        ConceptReferenceComponent o = (ConceptReferenceComponent) other_;
1426        return compareDeep(code, o.code, true) && compareDeep(display, o.display, true) && compareDeep(designation, o.designation, true)
1427          ;
1428      }
1429
1430      @Override
1431      public boolean equalsShallow(Base other_) {
1432        if (!super.equalsShallow(other_))
1433          return false;
1434        if (!(other_ instanceof ConceptReferenceComponent))
1435          return false;
1436        ConceptReferenceComponent o = (ConceptReferenceComponent) other_;
1437        return compareValues(code, o.code, true) && compareValues(display, o.display, true);
1438      }
1439
1440      public boolean isEmpty() {
1441        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, display, designation
1442          );
1443      }
1444
1445  public String fhirType() {
1446    return "ValueSet.compose.include.concept";
1447
1448  }
1449
1450  }
1451
1452    @Block()
1453    public static class ConceptReferenceDesignationComponent extends BackboneElement implements IBaseBackboneElement {
1454        /**
1455         * The language this designation is defined for.
1456         */
1457        @Child(name = "language", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1458        @Description(shortDefinition="Human language of the designation", formalDefinition="The language this designation is defined for." )
1459        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/languages")
1460        protected CodeType language;
1461
1462        /**
1463         * A code that represents types of uses of designations.
1464         */
1465        @Child(name = "use", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=false)
1466        @Description(shortDefinition="Types of uses of designations", formalDefinition="A code that represents types of uses of designations." )
1467        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/designation-use")
1468        protected Coding use;
1469
1470        /**
1471         * Additional codes that detail how this designation would be used, if there is more than one use.
1472         */
1473        @Child(name = "additionalUse", type = {Coding.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1474        @Description(shortDefinition="Additional ways how this designation would be used", formalDefinition="Additional codes that detail how this designation would be used, if there is more than one use." )
1475        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/designation-use")
1476        protected List<Coding> additionalUse;
1477
1478        /**
1479         * The text value for this designation.
1480         */
1481        @Child(name = "value", type = {StringType.class}, order=4, min=1, max=1, modifier=false, summary=false)
1482        @Description(shortDefinition="The text value for this designation", formalDefinition="The text value for this designation." )
1483        protected StringType value;
1484
1485        private static final long serialVersionUID = -141147882L;
1486
1487    /**
1488     * Constructor
1489     */
1490      public ConceptReferenceDesignationComponent() {
1491        super();
1492      }
1493
1494    /**
1495     * Constructor
1496     */
1497      public ConceptReferenceDesignationComponent(String value) {
1498        super();
1499        this.setValue(value);
1500      }
1501
1502        /**
1503         * @return {@link #language} (The language this designation is defined for.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value
1504         */
1505        public CodeType getLanguageElement() { 
1506          if (this.language == null)
1507            if (Configuration.errorOnAutoCreate())
1508              throw new Error("Attempt to auto-create ConceptReferenceDesignationComponent.language");
1509            else if (Configuration.doAutoCreate())
1510              this.language = new CodeType(); // bb
1511          return this.language;
1512        }
1513
1514        public boolean hasLanguageElement() { 
1515          return this.language != null && !this.language.isEmpty();
1516        }
1517
1518        public boolean hasLanguage() { 
1519          return this.language != null && !this.language.isEmpty();
1520        }
1521
1522        /**
1523         * @param value {@link #language} (The language this designation is defined for.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value
1524         */
1525        public ConceptReferenceDesignationComponent setLanguageElement(CodeType value) { 
1526          this.language = value;
1527          return this;
1528        }
1529
1530        /**
1531         * @return The language this designation is defined for.
1532         */
1533        public String getLanguage() { 
1534          return this.language == null ? null : this.language.getValue();
1535        }
1536
1537        /**
1538         * @param value The language this designation is defined for.
1539         */
1540        public ConceptReferenceDesignationComponent setLanguage(String value) { 
1541          if (Utilities.noString(value))
1542            this.language = null;
1543          else {
1544            if (this.language == null)
1545              this.language = new CodeType();
1546            this.language.setValue(value);
1547          }
1548          return this;
1549        }
1550
1551        /**
1552         * @return {@link #use} (A code that represents types of uses of designations.)
1553         */
1554        public Coding getUse() { 
1555          if (this.use == null)
1556            if (Configuration.errorOnAutoCreate())
1557              throw new Error("Attempt to auto-create ConceptReferenceDesignationComponent.use");
1558            else if (Configuration.doAutoCreate())
1559              this.use = new Coding(); // cc
1560          return this.use;
1561        }
1562
1563        public boolean hasUse() { 
1564          return this.use != null && !this.use.isEmpty();
1565        }
1566
1567        /**
1568         * @param value {@link #use} (A code that represents types of uses of designations.)
1569         */
1570        public ConceptReferenceDesignationComponent setUse(Coding value) { 
1571          this.use = value;
1572          return this;
1573        }
1574
1575        /**
1576         * @return {@link #additionalUse} (Additional codes that detail how this designation would be used, if there is more than one use.)
1577         */
1578        public List<Coding> getAdditionalUse() { 
1579          if (this.additionalUse == null)
1580            this.additionalUse = new ArrayList<Coding>();
1581          return this.additionalUse;
1582        }
1583
1584        /**
1585         * @return Returns a reference to <code>this</code> for easy method chaining
1586         */
1587        public ConceptReferenceDesignationComponent setAdditionalUse(List<Coding> theAdditionalUse) { 
1588          this.additionalUse = theAdditionalUse;
1589          return this;
1590        }
1591
1592        public boolean hasAdditionalUse() { 
1593          if (this.additionalUse == null)
1594            return false;
1595          for (Coding item : this.additionalUse)
1596            if (!item.isEmpty())
1597              return true;
1598          return false;
1599        }
1600
1601        public Coding addAdditionalUse() { //3
1602          Coding t = new Coding();
1603          if (this.additionalUse == null)
1604            this.additionalUse = new ArrayList<Coding>();
1605          this.additionalUse.add(t);
1606          return t;
1607        }
1608
1609        public ConceptReferenceDesignationComponent addAdditionalUse(Coding t) { //3
1610          if (t == null)
1611            return this;
1612          if (this.additionalUse == null)
1613            this.additionalUse = new ArrayList<Coding>();
1614          this.additionalUse.add(t);
1615          return this;
1616        }
1617
1618        /**
1619         * @return The first repetition of repeating field {@link #additionalUse}, creating it if it does not already exist {3}
1620         */
1621        public Coding getAdditionalUseFirstRep() { 
1622          if (getAdditionalUse().isEmpty()) {
1623            addAdditionalUse();
1624          }
1625          return getAdditionalUse().get(0);
1626        }
1627
1628        /**
1629         * @return {@link #value} (The text value for this designation.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
1630         */
1631        public StringType getValueElement() { 
1632          if (this.value == null)
1633            if (Configuration.errorOnAutoCreate())
1634              throw new Error("Attempt to auto-create ConceptReferenceDesignationComponent.value");
1635            else if (Configuration.doAutoCreate())
1636              this.value = new StringType(); // bb
1637          return this.value;
1638        }
1639
1640        public boolean hasValueElement() { 
1641          return this.value != null && !this.value.isEmpty();
1642        }
1643
1644        public boolean hasValue() { 
1645          return this.value != null && !this.value.isEmpty();
1646        }
1647
1648        /**
1649         * @param value {@link #value} (The text value for this designation.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
1650         */
1651        public ConceptReferenceDesignationComponent setValueElement(StringType value) { 
1652          this.value = value;
1653          return this;
1654        }
1655
1656        /**
1657         * @return The text value for this designation.
1658         */
1659        public String getValue() { 
1660          return this.value == null ? null : this.value.getValue();
1661        }
1662
1663        /**
1664         * @param value The text value for this designation.
1665         */
1666        public ConceptReferenceDesignationComponent setValue(String value) { 
1667            if (this.value == null)
1668              this.value = new StringType();
1669            this.value.setValue(value);
1670          return this;
1671        }
1672
1673        protected void listChildren(List<Property> children) {
1674          super.listChildren(children);
1675          children.add(new Property("language", "code", "The language this designation is defined for.", 0, 1, language));
1676          children.add(new Property("use", "Coding", "A code that represents types of uses of designations.", 0, 1, use));
1677          children.add(new Property("additionalUse", "Coding", "Additional codes that detail how this designation would be used, if there is more than one use.", 0, java.lang.Integer.MAX_VALUE, additionalUse));
1678          children.add(new Property("value", "string", "The text value for this designation.", 0, 1, value));
1679        }
1680
1681        @Override
1682        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1683          switch (_hash) {
1684          case -1613589672: /*language*/  return new Property("language", "code", "The language this designation is defined for.", 0, 1, language);
1685          case 116103: /*use*/  return new Property("use", "Coding", "A code that represents types of uses of designations.", 0, 1, use);
1686          case 938414048: /*additionalUse*/  return new Property("additionalUse", "Coding", "Additional codes that detail how this designation would be used, if there is more than one use.", 0, java.lang.Integer.MAX_VALUE, additionalUse);
1687          case 111972721: /*value*/  return new Property("value", "string", "The text value for this designation.", 0, 1, value);
1688          default: return super.getNamedProperty(_hash, _name, _checkValid);
1689          }
1690
1691        }
1692
1693      @Override
1694      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1695        switch (hash) {
1696        case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // CodeType
1697        case 116103: /*use*/ return this.use == null ? new Base[0] : new Base[] {this.use}; // Coding
1698        case 938414048: /*additionalUse*/ return this.additionalUse == null ? new Base[0] : this.additionalUse.toArray(new Base[this.additionalUse.size()]); // Coding
1699        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
1700        default: return super.getProperty(hash, name, checkValid);
1701        }
1702
1703      }
1704
1705      @Override
1706      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1707        switch (hash) {
1708        case -1613589672: // language
1709          this.language = TypeConvertor.castToCode(value); // CodeType
1710          return value;
1711        case 116103: // use
1712          this.use = TypeConvertor.castToCoding(value); // Coding
1713          return value;
1714        case 938414048: // additionalUse
1715          this.getAdditionalUse().add(TypeConvertor.castToCoding(value)); // Coding
1716          return value;
1717        case 111972721: // value
1718          this.value = TypeConvertor.castToString(value); // StringType
1719          return value;
1720        default: return super.setProperty(hash, name, value);
1721        }
1722
1723      }
1724
1725      @Override
1726      public Base setProperty(String name, Base value) throws FHIRException {
1727        if (name.equals("language")) {
1728          this.language = TypeConvertor.castToCode(value); // CodeType
1729        } else if (name.equals("use")) {
1730          this.use = TypeConvertor.castToCoding(value); // Coding
1731        } else if (name.equals("additionalUse")) {
1732          this.getAdditionalUse().add(TypeConvertor.castToCoding(value));
1733        } else if (name.equals("value")) {
1734          this.value = TypeConvertor.castToString(value); // StringType
1735        } else
1736          return super.setProperty(name, value);
1737        return value;
1738      }
1739
1740      @Override
1741      public Base makeProperty(int hash, String name) throws FHIRException {
1742        switch (hash) {
1743        case -1613589672:  return getLanguageElement();
1744        case 116103:  return getUse();
1745        case 938414048:  return addAdditionalUse(); 
1746        case 111972721:  return getValueElement();
1747        default: return super.makeProperty(hash, name);
1748        }
1749
1750      }
1751
1752      @Override
1753      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1754        switch (hash) {
1755        case -1613589672: /*language*/ return new String[] {"code"};
1756        case 116103: /*use*/ return new String[] {"Coding"};
1757        case 938414048: /*additionalUse*/ return new String[] {"Coding"};
1758        case 111972721: /*value*/ return new String[] {"string"};
1759        default: return super.getTypesForProperty(hash, name);
1760        }
1761
1762      }
1763
1764      @Override
1765      public Base addChild(String name) throws FHIRException {
1766        if (name.equals("language")) {
1767          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.concept.designation.language");
1768        }
1769        else if (name.equals("use")) {
1770          this.use = new Coding();
1771          return this.use;
1772        }
1773        else if (name.equals("additionalUse")) {
1774          return addAdditionalUse();
1775        }
1776        else if (name.equals("value")) {
1777          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.concept.designation.value");
1778        }
1779        else
1780          return super.addChild(name);
1781      }
1782
1783      public ConceptReferenceDesignationComponent copy() {
1784        ConceptReferenceDesignationComponent dst = new ConceptReferenceDesignationComponent();
1785        copyValues(dst);
1786        return dst;
1787      }
1788
1789      public void copyValues(ConceptReferenceDesignationComponent dst) {
1790        super.copyValues(dst);
1791        dst.language = language == null ? null : language.copy();
1792        dst.use = use == null ? null : use.copy();
1793        if (additionalUse != null) {
1794          dst.additionalUse = new ArrayList<Coding>();
1795          for (Coding i : additionalUse)
1796            dst.additionalUse.add(i.copy());
1797        };
1798        dst.value = value == null ? null : value.copy();
1799      }
1800
1801      @Override
1802      public boolean equalsDeep(Base other_) {
1803        if (!super.equalsDeep(other_))
1804          return false;
1805        if (!(other_ instanceof ConceptReferenceDesignationComponent))
1806          return false;
1807        ConceptReferenceDesignationComponent o = (ConceptReferenceDesignationComponent) other_;
1808        return compareDeep(language, o.language, true) && compareDeep(use, o.use, true) && compareDeep(additionalUse, o.additionalUse, true)
1809           && compareDeep(value, o.value, true);
1810      }
1811
1812      @Override
1813      public boolean equalsShallow(Base other_) {
1814        if (!super.equalsShallow(other_))
1815          return false;
1816        if (!(other_ instanceof ConceptReferenceDesignationComponent))
1817          return false;
1818        ConceptReferenceDesignationComponent o = (ConceptReferenceDesignationComponent) other_;
1819        return compareValues(language, o.language, true) && compareValues(value, o.value, true);
1820      }
1821
1822      public boolean isEmpty() {
1823        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(language, use, additionalUse
1824          , value);
1825      }
1826
1827  public String fhirType() {
1828    return "ValueSet.compose.include.concept.designation";
1829
1830  }
1831
1832  }
1833
1834    @Block()
1835    public static class ConceptSetFilterComponent extends BackboneElement implements IBaseBackboneElement {
1836        /**
1837         * A code that identifies a property or a filter defined in the code system.
1838         */
1839        @Child(name = "property", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
1840        @Description(shortDefinition="A property/filter defined by the code system", formalDefinition="A code that identifies a property or a filter defined in the code system." )
1841        protected CodeType property;
1842
1843        /**
1844         * The kind of operation to perform as a part of the filter criteria.
1845         */
1846        @Child(name = "op", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=true)
1847        @Description(shortDefinition="= | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | child-of | descendent-leaf | exists", formalDefinition="The kind of operation to perform as a part of the filter criteria." )
1848        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/filter-operator")
1849        protected Enumeration<FilterOperator> op;
1850
1851        /**
1852         * The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'.
1853         */
1854        @Child(name = "value", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true)
1855        @Description(shortDefinition="Code from the system, or regex criteria, or boolean value for exists", formalDefinition="The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'." )
1856        protected StringType value;
1857
1858        private static final long serialVersionUID = 1259153492L;
1859
1860    /**
1861     * Constructor
1862     */
1863      public ConceptSetFilterComponent() {
1864        super();
1865      }
1866
1867    /**
1868     * Constructor
1869     */
1870      public ConceptSetFilterComponent(String property, FilterOperator op, String value) {
1871        super();
1872        this.setProperty(property);
1873        this.setOp(op);
1874        this.setValue(value);
1875      }
1876
1877        /**
1878         * @return {@link #property} (A code that identifies a property or a filter defined in the code system.). This is the underlying object with id, value and extensions. The accessor "getProperty" gives direct access to the value
1879         */
1880        public CodeType getPropertyElement() { 
1881          if (this.property == null)
1882            if (Configuration.errorOnAutoCreate())
1883              throw new Error("Attempt to auto-create ConceptSetFilterComponent.property");
1884            else if (Configuration.doAutoCreate())
1885              this.property = new CodeType(); // bb
1886          return this.property;
1887        }
1888
1889        public boolean hasPropertyElement() { 
1890          return this.property != null && !this.property.isEmpty();
1891        }
1892
1893        public boolean hasProperty() { 
1894          return this.property != null && !this.property.isEmpty();
1895        }
1896
1897        /**
1898         * @param value {@link #property} (A code that identifies a property or a filter defined in the code system.). This is the underlying object with id, value and extensions. The accessor "getProperty" gives direct access to the value
1899         */
1900        public ConceptSetFilterComponent setPropertyElement(CodeType value) { 
1901          this.property = value;
1902          return this;
1903        }
1904
1905        /**
1906         * @return A code that identifies a property or a filter defined in the code system.
1907         */
1908        public String getProperty() { 
1909          return this.property == null ? null : this.property.getValue();
1910        }
1911
1912        /**
1913         * @param value A code that identifies a property or a filter defined in the code system.
1914         */
1915        public ConceptSetFilterComponent setProperty(String value) { 
1916            if (this.property == null)
1917              this.property = new CodeType();
1918            this.property.setValue(value);
1919          return this;
1920        }
1921
1922        /**
1923         * @return {@link #op} (The kind of operation to perform as a part of the filter criteria.). This is the underlying object with id, value and extensions. The accessor "getOp" gives direct access to the value
1924         */
1925        public Enumeration<FilterOperator> getOpElement() { 
1926          if (this.op == null)
1927            if (Configuration.errorOnAutoCreate())
1928              throw new Error("Attempt to auto-create ConceptSetFilterComponent.op");
1929            else if (Configuration.doAutoCreate())
1930              this.op = new Enumeration<FilterOperator>(new FilterOperatorEnumFactory()); // bb
1931          return this.op;
1932        }
1933
1934        public boolean hasOpElement() { 
1935          return this.op != null && !this.op.isEmpty();
1936        }
1937
1938        public boolean hasOp() { 
1939          return this.op != null && !this.op.isEmpty();
1940        }
1941
1942        /**
1943         * @param value {@link #op} (The kind of operation to perform as a part of the filter criteria.). This is the underlying object with id, value and extensions. The accessor "getOp" gives direct access to the value
1944         */
1945        public ConceptSetFilterComponent setOpElement(Enumeration<FilterOperator> value) { 
1946          this.op = value;
1947          return this;
1948        }
1949
1950        /**
1951         * @return The kind of operation to perform as a part of the filter criteria.
1952         */
1953        public FilterOperator getOp() { 
1954          return this.op == null ? null : this.op.getValue();
1955        }
1956
1957        /**
1958         * @param value The kind of operation to perform as a part of the filter criteria.
1959         */
1960        public ConceptSetFilterComponent setOp(FilterOperator value) { 
1961            if (this.op == null)
1962              this.op = new Enumeration<FilterOperator>(new FilterOperatorEnumFactory());
1963            this.op.setValue(value);
1964          return this;
1965        }
1966
1967        /**
1968         * @return {@link #value} (The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
1969         */
1970        public StringType getValueElement() { 
1971          if (this.value == null)
1972            if (Configuration.errorOnAutoCreate())
1973              throw new Error("Attempt to auto-create ConceptSetFilterComponent.value");
1974            else if (Configuration.doAutoCreate())
1975              this.value = new StringType(); // bb
1976          return this.value;
1977        }
1978
1979        public boolean hasValueElement() { 
1980          return this.value != null && !this.value.isEmpty();
1981        }
1982
1983        public boolean hasValue() { 
1984          return this.value != null && !this.value.isEmpty();
1985        }
1986
1987        /**
1988         * @param value {@link #value} (The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
1989         */
1990        public ConceptSetFilterComponent setValueElement(StringType value) { 
1991          this.value = value;
1992          return this;
1993        }
1994
1995        /**
1996         * @return The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'.
1997         */
1998        public String getValue() { 
1999          return this.value == null ? null : this.value.getValue();
2000        }
2001
2002        /**
2003         * @param value The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'.
2004         */
2005        public ConceptSetFilterComponent setValue(String value) { 
2006            if (this.value == null)
2007              this.value = new StringType();
2008            this.value.setValue(value);
2009          return this;
2010        }
2011
2012        protected void listChildren(List<Property> children) {
2013          super.listChildren(children);
2014          children.add(new Property("property", "code", "A code that identifies a property or a filter defined in the code system.", 0, 1, property));
2015          children.add(new Property("op", "code", "The kind of operation to perform as a part of the filter criteria.", 0, 1, op));
2016          children.add(new Property("value", "string", "The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'.", 0, 1, value));
2017        }
2018
2019        @Override
2020        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2021          switch (_hash) {
2022          case -993141291: /*property*/  return new Property("property", "code", "A code that identifies a property or a filter defined in the code system.", 0, 1, property);
2023          case 3553: /*op*/  return new Property("op", "code", "The kind of operation to perform as a part of the filter criteria.", 0, 1, op);
2024          case 111972721: /*value*/  return new Property("value", "string", "The match value may be either a code defined by the system, or a string value, which is a regex match on the literal string of the property value  (if the filter represents a property defined in CodeSystem) or of the system filter value (if the filter represents a filter defined in CodeSystem) when the operation is 'regex', or one of the values (true and false), when the operation is 'exists'.", 0, 1, value);
2025          default: return super.getNamedProperty(_hash, _name, _checkValid);
2026          }
2027
2028        }
2029
2030      @Override
2031      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2032        switch (hash) {
2033        case -993141291: /*property*/ return this.property == null ? new Base[0] : new Base[] {this.property}; // CodeType
2034        case 3553: /*op*/ return this.op == null ? new Base[0] : new Base[] {this.op}; // Enumeration<FilterOperator>
2035        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
2036        default: return super.getProperty(hash, name, checkValid);
2037        }
2038
2039      }
2040
2041      @Override
2042      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2043        switch (hash) {
2044        case -993141291: // property
2045          this.property = TypeConvertor.castToCode(value); // CodeType
2046          return value;
2047        case 3553: // op
2048          value = new FilterOperatorEnumFactory().fromType(TypeConvertor.castToCode(value));
2049          this.op = (Enumeration) value; // Enumeration<FilterOperator>
2050          return value;
2051        case 111972721: // value
2052          this.value = TypeConvertor.castToString(value); // StringType
2053          return value;
2054        default: return super.setProperty(hash, name, value);
2055        }
2056
2057      }
2058
2059      @Override
2060      public Base setProperty(String name, Base value) throws FHIRException {
2061        if (name.equals("property")) {
2062          this.property = TypeConvertor.castToCode(value); // CodeType
2063        } else if (name.equals("op")) {
2064          value = new FilterOperatorEnumFactory().fromType(TypeConvertor.castToCode(value));
2065          this.op = (Enumeration) value; // Enumeration<FilterOperator>
2066        } else if (name.equals("value")) {
2067          this.value = TypeConvertor.castToString(value); // StringType
2068        } else
2069          return super.setProperty(name, value);
2070        return value;
2071      }
2072
2073      @Override
2074      public Base makeProperty(int hash, String name) throws FHIRException {
2075        switch (hash) {
2076        case -993141291:  return getPropertyElement();
2077        case 3553:  return getOpElement();
2078        case 111972721:  return getValueElement();
2079        default: return super.makeProperty(hash, name);
2080        }
2081
2082      }
2083
2084      @Override
2085      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2086        switch (hash) {
2087        case -993141291: /*property*/ return new String[] {"code"};
2088        case 3553: /*op*/ return new String[] {"code"};
2089        case 111972721: /*value*/ return new String[] {"string"};
2090        default: return super.getTypesForProperty(hash, name);
2091        }
2092
2093      }
2094
2095      @Override
2096      public Base addChild(String name) throws FHIRException {
2097        if (name.equals("property")) {
2098          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.filter.property");
2099        }
2100        else if (name.equals("op")) {
2101          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.filter.op");
2102        }
2103        else if (name.equals("value")) {
2104          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.compose.include.filter.value");
2105        }
2106        else
2107          return super.addChild(name);
2108      }
2109
2110      public ConceptSetFilterComponent copy() {
2111        ConceptSetFilterComponent dst = new ConceptSetFilterComponent();
2112        copyValues(dst);
2113        return dst;
2114      }
2115
2116      public void copyValues(ConceptSetFilterComponent dst) {
2117        super.copyValues(dst);
2118        dst.property = property == null ? null : property.copy();
2119        dst.op = op == null ? null : op.copy();
2120        dst.value = value == null ? null : value.copy();
2121      }
2122
2123      @Override
2124      public boolean equalsDeep(Base other_) {
2125        if (!super.equalsDeep(other_))
2126          return false;
2127        if (!(other_ instanceof ConceptSetFilterComponent))
2128          return false;
2129        ConceptSetFilterComponent o = (ConceptSetFilterComponent) other_;
2130        return compareDeep(property, o.property, true) && compareDeep(op, o.op, true) && compareDeep(value, o.value, true)
2131          ;
2132      }
2133
2134      @Override
2135      public boolean equalsShallow(Base other_) {
2136        if (!super.equalsShallow(other_))
2137          return false;
2138        if (!(other_ instanceof ConceptSetFilterComponent))
2139          return false;
2140        ConceptSetFilterComponent o = (ConceptSetFilterComponent) other_;
2141        return compareValues(property, o.property, true) && compareValues(op, o.op, true) && compareValues(value, o.value, true)
2142          ;
2143      }
2144
2145      public boolean isEmpty() {
2146        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(property, op, value);
2147      }
2148
2149  public String fhirType() {
2150    return "ValueSet.compose.include.filter";
2151
2152  }
2153
2154  }
2155
2156    @Block()
2157    public static class ValueSetExpansionComponent extends BackboneElement implements IBaseBackboneElement {
2158        /**
2159         * An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier.
2160         */
2161        @Child(name = "identifier", type = {UriType.class}, order=1, min=0, max=1, modifier=false, summary=false)
2162        @Description(shortDefinition="Identifies the value set expansion (business identifier)", formalDefinition="An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier." )
2163        protected UriType identifier;
2164
2165        /**
2166         * As per paging Search results, the next URLs are opaque to the client, have no dictated structure, and only the server understands them.
2167         */
2168        @Child(name = "next", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=false)
2169        @Description(shortDefinition="Opaque urls for paging through expansion results", formalDefinition="As per paging Search results, the next URLs are opaque to the client, have no dictated structure, and only the server understands them." )
2170        protected UriType next;
2171
2172        /**
2173         * The time at which the expansion was produced by the expanding system.
2174         */
2175        @Child(name = "timestamp", type = {DateTimeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
2176        @Description(shortDefinition="Time ValueSet expansion happened", formalDefinition="The time at which the expansion was produced by the expanding system." )
2177        protected DateTimeType timestamp;
2178
2179        /**
2180         * The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter.
2181         */
2182        @Child(name = "total", type = {IntegerType.class}, order=4, min=0, max=1, modifier=false, summary=false)
2183        @Description(shortDefinition="Total number of codes in the expansion", formalDefinition="The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter." )
2184        protected IntegerType total;
2185
2186        /**
2187         * If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present.
2188         */
2189        @Child(name = "offset", type = {IntegerType.class}, order=5, min=0, max=1, modifier=false, summary=false)
2190        @Description(shortDefinition="Offset at which this resource starts", formalDefinition="If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present." )
2191        protected IntegerType offset;
2192
2193        /**
2194         * A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion.
2195         */
2196        @Child(name = "parameter", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2197        @Description(shortDefinition="Parameter that controlled the expansion process", formalDefinition="A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion." )
2198        protected List<ValueSetExpansionParameterComponent> parameter;
2199
2200        /**
2201         * A property defines an additional slot through which additional information can be provided about a concept.
2202         */
2203        @Child(name = "property", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2204        @Description(shortDefinition="Additional information supplied about each concept", formalDefinition="A property defines an additional slot through which additional information can be provided about a concept." )
2205        protected List<ValueSetExpansionPropertyComponent> property;
2206
2207        /**
2208         * The codes that are contained in the value set expansion.
2209         */
2210        @Child(name = "contains", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2211        @Description(shortDefinition="Codes in the value set", formalDefinition="The codes that are contained in the value set expansion." )
2212        protected List<ValueSetExpansionContainsComponent> contains;
2213
2214        private static final long serialVersionUID = 1141573269L;
2215
2216    /**
2217     * Constructor
2218     */
2219      public ValueSetExpansionComponent() {
2220        super();
2221      }
2222
2223    /**
2224     * Constructor
2225     */
2226      public ValueSetExpansionComponent(Date timestamp) {
2227        super();
2228        this.setTimestamp(timestamp);
2229      }
2230
2231        /**
2232         * @return {@link #identifier} (An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier.). This is the underlying object with id, value and extensions. The accessor "getIdentifier" gives direct access to the value
2233         */
2234        public UriType getIdentifierElement() { 
2235          if (this.identifier == null)
2236            if (Configuration.errorOnAutoCreate())
2237              throw new Error("Attempt to auto-create ValueSetExpansionComponent.identifier");
2238            else if (Configuration.doAutoCreate())
2239              this.identifier = new UriType(); // bb
2240          return this.identifier;
2241        }
2242
2243        public boolean hasIdentifierElement() { 
2244          return this.identifier != null && !this.identifier.isEmpty();
2245        }
2246
2247        public boolean hasIdentifier() { 
2248          return this.identifier != null && !this.identifier.isEmpty();
2249        }
2250
2251        /**
2252         * @param value {@link #identifier} (An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier.). This is the underlying object with id, value and extensions. The accessor "getIdentifier" gives direct access to the value
2253         */
2254        public ValueSetExpansionComponent setIdentifierElement(UriType value) { 
2255          this.identifier = value;
2256          return this;
2257        }
2258
2259        /**
2260         * @return An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier.
2261         */
2262        public String getIdentifier() { 
2263          return this.identifier == null ? null : this.identifier.getValue();
2264        }
2265
2266        /**
2267         * @param value An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier.
2268         */
2269        public ValueSetExpansionComponent setIdentifier(String value) { 
2270          if (Utilities.noString(value))
2271            this.identifier = null;
2272          else {
2273            if (this.identifier == null)
2274              this.identifier = new UriType();
2275            this.identifier.setValue(value);
2276          }
2277          return this;
2278        }
2279
2280        /**
2281         * @return {@link #next} (As per paging Search results, the next URLs are opaque to the client, have no dictated structure, and only the server understands them.). This is the underlying object with id, value and extensions. The accessor "getNext" gives direct access to the value
2282         */
2283        public UriType getNextElement() { 
2284          if (this.next == null)
2285            if (Configuration.errorOnAutoCreate())
2286              throw new Error("Attempt to auto-create ValueSetExpansionComponent.next");
2287            else if (Configuration.doAutoCreate())
2288              this.next = new UriType(); // bb
2289          return this.next;
2290        }
2291
2292        public boolean hasNextElement() { 
2293          return this.next != null && !this.next.isEmpty();
2294        }
2295
2296        public boolean hasNext() { 
2297          return this.next != null && !this.next.isEmpty();
2298        }
2299
2300        /**
2301         * @param value {@link #next} (As per paging Search results, the next URLs are opaque to the client, have no dictated structure, and only the server understands them.). This is the underlying object with id, value and extensions. The accessor "getNext" gives direct access to the value
2302         */
2303        public ValueSetExpansionComponent setNextElement(UriType value) { 
2304          this.next = value;
2305          return this;
2306        }
2307
2308        /**
2309         * @return As per paging Search results, the next URLs are opaque to the client, have no dictated structure, and only the server understands them.
2310         */
2311        public String getNext() { 
2312          return this.next == null ? null : this.next.getValue();
2313        }
2314
2315        /**
2316         * @param value As per paging Search results, the next URLs are opaque to the client, have no dictated structure, and only the server understands them.
2317         */
2318        public ValueSetExpansionComponent setNext(String value) { 
2319          if (Utilities.noString(value))
2320            this.next = null;
2321          else {
2322            if (this.next == null)
2323              this.next = new UriType();
2324            this.next.setValue(value);
2325          }
2326          return this;
2327        }
2328
2329        /**
2330         * @return {@link #timestamp} (The time at which the expansion was produced by the expanding system.). This is the underlying object with id, value and extensions. The accessor "getTimestamp" gives direct access to the value
2331         */
2332        public DateTimeType getTimestampElement() { 
2333          if (this.timestamp == null)
2334            if (Configuration.errorOnAutoCreate())
2335              throw new Error("Attempt to auto-create ValueSetExpansionComponent.timestamp");
2336            else if (Configuration.doAutoCreate())
2337              this.timestamp = new DateTimeType(); // bb
2338          return this.timestamp;
2339        }
2340
2341        public boolean hasTimestampElement() { 
2342          return this.timestamp != null && !this.timestamp.isEmpty();
2343        }
2344
2345        public boolean hasTimestamp() { 
2346          return this.timestamp != null && !this.timestamp.isEmpty();
2347        }
2348
2349        /**
2350         * @param value {@link #timestamp} (The time at which the expansion was produced by the expanding system.). This is the underlying object with id, value and extensions. The accessor "getTimestamp" gives direct access to the value
2351         */
2352        public ValueSetExpansionComponent setTimestampElement(DateTimeType value) { 
2353          this.timestamp = value;
2354          return this;
2355        }
2356
2357        /**
2358         * @return The time at which the expansion was produced by the expanding system.
2359         */
2360        public Date getTimestamp() { 
2361          return this.timestamp == null ? null : this.timestamp.getValue();
2362        }
2363
2364        /**
2365         * @param value The time at which the expansion was produced by the expanding system.
2366         */
2367        public ValueSetExpansionComponent setTimestamp(Date value) { 
2368            if (this.timestamp == null)
2369              this.timestamp = new DateTimeType();
2370            this.timestamp.setValue(value);
2371          return this;
2372        }
2373
2374        /**
2375         * @return {@link #total} (The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter.). This is the underlying object with id, value and extensions. The accessor "getTotal" gives direct access to the value
2376         */
2377        public IntegerType getTotalElement() { 
2378          if (this.total == null)
2379            if (Configuration.errorOnAutoCreate())
2380              throw new Error("Attempt to auto-create ValueSetExpansionComponent.total");
2381            else if (Configuration.doAutoCreate())
2382              this.total = new IntegerType(); // bb
2383          return this.total;
2384        }
2385
2386        public boolean hasTotalElement() { 
2387          return this.total != null && !this.total.isEmpty();
2388        }
2389
2390        public boolean hasTotal() { 
2391          return this.total != null && !this.total.isEmpty();
2392        }
2393
2394        /**
2395         * @param value {@link #total} (The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter.). This is the underlying object with id, value and extensions. The accessor "getTotal" gives direct access to the value
2396         */
2397        public ValueSetExpansionComponent setTotalElement(IntegerType value) { 
2398          this.total = value;
2399          return this;
2400        }
2401
2402        /**
2403         * @return The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter.
2404         */
2405        public int getTotal() { 
2406          return this.total == null || this.total.isEmpty() ? 0 : this.total.getValue();
2407        }
2408
2409        /**
2410         * @param value The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter.
2411         */
2412        public ValueSetExpansionComponent setTotal(int value) { 
2413            if (this.total == null)
2414              this.total = new IntegerType();
2415            this.total.setValue(value);
2416          return this;
2417        }
2418
2419        /**
2420         * @return {@link #offset} (If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present.). This is the underlying object with id, value and extensions. The accessor "getOffset" gives direct access to the value
2421         */
2422        public IntegerType getOffsetElement() { 
2423          if (this.offset == null)
2424            if (Configuration.errorOnAutoCreate())
2425              throw new Error("Attempt to auto-create ValueSetExpansionComponent.offset");
2426            else if (Configuration.doAutoCreate())
2427              this.offset = new IntegerType(); // bb
2428          return this.offset;
2429        }
2430
2431        public boolean hasOffsetElement() { 
2432          return this.offset != null && !this.offset.isEmpty();
2433        }
2434
2435        public boolean hasOffset() { 
2436          return this.offset != null && !this.offset.isEmpty();
2437        }
2438
2439        /**
2440         * @param value {@link #offset} (If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present.). This is the underlying object with id, value and extensions. The accessor "getOffset" gives direct access to the value
2441         */
2442        public ValueSetExpansionComponent setOffsetElement(IntegerType value) { 
2443          this.offset = value;
2444          return this;
2445        }
2446
2447        /**
2448         * @return If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present.
2449         */
2450        public int getOffset() { 
2451          return this.offset == null || this.offset.isEmpty() ? 0 : this.offset.getValue();
2452        }
2453
2454        /**
2455         * @param value If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present.
2456         */
2457        public ValueSetExpansionComponent setOffset(int value) { 
2458            if (this.offset == null)
2459              this.offset = new IntegerType();
2460            this.offset.setValue(value);
2461          return this;
2462        }
2463
2464        /**
2465         * @return {@link #parameter} (A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion.)
2466         */
2467        public List<ValueSetExpansionParameterComponent> getParameter() { 
2468          if (this.parameter == null)
2469            this.parameter = new ArrayList<ValueSetExpansionParameterComponent>();
2470          return this.parameter;
2471        }
2472
2473        /**
2474         * @return Returns a reference to <code>this</code> for easy method chaining
2475         */
2476        public ValueSetExpansionComponent setParameter(List<ValueSetExpansionParameterComponent> theParameter) { 
2477          this.parameter = theParameter;
2478          return this;
2479        }
2480
2481        public boolean hasParameter() { 
2482          if (this.parameter == null)
2483            return false;
2484          for (ValueSetExpansionParameterComponent item : this.parameter)
2485            if (!item.isEmpty())
2486              return true;
2487          return false;
2488        }
2489
2490        public ValueSetExpansionParameterComponent addParameter() { //3
2491          ValueSetExpansionParameterComponent t = new ValueSetExpansionParameterComponent();
2492          if (this.parameter == null)
2493            this.parameter = new ArrayList<ValueSetExpansionParameterComponent>();
2494          this.parameter.add(t);
2495          return t;
2496        }
2497
2498        public ValueSetExpansionComponent addParameter(ValueSetExpansionParameterComponent t) { //3
2499          if (t == null)
2500            return this;
2501          if (this.parameter == null)
2502            this.parameter = new ArrayList<ValueSetExpansionParameterComponent>();
2503          this.parameter.add(t);
2504          return this;
2505        }
2506
2507        /**
2508         * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist {3}
2509         */
2510        public ValueSetExpansionParameterComponent getParameterFirstRep() { 
2511          if (getParameter().isEmpty()) {
2512            addParameter();
2513          }
2514          return getParameter().get(0);
2515        }
2516
2517        /**
2518         * @return {@link #property} (A property defines an additional slot through which additional information can be provided about a concept.)
2519         */
2520        public List<ValueSetExpansionPropertyComponent> getProperty() { 
2521          if (this.property == null)
2522            this.property = new ArrayList<ValueSetExpansionPropertyComponent>();
2523          return this.property;
2524        }
2525
2526        /**
2527         * @return Returns a reference to <code>this</code> for easy method chaining
2528         */
2529        public ValueSetExpansionComponent setProperty(List<ValueSetExpansionPropertyComponent> theProperty) { 
2530          this.property = theProperty;
2531          return this;
2532        }
2533
2534        public boolean hasProperty() { 
2535          if (this.property == null)
2536            return false;
2537          for (ValueSetExpansionPropertyComponent item : this.property)
2538            if (!item.isEmpty())
2539              return true;
2540          return false;
2541        }
2542
2543        public ValueSetExpansionPropertyComponent addProperty() { //3
2544          ValueSetExpansionPropertyComponent t = new ValueSetExpansionPropertyComponent();
2545          if (this.property == null)
2546            this.property = new ArrayList<ValueSetExpansionPropertyComponent>();
2547          this.property.add(t);
2548          return t;
2549        }
2550
2551        public ValueSetExpansionComponent addProperty(ValueSetExpansionPropertyComponent t) { //3
2552          if (t == null)
2553            return this;
2554          if (this.property == null)
2555            this.property = new ArrayList<ValueSetExpansionPropertyComponent>();
2556          this.property.add(t);
2557          return this;
2558        }
2559
2560        /**
2561         * @return The first repetition of repeating field {@link #property}, creating it if it does not already exist {3}
2562         */
2563        public ValueSetExpansionPropertyComponent getPropertyFirstRep() { 
2564          if (getProperty().isEmpty()) {
2565            addProperty();
2566          }
2567          return getProperty().get(0);
2568        }
2569
2570        /**
2571         * @return {@link #contains} (The codes that are contained in the value set expansion.)
2572         */
2573        public List<ValueSetExpansionContainsComponent> getContains() { 
2574          if (this.contains == null)
2575            this.contains = new ArrayList<ValueSetExpansionContainsComponent>();
2576          return this.contains;
2577        }
2578
2579        /**
2580         * @return Returns a reference to <code>this</code> for easy method chaining
2581         */
2582        public ValueSetExpansionComponent setContains(List<ValueSetExpansionContainsComponent> theContains) { 
2583          this.contains = theContains;
2584          return this;
2585        }
2586
2587        public boolean hasContains() { 
2588          if (this.contains == null)
2589            return false;
2590          for (ValueSetExpansionContainsComponent item : this.contains)
2591            if (!item.isEmpty())
2592              return true;
2593          return false;
2594        }
2595
2596        public ValueSetExpansionContainsComponent addContains() { //3
2597          ValueSetExpansionContainsComponent t = new ValueSetExpansionContainsComponent();
2598          if (this.contains == null)
2599            this.contains = new ArrayList<ValueSetExpansionContainsComponent>();
2600          this.contains.add(t);
2601          return t;
2602        }
2603
2604        public ValueSetExpansionComponent addContains(ValueSetExpansionContainsComponent t) { //3
2605          if (t == null)
2606            return this;
2607          if (this.contains == null)
2608            this.contains = new ArrayList<ValueSetExpansionContainsComponent>();
2609          this.contains.add(t);
2610          return this;
2611        }
2612
2613        /**
2614         * @return The first repetition of repeating field {@link #contains}, creating it if it does not already exist {3}
2615         */
2616        public ValueSetExpansionContainsComponent getContainsFirstRep() { 
2617          if (getContains().isEmpty()) {
2618            addContains();
2619          }
2620          return getContains().get(0);
2621        }
2622
2623        protected void listChildren(List<Property> children) {
2624          super.listChildren(children);
2625          children.add(new Property("identifier", "uri", "An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier.", 0, 1, identifier));
2626          children.add(new Property("next", "uri", "As per paging Search results, the next URLs are opaque to the client, have no dictated structure, and only the server understands them.", 0, 1, next));
2627          children.add(new Property("timestamp", "dateTime", "The time at which the expansion was produced by the expanding system.", 0, 1, timestamp));
2628          children.add(new Property("total", "integer", "The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter.", 0, 1, total));
2629          children.add(new Property("offset", "integer", "If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present.", 0, 1, offset));
2630          children.add(new Property("parameter", "", "A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion.", 0, java.lang.Integer.MAX_VALUE, parameter));
2631          children.add(new Property("property", "", "A property defines an additional slot through which additional information can be provided about a concept.", 0, java.lang.Integer.MAX_VALUE, property));
2632          children.add(new Property("contains", "", "The codes that are contained in the value set expansion.", 0, java.lang.Integer.MAX_VALUE, contains));
2633        }
2634
2635        @Override
2636        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2637          switch (_hash) {
2638          case -1618432855: /*identifier*/  return new Property("identifier", "uri", "An identifier that uniquely identifies this expansion of the valueset, based on a unique combination of the provided parameters, the system default parameters, and the underlying system code system versions etc. Systems may re-use the same identifier as long as those factors remain the same, and the expansion is the same, but are not required to do so. This is a business identifier.", 0, 1, identifier);
2639          case 3377907: /*next*/  return new Property("next", "uri", "As per paging Search results, the next URLs are opaque to the client, have no dictated structure, and only the server understands them.", 0, 1, next);
2640          case 55126294: /*timestamp*/  return new Property("timestamp", "dateTime", "The time at which the expansion was produced by the expanding system.", 0, 1, timestamp);
2641          case 110549828: /*total*/  return new Property("total", "integer", "The total number of concepts in the expansion. If the number of concept nodes in this resource is less than the stated number, then the server can return more using the offset parameter.", 0, 1, total);
2642          case -1019779949: /*offset*/  return new Property("offset", "integer", "If paging is being used, the offset at which this resource starts.  I.e. this resource is a partial view into the expansion. If paging is not being used, this element SHALL NOT be present.", 0, 1, offset);
2643          case 1954460585: /*parameter*/  return new Property("parameter", "", "A parameter that controlled the expansion process. These parameters may be used by users of expanded value sets to check whether the expansion is suitable for a particular purpose, or to pick the correct expansion.", 0, java.lang.Integer.MAX_VALUE, parameter);
2644          case -993141291: /*property*/  return new Property("property", "", "A property defines an additional slot through which additional information can be provided about a concept.", 0, java.lang.Integer.MAX_VALUE, property);
2645          case -567445985: /*contains*/  return new Property("contains", "", "The codes that are contained in the value set expansion.", 0, java.lang.Integer.MAX_VALUE, contains);
2646          default: return super.getNamedProperty(_hash, _name, _checkValid);
2647          }
2648
2649        }
2650
2651      @Override
2652      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2653        switch (hash) {
2654        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // UriType
2655        case 3377907: /*next*/ return this.next == null ? new Base[0] : new Base[] {this.next}; // UriType
2656        case 55126294: /*timestamp*/ return this.timestamp == null ? new Base[0] : new Base[] {this.timestamp}; // DateTimeType
2657        case 110549828: /*total*/ return this.total == null ? new Base[0] : new Base[] {this.total}; // IntegerType
2658        case -1019779949: /*offset*/ return this.offset == null ? new Base[0] : new Base[] {this.offset}; // IntegerType
2659        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // ValueSetExpansionParameterComponent
2660        case -993141291: /*property*/ return this.property == null ? new Base[0] : this.property.toArray(new Base[this.property.size()]); // ValueSetExpansionPropertyComponent
2661        case -567445985: /*contains*/ return this.contains == null ? new Base[0] : this.contains.toArray(new Base[this.contains.size()]); // ValueSetExpansionContainsComponent
2662        default: return super.getProperty(hash, name, checkValid);
2663        }
2664
2665      }
2666
2667      @Override
2668      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2669        switch (hash) {
2670        case -1618432855: // identifier
2671          this.identifier = TypeConvertor.castToUri(value); // UriType
2672          return value;
2673        case 3377907: // next
2674          this.next = TypeConvertor.castToUri(value); // UriType
2675          return value;
2676        case 55126294: // timestamp
2677          this.timestamp = TypeConvertor.castToDateTime(value); // DateTimeType
2678          return value;
2679        case 110549828: // total
2680          this.total = TypeConvertor.castToInteger(value); // IntegerType
2681          return value;
2682        case -1019779949: // offset
2683          this.offset = TypeConvertor.castToInteger(value); // IntegerType
2684          return value;
2685        case 1954460585: // parameter
2686          this.getParameter().add((ValueSetExpansionParameterComponent) value); // ValueSetExpansionParameterComponent
2687          return value;
2688        case -993141291: // property
2689          this.getProperty().add((ValueSetExpansionPropertyComponent) value); // ValueSetExpansionPropertyComponent
2690          return value;
2691        case -567445985: // contains
2692          this.getContains().add((ValueSetExpansionContainsComponent) value); // ValueSetExpansionContainsComponent
2693          return value;
2694        default: return super.setProperty(hash, name, value);
2695        }
2696
2697      }
2698
2699      @Override
2700      public Base setProperty(String name, Base value) throws FHIRException {
2701        if (name.equals("identifier")) {
2702          this.identifier = TypeConvertor.castToUri(value); // UriType
2703        } else if (name.equals("next")) {
2704          this.next = TypeConvertor.castToUri(value); // UriType
2705        } else if (name.equals("timestamp")) {
2706          this.timestamp = TypeConvertor.castToDateTime(value); // DateTimeType
2707        } else if (name.equals("total")) {
2708          this.total = TypeConvertor.castToInteger(value); // IntegerType
2709        } else if (name.equals("offset")) {
2710          this.offset = TypeConvertor.castToInteger(value); // IntegerType
2711        } else if (name.equals("parameter")) {
2712          this.getParameter().add((ValueSetExpansionParameterComponent) value);
2713        } else if (name.equals("property")) {
2714          this.getProperty().add((ValueSetExpansionPropertyComponent) value);
2715        } else if (name.equals("contains")) {
2716          this.getContains().add((ValueSetExpansionContainsComponent) value);
2717        } else
2718          return super.setProperty(name, value);
2719        return value;
2720      }
2721
2722      @Override
2723      public Base makeProperty(int hash, String name) throws FHIRException {
2724        switch (hash) {
2725        case -1618432855:  return getIdentifierElement();
2726        case 3377907:  return getNextElement();
2727        case 55126294:  return getTimestampElement();
2728        case 110549828:  return getTotalElement();
2729        case -1019779949:  return getOffsetElement();
2730        case 1954460585:  return addParameter(); 
2731        case -993141291:  return addProperty(); 
2732        case -567445985:  return addContains(); 
2733        default: return super.makeProperty(hash, name);
2734        }
2735
2736      }
2737
2738      @Override
2739      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2740        switch (hash) {
2741        case -1618432855: /*identifier*/ return new String[] {"uri"};
2742        case 3377907: /*next*/ return new String[] {"uri"};
2743        case 55126294: /*timestamp*/ return new String[] {"dateTime"};
2744        case 110549828: /*total*/ return new String[] {"integer"};
2745        case -1019779949: /*offset*/ return new String[] {"integer"};
2746        case 1954460585: /*parameter*/ return new String[] {};
2747        case -993141291: /*property*/ return new String[] {};
2748        case -567445985: /*contains*/ return new String[] {};
2749        default: return super.getTypesForProperty(hash, name);
2750        }
2751
2752      }
2753
2754      @Override
2755      public Base addChild(String name) throws FHIRException {
2756        if (name.equals("identifier")) {
2757          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.identifier");
2758        }
2759        else if (name.equals("next")) {
2760          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.next");
2761        }
2762        else if (name.equals("timestamp")) {
2763          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.timestamp");
2764        }
2765        else if (name.equals("total")) {
2766          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.total");
2767        }
2768        else if (name.equals("offset")) {
2769          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.offset");
2770        }
2771        else if (name.equals("parameter")) {
2772          return addParameter();
2773        }
2774        else if (name.equals("property")) {
2775          return addProperty();
2776        }
2777        else if (name.equals("contains")) {
2778          return addContains();
2779        }
2780        else
2781          return super.addChild(name);
2782      }
2783
2784      public ValueSetExpansionComponent copy() {
2785        ValueSetExpansionComponent dst = new ValueSetExpansionComponent();
2786        copyValues(dst);
2787        return dst;
2788      }
2789
2790      public void copyValues(ValueSetExpansionComponent dst) {
2791        super.copyValues(dst);
2792        dst.identifier = identifier == null ? null : identifier.copy();
2793        dst.next = next == null ? null : next.copy();
2794        dst.timestamp = timestamp == null ? null : timestamp.copy();
2795        dst.total = total == null ? null : total.copy();
2796        dst.offset = offset == null ? null : offset.copy();
2797        if (parameter != null) {
2798          dst.parameter = new ArrayList<ValueSetExpansionParameterComponent>();
2799          for (ValueSetExpansionParameterComponent i : parameter)
2800            dst.parameter.add(i.copy());
2801        };
2802        if (property != null) {
2803          dst.property = new ArrayList<ValueSetExpansionPropertyComponent>();
2804          for (ValueSetExpansionPropertyComponent i : property)
2805            dst.property.add(i.copy());
2806        };
2807        if (contains != null) {
2808          dst.contains = new ArrayList<ValueSetExpansionContainsComponent>();
2809          for (ValueSetExpansionContainsComponent i : contains)
2810            dst.contains.add(i.copy());
2811        };
2812      }
2813
2814      @Override
2815      public boolean equalsDeep(Base other_) {
2816        if (!super.equalsDeep(other_))
2817          return false;
2818        if (!(other_ instanceof ValueSetExpansionComponent))
2819          return false;
2820        ValueSetExpansionComponent o = (ValueSetExpansionComponent) other_;
2821        return compareDeep(identifier, o.identifier, true) && compareDeep(next, o.next, true) && compareDeep(timestamp, o.timestamp, true)
2822           && compareDeep(total, o.total, true) && compareDeep(offset, o.offset, true) && compareDeep(parameter, o.parameter, true)
2823           && compareDeep(property, o.property, true) && compareDeep(contains, o.contains, true);
2824      }
2825
2826      @Override
2827      public boolean equalsShallow(Base other_) {
2828        if (!super.equalsShallow(other_))
2829          return false;
2830        if (!(other_ instanceof ValueSetExpansionComponent))
2831          return false;
2832        ValueSetExpansionComponent o = (ValueSetExpansionComponent) other_;
2833        return compareValues(identifier, o.identifier, true) && compareValues(next, o.next, true) && compareValues(timestamp, o.timestamp, true)
2834           && compareValues(total, o.total, true) && compareValues(offset, o.offset, true);
2835      }
2836
2837      public boolean isEmpty() {
2838        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, next, timestamp
2839          , total, offset, parameter, property, contains);
2840      }
2841
2842  public String fhirType() {
2843    return "ValueSet.expansion";
2844
2845  }
2846
2847  }
2848
2849    @Block()
2850    public static class ValueSetExpansionParameterComponent extends BackboneElement implements IBaseBackboneElement {
2851        /**
2852         * Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process.
2853         */
2854        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
2855        @Description(shortDefinition="Name as assigned by the client or server", formalDefinition="Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process." )
2856        protected StringType name;
2857
2858        /**
2859         * The value of the parameter.
2860         */
2861        @Child(name = "value", type = {StringType.class, BooleanType.class, IntegerType.class, DecimalType.class, UriType.class, CodeType.class, DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
2862        @Description(shortDefinition="Value of the named parameter", formalDefinition="The value of the parameter." )
2863        protected DataType value;
2864
2865        private static final long serialVersionUID = 1839679495L;
2866
2867    /**
2868     * Constructor
2869     */
2870      public ValueSetExpansionParameterComponent() {
2871        super();
2872      }
2873
2874    /**
2875     * Constructor
2876     */
2877      public ValueSetExpansionParameterComponent(String name) {
2878        super();
2879        this.setName(name);
2880      }
2881
2882        /**
2883         * @return {@link #name} (Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2884         */
2885        public StringType getNameElement() { 
2886          if (this.name == null)
2887            if (Configuration.errorOnAutoCreate())
2888              throw new Error("Attempt to auto-create ValueSetExpansionParameterComponent.name");
2889            else if (Configuration.doAutoCreate())
2890              this.name = new StringType(); // bb
2891          return this.name;
2892        }
2893
2894        public boolean hasNameElement() { 
2895          return this.name != null && !this.name.isEmpty();
2896        }
2897
2898        public boolean hasName() { 
2899          return this.name != null && !this.name.isEmpty();
2900        }
2901
2902        /**
2903         * @param value {@link #name} (Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2904         */
2905        public ValueSetExpansionParameterComponent setNameElement(StringType value) { 
2906          this.name = value;
2907          return this;
2908        }
2909
2910        /**
2911         * @return Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process.
2912         */
2913        public String getName() { 
2914          return this.name == null ? null : this.name.getValue();
2915        }
2916
2917        /**
2918         * @param value Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process.
2919         */
2920        public ValueSetExpansionParameterComponent setName(String value) { 
2921            if (this.name == null)
2922              this.name = new StringType();
2923            this.name.setValue(value);
2924          return this;
2925        }
2926
2927        /**
2928         * @return {@link #value} (The value of the parameter.)
2929         */
2930        public DataType getValue() { 
2931          return this.value;
2932        }
2933
2934        /**
2935         * @return {@link #value} (The value of the parameter.)
2936         */
2937        public StringType getValueStringType() throws FHIRException { 
2938          if (this.value == null)
2939            this.value = new StringType();
2940          if (!(this.value instanceof StringType))
2941            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
2942          return (StringType) this.value;
2943        }
2944
2945        public boolean hasValueStringType() { 
2946          return this != null && this.value instanceof StringType;
2947        }
2948
2949        /**
2950         * @return {@link #value} (The value of the parameter.)
2951         */
2952        public BooleanType getValueBooleanType() throws FHIRException { 
2953          if (this.value == null)
2954            this.value = new BooleanType();
2955          if (!(this.value instanceof BooleanType))
2956            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
2957          return (BooleanType) this.value;
2958        }
2959
2960        public boolean hasValueBooleanType() { 
2961          return this != null && this.value instanceof BooleanType;
2962        }
2963
2964        /**
2965         * @return {@link #value} (The value of the parameter.)
2966         */
2967        public IntegerType getValueIntegerType() throws FHIRException { 
2968          if (this.value == null)
2969            this.value = new IntegerType();
2970          if (!(this.value instanceof IntegerType))
2971            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered");
2972          return (IntegerType) this.value;
2973        }
2974
2975        public boolean hasValueIntegerType() { 
2976          return this != null && this.value instanceof IntegerType;
2977        }
2978
2979        /**
2980         * @return {@link #value} (The value of the parameter.)
2981         */
2982        public DecimalType getValueDecimalType() throws FHIRException { 
2983          if (this.value == null)
2984            this.value = new DecimalType();
2985          if (!(this.value instanceof DecimalType))
2986            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered");
2987          return (DecimalType) this.value;
2988        }
2989
2990        public boolean hasValueDecimalType() { 
2991          return this != null && this.value instanceof DecimalType;
2992        }
2993
2994        /**
2995         * @return {@link #value} (The value of the parameter.)
2996         */
2997        public UriType getValueUriType() throws FHIRException { 
2998          if (this.value == null)
2999            this.value = new UriType();
3000          if (!(this.value instanceof UriType))
3001            throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.value.getClass().getName()+" was encountered");
3002          return (UriType) this.value;
3003        }
3004
3005        public boolean hasValueUriType() { 
3006          return this != null && this.value instanceof UriType;
3007        }
3008
3009        /**
3010         * @return {@link #value} (The value of the parameter.)
3011         */
3012        public CodeType getValueCodeType() throws FHIRException { 
3013          if (this.value == null)
3014            this.value = new CodeType();
3015          if (!(this.value instanceof CodeType))
3016            throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.value.getClass().getName()+" was encountered");
3017          return (CodeType) this.value;
3018        }
3019
3020        public boolean hasValueCodeType() { 
3021          return this != null && this.value instanceof CodeType;
3022        }
3023
3024        /**
3025         * @return {@link #value} (The value of the parameter.)
3026         */
3027        public DateTimeType getValueDateTimeType() throws FHIRException { 
3028          if (this.value == null)
3029            this.value = new DateTimeType();
3030          if (!(this.value instanceof DateTimeType))
3031            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.value.getClass().getName()+" was encountered");
3032          return (DateTimeType) this.value;
3033        }
3034
3035        public boolean hasValueDateTimeType() { 
3036          return this != null && this.value instanceof DateTimeType;
3037        }
3038
3039        public boolean hasValue() { 
3040          return this.value != null && !this.value.isEmpty();
3041        }
3042
3043        /**
3044         * @param value {@link #value} (The value of the parameter.)
3045         */
3046        public ValueSetExpansionParameterComponent setValue(DataType value) { 
3047          if (value != null && !(value instanceof StringType || value instanceof BooleanType || value instanceof IntegerType || value instanceof DecimalType || value instanceof UriType || value instanceof CodeType || value instanceof DateTimeType))
3048            throw new Error("Not the right type for ValueSet.expansion.parameter.value[x]: "+value.fhirType());
3049          this.value = value;
3050          return this;
3051        }
3052
3053        protected void listChildren(List<Property> children) {
3054          super.listChildren(children);
3055          children.add(new Property("name", "string", "Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process.", 0, 1, name));
3056          children.add(new Property("value[x]", "string|boolean|integer|decimal|uri|code|dateTime", "The value of the parameter.", 0, 1, value));
3057        }
3058
3059        @Override
3060        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3061          switch (_hash) {
3062          case 3373707: /*name*/  return new Property("name", "string", "Name of the input parameter to the $expand operation; may be a server-assigned name for additional default or other server-supplied parameters used to control the expansion process.", 0, 1, name);
3063          case -1410166417: /*value[x]*/  return new Property("value[x]", "string|boolean|integer|decimal|uri|code|dateTime", "The value of the parameter.", 0, 1, value);
3064          case 111972721: /*value*/  return new Property("value[x]", "string|boolean|integer|decimal|uri|code|dateTime", "The value of the parameter.", 0, 1, value);
3065          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "The value of the parameter.", 0, 1, value);
3066          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The value of the parameter.", 0, 1, value);
3067          case -1668204915: /*valueInteger*/  return new Property("value[x]", "integer", "The value of the parameter.", 0, 1, value);
3068          case -2083993440: /*valueDecimal*/  return new Property("value[x]", "decimal", "The value of the parameter.", 0, 1, value);
3069          case -1410172357: /*valueUri*/  return new Property("value[x]", "uri", "The value of the parameter.", 0, 1, value);
3070          case -766209282: /*valueCode*/  return new Property("value[x]", "code", "The value of the parameter.", 0, 1, value);
3071          case 1047929900: /*valueDateTime*/  return new Property("value[x]", "dateTime", "The value of the parameter.", 0, 1, value);
3072          default: return super.getNamedProperty(_hash, _name, _checkValid);
3073          }
3074
3075        }
3076
3077      @Override
3078      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3079        switch (hash) {
3080        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3081        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
3082        default: return super.getProperty(hash, name, checkValid);
3083        }
3084
3085      }
3086
3087      @Override
3088      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3089        switch (hash) {
3090        case 3373707: // name
3091          this.name = TypeConvertor.castToString(value); // StringType
3092          return value;
3093        case 111972721: // value
3094          this.value = TypeConvertor.castToType(value); // DataType
3095          return value;
3096        default: return super.setProperty(hash, name, value);
3097        }
3098
3099      }
3100
3101      @Override
3102      public Base setProperty(String name, Base value) throws FHIRException {
3103        if (name.equals("name")) {
3104          this.name = TypeConvertor.castToString(value); // StringType
3105        } else if (name.equals("value[x]")) {
3106          this.value = TypeConvertor.castToType(value); // DataType
3107        } else
3108          return super.setProperty(name, value);
3109        return value;
3110      }
3111
3112      @Override
3113      public Base makeProperty(int hash, String name) throws FHIRException {
3114        switch (hash) {
3115        case 3373707:  return getNameElement();
3116        case -1410166417:  return getValue();
3117        case 111972721:  return getValue();
3118        default: return super.makeProperty(hash, name);
3119        }
3120
3121      }
3122
3123      @Override
3124      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3125        switch (hash) {
3126        case 3373707: /*name*/ return new String[] {"string"};
3127        case 111972721: /*value*/ return new String[] {"string", "boolean", "integer", "decimal", "uri", "code", "dateTime"};
3128        default: return super.getTypesForProperty(hash, name);
3129        }
3130
3131      }
3132
3133      @Override
3134      public Base addChild(String name) throws FHIRException {
3135        if (name.equals("name")) {
3136          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.parameter.name");
3137        }
3138        else if (name.equals("valueString")) {
3139          this.value = new StringType();
3140          return this.value;
3141        }
3142        else if (name.equals("valueBoolean")) {
3143          this.value = new BooleanType();
3144          return this.value;
3145        }
3146        else if (name.equals("valueInteger")) {
3147          this.value = new IntegerType();
3148          return this.value;
3149        }
3150        else if (name.equals("valueDecimal")) {
3151          this.value = new DecimalType();
3152          return this.value;
3153        }
3154        else if (name.equals("valueUri")) {
3155          this.value = new UriType();
3156          return this.value;
3157        }
3158        else if (name.equals("valueCode")) {
3159          this.value = new CodeType();
3160          return this.value;
3161        }
3162        else if (name.equals("valueDateTime")) {
3163          this.value = new DateTimeType();
3164          return this.value;
3165        }
3166        else
3167          return super.addChild(name);
3168      }
3169
3170      public ValueSetExpansionParameterComponent copy() {
3171        ValueSetExpansionParameterComponent dst = new ValueSetExpansionParameterComponent();
3172        copyValues(dst);
3173        return dst;
3174      }
3175
3176      public void copyValues(ValueSetExpansionParameterComponent dst) {
3177        super.copyValues(dst);
3178        dst.name = name == null ? null : name.copy();
3179        dst.value = value == null ? null : value.copy();
3180      }
3181
3182      @Override
3183      public boolean equalsDeep(Base other_) {
3184        if (!super.equalsDeep(other_))
3185          return false;
3186        if (!(other_ instanceof ValueSetExpansionParameterComponent))
3187          return false;
3188        ValueSetExpansionParameterComponent o = (ValueSetExpansionParameterComponent) other_;
3189        return compareDeep(name, o.name, true) && compareDeep(value, o.value, true);
3190      }
3191
3192      @Override
3193      public boolean equalsShallow(Base other_) {
3194        if (!super.equalsShallow(other_))
3195          return false;
3196        if (!(other_ instanceof ValueSetExpansionParameterComponent))
3197          return false;
3198        ValueSetExpansionParameterComponent o = (ValueSetExpansionParameterComponent) other_;
3199        return compareValues(name, o.name, true);
3200      }
3201
3202      public boolean isEmpty() {
3203        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, value);
3204      }
3205
3206  public String fhirType() {
3207    return "ValueSet.expansion.parameter";
3208
3209  }
3210
3211  }
3212
3213    @Block()
3214    public static class ValueSetExpansionPropertyComponent extends BackboneElement implements IBaseBackboneElement {
3215        /**
3216         * A code that is used to identify the property. The code is used in ValueSet.expansion.contains.property.code.
3217         */
3218        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
3219        @Description(shortDefinition="Identifies the property on the concepts, and when referred to in operations", formalDefinition="A code that is used to identify the property. The code is used in ValueSet.expansion.contains.property.code." )
3220        protected CodeType code;
3221
3222        /**
3223         * Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system.
3224         */
3225        @Child(name = "uri", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=false)
3226        @Description(shortDefinition="Formal identifier for the property", formalDefinition="Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system." )
3227        protected UriType uri;
3228
3229        private static final long serialVersionUID = 929575836L;
3230
3231    /**
3232     * Constructor
3233     */
3234      public ValueSetExpansionPropertyComponent() {
3235        super();
3236      }
3237
3238    /**
3239     * Constructor
3240     */
3241      public ValueSetExpansionPropertyComponent(String code) {
3242        super();
3243        this.setCode(code);
3244      }
3245
3246        /**
3247         * @return {@link #code} (A code that is used to identify the property. The code is used in ValueSet.expansion.contains.property.code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
3248         */
3249        public CodeType getCodeElement() { 
3250          if (this.code == null)
3251            if (Configuration.errorOnAutoCreate())
3252              throw new Error("Attempt to auto-create ValueSetExpansionPropertyComponent.code");
3253            else if (Configuration.doAutoCreate())
3254              this.code = new CodeType(); // bb
3255          return this.code;
3256        }
3257
3258        public boolean hasCodeElement() { 
3259          return this.code != null && !this.code.isEmpty();
3260        }
3261
3262        public boolean hasCode() { 
3263          return this.code != null && !this.code.isEmpty();
3264        }
3265
3266        /**
3267         * @param value {@link #code} (A code that is used to identify the property. The code is used in ValueSet.expansion.contains.property.code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
3268         */
3269        public ValueSetExpansionPropertyComponent setCodeElement(CodeType value) { 
3270          this.code = value;
3271          return this;
3272        }
3273
3274        /**
3275         * @return A code that is used to identify the property. The code is used in ValueSet.expansion.contains.property.code.
3276         */
3277        public String getCode() { 
3278          return this.code == null ? null : this.code.getValue();
3279        }
3280
3281        /**
3282         * @param value A code that is used to identify the property. The code is used in ValueSet.expansion.contains.property.code.
3283         */
3284        public ValueSetExpansionPropertyComponent setCode(String value) { 
3285            if (this.code == null)
3286              this.code = new CodeType();
3287            this.code.setValue(value);
3288          return this;
3289        }
3290
3291        /**
3292         * @return {@link #uri} (Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system.). This is the underlying object with id, value and extensions. The accessor "getUri" gives direct access to the value
3293         */
3294        public UriType getUriElement() { 
3295          if (this.uri == null)
3296            if (Configuration.errorOnAutoCreate())
3297              throw new Error("Attempt to auto-create ValueSetExpansionPropertyComponent.uri");
3298            else if (Configuration.doAutoCreate())
3299              this.uri = new UriType(); // bb
3300          return this.uri;
3301        }
3302
3303        public boolean hasUriElement() { 
3304          return this.uri != null && !this.uri.isEmpty();
3305        }
3306
3307        public boolean hasUri() { 
3308          return this.uri != null && !this.uri.isEmpty();
3309        }
3310
3311        /**
3312         * @param value {@link #uri} (Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system.). This is the underlying object with id, value and extensions. The accessor "getUri" gives direct access to the value
3313         */
3314        public ValueSetExpansionPropertyComponent setUriElement(UriType value) { 
3315          this.uri = value;
3316          return this;
3317        }
3318
3319        /**
3320         * @return Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system.
3321         */
3322        public String getUri() { 
3323          return this.uri == null ? null : this.uri.getValue();
3324        }
3325
3326        /**
3327         * @param value Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system.
3328         */
3329        public ValueSetExpansionPropertyComponent setUri(String value) { 
3330          if (Utilities.noString(value))
3331            this.uri = null;
3332          else {
3333            if (this.uri == null)
3334              this.uri = new UriType();
3335            this.uri.setValue(value);
3336          }
3337          return this;
3338        }
3339
3340        protected void listChildren(List<Property> children) {
3341          super.listChildren(children);
3342          children.add(new Property("code", "code", "A code that is used to identify the property. The code is used in ValueSet.expansion.contains.property.code.", 0, 1, code));
3343          children.add(new Property("uri", "uri", "Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system.", 0, 1, uri));
3344        }
3345
3346        @Override
3347        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3348          switch (_hash) {
3349          case 3059181: /*code*/  return new Property("code", "code", "A code that is used to identify the property. The code is used in ValueSet.expansion.contains.property.code.", 0, 1, code);
3350          case 116076: /*uri*/  return new Property("uri", "uri", "Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system.", 0, 1, uri);
3351          default: return super.getNamedProperty(_hash, _name, _checkValid);
3352          }
3353
3354        }
3355
3356      @Override
3357      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3358        switch (hash) {
3359        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
3360        case 116076: /*uri*/ return this.uri == null ? new Base[0] : new Base[] {this.uri}; // UriType
3361        default: return super.getProperty(hash, name, checkValid);
3362        }
3363
3364      }
3365
3366      @Override
3367      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3368        switch (hash) {
3369        case 3059181: // code
3370          this.code = TypeConvertor.castToCode(value); // CodeType
3371          return value;
3372        case 116076: // uri
3373          this.uri = TypeConvertor.castToUri(value); // UriType
3374          return value;
3375        default: return super.setProperty(hash, name, value);
3376        }
3377
3378      }
3379
3380      @Override
3381      public Base setProperty(String name, Base value) throws FHIRException {
3382        if (name.equals("code")) {
3383          this.code = TypeConvertor.castToCode(value); // CodeType
3384        } else if (name.equals("uri")) {
3385          this.uri = TypeConvertor.castToUri(value); // UriType
3386        } else
3387          return super.setProperty(name, value);
3388        return value;
3389      }
3390
3391      @Override
3392      public Base makeProperty(int hash, String name) throws FHIRException {
3393        switch (hash) {
3394        case 3059181:  return getCodeElement();
3395        case 116076:  return getUriElement();
3396        default: return super.makeProperty(hash, name);
3397        }
3398
3399      }
3400
3401      @Override
3402      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3403        switch (hash) {
3404        case 3059181: /*code*/ return new String[] {"code"};
3405        case 116076: /*uri*/ return new String[] {"uri"};
3406        default: return super.getTypesForProperty(hash, name);
3407        }
3408
3409      }
3410
3411      @Override
3412      public Base addChild(String name) throws FHIRException {
3413        if (name.equals("code")) {
3414          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.property.code");
3415        }
3416        else if (name.equals("uri")) {
3417          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.property.uri");
3418        }
3419        else
3420          return super.addChild(name);
3421      }
3422
3423      public ValueSetExpansionPropertyComponent copy() {
3424        ValueSetExpansionPropertyComponent dst = new ValueSetExpansionPropertyComponent();
3425        copyValues(dst);
3426        return dst;
3427      }
3428
3429      public void copyValues(ValueSetExpansionPropertyComponent dst) {
3430        super.copyValues(dst);
3431        dst.code = code == null ? null : code.copy();
3432        dst.uri = uri == null ? null : uri.copy();
3433      }
3434
3435      @Override
3436      public boolean equalsDeep(Base other_) {
3437        if (!super.equalsDeep(other_))
3438          return false;
3439        if (!(other_ instanceof ValueSetExpansionPropertyComponent))
3440          return false;
3441        ValueSetExpansionPropertyComponent o = (ValueSetExpansionPropertyComponent) other_;
3442        return compareDeep(code, o.code, true) && compareDeep(uri, o.uri, true);
3443      }
3444
3445      @Override
3446      public boolean equalsShallow(Base other_) {
3447        if (!super.equalsShallow(other_))
3448          return false;
3449        if (!(other_ instanceof ValueSetExpansionPropertyComponent))
3450          return false;
3451        ValueSetExpansionPropertyComponent o = (ValueSetExpansionPropertyComponent) other_;
3452        return compareValues(code, o.code, true) && compareValues(uri, o.uri, true);
3453      }
3454
3455      public boolean isEmpty() {
3456        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, uri);
3457      }
3458
3459  public String fhirType() {
3460    return "ValueSet.expansion.property";
3461
3462  }
3463
3464  }
3465
3466    @Block()
3467    public static class ValueSetExpansionContainsComponent extends BackboneElement implements IBaseBackboneElement {
3468        /**
3469         * An absolute URI which is the code system in which the code for this item in the expansion is defined.
3470         */
3471        @Child(name = "system", type = {UriType.class}, order=1, min=0, max=1, modifier=false, summary=false)
3472        @Description(shortDefinition="System value for the code", formalDefinition="An absolute URI which is the code system in which the code for this item in the expansion is defined." )
3473        protected UriType system;
3474
3475        /**
3476         * If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value.
3477         */
3478        @Child(name = "abstract", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
3479        @Description(shortDefinition="If user cannot select this entry", formalDefinition="If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value." )
3480        protected BooleanType abstract_;
3481
3482        /**
3483         * If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether an concept is inactive (and it may depend on the context of use).
3484         */
3485        @Child(name = "inactive", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=false)
3486        @Description(shortDefinition="If concept is inactive in the code system", formalDefinition="If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether an concept is inactive (and it may depend on the context of use)." )
3487        protected BooleanType inactive;
3488
3489        /**
3490         * The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.
3491         */
3492        @Child(name = "version", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
3493        @Description(shortDefinition="Version in which this code/display is defined", formalDefinition="The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged." )
3494        protected StringType version;
3495
3496        /**
3497         * The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set.
3498         */
3499        @Child(name = "code", type = {CodeType.class}, order=5, min=0, max=1, modifier=false, summary=false)
3500        @Description(shortDefinition="Code - if blank, this is not a selectable code", formalDefinition="The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set." )
3501        protected CodeType code;
3502
3503        /**
3504         * The recommended display for this item in the expansion.
3505         */
3506        @Child(name = "display", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=false)
3507        @Description(shortDefinition="User display for the concept", formalDefinition="The recommended display for this item in the expansion." )
3508        protected StringType display;
3509
3510        /**
3511         * Additional representations for this item - other languages, aliases, specialized purposes, used for particular purposes, etc. These are relevant when the conditions of the expansion do not fix to a single correct representation.
3512         */
3513        @Child(name = "designation", type = {ConceptReferenceDesignationComponent.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3514        @Description(shortDefinition="Additional representations for this item", formalDefinition="Additional representations for this item - other languages, aliases, specialized purposes, used for particular purposes, etc. These are relevant when the conditions of the expansion do not fix to a single correct representation." )
3515        protected List<ConceptReferenceDesignationComponent> designation;
3516
3517        /**
3518         * A property value for this concept.
3519         */
3520        @Child(name = "property", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3521        @Description(shortDefinition="Property value for the concept", formalDefinition="A property value for this concept." )
3522        protected List<ConceptPropertyComponent> property;
3523
3524        /**
3525         * Other codes and entries contained under this entry in the hierarchy.
3526         */
3527        @Child(name = "contains", type = {ValueSetExpansionContainsComponent.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
3528        @Description(shortDefinition="Codes contained under this entry", formalDefinition="Other codes and entries contained under this entry in the hierarchy." )
3529        protected List<ValueSetExpansionContainsComponent> contains;
3530
3531        private static final long serialVersionUID = -1370569439L;
3532
3533    /**
3534     * Constructor
3535     */
3536      public ValueSetExpansionContainsComponent() {
3537        super();
3538      }
3539
3540        /**
3541         * @return {@link #system} (An absolute URI which is the code system in which the code for this item in the expansion is defined.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
3542         */
3543        public UriType getSystemElement() { 
3544          if (this.system == null)
3545            if (Configuration.errorOnAutoCreate())
3546              throw new Error("Attempt to auto-create ValueSetExpansionContainsComponent.system");
3547            else if (Configuration.doAutoCreate())
3548              this.system = new UriType(); // bb
3549          return this.system;
3550        }
3551
3552        public boolean hasSystemElement() { 
3553          return this.system != null && !this.system.isEmpty();
3554        }
3555
3556        public boolean hasSystem() { 
3557          return this.system != null && !this.system.isEmpty();
3558        }
3559
3560        /**
3561         * @param value {@link #system} (An absolute URI which is the code system in which the code for this item in the expansion is defined.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
3562         */
3563        public ValueSetExpansionContainsComponent setSystemElement(UriType value) { 
3564          this.system = value;
3565          return this;
3566        }
3567
3568        /**
3569         * @return An absolute URI which is the code system in which the code for this item in the expansion is defined.
3570         */
3571        public String getSystem() { 
3572          return this.system == null ? null : this.system.getValue();
3573        }
3574
3575        /**
3576         * @param value An absolute URI which is the code system in which the code for this item in the expansion is defined.
3577         */
3578        public ValueSetExpansionContainsComponent setSystem(String value) { 
3579          if (Utilities.noString(value))
3580            this.system = null;
3581          else {
3582            if (this.system == null)
3583              this.system = new UriType();
3584            this.system.setValue(value);
3585          }
3586          return this;
3587        }
3588
3589        /**
3590         * @return {@link #abstract_} (If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value.). This is the underlying object with id, value and extensions. The accessor "getAbstract" gives direct access to the value
3591         */
3592        public BooleanType getAbstractElement() { 
3593          if (this.abstract_ == null)
3594            if (Configuration.errorOnAutoCreate())
3595              throw new Error("Attempt to auto-create ValueSetExpansionContainsComponent.abstract_");
3596            else if (Configuration.doAutoCreate())
3597              this.abstract_ = new BooleanType(); // bb
3598          return this.abstract_;
3599        }
3600
3601        public boolean hasAbstractElement() { 
3602          return this.abstract_ != null && !this.abstract_.isEmpty();
3603        }
3604
3605        public boolean hasAbstract() { 
3606          return this.abstract_ != null && !this.abstract_.isEmpty();
3607        }
3608
3609        /**
3610         * @param value {@link #abstract_} (If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value.). This is the underlying object with id, value and extensions. The accessor "getAbstract" gives direct access to the value
3611         */
3612        public ValueSetExpansionContainsComponent setAbstractElement(BooleanType value) { 
3613          this.abstract_ = value;
3614          return this;
3615        }
3616
3617        /**
3618         * @return If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value.
3619         */
3620        public boolean getAbstract() { 
3621          return this.abstract_ == null || this.abstract_.isEmpty() ? false : this.abstract_.getValue();
3622        }
3623
3624        /**
3625         * @param value If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value.
3626         */
3627        public ValueSetExpansionContainsComponent setAbstract(boolean value) { 
3628            if (this.abstract_ == null)
3629              this.abstract_ = new BooleanType();
3630            this.abstract_.setValue(value);
3631          return this;
3632        }
3633
3634        /**
3635         * @return {@link #inactive} (If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether an concept is inactive (and it may depend on the context of use).). This is the underlying object with id, value and extensions. The accessor "getInactive" gives direct access to the value
3636         */
3637        public BooleanType getInactiveElement() { 
3638          if (this.inactive == null)
3639            if (Configuration.errorOnAutoCreate())
3640              throw new Error("Attempt to auto-create ValueSetExpansionContainsComponent.inactive");
3641            else if (Configuration.doAutoCreate())
3642              this.inactive = new BooleanType(); // bb
3643          return this.inactive;
3644        }
3645
3646        public boolean hasInactiveElement() { 
3647          return this.inactive != null && !this.inactive.isEmpty();
3648        }
3649
3650        public boolean hasInactive() { 
3651          return this.inactive != null && !this.inactive.isEmpty();
3652        }
3653
3654        /**
3655         * @param value {@link #inactive} (If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether an concept is inactive (and it may depend on the context of use).). This is the underlying object with id, value and extensions. The accessor "getInactive" gives direct access to the value
3656         */
3657        public ValueSetExpansionContainsComponent setInactiveElement(BooleanType value) { 
3658          this.inactive = value;
3659          return this;
3660        }
3661
3662        /**
3663         * @return If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether an concept is inactive (and it may depend on the context of use).
3664         */
3665        public boolean getInactive() { 
3666          return this.inactive == null || this.inactive.isEmpty() ? false : this.inactive.getValue();
3667        }
3668
3669        /**
3670         * @param value If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether an concept is inactive (and it may depend on the context of use).
3671         */
3672        public ValueSetExpansionContainsComponent setInactive(boolean value) { 
3673            if (this.inactive == null)
3674              this.inactive = new BooleanType();
3675            this.inactive.setValue(value);
3676          return this;
3677        }
3678
3679        /**
3680         * @return {@link #version} (The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
3681         */
3682        public StringType getVersionElement() { 
3683          if (this.version == null)
3684            if (Configuration.errorOnAutoCreate())
3685              throw new Error("Attempt to auto-create ValueSetExpansionContainsComponent.version");
3686            else if (Configuration.doAutoCreate())
3687              this.version = new StringType(); // bb
3688          return this.version;
3689        }
3690
3691        public boolean hasVersionElement() { 
3692          return this.version != null && !this.version.isEmpty();
3693        }
3694
3695        public boolean hasVersion() { 
3696          return this.version != null && !this.version.isEmpty();
3697        }
3698
3699        /**
3700         * @param value {@link #version} (The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
3701         */
3702        public ValueSetExpansionContainsComponent setVersionElement(StringType value) { 
3703          this.version = value;
3704          return this;
3705        }
3706
3707        /**
3708         * @return The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.
3709         */
3710        public String getVersion() { 
3711          return this.version == null ? null : this.version.getValue();
3712        }
3713
3714        /**
3715         * @param value The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.
3716         */
3717        public ValueSetExpansionContainsComponent setVersion(String value) { 
3718          if (Utilities.noString(value))
3719            this.version = null;
3720          else {
3721            if (this.version == null)
3722              this.version = new StringType();
3723            this.version.setValue(value);
3724          }
3725          return this;
3726        }
3727
3728        /**
3729         * @return {@link #code} (The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
3730         */
3731        public CodeType getCodeElement() { 
3732          if (this.code == null)
3733            if (Configuration.errorOnAutoCreate())
3734              throw new Error("Attempt to auto-create ValueSetExpansionContainsComponent.code");
3735            else if (Configuration.doAutoCreate())
3736              this.code = new CodeType(); // bb
3737          return this.code;
3738        }
3739
3740        public boolean hasCodeElement() { 
3741          return this.code != null && !this.code.isEmpty();
3742        }
3743
3744        public boolean hasCode() { 
3745          return this.code != null && !this.code.isEmpty();
3746        }
3747
3748        /**
3749         * @param value {@link #code} (The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
3750         */
3751        public ValueSetExpansionContainsComponent setCodeElement(CodeType value) { 
3752          this.code = value;
3753          return this;
3754        }
3755
3756        /**
3757         * @return The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set.
3758         */
3759        public String getCode() { 
3760          return this.code == null ? null : this.code.getValue();
3761        }
3762
3763        /**
3764         * @param value The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set.
3765         */
3766        public ValueSetExpansionContainsComponent setCode(String value) { 
3767          if (Utilities.noString(value))
3768            this.code = null;
3769          else {
3770            if (this.code == null)
3771              this.code = new CodeType();
3772            this.code.setValue(value);
3773          }
3774          return this;
3775        }
3776
3777        /**
3778         * @return {@link #display} (The recommended display for this item in the expansion.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
3779         */
3780        public StringType getDisplayElement() { 
3781          if (this.display == null)
3782            if (Configuration.errorOnAutoCreate())
3783              throw new Error("Attempt to auto-create ValueSetExpansionContainsComponent.display");
3784            else if (Configuration.doAutoCreate())
3785              this.display = new StringType(); // bb
3786          return this.display;
3787        }
3788
3789        public boolean hasDisplayElement() { 
3790          return this.display != null && !this.display.isEmpty();
3791        }
3792
3793        public boolean hasDisplay() { 
3794          return this.display != null && !this.display.isEmpty();
3795        }
3796
3797        /**
3798         * @param value {@link #display} (The recommended display for this item in the expansion.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
3799         */
3800        public ValueSetExpansionContainsComponent setDisplayElement(StringType value) { 
3801          this.display = value;
3802          return this;
3803        }
3804
3805        /**
3806         * @return The recommended display for this item in the expansion.
3807         */
3808        public String getDisplay() { 
3809          return this.display == null ? null : this.display.getValue();
3810        }
3811
3812        /**
3813         * @param value The recommended display for this item in the expansion.
3814         */
3815        public ValueSetExpansionContainsComponent setDisplay(String value) { 
3816          if (Utilities.noString(value))
3817            this.display = null;
3818          else {
3819            if (this.display == null)
3820              this.display = new StringType();
3821            this.display.setValue(value);
3822          }
3823          return this;
3824        }
3825
3826        /**
3827         * @return {@link #designation} (Additional representations for this item - other languages, aliases, specialized purposes, used for particular purposes, etc. These are relevant when the conditions of the expansion do not fix to a single correct representation.)
3828         */
3829        public List<ConceptReferenceDesignationComponent> getDesignation() { 
3830          if (this.designation == null)
3831            this.designation = new ArrayList<ConceptReferenceDesignationComponent>();
3832          return this.designation;
3833        }
3834
3835        /**
3836         * @return Returns a reference to <code>this</code> for easy method chaining
3837         */
3838        public ValueSetExpansionContainsComponent setDesignation(List<ConceptReferenceDesignationComponent> theDesignation) { 
3839          this.designation = theDesignation;
3840          return this;
3841        }
3842
3843        public boolean hasDesignation() { 
3844          if (this.designation == null)
3845            return false;
3846          for (ConceptReferenceDesignationComponent item : this.designation)
3847            if (!item.isEmpty())
3848              return true;
3849          return false;
3850        }
3851
3852        public ConceptReferenceDesignationComponent addDesignation() { //3
3853          ConceptReferenceDesignationComponent t = new ConceptReferenceDesignationComponent();
3854          if (this.designation == null)
3855            this.designation = new ArrayList<ConceptReferenceDesignationComponent>();
3856          this.designation.add(t);
3857          return t;
3858        }
3859
3860        public ValueSetExpansionContainsComponent addDesignation(ConceptReferenceDesignationComponent t) { //3
3861          if (t == null)
3862            return this;
3863          if (this.designation == null)
3864            this.designation = new ArrayList<ConceptReferenceDesignationComponent>();
3865          this.designation.add(t);
3866          return this;
3867        }
3868
3869        /**
3870         * @return The first repetition of repeating field {@link #designation}, creating it if it does not already exist {3}
3871         */
3872        public ConceptReferenceDesignationComponent getDesignationFirstRep() { 
3873          if (getDesignation().isEmpty()) {
3874            addDesignation();
3875          }
3876          return getDesignation().get(0);
3877        }
3878
3879        /**
3880         * @return {@link #property} (A property value for this concept.)
3881         */
3882        public List<ConceptPropertyComponent> getProperty() { 
3883          if (this.property == null)
3884            this.property = new ArrayList<ConceptPropertyComponent>();
3885          return this.property;
3886        }
3887
3888        /**
3889         * @return Returns a reference to <code>this</code> for easy method chaining
3890         */
3891        public ValueSetExpansionContainsComponent setProperty(List<ConceptPropertyComponent> theProperty) { 
3892          this.property = theProperty;
3893          return this;
3894        }
3895
3896        public boolean hasProperty() { 
3897          if (this.property == null)
3898            return false;
3899          for (ConceptPropertyComponent item : this.property)
3900            if (!item.isEmpty())
3901              return true;
3902          return false;
3903        }
3904
3905        public ConceptPropertyComponent addProperty() { //3
3906          ConceptPropertyComponent t = new ConceptPropertyComponent();
3907          if (this.property == null)
3908            this.property = new ArrayList<ConceptPropertyComponent>();
3909          this.property.add(t);
3910          return t;
3911        }
3912
3913        public ValueSetExpansionContainsComponent addProperty(ConceptPropertyComponent t) { //3
3914          if (t == null)
3915            return this;
3916          if (this.property == null)
3917            this.property = new ArrayList<ConceptPropertyComponent>();
3918          this.property.add(t);
3919          return this;
3920        }
3921
3922        /**
3923         * @return The first repetition of repeating field {@link #property}, creating it if it does not already exist {3}
3924         */
3925        public ConceptPropertyComponent getPropertyFirstRep() { 
3926          if (getProperty().isEmpty()) {
3927            addProperty();
3928          }
3929          return getProperty().get(0);
3930        }
3931
3932        /**
3933         * @return {@link #contains} (Other codes and entries contained under this entry in the hierarchy.)
3934         */
3935        public List<ValueSetExpansionContainsComponent> getContains() { 
3936          if (this.contains == null)
3937            this.contains = new ArrayList<ValueSetExpansionContainsComponent>();
3938          return this.contains;
3939        }
3940
3941        /**
3942         * @return Returns a reference to <code>this</code> for easy method chaining
3943         */
3944        public ValueSetExpansionContainsComponent setContains(List<ValueSetExpansionContainsComponent> theContains) { 
3945          this.contains = theContains;
3946          return this;
3947        }
3948
3949        public boolean hasContains() { 
3950          if (this.contains == null)
3951            return false;
3952          for (ValueSetExpansionContainsComponent item : this.contains)
3953            if (!item.isEmpty())
3954              return true;
3955          return false;
3956        }
3957
3958        public ValueSetExpansionContainsComponent addContains() { //3
3959          ValueSetExpansionContainsComponent t = new ValueSetExpansionContainsComponent();
3960          if (this.contains == null)
3961            this.contains = new ArrayList<ValueSetExpansionContainsComponent>();
3962          this.contains.add(t);
3963          return t;
3964        }
3965
3966        public ValueSetExpansionContainsComponent addContains(ValueSetExpansionContainsComponent t) { //3
3967          if (t == null)
3968            return this;
3969          if (this.contains == null)
3970            this.contains = new ArrayList<ValueSetExpansionContainsComponent>();
3971          this.contains.add(t);
3972          return this;
3973        }
3974
3975        /**
3976         * @return The first repetition of repeating field {@link #contains}, creating it if it does not already exist {3}
3977         */
3978        public ValueSetExpansionContainsComponent getContainsFirstRep() { 
3979          if (getContains().isEmpty()) {
3980            addContains();
3981          }
3982          return getContains().get(0);
3983        }
3984
3985        protected void listChildren(List<Property> children) {
3986          super.listChildren(children);
3987          children.add(new Property("system", "uri", "An absolute URI which is the code system in which the code for this item in the expansion is defined.", 0, 1, system));
3988          children.add(new Property("abstract", "boolean", "If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value.", 0, 1, abstract_));
3989          children.add(new Property("inactive", "boolean", "If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether an concept is inactive (and it may depend on the context of use).", 0, 1, inactive));
3990          children.add(new Property("version", "string", "The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.", 0, 1, version));
3991          children.add(new Property("code", "code", "The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set.", 0, 1, code));
3992          children.add(new Property("display", "string", "The recommended display for this item in the expansion.", 0, 1, display));
3993          children.add(new Property("designation", "@ValueSet.compose.include.concept.designation", "Additional representations for this item - other languages, aliases, specialized purposes, used for particular purposes, etc. These are relevant when the conditions of the expansion do not fix to a single correct representation.", 0, java.lang.Integer.MAX_VALUE, designation));
3994          children.add(new Property("property", "", "A property value for this concept.", 0, java.lang.Integer.MAX_VALUE, property));
3995          children.add(new Property("contains", "@ValueSet.expansion.contains", "Other codes and entries contained under this entry in the hierarchy.", 0, java.lang.Integer.MAX_VALUE, contains));
3996        }
3997
3998        @Override
3999        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4000          switch (_hash) {
4001          case -887328209: /*system*/  return new Property("system", "uri", "An absolute URI which is the code system in which the code for this item in the expansion is defined.", 0, 1, system);
4002          case 1732898850: /*abstract*/  return new Property("abstract", "boolean", "If true, this entry is included in the expansion for navigational purposes, and the user cannot select the code directly as a proper value.", 0, 1, abstract_);
4003          case 24665195: /*inactive*/  return new Property("inactive", "boolean", "If the concept is inactive in the code system that defines it. Inactive codes are those that are no longer to be used, but are maintained by the code system for understanding legacy data. It might not be known or specified whether an concept is inactive (and it may depend on the context of use).", 0, 1, inactive);
4004          case 351608024: /*version*/  return new Property("version", "string", "The version of the code system from this code was taken. Note that a well-maintained code system does not need the version reported, because the meaning of codes is consistent across versions. However this cannot consistently be assured, and when the meaning is not guaranteed to be consistent, the version SHOULD be exchanged.", 0, 1, version);
4005          case 3059181: /*code*/  return new Property("code", "code", "The code for this item in the expansion hierarchy. If this code is missing the entry in the hierarchy is a place holder (abstract) and does not represent a valid code in the value set.", 0, 1, code);
4006          case 1671764162: /*display*/  return new Property("display", "string", "The recommended display for this item in the expansion.", 0, 1, display);
4007          case -900931593: /*designation*/  return new Property("designation", "@ValueSet.compose.include.concept.designation", "Additional representations for this item - other languages, aliases, specialized purposes, used for particular purposes, etc. These are relevant when the conditions of the expansion do not fix to a single correct representation.", 0, java.lang.Integer.MAX_VALUE, designation);
4008          case -993141291: /*property*/  return new Property("property", "", "A property value for this concept.", 0, java.lang.Integer.MAX_VALUE, property);
4009          case -567445985: /*contains*/  return new Property("contains", "@ValueSet.expansion.contains", "Other codes and entries contained under this entry in the hierarchy.", 0, java.lang.Integer.MAX_VALUE, contains);
4010          default: return super.getNamedProperty(_hash, _name, _checkValid);
4011          }
4012
4013        }
4014
4015      @Override
4016      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4017        switch (hash) {
4018        case -887328209: /*system*/ return this.system == null ? new Base[0] : new Base[] {this.system}; // UriType
4019        case 1732898850: /*abstract*/ return this.abstract_ == null ? new Base[0] : new Base[] {this.abstract_}; // BooleanType
4020        case 24665195: /*inactive*/ return this.inactive == null ? new Base[0] : new Base[] {this.inactive}; // BooleanType
4021        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
4022        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
4023        case 1671764162: /*display*/ return this.display == null ? new Base[0] : new Base[] {this.display}; // StringType
4024        case -900931593: /*designation*/ return this.designation == null ? new Base[0] : this.designation.toArray(new Base[this.designation.size()]); // ConceptReferenceDesignationComponent
4025        case -993141291: /*property*/ return this.property == null ? new Base[0] : this.property.toArray(new Base[this.property.size()]); // ConceptPropertyComponent
4026        case -567445985: /*contains*/ return this.contains == null ? new Base[0] : this.contains.toArray(new Base[this.contains.size()]); // ValueSetExpansionContainsComponent
4027        default: return super.getProperty(hash, name, checkValid);
4028        }
4029
4030      }
4031
4032      @Override
4033      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4034        switch (hash) {
4035        case -887328209: // system
4036          this.system = TypeConvertor.castToUri(value); // UriType
4037          return value;
4038        case 1732898850: // abstract
4039          this.abstract_ = TypeConvertor.castToBoolean(value); // BooleanType
4040          return value;
4041        case 24665195: // inactive
4042          this.inactive = TypeConvertor.castToBoolean(value); // BooleanType
4043          return value;
4044        case 351608024: // version
4045          this.version = TypeConvertor.castToString(value); // StringType
4046          return value;
4047        case 3059181: // code
4048          this.code = TypeConvertor.castToCode(value); // CodeType
4049          return value;
4050        case 1671764162: // display
4051          this.display = TypeConvertor.castToString(value); // StringType
4052          return value;
4053        case -900931593: // designation
4054          this.getDesignation().add((ConceptReferenceDesignationComponent) value); // ConceptReferenceDesignationComponent
4055          return value;
4056        case -993141291: // property
4057          this.getProperty().add((ConceptPropertyComponent) value); // ConceptPropertyComponent
4058          return value;
4059        case -567445985: // contains
4060          this.getContains().add((ValueSetExpansionContainsComponent) value); // ValueSetExpansionContainsComponent
4061          return value;
4062        default: return super.setProperty(hash, name, value);
4063        }
4064
4065      }
4066
4067      @Override
4068      public Base setProperty(String name, Base value) throws FHIRException {
4069        if (name.equals("system")) {
4070          this.system = TypeConvertor.castToUri(value); // UriType
4071        } else if (name.equals("abstract")) {
4072          this.abstract_ = TypeConvertor.castToBoolean(value); // BooleanType
4073        } else if (name.equals("inactive")) {
4074          this.inactive = TypeConvertor.castToBoolean(value); // BooleanType
4075        } else if (name.equals("version")) {
4076          this.version = TypeConvertor.castToString(value); // StringType
4077        } else if (name.equals("code")) {
4078          this.code = TypeConvertor.castToCode(value); // CodeType
4079        } else if (name.equals("display")) {
4080          this.display = TypeConvertor.castToString(value); // StringType
4081        } else if (name.equals("designation")) {
4082          this.getDesignation().add((ConceptReferenceDesignationComponent) value);
4083        } else if (name.equals("property")) {
4084          this.getProperty().add((ConceptPropertyComponent) value);
4085        } else if (name.equals("contains")) {
4086          this.getContains().add((ValueSetExpansionContainsComponent) value);
4087        } else
4088          return super.setProperty(name, value);
4089        return value;
4090      }
4091
4092      @Override
4093      public Base makeProperty(int hash, String name) throws FHIRException {
4094        switch (hash) {
4095        case -887328209:  return getSystemElement();
4096        case 1732898850:  return getAbstractElement();
4097        case 24665195:  return getInactiveElement();
4098        case 351608024:  return getVersionElement();
4099        case 3059181:  return getCodeElement();
4100        case 1671764162:  return getDisplayElement();
4101        case -900931593:  return addDesignation(); 
4102        case -993141291:  return addProperty(); 
4103        case -567445985:  return addContains(); 
4104        default: return super.makeProperty(hash, name);
4105        }
4106
4107      }
4108
4109      @Override
4110      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4111        switch (hash) {
4112        case -887328209: /*system*/ return new String[] {"uri"};
4113        case 1732898850: /*abstract*/ return new String[] {"boolean"};
4114        case 24665195: /*inactive*/ return new String[] {"boolean"};
4115        case 351608024: /*version*/ return new String[] {"string"};
4116        case 3059181: /*code*/ return new String[] {"code"};
4117        case 1671764162: /*display*/ return new String[] {"string"};
4118        case -900931593: /*designation*/ return new String[] {"@ValueSet.compose.include.concept.designation"};
4119        case -993141291: /*property*/ return new String[] {};
4120        case -567445985: /*contains*/ return new String[] {"@ValueSet.expansion.contains"};
4121        default: return super.getTypesForProperty(hash, name);
4122        }
4123
4124      }
4125
4126      @Override
4127      public Base addChild(String name) throws FHIRException {
4128        if (name.equals("system")) {
4129          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.contains.system");
4130        }
4131        else if (name.equals("abstract")) {
4132          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.contains.abstract");
4133        }
4134        else if (name.equals("inactive")) {
4135          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.contains.inactive");
4136        }
4137        else if (name.equals("version")) {
4138          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.contains.version");
4139        }
4140        else if (name.equals("code")) {
4141          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.contains.code");
4142        }
4143        else if (name.equals("display")) {
4144          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.contains.display");
4145        }
4146        else if (name.equals("designation")) {
4147          return addDesignation();
4148        }
4149        else if (name.equals("property")) {
4150          return addProperty();
4151        }
4152        else if (name.equals("contains")) {
4153          return addContains();
4154        }
4155        else
4156          return super.addChild(name);
4157      }
4158
4159      public ValueSetExpansionContainsComponent copy() {
4160        ValueSetExpansionContainsComponent dst = new ValueSetExpansionContainsComponent();
4161        copyValues(dst);
4162        return dst;
4163      }
4164
4165      public void copyValues(ValueSetExpansionContainsComponent dst) {
4166        super.copyValues(dst);
4167        dst.system = system == null ? null : system.copy();
4168        dst.abstract_ = abstract_ == null ? null : abstract_.copy();
4169        dst.inactive = inactive == null ? null : inactive.copy();
4170        dst.version = version == null ? null : version.copy();
4171        dst.code = code == null ? null : code.copy();
4172        dst.display = display == null ? null : display.copy();
4173        if (designation != null) {
4174          dst.designation = new ArrayList<ConceptReferenceDesignationComponent>();
4175          for (ConceptReferenceDesignationComponent i : designation)
4176            dst.designation.add(i.copy());
4177        };
4178        if (property != null) {
4179          dst.property = new ArrayList<ConceptPropertyComponent>();
4180          for (ConceptPropertyComponent i : property)
4181            dst.property.add(i.copy());
4182        };
4183        if (contains != null) {
4184          dst.contains = new ArrayList<ValueSetExpansionContainsComponent>();
4185          for (ValueSetExpansionContainsComponent i : contains)
4186            dst.contains.add(i.copy());
4187        };
4188      }
4189
4190      @Override
4191      public boolean equalsDeep(Base other_) {
4192        if (!super.equalsDeep(other_))
4193          return false;
4194        if (!(other_ instanceof ValueSetExpansionContainsComponent))
4195          return false;
4196        ValueSetExpansionContainsComponent o = (ValueSetExpansionContainsComponent) other_;
4197        return compareDeep(system, o.system, true) && compareDeep(abstract_, o.abstract_, true) && compareDeep(inactive, o.inactive, true)
4198           && compareDeep(version, o.version, true) && compareDeep(code, o.code, true) && compareDeep(display, o.display, true)
4199           && compareDeep(designation, o.designation, true) && compareDeep(property, o.property, true) && compareDeep(contains, o.contains, true)
4200          ;
4201      }
4202
4203      @Override
4204      public boolean equalsShallow(Base other_) {
4205        if (!super.equalsShallow(other_))
4206          return false;
4207        if (!(other_ instanceof ValueSetExpansionContainsComponent))
4208          return false;
4209        ValueSetExpansionContainsComponent o = (ValueSetExpansionContainsComponent) other_;
4210        return compareValues(system, o.system, true) && compareValues(abstract_, o.abstract_, true) && compareValues(inactive, o.inactive, true)
4211           && compareValues(version, o.version, true) && compareValues(code, o.code, true) && compareValues(display, o.display, true)
4212          ;
4213      }
4214
4215      public boolean isEmpty() {
4216        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(system, abstract_, inactive
4217          , version, code, display, designation, property, contains);
4218      }
4219
4220  public String fhirType() {
4221    return "ValueSet.expansion.contains";
4222
4223  }
4224
4225  }
4226
4227    @Block()
4228    public static class ConceptPropertyComponent extends BackboneElement implements IBaseBackboneElement {
4229        /**
4230         * A code that is a reference to ValueSet.expansion.property.code.
4231         */
4232        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
4233        @Description(shortDefinition="Reference to ValueSet.expansion.property.code", formalDefinition="A code that is a reference to ValueSet.expansion.property.code." )
4234        protected CodeType code;
4235
4236        /**
4237         * The value of this property.
4238         */
4239        @Child(name = "value", type = {CodeType.class, Coding.class, StringType.class, IntegerType.class, BooleanType.class, DateTimeType.class, DecimalType.class}, order=2, min=1, max=1, modifier=false, summary=false)
4240        @Description(shortDefinition="Value of the property for this concept", formalDefinition="The value of this property." )
4241        protected DataType value;
4242
4243        /**
4244         * A subproperty value for this concept.
4245         */
4246        @Child(name = "subProperty", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
4247        @Description(shortDefinition="SubProperty value for the concept", formalDefinition="A subproperty value for this concept." )
4248        protected List<ConceptSubPropertyComponent> subProperty;
4249
4250        private static final long serialVersionUID = -948620650L;
4251
4252    /**
4253     * Constructor
4254     */
4255      public ConceptPropertyComponent() {
4256        super();
4257      }
4258
4259    /**
4260     * Constructor
4261     */
4262      public ConceptPropertyComponent(String code, DataType value) {
4263        super();
4264        this.setCode(code);
4265        this.setValue(value);
4266      }
4267
4268        /**
4269         * @return {@link #code} (A code that is a reference to ValueSet.expansion.property.code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
4270         */
4271        public CodeType getCodeElement() { 
4272          if (this.code == null)
4273            if (Configuration.errorOnAutoCreate())
4274              throw new Error("Attempt to auto-create ConceptPropertyComponent.code");
4275            else if (Configuration.doAutoCreate())
4276              this.code = new CodeType(); // bb
4277          return this.code;
4278        }
4279
4280        public boolean hasCodeElement() { 
4281          return this.code != null && !this.code.isEmpty();
4282        }
4283
4284        public boolean hasCode() { 
4285          return this.code != null && !this.code.isEmpty();
4286        }
4287
4288        /**
4289         * @param value {@link #code} (A code that is a reference to ValueSet.expansion.property.code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
4290         */
4291        public ConceptPropertyComponent setCodeElement(CodeType value) { 
4292          this.code = value;
4293          return this;
4294        }
4295
4296        /**
4297         * @return A code that is a reference to ValueSet.expansion.property.code.
4298         */
4299        public String getCode() { 
4300          return this.code == null ? null : this.code.getValue();
4301        }
4302
4303        /**
4304         * @param value A code that is a reference to ValueSet.expansion.property.code.
4305         */
4306        public ConceptPropertyComponent setCode(String value) { 
4307            if (this.code == null)
4308              this.code = new CodeType();
4309            this.code.setValue(value);
4310          return this;
4311        }
4312
4313        /**
4314         * @return {@link #value} (The value of this property.)
4315         */
4316        public DataType getValue() { 
4317          return this.value;
4318        }
4319
4320        /**
4321         * @return {@link #value} (The value of this property.)
4322         */
4323        public CodeType getValueCodeType() throws FHIRException { 
4324          if (this.value == null)
4325            this.value = new CodeType();
4326          if (!(this.value instanceof CodeType))
4327            throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.value.getClass().getName()+" was encountered");
4328          return (CodeType) this.value;
4329        }
4330
4331        public boolean hasValueCodeType() { 
4332          return this != null && this.value instanceof CodeType;
4333        }
4334
4335        /**
4336         * @return {@link #value} (The value of this property.)
4337         */
4338        public Coding getValueCoding() throws FHIRException { 
4339          if (this.value == null)
4340            this.value = new Coding();
4341          if (!(this.value instanceof Coding))
4342            throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.value.getClass().getName()+" was encountered");
4343          return (Coding) this.value;
4344        }
4345
4346        public boolean hasValueCoding() { 
4347          return this != null && this.value instanceof Coding;
4348        }
4349
4350        /**
4351         * @return {@link #value} (The value of this property.)
4352         */
4353        public StringType getValueStringType() throws FHIRException { 
4354          if (this.value == null)
4355            this.value = new StringType();
4356          if (!(this.value instanceof StringType))
4357            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
4358          return (StringType) this.value;
4359        }
4360
4361        public boolean hasValueStringType() { 
4362          return this != null && this.value instanceof StringType;
4363        }
4364
4365        /**
4366         * @return {@link #value} (The value of this property.)
4367         */
4368        public IntegerType getValueIntegerType() throws FHIRException { 
4369          if (this.value == null)
4370            this.value = new IntegerType();
4371          if (!(this.value instanceof IntegerType))
4372            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered");
4373          return (IntegerType) this.value;
4374        }
4375
4376        public boolean hasValueIntegerType() { 
4377          return this != null && this.value instanceof IntegerType;
4378        }
4379
4380        /**
4381         * @return {@link #value} (The value of this property.)
4382         */
4383        public BooleanType getValueBooleanType() throws FHIRException { 
4384          if (this.value == null)
4385            this.value = new BooleanType();
4386          if (!(this.value instanceof BooleanType))
4387            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
4388          return (BooleanType) this.value;
4389        }
4390
4391        public boolean hasValueBooleanType() { 
4392          return this != null && this.value instanceof BooleanType;
4393        }
4394
4395        /**
4396         * @return {@link #value} (The value of this property.)
4397         */
4398        public DateTimeType getValueDateTimeType() throws FHIRException { 
4399          if (this.value == null)
4400            this.value = new DateTimeType();
4401          if (!(this.value instanceof DateTimeType))
4402            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.value.getClass().getName()+" was encountered");
4403          return (DateTimeType) this.value;
4404        }
4405
4406        public boolean hasValueDateTimeType() { 
4407          return this != null && this.value instanceof DateTimeType;
4408        }
4409
4410        /**
4411         * @return {@link #value} (The value of this property.)
4412         */
4413        public DecimalType getValueDecimalType() throws FHIRException { 
4414          if (this.value == null)
4415            this.value = new DecimalType();
4416          if (!(this.value instanceof DecimalType))
4417            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered");
4418          return (DecimalType) this.value;
4419        }
4420
4421        public boolean hasValueDecimalType() { 
4422          return this != null && this.value instanceof DecimalType;
4423        }
4424
4425        public boolean hasValue() { 
4426          return this.value != null && !this.value.isEmpty();
4427        }
4428
4429        /**
4430         * @param value {@link #value} (The value of this property.)
4431         */
4432        public ConceptPropertyComponent setValue(DataType value) { 
4433          if (value != null && !(value instanceof CodeType || value instanceof Coding || value instanceof StringType || value instanceof IntegerType || value instanceof BooleanType || value instanceof DateTimeType || value instanceof DecimalType))
4434            throw new Error("Not the right type for ValueSet.expansion.contains.property.value[x]: "+value.fhirType());
4435          this.value = value;
4436          return this;
4437        }
4438
4439        /**
4440         * @return {@link #subProperty} (A subproperty value for this concept.)
4441         */
4442        public List<ConceptSubPropertyComponent> getSubProperty() { 
4443          if (this.subProperty == null)
4444            this.subProperty = new ArrayList<ConceptSubPropertyComponent>();
4445          return this.subProperty;
4446        }
4447
4448        /**
4449         * @return Returns a reference to <code>this</code> for easy method chaining
4450         */
4451        public ConceptPropertyComponent setSubProperty(List<ConceptSubPropertyComponent> theSubProperty) { 
4452          this.subProperty = theSubProperty;
4453          return this;
4454        }
4455
4456        public boolean hasSubProperty() { 
4457          if (this.subProperty == null)
4458            return false;
4459          for (ConceptSubPropertyComponent item : this.subProperty)
4460            if (!item.isEmpty())
4461              return true;
4462          return false;
4463        }
4464
4465        public ConceptSubPropertyComponent addSubProperty() { //3
4466          ConceptSubPropertyComponent t = new ConceptSubPropertyComponent();
4467          if (this.subProperty == null)
4468            this.subProperty = new ArrayList<ConceptSubPropertyComponent>();
4469          this.subProperty.add(t);
4470          return t;
4471        }
4472
4473        public ConceptPropertyComponent addSubProperty(ConceptSubPropertyComponent t) { //3
4474          if (t == null)
4475            return this;
4476          if (this.subProperty == null)
4477            this.subProperty = new ArrayList<ConceptSubPropertyComponent>();
4478          this.subProperty.add(t);
4479          return this;
4480        }
4481
4482        /**
4483         * @return The first repetition of repeating field {@link #subProperty}, creating it if it does not already exist {3}
4484         */
4485        public ConceptSubPropertyComponent getSubPropertyFirstRep() { 
4486          if (getSubProperty().isEmpty()) {
4487            addSubProperty();
4488          }
4489          return getSubProperty().get(0);
4490        }
4491
4492        protected void listChildren(List<Property> children) {
4493          super.listChildren(children);
4494          children.add(new Property("code", "code", "A code that is a reference to ValueSet.expansion.property.code.", 0, 1, code));
4495          children.add(new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this property.", 0, 1, value));
4496          children.add(new Property("subProperty", "", "A subproperty value for this concept.", 0, java.lang.Integer.MAX_VALUE, subProperty));
4497        }
4498
4499        @Override
4500        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4501          switch (_hash) {
4502          case 3059181: /*code*/  return new Property("code", "code", "A code that is a reference to ValueSet.expansion.property.code.", 0, 1, code);
4503          case -1410166417: /*value[x]*/  return new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this property.", 0, 1, value);
4504          case 111972721: /*value*/  return new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this property.", 0, 1, value);
4505          case -766209282: /*valueCode*/  return new Property("value[x]", "code", "The value of this property.", 0, 1, value);
4506          case -1887705029: /*valueCoding*/  return new Property("value[x]", "Coding", "The value of this property.", 0, 1, value);
4507          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "The value of this property.", 0, 1, value);
4508          case -1668204915: /*valueInteger*/  return new Property("value[x]", "integer", "The value of this property.", 0, 1, value);
4509          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The value of this property.", 0, 1, value);
4510          case 1047929900: /*valueDateTime*/  return new Property("value[x]", "dateTime", "The value of this property.", 0, 1, value);
4511          case -2083993440: /*valueDecimal*/  return new Property("value[x]", "decimal", "The value of this property.", 0, 1, value);
4512          case 321372213: /*subProperty*/  return new Property("subProperty", "", "A subproperty value for this concept.", 0, java.lang.Integer.MAX_VALUE, subProperty);
4513          default: return super.getNamedProperty(_hash, _name, _checkValid);
4514          }
4515
4516        }
4517
4518      @Override
4519      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4520        switch (hash) {
4521        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
4522        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
4523        case 321372213: /*subProperty*/ return this.subProperty == null ? new Base[0] : this.subProperty.toArray(new Base[this.subProperty.size()]); // ConceptSubPropertyComponent
4524        default: return super.getProperty(hash, name, checkValid);
4525        }
4526
4527      }
4528
4529      @Override
4530      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4531        switch (hash) {
4532        case 3059181: // code
4533          this.code = TypeConvertor.castToCode(value); // CodeType
4534          return value;
4535        case 111972721: // value
4536          this.value = TypeConvertor.castToType(value); // DataType
4537          return value;
4538        case 321372213: // subProperty
4539          this.getSubProperty().add((ConceptSubPropertyComponent) value); // ConceptSubPropertyComponent
4540          return value;
4541        default: return super.setProperty(hash, name, value);
4542        }
4543
4544      }
4545
4546      @Override
4547      public Base setProperty(String name, Base value) throws FHIRException {
4548        if (name.equals("code")) {
4549          this.code = TypeConvertor.castToCode(value); // CodeType
4550        } else if (name.equals("value[x]")) {
4551          this.value = TypeConvertor.castToType(value); // DataType
4552        } else if (name.equals("subProperty")) {
4553          this.getSubProperty().add((ConceptSubPropertyComponent) value);
4554        } else
4555          return super.setProperty(name, value);
4556        return value;
4557      }
4558
4559      @Override
4560      public Base makeProperty(int hash, String name) throws FHIRException {
4561        switch (hash) {
4562        case 3059181:  return getCodeElement();
4563        case -1410166417:  return getValue();
4564        case 111972721:  return getValue();
4565        case 321372213:  return addSubProperty(); 
4566        default: return super.makeProperty(hash, name);
4567        }
4568
4569      }
4570
4571      @Override
4572      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4573        switch (hash) {
4574        case 3059181: /*code*/ return new String[] {"code"};
4575        case 111972721: /*value*/ return new String[] {"code", "Coding", "string", "integer", "boolean", "dateTime", "decimal"};
4576        case 321372213: /*subProperty*/ return new String[] {};
4577        default: return super.getTypesForProperty(hash, name);
4578        }
4579
4580      }
4581
4582      @Override
4583      public Base addChild(String name) throws FHIRException {
4584        if (name.equals("code")) {
4585          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.contains.property.code");
4586        }
4587        else if (name.equals("valueCode")) {
4588          this.value = new CodeType();
4589          return this.value;
4590        }
4591        else if (name.equals("valueCoding")) {
4592          this.value = new Coding();
4593          return this.value;
4594        }
4595        else if (name.equals("valueString")) {
4596          this.value = new StringType();
4597          return this.value;
4598        }
4599        else if (name.equals("valueInteger")) {
4600          this.value = new IntegerType();
4601          return this.value;
4602        }
4603        else if (name.equals("valueBoolean")) {
4604          this.value = new BooleanType();
4605          return this.value;
4606        }
4607        else if (name.equals("valueDateTime")) {
4608          this.value = new DateTimeType();
4609          return this.value;
4610        }
4611        else if (name.equals("valueDecimal")) {
4612          this.value = new DecimalType();
4613          return this.value;
4614        }
4615        else if (name.equals("subProperty")) {
4616          return addSubProperty();
4617        }
4618        else
4619          return super.addChild(name);
4620      }
4621
4622      public ConceptPropertyComponent copy() {
4623        ConceptPropertyComponent dst = new ConceptPropertyComponent();
4624        copyValues(dst);
4625        return dst;
4626      }
4627
4628      public void copyValues(ConceptPropertyComponent dst) {
4629        super.copyValues(dst);
4630        dst.code = code == null ? null : code.copy();
4631        dst.value = value == null ? null : value.copy();
4632        if (subProperty != null) {
4633          dst.subProperty = new ArrayList<ConceptSubPropertyComponent>();
4634          for (ConceptSubPropertyComponent i : subProperty)
4635            dst.subProperty.add(i.copy());
4636        };
4637      }
4638
4639      @Override
4640      public boolean equalsDeep(Base other_) {
4641        if (!super.equalsDeep(other_))
4642          return false;
4643        if (!(other_ instanceof ConceptPropertyComponent))
4644          return false;
4645        ConceptPropertyComponent o = (ConceptPropertyComponent) other_;
4646        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true) && compareDeep(subProperty, o.subProperty, true)
4647          ;
4648      }
4649
4650      @Override
4651      public boolean equalsShallow(Base other_) {
4652        if (!super.equalsShallow(other_))
4653          return false;
4654        if (!(other_ instanceof ConceptPropertyComponent))
4655          return false;
4656        ConceptPropertyComponent o = (ConceptPropertyComponent) other_;
4657        return compareValues(code, o.code, true);
4658      }
4659
4660      public boolean isEmpty() {
4661        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value, subProperty
4662          );
4663      }
4664
4665  public String fhirType() {
4666    return "ValueSet.expansion.contains.property";
4667
4668  }
4669
4670  }
4671
4672    @Block()
4673    public static class ConceptSubPropertyComponent extends BackboneElement implements IBaseBackboneElement {
4674        /**
4675         * A code that is a reference to ValueSet.expansion.property.code.
4676         */
4677        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
4678        @Description(shortDefinition="Reference to ValueSet.expansion.property.code", formalDefinition="A code that is a reference to ValueSet.expansion.property.code." )
4679        protected CodeType code;
4680
4681        /**
4682         * The value of this subproperty.
4683         */
4684        @Child(name = "value", type = {CodeType.class, Coding.class, StringType.class, IntegerType.class, BooleanType.class, DateTimeType.class, DecimalType.class}, order=2, min=1, max=1, modifier=false, summary=false)
4685        @Description(shortDefinition="Value of the subproperty for this concept", formalDefinition="The value of this subproperty." )
4686        protected DataType value;
4687
4688        private static final long serialVersionUID = -422546419L;
4689
4690    /**
4691     * Constructor
4692     */
4693      public ConceptSubPropertyComponent() {
4694        super();
4695      }
4696
4697    /**
4698     * Constructor
4699     */
4700      public ConceptSubPropertyComponent(String code, DataType value) {
4701        super();
4702        this.setCode(code);
4703        this.setValue(value);
4704      }
4705
4706        /**
4707         * @return {@link #code} (A code that is a reference to ValueSet.expansion.property.code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
4708         */
4709        public CodeType getCodeElement() { 
4710          if (this.code == null)
4711            if (Configuration.errorOnAutoCreate())
4712              throw new Error("Attempt to auto-create ConceptSubPropertyComponent.code");
4713            else if (Configuration.doAutoCreate())
4714              this.code = new CodeType(); // bb
4715          return this.code;
4716        }
4717
4718        public boolean hasCodeElement() { 
4719          return this.code != null && !this.code.isEmpty();
4720        }
4721
4722        public boolean hasCode() { 
4723          return this.code != null && !this.code.isEmpty();
4724        }
4725
4726        /**
4727         * @param value {@link #code} (A code that is a reference to ValueSet.expansion.property.code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
4728         */
4729        public ConceptSubPropertyComponent setCodeElement(CodeType value) { 
4730          this.code = value;
4731          return this;
4732        }
4733
4734        /**
4735         * @return A code that is a reference to ValueSet.expansion.property.code.
4736         */
4737        public String getCode() { 
4738          return this.code == null ? null : this.code.getValue();
4739        }
4740
4741        /**
4742         * @param value A code that is a reference to ValueSet.expansion.property.code.
4743         */
4744        public ConceptSubPropertyComponent setCode(String value) { 
4745            if (this.code == null)
4746              this.code = new CodeType();
4747            this.code.setValue(value);
4748          return this;
4749        }
4750
4751        /**
4752         * @return {@link #value} (The value of this subproperty.)
4753         */
4754        public DataType getValue() { 
4755          return this.value;
4756        }
4757
4758        /**
4759         * @return {@link #value} (The value of this subproperty.)
4760         */
4761        public CodeType getValueCodeType() throws FHIRException { 
4762          if (this.value == null)
4763            this.value = new CodeType();
4764          if (!(this.value instanceof CodeType))
4765            throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.value.getClass().getName()+" was encountered");
4766          return (CodeType) this.value;
4767        }
4768
4769        public boolean hasValueCodeType() { 
4770          return this != null && this.value instanceof CodeType;
4771        }
4772
4773        /**
4774         * @return {@link #value} (The value of this subproperty.)
4775         */
4776        public Coding getValueCoding() throws FHIRException { 
4777          if (this.value == null)
4778            this.value = new Coding();
4779          if (!(this.value instanceof Coding))
4780            throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.value.getClass().getName()+" was encountered");
4781          return (Coding) this.value;
4782        }
4783
4784        public boolean hasValueCoding() { 
4785          return this != null && this.value instanceof Coding;
4786        }
4787
4788        /**
4789         * @return {@link #value} (The value of this subproperty.)
4790         */
4791        public StringType getValueStringType() throws FHIRException { 
4792          if (this.value == null)
4793            this.value = new StringType();
4794          if (!(this.value instanceof StringType))
4795            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
4796          return (StringType) this.value;
4797        }
4798
4799        public boolean hasValueStringType() { 
4800          return this != null && this.value instanceof StringType;
4801        }
4802
4803        /**
4804         * @return {@link #value} (The value of this subproperty.)
4805         */
4806        public IntegerType getValueIntegerType() throws FHIRException { 
4807          if (this.value == null)
4808            this.value = new IntegerType();
4809          if (!(this.value instanceof IntegerType))
4810            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered");
4811          return (IntegerType) this.value;
4812        }
4813
4814        public boolean hasValueIntegerType() { 
4815          return this != null && this.value instanceof IntegerType;
4816        }
4817
4818        /**
4819         * @return {@link #value} (The value of this subproperty.)
4820         */
4821        public BooleanType getValueBooleanType() throws FHIRException { 
4822          if (this.value == null)
4823            this.value = new BooleanType();
4824          if (!(this.value instanceof BooleanType))
4825            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
4826          return (BooleanType) this.value;
4827        }
4828
4829        public boolean hasValueBooleanType() { 
4830          return this != null && this.value instanceof BooleanType;
4831        }
4832
4833        /**
4834         * @return {@link #value} (The value of this subproperty.)
4835         */
4836        public DateTimeType getValueDateTimeType() throws FHIRException { 
4837          if (this.value == null)
4838            this.value = new DateTimeType();
4839          if (!(this.value instanceof DateTimeType))
4840            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.value.getClass().getName()+" was encountered");
4841          return (DateTimeType) this.value;
4842        }
4843
4844        public boolean hasValueDateTimeType() { 
4845          return this != null && this.value instanceof DateTimeType;
4846        }
4847
4848        /**
4849         * @return {@link #value} (The value of this subproperty.)
4850         */
4851        public DecimalType getValueDecimalType() throws FHIRException { 
4852          if (this.value == null)
4853            this.value = new DecimalType();
4854          if (!(this.value instanceof DecimalType))
4855            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered");
4856          return (DecimalType) this.value;
4857        }
4858
4859        public boolean hasValueDecimalType() { 
4860          return this != null && this.value instanceof DecimalType;
4861        }
4862
4863        public boolean hasValue() { 
4864          return this.value != null && !this.value.isEmpty();
4865        }
4866
4867        /**
4868         * @param value {@link #value} (The value of this subproperty.)
4869         */
4870        public ConceptSubPropertyComponent setValue(DataType value) { 
4871          if (value != null && !(value instanceof CodeType || value instanceof Coding || value instanceof StringType || value instanceof IntegerType || value instanceof BooleanType || value instanceof DateTimeType || value instanceof DecimalType))
4872            throw new Error("Not the right type for ValueSet.expansion.contains.property.subProperty.value[x]: "+value.fhirType());
4873          this.value = value;
4874          return this;
4875        }
4876
4877        protected void listChildren(List<Property> children) {
4878          super.listChildren(children);
4879          children.add(new Property("code", "code", "A code that is a reference to ValueSet.expansion.property.code.", 0, 1, code));
4880          children.add(new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this subproperty.", 0, 1, value));
4881        }
4882
4883        @Override
4884        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4885          switch (_hash) {
4886          case 3059181: /*code*/  return new Property("code", "code", "A code that is a reference to ValueSet.expansion.property.code.", 0, 1, code);
4887          case -1410166417: /*value[x]*/  return new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this subproperty.", 0, 1, value);
4888          case 111972721: /*value*/  return new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this subproperty.", 0, 1, value);
4889          case -766209282: /*valueCode*/  return new Property("value[x]", "code", "The value of this subproperty.", 0, 1, value);
4890          case -1887705029: /*valueCoding*/  return new Property("value[x]", "Coding", "The value of this subproperty.", 0, 1, value);
4891          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "The value of this subproperty.", 0, 1, value);
4892          case -1668204915: /*valueInteger*/  return new Property("value[x]", "integer", "The value of this subproperty.", 0, 1, value);
4893          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The value of this subproperty.", 0, 1, value);
4894          case 1047929900: /*valueDateTime*/  return new Property("value[x]", "dateTime", "The value of this subproperty.", 0, 1, value);
4895          case -2083993440: /*valueDecimal*/  return new Property("value[x]", "decimal", "The value of this subproperty.", 0, 1, value);
4896          default: return super.getNamedProperty(_hash, _name, _checkValid);
4897          }
4898
4899        }
4900
4901      @Override
4902      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4903        switch (hash) {
4904        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
4905        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
4906        default: return super.getProperty(hash, name, checkValid);
4907        }
4908
4909      }
4910
4911      @Override
4912      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4913        switch (hash) {
4914        case 3059181: // code
4915          this.code = TypeConvertor.castToCode(value); // CodeType
4916          return value;
4917        case 111972721: // value
4918          this.value = TypeConvertor.castToType(value); // DataType
4919          return value;
4920        default: return super.setProperty(hash, name, value);
4921        }
4922
4923      }
4924
4925      @Override
4926      public Base setProperty(String name, Base value) throws FHIRException {
4927        if (name.equals("code")) {
4928          this.code = TypeConvertor.castToCode(value); // CodeType
4929        } else if (name.equals("value[x]")) {
4930          this.value = TypeConvertor.castToType(value); // DataType
4931        } else
4932          return super.setProperty(name, value);
4933        return value;
4934      }
4935
4936      @Override
4937      public Base makeProperty(int hash, String name) throws FHIRException {
4938        switch (hash) {
4939        case 3059181:  return getCodeElement();
4940        case -1410166417:  return getValue();
4941        case 111972721:  return getValue();
4942        default: return super.makeProperty(hash, name);
4943        }
4944
4945      }
4946
4947      @Override
4948      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4949        switch (hash) {
4950        case 3059181: /*code*/ return new String[] {"code"};
4951        case 111972721: /*value*/ return new String[] {"code", "Coding", "string", "integer", "boolean", "dateTime", "decimal"};
4952        default: return super.getTypesForProperty(hash, name);
4953        }
4954
4955      }
4956
4957      @Override
4958      public Base addChild(String name) throws FHIRException {
4959        if (name.equals("code")) {
4960          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.expansion.contains.property.subProperty.code");
4961        }
4962        else if (name.equals("valueCode")) {
4963          this.value = new CodeType();
4964          return this.value;
4965        }
4966        else if (name.equals("valueCoding")) {
4967          this.value = new Coding();
4968          return this.value;
4969        }
4970        else if (name.equals("valueString")) {
4971          this.value = new StringType();
4972          return this.value;
4973        }
4974        else if (name.equals("valueInteger")) {
4975          this.value = new IntegerType();
4976          return this.value;
4977        }
4978        else if (name.equals("valueBoolean")) {
4979          this.value = new BooleanType();
4980          return this.value;
4981        }
4982        else if (name.equals("valueDateTime")) {
4983          this.value = new DateTimeType();
4984          return this.value;
4985        }
4986        else if (name.equals("valueDecimal")) {
4987          this.value = new DecimalType();
4988          return this.value;
4989        }
4990        else
4991          return super.addChild(name);
4992      }
4993
4994      public ConceptSubPropertyComponent copy() {
4995        ConceptSubPropertyComponent dst = new ConceptSubPropertyComponent();
4996        copyValues(dst);
4997        return dst;
4998      }
4999
5000      public void copyValues(ConceptSubPropertyComponent dst) {
5001        super.copyValues(dst);
5002        dst.code = code == null ? null : code.copy();
5003        dst.value = value == null ? null : value.copy();
5004      }
5005
5006      @Override
5007      public boolean equalsDeep(Base other_) {
5008        if (!super.equalsDeep(other_))
5009          return false;
5010        if (!(other_ instanceof ConceptSubPropertyComponent))
5011          return false;
5012        ConceptSubPropertyComponent o = (ConceptSubPropertyComponent) other_;
5013        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
5014      }
5015
5016      @Override
5017      public boolean equalsShallow(Base other_) {
5018        if (!super.equalsShallow(other_))
5019          return false;
5020        if (!(other_ instanceof ConceptSubPropertyComponent))
5021          return false;
5022        ConceptSubPropertyComponent o = (ConceptSubPropertyComponent) other_;
5023        return compareValues(code, o.code, true);
5024      }
5025
5026      public boolean isEmpty() {
5027        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
5028      }
5029
5030  public String fhirType() {
5031    return "ValueSet.expansion.contains.property.subProperty";
5032
5033  }
5034
5035  }
5036
5037    @Block()
5038    public static class ValueSetScopeComponent extends BackboneElement implements IBaseBackboneElement {
5039        /**
5040         * Criteria describing which concepts or codes should be included and why.
5041         */
5042        @Child(name = "inclusionCriteria", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
5043        @Description(shortDefinition="Criteria describing which concepts or codes should be included and why", formalDefinition="Criteria describing which concepts or codes should be included and why." )
5044        protected StringType inclusionCriteria;
5045
5046        /**
5047         * Criteria describing which concepts or codes should be excluded and why.
5048         */
5049        @Child(name = "exclusionCriteria", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
5050        @Description(shortDefinition="Criteria describing which concepts or codes should be excluded and why", formalDefinition="Criteria describing which concepts or codes should be excluded and why." )
5051        protected StringType exclusionCriteria;
5052
5053        private static final long serialVersionUID = -641434610L;
5054
5055    /**
5056     * Constructor
5057     */
5058      public ValueSetScopeComponent() {
5059        super();
5060      }
5061
5062        /**
5063         * @return {@link #inclusionCriteria} (Criteria describing which concepts or codes should be included and why.). This is the underlying object with id, value and extensions. The accessor "getInclusionCriteria" gives direct access to the value
5064         */
5065        public StringType getInclusionCriteriaElement() { 
5066          if (this.inclusionCriteria == null)
5067            if (Configuration.errorOnAutoCreate())
5068              throw new Error("Attempt to auto-create ValueSetScopeComponent.inclusionCriteria");
5069            else if (Configuration.doAutoCreate())
5070              this.inclusionCriteria = new StringType(); // bb
5071          return this.inclusionCriteria;
5072        }
5073
5074        public boolean hasInclusionCriteriaElement() { 
5075          return this.inclusionCriteria != null && !this.inclusionCriteria.isEmpty();
5076        }
5077
5078        public boolean hasInclusionCriteria() { 
5079          return this.inclusionCriteria != null && !this.inclusionCriteria.isEmpty();
5080        }
5081
5082        /**
5083         * @param value {@link #inclusionCriteria} (Criteria describing which concepts or codes should be included and why.). This is the underlying object with id, value and extensions. The accessor "getInclusionCriteria" gives direct access to the value
5084         */
5085        public ValueSetScopeComponent setInclusionCriteriaElement(StringType value) { 
5086          this.inclusionCriteria = value;
5087          return this;
5088        }
5089
5090        /**
5091         * @return Criteria describing which concepts or codes should be included and why.
5092         */
5093        public String getInclusionCriteria() { 
5094          return this.inclusionCriteria == null ? null : this.inclusionCriteria.getValue();
5095        }
5096
5097        /**
5098         * @param value Criteria describing which concepts or codes should be included and why.
5099         */
5100        public ValueSetScopeComponent setInclusionCriteria(String value) { 
5101          if (Utilities.noString(value))
5102            this.inclusionCriteria = null;
5103          else {
5104            if (this.inclusionCriteria == null)
5105              this.inclusionCriteria = new StringType();
5106            this.inclusionCriteria.setValue(value);
5107          }
5108          return this;
5109        }
5110
5111        /**
5112         * @return {@link #exclusionCriteria} (Criteria describing which concepts or codes should be excluded and why.). This is the underlying object with id, value and extensions. The accessor "getExclusionCriteria" gives direct access to the value
5113         */
5114        public StringType getExclusionCriteriaElement() { 
5115          if (this.exclusionCriteria == null)
5116            if (Configuration.errorOnAutoCreate())
5117              throw new Error("Attempt to auto-create ValueSetScopeComponent.exclusionCriteria");
5118            else if (Configuration.doAutoCreate())
5119              this.exclusionCriteria = new StringType(); // bb
5120          return this.exclusionCriteria;
5121        }
5122
5123        public boolean hasExclusionCriteriaElement() { 
5124          return this.exclusionCriteria != null && !this.exclusionCriteria.isEmpty();
5125        }
5126
5127        public boolean hasExclusionCriteria() { 
5128          return this.exclusionCriteria != null && !this.exclusionCriteria.isEmpty();
5129        }
5130
5131        /**
5132         * @param value {@link #exclusionCriteria} (Criteria describing which concepts or codes should be excluded and why.). This is the underlying object with id, value and extensions. The accessor "getExclusionCriteria" gives direct access to the value
5133         */
5134        public ValueSetScopeComponent setExclusionCriteriaElement(StringType value) { 
5135          this.exclusionCriteria = value;
5136          return this;
5137        }
5138
5139        /**
5140         * @return Criteria describing which concepts or codes should be excluded and why.
5141         */
5142        public String getExclusionCriteria() { 
5143          return this.exclusionCriteria == null ? null : this.exclusionCriteria.getValue();
5144        }
5145
5146        /**
5147         * @param value Criteria describing which concepts or codes should be excluded and why.
5148         */
5149        public ValueSetScopeComponent setExclusionCriteria(String value) { 
5150          if (Utilities.noString(value))
5151            this.exclusionCriteria = null;
5152          else {
5153            if (this.exclusionCriteria == null)
5154              this.exclusionCriteria = new StringType();
5155            this.exclusionCriteria.setValue(value);
5156          }
5157          return this;
5158        }
5159
5160        protected void listChildren(List<Property> children) {
5161          super.listChildren(children);
5162          children.add(new Property("inclusionCriteria", "string", "Criteria describing which concepts or codes should be included and why.", 0, 1, inclusionCriteria));
5163          children.add(new Property("exclusionCriteria", "string", "Criteria describing which concepts or codes should be excluded and why.", 0, 1, exclusionCriteria));
5164        }
5165
5166        @Override
5167        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
5168          switch (_hash) {
5169          case -1380638565: /*inclusionCriteria*/  return new Property("inclusionCriteria", "string", "Criteria describing which concepts or codes should be included and why.", 0, 1, inclusionCriteria);
5170          case 985682765: /*exclusionCriteria*/  return new Property("exclusionCriteria", "string", "Criteria describing which concepts or codes should be excluded and why.", 0, 1, exclusionCriteria);
5171          default: return super.getNamedProperty(_hash, _name, _checkValid);
5172          }
5173
5174        }
5175
5176      @Override
5177      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
5178        switch (hash) {
5179        case -1380638565: /*inclusionCriteria*/ return this.inclusionCriteria == null ? new Base[0] : new Base[] {this.inclusionCriteria}; // StringType
5180        case 985682765: /*exclusionCriteria*/ return this.exclusionCriteria == null ? new Base[0] : new Base[] {this.exclusionCriteria}; // StringType
5181        default: return super.getProperty(hash, name, checkValid);
5182        }
5183
5184      }
5185
5186      @Override
5187      public Base setProperty(int hash, String name, Base value) throws FHIRException {
5188        switch (hash) {
5189        case -1380638565: // inclusionCriteria
5190          this.inclusionCriteria = TypeConvertor.castToString(value); // StringType
5191          return value;
5192        case 985682765: // exclusionCriteria
5193          this.exclusionCriteria = TypeConvertor.castToString(value); // StringType
5194          return value;
5195        default: return super.setProperty(hash, name, value);
5196        }
5197
5198      }
5199
5200      @Override
5201      public Base setProperty(String name, Base value) throws FHIRException {
5202        if (name.equals("inclusionCriteria")) {
5203          this.inclusionCriteria = TypeConvertor.castToString(value); // StringType
5204        } else if (name.equals("exclusionCriteria")) {
5205          this.exclusionCriteria = TypeConvertor.castToString(value); // StringType
5206        } else
5207          return super.setProperty(name, value);
5208        return value;
5209      }
5210
5211      @Override
5212      public Base makeProperty(int hash, String name) throws FHIRException {
5213        switch (hash) {
5214        case -1380638565:  return getInclusionCriteriaElement();
5215        case 985682765:  return getExclusionCriteriaElement();
5216        default: return super.makeProperty(hash, name);
5217        }
5218
5219      }
5220
5221      @Override
5222      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5223        switch (hash) {
5224        case -1380638565: /*inclusionCriteria*/ return new String[] {"string"};
5225        case 985682765: /*exclusionCriteria*/ return new String[] {"string"};
5226        default: return super.getTypesForProperty(hash, name);
5227        }
5228
5229      }
5230
5231      @Override
5232      public Base addChild(String name) throws FHIRException {
5233        if (name.equals("inclusionCriteria")) {
5234          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.scope.inclusionCriteria");
5235        }
5236        else if (name.equals("exclusionCriteria")) {
5237          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.scope.exclusionCriteria");
5238        }
5239        else
5240          return super.addChild(name);
5241      }
5242
5243      public ValueSetScopeComponent copy() {
5244        ValueSetScopeComponent dst = new ValueSetScopeComponent();
5245        copyValues(dst);
5246        return dst;
5247      }
5248
5249      public void copyValues(ValueSetScopeComponent dst) {
5250        super.copyValues(dst);
5251        dst.inclusionCriteria = inclusionCriteria == null ? null : inclusionCriteria.copy();
5252        dst.exclusionCriteria = exclusionCriteria == null ? null : exclusionCriteria.copy();
5253      }
5254
5255      @Override
5256      public boolean equalsDeep(Base other_) {
5257        if (!super.equalsDeep(other_))
5258          return false;
5259        if (!(other_ instanceof ValueSetScopeComponent))
5260          return false;
5261        ValueSetScopeComponent o = (ValueSetScopeComponent) other_;
5262        return compareDeep(inclusionCriteria, o.inclusionCriteria, true) && compareDeep(exclusionCriteria, o.exclusionCriteria, true)
5263          ;
5264      }
5265
5266      @Override
5267      public boolean equalsShallow(Base other_) {
5268        if (!super.equalsShallow(other_))
5269          return false;
5270        if (!(other_ instanceof ValueSetScopeComponent))
5271          return false;
5272        ValueSetScopeComponent o = (ValueSetScopeComponent) other_;
5273        return compareValues(inclusionCriteria, o.inclusionCriteria, true) && compareValues(exclusionCriteria, o.exclusionCriteria, true)
5274          ;
5275      }
5276
5277      public boolean isEmpty() {
5278        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(inclusionCriteria, exclusionCriteria
5279          );
5280      }
5281
5282  public String fhirType() {
5283    return "ValueSet.scope";
5284
5285  }
5286
5287  }
5288
5289    /**
5290     * An absolute URI that is used to identify this value set 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 an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers.
5291     */
5292    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
5293    @Description(shortDefinition="Canonical identifier for this value set, represented as a URI (globally unique)", formalDefinition="An absolute URI that is used to identify this value set 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 an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers." )
5294    protected UriType url;
5295
5296    /**
5297     * A formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance.
5298     */
5299    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
5300    @Description(shortDefinition="Additional identifier for the value set (business identifier)", formalDefinition="A formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance." )
5301    protected List<Identifier> identifier;
5302
5303    /**
5304     * The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set 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.
5305     */
5306    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
5307    @Description(shortDefinition="Business version of the value set", formalDefinition="The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set 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." )
5308    protected StringType version;
5309
5310    /**
5311     * A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generation.
5312     */
5313    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
5314    @Description(shortDefinition="Name for this value set (computer friendly)", formalDefinition="A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
5315    protected StringType name;
5316
5317    /**
5318     * A short, descriptive, user-friendly title for the value set.
5319     */
5320    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
5321    @Description(shortDefinition="Name for this value set (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the value set." )
5322    protected StringType title;
5323
5324    /**
5325     * The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state.
5326     */
5327    @Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
5328    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state." )
5329    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
5330    protected Enumeration<PublicationStatus> status;
5331
5332    /**
5333     * A Boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
5334     */
5335    @Child(name = "experimental", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true)
5336    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
5337    protected BooleanType experimental;
5338
5339    /**
5340     * The date (and optionally time) when the value set metadata or content logical definition (.compose) was created or revised.
5341     */
5342    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
5343    @Description(shortDefinition="Date last changed", formalDefinition="The date (and optionally time) when the value set metadata or content logical definition (.compose) was created or revised." )
5344    protected DateTimeType date;
5345
5346    /**
5347     * The name of the organization or individual responsible for the release and ongoing maintenance of the value set.
5348     */
5349    @Child(name = "publisher", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
5350    @Description(shortDefinition="Name of the publisher/steward (organization or individual)", formalDefinition="The name of the organization or individual responsible for the release and ongoing maintenance of the value set." )
5351    protected StringType publisher;
5352
5353    /**
5354     * Contact details to assist a user in finding and communicating with the publisher.
5355     */
5356    @Child(name = "contact", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
5357    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
5358    protected List<ContactDetail> contact;
5359
5360    /**
5361     * A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set.
5362     */
5363    @Child(name = "description", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=false)
5364    @Description(shortDefinition="Natural language description of the value set", formalDefinition="A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set." )
5365    protected MarkdownType description;
5366
5367    /**
5368     * 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 value set instances.
5369     */
5370    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
5371    @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 value set instances." )
5372    protected List<UsageContext> useContext;
5373
5374    /**
5375     * A legal or geographic region in which the value set is intended to be used.
5376     */
5377    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
5378    @Description(shortDefinition="Intended jurisdiction for value set (if applicable)", formalDefinition="A legal or geographic region in which the value set is intended to be used." )
5379    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
5380    protected List<CodeableConcept> jurisdiction;
5381
5382    /**
5383     * If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change.
5384     */
5385    @Child(name = "immutable", type = {BooleanType.class}, order=13, min=0, max=1, modifier=false, summary=true)
5386    @Description(shortDefinition="Indicates whether or not any change to the content logical definition may occur", formalDefinition="If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change." )
5387    protected BooleanType immutable;
5388
5389    /**
5390     * Explanation of why this value set is needed and why it has been designed as it has.
5391     */
5392    @Child(name = "purpose", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
5393    @Description(shortDefinition="Why this value set is defined", formalDefinition="Explanation of why this value set is needed and why it has been designed as it has." )
5394    protected MarkdownType purpose;
5395
5396    /**
5397     * A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set.
5398     */
5399    @Child(name = "copyright", type = {MarkdownType.class}, order=15, min=0, max=1, modifier=false, summary=false)
5400    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set." )
5401    protected MarkdownType copyright;
5402
5403    /**
5404     * The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
5405     */
5406    @Child(name = "approvalDate", type = {DateType.class}, order=16, min=0, max=1, modifier=false, summary=false)
5407    @Description(shortDefinition="When the ValueSet was approved by publisher", formalDefinition="The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage." )
5408    protected DateType approvalDate;
5409
5410    /**
5411     * The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
5412     */
5413    @Child(name = "lastReviewDate", type = {DateType.class}, order=17, min=0, max=1, modifier=false, summary=false)
5414    @Description(shortDefinition="When the ValueSet was last reviewed", formalDefinition="The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date." )
5415    protected DateType lastReviewDate;
5416
5417    /**
5418     * The period during which the ValueSet content was or is planned to be in active use.
5419     */
5420    @Child(name = "effectivePeriod", type = {Period.class}, order=18, min=0, max=1, modifier=false, summary=true)
5421    @Description(shortDefinition="When the ValueSet is expected to be used", formalDefinition="The period during which the ValueSet content was or is planned to be in active use." )
5422    protected Period effectivePeriod;
5423
5424    /**
5425     * Descriptions related to the content of the ValueSet. Topics provide a high-level categorization as well as keywords for the ValueSet that can be useful for filtering and searching.
5426     */
5427    @Child(name = "topic", type = {CodeableConcept.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5428    @Description(shortDefinition="E.g. Education, Treatment, Assessment, etc.", formalDefinition="Descriptions related to the content of the ValueSet. Topics provide a high-level categorization as well as keywords for the ValueSet that can be useful for filtering and searching." )
5429    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/definition-topic")
5430    protected List<CodeableConcept> topic;
5431
5432    /**
5433     * An individiual or organization primarily involved in the creation and maintenance of the ValueSet.
5434     */
5435    @Child(name = "author", type = {ContactDetail.class}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5436    @Description(shortDefinition="Who authored the ValueSet", formalDefinition="An individiual or organization primarily involved in the creation and maintenance of the ValueSet." )
5437    protected List<ContactDetail> author;
5438
5439    /**
5440     * An individual or organization primarily responsible for internal coherence of the ValueSet.
5441     */
5442    @Child(name = "editor", type = {ContactDetail.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5443    @Description(shortDefinition="Who edited the ValueSet", formalDefinition="An individual or organization primarily responsible for internal coherence of the ValueSet." )
5444    protected List<ContactDetail> editor;
5445
5446    /**
5447     * An individual or organization primarily responsible for review of some aspect of the ValueSet.
5448     */
5449    @Child(name = "reviewer", type = {ContactDetail.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5450    @Description(shortDefinition="Who reviewed the ValueSet", formalDefinition="An individual or organization primarily responsible for review of some aspect of the ValueSet." )
5451    protected List<ContactDetail> reviewer;
5452
5453    /**
5454     * An individual or organization responsible for officially endorsing the ValueSet for use in some setting.
5455     */
5456    @Child(name = "endorser", type = {ContactDetail.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5457    @Description(shortDefinition="Who endorsed the ValueSet", formalDefinition="An individual or organization responsible for officially endorsing the ValueSet for use in some setting." )
5458    protected List<ContactDetail> endorser;
5459
5460    /**
5461     * Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts.
5462     */
5463    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
5464    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts." )
5465    protected List<RelatedArtifact> relatedArtifact;
5466
5467    /**
5468     * A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD).
5469     */
5470    @Child(name = "compose", type = {}, order=25, min=0, max=1, modifier=false, summary=false)
5471    @Description(shortDefinition="Content logical definition of the value set (CLD)", formalDefinition="A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD)." )
5472    protected ValueSetComposeComponent compose;
5473
5474    /**
5475     * A value set can also be "expanded", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed.
5476     */
5477    @Child(name = "expansion", type = {}, order=26, min=0, max=1, modifier=false, summary=false)
5478    @Description(shortDefinition="Used when the value set is \"expanded\"", formalDefinition="A value set can also be \"expanded\", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed." )
5479    protected ValueSetExpansionComponent expansion;
5480
5481    /**
5482     * Description of the semantic space the Value Set Expansion is intended to cover and should further clarify the text in ValueSet.description.
5483     */
5484    @Child(name = "scope", type = {}, order=27, min=0, max=1, modifier=false, summary=false)
5485    @Description(shortDefinition="Description of the semantic space the Value Set Expansion is intended to cover and should further clarify the text in ValueSet.description", formalDefinition="Description of the semantic space the Value Set Expansion is intended to cover and should further clarify the text in ValueSet.description." )
5486    protected ValueSetScopeComponent scope;
5487
5488    private static final long serialVersionUID = -1552826200L;
5489
5490  /**
5491   * Constructor
5492   */
5493    public ValueSet() {
5494      super();
5495    }
5496
5497  /**
5498   * Constructor
5499   */
5500    public ValueSet(PublicationStatus status) {
5501      super();
5502      this.setStatus(status);
5503    }
5504
5505    /**
5506     * @return {@link #url} (An absolute URI that is used to identify this value set 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 an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
5507     */
5508    public UriType getUrlElement() { 
5509      if (this.url == null)
5510        if (Configuration.errorOnAutoCreate())
5511          throw new Error("Attempt to auto-create ValueSet.url");
5512        else if (Configuration.doAutoCreate())
5513          this.url = new UriType(); // bb
5514      return this.url;
5515    }
5516
5517    public boolean hasUrlElement() { 
5518      return this.url != null && !this.url.isEmpty();
5519    }
5520
5521    public boolean hasUrl() { 
5522      return this.url != null && !this.url.isEmpty();
5523    }
5524
5525    /**
5526     * @param value {@link #url} (An absolute URI that is used to identify this value set 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 an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
5527     */
5528    public ValueSet setUrlElement(UriType value) { 
5529      this.url = value;
5530      return this;
5531    }
5532
5533    /**
5534     * @return An absolute URI that is used to identify this value set 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 an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers.
5535     */
5536    public String getUrl() { 
5537      return this.url == null ? null : this.url.getValue();
5538    }
5539
5540    /**
5541     * @param value An absolute URI that is used to identify this value set 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 an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers.
5542     */
5543    public ValueSet setUrl(String value) { 
5544      if (Utilities.noString(value))
5545        this.url = null;
5546      else {
5547        if (this.url == null)
5548          this.url = new UriType();
5549        this.url.setValue(value);
5550      }
5551      return this;
5552    }
5553
5554    /**
5555     * @return {@link #identifier} (A formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance.)
5556     */
5557    public List<Identifier> getIdentifier() { 
5558      if (this.identifier == null)
5559        this.identifier = new ArrayList<Identifier>();
5560      return this.identifier;
5561    }
5562
5563    /**
5564     * @return Returns a reference to <code>this</code> for easy method chaining
5565     */
5566    public ValueSet setIdentifier(List<Identifier> theIdentifier) { 
5567      this.identifier = theIdentifier;
5568      return this;
5569    }
5570
5571    public boolean hasIdentifier() { 
5572      if (this.identifier == null)
5573        return false;
5574      for (Identifier item : this.identifier)
5575        if (!item.isEmpty())
5576          return true;
5577      return false;
5578    }
5579
5580    public Identifier addIdentifier() { //3
5581      Identifier t = new Identifier();
5582      if (this.identifier == null)
5583        this.identifier = new ArrayList<Identifier>();
5584      this.identifier.add(t);
5585      return t;
5586    }
5587
5588    public ValueSet addIdentifier(Identifier t) { //3
5589      if (t == null)
5590        return this;
5591      if (this.identifier == null)
5592        this.identifier = new ArrayList<Identifier>();
5593      this.identifier.add(t);
5594      return this;
5595    }
5596
5597    /**
5598     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
5599     */
5600    public Identifier getIdentifierFirstRep() { 
5601      if (getIdentifier().isEmpty()) {
5602        addIdentifier();
5603      }
5604      return getIdentifier().get(0);
5605    }
5606
5607    /**
5608     * @return {@link #version} (The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set 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
5609     */
5610    public StringType getVersionElement() { 
5611      if (this.version == null)
5612        if (Configuration.errorOnAutoCreate())
5613          throw new Error("Attempt to auto-create ValueSet.version");
5614        else if (Configuration.doAutoCreate())
5615          this.version = new StringType(); // bb
5616      return this.version;
5617    }
5618
5619    public boolean hasVersionElement() { 
5620      return this.version != null && !this.version.isEmpty();
5621    }
5622
5623    public boolean hasVersion() { 
5624      return this.version != null && !this.version.isEmpty();
5625    }
5626
5627    /**
5628     * @param value {@link #version} (The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set 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
5629     */
5630    public ValueSet setVersionElement(StringType value) { 
5631      this.version = value;
5632      return this;
5633    }
5634
5635    /**
5636     * @return The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set 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.
5637     */
5638    public String getVersion() { 
5639      return this.version == null ? null : this.version.getValue();
5640    }
5641
5642    /**
5643     * @param value The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set 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.
5644     */
5645    public ValueSet setVersion(String value) { 
5646      if (Utilities.noString(value))
5647        this.version = null;
5648      else {
5649        if (this.version == null)
5650          this.version = new StringType();
5651        this.version.setValue(value);
5652      }
5653      return this;
5654    }
5655
5656    /**
5657     * @return {@link #name} (A natural language name identifying the value set. 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
5658     */
5659    public StringType getNameElement() { 
5660      if (this.name == null)
5661        if (Configuration.errorOnAutoCreate())
5662          throw new Error("Attempt to auto-create ValueSet.name");
5663        else if (Configuration.doAutoCreate())
5664          this.name = new StringType(); // bb
5665      return this.name;
5666    }
5667
5668    public boolean hasNameElement() { 
5669      return this.name != null && !this.name.isEmpty();
5670    }
5671
5672    public boolean hasName() { 
5673      return this.name != null && !this.name.isEmpty();
5674    }
5675
5676    /**
5677     * @param value {@link #name} (A natural language name identifying the value set. 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
5678     */
5679    public ValueSet setNameElement(StringType value) { 
5680      this.name = value;
5681      return this;
5682    }
5683
5684    /**
5685     * @return A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generation.
5686     */
5687    public String getName() { 
5688      return this.name == null ? null : this.name.getValue();
5689    }
5690
5691    /**
5692     * @param value A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generation.
5693     */
5694    public ValueSet setName(String value) { 
5695      if (Utilities.noString(value))
5696        this.name = null;
5697      else {
5698        if (this.name == null)
5699          this.name = new StringType();
5700        this.name.setValue(value);
5701      }
5702      return this;
5703    }
5704
5705    /**
5706     * @return {@link #title} (A short, descriptive, user-friendly title for the value set.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
5707     */
5708    public StringType getTitleElement() { 
5709      if (this.title == null)
5710        if (Configuration.errorOnAutoCreate())
5711          throw new Error("Attempt to auto-create ValueSet.title");
5712        else if (Configuration.doAutoCreate())
5713          this.title = new StringType(); // bb
5714      return this.title;
5715    }
5716
5717    public boolean hasTitleElement() { 
5718      return this.title != null && !this.title.isEmpty();
5719    }
5720
5721    public boolean hasTitle() { 
5722      return this.title != null && !this.title.isEmpty();
5723    }
5724
5725    /**
5726     * @param value {@link #title} (A short, descriptive, user-friendly title for the value set.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
5727     */
5728    public ValueSet setTitleElement(StringType value) { 
5729      this.title = value;
5730      return this;
5731    }
5732
5733    /**
5734     * @return A short, descriptive, user-friendly title for the value set.
5735     */
5736    public String getTitle() { 
5737      return this.title == null ? null : this.title.getValue();
5738    }
5739
5740    /**
5741     * @param value A short, descriptive, user-friendly title for the value set.
5742     */
5743    public ValueSet setTitle(String value) { 
5744      if (Utilities.noString(value))
5745        this.title = null;
5746      else {
5747        if (this.title == null)
5748          this.title = new StringType();
5749        this.title.setValue(value);
5750      }
5751      return this;
5752    }
5753
5754    /**
5755     * @return {@link #status} (The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
5756     */
5757    public Enumeration<PublicationStatus> getStatusElement() { 
5758      if (this.status == null)
5759        if (Configuration.errorOnAutoCreate())
5760          throw new Error("Attempt to auto-create ValueSet.status");
5761        else if (Configuration.doAutoCreate())
5762          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
5763      return this.status;
5764    }
5765
5766    public boolean hasStatusElement() { 
5767      return this.status != null && !this.status.isEmpty();
5768    }
5769
5770    public boolean hasStatus() { 
5771      return this.status != null && !this.status.isEmpty();
5772    }
5773
5774    /**
5775     * @param value {@link #status} (The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
5776     */
5777    public ValueSet setStatusElement(Enumeration<PublicationStatus> value) { 
5778      this.status = value;
5779      return this;
5780    }
5781
5782    /**
5783     * @return The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state.
5784     */
5785    public PublicationStatus getStatus() { 
5786      return this.status == null ? null : this.status.getValue();
5787    }
5788
5789    /**
5790     * @param value The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state.
5791     */
5792    public ValueSet setStatus(PublicationStatus value) { 
5793        if (this.status == null)
5794          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
5795        this.status.setValue(value);
5796      return this;
5797    }
5798
5799    /**
5800     * @return {@link #experimental} (A Boolean value to indicate that this value set 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
5801     */
5802    public BooleanType getExperimentalElement() { 
5803      if (this.experimental == null)
5804        if (Configuration.errorOnAutoCreate())
5805          throw new Error("Attempt to auto-create ValueSet.experimental");
5806        else if (Configuration.doAutoCreate())
5807          this.experimental = new BooleanType(); // bb
5808      return this.experimental;
5809    }
5810
5811    public boolean hasExperimentalElement() { 
5812      return this.experimental != null && !this.experimental.isEmpty();
5813    }
5814
5815    public boolean hasExperimental() { 
5816      return this.experimental != null && !this.experimental.isEmpty();
5817    }
5818
5819    /**
5820     * @param value {@link #experimental} (A Boolean value to indicate that this value set 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
5821     */
5822    public ValueSet setExperimentalElement(BooleanType value) { 
5823      this.experimental = value;
5824      return this;
5825    }
5826
5827    /**
5828     * @return A Boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
5829     */
5830    public boolean getExperimental() { 
5831      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
5832    }
5833
5834    /**
5835     * @param value A Boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
5836     */
5837    public ValueSet setExperimental(boolean value) { 
5838        if (this.experimental == null)
5839          this.experimental = new BooleanType();
5840        this.experimental.setValue(value);
5841      return this;
5842    }
5843
5844    /**
5845     * @return {@link #date} (The date (and optionally time) when the value set metadata or content logical definition (.compose) was created or revised.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
5846     */
5847    public DateTimeType getDateElement() { 
5848      if (this.date == null)
5849        if (Configuration.errorOnAutoCreate())
5850          throw new Error("Attempt to auto-create ValueSet.date");
5851        else if (Configuration.doAutoCreate())
5852          this.date = new DateTimeType(); // bb
5853      return this.date;
5854    }
5855
5856    public boolean hasDateElement() { 
5857      return this.date != null && !this.date.isEmpty();
5858    }
5859
5860    public boolean hasDate() { 
5861      return this.date != null && !this.date.isEmpty();
5862    }
5863
5864    /**
5865     * @param value {@link #date} (The date (and optionally time) when the value set metadata or content logical definition (.compose) was created or revised.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
5866     */
5867    public ValueSet setDateElement(DateTimeType value) { 
5868      this.date = value;
5869      return this;
5870    }
5871
5872    /**
5873     * @return The date (and optionally time) when the value set metadata or content logical definition (.compose) was created or revised.
5874     */
5875    public Date getDate() { 
5876      return this.date == null ? null : this.date.getValue();
5877    }
5878
5879    /**
5880     * @param value The date (and optionally time) when the value set metadata or content logical definition (.compose) was created or revised.
5881     */
5882    public ValueSet setDate(Date value) { 
5883      if (value == null)
5884        this.date = null;
5885      else {
5886        if (this.date == null)
5887          this.date = new DateTimeType();
5888        this.date.setValue(value);
5889      }
5890      return this;
5891    }
5892
5893    /**
5894     * @return {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the value set.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
5895     */
5896    public StringType getPublisherElement() { 
5897      if (this.publisher == null)
5898        if (Configuration.errorOnAutoCreate())
5899          throw new Error("Attempt to auto-create ValueSet.publisher");
5900        else if (Configuration.doAutoCreate())
5901          this.publisher = new StringType(); // bb
5902      return this.publisher;
5903    }
5904
5905    public boolean hasPublisherElement() { 
5906      return this.publisher != null && !this.publisher.isEmpty();
5907    }
5908
5909    public boolean hasPublisher() { 
5910      return this.publisher != null && !this.publisher.isEmpty();
5911    }
5912
5913    /**
5914     * @param value {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the value set.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
5915     */
5916    public ValueSet setPublisherElement(StringType value) { 
5917      this.publisher = value;
5918      return this;
5919    }
5920
5921    /**
5922     * @return The name of the organization or individual responsible for the release and ongoing maintenance of the value set.
5923     */
5924    public String getPublisher() { 
5925      return this.publisher == null ? null : this.publisher.getValue();
5926    }
5927
5928    /**
5929     * @param value The name of the organization or individual responsible for the release and ongoing maintenance of the value set.
5930     */
5931    public ValueSet setPublisher(String value) { 
5932      if (Utilities.noString(value))
5933        this.publisher = null;
5934      else {
5935        if (this.publisher == null)
5936          this.publisher = new StringType();
5937        this.publisher.setValue(value);
5938      }
5939      return this;
5940    }
5941
5942    /**
5943     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
5944     */
5945    public List<ContactDetail> getContact() { 
5946      if (this.contact == null)
5947        this.contact = new ArrayList<ContactDetail>();
5948      return this.contact;
5949    }
5950
5951    /**
5952     * @return Returns a reference to <code>this</code> for easy method chaining
5953     */
5954    public ValueSet setContact(List<ContactDetail> theContact) { 
5955      this.contact = theContact;
5956      return this;
5957    }
5958
5959    public boolean hasContact() { 
5960      if (this.contact == null)
5961        return false;
5962      for (ContactDetail item : this.contact)
5963        if (!item.isEmpty())
5964          return true;
5965      return false;
5966    }
5967
5968    public ContactDetail addContact() { //3
5969      ContactDetail t = new ContactDetail();
5970      if (this.contact == null)
5971        this.contact = new ArrayList<ContactDetail>();
5972      this.contact.add(t);
5973      return t;
5974    }
5975
5976    public ValueSet addContact(ContactDetail t) { //3
5977      if (t == null)
5978        return this;
5979      if (this.contact == null)
5980        this.contact = new ArrayList<ContactDetail>();
5981      this.contact.add(t);
5982      return this;
5983    }
5984
5985    /**
5986     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
5987     */
5988    public ContactDetail getContactFirstRep() { 
5989      if (getContact().isEmpty()) {
5990        addContact();
5991      }
5992      return getContact().get(0);
5993    }
5994
5995    /**
5996     * @return {@link #description} (A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
5997     */
5998    public MarkdownType getDescriptionElement() { 
5999      if (this.description == null)
6000        if (Configuration.errorOnAutoCreate())
6001          throw new Error("Attempt to auto-create ValueSet.description");
6002        else if (Configuration.doAutoCreate())
6003          this.description = new MarkdownType(); // bb
6004      return this.description;
6005    }
6006
6007    public boolean hasDescriptionElement() { 
6008      return this.description != null && !this.description.isEmpty();
6009    }
6010
6011    public boolean hasDescription() { 
6012      return this.description != null && !this.description.isEmpty();
6013    }
6014
6015    /**
6016     * @param value {@link #description} (A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
6017     */
6018    public ValueSet setDescriptionElement(MarkdownType value) { 
6019      this.description = value;
6020      return this;
6021    }
6022
6023    /**
6024     * @return A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set.
6025     */
6026    public String getDescription() { 
6027      return this.description == null ? null : this.description.getValue();
6028    }
6029
6030    /**
6031     * @param value A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set.
6032     */
6033    public ValueSet setDescription(String value) { 
6034      if (value == null)
6035        this.description = null;
6036      else {
6037        if (this.description == null)
6038          this.description = new MarkdownType();
6039        this.description.setValue(value);
6040      }
6041      return this;
6042    }
6043
6044    /**
6045     * @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 value set instances.)
6046     */
6047    public List<UsageContext> getUseContext() { 
6048      if (this.useContext == null)
6049        this.useContext = new ArrayList<UsageContext>();
6050      return this.useContext;
6051    }
6052
6053    /**
6054     * @return Returns a reference to <code>this</code> for easy method chaining
6055     */
6056    public ValueSet setUseContext(List<UsageContext> theUseContext) { 
6057      this.useContext = theUseContext;
6058      return this;
6059    }
6060
6061    public boolean hasUseContext() { 
6062      if (this.useContext == null)
6063        return false;
6064      for (UsageContext item : this.useContext)
6065        if (!item.isEmpty())
6066          return true;
6067      return false;
6068    }
6069
6070    public UsageContext addUseContext() { //3
6071      UsageContext t = new UsageContext();
6072      if (this.useContext == null)
6073        this.useContext = new ArrayList<UsageContext>();
6074      this.useContext.add(t);
6075      return t;
6076    }
6077
6078    public ValueSet addUseContext(UsageContext t) { //3
6079      if (t == null)
6080        return this;
6081      if (this.useContext == null)
6082        this.useContext = new ArrayList<UsageContext>();
6083      this.useContext.add(t);
6084      return this;
6085    }
6086
6087    /**
6088     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
6089     */
6090    public UsageContext getUseContextFirstRep() { 
6091      if (getUseContext().isEmpty()) {
6092        addUseContext();
6093      }
6094      return getUseContext().get(0);
6095    }
6096
6097    /**
6098     * @return {@link #jurisdiction} (A legal or geographic region in which the value set is intended to be used.)
6099     */
6100    public List<CodeableConcept> getJurisdiction() { 
6101      if (this.jurisdiction == null)
6102        this.jurisdiction = new ArrayList<CodeableConcept>();
6103      return this.jurisdiction;
6104    }
6105
6106    /**
6107     * @return Returns a reference to <code>this</code> for easy method chaining
6108     */
6109    public ValueSet setJurisdiction(List<CodeableConcept> theJurisdiction) { 
6110      this.jurisdiction = theJurisdiction;
6111      return this;
6112    }
6113
6114    public boolean hasJurisdiction() { 
6115      if (this.jurisdiction == null)
6116        return false;
6117      for (CodeableConcept item : this.jurisdiction)
6118        if (!item.isEmpty())
6119          return true;
6120      return false;
6121    }
6122
6123    public CodeableConcept addJurisdiction() { //3
6124      CodeableConcept t = new CodeableConcept();
6125      if (this.jurisdiction == null)
6126        this.jurisdiction = new ArrayList<CodeableConcept>();
6127      this.jurisdiction.add(t);
6128      return t;
6129    }
6130
6131    public ValueSet addJurisdiction(CodeableConcept t) { //3
6132      if (t == null)
6133        return this;
6134      if (this.jurisdiction == null)
6135        this.jurisdiction = new ArrayList<CodeableConcept>();
6136      this.jurisdiction.add(t);
6137      return this;
6138    }
6139
6140    /**
6141     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
6142     */
6143    public CodeableConcept getJurisdictionFirstRep() { 
6144      if (getJurisdiction().isEmpty()) {
6145        addJurisdiction();
6146      }
6147      return getJurisdiction().get(0);
6148    }
6149
6150    /**
6151     * @return {@link #immutable} (If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change.). This is the underlying object with id, value and extensions. The accessor "getImmutable" gives direct access to the value
6152     */
6153    public BooleanType getImmutableElement() { 
6154      if (this.immutable == null)
6155        if (Configuration.errorOnAutoCreate())
6156          throw new Error("Attempt to auto-create ValueSet.immutable");
6157        else if (Configuration.doAutoCreate())
6158          this.immutable = new BooleanType(); // bb
6159      return this.immutable;
6160    }
6161
6162    public boolean hasImmutableElement() { 
6163      return this.immutable != null && !this.immutable.isEmpty();
6164    }
6165
6166    public boolean hasImmutable() { 
6167      return this.immutable != null && !this.immutable.isEmpty();
6168    }
6169
6170    /**
6171     * @param value {@link #immutable} (If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change.). This is the underlying object with id, value and extensions. The accessor "getImmutable" gives direct access to the value
6172     */
6173    public ValueSet setImmutableElement(BooleanType value) { 
6174      this.immutable = value;
6175      return this;
6176    }
6177
6178    /**
6179     * @return If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change.
6180     */
6181    public boolean getImmutable() { 
6182      return this.immutable == null || this.immutable.isEmpty() ? false : this.immutable.getValue();
6183    }
6184
6185    /**
6186     * @param value If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change.
6187     */
6188    public ValueSet setImmutable(boolean value) { 
6189        if (this.immutable == null)
6190          this.immutable = new BooleanType();
6191        this.immutable.setValue(value);
6192      return this;
6193    }
6194
6195    /**
6196     * @return {@link #purpose} (Explanation of why this value set 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
6197     */
6198    public MarkdownType getPurposeElement() { 
6199      if (this.purpose == null)
6200        if (Configuration.errorOnAutoCreate())
6201          throw new Error("Attempt to auto-create ValueSet.purpose");
6202        else if (Configuration.doAutoCreate())
6203          this.purpose = new MarkdownType(); // bb
6204      return this.purpose;
6205    }
6206
6207    public boolean hasPurposeElement() { 
6208      return this.purpose != null && !this.purpose.isEmpty();
6209    }
6210
6211    public boolean hasPurpose() { 
6212      return this.purpose != null && !this.purpose.isEmpty();
6213    }
6214
6215    /**
6216     * @param value {@link #purpose} (Explanation of why this value set 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
6217     */
6218    public ValueSet setPurposeElement(MarkdownType value) { 
6219      this.purpose = value;
6220      return this;
6221    }
6222
6223    /**
6224     * @return Explanation of why this value set is needed and why it has been designed as it has.
6225     */
6226    public String getPurpose() { 
6227      return this.purpose == null ? null : this.purpose.getValue();
6228    }
6229
6230    /**
6231     * @param value Explanation of why this value set is needed and why it has been designed as it has.
6232     */
6233    public ValueSet setPurpose(String value) { 
6234      if (value == null)
6235        this.purpose = null;
6236      else {
6237        if (this.purpose == null)
6238          this.purpose = new MarkdownType();
6239        this.purpose.setValue(value);
6240      }
6241      return this;
6242    }
6243
6244    /**
6245     * @return {@link #copyright} (A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
6246     */
6247    public MarkdownType getCopyrightElement() { 
6248      if (this.copyright == null)
6249        if (Configuration.errorOnAutoCreate())
6250          throw new Error("Attempt to auto-create ValueSet.copyright");
6251        else if (Configuration.doAutoCreate())
6252          this.copyright = new MarkdownType(); // bb
6253      return this.copyright;
6254    }
6255
6256    public boolean hasCopyrightElement() { 
6257      return this.copyright != null && !this.copyright.isEmpty();
6258    }
6259
6260    public boolean hasCopyright() { 
6261      return this.copyright != null && !this.copyright.isEmpty();
6262    }
6263
6264    /**
6265     * @param value {@link #copyright} (A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
6266     */
6267    public ValueSet setCopyrightElement(MarkdownType value) { 
6268      this.copyright = value;
6269      return this;
6270    }
6271
6272    /**
6273     * @return A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set.
6274     */
6275    public String getCopyright() { 
6276      return this.copyright == null ? null : this.copyright.getValue();
6277    }
6278
6279    /**
6280     * @param value A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set.
6281     */
6282    public ValueSet setCopyright(String value) { 
6283      if (value == null)
6284        this.copyright = null;
6285      else {
6286        if (this.copyright == null)
6287          this.copyright = new MarkdownType();
6288        this.copyright.setValue(value);
6289      }
6290      return this;
6291    }
6292
6293    /**
6294     * @return {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
6295     */
6296    public DateType getApprovalDateElement() { 
6297      if (this.approvalDate == null)
6298        if (Configuration.errorOnAutoCreate())
6299          throw new Error("Attempt to auto-create ValueSet.approvalDate");
6300        else if (Configuration.doAutoCreate())
6301          this.approvalDate = new DateType(); // bb
6302      return this.approvalDate;
6303    }
6304
6305    public boolean hasApprovalDateElement() { 
6306      return this.approvalDate != null && !this.approvalDate.isEmpty();
6307    }
6308
6309    public boolean hasApprovalDate() { 
6310      return this.approvalDate != null && !this.approvalDate.isEmpty();
6311    }
6312
6313    /**
6314     * @param value {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
6315     */
6316    public ValueSet setApprovalDateElement(DateType value) { 
6317      this.approvalDate = value;
6318      return this;
6319    }
6320
6321    /**
6322     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
6323     */
6324    public Date getApprovalDate() { 
6325      return this.approvalDate == null ? null : this.approvalDate.getValue();
6326    }
6327
6328    /**
6329     * @param value The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
6330     */
6331    public ValueSet setApprovalDate(Date value) { 
6332      if (value == null)
6333        this.approvalDate = null;
6334      else {
6335        if (this.approvalDate == null)
6336          this.approvalDate = new DateType();
6337        this.approvalDate.setValue(value);
6338      }
6339      return this;
6340    }
6341
6342    /**
6343     * @return {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
6344     */
6345    public DateType getLastReviewDateElement() { 
6346      if (this.lastReviewDate == null)
6347        if (Configuration.errorOnAutoCreate())
6348          throw new Error("Attempt to auto-create ValueSet.lastReviewDate");
6349        else if (Configuration.doAutoCreate())
6350          this.lastReviewDate = new DateType(); // bb
6351      return this.lastReviewDate;
6352    }
6353
6354    public boolean hasLastReviewDateElement() { 
6355      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
6356    }
6357
6358    public boolean hasLastReviewDate() { 
6359      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
6360    }
6361
6362    /**
6363     * @param value {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
6364     */
6365    public ValueSet setLastReviewDateElement(DateType value) { 
6366      this.lastReviewDate = value;
6367      return this;
6368    }
6369
6370    /**
6371     * @return The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
6372     */
6373    public Date getLastReviewDate() { 
6374      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
6375    }
6376
6377    /**
6378     * @param value The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
6379     */
6380    public ValueSet setLastReviewDate(Date value) { 
6381      if (value == null)
6382        this.lastReviewDate = null;
6383      else {
6384        if (this.lastReviewDate == null)
6385          this.lastReviewDate = new DateType();
6386        this.lastReviewDate.setValue(value);
6387      }
6388      return this;
6389    }
6390
6391    /**
6392     * @return {@link #effectivePeriod} (The period during which the ValueSet content was or is planned to be in active use.)
6393     */
6394    public Period getEffectivePeriod() { 
6395      if (this.effectivePeriod == null)
6396        if (Configuration.errorOnAutoCreate())
6397          throw new Error("Attempt to auto-create ValueSet.effectivePeriod");
6398        else if (Configuration.doAutoCreate())
6399          this.effectivePeriod = new Period(); // cc
6400      return this.effectivePeriod;
6401    }
6402
6403    public boolean hasEffectivePeriod() { 
6404      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
6405    }
6406
6407    /**
6408     * @param value {@link #effectivePeriod} (The period during which the ValueSet content was or is planned to be in active use.)
6409     */
6410    public ValueSet setEffectivePeriod(Period value) { 
6411      this.effectivePeriod = value;
6412      return this;
6413    }
6414
6415    /**
6416     * @return {@link #topic} (Descriptions related to the content of the ValueSet. Topics provide a high-level categorization as well as keywords for the ValueSet that can be useful for filtering and searching.)
6417     */
6418    public List<CodeableConcept> getTopic() { 
6419      if (this.topic == null)
6420        this.topic = new ArrayList<CodeableConcept>();
6421      return this.topic;
6422    }
6423
6424    /**
6425     * @return Returns a reference to <code>this</code> for easy method chaining
6426     */
6427    public ValueSet setTopic(List<CodeableConcept> theTopic) { 
6428      this.topic = theTopic;
6429      return this;
6430    }
6431
6432    public boolean hasTopic() { 
6433      if (this.topic == null)
6434        return false;
6435      for (CodeableConcept item : this.topic)
6436        if (!item.isEmpty())
6437          return true;
6438      return false;
6439    }
6440
6441    public CodeableConcept addTopic() { //3
6442      CodeableConcept t = new CodeableConcept();
6443      if (this.topic == null)
6444        this.topic = new ArrayList<CodeableConcept>();
6445      this.topic.add(t);
6446      return t;
6447    }
6448
6449    public ValueSet addTopic(CodeableConcept t) { //3
6450      if (t == null)
6451        return this;
6452      if (this.topic == null)
6453        this.topic = new ArrayList<CodeableConcept>();
6454      this.topic.add(t);
6455      return this;
6456    }
6457
6458    /**
6459     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist {3}
6460     */
6461    public CodeableConcept getTopicFirstRep() { 
6462      if (getTopic().isEmpty()) {
6463        addTopic();
6464      }
6465      return getTopic().get(0);
6466    }
6467
6468    /**
6469     * @return {@link #author} (An individiual or organization primarily involved in the creation and maintenance of the ValueSet.)
6470     */
6471    public List<ContactDetail> getAuthor() { 
6472      if (this.author == null)
6473        this.author = new ArrayList<ContactDetail>();
6474      return this.author;
6475    }
6476
6477    /**
6478     * @return Returns a reference to <code>this</code> for easy method chaining
6479     */
6480    public ValueSet setAuthor(List<ContactDetail> theAuthor) { 
6481      this.author = theAuthor;
6482      return this;
6483    }
6484
6485    public boolean hasAuthor() { 
6486      if (this.author == null)
6487        return false;
6488      for (ContactDetail item : this.author)
6489        if (!item.isEmpty())
6490          return true;
6491      return false;
6492    }
6493
6494    public ContactDetail addAuthor() { //3
6495      ContactDetail t = new ContactDetail();
6496      if (this.author == null)
6497        this.author = new ArrayList<ContactDetail>();
6498      this.author.add(t);
6499      return t;
6500    }
6501
6502    public ValueSet addAuthor(ContactDetail t) { //3
6503      if (t == null)
6504        return this;
6505      if (this.author == null)
6506        this.author = new ArrayList<ContactDetail>();
6507      this.author.add(t);
6508      return this;
6509    }
6510
6511    /**
6512     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist {3}
6513     */
6514    public ContactDetail getAuthorFirstRep() { 
6515      if (getAuthor().isEmpty()) {
6516        addAuthor();
6517      }
6518      return getAuthor().get(0);
6519    }
6520
6521    /**
6522     * @return {@link #editor} (An individual or organization primarily responsible for internal coherence of the ValueSet.)
6523     */
6524    public List<ContactDetail> getEditor() { 
6525      if (this.editor == null)
6526        this.editor = new ArrayList<ContactDetail>();
6527      return this.editor;
6528    }
6529
6530    /**
6531     * @return Returns a reference to <code>this</code> for easy method chaining
6532     */
6533    public ValueSet setEditor(List<ContactDetail> theEditor) { 
6534      this.editor = theEditor;
6535      return this;
6536    }
6537
6538    public boolean hasEditor() { 
6539      if (this.editor == null)
6540        return false;
6541      for (ContactDetail item : this.editor)
6542        if (!item.isEmpty())
6543          return true;
6544      return false;
6545    }
6546
6547    public ContactDetail addEditor() { //3
6548      ContactDetail t = new ContactDetail();
6549      if (this.editor == null)
6550        this.editor = new ArrayList<ContactDetail>();
6551      this.editor.add(t);
6552      return t;
6553    }
6554
6555    public ValueSet addEditor(ContactDetail t) { //3
6556      if (t == null)
6557        return this;
6558      if (this.editor == null)
6559        this.editor = new ArrayList<ContactDetail>();
6560      this.editor.add(t);
6561      return this;
6562    }
6563
6564    /**
6565     * @return The first repetition of repeating field {@link #editor}, creating it if it does not already exist {3}
6566     */
6567    public ContactDetail getEditorFirstRep() { 
6568      if (getEditor().isEmpty()) {
6569        addEditor();
6570      }
6571      return getEditor().get(0);
6572    }
6573
6574    /**
6575     * @return {@link #reviewer} (An individual or organization primarily responsible for review of some aspect of the ValueSet.)
6576     */
6577    public List<ContactDetail> getReviewer() { 
6578      if (this.reviewer == null)
6579        this.reviewer = new ArrayList<ContactDetail>();
6580      return this.reviewer;
6581    }
6582
6583    /**
6584     * @return Returns a reference to <code>this</code> for easy method chaining
6585     */
6586    public ValueSet setReviewer(List<ContactDetail> theReviewer) { 
6587      this.reviewer = theReviewer;
6588      return this;
6589    }
6590
6591    public boolean hasReviewer() { 
6592      if (this.reviewer == null)
6593        return false;
6594      for (ContactDetail item : this.reviewer)
6595        if (!item.isEmpty())
6596          return true;
6597      return false;
6598    }
6599
6600    public ContactDetail addReviewer() { //3
6601      ContactDetail t = new ContactDetail();
6602      if (this.reviewer == null)
6603        this.reviewer = new ArrayList<ContactDetail>();
6604      this.reviewer.add(t);
6605      return t;
6606    }
6607
6608    public ValueSet addReviewer(ContactDetail t) { //3
6609      if (t == null)
6610        return this;
6611      if (this.reviewer == null)
6612        this.reviewer = new ArrayList<ContactDetail>();
6613      this.reviewer.add(t);
6614      return this;
6615    }
6616
6617    /**
6618     * @return The first repetition of repeating field {@link #reviewer}, creating it if it does not already exist {3}
6619     */
6620    public ContactDetail getReviewerFirstRep() { 
6621      if (getReviewer().isEmpty()) {
6622        addReviewer();
6623      }
6624      return getReviewer().get(0);
6625    }
6626
6627    /**
6628     * @return {@link #endorser} (An individual or organization responsible for officially endorsing the ValueSet for use in some setting.)
6629     */
6630    public List<ContactDetail> getEndorser() { 
6631      if (this.endorser == null)
6632        this.endorser = new ArrayList<ContactDetail>();
6633      return this.endorser;
6634    }
6635
6636    /**
6637     * @return Returns a reference to <code>this</code> for easy method chaining
6638     */
6639    public ValueSet setEndorser(List<ContactDetail> theEndorser) { 
6640      this.endorser = theEndorser;
6641      return this;
6642    }
6643
6644    public boolean hasEndorser() { 
6645      if (this.endorser == null)
6646        return false;
6647      for (ContactDetail item : this.endorser)
6648        if (!item.isEmpty())
6649          return true;
6650      return false;
6651    }
6652
6653    public ContactDetail addEndorser() { //3
6654      ContactDetail t = new ContactDetail();
6655      if (this.endorser == null)
6656        this.endorser = new ArrayList<ContactDetail>();
6657      this.endorser.add(t);
6658      return t;
6659    }
6660
6661    public ValueSet addEndorser(ContactDetail t) { //3
6662      if (t == null)
6663        return this;
6664      if (this.endorser == null)
6665        this.endorser = new ArrayList<ContactDetail>();
6666      this.endorser.add(t);
6667      return this;
6668    }
6669
6670    /**
6671     * @return The first repetition of repeating field {@link #endorser}, creating it if it does not already exist {3}
6672     */
6673    public ContactDetail getEndorserFirstRep() { 
6674      if (getEndorser().isEmpty()) {
6675        addEndorser();
6676      }
6677      return getEndorser().get(0);
6678    }
6679
6680    /**
6681     * @return {@link #relatedArtifact} (Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts.)
6682     */
6683    public List<RelatedArtifact> getRelatedArtifact() { 
6684      if (this.relatedArtifact == null)
6685        this.relatedArtifact = new ArrayList<RelatedArtifact>();
6686      return this.relatedArtifact;
6687    }
6688
6689    /**
6690     * @return Returns a reference to <code>this</code> for easy method chaining
6691     */
6692    public ValueSet setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
6693      this.relatedArtifact = theRelatedArtifact;
6694      return this;
6695    }
6696
6697    public boolean hasRelatedArtifact() { 
6698      if (this.relatedArtifact == null)
6699        return false;
6700      for (RelatedArtifact item : this.relatedArtifact)
6701        if (!item.isEmpty())
6702          return true;
6703      return false;
6704    }
6705
6706    public RelatedArtifact addRelatedArtifact() { //3
6707      RelatedArtifact t = new RelatedArtifact();
6708      if (this.relatedArtifact == null)
6709        this.relatedArtifact = new ArrayList<RelatedArtifact>();
6710      this.relatedArtifact.add(t);
6711      return t;
6712    }
6713
6714    public ValueSet addRelatedArtifact(RelatedArtifact t) { //3
6715      if (t == null)
6716        return this;
6717      if (this.relatedArtifact == null)
6718        this.relatedArtifact = new ArrayList<RelatedArtifact>();
6719      this.relatedArtifact.add(t);
6720      return this;
6721    }
6722
6723    /**
6724     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist {3}
6725     */
6726    public RelatedArtifact getRelatedArtifactFirstRep() { 
6727      if (getRelatedArtifact().isEmpty()) {
6728        addRelatedArtifact();
6729      }
6730      return getRelatedArtifact().get(0);
6731    }
6732
6733    /**
6734     * @return {@link #compose} (A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD).)
6735     */
6736    public ValueSetComposeComponent getCompose() { 
6737      if (this.compose == null)
6738        if (Configuration.errorOnAutoCreate())
6739          throw new Error("Attempt to auto-create ValueSet.compose");
6740        else if (Configuration.doAutoCreate())
6741          this.compose = new ValueSetComposeComponent(); // cc
6742      return this.compose;
6743    }
6744
6745    public boolean hasCompose() { 
6746      return this.compose != null && !this.compose.isEmpty();
6747    }
6748
6749    /**
6750     * @param value {@link #compose} (A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD).)
6751     */
6752    public ValueSet setCompose(ValueSetComposeComponent value) { 
6753      this.compose = value;
6754      return this;
6755    }
6756
6757    /**
6758     * @return {@link #expansion} (A value set can also be "expanded", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed.)
6759     */
6760    public ValueSetExpansionComponent getExpansion() { 
6761      if (this.expansion == null)
6762        if (Configuration.errorOnAutoCreate())
6763          throw new Error("Attempt to auto-create ValueSet.expansion");
6764        else if (Configuration.doAutoCreate())
6765          this.expansion = new ValueSetExpansionComponent(); // cc
6766      return this.expansion;
6767    }
6768
6769    public boolean hasExpansion() { 
6770      return this.expansion != null && !this.expansion.isEmpty();
6771    }
6772
6773    /**
6774     * @param value {@link #expansion} (A value set can also be "expanded", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed.)
6775     */
6776    public ValueSet setExpansion(ValueSetExpansionComponent value) { 
6777      this.expansion = value;
6778      return this;
6779    }
6780
6781    /**
6782     * @return {@link #scope} (Description of the semantic space the Value Set Expansion is intended to cover and should further clarify the text in ValueSet.description.)
6783     */
6784    public ValueSetScopeComponent getScope() { 
6785      if (this.scope == null)
6786        if (Configuration.errorOnAutoCreate())
6787          throw new Error("Attempt to auto-create ValueSet.scope");
6788        else if (Configuration.doAutoCreate())
6789          this.scope = new ValueSetScopeComponent(); // cc
6790      return this.scope;
6791    }
6792
6793    public boolean hasScope() { 
6794      return this.scope != null && !this.scope.isEmpty();
6795    }
6796
6797    /**
6798     * @param value {@link #scope} (Description of the semantic space the Value Set Expansion is intended to cover and should further clarify the text in ValueSet.description.)
6799     */
6800    public ValueSet setScope(ValueSetScopeComponent value) { 
6801      this.scope = value;
6802      return this;
6803    }
6804
6805    /**
6806     * not supported on this implementation
6807     */
6808    @Override
6809    public int getVersionAlgorithmMax() { 
6810      return 0;
6811    }
6812    /**
6813     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
6814     */
6815    public DataType getVersionAlgorithm() { 
6816      throw new Error("The resource type \"ValueSet\" does not implement the property \"versionAlgorithm[x]\""); 
6817    }
6818    /**
6819     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
6820     */
6821    public StringType getVersionAlgorithmStringType() { 
6822      throw new Error("The resource type \"ValueSet\" does not implement the property \"versionAlgorithm[x]\""); 
6823    }
6824    public boolean hasVersionAlgorithmStringType() { 
6825      return false;////K 
6826    }
6827    /**
6828     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
6829     */
6830    public Coding getVersionAlgorithmCoding() { 
6831      throw new Error("The resource type \"ValueSet\" does not implement the property \"versionAlgorithm[x]\""); 
6832    }
6833    public boolean hasVersionAlgorithmCoding() { 
6834      return false;////K 
6835    }
6836    public boolean hasVersionAlgorithm() { 
6837      return false;
6838    }
6839    /**
6840     * @param value {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
6841     */
6842    public ValueSet setVersionAlgorithm(DataType value) { 
6843      throw new Error("The resource type \"ValueSet\" does not implement the property \"versionAlgorithm[x]\""); 
6844    }
6845
6846    /**
6847     * not supported on this implementation
6848     */
6849    @Override
6850    public int getCopyrightLabelMax() { 
6851      return 0;
6852    }
6853    /**
6854     * @return {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
6855     */
6856    public StringType getCopyrightLabelElement() { 
6857      throw new Error("The resource type \"ValueSet\" does not implement the property \"copyrightLabel\"");
6858    }
6859
6860    public boolean hasCopyrightLabelElement() { 
6861      return false;
6862    }
6863    public boolean hasCopyrightLabel() {
6864      return false;
6865    }
6866
6867    /**
6868     * @param value {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
6869     */
6870    public ValueSet setCopyrightLabelElement(StringType value) { 
6871      throw new Error("The resource type \"ValueSet\" does not implement the property \"copyrightLabel\""); 
6872    }
6873    public String getCopyrightLabel() { 
6874      throw new Error("The resource type \"ValueSet\" does not implement the property \"copyrightLabel\""); 
6875    }
6876    /**
6877     * @param value A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
6878     */
6879    public ValueSet setCopyrightLabel(String value) { 
6880      throw new Error("The resource type \"ValueSet\" does not implement the property \"copyrightLabel\""); 
6881    }
6882      protected void listChildren(List<Property> children) {
6883        super.listChildren(children);
6884        children.add(new Property("url", "uri", "An absolute URI that is used to identify this value set 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 an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers.", 0, 1, url));
6885        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
6886        children.add(new Property("version", "string", "The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set 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));
6887        children.add(new Property("name", "string", "A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
6888        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the value set.", 0, 1, title));
6889        children.add(new Property("status", "code", "The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state.", 0, 1, status));
6890        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
6891        children.add(new Property("date", "dateTime", "The date (and optionally time) when the value set metadata or content logical definition (.compose) was created or revised.", 0, 1, date));
6892        children.add(new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the value set.", 0, 1, publisher));
6893        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));
6894        children.add(new Property("description", "markdown", "A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set.", 0, 1, description));
6895        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 value set instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
6896        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the value set is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
6897        children.add(new Property("immutable", "boolean", "If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change.", 0, 1, immutable));
6898        children.add(new Property("purpose", "markdown", "Explanation of why this value set is needed and why it has been designed as it has.", 0, 1, purpose));
6899        children.add(new Property("copyright", "markdown", "A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set.", 0, 1, copyright));
6900        children.add(new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate));
6901        children.add(new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate));
6902        children.add(new Property("effectivePeriod", "Period", "The period during which the ValueSet content was or is planned to be in active use.", 0, 1, effectivePeriod));
6903        children.add(new Property("topic", "CodeableConcept", "Descriptions related to the content of the ValueSet. Topics provide a high-level categorization as well as keywords for the ValueSet that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic));
6904        children.add(new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the ValueSet.", 0, java.lang.Integer.MAX_VALUE, author));
6905        children.add(new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the ValueSet.", 0, java.lang.Integer.MAX_VALUE, editor));
6906        children.add(new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the ValueSet.", 0, java.lang.Integer.MAX_VALUE, reviewer));
6907        children.add(new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the ValueSet for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser));
6908        children.add(new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
6909        children.add(new Property("compose", "", "A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD).", 0, 1, compose));
6910        children.add(new Property("expansion", "", "A value set can also be \"expanded\", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed.", 0, 1, expansion));
6911        children.add(new Property("scope", "", "Description of the semantic space the Value Set Expansion is intended to cover and should further clarify the text in ValueSet.description.", 0, 1, scope));
6912      }
6913
6914      @Override
6915      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6916        switch (_hash) {
6917        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this value set 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 an authoritative instance of this value set is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the value set is stored on different servers.", 0, 1, url);
6918        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this value set when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
6919        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the value set when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the value set 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);
6920        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the value set. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
6921        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the value set.", 0, 1, title);
6922        case -892481550: /*status*/  return new Property("status", "code", "The status of this value set. Enables tracking the life-cycle of the content. The status of the value set applies to the value set definition (ValueSet.compose) and the associated ValueSet metadata. Expansions do not have a state.", 0, 1, status);
6923        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this value set is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
6924        case 3076014: /*date*/  return new Property("date", "dateTime", "The date (and optionally time) when the value set metadata or content logical definition (.compose) was created or revised.", 0, 1, date);
6925        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the value set.", 0, 1, publisher);
6926        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);
6927        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the value set from a consumer's perspective. The textual description specifies the span of meanings for concepts to be included within the Value Set Expansion, and also may specify the intended use and limitations of the Value Set.", 0, 1, description);
6928        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 value set instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
6929        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the value set is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
6930        case 1596987778: /*immutable*/  return new Property("immutable", "boolean", "If this is set to 'true', then no new versions of the content logical definition can be created.  Note: Other metadata might still change.", 0, 1, immutable);
6931        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this value set is needed and why it has been designed as it has.", 0, 1, purpose);
6932        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the value set and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the value set.", 0, 1, copyright);
6933        case 223539345: /*approvalDate*/  return new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate);
6934        case -1687512484: /*lastReviewDate*/  return new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate);
6935        case -403934648: /*effectivePeriod*/  return new Property("effectivePeriod", "Period", "The period during which the ValueSet content was or is planned to be in active use.", 0, 1, effectivePeriod);
6936        case 110546223: /*topic*/  return new Property("topic", "CodeableConcept", "Descriptions related to the content of the ValueSet. Topics provide a high-level categorization as well as keywords for the ValueSet that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic);
6937        case -1406328437: /*author*/  return new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the ValueSet.", 0, java.lang.Integer.MAX_VALUE, author);
6938        case -1307827859: /*editor*/  return new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the ValueSet.", 0, java.lang.Integer.MAX_VALUE, editor);
6939        case -261190139: /*reviewer*/  return new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the ValueSet.", 0, java.lang.Integer.MAX_VALUE, reviewer);
6940        case 1740277666: /*endorser*/  return new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the ValueSet for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser);
6941        case 666807069: /*relatedArtifact*/  return new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact);
6942        case 950497682: /*compose*/  return new Property("compose", "", "A set of criteria that define the contents of the value set by including or excluding codes selected from the specified code system(s) that the value set draws from. This is also known as the Content Logical Definition (CLD).", 0, 1, compose);
6943        case 17878207: /*expansion*/  return new Property("expansion", "", "A value set can also be \"expanded\", where the value set is turned into a simple collection of enumerated codes. This element holds the expansion, if it has been performed.", 0, 1, expansion);
6944        case 109264468: /*scope*/  return new Property("scope", "", "Description of the semantic space the Value Set Expansion is intended to cover and should further clarify the text in ValueSet.description.", 0, 1, scope);
6945        default: return super.getNamedProperty(_hash, _name, _checkValid);
6946        }
6947
6948      }
6949
6950      @Override
6951      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6952        switch (hash) {
6953        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
6954        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
6955        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
6956        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
6957        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
6958        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
6959        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
6960        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
6961        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
6962        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
6963        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
6964        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
6965        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
6966        case 1596987778: /*immutable*/ return this.immutable == null ? new Base[0] : new Base[] {this.immutable}; // BooleanType
6967        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
6968        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
6969        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
6970        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
6971        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
6972        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : this.topic.toArray(new Base[this.topic.size()]); // CodeableConcept
6973        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
6974        case -1307827859: /*editor*/ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
6975        case -261190139: /*reviewer*/ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
6976        case 1740277666: /*endorser*/ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
6977        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
6978        case 950497682: /*compose*/ return this.compose == null ? new Base[0] : new Base[] {this.compose}; // ValueSetComposeComponent
6979        case 17878207: /*expansion*/ return this.expansion == null ? new Base[0] : new Base[] {this.expansion}; // ValueSetExpansionComponent
6980        case 109264468: /*scope*/ return this.scope == null ? new Base[0] : new Base[] {this.scope}; // ValueSetScopeComponent
6981        default: return super.getProperty(hash, name, checkValid);
6982        }
6983
6984      }
6985
6986      @Override
6987      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6988        switch (hash) {
6989        case 116079: // url
6990          this.url = TypeConvertor.castToUri(value); // UriType
6991          return value;
6992        case -1618432855: // identifier
6993          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
6994          return value;
6995        case 351608024: // version
6996          this.version = TypeConvertor.castToString(value); // StringType
6997          return value;
6998        case 3373707: // name
6999          this.name = TypeConvertor.castToString(value); // StringType
7000          return value;
7001        case 110371416: // title
7002          this.title = TypeConvertor.castToString(value); // StringType
7003          return value;
7004        case -892481550: // status
7005          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
7006          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
7007          return value;
7008        case -404562712: // experimental
7009          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
7010          return value;
7011        case 3076014: // date
7012          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
7013          return value;
7014        case 1447404028: // publisher
7015          this.publisher = TypeConvertor.castToString(value); // StringType
7016          return value;
7017        case 951526432: // contact
7018          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
7019          return value;
7020        case -1724546052: // description
7021          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
7022          return value;
7023        case -669707736: // useContext
7024          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
7025          return value;
7026        case -507075711: // jurisdiction
7027          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
7028          return value;
7029        case 1596987778: // immutable
7030          this.immutable = TypeConvertor.castToBoolean(value); // BooleanType
7031          return value;
7032        case -220463842: // purpose
7033          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
7034          return value;
7035        case 1522889671: // copyright
7036          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
7037          return value;
7038        case 223539345: // approvalDate
7039          this.approvalDate = TypeConvertor.castToDate(value); // DateType
7040          return value;
7041        case -1687512484: // lastReviewDate
7042          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
7043          return value;
7044        case -403934648: // effectivePeriod
7045          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
7046          return value;
7047        case 110546223: // topic
7048          this.getTopic().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
7049          return value;
7050        case -1406328437: // author
7051          this.getAuthor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
7052          return value;
7053        case -1307827859: // editor
7054          this.getEditor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
7055          return value;
7056        case -261190139: // reviewer
7057          this.getReviewer().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
7058          return value;
7059        case 1740277666: // endorser
7060          this.getEndorser().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
7061          return value;
7062        case 666807069: // relatedArtifact
7063          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value)); // RelatedArtifact
7064          return value;
7065        case 950497682: // compose
7066          this.compose = (ValueSetComposeComponent) value; // ValueSetComposeComponent
7067          return value;
7068        case 17878207: // expansion
7069          this.expansion = (ValueSetExpansionComponent) value; // ValueSetExpansionComponent
7070          return value;
7071        case 109264468: // scope
7072          this.scope = (ValueSetScopeComponent) value; // ValueSetScopeComponent
7073          return value;
7074        default: return super.setProperty(hash, name, value);
7075        }
7076
7077      }
7078
7079      @Override
7080      public Base setProperty(String name, Base value) throws FHIRException {
7081        if (name.equals("url")) {
7082          this.url = TypeConvertor.castToUri(value); // UriType
7083        } else if (name.equals("identifier")) {
7084          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
7085        } else if (name.equals("version")) {
7086          this.version = TypeConvertor.castToString(value); // StringType
7087        } else if (name.equals("name")) {
7088          this.name = TypeConvertor.castToString(value); // StringType
7089        } else if (name.equals("title")) {
7090          this.title = TypeConvertor.castToString(value); // StringType
7091        } else if (name.equals("status")) {
7092          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
7093          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
7094        } else if (name.equals("experimental")) {
7095          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
7096        } else if (name.equals("date")) {
7097          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
7098        } else if (name.equals("publisher")) {
7099          this.publisher = TypeConvertor.castToString(value); // StringType
7100        } else if (name.equals("contact")) {
7101          this.getContact().add(TypeConvertor.castToContactDetail(value));
7102        } else if (name.equals("description")) {
7103          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
7104        } else if (name.equals("useContext")) {
7105          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
7106        } else if (name.equals("jurisdiction")) {
7107          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
7108        } else if (name.equals("immutable")) {
7109          this.immutable = TypeConvertor.castToBoolean(value); // BooleanType
7110        } else if (name.equals("purpose")) {
7111          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
7112        } else if (name.equals("copyright")) {
7113          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
7114        } else if (name.equals("approvalDate")) {
7115          this.approvalDate = TypeConvertor.castToDate(value); // DateType
7116        } else if (name.equals("lastReviewDate")) {
7117          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
7118        } else if (name.equals("effectivePeriod")) {
7119          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
7120        } else if (name.equals("topic")) {
7121          this.getTopic().add(TypeConvertor.castToCodeableConcept(value));
7122        } else if (name.equals("author")) {
7123          this.getAuthor().add(TypeConvertor.castToContactDetail(value));
7124        } else if (name.equals("editor")) {
7125          this.getEditor().add(TypeConvertor.castToContactDetail(value));
7126        } else if (name.equals("reviewer")) {
7127          this.getReviewer().add(TypeConvertor.castToContactDetail(value));
7128        } else if (name.equals("endorser")) {
7129          this.getEndorser().add(TypeConvertor.castToContactDetail(value));
7130        } else if (name.equals("relatedArtifact")) {
7131          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value));
7132        } else if (name.equals("compose")) {
7133          this.compose = (ValueSetComposeComponent) value; // ValueSetComposeComponent
7134        } else if (name.equals("expansion")) {
7135          this.expansion = (ValueSetExpansionComponent) value; // ValueSetExpansionComponent
7136        } else if (name.equals("scope")) {
7137          this.scope = (ValueSetScopeComponent) value; // ValueSetScopeComponent
7138        } else
7139          return super.setProperty(name, value);
7140        return value;
7141      }
7142
7143      @Override
7144      public Base makeProperty(int hash, String name) throws FHIRException {
7145        switch (hash) {
7146        case 116079:  return getUrlElement();
7147        case -1618432855:  return addIdentifier(); 
7148        case 351608024:  return getVersionElement();
7149        case 3373707:  return getNameElement();
7150        case 110371416:  return getTitleElement();
7151        case -892481550:  return getStatusElement();
7152        case -404562712:  return getExperimentalElement();
7153        case 3076014:  return getDateElement();
7154        case 1447404028:  return getPublisherElement();
7155        case 951526432:  return addContact(); 
7156        case -1724546052:  return getDescriptionElement();
7157        case -669707736:  return addUseContext(); 
7158        case -507075711:  return addJurisdiction(); 
7159        case 1596987778:  return getImmutableElement();
7160        case -220463842:  return getPurposeElement();
7161        case 1522889671:  return getCopyrightElement();
7162        case 223539345:  return getApprovalDateElement();
7163        case -1687512484:  return getLastReviewDateElement();
7164        case -403934648:  return getEffectivePeriod();
7165        case 110546223:  return addTopic(); 
7166        case -1406328437:  return addAuthor(); 
7167        case -1307827859:  return addEditor(); 
7168        case -261190139:  return addReviewer(); 
7169        case 1740277666:  return addEndorser(); 
7170        case 666807069:  return addRelatedArtifact(); 
7171        case 950497682:  return getCompose();
7172        case 17878207:  return getExpansion();
7173        case 109264468:  return getScope();
7174        default: return super.makeProperty(hash, name);
7175        }
7176
7177      }
7178
7179      @Override
7180      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7181        switch (hash) {
7182        case 116079: /*url*/ return new String[] {"uri"};
7183        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
7184        case 351608024: /*version*/ return new String[] {"string"};
7185        case 3373707: /*name*/ return new String[] {"string"};
7186        case 110371416: /*title*/ return new String[] {"string"};
7187        case -892481550: /*status*/ return new String[] {"code"};
7188        case -404562712: /*experimental*/ return new String[] {"boolean"};
7189        case 3076014: /*date*/ return new String[] {"dateTime"};
7190        case 1447404028: /*publisher*/ return new String[] {"string"};
7191        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
7192        case -1724546052: /*description*/ return new String[] {"markdown"};
7193        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
7194        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
7195        case 1596987778: /*immutable*/ return new String[] {"boolean"};
7196        case -220463842: /*purpose*/ return new String[] {"markdown"};
7197        case 1522889671: /*copyright*/ return new String[] {"markdown"};
7198        case 223539345: /*approvalDate*/ return new String[] {"date"};
7199        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
7200        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
7201        case 110546223: /*topic*/ return new String[] {"CodeableConcept"};
7202        case -1406328437: /*author*/ return new String[] {"ContactDetail"};
7203        case -1307827859: /*editor*/ return new String[] {"ContactDetail"};
7204        case -261190139: /*reviewer*/ return new String[] {"ContactDetail"};
7205        case 1740277666: /*endorser*/ return new String[] {"ContactDetail"};
7206        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
7207        case 950497682: /*compose*/ return new String[] {};
7208        case 17878207: /*expansion*/ return new String[] {};
7209        case 109264468: /*scope*/ return new String[] {};
7210        default: return super.getTypesForProperty(hash, name);
7211        }
7212
7213      }
7214
7215      @Override
7216      public Base addChild(String name) throws FHIRException {
7217        if (name.equals("url")) {
7218          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.url");
7219        }
7220        else if (name.equals("identifier")) {
7221          return addIdentifier();
7222        }
7223        else if (name.equals("version")) {
7224          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.version");
7225        }
7226        else if (name.equals("name")) {
7227          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.name");
7228        }
7229        else if (name.equals("title")) {
7230          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.title");
7231        }
7232        else if (name.equals("status")) {
7233          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.status");
7234        }
7235        else if (name.equals("experimental")) {
7236          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.experimental");
7237        }
7238        else if (name.equals("date")) {
7239          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.date");
7240        }
7241        else if (name.equals("publisher")) {
7242          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.publisher");
7243        }
7244        else if (name.equals("contact")) {
7245          return addContact();
7246        }
7247        else if (name.equals("description")) {
7248          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.description");
7249        }
7250        else if (name.equals("useContext")) {
7251          return addUseContext();
7252        }
7253        else if (name.equals("jurisdiction")) {
7254          return addJurisdiction();
7255        }
7256        else if (name.equals("immutable")) {
7257          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.immutable");
7258        }
7259        else if (name.equals("purpose")) {
7260          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.purpose");
7261        }
7262        else if (name.equals("copyright")) {
7263          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.copyright");
7264        }
7265        else if (name.equals("approvalDate")) {
7266          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.approvalDate");
7267        }
7268        else if (name.equals("lastReviewDate")) {
7269          throw new FHIRException("Cannot call addChild on a primitive type ValueSet.lastReviewDate");
7270        }
7271        else if (name.equals("effectivePeriod")) {
7272          this.effectivePeriod = new Period();
7273          return this.effectivePeriod;
7274        }
7275        else if (name.equals("topic")) {
7276          return addTopic();
7277        }
7278        else if (name.equals("author")) {
7279          return addAuthor();
7280        }
7281        else if (name.equals("editor")) {
7282          return addEditor();
7283        }
7284        else if (name.equals("reviewer")) {
7285          return addReviewer();
7286        }
7287        else if (name.equals("endorser")) {
7288          return addEndorser();
7289        }
7290        else if (name.equals("relatedArtifact")) {
7291          return addRelatedArtifact();
7292        }
7293        else if (name.equals("compose")) {
7294          this.compose = new ValueSetComposeComponent();
7295          return this.compose;
7296        }
7297        else if (name.equals("expansion")) {
7298          this.expansion = new ValueSetExpansionComponent();
7299          return this.expansion;
7300        }
7301        else if (name.equals("scope")) {
7302          this.scope = new ValueSetScopeComponent();
7303          return this.scope;
7304        }
7305        else
7306          return super.addChild(name);
7307      }
7308
7309  public String fhirType() {
7310    return "ValueSet";
7311
7312  }
7313
7314      public ValueSet copy() {
7315        ValueSet dst = new ValueSet();
7316        copyValues(dst);
7317        return dst;
7318      }
7319
7320      public void copyValues(ValueSet dst) {
7321        super.copyValues(dst);
7322        dst.url = url == null ? null : url.copy();
7323        if (identifier != null) {
7324          dst.identifier = new ArrayList<Identifier>();
7325          for (Identifier i : identifier)
7326            dst.identifier.add(i.copy());
7327        };
7328        dst.version = version == null ? null : version.copy();
7329        dst.name = name == null ? null : name.copy();
7330        dst.title = title == null ? null : title.copy();
7331        dst.status = status == null ? null : status.copy();
7332        dst.experimental = experimental == null ? null : experimental.copy();
7333        dst.date = date == null ? null : date.copy();
7334        dst.publisher = publisher == null ? null : publisher.copy();
7335        if (contact != null) {
7336          dst.contact = new ArrayList<ContactDetail>();
7337          for (ContactDetail i : contact)
7338            dst.contact.add(i.copy());
7339        };
7340        dst.description = description == null ? null : description.copy();
7341        if (useContext != null) {
7342          dst.useContext = new ArrayList<UsageContext>();
7343          for (UsageContext i : useContext)
7344            dst.useContext.add(i.copy());
7345        };
7346        if (jurisdiction != null) {
7347          dst.jurisdiction = new ArrayList<CodeableConcept>();
7348          for (CodeableConcept i : jurisdiction)
7349            dst.jurisdiction.add(i.copy());
7350        };
7351        dst.immutable = immutable == null ? null : immutable.copy();
7352        dst.purpose = purpose == null ? null : purpose.copy();
7353        dst.copyright = copyright == null ? null : copyright.copy();
7354        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
7355        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
7356        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
7357        if (topic != null) {
7358          dst.topic = new ArrayList<CodeableConcept>();
7359          for (CodeableConcept i : topic)
7360            dst.topic.add(i.copy());
7361        };
7362        if (author != null) {
7363          dst.author = new ArrayList<ContactDetail>();
7364          for (ContactDetail i : author)
7365            dst.author.add(i.copy());
7366        };
7367        if (editor != null) {
7368          dst.editor = new ArrayList<ContactDetail>();
7369          for (ContactDetail i : editor)
7370            dst.editor.add(i.copy());
7371        };
7372        if (reviewer != null) {
7373          dst.reviewer = new ArrayList<ContactDetail>();
7374          for (ContactDetail i : reviewer)
7375            dst.reviewer.add(i.copy());
7376        };
7377        if (endorser != null) {
7378          dst.endorser = new ArrayList<ContactDetail>();
7379          for (ContactDetail i : endorser)
7380            dst.endorser.add(i.copy());
7381        };
7382        if (relatedArtifact != null) {
7383          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
7384          for (RelatedArtifact i : relatedArtifact)
7385            dst.relatedArtifact.add(i.copy());
7386        };
7387        dst.compose = compose == null ? null : compose.copy();
7388        dst.expansion = expansion == null ? null : expansion.copy();
7389        dst.scope = scope == null ? null : scope.copy();
7390      }
7391
7392      protected ValueSet typedCopy() {
7393        return copy();
7394      }
7395
7396      @Override
7397      public boolean equalsDeep(Base other_) {
7398        if (!super.equalsDeep(other_))
7399          return false;
7400        if (!(other_ instanceof ValueSet))
7401          return false;
7402        ValueSet o = (ValueSet) other_;
7403        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
7404           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(status, o.status, true)
7405           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
7406           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
7407           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(immutable, o.immutable, true)
7408           && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true) && compareDeep(approvalDate, o.approvalDate, true)
7409           && compareDeep(lastReviewDate, o.lastReviewDate, true) && compareDeep(effectivePeriod, o.effectivePeriod, true)
7410           && compareDeep(topic, o.topic, true) && compareDeep(author, o.author, true) && compareDeep(editor, o.editor, true)
7411           && compareDeep(reviewer, o.reviewer, true) && compareDeep(endorser, o.endorser, true) && compareDeep(relatedArtifact, o.relatedArtifact, true)
7412           && compareDeep(compose, o.compose, true) && compareDeep(expansion, o.expansion, true) && compareDeep(scope, o.scope, true)
7413          ;
7414      }
7415
7416      @Override
7417      public boolean equalsShallow(Base other_) {
7418        if (!super.equalsShallow(other_))
7419          return false;
7420        if (!(other_ instanceof ValueSet))
7421          return false;
7422        ValueSet o = (ValueSet) other_;
7423        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
7424           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
7425           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
7426           && compareValues(immutable, o.immutable, true) && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true)
7427           && compareValues(approvalDate, o.approvalDate, true) && compareValues(lastReviewDate, o.lastReviewDate, true)
7428          ;
7429      }
7430
7431      public boolean isEmpty() {
7432        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
7433          , name, title, status, experimental, date, publisher, contact, description, useContext
7434          , jurisdiction, immutable, purpose, copyright, approvalDate, lastReviewDate, effectivePeriod
7435          , topic, author, editor, reviewer, endorser, relatedArtifact, compose, expansion
7436          , scope);
7437      }
7438
7439  @Override
7440  public ResourceType getResourceType() {
7441    return ResourceType.ValueSet;
7442   }
7443
7444 /**
7445   * Search parameter: <b>context-quantity</b>
7446   * <p>
7447   * Description: <b>Multiple Resources: 
7448
7449* [ActivityDefinition](activitydefinition.html): A quantity- or range-valued use context assigned to the activity definition
7450* [ActorDefinition](actordefinition.html): A quantity- or range-valued use context assigned to the Actor Definition
7451* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
7452* [ChargeItemDefinition](chargeitemdefinition.html): A quantity- or range-valued use context assigned to the charge item definition
7453* [Citation](citation.html): A quantity- or range-valued use context assigned to the citation
7454* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
7455* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
7456* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
7457* [ConditionDefinition](conditiondefinition.html): A quantity- or range-valued use context assigned to the condition definition
7458* [EventDefinition](eventdefinition.html): A quantity- or range-valued use context assigned to the event definition
7459* [Evidence](evidence.html): A quantity- or range-valued use context assigned to the evidence
7460* [EvidenceReport](evidencereport.html): A quantity- or range-valued use context assigned to the evidence report
7461* [EvidenceVariable](evidencevariable.html): A quantity- or range-valued use context assigned to the evidence variable
7462* [ExampleScenario](examplescenario.html): A quantity- or range-valued use context assigned to the example scenario
7463* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
7464* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
7465* [Library](library.html): A quantity- or range-valued use context assigned to the library
7466* [Measure](measure.html): A quantity- or range-valued use context assigned to the measure
7467* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
7468* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
7469* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
7470* [PlanDefinition](plandefinition.html): A quantity- or range-valued use context assigned to the plan definition
7471* [Questionnaire](questionnaire.html): A quantity- or range-valued use context assigned to the questionnaire
7472* [Requirements](requirements.html): A quantity- or range-valued use context assigned to the requirements
7473* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
7474* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
7475* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
7476* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
7477* [TestScript](testscript.html): A quantity- or range-valued use context assigned to the test script
7478* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
7479</b><br>
7480   * Type: <b>quantity</b><br>
7481   * Path: <b>(ActivityDefinition.useContext.value as Quantity) | (ActivityDefinition.useContext.value as Range) | (ActorDefinition.useContext.value as Quantity) | (ActorDefinition.useContext.value as Range) | (CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (ChargeItemDefinition.useContext.value as Quantity) | (ChargeItemDefinition.useContext.value as Range) | (Citation.useContext.value as Quantity) | (Citation.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) | (ConditionDefinition.useContext.value as Quantity) | (ConditionDefinition.useContext.value as Range) | (EventDefinition.useContext.value as Quantity) | (EventDefinition.useContext.value as Range) | (Evidence.useContext.value as Quantity) | (Evidence.useContext.value as Range) | (EvidenceReport.useContext.value as Quantity) | (EvidenceReport.useContext.value as Range) | (EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range) | (ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (Library.useContext.value as Quantity) | (Library.useContext.value as Range) | (Measure.useContext.value as Quantity) | (Measure.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) | (PlanDefinition.useContext.value as Quantity) | (PlanDefinition.useContext.value as Range) | (Questionnaire.useContext.value as Quantity) | (Questionnaire.useContext.value as Range) | (Requirements.useContext.value as Quantity) | (Requirements.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) | (TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
7482   * </p>
7483   */
7484  @SearchParamDefinition(name="context-quantity", path="(ActivityDefinition.useContext.value as Quantity) | (ActivityDefinition.useContext.value as Range) | (ActorDefinition.useContext.value as Quantity) | (ActorDefinition.useContext.value as Range) | (CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (ChargeItemDefinition.useContext.value as Quantity) | (ChargeItemDefinition.useContext.value as Range) | (Citation.useContext.value as Quantity) | (Citation.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) | (ConditionDefinition.useContext.value as Quantity) | (ConditionDefinition.useContext.value as Range) | (EventDefinition.useContext.value as Quantity) | (EventDefinition.useContext.value as Range) | (Evidence.useContext.value as Quantity) | (Evidence.useContext.value as Range) | (EvidenceReport.useContext.value as Quantity) | (EvidenceReport.useContext.value as Range) | (EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range) | (ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (Library.useContext.value as Quantity) | (Library.useContext.value as Range) | (Measure.useContext.value as Quantity) | (Measure.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) | (PlanDefinition.useContext.value as Quantity) | (PlanDefinition.useContext.value as Range) | (Questionnaire.useContext.value as Quantity) | (Questionnaire.useContext.value as Range) | (Requirements.useContext.value as Quantity) | (Requirements.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) | (TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A quantity- or range-valued use context assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A quantity- or range-valued use context assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A quantity- or range-valued use context assigned to the charge item definition\r\n* [Citation](citation.html): A quantity- or range-valued use context assigned to the citation\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* [ConditionDefinition](conditiondefinition.html): A quantity- or range-valued use context assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A quantity- or range-valued use context assigned to the event definition\r\n* [Evidence](evidence.html): A quantity- or range-valued use context assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A quantity- or range-valued use context assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A quantity- or range-valued use context assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A quantity- or range-valued use context assigned to the example scenario\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* [Library](library.html): A quantity- or range-valued use context assigned to the library\r\n* [Measure](measure.html): A quantity- or range-valued use context assigned to the measure\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* [PlanDefinition](plandefinition.html): A quantity- or range-valued use context assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A quantity- or range-valued use context assigned to the questionnaire\r\n* [Requirements](requirements.html): A quantity- or range-valued use context assigned to the requirements\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* [TestScript](testscript.html): A quantity- or range-valued use context assigned to the test script\r\n* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set\r\n", type="quantity" )
7485  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
7486 /**
7487   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
7488   * <p>
7489   * Description: <b>Multiple Resources: 
7490
7491* [ActivityDefinition](activitydefinition.html): A quantity- or range-valued use context assigned to the activity definition
7492* [ActorDefinition](actordefinition.html): A quantity- or range-valued use context assigned to the Actor Definition
7493* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
7494* [ChargeItemDefinition](chargeitemdefinition.html): A quantity- or range-valued use context assigned to the charge item definition
7495* [Citation](citation.html): A quantity- or range-valued use context assigned to the citation
7496* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
7497* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
7498* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
7499* [ConditionDefinition](conditiondefinition.html): A quantity- or range-valued use context assigned to the condition definition
7500* [EventDefinition](eventdefinition.html): A quantity- or range-valued use context assigned to the event definition
7501* [Evidence](evidence.html): A quantity- or range-valued use context assigned to the evidence
7502* [EvidenceReport](evidencereport.html): A quantity- or range-valued use context assigned to the evidence report
7503* [EvidenceVariable](evidencevariable.html): A quantity- or range-valued use context assigned to the evidence variable
7504* [ExampleScenario](examplescenario.html): A quantity- or range-valued use context assigned to the example scenario
7505* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
7506* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
7507* [Library](library.html): A quantity- or range-valued use context assigned to the library
7508* [Measure](measure.html): A quantity- or range-valued use context assigned to the measure
7509* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
7510* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
7511* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
7512* [PlanDefinition](plandefinition.html): A quantity- or range-valued use context assigned to the plan definition
7513* [Questionnaire](questionnaire.html): A quantity- or range-valued use context assigned to the questionnaire
7514* [Requirements](requirements.html): A quantity- or range-valued use context assigned to the requirements
7515* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
7516* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
7517* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
7518* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
7519* [TestScript](testscript.html): A quantity- or range-valued use context assigned to the test script
7520* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
7521</b><br>
7522   * Type: <b>quantity</b><br>
7523   * Path: <b>(ActivityDefinition.useContext.value as Quantity) | (ActivityDefinition.useContext.value as Range) | (ActorDefinition.useContext.value as Quantity) | (ActorDefinition.useContext.value as Range) | (CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (ChargeItemDefinition.useContext.value as Quantity) | (ChargeItemDefinition.useContext.value as Range) | (Citation.useContext.value as Quantity) | (Citation.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) | (ConditionDefinition.useContext.value as Quantity) | (ConditionDefinition.useContext.value as Range) | (EventDefinition.useContext.value as Quantity) | (EventDefinition.useContext.value as Range) | (Evidence.useContext.value as Quantity) | (Evidence.useContext.value as Range) | (EvidenceReport.useContext.value as Quantity) | (EvidenceReport.useContext.value as Range) | (EvidenceVariable.useContext.value as Quantity) | (EvidenceVariable.useContext.value as Range) | (ExampleScenario.useContext.value as Quantity) | (ExampleScenario.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (Library.useContext.value as Quantity) | (Library.useContext.value as Range) | (Measure.useContext.value as Quantity) | (Measure.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) | (PlanDefinition.useContext.value as Quantity) | (PlanDefinition.useContext.value as Range) | (Questionnaire.useContext.value as Quantity) | (Questionnaire.useContext.value as Range) | (Requirements.useContext.value as Quantity) | (Requirements.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) | (TestScript.useContext.value as Quantity) | (TestScript.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
7524   * </p>
7525   */
7526  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
7527
7528 /**
7529   * Search parameter: <b>context-type-quantity</b>
7530   * <p>
7531   * Description: <b>Multiple Resources: 
7532
7533* [ActivityDefinition](activitydefinition.html): A use context type and quantity- or range-based value assigned to the activity definition
7534* [ActorDefinition](actordefinition.html): A use context type and quantity- or range-based value assigned to the Actor Definition
7535* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
7536* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and quantity- or range-based value assigned to the charge item definition
7537* [Citation](citation.html): A use context type and quantity- or range-based value assigned to the citation
7538* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
7539* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
7540* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
7541* [ConditionDefinition](conditiondefinition.html): A use context type and quantity- or range-based value assigned to the condition definition
7542* [EventDefinition](eventdefinition.html): A use context type and quantity- or range-based value assigned to the event definition
7543* [Evidence](evidence.html): A use context type and quantity- or range-based value assigned to the evidence
7544* [EvidenceReport](evidencereport.html): A use context type and quantity- or range-based value assigned to the evidence report
7545* [EvidenceVariable](evidencevariable.html): A use context type and quantity- or range-based value assigned to the evidence variable
7546* [ExampleScenario](examplescenario.html): A use context type and quantity- or range-based value assigned to the example scenario
7547* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
7548* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
7549* [Library](library.html): A use context type and quantity- or range-based value assigned to the library
7550* [Measure](measure.html): A use context type and quantity- or range-based value assigned to the measure
7551* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
7552* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
7553* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
7554* [PlanDefinition](plandefinition.html): A use context type and quantity- or range-based value assigned to the plan definition
7555* [Questionnaire](questionnaire.html): A use context type and quantity- or range-based value assigned to the questionnaire
7556* [Requirements](requirements.html): A use context type and quantity- or range-based value assigned to the requirements
7557* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
7558* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
7559* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
7560* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
7561* [TestScript](testscript.html): A use context type and quantity- or range-based value assigned to the test script
7562* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
7563</b><br>
7564   * Type: <b>composite</b><br>
7565   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
7566   * </p>
7567   */
7568  @SearchParamDefinition(name="context-type-quantity", path="ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A use context type and quantity- or range-based value assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A use context type and quantity- or range-based value assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and quantity- or range-based value assigned to the charge item definition\r\n* [Citation](citation.html): A use context type and quantity- or range-based value assigned to the citation\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* [ConditionDefinition](conditiondefinition.html): A use context type and quantity- or range-based value assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A use context type and quantity- or range-based value assigned to the event definition\r\n* [Evidence](evidence.html): A use context type and quantity- or range-based value assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A use context type and quantity- or range-based value assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A use context type and quantity- or range-based value assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A use context type and quantity- or range-based value assigned to the example scenario\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* [Library](library.html): A use context type and quantity- or range-based value assigned to the library\r\n* [Measure](measure.html): A use context type and quantity- or range-based value assigned to the measure\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* [PlanDefinition](plandefinition.html): A use context type and quantity- or range-based value assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A use context type and quantity- or range-based value assigned to the questionnaire\r\n* [Requirements](requirements.html): A use context type and quantity- or range-based value assigned to the requirements\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* [TestScript](testscript.html): A use context type and quantity- or range-based value assigned to the test script\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"} )
7569  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
7570 /**
7571   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
7572   * <p>
7573   * Description: <b>Multiple Resources: 
7574
7575* [ActivityDefinition](activitydefinition.html): A use context type and quantity- or range-based value assigned to the activity definition
7576* [ActorDefinition](actordefinition.html): A use context type and quantity- or range-based value assigned to the Actor Definition
7577* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
7578* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and quantity- or range-based value assigned to the charge item definition
7579* [Citation](citation.html): A use context type and quantity- or range-based value assigned to the citation
7580* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
7581* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
7582* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
7583* [ConditionDefinition](conditiondefinition.html): A use context type and quantity- or range-based value assigned to the condition definition
7584* [EventDefinition](eventdefinition.html): A use context type and quantity- or range-based value assigned to the event definition
7585* [Evidence](evidence.html): A use context type and quantity- or range-based value assigned to the evidence
7586* [EvidenceReport](evidencereport.html): A use context type and quantity- or range-based value assigned to the evidence report
7587* [EvidenceVariable](evidencevariable.html): A use context type and quantity- or range-based value assigned to the evidence variable
7588* [ExampleScenario](examplescenario.html): A use context type and quantity- or range-based value assigned to the example scenario
7589* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
7590* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
7591* [Library](library.html): A use context type and quantity- or range-based value assigned to the library
7592* [Measure](measure.html): A use context type and quantity- or range-based value assigned to the measure
7593* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
7594* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
7595* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
7596* [PlanDefinition](plandefinition.html): A use context type and quantity- or range-based value assigned to the plan definition
7597* [Questionnaire](questionnaire.html): A use context type and quantity- or range-based value assigned to the questionnaire
7598* [Requirements](requirements.html): A use context type and quantity- or range-based value assigned to the requirements
7599* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
7600* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
7601* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
7602* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
7603* [TestScript](testscript.html): A use context type and quantity- or range-based value assigned to the test script
7604* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
7605</b><br>
7606   * Type: <b>composite</b><br>
7607   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
7608   * </p>
7609   */
7610  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);
7611
7612 /**
7613   * Search parameter: <b>context-type-value</b>
7614   * <p>
7615   * Description: <b>Multiple Resources: 
7616
7617* [ActivityDefinition](activitydefinition.html): A use context type and value assigned to the activity definition
7618* [ActorDefinition](actordefinition.html): A use context type and value assigned to the Actor Definition
7619* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
7620* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and value assigned to the charge item definition
7621* [Citation](citation.html): A use context type and value assigned to the citation
7622* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
7623* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
7624* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
7625* [ConditionDefinition](conditiondefinition.html): A use context type and value assigned to the condition definition
7626* [EventDefinition](eventdefinition.html): A use context type and value assigned to the event definition
7627* [Evidence](evidence.html): A use context type and value assigned to the evidence
7628* [EvidenceReport](evidencereport.html): A use context type and value assigned to the evidence report
7629* [EvidenceVariable](evidencevariable.html): A use context type and value assigned to the evidence variable
7630* [ExampleScenario](examplescenario.html): A use context type and value assigned to the example scenario
7631* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
7632* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
7633* [Library](library.html): A use context type and value assigned to the library
7634* [Measure](measure.html): A use context type and value assigned to the measure
7635* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
7636* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
7637* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
7638* [PlanDefinition](plandefinition.html): A use context type and value assigned to the plan definition
7639* [Questionnaire](questionnaire.html): A use context type and value assigned to the questionnaire
7640* [Requirements](requirements.html): A use context type and value assigned to the requirements
7641* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
7642* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
7643* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
7644* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
7645* [TestScript](testscript.html): A use context type and value assigned to the test script
7646* [ValueSet](valueset.html): A use context type and value assigned to the value set
7647</b><br>
7648   * Type: <b>composite</b><br>
7649   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
7650   * </p>
7651   */
7652  @SearchParamDefinition(name="context-type-value", path="ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A use context type and value assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A use context type and value assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and value assigned to the charge item definition\r\n* [Citation](citation.html): A use context type and value assigned to the citation\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* [ConditionDefinition](conditiondefinition.html): A use context type and value assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A use context type and value assigned to the event definition\r\n* [Evidence](evidence.html): A use context type and value assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A use context type and value assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A use context type and value assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A use context type and value assigned to the example scenario\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* [Library](library.html): A use context type and value assigned to the library\r\n* [Measure](measure.html): A use context type and value assigned to the measure\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* [PlanDefinition](plandefinition.html): A use context type and value assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A use context type and value assigned to the questionnaire\r\n* [Requirements](requirements.html): A use context type and value assigned to the requirements\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* [TestScript](testscript.html): A use context type and value assigned to the test script\r\n* [ValueSet](valueset.html): A use context type and value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context"} )
7653  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
7654 /**
7655   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
7656   * <p>
7657   * Description: <b>Multiple Resources: 
7658
7659* [ActivityDefinition](activitydefinition.html): A use context type and value assigned to the activity definition
7660* [ActorDefinition](actordefinition.html): A use context type and value assigned to the Actor Definition
7661* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
7662* [ChargeItemDefinition](chargeitemdefinition.html): A use context type and value assigned to the charge item definition
7663* [Citation](citation.html): A use context type and value assigned to the citation
7664* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
7665* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
7666* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
7667* [ConditionDefinition](conditiondefinition.html): A use context type and value assigned to the condition definition
7668* [EventDefinition](eventdefinition.html): A use context type and value assigned to the event definition
7669* [Evidence](evidence.html): A use context type and value assigned to the evidence
7670* [EvidenceReport](evidencereport.html): A use context type and value assigned to the evidence report
7671* [EvidenceVariable](evidencevariable.html): A use context type and value assigned to the evidence variable
7672* [ExampleScenario](examplescenario.html): A use context type and value assigned to the example scenario
7673* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
7674* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
7675* [Library](library.html): A use context type and value assigned to the library
7676* [Measure](measure.html): A use context type and value assigned to the measure
7677* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
7678* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
7679* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
7680* [PlanDefinition](plandefinition.html): A use context type and value assigned to the plan definition
7681* [Questionnaire](questionnaire.html): A use context type and value assigned to the questionnaire
7682* [Requirements](requirements.html): A use context type and value assigned to the requirements
7683* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
7684* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
7685* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
7686* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
7687* [TestScript](testscript.html): A use context type and value assigned to the test script
7688* [ValueSet](valueset.html): A use context type and value assigned to the value set
7689</b><br>
7690   * Type: <b>composite</b><br>
7691   * Path: <b>ActivityDefinition.useContext | ActorDefinition.useContext | CapabilityStatement.useContext | ChargeItemDefinition.useContext | Citation.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | ConditionDefinition.useContext | EventDefinition.useContext | Evidence.useContext | EvidenceReport.useContext | EvidenceVariable.useContext | ExampleScenario.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | Library.useContext | Measure.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | PlanDefinition.useContext | Questionnaire.useContext | Requirements.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | TestScript.useContext | ValueSet.useContext</b><br>
7692   * </p>
7693   */
7694  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);
7695
7696 /**
7697   * Search parameter: <b>context-type</b>
7698   * <p>
7699   * Description: <b>Multiple Resources: 
7700
7701* [ActivityDefinition](activitydefinition.html): A type of use context assigned to the activity definition
7702* [ActorDefinition](actordefinition.html): A type of use context assigned to the Actor Definition
7703* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
7704* [ChargeItemDefinition](chargeitemdefinition.html): A type of use context assigned to the charge item definition
7705* [Citation](citation.html): A type of use context assigned to the citation
7706* [CodeSystem](codesystem.html): A type of use context assigned to the code system
7707* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
7708* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
7709* [ConditionDefinition](conditiondefinition.html): A type of use context assigned to the condition definition
7710* [EventDefinition](eventdefinition.html): A type of use context assigned to the event definition
7711* [Evidence](evidence.html): A type of use context assigned to the evidence
7712* [EvidenceReport](evidencereport.html): A type of use context assigned to the evidence report
7713* [EvidenceVariable](evidencevariable.html): A type of use context assigned to the evidence variable
7714* [ExampleScenario](examplescenario.html): A type of use context assigned to the example scenario
7715* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
7716* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
7717* [Library](library.html): A type of use context assigned to the library
7718* [Measure](measure.html): A type of use context assigned to the measure
7719* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
7720* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
7721* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
7722* [PlanDefinition](plandefinition.html): A type of use context assigned to the plan definition
7723* [Questionnaire](questionnaire.html): A type of use context assigned to the questionnaire
7724* [Requirements](requirements.html): A type of use context assigned to the requirements
7725* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
7726* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
7727* [StructureMap](structuremap.html): A type of use context assigned to the structure map
7728* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
7729* [TestScript](testscript.html): A type of use context assigned to the test script
7730* [ValueSet](valueset.html): A type of use context assigned to the value set
7731</b><br>
7732   * Type: <b>token</b><br>
7733   * Path: <b>ActivityDefinition.useContext.code | ActorDefinition.useContext.code | CapabilityStatement.useContext.code | ChargeItemDefinition.useContext.code | Citation.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | ConditionDefinition.useContext.code | EventDefinition.useContext.code | Evidence.useContext.code | EvidenceReport.useContext.code | EvidenceVariable.useContext.code | ExampleScenario.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | Library.useContext.code | Measure.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | PlanDefinition.useContext.code | Questionnaire.useContext.code | Requirements.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | TestScript.useContext.code | ValueSet.useContext.code</b><br>
7734   * </p>
7735   */
7736  @SearchParamDefinition(name="context-type", path="ActivityDefinition.useContext.code | ActorDefinition.useContext.code | CapabilityStatement.useContext.code | ChargeItemDefinition.useContext.code | Citation.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | ConditionDefinition.useContext.code | EventDefinition.useContext.code | Evidence.useContext.code | EvidenceReport.useContext.code | EvidenceVariable.useContext.code | ExampleScenario.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | Library.useContext.code | Measure.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | PlanDefinition.useContext.code | Questionnaire.useContext.code | Requirements.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | TestScript.useContext.code | ValueSet.useContext.code", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A type of use context assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A type of use context assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A type of use context assigned to the charge item definition\r\n* [Citation](citation.html): A type of use context assigned to the citation\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* [ConditionDefinition](conditiondefinition.html): A type of use context assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A type of use context assigned to the event definition\r\n* [Evidence](evidence.html): A type of use context assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A type of use context assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A type of use context assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A type of use context assigned to the example scenario\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* [Library](library.html): A type of use context assigned to the library\r\n* [Measure](measure.html): A type of use context assigned to the measure\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* [PlanDefinition](plandefinition.html): A type of use context assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A type of use context assigned to the questionnaire\r\n* [Requirements](requirements.html): A type of use context assigned to the requirements\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* [TestScript](testscript.html): A type of use context assigned to the test script\r\n* [ValueSet](valueset.html): A type of use context assigned to the value set\r\n", type="token" )
7737  public static final String SP_CONTEXT_TYPE = "context-type";
7738 /**
7739   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
7740   * <p>
7741   * Description: <b>Multiple Resources: 
7742
7743* [ActivityDefinition](activitydefinition.html): A type of use context assigned to the activity definition
7744* [ActorDefinition](actordefinition.html): A type of use context assigned to the Actor Definition
7745* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
7746* [ChargeItemDefinition](chargeitemdefinition.html): A type of use context assigned to the charge item definition
7747* [Citation](citation.html): A type of use context assigned to the citation
7748* [CodeSystem](codesystem.html): A type of use context assigned to the code system
7749* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
7750* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
7751* [ConditionDefinition](conditiondefinition.html): A type of use context assigned to the condition definition
7752* [EventDefinition](eventdefinition.html): A type of use context assigned to the event definition
7753* [Evidence](evidence.html): A type of use context assigned to the evidence
7754* [EvidenceReport](evidencereport.html): A type of use context assigned to the evidence report
7755* [EvidenceVariable](evidencevariable.html): A type of use context assigned to the evidence variable
7756* [ExampleScenario](examplescenario.html): A type of use context assigned to the example scenario
7757* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
7758* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
7759* [Library](library.html): A type of use context assigned to the library
7760* [Measure](measure.html): A type of use context assigned to the measure
7761* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
7762* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
7763* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
7764* [PlanDefinition](plandefinition.html): A type of use context assigned to the plan definition
7765* [Questionnaire](questionnaire.html): A type of use context assigned to the questionnaire
7766* [Requirements](requirements.html): A type of use context assigned to the requirements
7767* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
7768* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
7769* [StructureMap](structuremap.html): A type of use context assigned to the structure map
7770* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
7771* [TestScript](testscript.html): A type of use context assigned to the test script
7772* [ValueSet](valueset.html): A type of use context assigned to the value set
7773</b><br>
7774   * Type: <b>token</b><br>
7775   * Path: <b>ActivityDefinition.useContext.code | ActorDefinition.useContext.code | CapabilityStatement.useContext.code | ChargeItemDefinition.useContext.code | Citation.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | ConditionDefinition.useContext.code | EventDefinition.useContext.code | Evidence.useContext.code | EvidenceReport.useContext.code | EvidenceVariable.useContext.code | ExampleScenario.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | Library.useContext.code | Measure.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | PlanDefinition.useContext.code | Questionnaire.useContext.code | Requirements.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | TestScript.useContext.code | ValueSet.useContext.code</b><br>
7776   * </p>
7777   */
7778  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
7779
7780 /**
7781   * Search parameter: <b>context</b>
7782   * <p>
7783   * Description: <b>Multiple Resources: 
7784
7785* [ActivityDefinition](activitydefinition.html): A use context assigned to the activity definition
7786* [ActorDefinition](actordefinition.html): A use context assigned to the Actor Definition
7787* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
7788* [ChargeItemDefinition](chargeitemdefinition.html): A use context assigned to the charge item definition
7789* [Citation](citation.html): A use context assigned to the citation
7790* [CodeSystem](codesystem.html): A use context assigned to the code system
7791* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
7792* [ConceptMap](conceptmap.html): A use context assigned to the concept map
7793* [ConditionDefinition](conditiondefinition.html): A use context assigned to the condition definition
7794* [EventDefinition](eventdefinition.html): A use context assigned to the event definition
7795* [Evidence](evidence.html): A use context assigned to the evidence
7796* [EvidenceReport](evidencereport.html): A use context assigned to the evidence report
7797* [EvidenceVariable](evidencevariable.html): A use context assigned to the evidence variable
7798* [ExampleScenario](examplescenario.html): A use context assigned to the example scenario
7799* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
7800* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
7801* [Library](library.html): A use context assigned to the library
7802* [Measure](measure.html): A use context assigned to the measure
7803* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
7804* [NamingSystem](namingsystem.html): A use context assigned to the naming system
7805* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
7806* [PlanDefinition](plandefinition.html): A use context assigned to the plan definition
7807* [Questionnaire](questionnaire.html): A use context assigned to the questionnaire
7808* [Requirements](requirements.html): A use context assigned to the requirements
7809* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
7810* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
7811* [StructureMap](structuremap.html): A use context assigned to the structure map
7812* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
7813* [TestScript](testscript.html): A use context assigned to the test script
7814* [ValueSet](valueset.html): A use context assigned to the value set
7815</b><br>
7816   * Type: <b>token</b><br>
7817   * Path: <b>(ActivityDefinition.useContext.value as CodeableConcept) | (ActorDefinition.useContext.value as CodeableConcept) | (CapabilityStatement.useContext.value as CodeableConcept) | (ChargeItemDefinition.useContext.value as CodeableConcept) | (Citation.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (ConditionDefinition.useContext.value as CodeableConcept) | (EventDefinition.useContext.value as CodeableConcept) | (Evidence.useContext.value as CodeableConcept) | (EvidenceReport.useContext.value as CodeableConcept) | (EvidenceVariable.useContext.value as CodeableConcept) | (ExampleScenario.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (Library.useContext.value as CodeableConcept) | (Measure.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (PlanDefinition.useContext.value as CodeableConcept) | (Questionnaire.useContext.value as CodeableConcept) | (Requirements.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (TestScript.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
7818   * </p>
7819   */
7820  @SearchParamDefinition(name="context", path="(ActivityDefinition.useContext.value as CodeableConcept) | (ActorDefinition.useContext.value as CodeableConcept) | (CapabilityStatement.useContext.value as CodeableConcept) | (ChargeItemDefinition.useContext.value as CodeableConcept) | (Citation.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (ConditionDefinition.useContext.value as CodeableConcept) | (EventDefinition.useContext.value as CodeableConcept) | (Evidence.useContext.value as CodeableConcept) | (EvidenceReport.useContext.value as CodeableConcept) | (EvidenceVariable.useContext.value as CodeableConcept) | (ExampleScenario.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (Library.useContext.value as CodeableConcept) | (Measure.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (PlanDefinition.useContext.value as CodeableConcept) | (Questionnaire.useContext.value as CodeableConcept) | (Requirements.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (TestScript.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): A use context assigned to the activity definition\r\n* [ActorDefinition](actordefinition.html): A use context assigned to the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): A use context assigned to the charge item definition\r\n* [Citation](citation.html): A use context assigned to the citation\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* [ConditionDefinition](conditiondefinition.html): A use context assigned to the condition definition\r\n* [EventDefinition](eventdefinition.html): A use context assigned to the event definition\r\n* [Evidence](evidence.html): A use context assigned to the evidence\r\n* [EvidenceReport](evidencereport.html): A use context assigned to the evidence report\r\n* [EvidenceVariable](evidencevariable.html): A use context assigned to the evidence variable\r\n* [ExampleScenario](examplescenario.html): A use context assigned to the example scenario\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* [Library](library.html): A use context assigned to the library\r\n* [Measure](measure.html): A use context assigned to the measure\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* [PlanDefinition](plandefinition.html): A use context assigned to the plan definition\r\n* [Questionnaire](questionnaire.html): A use context assigned to the questionnaire\r\n* [Requirements](requirements.html): A use context assigned to the requirements\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* [TestScript](testscript.html): A use context assigned to the test script\r\n* [ValueSet](valueset.html): A use context assigned to the value set\r\n", type="token" )
7821  public static final String SP_CONTEXT = "context";
7822 /**
7823   * <b>Fluent Client</b> search parameter constant for <b>context</b>
7824   * <p>
7825   * Description: <b>Multiple Resources: 
7826
7827* [ActivityDefinition](activitydefinition.html): A use context assigned to the activity definition
7828* [ActorDefinition](actordefinition.html): A use context assigned to the Actor Definition
7829* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
7830* [ChargeItemDefinition](chargeitemdefinition.html): A use context assigned to the charge item definition
7831* [Citation](citation.html): A use context assigned to the citation
7832* [CodeSystem](codesystem.html): A use context assigned to the code system
7833* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
7834* [ConceptMap](conceptmap.html): A use context assigned to the concept map
7835* [ConditionDefinition](conditiondefinition.html): A use context assigned to the condition definition
7836* [EventDefinition](eventdefinition.html): A use context assigned to the event definition
7837* [Evidence](evidence.html): A use context assigned to the evidence
7838* [EvidenceReport](evidencereport.html): A use context assigned to the evidence report
7839* [EvidenceVariable](evidencevariable.html): A use context assigned to the evidence variable
7840* [ExampleScenario](examplescenario.html): A use context assigned to the example scenario
7841* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
7842* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
7843* [Library](library.html): A use context assigned to the library
7844* [Measure](measure.html): A use context assigned to the measure
7845* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
7846* [NamingSystem](namingsystem.html): A use context assigned to the naming system
7847* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
7848* [PlanDefinition](plandefinition.html): A use context assigned to the plan definition
7849* [Questionnaire](questionnaire.html): A use context assigned to the questionnaire
7850* [Requirements](requirements.html): A use context assigned to the requirements
7851* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
7852* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
7853* [StructureMap](structuremap.html): A use context assigned to the structure map
7854* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
7855* [TestScript](testscript.html): A use context assigned to the test script
7856* [ValueSet](valueset.html): A use context assigned to the value set
7857</b><br>
7858   * Type: <b>token</b><br>
7859   * Path: <b>(ActivityDefinition.useContext.value as CodeableConcept) | (ActorDefinition.useContext.value as CodeableConcept) | (CapabilityStatement.useContext.value as CodeableConcept) | (ChargeItemDefinition.useContext.value as CodeableConcept) | (Citation.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (ConditionDefinition.useContext.value as CodeableConcept) | (EventDefinition.useContext.value as CodeableConcept) | (Evidence.useContext.value as CodeableConcept) | (EvidenceReport.useContext.value as CodeableConcept) | (EvidenceVariable.useContext.value as CodeableConcept) | (ExampleScenario.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (Library.useContext.value as CodeableConcept) | (Measure.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (PlanDefinition.useContext.value as CodeableConcept) | (Questionnaire.useContext.value as CodeableConcept) | (Requirements.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (TestScript.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
7860   * </p>
7861   */
7862  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
7863
7864 /**
7865   * Search parameter: <b>date</b>
7866   * <p>
7867   * Description: <b>Multiple Resources: 
7868
7869* [ActivityDefinition](activitydefinition.html): The activity definition publication date
7870* [ActorDefinition](actordefinition.html): The Actor Definition publication date
7871* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
7872* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date
7873* [Citation](citation.html): The citation publication date
7874* [CodeSystem](codesystem.html): The code system publication date
7875* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
7876* [ConceptMap](conceptmap.html): The concept map publication date
7877* [ConditionDefinition](conditiondefinition.html): The condition definition publication date
7878* [EventDefinition](eventdefinition.html): The event definition publication date
7879* [Evidence](evidence.html): The evidence publication date
7880* [EvidenceVariable](evidencevariable.html): The evidence variable publication date
7881* [ExampleScenario](examplescenario.html): The example scenario publication date
7882* [GraphDefinition](graphdefinition.html): The graph definition publication date
7883* [ImplementationGuide](implementationguide.html): The implementation guide publication date
7884* [Library](library.html): The library publication date
7885* [Measure](measure.html): The measure publication date
7886* [MessageDefinition](messagedefinition.html): The message definition publication date
7887* [NamingSystem](namingsystem.html): The naming system publication date
7888* [OperationDefinition](operationdefinition.html): The operation definition publication date
7889* [PlanDefinition](plandefinition.html): The plan definition publication date
7890* [Questionnaire](questionnaire.html): The questionnaire publication date
7891* [Requirements](requirements.html): The requirements publication date
7892* [SearchParameter](searchparameter.html): The search parameter publication date
7893* [StructureDefinition](structuredefinition.html): The structure definition publication date
7894* [StructureMap](structuremap.html): The structure map publication date
7895* [SubscriptionTopic](subscriptiontopic.html): Date status first applied
7896* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
7897* [TestScript](testscript.html): The test script publication date
7898* [ValueSet](valueset.html): The value set publication date
7899</b><br>
7900   * Type: <b>date</b><br>
7901   * Path: <b>ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date</b><br>
7902   * </p>
7903   */
7904  @SearchParamDefinition(name="date", path="ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The activity definition publication date\r\n* [ActorDefinition](actordefinition.html): The Actor Definition publication date\r\n* [CapabilityStatement](capabilitystatement.html): The capability statement publication date\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date\r\n* [Citation](citation.html): The citation 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* [ConditionDefinition](conditiondefinition.html): The condition definition publication date\r\n* [EventDefinition](eventdefinition.html): The event definition publication date\r\n* [Evidence](evidence.html): The evidence publication date\r\n* [EvidenceVariable](evidencevariable.html): The evidence variable publication date\r\n* [ExampleScenario](examplescenario.html): The example scenario publication date\r\n* [GraphDefinition](graphdefinition.html): The graph definition publication date\r\n* [ImplementationGuide](implementationguide.html): The implementation guide publication date\r\n* [Library](library.html): The library publication date\r\n* [Measure](measure.html): The measure 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* [PlanDefinition](plandefinition.html): The plan definition publication date\r\n* [Questionnaire](questionnaire.html): The questionnaire publication date\r\n* [Requirements](requirements.html): The requirements 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* [SubscriptionTopic](subscriptiontopic.html): Date status first applied\r\n* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date\r\n* [TestScript](testscript.html): The test script publication date\r\n* [ValueSet](valueset.html): The value set publication date\r\n", type="date" )
7905  public static final String SP_DATE = "date";
7906 /**
7907   * <b>Fluent Client</b> search parameter constant for <b>date</b>
7908   * <p>
7909   * Description: <b>Multiple Resources: 
7910
7911* [ActivityDefinition](activitydefinition.html): The activity definition publication date
7912* [ActorDefinition](actordefinition.html): The Actor Definition publication date
7913* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
7914* [ChargeItemDefinition](chargeitemdefinition.html): The charge item definition publication date
7915* [Citation](citation.html): The citation publication date
7916* [CodeSystem](codesystem.html): The code system publication date
7917* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
7918* [ConceptMap](conceptmap.html): The concept map publication date
7919* [ConditionDefinition](conditiondefinition.html): The condition definition publication date
7920* [EventDefinition](eventdefinition.html): The event definition publication date
7921* [Evidence](evidence.html): The evidence publication date
7922* [EvidenceVariable](evidencevariable.html): The evidence variable publication date
7923* [ExampleScenario](examplescenario.html): The example scenario publication date
7924* [GraphDefinition](graphdefinition.html): The graph definition publication date
7925* [ImplementationGuide](implementationguide.html): The implementation guide publication date
7926* [Library](library.html): The library publication date
7927* [Measure](measure.html): The measure publication date
7928* [MessageDefinition](messagedefinition.html): The message definition publication date
7929* [NamingSystem](namingsystem.html): The naming system publication date
7930* [OperationDefinition](operationdefinition.html): The operation definition publication date
7931* [PlanDefinition](plandefinition.html): The plan definition publication date
7932* [Questionnaire](questionnaire.html): The questionnaire publication date
7933* [Requirements](requirements.html): The requirements publication date
7934* [SearchParameter](searchparameter.html): The search parameter publication date
7935* [StructureDefinition](structuredefinition.html): The structure definition publication date
7936* [StructureMap](structuremap.html): The structure map publication date
7937* [SubscriptionTopic](subscriptiontopic.html): Date status first applied
7938* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
7939* [TestScript](testscript.html): The test script publication date
7940* [ValueSet](valueset.html): The value set publication date
7941</b><br>
7942   * Type: <b>date</b><br>
7943   * Path: <b>ActivityDefinition.date | ActorDefinition.date | CapabilityStatement.date | ChargeItemDefinition.date | Citation.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | ConditionDefinition.date | EventDefinition.date | Evidence.date | EvidenceVariable.date | ExampleScenario.date | GraphDefinition.date | ImplementationGuide.date | Library.date | Measure.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | PlanDefinition.date | Questionnaire.date | Requirements.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | SubscriptionTopic.date | TerminologyCapabilities.date | TestScript.date | ValueSet.date</b><br>
7944   * </p>
7945   */
7946  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
7947
7948 /**
7949   * Search parameter: <b>description</b>
7950   * <p>
7951   * Description: <b>Multiple Resources: 
7952
7953* [ActivityDefinition](activitydefinition.html): The description of the activity definition
7954* [ActorDefinition](actordefinition.html): The description of the Actor Definition
7955* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
7956* [ChargeItemDefinition](chargeitemdefinition.html): The description of the charge item definition
7957* [Citation](citation.html): The description of the citation
7958* [CodeSystem](codesystem.html): The description of the code system
7959* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
7960* [ConceptMap](conceptmap.html): The description of the concept map
7961* [ConditionDefinition](conditiondefinition.html): The description of the condition definition
7962* [EventDefinition](eventdefinition.html): The description of the event definition
7963* [Evidence](evidence.html): The description of the evidence
7964* [EvidenceVariable](evidencevariable.html): The description of the evidence variable
7965* [GraphDefinition](graphdefinition.html): The description of the graph definition
7966* [ImplementationGuide](implementationguide.html): The description of the implementation guide
7967* [Library](library.html): The description of the library
7968* [Measure](measure.html): The description of the measure
7969* [MessageDefinition](messagedefinition.html): The description of the message definition
7970* [NamingSystem](namingsystem.html): The description of the naming system
7971* [OperationDefinition](operationdefinition.html): The description of the operation definition
7972* [PlanDefinition](plandefinition.html): The description of the plan definition
7973* [Questionnaire](questionnaire.html): The description of the questionnaire
7974* [Requirements](requirements.html): The description of the requirements
7975* [SearchParameter](searchparameter.html): The description of the search parameter
7976* [StructureDefinition](structuredefinition.html): The description of the structure definition
7977* [StructureMap](structuremap.html): The description of the structure map
7978* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
7979* [TestScript](testscript.html): The description of the test script
7980* [ValueSet](valueset.html): The description of the value set
7981</b><br>
7982   * Type: <b>string</b><br>
7983   * Path: <b>ActivityDefinition.description | ActorDefinition.description | CapabilityStatement.description | ChargeItemDefinition.description | Citation.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | ConditionDefinition.description | EventDefinition.description | Evidence.description | EvidenceVariable.description | GraphDefinition.description | ImplementationGuide.description | Library.description | Measure.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | PlanDefinition.description | Questionnaire.description | Requirements.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | TestScript.description | ValueSet.description</b><br>
7984   * </p>
7985   */
7986  @SearchParamDefinition(name="description", path="ActivityDefinition.description | ActorDefinition.description | CapabilityStatement.description | ChargeItemDefinition.description | Citation.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | ConditionDefinition.description | EventDefinition.description | Evidence.description | EvidenceVariable.description | GraphDefinition.description | ImplementationGuide.description | Library.description | Measure.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | PlanDefinition.description | Questionnaire.description | Requirements.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | TestScript.description | ValueSet.description", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The description of the activity definition\r\n* [ActorDefinition](actordefinition.html): The description of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The description of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The description of the charge item definition\r\n* [Citation](citation.html): The description of the citation\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* [ConditionDefinition](conditiondefinition.html): The description of the condition definition\r\n* [EventDefinition](eventdefinition.html): The description of the event definition\r\n* [Evidence](evidence.html): The description of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The description of the evidence variable\r\n* [GraphDefinition](graphdefinition.html): The description of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The description of the implementation guide\r\n* [Library](library.html): The description of the library\r\n* [Measure](measure.html): The description of the measure\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* [PlanDefinition](plandefinition.html): The description of the plan definition\r\n* [Questionnaire](questionnaire.html): The description of the questionnaire\r\n* [Requirements](requirements.html): The description of the requirements\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* [TestScript](testscript.html): The description of the test script\r\n* [ValueSet](valueset.html): The description of the value set\r\n", type="string" )
7987  public static final String SP_DESCRIPTION = "description";
7988 /**
7989   * <b>Fluent Client</b> search parameter constant for <b>description</b>
7990   * <p>
7991   * Description: <b>Multiple Resources: 
7992
7993* [ActivityDefinition](activitydefinition.html): The description of the activity definition
7994* [ActorDefinition](actordefinition.html): The description of the Actor Definition
7995* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
7996* [ChargeItemDefinition](chargeitemdefinition.html): The description of the charge item definition
7997* [Citation](citation.html): The description of the citation
7998* [CodeSystem](codesystem.html): The description of the code system
7999* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
8000* [ConceptMap](conceptmap.html): The description of the concept map
8001* [ConditionDefinition](conditiondefinition.html): The description of the condition definition
8002* [EventDefinition](eventdefinition.html): The description of the event definition
8003* [Evidence](evidence.html): The description of the evidence
8004* [EvidenceVariable](evidencevariable.html): The description of the evidence variable
8005* [GraphDefinition](graphdefinition.html): The description of the graph definition
8006* [ImplementationGuide](implementationguide.html): The description of the implementation guide
8007* [Library](library.html): The description of the library
8008* [Measure](measure.html): The description of the measure
8009* [MessageDefinition](messagedefinition.html): The description of the message definition
8010* [NamingSystem](namingsystem.html): The description of the naming system
8011* [OperationDefinition](operationdefinition.html): The description of the operation definition
8012* [PlanDefinition](plandefinition.html): The description of the plan definition
8013* [Questionnaire](questionnaire.html): The description of the questionnaire
8014* [Requirements](requirements.html): The description of the requirements
8015* [SearchParameter](searchparameter.html): The description of the search parameter
8016* [StructureDefinition](structuredefinition.html): The description of the structure definition
8017* [StructureMap](structuremap.html): The description of the structure map
8018* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
8019* [TestScript](testscript.html): The description of the test script
8020* [ValueSet](valueset.html): The description of the value set
8021</b><br>
8022   * Type: <b>string</b><br>
8023   * Path: <b>ActivityDefinition.description | ActorDefinition.description | CapabilityStatement.description | ChargeItemDefinition.description | Citation.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | ConditionDefinition.description | EventDefinition.description | Evidence.description | EvidenceVariable.description | GraphDefinition.description | ImplementationGuide.description | Library.description | Measure.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | PlanDefinition.description | Questionnaire.description | Requirements.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | TestScript.description | ValueSet.description</b><br>
8024   * </p>
8025   */
8026  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
8027
8028 /**
8029   * Search parameter: <b>identifier</b>
8030   * <p>
8031   * Description: <b>Multiple Resources: 
8032
8033* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition
8034* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition
8035* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition
8036* [Citation](citation.html): External identifier for the citation
8037* [CodeSystem](codesystem.html): External identifier for the code system
8038* [ConceptMap](conceptmap.html): External identifier for the concept map
8039* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition
8040* [EventDefinition](eventdefinition.html): External identifier for the event definition
8041* [Evidence](evidence.html): External identifier for the evidence
8042* [EvidenceReport](evidencereport.html): External identifier for the evidence report
8043* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable
8044* [ExampleScenario](examplescenario.html): External identifier for the example scenario
8045* [Library](library.html): External identifier for the library
8046* [Measure](measure.html): External identifier for the measure
8047* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication
8048* [MessageDefinition](messagedefinition.html): External identifier for the message definition
8049* [NamingSystem](namingsystem.html): External identifier for the naming system
8050* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition
8051* [PlanDefinition](plandefinition.html): External identifier for the plan definition
8052* [Questionnaire](questionnaire.html): External identifier for the questionnaire
8053* [Requirements](requirements.html): External identifier for the requirements
8054* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition
8055* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
8056* [StructureMap](structuremap.html): External identifier for the structure map
8057* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic
8058* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
8059* [TestScript](testscript.html): External identifier for the test script
8060* [ValueSet](valueset.html): External identifier for the value set
8061</b><br>
8062   * Type: <b>token</b><br>
8063   * Path: <b>ActivityDefinition.identifier | ActorDefinition.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestScript.identifier | ValueSet.identifier</b><br>
8064   * </p>
8065   */
8066  @SearchParamDefinition(name="identifier", path="ActivityDefinition.identifier | ActorDefinition.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestScript.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition\r\n* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition\r\n* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition\r\n* [Citation](citation.html): External identifier for the citation\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition\r\n* [EventDefinition](eventdefinition.html): External identifier for the event definition\r\n* [Evidence](evidence.html): External identifier for the evidence\r\n* [EvidenceReport](evidencereport.html): External identifier for the evidence report\r\n* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable\r\n* [ExampleScenario](examplescenario.html): External identifier for the example scenario\r\n* [Library](library.html): External identifier for the library\r\n* [Measure](measure.html): External identifier for the measure\r\n* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [NamingSystem](namingsystem.html): External identifier for the naming system\r\n* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition\r\n* [PlanDefinition](plandefinition.html): External identifier for the plan definition\r\n* [Questionnaire](questionnaire.html): External identifier for the questionnaire\r\n* [Requirements](requirements.html): External identifier for the requirements\r\n* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic\r\n* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities\r\n* [TestScript](testscript.html): External identifier for the test script\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
8067  public static final String SP_IDENTIFIER = "identifier";
8068 /**
8069   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
8070   * <p>
8071   * Description: <b>Multiple Resources: 
8072
8073* [ActivityDefinition](activitydefinition.html): External identifier for the activity definition
8074* [ActorDefinition](actordefinition.html): External identifier for the Actor Definition
8075* [ChargeItemDefinition](chargeitemdefinition.html): External identifier for the charge item definition
8076* [Citation](citation.html): External identifier for the citation
8077* [CodeSystem](codesystem.html): External identifier for the code system
8078* [ConceptMap](conceptmap.html): External identifier for the concept map
8079* [ConditionDefinition](conditiondefinition.html): External identifier for the condition definition
8080* [EventDefinition](eventdefinition.html): External identifier for the event definition
8081* [Evidence](evidence.html): External identifier for the evidence
8082* [EvidenceReport](evidencereport.html): External identifier for the evidence report
8083* [EvidenceVariable](evidencevariable.html): External identifier for the evidence variable
8084* [ExampleScenario](examplescenario.html): External identifier for the example scenario
8085* [Library](library.html): External identifier for the library
8086* [Measure](measure.html): External identifier for the measure
8087* [MedicationKnowledge](medicationknowledge.html): Business identifier for this medication
8088* [MessageDefinition](messagedefinition.html): External identifier for the message definition
8089* [NamingSystem](namingsystem.html): External identifier for the naming system
8090* [ObservationDefinition](observationdefinition.html): The unique identifier associated with the specimen definition
8091* [PlanDefinition](plandefinition.html): External identifier for the plan definition
8092* [Questionnaire](questionnaire.html): External identifier for the questionnaire
8093* [Requirements](requirements.html): External identifier for the requirements
8094* [SpecimenDefinition](specimendefinition.html): The unique identifier associated with the SpecimenDefinition
8095* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
8096* [StructureMap](structuremap.html): External identifier for the structure map
8097* [SubscriptionTopic](subscriptiontopic.html): Business Identifier for SubscriptionTopic
8098* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
8099* [TestScript](testscript.html): External identifier for the test script
8100* [ValueSet](valueset.html): External identifier for the value set
8101</b><br>
8102   * Type: <b>token</b><br>
8103   * Path: <b>ActivityDefinition.identifier | ActorDefinition.identifier | ChargeItemDefinition.identifier | Citation.identifier | CodeSystem.identifier | ConceptMap.identifier | ConditionDefinition.identifier | EventDefinition.identifier | Evidence.identifier | EvidenceReport.identifier | EvidenceVariable.identifier | ExampleScenario.identifier | Library.identifier | Measure.identifier | MedicationKnowledge.identifier | MessageDefinition.identifier | NamingSystem.identifier | ObservationDefinition.identifier | PlanDefinition.identifier | Questionnaire.identifier | Requirements.identifier | SpecimenDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | SubscriptionTopic.identifier | TerminologyCapabilities.identifier | TestScript.identifier | ValueSet.identifier</b><br>
8104   * </p>
8105   */
8106  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
8107
8108 /**
8109   * Search parameter: <b>jurisdiction</b>
8110   * <p>
8111   * Description: <b>Multiple Resources: 
8112
8113* [ActivityDefinition](activitydefinition.html): Intended jurisdiction for the activity definition
8114* [ActorDefinition](actordefinition.html): Intended jurisdiction for the Actor Definition
8115* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
8116* [ChargeItemDefinition](chargeitemdefinition.html): Intended jurisdiction for the charge item definition
8117* [Citation](citation.html): Intended jurisdiction for the citation
8118* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
8119* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
8120* [ConditionDefinition](conditiondefinition.html): Intended jurisdiction for the condition definition
8121* [EventDefinition](eventdefinition.html): Intended jurisdiction for the event definition
8122* [ExampleScenario](examplescenario.html): Intended jurisdiction for the example scenario
8123* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
8124* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
8125* [Library](library.html): Intended jurisdiction for the library
8126* [Measure](measure.html): Intended jurisdiction for the measure
8127* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
8128* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
8129* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
8130* [PlanDefinition](plandefinition.html): Intended jurisdiction for the plan definition
8131* [Questionnaire](questionnaire.html): Intended jurisdiction for the questionnaire
8132* [Requirements](requirements.html): Intended jurisdiction for the requirements
8133* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
8134* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
8135* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
8136* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
8137* [TestScript](testscript.html): Intended jurisdiction for the test script
8138* [ValueSet](valueset.html): Intended jurisdiction for the value set
8139</b><br>
8140   * Type: <b>token</b><br>
8141   * Path: <b>ActivityDefinition.jurisdiction | ActorDefinition.jurisdiction | CapabilityStatement.jurisdiction | ChargeItemDefinition.jurisdiction | Citation.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | ConditionDefinition.jurisdiction | EventDefinition.jurisdiction | ExampleScenario.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | Library.jurisdiction | Measure.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | PlanDefinition.jurisdiction | Questionnaire.jurisdiction | Requirements.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | TestScript.jurisdiction | ValueSet.jurisdiction</b><br>
8142   * </p>
8143   */
8144  @SearchParamDefinition(name="jurisdiction", path="ActivityDefinition.jurisdiction | ActorDefinition.jurisdiction | CapabilityStatement.jurisdiction | ChargeItemDefinition.jurisdiction | Citation.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | ConditionDefinition.jurisdiction | EventDefinition.jurisdiction | ExampleScenario.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | Library.jurisdiction | Measure.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | PlanDefinition.jurisdiction | Questionnaire.jurisdiction | Requirements.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | TestScript.jurisdiction | ValueSet.jurisdiction", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Intended jurisdiction for the activity definition\r\n* [ActorDefinition](actordefinition.html): Intended jurisdiction for the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): Intended jurisdiction for the charge item definition\r\n* [Citation](citation.html): Intended jurisdiction for the citation\r\n* [CodeSystem](codesystem.html): Intended jurisdiction for the code system\r\n* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map\r\n* [ConditionDefinition](conditiondefinition.html): Intended jurisdiction for the condition definition\r\n* [EventDefinition](eventdefinition.html): Intended jurisdiction for the event definition\r\n* [ExampleScenario](examplescenario.html): Intended jurisdiction for the example scenario\r\n* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition\r\n* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide\r\n* [Library](library.html): Intended jurisdiction for the library\r\n* [Measure](measure.html): Intended jurisdiction for the measure\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* [PlanDefinition](plandefinition.html): Intended jurisdiction for the plan definition\r\n* [Questionnaire](questionnaire.html): Intended jurisdiction for the questionnaire\r\n* [Requirements](requirements.html): Intended jurisdiction for the requirements\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* [TestScript](testscript.html): Intended jurisdiction for the test script\r\n* [ValueSet](valueset.html): Intended jurisdiction for the value set\r\n", type="token" )
8145  public static final String SP_JURISDICTION = "jurisdiction";
8146 /**
8147   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
8148   * <p>
8149   * Description: <b>Multiple Resources: 
8150
8151* [ActivityDefinition](activitydefinition.html): Intended jurisdiction for the activity definition
8152* [ActorDefinition](actordefinition.html): Intended jurisdiction for the Actor Definition
8153* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
8154* [ChargeItemDefinition](chargeitemdefinition.html): Intended jurisdiction for the charge item definition
8155* [Citation](citation.html): Intended jurisdiction for the citation
8156* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
8157* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
8158* [ConditionDefinition](conditiondefinition.html): Intended jurisdiction for the condition definition
8159* [EventDefinition](eventdefinition.html): Intended jurisdiction for the event definition
8160* [ExampleScenario](examplescenario.html): Intended jurisdiction for the example scenario
8161* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
8162* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
8163* [Library](library.html): Intended jurisdiction for the library
8164* [Measure](measure.html): Intended jurisdiction for the measure
8165* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
8166* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
8167* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
8168* [PlanDefinition](plandefinition.html): Intended jurisdiction for the plan definition
8169* [Questionnaire](questionnaire.html): Intended jurisdiction for the questionnaire
8170* [Requirements](requirements.html): Intended jurisdiction for the requirements
8171* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
8172* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
8173* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
8174* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
8175* [TestScript](testscript.html): Intended jurisdiction for the test script
8176* [ValueSet](valueset.html): Intended jurisdiction for the value set
8177</b><br>
8178   * Type: <b>token</b><br>
8179   * Path: <b>ActivityDefinition.jurisdiction | ActorDefinition.jurisdiction | CapabilityStatement.jurisdiction | ChargeItemDefinition.jurisdiction | Citation.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | ConditionDefinition.jurisdiction | EventDefinition.jurisdiction | ExampleScenario.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | Library.jurisdiction | Measure.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | PlanDefinition.jurisdiction | Questionnaire.jurisdiction | Requirements.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | TestScript.jurisdiction | ValueSet.jurisdiction</b><br>
8180   * </p>
8181   */
8182  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
8183
8184 /**
8185   * Search parameter: <b>name</b>
8186   * <p>
8187   * Description: <b>Multiple Resources: 
8188
8189* [ActivityDefinition](activitydefinition.html): Computationally friendly name of the activity definition
8190* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
8191* [Citation](citation.html): Computationally friendly name of the citation
8192* [CodeSystem](codesystem.html): Computationally friendly name of the code system
8193* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
8194* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
8195* [ConditionDefinition](conditiondefinition.html): Computationally friendly name of the condition definition
8196* [EventDefinition](eventdefinition.html): Computationally friendly name of the event definition
8197* [EvidenceVariable](evidencevariable.html): Computationally friendly name of the evidence variable
8198* [ExampleScenario](examplescenario.html): Computationally friendly name of the example scenario
8199* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
8200* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
8201* [Library](library.html): Computationally friendly name of the library
8202* [Measure](measure.html): Computationally friendly name of the measure
8203* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
8204* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
8205* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
8206* [PlanDefinition](plandefinition.html): Computationally friendly name of the plan definition
8207* [Questionnaire](questionnaire.html): Computationally friendly name of the questionnaire
8208* [Requirements](requirements.html): Computationally friendly name of the requirements
8209* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
8210* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
8211* [StructureMap](structuremap.html): Computationally friendly name of the structure map
8212* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
8213* [TestScript](testscript.html): Computationally friendly name of the test script
8214* [ValueSet](valueset.html): Computationally friendly name of the value set
8215</b><br>
8216   * Type: <b>string</b><br>
8217   * Path: <b>ActivityDefinition.name | CapabilityStatement.name | Citation.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | ConditionDefinition.name | EventDefinition.name | EvidenceVariable.name | ExampleScenario.name | GraphDefinition.name | ImplementationGuide.name | Library.name | Measure.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | PlanDefinition.name | Questionnaire.name | Requirements.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | TestScript.name | ValueSet.name</b><br>
8218   * </p>
8219   */
8220  @SearchParamDefinition(name="name", path="ActivityDefinition.name | CapabilityStatement.name | Citation.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | ConditionDefinition.name | EventDefinition.name | EvidenceVariable.name | ExampleScenario.name | GraphDefinition.name | ImplementationGuide.name | Library.name | Measure.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | PlanDefinition.name | Questionnaire.name | Requirements.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | TestScript.name | ValueSet.name", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Computationally friendly name of the activity definition\r\n* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement\r\n* [Citation](citation.html): Computationally friendly name of the citation\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* [ConditionDefinition](conditiondefinition.html): Computationally friendly name of the condition definition\r\n* [EventDefinition](eventdefinition.html): Computationally friendly name of the event definition\r\n* [EvidenceVariable](evidencevariable.html): Computationally friendly name of the evidence variable\r\n* [ExampleScenario](examplescenario.html): Computationally friendly name of the example scenario\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* [Library](library.html): Computationally friendly name of the library\r\n* [Measure](measure.html): Computationally friendly name of the measure\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* [PlanDefinition](plandefinition.html): Computationally friendly name of the plan definition\r\n* [Questionnaire](questionnaire.html): Computationally friendly name of the questionnaire\r\n* [Requirements](requirements.html): Computationally friendly name of the requirements\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* [TestScript](testscript.html): Computationally friendly name of the test script\r\n* [ValueSet](valueset.html): Computationally friendly name of the value set\r\n", type="string" )
8221  public static final String SP_NAME = "name";
8222 /**
8223   * <b>Fluent Client</b> search parameter constant for <b>name</b>
8224   * <p>
8225   * Description: <b>Multiple Resources: 
8226
8227* [ActivityDefinition](activitydefinition.html): Computationally friendly name of the activity definition
8228* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
8229* [Citation](citation.html): Computationally friendly name of the citation
8230* [CodeSystem](codesystem.html): Computationally friendly name of the code system
8231* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
8232* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
8233* [ConditionDefinition](conditiondefinition.html): Computationally friendly name of the condition definition
8234* [EventDefinition](eventdefinition.html): Computationally friendly name of the event definition
8235* [EvidenceVariable](evidencevariable.html): Computationally friendly name of the evidence variable
8236* [ExampleScenario](examplescenario.html): Computationally friendly name of the example scenario
8237* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
8238* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
8239* [Library](library.html): Computationally friendly name of the library
8240* [Measure](measure.html): Computationally friendly name of the measure
8241* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
8242* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
8243* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
8244* [PlanDefinition](plandefinition.html): Computationally friendly name of the plan definition
8245* [Questionnaire](questionnaire.html): Computationally friendly name of the questionnaire
8246* [Requirements](requirements.html): Computationally friendly name of the requirements
8247* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
8248* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
8249* [StructureMap](structuremap.html): Computationally friendly name of the structure map
8250* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
8251* [TestScript](testscript.html): Computationally friendly name of the test script
8252* [ValueSet](valueset.html): Computationally friendly name of the value set
8253</b><br>
8254   * Type: <b>string</b><br>
8255   * Path: <b>ActivityDefinition.name | CapabilityStatement.name | Citation.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | ConditionDefinition.name | EventDefinition.name | EvidenceVariable.name | ExampleScenario.name | GraphDefinition.name | ImplementationGuide.name | Library.name | Measure.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | PlanDefinition.name | Questionnaire.name | Requirements.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | TestScript.name | ValueSet.name</b><br>
8256   * </p>
8257   */
8258  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
8259
8260 /**
8261   * Search parameter: <b>publisher</b>
8262   * <p>
8263   * Description: <b>Multiple Resources: 
8264
8265* [ActivityDefinition](activitydefinition.html): Name of the publisher of the activity definition
8266* [ActorDefinition](actordefinition.html): Name of the publisher of the Actor Definition
8267* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
8268* [ChargeItemDefinition](chargeitemdefinition.html): Name of the publisher of the charge item definition
8269* [Citation](citation.html): Name of the publisher of the citation
8270* [CodeSystem](codesystem.html): Name of the publisher of the code system
8271* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
8272* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
8273* [ConditionDefinition](conditiondefinition.html): Name of the publisher of the condition definition
8274* [EventDefinition](eventdefinition.html): Name of the publisher of the event definition
8275* [Evidence](evidence.html): Name of the publisher of the evidence
8276* [EvidenceReport](evidencereport.html): Name of the publisher of the evidence report
8277* [EvidenceVariable](evidencevariable.html): Name of the publisher of the evidence variable
8278* [ExampleScenario](examplescenario.html): Name of the publisher of the example scenario
8279* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
8280* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
8281* [Library](library.html): Name of the publisher of the library
8282* [Measure](measure.html): Name of the publisher of the measure
8283* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
8284* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
8285* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
8286* [PlanDefinition](plandefinition.html): Name of the publisher of the plan definition
8287* [Questionnaire](questionnaire.html): Name of the publisher of the questionnaire
8288* [Requirements](requirements.html): Name of the publisher of the requirements
8289* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
8290* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
8291* [StructureMap](structuremap.html): Name of the publisher of the structure map
8292* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
8293* [TestScript](testscript.html): Name of the publisher of the test script
8294* [ValueSet](valueset.html): Name of the publisher of the value set
8295</b><br>
8296   * Type: <b>string</b><br>
8297   * Path: <b>ActivityDefinition.publisher | ActorDefinition.publisher | CapabilityStatement.publisher | ChargeItemDefinition.publisher | Citation.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | ConditionDefinition.publisher | EventDefinition.publisher | Evidence.publisher | EvidenceReport.publisher | EvidenceVariable.publisher | ExampleScenario.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | Library.publisher | Measure.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | PlanDefinition.publisher | Questionnaire.publisher | Requirements.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | TestScript.publisher | ValueSet.publisher</b><br>
8298   * </p>
8299   */
8300  @SearchParamDefinition(name="publisher", path="ActivityDefinition.publisher | ActorDefinition.publisher | CapabilityStatement.publisher | ChargeItemDefinition.publisher | Citation.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | ConditionDefinition.publisher | EventDefinition.publisher | Evidence.publisher | EvidenceReport.publisher | EvidenceVariable.publisher | ExampleScenario.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | Library.publisher | Measure.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | PlanDefinition.publisher | Questionnaire.publisher | Requirements.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | TestScript.publisher | ValueSet.publisher", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Name of the publisher of the activity definition\r\n* [ActorDefinition](actordefinition.html): Name of the publisher of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): Name of the publisher of the charge item definition\r\n* [Citation](citation.html): Name of the publisher of the citation\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* [ConditionDefinition](conditiondefinition.html): Name of the publisher of the condition definition\r\n* [EventDefinition](eventdefinition.html): Name of the publisher of the event definition\r\n* [Evidence](evidence.html): Name of the publisher of the evidence\r\n* [EvidenceReport](evidencereport.html): Name of the publisher of the evidence report\r\n* [EvidenceVariable](evidencevariable.html): Name of the publisher of the evidence variable\r\n* [ExampleScenario](examplescenario.html): Name of the publisher of the example scenario\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* [Library](library.html): Name of the publisher of the library\r\n* [Measure](measure.html): Name of the publisher of the measure\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* [PlanDefinition](plandefinition.html): Name of the publisher of the plan definition\r\n* [Questionnaire](questionnaire.html): Name of the publisher of the questionnaire\r\n* [Requirements](requirements.html): Name of the publisher of the requirements\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* [TestScript](testscript.html): Name of the publisher of the test script\r\n* [ValueSet](valueset.html): Name of the publisher of the value set\r\n", type="string" )
8301  public static final String SP_PUBLISHER = "publisher";
8302 /**
8303   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
8304   * <p>
8305   * Description: <b>Multiple Resources: 
8306
8307* [ActivityDefinition](activitydefinition.html): Name of the publisher of the activity definition
8308* [ActorDefinition](actordefinition.html): Name of the publisher of the Actor Definition
8309* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
8310* [ChargeItemDefinition](chargeitemdefinition.html): Name of the publisher of the charge item definition
8311* [Citation](citation.html): Name of the publisher of the citation
8312* [CodeSystem](codesystem.html): Name of the publisher of the code system
8313* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
8314* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
8315* [ConditionDefinition](conditiondefinition.html): Name of the publisher of the condition definition
8316* [EventDefinition](eventdefinition.html): Name of the publisher of the event definition
8317* [Evidence](evidence.html): Name of the publisher of the evidence
8318* [EvidenceReport](evidencereport.html): Name of the publisher of the evidence report
8319* [EvidenceVariable](evidencevariable.html): Name of the publisher of the evidence variable
8320* [ExampleScenario](examplescenario.html): Name of the publisher of the example scenario
8321* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
8322* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
8323* [Library](library.html): Name of the publisher of the library
8324* [Measure](measure.html): Name of the publisher of the measure
8325* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
8326* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
8327* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
8328* [PlanDefinition](plandefinition.html): Name of the publisher of the plan definition
8329* [Questionnaire](questionnaire.html): Name of the publisher of the questionnaire
8330* [Requirements](requirements.html): Name of the publisher of the requirements
8331* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
8332* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
8333* [StructureMap](structuremap.html): Name of the publisher of the structure map
8334* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
8335* [TestScript](testscript.html): Name of the publisher of the test script
8336* [ValueSet](valueset.html): Name of the publisher of the value set
8337</b><br>
8338   * Type: <b>string</b><br>
8339   * Path: <b>ActivityDefinition.publisher | ActorDefinition.publisher | CapabilityStatement.publisher | ChargeItemDefinition.publisher | Citation.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | ConditionDefinition.publisher | EventDefinition.publisher | Evidence.publisher | EvidenceReport.publisher | EvidenceVariable.publisher | ExampleScenario.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | Library.publisher | Measure.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | PlanDefinition.publisher | Questionnaire.publisher | Requirements.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | TestScript.publisher | ValueSet.publisher</b><br>
8340   * </p>
8341   */
8342  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
8343
8344 /**
8345   * Search parameter: <b>status</b>
8346   * <p>
8347   * Description: <b>Multiple Resources: 
8348
8349* [ActivityDefinition](activitydefinition.html): The current status of the activity definition
8350* [ActorDefinition](actordefinition.html): The current status of the Actor Definition
8351* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
8352* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition
8353* [Citation](citation.html): The current status of the citation
8354* [CodeSystem](codesystem.html): The current status of the code system
8355* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
8356* [ConceptMap](conceptmap.html): The current status of the concept map
8357* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition
8358* [EventDefinition](eventdefinition.html): The current status of the event definition
8359* [Evidence](evidence.html): The current status of the evidence
8360* [EvidenceReport](evidencereport.html): The current status of the evidence report
8361* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable
8362* [ExampleScenario](examplescenario.html): The current status of the example scenario
8363* [GraphDefinition](graphdefinition.html): The current status of the graph definition
8364* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
8365* [Library](library.html): The current status of the library
8366* [Measure](measure.html): The current status of the measure
8367* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error
8368* [MessageDefinition](messagedefinition.html): The current status of the message definition
8369* [NamingSystem](namingsystem.html): The current status of the naming system
8370* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown
8371* [OperationDefinition](operationdefinition.html): The current status of the operation definition
8372* [PlanDefinition](plandefinition.html): The current status of the plan definition
8373* [Questionnaire](questionnaire.html): The current status of the questionnaire
8374* [Requirements](requirements.html): The current status of the requirements
8375* [SearchParameter](searchparameter.html): The current status of the search parameter
8376* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown
8377* [StructureDefinition](structuredefinition.html): The current status of the structure definition
8378* [StructureMap](structuremap.html): The current status of the structure map
8379* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown
8380* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
8381* [TestScript](testscript.html): The current status of the test script
8382* [ValueSet](valueset.html): The current status of the value set
8383</b><br>
8384   * Type: <b>token</b><br>
8385   * Path: <b>ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestScript.status | ValueSet.status</b><br>
8386   * </p>
8387   */
8388  @SearchParamDefinition(name="status", path="ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestScript.status | ValueSet.status", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The current status of the activity definition\r\n* [ActorDefinition](actordefinition.html): The current status of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition\r\n* [Citation](citation.html): The current status of the citation\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* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition\r\n* [EventDefinition](eventdefinition.html): The current status of the event definition\r\n* [Evidence](evidence.html): The current status of the evidence\r\n* [EvidenceReport](evidencereport.html): The current status of the evidence report\r\n* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable\r\n* [ExampleScenario](examplescenario.html): The current status of the example scenario\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* [Library](library.html): The current status of the library\r\n* [Measure](measure.html): The current status of the measure\r\n* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error\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* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown\r\n* [OperationDefinition](operationdefinition.html): The current status of the operation definition\r\n* [PlanDefinition](plandefinition.html): The current status of the plan definition\r\n* [Questionnaire](questionnaire.html): The current status of the questionnaire\r\n* [Requirements](requirements.html): The current status of the requirements\r\n* [SearchParameter](searchparameter.html): The current status of the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown\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* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown\r\n* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities\r\n* [TestScript](testscript.html): The current status of the test script\r\n* [ValueSet](valueset.html): The current status of the value set\r\n", type="token" )
8389  public static final String SP_STATUS = "status";
8390 /**
8391   * <b>Fluent Client</b> search parameter constant for <b>status</b>
8392   * <p>
8393   * Description: <b>Multiple Resources: 
8394
8395* [ActivityDefinition](activitydefinition.html): The current status of the activity definition
8396* [ActorDefinition](actordefinition.html): The current status of the Actor Definition
8397* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
8398* [ChargeItemDefinition](chargeitemdefinition.html): The current status of the charge item definition
8399* [Citation](citation.html): The current status of the citation
8400* [CodeSystem](codesystem.html): The current status of the code system
8401* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
8402* [ConceptMap](conceptmap.html): The current status of the concept map
8403* [ConditionDefinition](conditiondefinition.html): The current status of the condition definition
8404* [EventDefinition](eventdefinition.html): The current status of the event definition
8405* [Evidence](evidence.html): The current status of the evidence
8406* [EvidenceReport](evidencereport.html): The current status of the evidence report
8407* [EvidenceVariable](evidencevariable.html): The current status of the evidence variable
8408* [ExampleScenario](examplescenario.html): The current status of the example scenario
8409* [GraphDefinition](graphdefinition.html): The current status of the graph definition
8410* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
8411* [Library](library.html): The current status of the library
8412* [Measure](measure.html): The current status of the measure
8413* [MedicationKnowledge](medicationknowledge.html): active | inactive | entered-in-error
8414* [MessageDefinition](messagedefinition.html): The current status of the message definition
8415* [NamingSystem](namingsystem.html): The current status of the naming system
8416* [ObservationDefinition](observationdefinition.html): Publication status of the ObservationDefinition: draft, active, retired, unknown
8417* [OperationDefinition](operationdefinition.html): The current status of the operation definition
8418* [PlanDefinition](plandefinition.html): The current status of the plan definition
8419* [Questionnaire](questionnaire.html): The current status of the questionnaire
8420* [Requirements](requirements.html): The current status of the requirements
8421* [SearchParameter](searchparameter.html): The current status of the search parameter
8422* [SpecimenDefinition](specimendefinition.html): Publication status of the SpecimenDefinition: draft, active, retired, unknown
8423* [StructureDefinition](structuredefinition.html): The current status of the structure definition
8424* [StructureMap](structuremap.html): The current status of the structure map
8425* [SubscriptionTopic](subscriptiontopic.html): draft | active | retired | unknown
8426* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
8427* [TestScript](testscript.html): The current status of the test script
8428* [ValueSet](valueset.html): The current status of the value set
8429</b><br>
8430   * Type: <b>token</b><br>
8431   * Path: <b>ActivityDefinition.status | ActorDefinition.status | CapabilityStatement.status | ChargeItemDefinition.status | Citation.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | ConditionDefinition.status | EventDefinition.status | Evidence.status | EvidenceReport.status | EvidenceVariable.status | ExampleScenario.status | GraphDefinition.status | ImplementationGuide.status | Library.status | Measure.status | MedicationKnowledge.status | MessageDefinition.status | NamingSystem.status | ObservationDefinition.status | OperationDefinition.status | PlanDefinition.status | Questionnaire.status | Requirements.status | SearchParameter.status | SpecimenDefinition.status | StructureDefinition.status | StructureMap.status | SubscriptionTopic.status | TerminologyCapabilities.status | TestScript.status | ValueSet.status</b><br>
8432   * </p>
8433   */
8434  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
8435
8436 /**
8437   * Search parameter: <b>title</b>
8438   * <p>
8439   * Description: <b>Multiple Resources: 
8440
8441* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition
8442* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition
8443* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
8444* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition
8445* [Citation](citation.html): The human-friendly name of the citation
8446* [CodeSystem](codesystem.html): The human-friendly name of the code system
8447* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
8448* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition
8449* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition
8450* [Evidence](evidence.html): The human-friendly name of the evidence
8451* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable
8452* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
8453* [Library](library.html): The human-friendly name of the library
8454* [Measure](measure.html): The human-friendly name of the measure
8455* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
8456* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition
8457* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
8458* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition
8459* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire
8460* [Requirements](requirements.html): The human-friendly name of the requirements
8461* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition
8462* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
8463* [StructureMap](structuremap.html): The human-friendly name of the structure map
8464* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)
8465* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
8466* [TestScript](testscript.html): The human-friendly name of the test script
8467* [ValueSet](valueset.html): The human-friendly name of the value set
8468</b><br>
8469   * Type: <b>string</b><br>
8470   * Path: <b>ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title</b><br>
8471   * </p>
8472   */
8473  @SearchParamDefinition(name="title", path="ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition\r\n* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition\r\n* [Citation](citation.html): The human-friendly name of the citation\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* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition\r\n* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition\r\n* [Evidence](evidence.html): The human-friendly name of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable\r\n* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide\r\n* [Library](library.html): The human-friendly name of the library\r\n* [Measure](measure.html): The human-friendly name of the measure\r\n* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition\r\n* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition\r\n* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition\r\n* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition\r\n* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire\r\n* [Requirements](requirements.html): The human-friendly name of the requirements\r\n* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition\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* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)\r\n* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities\r\n* [TestScript](testscript.html): The human-friendly name of the test script\r\n* [ValueSet](valueset.html): The human-friendly name of the value set\r\n", type="string" )
8474  public static final String SP_TITLE = "title";
8475 /**
8476   * <b>Fluent Client</b> search parameter constant for <b>title</b>
8477   * <p>
8478   * Description: <b>Multiple Resources: 
8479
8480* [ActivityDefinition](activitydefinition.html): The human-friendly name of the activity definition
8481* [ActorDefinition](actordefinition.html): The human-friendly name of the Actor Definition
8482* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
8483* [ChargeItemDefinition](chargeitemdefinition.html): The human-friendly name of the charge item definition
8484* [Citation](citation.html): The human-friendly name of the citation
8485* [CodeSystem](codesystem.html): The human-friendly name of the code system
8486* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
8487* [ConditionDefinition](conditiondefinition.html): The human-friendly name of the condition definition
8488* [EventDefinition](eventdefinition.html): The human-friendly name of the event definition
8489* [Evidence](evidence.html): The human-friendly name of the evidence
8490* [EvidenceVariable](evidencevariable.html): The human-friendly name of the evidence variable
8491* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
8492* [Library](library.html): The human-friendly name of the library
8493* [Measure](measure.html): The human-friendly name of the measure
8494* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
8495* [ObservationDefinition](observationdefinition.html): Human-friendly name of the ObservationDefinition
8496* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
8497* [PlanDefinition](plandefinition.html): The human-friendly name of the plan definition
8498* [Questionnaire](questionnaire.html): The human-friendly name of the questionnaire
8499* [Requirements](requirements.html): The human-friendly name of the requirements
8500* [SpecimenDefinition](specimendefinition.html): Human-friendly name of the SpecimenDefinition
8501* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
8502* [StructureMap](structuremap.html): The human-friendly name of the structure map
8503* [SubscriptionTopic](subscriptiontopic.html): Name for this SubscriptionTopic (Human friendly)
8504* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
8505* [TestScript](testscript.html): The human-friendly name of the test script
8506* [ValueSet](valueset.html): The human-friendly name of the value set
8507</b><br>
8508   * Type: <b>string</b><br>
8509   * Path: <b>ActivityDefinition.title | ActorDefinition.title | CapabilityStatement.title | ChargeItemDefinition.title | Citation.title | CodeSystem.title | ConceptMap.title | ConditionDefinition.title | EventDefinition.title | Evidence.title | EvidenceVariable.title | ImplementationGuide.title | Library.title | Measure.title | MessageDefinition.title | ObservationDefinition.title | OperationDefinition.title | PlanDefinition.title | Questionnaire.title | Requirements.title | SpecimenDefinition.title | StructureDefinition.title | StructureMap.title | SubscriptionTopic.title | TerminologyCapabilities.title | TestScript.title | ValueSet.title</b><br>
8510   * </p>
8511   */
8512  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
8513
8514 /**
8515   * Search parameter: <b>url</b>
8516   * <p>
8517   * Description: <b>Multiple Resources: 
8518
8519* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition
8520* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition
8521* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
8522* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition
8523* [Citation](citation.html): The uri that identifies the citation
8524* [CodeSystem](codesystem.html): The uri that identifies the code system
8525* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
8526* [ConceptMap](conceptmap.html): The URI that identifies the concept map
8527* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition
8528* [EventDefinition](eventdefinition.html): The uri that identifies the event definition
8529* [Evidence](evidence.html): The uri that identifies the evidence
8530* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report
8531* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable
8532* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario
8533* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
8534* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
8535* [Library](library.html): The uri that identifies the library
8536* [Measure](measure.html): The uri that identifies the measure
8537* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
8538* [NamingSystem](namingsystem.html): The uri that identifies the naming system
8539* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition
8540* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
8541* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition
8542* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire
8543* [Requirements](requirements.html): The uri that identifies the requirements
8544* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
8545* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition
8546* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
8547* [StructureMap](structuremap.html): The uri that identifies the structure map
8548* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)
8549* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
8550* [TestScript](testscript.html): The uri that identifies the test script
8551* [ValueSet](valueset.html): The uri that identifies the value set
8552</b><br>
8553   * Type: <b>uri</b><br>
8554   * Path: <b>ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestScript.url | ValueSet.url</b><br>
8555   * </p>
8556   */
8557  @SearchParamDefinition(name="url", path="ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestScript.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition\r\n* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition\r\n* [Citation](citation.html): The uri that identifies the citation\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* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition\r\n* [EventDefinition](eventdefinition.html): The uri that identifies the event definition\r\n* [Evidence](evidence.html): The uri that identifies the evidence\r\n* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report\r\n* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable\r\n* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario\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* [Library](library.html): The uri that identifies the library\r\n* [Measure](measure.html): The uri that identifies the measure\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* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition\r\n* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition\r\n* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire\r\n* [Requirements](requirements.html): The uri that identifies the requirements\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\r\n* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition\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* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)\r\n* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [TestScript](testscript.html): The uri that identifies the test script\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
8558  public static final String SP_URL = "url";
8559 /**
8560   * <b>Fluent Client</b> search parameter constant for <b>url</b>
8561   * <p>
8562   * Description: <b>Multiple Resources: 
8563
8564* [ActivityDefinition](activitydefinition.html): The uri that identifies the activity definition
8565* [ActorDefinition](actordefinition.html): The uri that identifies the Actor Definition
8566* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
8567* [ChargeItemDefinition](chargeitemdefinition.html): The uri that identifies the charge item definition
8568* [Citation](citation.html): The uri that identifies the citation
8569* [CodeSystem](codesystem.html): The uri that identifies the code system
8570* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
8571* [ConceptMap](conceptmap.html): The URI that identifies the concept map
8572* [ConditionDefinition](conditiondefinition.html): The uri that identifies the condition definition
8573* [EventDefinition](eventdefinition.html): The uri that identifies the event definition
8574* [Evidence](evidence.html): The uri that identifies the evidence
8575* [EvidenceReport](evidencereport.html): The uri that identifies the evidence report
8576* [EvidenceVariable](evidencevariable.html): The uri that identifies the evidence variable
8577* [ExampleScenario](examplescenario.html): The uri that identifies the example scenario
8578* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
8579* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
8580* [Library](library.html): The uri that identifies the library
8581* [Measure](measure.html): The uri that identifies the measure
8582* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
8583* [NamingSystem](namingsystem.html): The uri that identifies the naming system
8584* [ObservationDefinition](observationdefinition.html): The uri that identifies the observation definition
8585* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
8586* [PlanDefinition](plandefinition.html): The uri that identifies the plan definition
8587* [Questionnaire](questionnaire.html): The uri that identifies the questionnaire
8588* [Requirements](requirements.html): The uri that identifies the requirements
8589* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
8590* [SpecimenDefinition](specimendefinition.html): The uri that identifies the specimen definition
8591* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
8592* [StructureMap](structuremap.html): The uri that identifies the structure map
8593* [SubscriptionTopic](subscriptiontopic.html): Logical canonical URL to reference this SubscriptionTopic (globally unique)
8594* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
8595* [TestScript](testscript.html): The uri that identifies the test script
8596* [ValueSet](valueset.html): The uri that identifies the value set
8597</b><br>
8598   * Type: <b>uri</b><br>
8599   * Path: <b>ActivityDefinition.url | ActorDefinition.url | CapabilityStatement.url | ChargeItemDefinition.url | Citation.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | ConditionDefinition.url | EventDefinition.url | Evidence.url | EvidenceReport.url | EvidenceVariable.url | ExampleScenario.url | GraphDefinition.url | ImplementationGuide.url | Library.url | Measure.url | MessageDefinition.url | NamingSystem.url | ObservationDefinition.url | OperationDefinition.url | PlanDefinition.url | Questionnaire.url | Requirements.url | SearchParameter.url | SpecimenDefinition.url | StructureDefinition.url | StructureMap.url | SubscriptionTopic.url | TerminologyCapabilities.url | TestScript.url | ValueSet.url</b><br>
8600   * </p>
8601   */
8602  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
8603
8604 /**
8605   * Search parameter: <b>version</b>
8606   * <p>
8607   * Description: <b>Multiple Resources: 
8608
8609* [ActivityDefinition](activitydefinition.html): The business version of the activity definition
8610* [ActorDefinition](actordefinition.html): The business version of the Actor Definition
8611* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
8612* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition
8613* [Citation](citation.html): The business version of the citation
8614* [CodeSystem](codesystem.html): The business version of the code system
8615* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
8616* [ConceptMap](conceptmap.html): The business version of the concept map
8617* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition
8618* [EventDefinition](eventdefinition.html): The business version of the event definition
8619* [Evidence](evidence.html): The business version of the evidence
8620* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable
8621* [ExampleScenario](examplescenario.html): The business version of the example scenario
8622* [GraphDefinition](graphdefinition.html): The business version of the graph definition
8623* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
8624* [Library](library.html): The business version of the library
8625* [Measure](measure.html): The business version of the measure
8626* [MessageDefinition](messagedefinition.html): The business version of the message definition
8627* [NamingSystem](namingsystem.html): The business version of the naming system
8628* [OperationDefinition](operationdefinition.html): The business version of the operation definition
8629* [PlanDefinition](plandefinition.html): The business version of the plan definition
8630* [Questionnaire](questionnaire.html): The business version of the questionnaire
8631* [Requirements](requirements.html): The business version of the requirements
8632* [SearchParameter](searchparameter.html): The business version of the search parameter
8633* [StructureDefinition](structuredefinition.html): The business version of the structure definition
8634* [StructureMap](structuremap.html): The business version of the structure map
8635* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic
8636* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
8637* [TestScript](testscript.html): The business version of the test script
8638* [ValueSet](valueset.html): The business version of the value set
8639</b><br>
8640   * Type: <b>token</b><br>
8641   * Path: <b>ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version</b><br>
8642   * </p>
8643   */
8644  @SearchParamDefinition(name="version", path="ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The business version of the activity definition\r\n* [ActorDefinition](actordefinition.html): The business version of the Actor Definition\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition\r\n* [Citation](citation.html): The business version of the citation\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* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition\r\n* [EventDefinition](eventdefinition.html): The business version of the event definition\r\n* [Evidence](evidence.html): The business version of the evidence\r\n* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable\r\n* [ExampleScenario](examplescenario.html): The business version of the example scenario\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* [Library](library.html): The business version of the library\r\n* [Measure](measure.html): The business version of the measure\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* [PlanDefinition](plandefinition.html): The business version of the plan definition\r\n* [Questionnaire](questionnaire.html): The business version of the questionnaire\r\n* [Requirements](requirements.html): The business version of the requirements\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* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic\r\n* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [TestScript](testscript.html): The business version of the test script\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
8645  public static final String SP_VERSION = "version";
8646 /**
8647   * <b>Fluent Client</b> search parameter constant for <b>version</b>
8648   * <p>
8649   * Description: <b>Multiple Resources: 
8650
8651* [ActivityDefinition](activitydefinition.html): The business version of the activity definition
8652* [ActorDefinition](actordefinition.html): The business version of the Actor Definition
8653* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
8654* [ChargeItemDefinition](chargeitemdefinition.html): The business version of the charge item definition
8655* [Citation](citation.html): The business version of the citation
8656* [CodeSystem](codesystem.html): The business version of the code system
8657* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
8658* [ConceptMap](conceptmap.html): The business version of the concept map
8659* [ConditionDefinition](conditiondefinition.html): The business version of the condition definition
8660* [EventDefinition](eventdefinition.html): The business version of the event definition
8661* [Evidence](evidence.html): The business version of the evidence
8662* [EvidenceVariable](evidencevariable.html): The business version of the evidence variable
8663* [ExampleScenario](examplescenario.html): The business version of the example scenario
8664* [GraphDefinition](graphdefinition.html): The business version of the graph definition
8665* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
8666* [Library](library.html): The business version of the library
8667* [Measure](measure.html): The business version of the measure
8668* [MessageDefinition](messagedefinition.html): The business version of the message definition
8669* [NamingSystem](namingsystem.html): The business version of the naming system
8670* [OperationDefinition](operationdefinition.html): The business version of the operation definition
8671* [PlanDefinition](plandefinition.html): The business version of the plan definition
8672* [Questionnaire](questionnaire.html): The business version of the questionnaire
8673* [Requirements](requirements.html): The business version of the requirements
8674* [SearchParameter](searchparameter.html): The business version of the search parameter
8675* [StructureDefinition](structuredefinition.html): The business version of the structure definition
8676* [StructureMap](structuremap.html): The business version of the structure map
8677* [SubscriptionTopic](subscriptiontopic.html): Business version of the SubscriptionTopic
8678* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
8679* [TestScript](testscript.html): The business version of the test script
8680* [ValueSet](valueset.html): The business version of the value set
8681</b><br>
8682   * Type: <b>token</b><br>
8683   * Path: <b>ActivityDefinition.version | ActorDefinition.version | CapabilityStatement.version | ChargeItemDefinition.version | Citation.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | ConditionDefinition.version | EventDefinition.version | Evidence.version | EvidenceVariable.version | ExampleScenario.version | GraphDefinition.version | ImplementationGuide.version | Library.version | Measure.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | PlanDefinition.version | Questionnaire.version | Requirements.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | SubscriptionTopic.version | TerminologyCapabilities.version | TestScript.version | ValueSet.version</b><br>
8684   * </p>
8685   */
8686  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
8687
8688 /**
8689   * Search parameter: <b>derived-from</b>
8690   * <p>
8691   * Description: <b>Multiple Resources: 
8692
8693* [ActivityDefinition](activitydefinition.html): What resource is being referenced
8694* [CodeSystem](codesystem.html): A resource that the CodeSystem is derived from
8695* [ConceptMap](conceptmap.html): A resource that the ConceptMap is derived from
8696* [EventDefinition](eventdefinition.html): What resource is being referenced
8697* [EvidenceVariable](evidencevariable.html): What resource is being referenced
8698* [Library](library.html): What resource is being referenced
8699* [Measure](measure.html): What resource is being referenced
8700* [NamingSystem](namingsystem.html): A resource that the NamingSystem is derived from
8701* [PlanDefinition](plandefinition.html): What resource is being referenced
8702* [ValueSet](valueset.html): A resource that the ValueSet is derived from
8703</b><br>
8704   * Type: <b>reference</b><br>
8705   * Path: <b>ActivityDefinition.relatedArtifact.where(type='derived-from').resource | CodeSystem.relatedArtifact.where(type='derived-from').resource | ConceptMap.relatedArtifact.where(type='derived-from').resource | EventDefinition.relatedArtifact.where(type='derived-from').resource | EvidenceVariable.relatedArtifact.where(type='derived-from').resource | Library.relatedArtifact.where(type='derived-from').resource | Measure.relatedArtifact.where(type='derived-from').resource | NamingSystem.relatedArtifact.where(type='derived-from').resource | PlanDefinition.relatedArtifact.where(type='derived-from').resource | ValueSet.relatedArtifact.where(type='derived-from').resource</b><br>
8706   * </p>
8707   */
8708  @SearchParamDefinition(name="derived-from", path="ActivityDefinition.relatedArtifact.where(type='derived-from').resource | CodeSystem.relatedArtifact.where(type='derived-from').resource | ConceptMap.relatedArtifact.where(type='derived-from').resource | EventDefinition.relatedArtifact.where(type='derived-from').resource | EvidenceVariable.relatedArtifact.where(type='derived-from').resource | Library.relatedArtifact.where(type='derived-from').resource | Measure.relatedArtifact.where(type='derived-from').resource | NamingSystem.relatedArtifact.where(type='derived-from').resource | PlanDefinition.relatedArtifact.where(type='derived-from').resource | ValueSet.relatedArtifact.where(type='derived-from').resource", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): What resource is being referenced\r\n* [CodeSystem](codesystem.html): A resource that the CodeSystem is derived from\r\n* [ConceptMap](conceptmap.html): A resource that the ConceptMap is derived from\r\n* [EventDefinition](eventdefinition.html): What resource is being referenced\r\n* [EvidenceVariable](evidencevariable.html): What resource is being referenced\r\n* [Library](library.html): What resource is being referenced\r\n* [Measure](measure.html): What resource is being referenced\r\n* [NamingSystem](namingsystem.html): A resource that the NamingSystem is derived from\r\n* [PlanDefinition](plandefinition.html): What resource is being referenced\r\n* [ValueSet](valueset.html): A resource that the ValueSet is derived from\r\n", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
8709  public static final String SP_DERIVED_FROM = "derived-from";
8710 /**
8711   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
8712   * <p>
8713   * Description: <b>Multiple Resources: 
8714
8715* [ActivityDefinition](activitydefinition.html): What resource is being referenced
8716* [CodeSystem](codesystem.html): A resource that the CodeSystem is derived from
8717* [ConceptMap](conceptmap.html): A resource that the ConceptMap is derived from
8718* [EventDefinition](eventdefinition.html): What resource is being referenced
8719* [EvidenceVariable](evidencevariable.html): What resource is being referenced
8720* [Library](library.html): What resource is being referenced
8721* [Measure](measure.html): What resource is being referenced
8722* [NamingSystem](namingsystem.html): A resource that the NamingSystem is derived from
8723* [PlanDefinition](plandefinition.html): What resource is being referenced
8724* [ValueSet](valueset.html): A resource that the ValueSet is derived from
8725</b><br>
8726   * Type: <b>reference</b><br>
8727   * Path: <b>ActivityDefinition.relatedArtifact.where(type='derived-from').resource | CodeSystem.relatedArtifact.where(type='derived-from').resource | ConceptMap.relatedArtifact.where(type='derived-from').resource | EventDefinition.relatedArtifact.where(type='derived-from').resource | EvidenceVariable.relatedArtifact.where(type='derived-from').resource | Library.relatedArtifact.where(type='derived-from').resource | Measure.relatedArtifact.where(type='derived-from').resource | NamingSystem.relatedArtifact.where(type='derived-from').resource | PlanDefinition.relatedArtifact.where(type='derived-from').resource | ValueSet.relatedArtifact.where(type='derived-from').resource</b><br>
8728   * </p>
8729   */
8730  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
8731
8732/**
8733   * Constant for fluent queries to be used to add include statements. Specifies
8734   * the path value of "<b>ValueSet:derived-from</b>".
8735   */
8736  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("ValueSet:derived-from").toLocked();
8737
8738 /**
8739   * Search parameter: <b>effective</b>
8740   * <p>
8741   * Description: <b>Multiple Resources: 
8742
8743* [ActivityDefinition](activitydefinition.html): The time during which the activity definition is intended to be in use
8744* [ChargeItemDefinition](chargeitemdefinition.html): The time during which the charge item definition is intended to be in use
8745* [Citation](citation.html): The time during which the citation is intended to be in use
8746* [CodeSystem](codesystem.html): The time during which the CodeSystem is intended to be in use
8747* [ConceptMap](conceptmap.html): The time during which the ConceptMap is intended to be in use
8748* [EventDefinition](eventdefinition.html): The time during which the event definition is intended to be in use
8749* [Library](library.html): The time during which the library is intended to be in use
8750* [Measure](measure.html): The time during which the measure is intended to be in use
8751* [NamingSystem](namingsystem.html): The time during which the NamingSystem is intended to be in use
8752* [PlanDefinition](plandefinition.html): The time during which the plan definition is intended to be in use
8753* [Questionnaire](questionnaire.html): The time during which the questionnaire is intended to be in use
8754* [ValueSet](valueset.html): The time during which the ValueSet is intended to be in use
8755</b><br>
8756   * Type: <b>date</b><br>
8757   * Path: <b>ActivityDefinition.effectivePeriod | ChargeItemDefinition.applicability.effectivePeriod | Citation.effectivePeriod | CodeSystem.effectivePeriod | ConceptMap.effectivePeriod | EventDefinition.effectivePeriod | Library.effectivePeriod | Measure.effectivePeriod | NamingSystem.effectivePeriod | PlanDefinition.effectivePeriod | Questionnaire.effectivePeriod | ValueSet.effectivePeriod</b><br>
8758   * </p>
8759   */
8760  @SearchParamDefinition(name="effective", path="ActivityDefinition.effectivePeriod | ChargeItemDefinition.applicability.effectivePeriod | Citation.effectivePeriod | CodeSystem.effectivePeriod | ConceptMap.effectivePeriod | EventDefinition.effectivePeriod | Library.effectivePeriod | Measure.effectivePeriod | NamingSystem.effectivePeriod | PlanDefinition.effectivePeriod | Questionnaire.effectivePeriod | ValueSet.effectivePeriod", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): The time during which the activity definition is intended to be in use\r\n* [ChargeItemDefinition](chargeitemdefinition.html): The time during which the charge item definition is intended to be in use\r\n* [Citation](citation.html): The time during which the citation is intended to be in use\r\n* [CodeSystem](codesystem.html): The time during which the CodeSystem is intended to be in use\r\n* [ConceptMap](conceptmap.html): The time during which the ConceptMap is intended to be in use\r\n* [EventDefinition](eventdefinition.html): The time during which the event definition is intended to be in use\r\n* [Library](library.html): The time during which the library is intended to be in use\r\n* [Measure](measure.html): The time during which the measure is intended to be in use\r\n* [NamingSystem](namingsystem.html): The time during which the NamingSystem is intended to be in use\r\n* [PlanDefinition](plandefinition.html): The time during which the plan definition is intended to be in use\r\n* [Questionnaire](questionnaire.html): The time during which the questionnaire is intended to be in use\r\n* [ValueSet](valueset.html): The time during which the ValueSet is intended to be in use\r\n", type="date" )
8761  public static final String SP_EFFECTIVE = "effective";
8762 /**
8763   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
8764   * <p>
8765   * Description: <b>Multiple Resources: 
8766
8767* [ActivityDefinition](activitydefinition.html): The time during which the activity definition is intended to be in use
8768* [ChargeItemDefinition](chargeitemdefinition.html): The time during which the charge item definition is intended to be in use
8769* [Citation](citation.html): The time during which the citation is intended to be in use
8770* [CodeSystem](codesystem.html): The time during which the CodeSystem is intended to be in use
8771* [ConceptMap](conceptmap.html): The time during which the ConceptMap is intended to be in use
8772* [EventDefinition](eventdefinition.html): The time during which the event definition is intended to be in use
8773* [Library](library.html): The time during which the library is intended to be in use
8774* [Measure](measure.html): The time during which the measure is intended to be in use
8775* [NamingSystem](namingsystem.html): The time during which the NamingSystem is intended to be in use
8776* [PlanDefinition](plandefinition.html): The time during which the plan definition is intended to be in use
8777* [Questionnaire](questionnaire.html): The time during which the questionnaire is intended to be in use
8778* [ValueSet](valueset.html): The time during which the ValueSet is intended to be in use
8779</b><br>
8780   * Type: <b>date</b><br>
8781   * Path: <b>ActivityDefinition.effectivePeriod | ChargeItemDefinition.applicability.effectivePeriod | Citation.effectivePeriod | CodeSystem.effectivePeriod | ConceptMap.effectivePeriod | EventDefinition.effectivePeriod | Library.effectivePeriod | Measure.effectivePeriod | NamingSystem.effectivePeriod | PlanDefinition.effectivePeriod | Questionnaire.effectivePeriod | ValueSet.effectivePeriod</b><br>
8782   * </p>
8783   */
8784  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
8785
8786 /**
8787   * Search parameter: <b>predecessor</b>
8788   * <p>
8789   * Description: <b>Multiple Resources: 
8790
8791* [ActivityDefinition](activitydefinition.html): What resource is being referenced
8792* [CodeSystem](codesystem.html): The predecessor of the CodeSystem
8793* [ConceptMap](conceptmap.html): The predecessor of the ConceptMap
8794* [EventDefinition](eventdefinition.html): What resource is being referenced
8795* [EvidenceVariable](evidencevariable.html): What resource is being referenced
8796* [Library](library.html): What resource is being referenced
8797* [Measure](measure.html): What resource is being referenced
8798* [NamingSystem](namingsystem.html): The predecessor of the NamingSystem
8799* [PlanDefinition](plandefinition.html): What resource is being referenced
8800* [ValueSet](valueset.html): The predecessor of the ValueSet
8801</b><br>
8802   * Type: <b>reference</b><br>
8803   * Path: <b>ActivityDefinition.relatedArtifact.where(type='predecessor').resource | CodeSystem.relatedArtifact.where(type='predecessor').resource | ConceptMap.relatedArtifact.where(type='predecessor').resource | EventDefinition.relatedArtifact.where(type='predecessor').resource | EvidenceVariable.relatedArtifact.where(type='predecessor').resource | Library.relatedArtifact.where(type='predecessor').resource | Measure.relatedArtifact.where(type='predecessor').resource | NamingSystem.relatedArtifact.where(type='predecessor').resource | PlanDefinition.relatedArtifact.where(type='predecessor').resource | ValueSet.relatedArtifact.where(type='predecessor').resource</b><br>
8804   * </p>
8805   */
8806  @SearchParamDefinition(name="predecessor", path="ActivityDefinition.relatedArtifact.where(type='predecessor').resource | CodeSystem.relatedArtifact.where(type='predecessor').resource | ConceptMap.relatedArtifact.where(type='predecessor').resource | EventDefinition.relatedArtifact.where(type='predecessor').resource | EvidenceVariable.relatedArtifact.where(type='predecessor').resource | Library.relatedArtifact.where(type='predecessor').resource | Measure.relatedArtifact.where(type='predecessor').resource | NamingSystem.relatedArtifact.where(type='predecessor').resource | PlanDefinition.relatedArtifact.where(type='predecessor').resource | ValueSet.relatedArtifact.where(type='predecessor').resource", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): What resource is being referenced\r\n* [CodeSystem](codesystem.html): The predecessor of the CodeSystem\r\n* [ConceptMap](conceptmap.html): The predecessor of the ConceptMap\r\n* [EventDefinition](eventdefinition.html): What resource is being referenced\r\n* [EvidenceVariable](evidencevariable.html): What resource is being referenced\r\n* [Library](library.html): What resource is being referenced\r\n* [Measure](measure.html): What resource is being referenced\r\n* [NamingSystem](namingsystem.html): The predecessor of the NamingSystem\r\n* [PlanDefinition](plandefinition.html): What resource is being referenced\r\n* [ValueSet](valueset.html): The predecessor of the ValueSet\r\n", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
8807  public static final String SP_PREDECESSOR = "predecessor";
8808 /**
8809   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
8810   * <p>
8811   * Description: <b>Multiple Resources: 
8812
8813* [ActivityDefinition](activitydefinition.html): What resource is being referenced
8814* [CodeSystem](codesystem.html): The predecessor of the CodeSystem
8815* [ConceptMap](conceptmap.html): The predecessor of the ConceptMap
8816* [EventDefinition](eventdefinition.html): What resource is being referenced
8817* [EvidenceVariable](evidencevariable.html): What resource is being referenced
8818* [Library](library.html): What resource is being referenced
8819* [Measure](measure.html): What resource is being referenced
8820* [NamingSystem](namingsystem.html): The predecessor of the NamingSystem
8821* [PlanDefinition](plandefinition.html): What resource is being referenced
8822* [ValueSet](valueset.html): The predecessor of the ValueSet
8823</b><br>
8824   * Type: <b>reference</b><br>
8825   * Path: <b>ActivityDefinition.relatedArtifact.where(type='predecessor').resource | CodeSystem.relatedArtifact.where(type='predecessor').resource | ConceptMap.relatedArtifact.where(type='predecessor').resource | EventDefinition.relatedArtifact.where(type='predecessor').resource | EvidenceVariable.relatedArtifact.where(type='predecessor').resource | Library.relatedArtifact.where(type='predecessor').resource | Measure.relatedArtifact.where(type='predecessor').resource | NamingSystem.relatedArtifact.where(type='predecessor').resource | PlanDefinition.relatedArtifact.where(type='predecessor').resource | ValueSet.relatedArtifact.where(type='predecessor').resource</b><br>
8826   * </p>
8827   */
8828  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
8829
8830/**
8831   * Constant for fluent queries to be used to add include statements. Specifies
8832   * the path value of "<b>ValueSet:predecessor</b>".
8833   */
8834  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("ValueSet:predecessor").toLocked();
8835
8836 /**
8837   * Search parameter: <b>topic</b>
8838   * <p>
8839   * Description: <b>Multiple Resources: 
8840
8841* [ActivityDefinition](activitydefinition.html): Topics associated with the module
8842* [CodeSystem](codesystem.html): Topics associated with the CodeSystem
8843* [ConceptMap](conceptmap.html): Topics associated with the ConceptMap
8844* [EventDefinition](eventdefinition.html): Topics associated with the module
8845* [EvidenceVariable](evidencevariable.html): Topics associated with the EvidenceVariable
8846* [Library](library.html): Topics associated with the module
8847* [Measure](measure.html): Topics associated with the measure
8848* [NamingSystem](namingsystem.html): Topics associated with the NamingSystem
8849* [PlanDefinition](plandefinition.html): Topics associated with the module
8850* [ValueSet](valueset.html): Topics associated with the ValueSet
8851</b><br>
8852   * Type: <b>token</b><br>
8853   * Path: <b>ActivityDefinition.topic | CodeSystem.topic | ConceptMap.topic | EventDefinition.topic | Library.topic | Measure.topic | NamingSystem.topic | PlanDefinition.topic | ValueSet.topic</b><br>
8854   * </p>
8855   */
8856  @SearchParamDefinition(name="topic", path="ActivityDefinition.topic | CodeSystem.topic | ConceptMap.topic | EventDefinition.topic | Library.topic | Measure.topic | NamingSystem.topic | PlanDefinition.topic | ValueSet.topic", description="Multiple Resources: \r\n\r\n* [ActivityDefinition](activitydefinition.html): Topics associated with the module\r\n* [CodeSystem](codesystem.html): Topics associated with the CodeSystem\r\n* [ConceptMap](conceptmap.html): Topics associated with the ConceptMap\r\n* [EventDefinition](eventdefinition.html): Topics associated with the module\r\n* [EvidenceVariable](evidencevariable.html): Topics associated with the EvidenceVariable\r\n* [Library](library.html): Topics associated with the module\r\n* [Measure](measure.html): Topics associated with the measure\r\n* [NamingSystem](namingsystem.html): Topics associated with the NamingSystem\r\n* [PlanDefinition](plandefinition.html): Topics associated with the module\r\n* [ValueSet](valueset.html): Topics associated with the ValueSet\r\n", type="token" )
8857  public static final String SP_TOPIC = "topic";
8858 /**
8859   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
8860   * <p>
8861   * Description: <b>Multiple Resources: 
8862
8863* [ActivityDefinition](activitydefinition.html): Topics associated with the module
8864* [CodeSystem](codesystem.html): Topics associated with the CodeSystem
8865* [ConceptMap](conceptmap.html): Topics associated with the ConceptMap
8866* [EventDefinition](eventdefinition.html): Topics associated with the module
8867* [EvidenceVariable](evidencevariable.html): Topics associated with the EvidenceVariable
8868* [Library](library.html): Topics associated with the module
8869* [Measure](measure.html): Topics associated with the measure
8870* [NamingSystem](namingsystem.html): Topics associated with the NamingSystem
8871* [PlanDefinition](plandefinition.html): Topics associated with the module
8872* [ValueSet](valueset.html): Topics associated with the ValueSet
8873</b><br>
8874   * Type: <b>token</b><br>
8875   * Path: <b>ActivityDefinition.topic | CodeSystem.topic | ConceptMap.topic | EventDefinition.topic | Library.topic | Measure.topic | NamingSystem.topic | PlanDefinition.topic | ValueSet.topic</b><br>
8876   * </p>
8877   */
8878  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
8879
8880 /**
8881   * Search parameter: <b>code</b>
8882   * <p>
8883   * Description: <b>This special parameter searches for codes in the value set. See additional notes on the ValueSet resource</b><br>
8884   * Type: <b>token</b><br>
8885   * Path: <b>ValueSet.expansion.contains.code | ValueSet.compose.include.concept.code</b><br>
8886   * </p>
8887   */
8888  @SearchParamDefinition(name="code", path="ValueSet.expansion.contains.code | ValueSet.compose.include.concept.code", description="This special parameter searches for codes in the value set. See additional notes on the ValueSet resource", type="token" )
8889  public static final String SP_CODE = "code";
8890 /**
8891   * <b>Fluent Client</b> search parameter constant for <b>code</b>
8892   * <p>
8893   * Description: <b>This special parameter searches for codes in the value set. See additional notes on the ValueSet resource</b><br>
8894   * Type: <b>token</b><br>
8895   * Path: <b>ValueSet.expansion.contains.code | ValueSet.compose.include.concept.code</b><br>
8896   * </p>
8897   */
8898  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
8899
8900 /**
8901   * Search parameter: <b>expansion</b>
8902   * <p>
8903   * Description: <b>Identifies the value set expansion (business identifier)</b><br>
8904   * Type: <b>uri</b><br>
8905   * Path: <b>ValueSet.expansion.identifier</b><br>
8906   * </p>
8907   */
8908  @SearchParamDefinition(name="expansion", path="ValueSet.expansion.identifier", description="Identifies the value set expansion (business identifier)", type="uri" )
8909  public static final String SP_EXPANSION = "expansion";
8910 /**
8911   * <b>Fluent Client</b> search parameter constant for <b>expansion</b>
8912   * <p>
8913   * Description: <b>Identifies the value set expansion (business identifier)</b><br>
8914   * Type: <b>uri</b><br>
8915   * Path: <b>ValueSet.expansion.identifier</b><br>
8916   * </p>
8917   */
8918  public static final ca.uhn.fhir.rest.gclient.UriClientParam EXPANSION = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_EXPANSION);
8919
8920 /**
8921   * Search parameter: <b>reference</b>
8922   * <p>
8923   * Description: <b>A code system included or excluded in the value set or an imported value set</b><br>
8924   * Type: <b>uri</b><br>
8925   * Path: <b>ValueSet.compose.include.system</b><br>
8926   * </p>
8927   */
8928  @SearchParamDefinition(name="reference", path="ValueSet.compose.include.system", description="A code system included or excluded in the value set or an imported value set", type="uri" )
8929  public static final String SP_REFERENCE = "reference";
8930 /**
8931   * <b>Fluent Client</b> search parameter constant for <b>reference</b>
8932   * <p>
8933   * Description: <b>A code system included or excluded in the value set or an imported value set</b><br>
8934   * Type: <b>uri</b><br>
8935   * Path: <b>ValueSet.compose.include.system</b><br>
8936   * </p>
8937   */
8938  public static final ca.uhn.fhir.rest.gclient.UriClientParam REFERENCE = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_REFERENCE);
8939
8940 /**
8941   * Search parameter: <b>author</b>
8942   * <p>
8943   * Description: <b>Optional Extensions Element</b><br>
8944   * Type: <b>string</b><br>
8945   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-author').value</b><br>
8946   * </p>
8947   */
8948  @SearchParamDefinition(name="author", path="CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-author').value", description="Optional Extensions Element", type="string" )
8949  public static final String SP_AUTHOR = "author";
8950 /**
8951   * <b>Fluent Client</b> search parameter constant for <b>author</b>
8952   * <p>
8953   * Description: <b>Optional Extensions Element</b><br>
8954   * Type: <b>string</b><br>
8955   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-author').value</b><br>
8956   * </p>
8957   */
8958  public static final ca.uhn.fhir.rest.gclient.StringClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_AUTHOR);
8959
8960 /**
8961   * Search parameter: <b>end</b>
8962   * <p>
8963   * Description: <b>Optional Extensions Element</b><br>
8964   * Type: <b>date</b><br>
8965   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-expirationDate').value</b><br>
8966   * </p>
8967   */
8968  @SearchParamDefinition(name="end", path="CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-expirationDate').value", description="Optional Extensions Element", type="date" )
8969  public static final String SP_END = "end";
8970 /**
8971   * <b>Fluent Client</b> search parameter constant for <b>end</b>
8972   * <p>
8973   * Description: <b>Optional Extensions Element</b><br>
8974   * Type: <b>date</b><br>
8975   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-expirationDate').value</b><br>
8976   * </p>
8977   */
8978  public static final ca.uhn.fhir.rest.gclient.DateClientParam END = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_END);
8979
8980 /**
8981   * Search parameter: <b>keyword</b>
8982   * <p>
8983   * Description: <b>Optional Extensions Element</b><br>
8984   * Type: <b>string</b><br>
8985   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-keyWord').value</b><br>
8986   * </p>
8987   */
8988  @SearchParamDefinition(name="keyword", path="CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-keyWord').value", description="Optional Extensions Element", type="string" )
8989  public static final String SP_KEYWORD = "keyword";
8990 /**
8991   * <b>Fluent Client</b> search parameter constant for <b>keyword</b>
8992   * <p>
8993   * Description: <b>Optional Extensions Element</b><br>
8994   * Type: <b>string</b><br>
8995   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-keyWord').value</b><br>
8996   * </p>
8997   */
8998  public static final ca.uhn.fhir.rest.gclient.StringClientParam KEYWORD = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_KEYWORD);
8999
9000 /**
9001   * Search parameter: <b>workflow</b>
9002   * <p>
9003   * Description: <b>Optional Extensions Element</b><br>
9004   * Type: <b>token</b><br>
9005   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-workflowStatus').value</b><br>
9006   * </p>
9007   */
9008  @SearchParamDefinition(name="workflow", path="CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-workflowStatus').value", description="Optional Extensions Element", type="token" )
9009  public static final String SP_WORKFLOW = "workflow";
9010 /**
9011   * <b>Fluent Client</b> search parameter constant for <b>workflow</b>
9012   * <p>
9013   * Description: <b>Optional Extensions Element</b><br>
9014   * Type: <b>token</b><br>
9015   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/valueset-workflowStatus').value</b><br>
9016   * </p>
9017   */
9018  public static final ca.uhn.fhir.rest.gclient.TokenClientParam WORKFLOW = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_WORKFLOW);
9019
9020
9021}
9022