001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Tue, Dec 28, 2021 07:16+1100 for FHIR v5.0.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * The CodeSystem resource is used to declare the existence of and describe a code system or code system supplement and its key properties, and optionally define a part or all of its content.
052 */
053@ResourceDef(name="CodeSystem", profile="http://hl7.org/fhir/StructureDefinition/CodeSystem")
054public class CodeSystem extends CanonicalResource {
055
056    public enum CodeSystemContentMode {
057        /**
058         * None of the concepts defined by the code system are included in the code system resource.
059         */
060        NOTPRESENT, 
061        /**
062         * A few representative concepts are included in the code system resource. There is no useful intent in the subset choice and there's no process to make it workable: it's not intended to be workable.
063         */
064        EXAMPLE, 
065        /**
066         * A subset of the code system concepts are included in the code system resource. This is a curated subset released for a specific purpose under the governance of the code system steward, and that the intent, bounds and consequences of the fragmentation are clearly defined in the fragment or the code system documentation. Fragments are also known as partitions.
067         */
068        FRAGMENT, 
069        /**
070         * All the concepts defined by the code system are included in the code system resource.
071         */
072        COMPLETE, 
073        /**
074         * The resource doesn't define any new concepts; it just provides additional designations and properties to another code system.
075         */
076        SUPPLEMENT, 
077        /**
078         * added to help the parsers with the generic types
079         */
080        NULL;
081        public static CodeSystemContentMode fromCode(String codeString) throws FHIRException {
082            if (codeString == null || "".equals(codeString))
083                return null;
084        if ("not-present".equals(codeString))
085          return NOTPRESENT;
086        if ("example".equals(codeString))
087          return EXAMPLE;
088        if ("fragment".equals(codeString))
089          return FRAGMENT;
090        if ("complete".equals(codeString))
091          return COMPLETE;
092        if ("supplement".equals(codeString))
093          return SUPPLEMENT;
094        if (Configuration.isAcceptInvalidEnums())
095          return null;
096        else
097          throw new FHIRException("Unknown CodeSystemContentMode code '"+codeString+"'");
098        }
099        public String toCode() {
100          switch (this) {
101            case NOTPRESENT: return "not-present";
102            case EXAMPLE: return "example";
103            case FRAGMENT: return "fragment";
104            case COMPLETE: return "complete";
105            case SUPPLEMENT: return "supplement";
106            default: return "?";
107          }
108        }
109        public String getSystem() {
110          switch (this) {
111            case NOTPRESENT: return "http://hl7.org/fhir/codesystem-content-mode";
112            case EXAMPLE: return "http://hl7.org/fhir/codesystem-content-mode";
113            case FRAGMENT: return "http://hl7.org/fhir/codesystem-content-mode";
114            case COMPLETE: return "http://hl7.org/fhir/codesystem-content-mode";
115            case SUPPLEMENT: return "http://hl7.org/fhir/codesystem-content-mode";
116            default: return "?";
117          }
118        }
119        public String getDefinition() {
120          switch (this) {
121            case NOTPRESENT: return "None of the concepts defined by the code system are included in the code system resource.";
122            case EXAMPLE: return "A few representative concepts are included in the code system resource. There is no useful intent in the subset choice and there's no process to make it workable: it's not intended to be workable.";
123            case FRAGMENT: return "A subset of the code system concepts are included in the code system resource. This is a curated subset released for a specific purpose under the governance of the code system steward, and that the intent, bounds and consequences of the fragmentation are clearly defined in the fragment or the code system documentation. Fragments are also known as partitions.";
124            case COMPLETE: return "All the concepts defined by the code system are included in the code system resource.";
125            case SUPPLEMENT: return "The resource doesn't define any new concepts; it just provides additional designations and properties to another code system.";
126            default: return "?";
127          }
128        }
129        public String getDisplay() {
130          switch (this) {
131            case NOTPRESENT: return "Not Present";
132            case EXAMPLE: return "Example";
133            case FRAGMENT: return "Fragment";
134            case COMPLETE: return "Complete";
135            case SUPPLEMENT: return "Supplement";
136            default: return "?";
137          }
138        }
139    }
140
141  public static class CodeSystemContentModeEnumFactory implements EnumFactory<CodeSystemContentMode> {
142    public CodeSystemContentMode fromCode(String codeString) throws IllegalArgumentException {
143      if (codeString == null || "".equals(codeString))
144            if (codeString == null || "".equals(codeString))
145                return null;
146        if ("not-present".equals(codeString))
147          return CodeSystemContentMode.NOTPRESENT;
148        if ("example".equals(codeString))
149          return CodeSystemContentMode.EXAMPLE;
150        if ("fragment".equals(codeString))
151          return CodeSystemContentMode.FRAGMENT;
152        if ("complete".equals(codeString))
153          return CodeSystemContentMode.COMPLETE;
154        if ("supplement".equals(codeString))
155          return CodeSystemContentMode.SUPPLEMENT;
156        throw new IllegalArgumentException("Unknown CodeSystemContentMode code '"+codeString+"'");
157        }
158        public Enumeration<CodeSystemContentMode> fromType(Base code) throws FHIRException {
159          if (code == null)
160            return null;
161          if (code.isEmpty())
162            return new Enumeration<CodeSystemContentMode>(this);
163          String codeString = ((PrimitiveType) code).asStringValue();
164          if (codeString == null || "".equals(codeString))
165            return null;
166        if ("not-present".equals(codeString))
167          return new Enumeration<CodeSystemContentMode>(this, CodeSystemContentMode.NOTPRESENT);
168        if ("example".equals(codeString))
169          return new Enumeration<CodeSystemContentMode>(this, CodeSystemContentMode.EXAMPLE);
170        if ("fragment".equals(codeString))
171          return new Enumeration<CodeSystemContentMode>(this, CodeSystemContentMode.FRAGMENT);
172        if ("complete".equals(codeString))
173          return new Enumeration<CodeSystemContentMode>(this, CodeSystemContentMode.COMPLETE);
174        if ("supplement".equals(codeString))
175          return new Enumeration<CodeSystemContentMode>(this, CodeSystemContentMode.SUPPLEMENT);
176        throw new FHIRException("Unknown CodeSystemContentMode code '"+codeString+"'");
177        }
178    public String toCode(CodeSystemContentMode code) {
179      if (code == CodeSystemContentMode.NOTPRESENT)
180        return "not-present";
181      if (code == CodeSystemContentMode.EXAMPLE)
182        return "example";
183      if (code == CodeSystemContentMode.FRAGMENT)
184        return "fragment";
185      if (code == CodeSystemContentMode.COMPLETE)
186        return "complete";
187      if (code == CodeSystemContentMode.SUPPLEMENT)
188        return "supplement";
189      return "?";
190      }
191    public String toSystem(CodeSystemContentMode code) {
192      return code.getSystem();
193      }
194    }
195
196    public enum CodeSystemHierarchyMeaning {
197        /**
198         * No particular relationship between the concepts can be assumed, except what can be determined by inspection of the definitions of the elements (possible reasons to use this: importing from a source where this is not defined, or where various parts of the hierarchy have different meanings).
199         */
200        GROUPEDBY, 
201        /**
202         * A hierarchy where the child concepts have an IS-A relationship with the parents - that is, all the properties of the parent are also true for its child concepts. Not that is-a is a property of the concepts, so additional subsumption relationships may be defined using properties or the [subsumes](extension-codesystem-subsumes.html) extension.
203         */
204        ISA, 
205        /**
206         * Child elements list the individual parts of a composite whole (e.g. body site).
207         */
208        PARTOF, 
209        /**
210         * Child concepts in the hierarchy may have only one parent, and there is a presumption that the code system is a \"closed world\" meaning all things must be in the hierarchy. This results in concepts such as \"not otherwise classified.\".
211         */
212        CLASSIFIEDWITH, 
213        /**
214         * added to help the parsers with the generic types
215         */
216        NULL;
217        public static CodeSystemHierarchyMeaning fromCode(String codeString) throws FHIRException {
218            if (codeString == null || "".equals(codeString))
219                return null;
220        if ("grouped-by".equals(codeString))
221          return GROUPEDBY;
222        if ("is-a".equals(codeString))
223          return ISA;
224        if ("part-of".equals(codeString))
225          return PARTOF;
226        if ("classified-with".equals(codeString))
227          return CLASSIFIEDWITH;
228        if (Configuration.isAcceptInvalidEnums())
229          return null;
230        else
231          throw new FHIRException("Unknown CodeSystemHierarchyMeaning code '"+codeString+"'");
232        }
233        public String toCode() {
234          switch (this) {
235            case GROUPEDBY: return "grouped-by";
236            case ISA: return "is-a";
237            case PARTOF: return "part-of";
238            case CLASSIFIEDWITH: return "classified-with";
239            default: return "?";
240          }
241        }
242        public String getSystem() {
243          switch (this) {
244            case GROUPEDBY: return "http://hl7.org/fhir/codesystem-hierarchy-meaning";
245            case ISA: return "http://hl7.org/fhir/codesystem-hierarchy-meaning";
246            case PARTOF: return "http://hl7.org/fhir/codesystem-hierarchy-meaning";
247            case CLASSIFIEDWITH: return "http://hl7.org/fhir/codesystem-hierarchy-meaning";
248            default: return "?";
249          }
250        }
251        public String getDefinition() {
252          switch (this) {
253            case GROUPEDBY: return "No particular relationship between the concepts can be assumed, except what can be determined by inspection of the definitions of the elements (possible reasons to use this: importing from a source where this is not defined, or where various parts of the hierarchy have different meanings).";
254            case ISA: return "A hierarchy where the child concepts have an IS-A relationship with the parents - that is, all the properties of the parent are also true for its child concepts. Not that is-a is a property of the concepts, so additional subsumption relationships may be defined using properties or the [subsumes](extension-codesystem-subsumes.html) extension.";
255            case PARTOF: return "Child elements list the individual parts of a composite whole (e.g. body site).";
256            case CLASSIFIEDWITH: return "Child concepts in the hierarchy may have only one parent, and there is a presumption that the code system is a \"closed world\" meaning all things must be in the hierarchy. This results in concepts such as \"not otherwise classified.\".";
257            default: return "?";
258          }
259        }
260        public String getDisplay() {
261          switch (this) {
262            case GROUPEDBY: return "Grouped By";
263            case ISA: return "Is-A";
264            case PARTOF: return "Part Of";
265            case CLASSIFIEDWITH: return "Classified With";
266            default: return "?";
267          }
268        }
269    }
270
271  public static class CodeSystemHierarchyMeaningEnumFactory implements EnumFactory<CodeSystemHierarchyMeaning> {
272    public CodeSystemHierarchyMeaning fromCode(String codeString) throws IllegalArgumentException {
273      if (codeString == null || "".equals(codeString))
274            if (codeString == null || "".equals(codeString))
275                return null;
276        if ("grouped-by".equals(codeString))
277          return CodeSystemHierarchyMeaning.GROUPEDBY;
278        if ("is-a".equals(codeString))
279          return CodeSystemHierarchyMeaning.ISA;
280        if ("part-of".equals(codeString))
281          return CodeSystemHierarchyMeaning.PARTOF;
282        if ("classified-with".equals(codeString))
283          return CodeSystemHierarchyMeaning.CLASSIFIEDWITH;
284        throw new IllegalArgumentException("Unknown CodeSystemHierarchyMeaning code '"+codeString+"'");
285        }
286        public Enumeration<CodeSystemHierarchyMeaning> fromType(Base code) throws FHIRException {
287          if (code == null)
288            return null;
289          if (code.isEmpty())
290            return new Enumeration<CodeSystemHierarchyMeaning>(this);
291          String codeString = ((PrimitiveType) code).asStringValue();
292          if (codeString == null || "".equals(codeString))
293            return null;
294        if ("grouped-by".equals(codeString))
295          return new Enumeration<CodeSystemHierarchyMeaning>(this, CodeSystemHierarchyMeaning.GROUPEDBY);
296        if ("is-a".equals(codeString))
297          return new Enumeration<CodeSystemHierarchyMeaning>(this, CodeSystemHierarchyMeaning.ISA);
298        if ("part-of".equals(codeString))
299          return new Enumeration<CodeSystemHierarchyMeaning>(this, CodeSystemHierarchyMeaning.PARTOF);
300        if ("classified-with".equals(codeString))
301          return new Enumeration<CodeSystemHierarchyMeaning>(this, CodeSystemHierarchyMeaning.CLASSIFIEDWITH);
302        throw new FHIRException("Unknown CodeSystemHierarchyMeaning code '"+codeString+"'");
303        }
304    public String toCode(CodeSystemHierarchyMeaning code) {
305      if (code == CodeSystemHierarchyMeaning.GROUPEDBY)
306        return "grouped-by";
307      if (code == CodeSystemHierarchyMeaning.ISA)
308        return "is-a";
309      if (code == CodeSystemHierarchyMeaning.PARTOF)
310        return "part-of";
311      if (code == CodeSystemHierarchyMeaning.CLASSIFIEDWITH)
312        return "classified-with";
313      return "?";
314      }
315    public String toSystem(CodeSystemHierarchyMeaning code) {
316      return code.getSystem();
317      }
318    }
319
320    public enum PropertyType {
321        /**
322         * The property value is a code that identifies a concept defined in the code system.
323         */
324        CODE, 
325        /**
326         * The property  value is a code defined in an external code system. This may be used for translations, but is not the intent.
327         */
328        CODING, 
329        /**
330         * The property value is a string.
331         */
332        STRING, 
333        /**
334         * The property value is a string (often used to assign ranking values to concepts for supporting score assessments).
335         */
336        INTEGER, 
337        /**
338         * The property value is a boolean true | false.
339         */
340        BOOLEAN, 
341        /**
342         * The property is a date or a date + time.
343         */
344        DATETIME, 
345        /**
346         * The property value is a decimal number.
347         */
348        DECIMAL, 
349        /**
350         * added to help the parsers with the generic types
351         */
352        NULL;
353        public static PropertyType fromCode(String codeString) throws FHIRException {
354            if (codeString == null || "".equals(codeString))
355                return null;
356        if ("code".equals(codeString))
357          return CODE;
358        if ("Coding".equals(codeString))
359          return CODING;
360        if ("string".equals(codeString))
361          return STRING;
362        if ("integer".equals(codeString))
363          return INTEGER;
364        if ("boolean".equals(codeString))
365          return BOOLEAN;
366        if ("dateTime".equals(codeString))
367          return DATETIME;
368        if ("decimal".equals(codeString))
369          return DECIMAL;
370        if (Configuration.isAcceptInvalidEnums())
371          return null;
372        else
373          throw new FHIRException("Unknown PropertyType code '"+codeString+"'");
374        }
375        public String toCode() {
376          switch (this) {
377            case CODE: return "code";
378            case CODING: return "Coding";
379            case STRING: return "string";
380            case INTEGER: return "integer";
381            case BOOLEAN: return "boolean";
382            case DATETIME: return "dateTime";
383            case DECIMAL: return "decimal";
384            default: return "?";
385          }
386        }
387        public String getSystem() {
388          switch (this) {
389            case CODE: return "http://hl7.org/fhir/concept-property-type";
390            case CODING: return "http://hl7.org/fhir/concept-property-type";
391            case STRING: return "http://hl7.org/fhir/concept-property-type";
392            case INTEGER: return "http://hl7.org/fhir/concept-property-type";
393            case BOOLEAN: return "http://hl7.org/fhir/concept-property-type";
394            case DATETIME: return "http://hl7.org/fhir/concept-property-type";
395            case DECIMAL: return "http://hl7.org/fhir/concept-property-type";
396            default: return "?";
397          }
398        }
399        public String getDefinition() {
400          switch (this) {
401            case CODE: return "The property value is a code that identifies a concept defined in the code system.";
402            case CODING: return "The property  value is a code defined in an external code system. This may be used for translations, but is not the intent.";
403            case STRING: return "The property value is a string.";
404            case INTEGER: return "The property value is a string (often used to assign ranking values to concepts for supporting score assessments).";
405            case BOOLEAN: return "The property value is a boolean true | false.";
406            case DATETIME: return "The property is a date or a date + time.";
407            case DECIMAL: return "The property value is a decimal number.";
408            default: return "?";
409          }
410        }
411        public String getDisplay() {
412          switch (this) {
413            case CODE: return "code (internal reference)";
414            case CODING: return "Coding (external reference)";
415            case STRING: return "string";
416            case INTEGER: return "integer";
417            case BOOLEAN: return "boolean";
418            case DATETIME: return "dateTime";
419            case DECIMAL: return "decimal";
420            default: return "?";
421          }
422        }
423    }
424
425  public static class PropertyTypeEnumFactory implements EnumFactory<PropertyType> {
426    public PropertyType fromCode(String codeString) throws IllegalArgumentException {
427      if (codeString == null || "".equals(codeString))
428            if (codeString == null || "".equals(codeString))
429                return null;
430        if ("code".equals(codeString))
431          return PropertyType.CODE;
432        if ("Coding".equals(codeString))
433          return PropertyType.CODING;
434        if ("string".equals(codeString))
435          return PropertyType.STRING;
436        if ("integer".equals(codeString))
437          return PropertyType.INTEGER;
438        if ("boolean".equals(codeString))
439          return PropertyType.BOOLEAN;
440        if ("dateTime".equals(codeString))
441          return PropertyType.DATETIME;
442        if ("decimal".equals(codeString))
443          return PropertyType.DECIMAL;
444        throw new IllegalArgumentException("Unknown PropertyType code '"+codeString+"'");
445        }
446        public Enumeration<PropertyType> fromType(Base code) throws FHIRException {
447          if (code == null)
448            return null;
449          if (code.isEmpty())
450            return new Enumeration<PropertyType>(this);
451          String codeString = ((PrimitiveType) code).asStringValue();
452          if (codeString == null || "".equals(codeString))
453            return null;
454        if ("code".equals(codeString))
455          return new Enumeration<PropertyType>(this, PropertyType.CODE);
456        if ("Coding".equals(codeString))
457          return new Enumeration<PropertyType>(this, PropertyType.CODING);
458        if ("string".equals(codeString))
459          return new Enumeration<PropertyType>(this, PropertyType.STRING);
460        if ("integer".equals(codeString))
461          return new Enumeration<PropertyType>(this, PropertyType.INTEGER);
462        if ("boolean".equals(codeString))
463          return new Enumeration<PropertyType>(this, PropertyType.BOOLEAN);
464        if ("dateTime".equals(codeString))
465          return new Enumeration<PropertyType>(this, PropertyType.DATETIME);
466        if ("decimal".equals(codeString))
467          return new Enumeration<PropertyType>(this, PropertyType.DECIMAL);
468        throw new FHIRException("Unknown PropertyType code '"+codeString+"'");
469        }
470    public String toCode(PropertyType code) {
471      if (code == PropertyType.CODE)
472        return "code";
473      if (code == PropertyType.CODING)
474        return "Coding";
475      if (code == PropertyType.STRING)
476        return "string";
477      if (code == PropertyType.INTEGER)
478        return "integer";
479      if (code == PropertyType.BOOLEAN)
480        return "boolean";
481      if (code == PropertyType.DATETIME)
482        return "dateTime";
483      if (code == PropertyType.DECIMAL)
484        return "decimal";
485      return "?";
486      }
487    public String toSystem(PropertyType code) {
488      return code.getSystem();
489      }
490    }
491
492    @Block()
493    public static class CodeSystemFilterComponent extends BackboneElement implements IBaseBackboneElement {
494        /**
495         * The code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter.
496         */
497        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
498        @Description(shortDefinition="Code that identifies the filter", formalDefinition="The code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter." )
499        protected CodeType code;
500
501        /**
502         * A description of how or why the filter is used.
503         */
504        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
505        @Description(shortDefinition="How or why the filter is used", formalDefinition="A description of how or why the filter is used." )
506        protected StringType description;
507
508        /**
509         * A list of operators that can be used with the filter.
510         */
511        @Child(name = "operator", type = {CodeType.class}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
512        @Description(shortDefinition="= | is-a | descendent-of | is-not-a | regex | in | not-in | generalizes | child-of | descendent-leaf | exists", formalDefinition="A list of operators that can be used with the filter." )
513        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/filter-operator")
514        protected List<Enumeration<FilterOperator>> operator;
515
516        /**
517         * A description of what the value for the filter should be.
518         */
519        @Child(name = "value", type = {StringType.class}, order=4, min=1, max=1, modifier=false, summary=true)
520        @Description(shortDefinition="What to use for the value", formalDefinition="A description of what the value for the filter should be." )
521        protected StringType value;
522
523        private static final long serialVersionUID = -1087409836L;
524
525    /**
526     * Constructor
527     */
528      public CodeSystemFilterComponent() {
529        super();
530      }
531
532    /**
533     * Constructor
534     */
535      public CodeSystemFilterComponent(String code, FilterOperator operator, String value) {
536        super();
537        this.setCode(code);
538        this.addOperator(operator);
539        this.setValue(value);
540      }
541
542        /**
543         * @return {@link #code} (The code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
544         */
545        public CodeType getCodeElement() { 
546          if (this.code == null)
547            if (Configuration.errorOnAutoCreate())
548              throw new Error("Attempt to auto-create CodeSystemFilterComponent.code");
549            else if (Configuration.doAutoCreate())
550              this.code = new CodeType(); // bb
551          return this.code;
552        }
553
554        public boolean hasCodeElement() { 
555          return this.code != null && !this.code.isEmpty();
556        }
557
558        public boolean hasCode() { 
559          return this.code != null && !this.code.isEmpty();
560        }
561
562        /**
563         * @param value {@link #code} (The code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
564         */
565        public CodeSystemFilterComponent setCodeElement(CodeType value) { 
566          this.code = value;
567          return this;
568        }
569
570        /**
571         * @return The code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter.
572         */
573        public String getCode() { 
574          return this.code == null ? null : this.code.getValue();
575        }
576
577        /**
578         * @param value The code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter.
579         */
580        public CodeSystemFilterComponent setCode(String value) { 
581            if (this.code == null)
582              this.code = new CodeType();
583            this.code.setValue(value);
584          return this;
585        }
586
587        /**
588         * @return {@link #description} (A description of how or why the filter is used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
589         */
590        public StringType getDescriptionElement() { 
591          if (this.description == null)
592            if (Configuration.errorOnAutoCreate())
593              throw new Error("Attempt to auto-create CodeSystemFilterComponent.description");
594            else if (Configuration.doAutoCreate())
595              this.description = new StringType(); // bb
596          return this.description;
597        }
598
599        public boolean hasDescriptionElement() { 
600          return this.description != null && !this.description.isEmpty();
601        }
602
603        public boolean hasDescription() { 
604          return this.description != null && !this.description.isEmpty();
605        }
606
607        /**
608         * @param value {@link #description} (A description of how or why the filter is used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
609         */
610        public CodeSystemFilterComponent setDescriptionElement(StringType value) { 
611          this.description = value;
612          return this;
613        }
614
615        /**
616         * @return A description of how or why the filter is used.
617         */
618        public String getDescription() { 
619          return this.description == null ? null : this.description.getValue();
620        }
621
622        /**
623         * @param value A description of how or why the filter is used.
624         */
625        public CodeSystemFilterComponent setDescription(String value) { 
626          if (Utilities.noString(value))
627            this.description = null;
628          else {
629            if (this.description == null)
630              this.description = new StringType();
631            this.description.setValue(value);
632          }
633          return this;
634        }
635
636        /**
637         * @return {@link #operator} (A list of operators that can be used with the filter.)
638         */
639        public List<Enumeration<FilterOperator>> getOperator() { 
640          if (this.operator == null)
641            this.operator = new ArrayList<Enumeration<FilterOperator>>();
642          return this.operator;
643        }
644
645        /**
646         * @return Returns a reference to <code>this</code> for easy method chaining
647         */
648        public CodeSystemFilterComponent setOperator(List<Enumeration<FilterOperator>> theOperator) { 
649          this.operator = theOperator;
650          return this;
651        }
652
653        public boolean hasOperator() { 
654          if (this.operator == null)
655            return false;
656          for (Enumeration<FilterOperator> item : this.operator)
657            if (!item.isEmpty())
658              return true;
659          return false;
660        }
661
662        /**
663         * @return {@link #operator} (A list of operators that can be used with the filter.)
664         */
665        public Enumeration<FilterOperator> addOperatorElement() {//2 
666          Enumeration<FilterOperator> t = new Enumeration<FilterOperator>(new FilterOperatorEnumFactory());
667          if (this.operator == null)
668            this.operator = new ArrayList<Enumeration<FilterOperator>>();
669          this.operator.add(t);
670          return t;
671        }
672
673        /**
674         * @param value {@link #operator} (A list of operators that can be used with the filter.)
675         */
676        public CodeSystemFilterComponent addOperator(FilterOperator value) { //1
677          Enumeration<FilterOperator> t = new Enumeration<FilterOperator>(new FilterOperatorEnumFactory());
678          t.setValue(value);
679          if (this.operator == null)
680            this.operator = new ArrayList<Enumeration<FilterOperator>>();
681          this.operator.add(t);
682          return this;
683        }
684
685        /**
686         * @param value {@link #operator} (A list of operators that can be used with the filter.)
687         */
688        public boolean hasOperator(FilterOperator value) { 
689          if (this.operator == null)
690            return false;
691          for (Enumeration<FilterOperator> v : this.operator)
692            if (v.getValue().equals(value)) // code
693              return true;
694          return false;
695        }
696
697        /**
698         * @return {@link #value} (A description of what the value for the filter should be.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
699         */
700        public StringType getValueElement() { 
701          if (this.value == null)
702            if (Configuration.errorOnAutoCreate())
703              throw new Error("Attempt to auto-create CodeSystemFilterComponent.value");
704            else if (Configuration.doAutoCreate())
705              this.value = new StringType(); // bb
706          return this.value;
707        }
708
709        public boolean hasValueElement() { 
710          return this.value != null && !this.value.isEmpty();
711        }
712
713        public boolean hasValue() { 
714          return this.value != null && !this.value.isEmpty();
715        }
716
717        /**
718         * @param value {@link #value} (A description of what the value for the filter should be.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
719         */
720        public CodeSystemFilterComponent setValueElement(StringType value) { 
721          this.value = value;
722          return this;
723        }
724
725        /**
726         * @return A description of what the value for the filter should be.
727         */
728        public String getValue() { 
729          return this.value == null ? null : this.value.getValue();
730        }
731
732        /**
733         * @param value A description of what the value for the filter should be.
734         */
735        public CodeSystemFilterComponent setValue(String value) { 
736            if (this.value == null)
737              this.value = new StringType();
738            this.value.setValue(value);
739          return this;
740        }
741
742        protected void listChildren(List<Property> children) {
743          super.listChildren(children);
744          children.add(new Property("code", "code", "The code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter.", 0, 1, code));
745          children.add(new Property("description", "string", "A description of how or why the filter is used.", 0, 1, description));
746          children.add(new Property("operator", "code", "A list of operators that can be used with the filter.", 0, java.lang.Integer.MAX_VALUE, operator));
747          children.add(new Property("value", "string", "A description of what the value for the filter should be.", 0, 1, value));
748        }
749
750        @Override
751        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
752          switch (_hash) {
753          case 3059181: /*code*/  return new Property("code", "code", "The code that identifies this filter when it is used as a filter in [ValueSet](valueset.html#).compose.include.filter.", 0, 1, code);
754          case -1724546052: /*description*/  return new Property("description", "string", "A description of how or why the filter is used.", 0, 1, description);
755          case -500553564: /*operator*/  return new Property("operator", "code", "A list of operators that can be used with the filter.", 0, java.lang.Integer.MAX_VALUE, operator);
756          case 111972721: /*value*/  return new Property("value", "string", "A description of what the value for the filter should be.", 0, 1, value);
757          default: return super.getNamedProperty(_hash, _name, _checkValid);
758          }
759
760        }
761
762      @Override
763      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
764        switch (hash) {
765        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
766        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
767        case -500553564: /*operator*/ return this.operator == null ? new Base[0] : this.operator.toArray(new Base[this.operator.size()]); // Enumeration<FilterOperator>
768        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
769        default: return super.getProperty(hash, name, checkValid);
770        }
771
772      }
773
774      @Override
775      public Base setProperty(int hash, String name, Base value) throws FHIRException {
776        switch (hash) {
777        case 3059181: // code
778          this.code = TypeConvertor.castToCode(value); // CodeType
779          return value;
780        case -1724546052: // description
781          this.description = TypeConvertor.castToString(value); // StringType
782          return value;
783        case -500553564: // operator
784          value = new FilterOperatorEnumFactory().fromType(TypeConvertor.castToCode(value));
785          this.getOperator().add((Enumeration) value); // Enumeration<FilterOperator>
786          return value;
787        case 111972721: // value
788          this.value = TypeConvertor.castToString(value); // StringType
789          return value;
790        default: return super.setProperty(hash, name, value);
791        }
792
793      }
794
795      @Override
796      public Base setProperty(String name, Base value) throws FHIRException {
797        if (name.equals("code")) {
798          this.code = TypeConvertor.castToCode(value); // CodeType
799        } else if (name.equals("description")) {
800          this.description = TypeConvertor.castToString(value); // StringType
801        } else if (name.equals("operator")) {
802          value = new FilterOperatorEnumFactory().fromType(TypeConvertor.castToCode(value));
803          this.getOperator().add((Enumeration) value);
804        } else if (name.equals("value")) {
805          this.value = TypeConvertor.castToString(value); // StringType
806        } else
807          return super.setProperty(name, value);
808        return value;
809      }
810
811      @Override
812      public Base makeProperty(int hash, String name) throws FHIRException {
813        switch (hash) {
814        case 3059181:  return getCodeElement();
815        case -1724546052:  return getDescriptionElement();
816        case -500553564:  return addOperatorElement();
817        case 111972721:  return getValueElement();
818        default: return super.makeProperty(hash, name);
819        }
820
821      }
822
823      @Override
824      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
825        switch (hash) {
826        case 3059181: /*code*/ return new String[] {"code"};
827        case -1724546052: /*description*/ return new String[] {"string"};
828        case -500553564: /*operator*/ return new String[] {"code"};
829        case 111972721: /*value*/ return new String[] {"string"};
830        default: return super.getTypesForProperty(hash, name);
831        }
832
833      }
834
835      @Override
836      public Base addChild(String name) throws FHIRException {
837        if (name.equals("code")) {
838          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.filter.code");
839        }
840        else if (name.equals("description")) {
841          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.filter.description");
842        }
843        else if (name.equals("operator")) {
844          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.filter.operator");
845        }
846        else if (name.equals("value")) {
847          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.filter.value");
848        }
849        else
850          return super.addChild(name);
851      }
852
853      public CodeSystemFilterComponent copy() {
854        CodeSystemFilterComponent dst = new CodeSystemFilterComponent();
855        copyValues(dst);
856        return dst;
857      }
858
859      public void copyValues(CodeSystemFilterComponent dst) {
860        super.copyValues(dst);
861        dst.code = code == null ? null : code.copy();
862        dst.description = description == null ? null : description.copy();
863        if (operator != null) {
864          dst.operator = new ArrayList<Enumeration<FilterOperator>>();
865          for (Enumeration<FilterOperator> i : operator)
866            dst.operator.add(i.copy());
867        };
868        dst.value = value == null ? null : value.copy();
869      }
870
871      @Override
872      public boolean equalsDeep(Base other_) {
873        if (!super.equalsDeep(other_))
874          return false;
875        if (!(other_ instanceof CodeSystemFilterComponent))
876          return false;
877        CodeSystemFilterComponent o = (CodeSystemFilterComponent) other_;
878        return compareDeep(code, o.code, true) && compareDeep(description, o.description, true) && compareDeep(operator, o.operator, true)
879           && compareDeep(value, o.value, true);
880      }
881
882      @Override
883      public boolean equalsShallow(Base other_) {
884        if (!super.equalsShallow(other_))
885          return false;
886        if (!(other_ instanceof CodeSystemFilterComponent))
887          return false;
888        CodeSystemFilterComponent o = (CodeSystemFilterComponent) other_;
889        return compareValues(code, o.code, true) && compareValues(description, o.description, true) && compareValues(operator, o.operator, true)
890           && compareValues(value, o.value, true);
891      }
892
893      public boolean isEmpty() {
894        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, description, operator
895          , value);
896      }
897
898  public String fhirType() {
899    return "CodeSystem.filter";
900
901  }
902
903  }
904
905    @Block()
906    public static class PropertyComponent extends BackboneElement implements IBaseBackboneElement {
907        /**
908         * A code that is used to identify the property. The code is used internally (in CodeSystem.concept.property.code) and also externally, such as in property filters.
909         */
910        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
911        @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 internally (in CodeSystem.concept.property.code) and also externally, such as in property filters." )
912        protected CodeType code;
913
914        /**
915         * Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system.
916         */
917        @Child(name = "uri", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=true)
918        @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." )
919        protected UriType uri;
920
921        /**
922         * A description of the property- why it is defined, and how its value might be used.
923         */
924        @Child(name = "description", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
925        @Description(shortDefinition="Why the property is defined, and/or what it conveys", formalDefinition="A description of the property- why it is defined, and how its value might be used." )
926        protected StringType description;
927
928        /**
929         * The type of the property value. Properties of type "code" contain a code defined by the code system (e.g. a reference to another defined concept).
930         */
931        @Child(name = "type", type = {CodeType.class}, order=4, min=1, max=1, modifier=false, summary=true)
932        @Description(shortDefinition="code | Coding | string | integer | boolean | dateTime | decimal", formalDefinition="The type of the property value. Properties of type \"code\" contain a code defined by the code system (e.g. a reference to another defined concept)." )
933        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/concept-property-type")
934        protected Enumeration<PropertyType> type;
935
936        private static final long serialVersionUID = -1810713373L;
937
938    /**
939     * Constructor
940     */
941      public PropertyComponent() {
942        super();
943      }
944
945    /**
946     * Constructor
947     */
948      public PropertyComponent(String code, PropertyType type) {
949        super();
950        this.setCode(code);
951        this.setType(type);
952      }
953
954        /**
955         * @return {@link #code} (A code that is used to identify the property. The code is used internally (in CodeSystem.concept.property.code) and also externally, such as in property filters.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
956         */
957        public CodeType getCodeElement() { 
958          if (this.code == null)
959            if (Configuration.errorOnAutoCreate())
960              throw new Error("Attempt to auto-create PropertyComponent.code");
961            else if (Configuration.doAutoCreate())
962              this.code = new CodeType(); // bb
963          return this.code;
964        }
965
966        public boolean hasCodeElement() { 
967          return this.code != null && !this.code.isEmpty();
968        }
969
970        public boolean hasCode() { 
971          return this.code != null && !this.code.isEmpty();
972        }
973
974        /**
975         * @param value {@link #code} (A code that is used to identify the property. The code is used internally (in CodeSystem.concept.property.code) and also externally, such as in property filters.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
976         */
977        public PropertyComponent setCodeElement(CodeType value) { 
978          this.code = value;
979          return this;
980        }
981
982        /**
983         * @return A code that is used to identify the property. The code is used internally (in CodeSystem.concept.property.code) and also externally, such as in property filters.
984         */
985        public String getCode() { 
986          return this.code == null ? null : this.code.getValue();
987        }
988
989        /**
990         * @param value A code that is used to identify the property. The code is used internally (in CodeSystem.concept.property.code) and also externally, such as in property filters.
991         */
992        public PropertyComponent setCode(String value) { 
993            if (this.code == null)
994              this.code = new CodeType();
995            this.code.setValue(value);
996          return this;
997        }
998
999        /**
1000         * @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
1001         */
1002        public UriType getUriElement() { 
1003          if (this.uri == null)
1004            if (Configuration.errorOnAutoCreate())
1005              throw new Error("Attempt to auto-create PropertyComponent.uri");
1006            else if (Configuration.doAutoCreate())
1007              this.uri = new UriType(); // bb
1008          return this.uri;
1009        }
1010
1011        public boolean hasUriElement() { 
1012          return this.uri != null && !this.uri.isEmpty();
1013        }
1014
1015        public boolean hasUri() { 
1016          return this.uri != null && !this.uri.isEmpty();
1017        }
1018
1019        /**
1020         * @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
1021         */
1022        public PropertyComponent setUriElement(UriType value) { 
1023          this.uri = value;
1024          return this;
1025        }
1026
1027        /**
1028         * @return Reference to the formal meaning of the property. One possible source of meaning is the [Concept Properties](codesystem-concept-properties.html) code system.
1029         */
1030        public String getUri() { 
1031          return this.uri == null ? null : this.uri.getValue();
1032        }
1033
1034        /**
1035         * @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.
1036         */
1037        public PropertyComponent setUri(String value) { 
1038          if (Utilities.noString(value))
1039            this.uri = null;
1040          else {
1041            if (this.uri == null)
1042              this.uri = new UriType();
1043            this.uri.setValue(value);
1044          }
1045          return this;
1046        }
1047
1048        /**
1049         * @return {@link #description} (A description of the property- why it is defined, and how its value might be used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1050         */
1051        public StringType getDescriptionElement() { 
1052          if (this.description == null)
1053            if (Configuration.errorOnAutoCreate())
1054              throw new Error("Attempt to auto-create PropertyComponent.description");
1055            else if (Configuration.doAutoCreate())
1056              this.description = new StringType(); // bb
1057          return this.description;
1058        }
1059
1060        public boolean hasDescriptionElement() { 
1061          return this.description != null && !this.description.isEmpty();
1062        }
1063
1064        public boolean hasDescription() { 
1065          return this.description != null && !this.description.isEmpty();
1066        }
1067
1068        /**
1069         * @param value {@link #description} (A description of the property- why it is defined, and how its value might be used.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1070         */
1071        public PropertyComponent setDescriptionElement(StringType value) { 
1072          this.description = value;
1073          return this;
1074        }
1075
1076        /**
1077         * @return A description of the property- why it is defined, and how its value might be used.
1078         */
1079        public String getDescription() { 
1080          return this.description == null ? null : this.description.getValue();
1081        }
1082
1083        /**
1084         * @param value A description of the property- why it is defined, and how its value might be used.
1085         */
1086        public PropertyComponent setDescription(String value) { 
1087          if (Utilities.noString(value))
1088            this.description = null;
1089          else {
1090            if (this.description == null)
1091              this.description = new StringType();
1092            this.description.setValue(value);
1093          }
1094          return this;
1095        }
1096
1097        /**
1098         * @return {@link #type} (The type of the property value. Properties of type "code" contain a code defined by the code system (e.g. a reference to another defined concept).). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
1099         */
1100        public Enumeration<PropertyType> getTypeElement() { 
1101          if (this.type == null)
1102            if (Configuration.errorOnAutoCreate())
1103              throw new Error("Attempt to auto-create PropertyComponent.type");
1104            else if (Configuration.doAutoCreate())
1105              this.type = new Enumeration<PropertyType>(new PropertyTypeEnumFactory()); // bb
1106          return this.type;
1107        }
1108
1109        public boolean hasTypeElement() { 
1110          return this.type != null && !this.type.isEmpty();
1111        }
1112
1113        public boolean hasType() { 
1114          return this.type != null && !this.type.isEmpty();
1115        }
1116
1117        /**
1118         * @param value {@link #type} (The type of the property value. Properties of type "code" contain a code defined by the code system (e.g. a reference to another defined concept).). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
1119         */
1120        public PropertyComponent setTypeElement(Enumeration<PropertyType> value) { 
1121          this.type = value;
1122          return this;
1123        }
1124
1125        /**
1126         * @return The type of the property value. Properties of type "code" contain a code defined by the code system (e.g. a reference to another defined concept).
1127         */
1128        public PropertyType getType() { 
1129          return this.type == null ? null : this.type.getValue();
1130        }
1131
1132        /**
1133         * @param value The type of the property value. Properties of type "code" contain a code defined by the code system (e.g. a reference to another defined concept).
1134         */
1135        public PropertyComponent setType(PropertyType value) { 
1136            if (this.type == null)
1137              this.type = new Enumeration<PropertyType>(new PropertyTypeEnumFactory());
1138            this.type.setValue(value);
1139          return this;
1140        }
1141
1142        protected void listChildren(List<Property> children) {
1143          super.listChildren(children);
1144          children.add(new Property("code", "code", "A code that is used to identify the property. The code is used internally (in CodeSystem.concept.property.code) and also externally, such as in property filters.", 0, 1, code));
1145          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));
1146          children.add(new Property("description", "string", "A description of the property- why it is defined, and how its value might be used.", 0, 1, description));
1147          children.add(new Property("type", "code", "The type of the property value. Properties of type \"code\" contain a code defined by the code system (e.g. a reference to another defined concept).", 0, 1, type));
1148        }
1149
1150        @Override
1151        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1152          switch (_hash) {
1153          case 3059181: /*code*/  return new Property("code", "code", "A code that is used to identify the property. The code is used internally (in CodeSystem.concept.property.code) and also externally, such as in property filters.", 0, 1, code);
1154          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);
1155          case -1724546052: /*description*/  return new Property("description", "string", "A description of the property- why it is defined, and how its value might be used.", 0, 1, description);
1156          case 3575610: /*type*/  return new Property("type", "code", "The type of the property value. Properties of type \"code\" contain a code defined by the code system (e.g. a reference to another defined concept).", 0, 1, type);
1157          default: return super.getNamedProperty(_hash, _name, _checkValid);
1158          }
1159
1160        }
1161
1162      @Override
1163      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1164        switch (hash) {
1165        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
1166        case 116076: /*uri*/ return this.uri == null ? new Base[0] : new Base[] {this.uri}; // UriType
1167        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1168        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<PropertyType>
1169        default: return super.getProperty(hash, name, checkValid);
1170        }
1171
1172      }
1173
1174      @Override
1175      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1176        switch (hash) {
1177        case 3059181: // code
1178          this.code = TypeConvertor.castToCode(value); // CodeType
1179          return value;
1180        case 116076: // uri
1181          this.uri = TypeConvertor.castToUri(value); // UriType
1182          return value;
1183        case -1724546052: // description
1184          this.description = TypeConvertor.castToString(value); // StringType
1185          return value;
1186        case 3575610: // type
1187          value = new PropertyTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
1188          this.type = (Enumeration) value; // Enumeration<PropertyType>
1189          return value;
1190        default: return super.setProperty(hash, name, value);
1191        }
1192
1193      }
1194
1195      @Override
1196      public Base setProperty(String name, Base value) throws FHIRException {
1197        if (name.equals("code")) {
1198          this.code = TypeConvertor.castToCode(value); // CodeType
1199        } else if (name.equals("uri")) {
1200          this.uri = TypeConvertor.castToUri(value); // UriType
1201        } else if (name.equals("description")) {
1202          this.description = TypeConvertor.castToString(value); // StringType
1203        } else if (name.equals("type")) {
1204          value = new PropertyTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
1205          this.type = (Enumeration) value; // Enumeration<PropertyType>
1206        } else
1207          return super.setProperty(name, value);
1208        return value;
1209      }
1210
1211      @Override
1212      public Base makeProperty(int hash, String name) throws FHIRException {
1213        switch (hash) {
1214        case 3059181:  return getCodeElement();
1215        case 116076:  return getUriElement();
1216        case -1724546052:  return getDescriptionElement();
1217        case 3575610:  return getTypeElement();
1218        default: return super.makeProperty(hash, name);
1219        }
1220
1221      }
1222
1223      @Override
1224      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1225        switch (hash) {
1226        case 3059181: /*code*/ return new String[] {"code"};
1227        case 116076: /*uri*/ return new String[] {"uri"};
1228        case -1724546052: /*description*/ return new String[] {"string"};
1229        case 3575610: /*type*/ return new String[] {"code"};
1230        default: return super.getTypesForProperty(hash, name);
1231        }
1232
1233      }
1234
1235      @Override
1236      public Base addChild(String name) throws FHIRException {
1237        if (name.equals("code")) {
1238          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.property.code");
1239        }
1240        else if (name.equals("uri")) {
1241          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.property.uri");
1242        }
1243        else if (name.equals("description")) {
1244          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.property.description");
1245        }
1246        else if (name.equals("type")) {
1247          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.property.type");
1248        }
1249        else
1250          return super.addChild(name);
1251      }
1252
1253      public PropertyComponent copy() {
1254        PropertyComponent dst = new PropertyComponent();
1255        copyValues(dst);
1256        return dst;
1257      }
1258
1259      public void copyValues(PropertyComponent dst) {
1260        super.copyValues(dst);
1261        dst.code = code == null ? null : code.copy();
1262        dst.uri = uri == null ? null : uri.copy();
1263        dst.description = description == null ? null : description.copy();
1264        dst.type = type == null ? null : type.copy();
1265      }
1266
1267      @Override
1268      public boolean equalsDeep(Base other_) {
1269        if (!super.equalsDeep(other_))
1270          return false;
1271        if (!(other_ instanceof PropertyComponent))
1272          return false;
1273        PropertyComponent o = (PropertyComponent) other_;
1274        return compareDeep(code, o.code, true) && compareDeep(uri, o.uri, true) && compareDeep(description, o.description, true)
1275           && compareDeep(type, o.type, true);
1276      }
1277
1278      @Override
1279      public boolean equalsShallow(Base other_) {
1280        if (!super.equalsShallow(other_))
1281          return false;
1282        if (!(other_ instanceof PropertyComponent))
1283          return false;
1284        PropertyComponent o = (PropertyComponent) other_;
1285        return compareValues(code, o.code, true) && compareValues(uri, o.uri, true) && compareValues(description, o.description, true)
1286           && compareValues(type, o.type, true);
1287      }
1288
1289      public boolean isEmpty() {
1290        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, uri, description, type
1291          );
1292      }
1293
1294  public String fhirType() {
1295    return "CodeSystem.property";
1296
1297  }
1298
1299  }
1300
1301    @Block()
1302    public static class ConceptDefinitionComponent extends BackboneElement implements IBaseBackboneElement {
1303        /**
1304         * A code - a text symbol - that uniquely identifies the concept within the code system.
1305         */
1306        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1307        @Description(shortDefinition="Code that identifies concept", formalDefinition="A code - a text symbol - that uniquely identifies the concept within the code system." )
1308        protected CodeType code;
1309
1310        /**
1311         * A human readable string that is the recommended default way to present this concept to a user.
1312         */
1313        @Child(name = "display", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1314        @Description(shortDefinition="Text to display to the user", formalDefinition="A human readable string that is the recommended default way to present this concept to a user." )
1315        protected StringType display;
1316
1317        /**
1318         * The formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept.
1319         */
1320        @Child(name = "definition", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
1321        @Description(shortDefinition="Formal definition", formalDefinition="The formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept." )
1322        protected StringType definition;
1323
1324        /**
1325         * Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.
1326         */
1327        @Child(name = "designation", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1328        @Description(shortDefinition="Additional representations for the concept", formalDefinition="Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc." )
1329        protected List<ConceptDefinitionDesignationComponent> designation;
1330
1331        /**
1332         * A property value for this concept.
1333         */
1334        @Child(name = "property", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1335        @Description(shortDefinition="Property value for the concept", formalDefinition="A property value for this concept." )
1336        protected List<ConceptPropertyComponent> property;
1337
1338        /**
1339         * Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) - see hierarchyMeaning.
1340         */
1341        @Child(name = "concept", type = {ConceptDefinitionComponent.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1342        @Description(shortDefinition="Child Concepts (is-a/contains/categorizes)", formalDefinition="Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) - see hierarchyMeaning." )
1343        protected List<ConceptDefinitionComponent> concept;
1344
1345        private static final long serialVersionUID = 878320988L;
1346
1347    /**
1348     * Constructor
1349     */
1350      public ConceptDefinitionComponent() {
1351        super();
1352      }
1353
1354    /**
1355     * Constructor
1356     */
1357      public ConceptDefinitionComponent(String code) {
1358        super();
1359        this.setCode(code);
1360      }
1361
1362        /**
1363         * @return {@link #code} (A code - a text symbol - that uniquely identifies the concept within the code system.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1364         */
1365        public CodeType getCodeElement() { 
1366          if (this.code == null)
1367            if (Configuration.errorOnAutoCreate())
1368              throw new Error("Attempt to auto-create ConceptDefinitionComponent.code");
1369            else if (Configuration.doAutoCreate())
1370              this.code = new CodeType(); // bb
1371          return this.code;
1372        }
1373
1374        public boolean hasCodeElement() { 
1375          return this.code != null && !this.code.isEmpty();
1376        }
1377
1378        public boolean hasCode() { 
1379          return this.code != null && !this.code.isEmpty();
1380        }
1381
1382        /**
1383         * @param value {@link #code} (A code - a text symbol - that uniquely identifies the concept within the code system.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1384         */
1385        public ConceptDefinitionComponent setCodeElement(CodeType value) { 
1386          this.code = value;
1387          return this;
1388        }
1389
1390        /**
1391         * @return A code - a text symbol - that uniquely identifies the concept within the code system.
1392         */
1393        public String getCode() { 
1394          return this.code == null ? null : this.code.getValue();
1395        }
1396
1397        /**
1398         * @param value A code - a text symbol - that uniquely identifies the concept within the code system.
1399         */
1400        public ConceptDefinitionComponent setCode(String value) { 
1401            if (this.code == null)
1402              this.code = new CodeType();
1403            this.code.setValue(value);
1404          return this;
1405        }
1406
1407        /**
1408         * @return {@link #display} (A human readable string that is the recommended default way to present this concept to a user.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
1409         */
1410        public StringType getDisplayElement() { 
1411          if (this.display == null)
1412            if (Configuration.errorOnAutoCreate())
1413              throw new Error("Attempt to auto-create ConceptDefinitionComponent.display");
1414            else if (Configuration.doAutoCreate())
1415              this.display = new StringType(); // bb
1416          return this.display;
1417        }
1418
1419        public boolean hasDisplayElement() { 
1420          return this.display != null && !this.display.isEmpty();
1421        }
1422
1423        public boolean hasDisplay() { 
1424          return this.display != null && !this.display.isEmpty();
1425        }
1426
1427        /**
1428         * @param value {@link #display} (A human readable string that is the recommended default way to present this concept to a user.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
1429         */
1430        public ConceptDefinitionComponent setDisplayElement(StringType value) { 
1431          this.display = value;
1432          return this;
1433        }
1434
1435        /**
1436         * @return A human readable string that is the recommended default way to present this concept to a user.
1437         */
1438        public String getDisplay() { 
1439          return this.display == null ? null : this.display.getValue();
1440        }
1441
1442        /**
1443         * @param value A human readable string that is the recommended default way to present this concept to a user.
1444         */
1445        public ConceptDefinitionComponent setDisplay(String value) { 
1446          if (Utilities.noString(value))
1447            this.display = null;
1448          else {
1449            if (this.display == null)
1450              this.display = new StringType();
1451            this.display.setValue(value);
1452          }
1453          return this;
1454        }
1455
1456        /**
1457         * @return {@link #definition} (The formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept.). This is the underlying object with id, value and extensions. The accessor "getDefinition" gives direct access to the value
1458         */
1459        public StringType getDefinitionElement() { 
1460          if (this.definition == null)
1461            if (Configuration.errorOnAutoCreate())
1462              throw new Error("Attempt to auto-create ConceptDefinitionComponent.definition");
1463            else if (Configuration.doAutoCreate())
1464              this.definition = new StringType(); // bb
1465          return this.definition;
1466        }
1467
1468        public boolean hasDefinitionElement() { 
1469          return this.definition != null && !this.definition.isEmpty();
1470        }
1471
1472        public boolean hasDefinition() { 
1473          return this.definition != null && !this.definition.isEmpty();
1474        }
1475
1476        /**
1477         * @param value {@link #definition} (The formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept.). This is the underlying object with id, value and extensions. The accessor "getDefinition" gives direct access to the value
1478         */
1479        public ConceptDefinitionComponent setDefinitionElement(StringType value) { 
1480          this.definition = value;
1481          return this;
1482        }
1483
1484        /**
1485         * @return The formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept.
1486         */
1487        public String getDefinition() { 
1488          return this.definition == null ? null : this.definition.getValue();
1489        }
1490
1491        /**
1492         * @param value The formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept.
1493         */
1494        public ConceptDefinitionComponent setDefinition(String value) { 
1495          if (Utilities.noString(value))
1496            this.definition = null;
1497          else {
1498            if (this.definition == null)
1499              this.definition = new StringType();
1500            this.definition.setValue(value);
1501          }
1502          return this;
1503        }
1504
1505        /**
1506         * @return {@link #designation} (Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.)
1507         */
1508        public List<ConceptDefinitionDesignationComponent> getDesignation() { 
1509          if (this.designation == null)
1510            this.designation = new ArrayList<ConceptDefinitionDesignationComponent>();
1511          return this.designation;
1512        }
1513
1514        /**
1515         * @return Returns a reference to <code>this</code> for easy method chaining
1516         */
1517        public ConceptDefinitionComponent setDesignation(List<ConceptDefinitionDesignationComponent> theDesignation) { 
1518          this.designation = theDesignation;
1519          return this;
1520        }
1521
1522        public boolean hasDesignation() { 
1523          if (this.designation == null)
1524            return false;
1525          for (ConceptDefinitionDesignationComponent item : this.designation)
1526            if (!item.isEmpty())
1527              return true;
1528          return false;
1529        }
1530
1531        public ConceptDefinitionDesignationComponent addDesignation() { //3
1532          ConceptDefinitionDesignationComponent t = new ConceptDefinitionDesignationComponent();
1533          if (this.designation == null)
1534            this.designation = new ArrayList<ConceptDefinitionDesignationComponent>();
1535          this.designation.add(t);
1536          return t;
1537        }
1538
1539        public ConceptDefinitionComponent addDesignation(ConceptDefinitionDesignationComponent t) { //3
1540          if (t == null)
1541            return this;
1542          if (this.designation == null)
1543            this.designation = new ArrayList<ConceptDefinitionDesignationComponent>();
1544          this.designation.add(t);
1545          return this;
1546        }
1547
1548        /**
1549         * @return The first repetition of repeating field {@link #designation}, creating it if it does not already exist {3}
1550         */
1551        public ConceptDefinitionDesignationComponent getDesignationFirstRep() { 
1552          if (getDesignation().isEmpty()) {
1553            addDesignation();
1554          }
1555          return getDesignation().get(0);
1556        }
1557
1558        /**
1559         * @return {@link #property} (A property value for this concept.)
1560         */
1561        public List<ConceptPropertyComponent> getProperty() { 
1562          if (this.property == null)
1563            this.property = new ArrayList<ConceptPropertyComponent>();
1564          return this.property;
1565        }
1566
1567        /**
1568         * @return Returns a reference to <code>this</code> for easy method chaining
1569         */
1570        public ConceptDefinitionComponent setProperty(List<ConceptPropertyComponent> theProperty) { 
1571          this.property = theProperty;
1572          return this;
1573        }
1574
1575        public boolean hasProperty() { 
1576          if (this.property == null)
1577            return false;
1578          for (ConceptPropertyComponent item : this.property)
1579            if (!item.isEmpty())
1580              return true;
1581          return false;
1582        }
1583
1584        public ConceptPropertyComponent addProperty() { //3
1585          ConceptPropertyComponent t = new ConceptPropertyComponent();
1586          if (this.property == null)
1587            this.property = new ArrayList<ConceptPropertyComponent>();
1588          this.property.add(t);
1589          return t;
1590        }
1591
1592        public ConceptDefinitionComponent addProperty(ConceptPropertyComponent t) { //3
1593          if (t == null)
1594            return this;
1595          if (this.property == null)
1596            this.property = new ArrayList<ConceptPropertyComponent>();
1597          this.property.add(t);
1598          return this;
1599        }
1600
1601        /**
1602         * @return The first repetition of repeating field {@link #property}, creating it if it does not already exist {3}
1603         */
1604        public ConceptPropertyComponent getPropertyFirstRep() { 
1605          if (getProperty().isEmpty()) {
1606            addProperty();
1607          }
1608          return getProperty().get(0);
1609        }
1610
1611        /**
1612         * @return {@link #concept} (Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) - see hierarchyMeaning.)
1613         */
1614        public List<ConceptDefinitionComponent> getConcept() { 
1615          if (this.concept == null)
1616            this.concept = new ArrayList<ConceptDefinitionComponent>();
1617          return this.concept;
1618        }
1619
1620        /**
1621         * @return Returns a reference to <code>this</code> for easy method chaining
1622         */
1623        public ConceptDefinitionComponent setConcept(List<ConceptDefinitionComponent> theConcept) { 
1624          this.concept = theConcept;
1625          return this;
1626        }
1627
1628        public boolean hasConcept() { 
1629          if (this.concept == null)
1630            return false;
1631          for (ConceptDefinitionComponent item : this.concept)
1632            if (!item.isEmpty())
1633              return true;
1634          return false;
1635        }
1636
1637        public ConceptDefinitionComponent addConcept() { //3
1638          ConceptDefinitionComponent t = new ConceptDefinitionComponent();
1639          if (this.concept == null)
1640            this.concept = new ArrayList<ConceptDefinitionComponent>();
1641          this.concept.add(t);
1642          return t;
1643        }
1644
1645        public ConceptDefinitionComponent addConcept(ConceptDefinitionComponent t) { //3
1646          if (t == null)
1647            return this;
1648          if (this.concept == null)
1649            this.concept = new ArrayList<ConceptDefinitionComponent>();
1650          this.concept.add(t);
1651          return this;
1652        }
1653
1654        /**
1655         * @return The first repetition of repeating field {@link #concept}, creating it if it does not already exist {3}
1656         */
1657        public ConceptDefinitionComponent getConceptFirstRep() { 
1658          if (getConcept().isEmpty()) {
1659            addConcept();
1660          }
1661          return getConcept().get(0);
1662        }
1663
1664        protected void listChildren(List<Property> children) {
1665          super.listChildren(children);
1666          children.add(new Property("code", "code", "A code - a text symbol - that uniquely identifies the concept within the code system.", 0, 1, code));
1667          children.add(new Property("display", "string", "A human readable string that is the recommended default way to present this concept to a user.", 0, 1, display));
1668          children.add(new Property("definition", "string", "The formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept.", 0, 1, definition));
1669          children.add(new Property("designation", "", "Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.", 0, java.lang.Integer.MAX_VALUE, designation));
1670          children.add(new Property("property", "", "A property value for this concept.", 0, java.lang.Integer.MAX_VALUE, property));
1671          children.add(new Property("concept", "@CodeSystem.concept", "Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) - see hierarchyMeaning.", 0, java.lang.Integer.MAX_VALUE, concept));
1672        }
1673
1674        @Override
1675        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1676          switch (_hash) {
1677          case 3059181: /*code*/  return new Property("code", "code", "A code - a text symbol - that uniquely identifies the concept within the code system.", 0, 1, code);
1678          case 1671764162: /*display*/  return new Property("display", "string", "A human readable string that is the recommended default way to present this concept to a user.", 0, 1, display);
1679          case -1014418093: /*definition*/  return new Property("definition", "string", "The formal definition of the concept. The code system resource does not make formal definitions required, because of the prevalence of legacy systems. However, they are highly recommended, as without them there is no formal meaning associated with the concept.", 0, 1, definition);
1680          case -900931593: /*designation*/  return new Property("designation", "", "Additional representations for the concept - other languages, aliases, specialized purposes, used for particular purposes, etc.", 0, java.lang.Integer.MAX_VALUE, designation);
1681          case -993141291: /*property*/  return new Property("property", "", "A property value for this concept.", 0, java.lang.Integer.MAX_VALUE, property);
1682          case 951024232: /*concept*/  return new Property("concept", "@CodeSystem.concept", "Defines children of a concept to produce a hierarchy of concepts. The nature of the relationships is variable (is-a/contains/categorizes) - see hierarchyMeaning.", 0, java.lang.Integer.MAX_VALUE, concept);
1683          default: return super.getNamedProperty(_hash, _name, _checkValid);
1684          }
1685
1686        }
1687
1688      @Override
1689      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1690        switch (hash) {
1691        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
1692        case 1671764162: /*display*/ return this.display == null ? new Base[0] : new Base[] {this.display}; // StringType
1693        case -1014418093: /*definition*/ return this.definition == null ? new Base[0] : new Base[] {this.definition}; // StringType
1694        case -900931593: /*designation*/ return this.designation == null ? new Base[0] : this.designation.toArray(new Base[this.designation.size()]); // ConceptDefinitionDesignationComponent
1695        case -993141291: /*property*/ return this.property == null ? new Base[0] : this.property.toArray(new Base[this.property.size()]); // ConceptPropertyComponent
1696        case 951024232: /*concept*/ return this.concept == null ? new Base[0] : this.concept.toArray(new Base[this.concept.size()]); // ConceptDefinitionComponent
1697        default: return super.getProperty(hash, name, checkValid);
1698        }
1699
1700      }
1701
1702      @Override
1703      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1704        switch (hash) {
1705        case 3059181: // code
1706          this.code = TypeConvertor.castToCode(value); // CodeType
1707          return value;
1708        case 1671764162: // display
1709          this.display = TypeConvertor.castToString(value); // StringType
1710          return value;
1711        case -1014418093: // definition
1712          this.definition = TypeConvertor.castToString(value); // StringType
1713          return value;
1714        case -900931593: // designation
1715          this.getDesignation().add((ConceptDefinitionDesignationComponent) value); // ConceptDefinitionDesignationComponent
1716          return value;
1717        case -993141291: // property
1718          this.getProperty().add((ConceptPropertyComponent) value); // ConceptPropertyComponent
1719          return value;
1720        case 951024232: // concept
1721          this.getConcept().add((ConceptDefinitionComponent) value); // ConceptDefinitionComponent
1722          return value;
1723        default: return super.setProperty(hash, name, value);
1724        }
1725
1726      }
1727
1728      @Override
1729      public Base setProperty(String name, Base value) throws FHIRException {
1730        if (name.equals("code")) {
1731          this.code = TypeConvertor.castToCode(value); // CodeType
1732        } else if (name.equals("display")) {
1733          this.display = TypeConvertor.castToString(value); // StringType
1734        } else if (name.equals("definition")) {
1735          this.definition = TypeConvertor.castToString(value); // StringType
1736        } else if (name.equals("designation")) {
1737          this.getDesignation().add((ConceptDefinitionDesignationComponent) value);
1738        } else if (name.equals("property")) {
1739          this.getProperty().add((ConceptPropertyComponent) value);
1740        } else if (name.equals("concept")) {
1741          this.getConcept().add((ConceptDefinitionComponent) value);
1742        } else
1743          return super.setProperty(name, value);
1744        return value;
1745      }
1746
1747      @Override
1748      public Base makeProperty(int hash, String name) throws FHIRException {
1749        switch (hash) {
1750        case 3059181:  return getCodeElement();
1751        case 1671764162:  return getDisplayElement();
1752        case -1014418093:  return getDefinitionElement();
1753        case -900931593:  return addDesignation(); 
1754        case -993141291:  return addProperty(); 
1755        case 951024232:  return addConcept(); 
1756        default: return super.makeProperty(hash, name);
1757        }
1758
1759      }
1760
1761      @Override
1762      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1763        switch (hash) {
1764        case 3059181: /*code*/ return new String[] {"code"};
1765        case 1671764162: /*display*/ return new String[] {"string"};
1766        case -1014418093: /*definition*/ return new String[] {"string"};
1767        case -900931593: /*designation*/ return new String[] {};
1768        case -993141291: /*property*/ return new String[] {};
1769        case 951024232: /*concept*/ return new String[] {"@CodeSystem.concept"};
1770        default: return super.getTypesForProperty(hash, name);
1771        }
1772
1773      }
1774
1775      @Override
1776      public Base addChild(String name) throws FHIRException {
1777        if (name.equals("code")) {
1778          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.concept.code");
1779        }
1780        else if (name.equals("display")) {
1781          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.concept.display");
1782        }
1783        else if (name.equals("definition")) {
1784          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.concept.definition");
1785        }
1786        else if (name.equals("designation")) {
1787          return addDesignation();
1788        }
1789        else if (name.equals("property")) {
1790          return addProperty();
1791        }
1792        else if (name.equals("concept")) {
1793          return addConcept();
1794        }
1795        else
1796          return super.addChild(name);
1797      }
1798
1799      public ConceptDefinitionComponent copy() {
1800        ConceptDefinitionComponent dst = new ConceptDefinitionComponent();
1801        copyValues(dst);
1802        return dst;
1803      }
1804
1805      public void copyValues(ConceptDefinitionComponent dst) {
1806        super.copyValues(dst);
1807        dst.code = code == null ? null : code.copy();
1808        dst.display = display == null ? null : display.copy();
1809        dst.definition = definition == null ? null : definition.copy();
1810        if (designation != null) {
1811          dst.designation = new ArrayList<ConceptDefinitionDesignationComponent>();
1812          for (ConceptDefinitionDesignationComponent i : designation)
1813            dst.designation.add(i.copy());
1814        };
1815        if (property != null) {
1816          dst.property = new ArrayList<ConceptPropertyComponent>();
1817          for (ConceptPropertyComponent i : property)
1818            dst.property.add(i.copy());
1819        };
1820        if (concept != null) {
1821          dst.concept = new ArrayList<ConceptDefinitionComponent>();
1822          for (ConceptDefinitionComponent i : concept)
1823            dst.concept.add(i.copy());
1824        };
1825      }
1826
1827      @Override
1828      public boolean equalsDeep(Base other_) {
1829        if (!super.equalsDeep(other_))
1830          return false;
1831        if (!(other_ instanceof ConceptDefinitionComponent))
1832          return false;
1833        ConceptDefinitionComponent o = (ConceptDefinitionComponent) other_;
1834        return compareDeep(code, o.code, true) && compareDeep(display, o.display, true) && compareDeep(definition, o.definition, true)
1835           && compareDeep(designation, o.designation, true) && compareDeep(property, o.property, true) && compareDeep(concept, o.concept, true)
1836          ;
1837      }
1838
1839      @Override
1840      public boolean equalsShallow(Base other_) {
1841        if (!super.equalsShallow(other_))
1842          return false;
1843        if (!(other_ instanceof ConceptDefinitionComponent))
1844          return false;
1845        ConceptDefinitionComponent o = (ConceptDefinitionComponent) other_;
1846        return compareValues(code, o.code, true) && compareValues(display, o.display, true) && compareValues(definition, o.definition, true)
1847          ;
1848      }
1849
1850      public boolean isEmpty() {
1851        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, display, definition
1852          , designation, property, concept);
1853      }
1854
1855  public String fhirType() {
1856    return "CodeSystem.concept";
1857
1858  }
1859
1860// added from java-adornments.txt:
1861@Override
1862   public String toString() {
1863     return getCode()+": "+getDisplay();
1864   }
1865// end addition
1866  }
1867
1868    @Block()
1869    public static class ConceptDefinitionDesignationComponent extends BackboneElement implements IBaseBackboneElement {
1870        /**
1871         * The language this designation is defined for.
1872         */
1873        @Child(name = "language", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1874        @Description(shortDefinition="Human language of the designation", formalDefinition="The language this designation is defined for." )
1875        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/languages")
1876        protected CodeType language;
1877
1878        /**
1879         * A code that details how this designation would be used.
1880         */
1881        @Child(name = "use", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=false)
1882        @Description(shortDefinition="Details how this designation would be used", formalDefinition="A code that details how this designation would be used." )
1883        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/designation-use")
1884        protected Coding use;
1885
1886        /**
1887         * The text value for this designation.
1888         */
1889        @Child(name = "value", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=false)
1890        @Description(shortDefinition="The text value for this designation", formalDefinition="The text value for this designation." )
1891        protected StringType value;
1892
1893        private static final long serialVersionUID = 1515662414L;
1894
1895    /**
1896     * Constructor
1897     */
1898      public ConceptDefinitionDesignationComponent() {
1899        super();
1900      }
1901
1902    /**
1903     * Constructor
1904     */
1905      public ConceptDefinitionDesignationComponent(String value) {
1906        super();
1907        this.setValue(value);
1908      }
1909
1910        /**
1911         * @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
1912         */
1913        public CodeType getLanguageElement() { 
1914          if (this.language == null)
1915            if (Configuration.errorOnAutoCreate())
1916              throw new Error("Attempt to auto-create ConceptDefinitionDesignationComponent.language");
1917            else if (Configuration.doAutoCreate())
1918              this.language = new CodeType(); // bb
1919          return this.language;
1920        }
1921
1922        public boolean hasLanguageElement() { 
1923          return this.language != null && !this.language.isEmpty();
1924        }
1925
1926        public boolean hasLanguage() { 
1927          return this.language != null && !this.language.isEmpty();
1928        }
1929
1930        /**
1931         * @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
1932         */
1933        public ConceptDefinitionDesignationComponent setLanguageElement(CodeType value) { 
1934          this.language = value;
1935          return this;
1936        }
1937
1938        /**
1939         * @return The language this designation is defined for.
1940         */
1941        public String getLanguage() { 
1942          return this.language == null ? null : this.language.getValue();
1943        }
1944
1945        /**
1946         * @param value The language this designation is defined for.
1947         */
1948        public ConceptDefinitionDesignationComponent setLanguage(String value) { 
1949          if (Utilities.noString(value))
1950            this.language = null;
1951          else {
1952            if (this.language == null)
1953              this.language = new CodeType();
1954            this.language.setValue(value);
1955          }
1956          return this;
1957        }
1958
1959        /**
1960         * @return {@link #use} (A code that details how this designation would be used.)
1961         */
1962        public Coding getUse() { 
1963          if (this.use == null)
1964            if (Configuration.errorOnAutoCreate())
1965              throw new Error("Attempt to auto-create ConceptDefinitionDesignationComponent.use");
1966            else if (Configuration.doAutoCreate())
1967              this.use = new Coding(); // cc
1968          return this.use;
1969        }
1970
1971        public boolean hasUse() { 
1972          return this.use != null && !this.use.isEmpty();
1973        }
1974
1975        /**
1976         * @param value {@link #use} (A code that details how this designation would be used.)
1977         */
1978        public ConceptDefinitionDesignationComponent setUse(Coding value) { 
1979          this.use = value;
1980          return this;
1981        }
1982
1983        /**
1984         * @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
1985         */
1986        public StringType getValueElement() { 
1987          if (this.value == null)
1988            if (Configuration.errorOnAutoCreate())
1989              throw new Error("Attempt to auto-create ConceptDefinitionDesignationComponent.value");
1990            else if (Configuration.doAutoCreate())
1991              this.value = new StringType(); // bb
1992          return this.value;
1993        }
1994
1995        public boolean hasValueElement() { 
1996          return this.value != null && !this.value.isEmpty();
1997        }
1998
1999        public boolean hasValue() { 
2000          return this.value != null && !this.value.isEmpty();
2001        }
2002
2003        /**
2004         * @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
2005         */
2006        public ConceptDefinitionDesignationComponent setValueElement(StringType value) { 
2007          this.value = value;
2008          return this;
2009        }
2010
2011        /**
2012         * @return The text value for this designation.
2013         */
2014        public String getValue() { 
2015          return this.value == null ? null : this.value.getValue();
2016        }
2017
2018        /**
2019         * @param value The text value for this designation.
2020         */
2021        public ConceptDefinitionDesignationComponent setValue(String value) { 
2022            if (this.value == null)
2023              this.value = new StringType();
2024            this.value.setValue(value);
2025          return this;
2026        }
2027
2028        protected void listChildren(List<Property> children) {
2029          super.listChildren(children);
2030          children.add(new Property("language", "code", "The language this designation is defined for.", 0, 1, language));
2031          children.add(new Property("use", "Coding", "A code that details how this designation would be used.", 0, 1, use));
2032          children.add(new Property("value", "string", "The text value for this designation.", 0, 1, value));
2033        }
2034
2035        @Override
2036        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2037          switch (_hash) {
2038          case -1613589672: /*language*/  return new Property("language", "code", "The language this designation is defined for.", 0, 1, language);
2039          case 116103: /*use*/  return new Property("use", "Coding", "A code that details how this designation would be used.", 0, 1, use);
2040          case 111972721: /*value*/  return new Property("value", "string", "The text value for this designation.", 0, 1, value);
2041          default: return super.getNamedProperty(_hash, _name, _checkValid);
2042          }
2043
2044        }
2045
2046      @Override
2047      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2048        switch (hash) {
2049        case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // CodeType
2050        case 116103: /*use*/ return this.use == null ? new Base[0] : new Base[] {this.use}; // Coding
2051        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
2052        default: return super.getProperty(hash, name, checkValid);
2053        }
2054
2055      }
2056
2057      @Override
2058      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2059        switch (hash) {
2060        case -1613589672: // language
2061          this.language = TypeConvertor.castToCode(value); // CodeType
2062          return value;
2063        case 116103: // use
2064          this.use = TypeConvertor.castToCoding(value); // Coding
2065          return value;
2066        case 111972721: // value
2067          this.value = TypeConvertor.castToString(value); // StringType
2068          return value;
2069        default: return super.setProperty(hash, name, value);
2070        }
2071
2072      }
2073
2074      @Override
2075      public Base setProperty(String name, Base value) throws FHIRException {
2076        if (name.equals("language")) {
2077          this.language = TypeConvertor.castToCode(value); // CodeType
2078        } else if (name.equals("use")) {
2079          this.use = TypeConvertor.castToCoding(value); // Coding
2080        } else if (name.equals("value")) {
2081          this.value = TypeConvertor.castToString(value); // StringType
2082        } else
2083          return super.setProperty(name, value);
2084        return value;
2085      }
2086
2087      @Override
2088      public Base makeProperty(int hash, String name) throws FHIRException {
2089        switch (hash) {
2090        case -1613589672:  return getLanguageElement();
2091        case 116103:  return getUse();
2092        case 111972721:  return getValueElement();
2093        default: return super.makeProperty(hash, name);
2094        }
2095
2096      }
2097
2098      @Override
2099      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2100        switch (hash) {
2101        case -1613589672: /*language*/ return new String[] {"code"};
2102        case 116103: /*use*/ return new String[] {"Coding"};
2103        case 111972721: /*value*/ return new String[] {"string"};
2104        default: return super.getTypesForProperty(hash, name);
2105        }
2106
2107      }
2108
2109      @Override
2110      public Base addChild(String name) throws FHIRException {
2111        if (name.equals("language")) {
2112          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.concept.designation.language");
2113        }
2114        else if (name.equals("use")) {
2115          this.use = new Coding();
2116          return this.use;
2117        }
2118        else if (name.equals("value")) {
2119          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.concept.designation.value");
2120        }
2121        else
2122          return super.addChild(name);
2123      }
2124
2125      public ConceptDefinitionDesignationComponent copy() {
2126        ConceptDefinitionDesignationComponent dst = new ConceptDefinitionDesignationComponent();
2127        copyValues(dst);
2128        return dst;
2129      }
2130
2131      public void copyValues(ConceptDefinitionDesignationComponent dst) {
2132        super.copyValues(dst);
2133        dst.language = language == null ? null : language.copy();
2134        dst.use = use == null ? null : use.copy();
2135        dst.value = value == null ? null : value.copy();
2136      }
2137
2138      @Override
2139      public boolean equalsDeep(Base other_) {
2140        if (!super.equalsDeep(other_))
2141          return false;
2142        if (!(other_ instanceof ConceptDefinitionDesignationComponent))
2143          return false;
2144        ConceptDefinitionDesignationComponent o = (ConceptDefinitionDesignationComponent) other_;
2145        return compareDeep(language, o.language, true) && compareDeep(use, o.use, true) && compareDeep(value, o.value, true)
2146          ;
2147      }
2148
2149      @Override
2150      public boolean equalsShallow(Base other_) {
2151        if (!super.equalsShallow(other_))
2152          return false;
2153        if (!(other_ instanceof ConceptDefinitionDesignationComponent))
2154          return false;
2155        ConceptDefinitionDesignationComponent o = (ConceptDefinitionDesignationComponent) other_;
2156        return compareValues(language, o.language, true) && compareValues(value, o.value, true);
2157      }
2158
2159      public boolean isEmpty() {
2160        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(language, use, value);
2161      }
2162
2163  public String fhirType() {
2164    return "CodeSystem.concept.designation";
2165
2166  }
2167
2168  }
2169
2170    @Block()
2171    public static class ConceptPropertyComponent extends BackboneElement implements IBaseBackboneElement {
2172        /**
2173         * A code that is a reference to CodeSystem.property.code.
2174         */
2175        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
2176        @Description(shortDefinition="Reference to CodeSystem.property.code", formalDefinition="A code that is a reference to CodeSystem.property.code." )
2177        protected CodeType code;
2178
2179        /**
2180         * The value of this property.
2181         */
2182        @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)
2183        @Description(shortDefinition="Value of the property for this concept", formalDefinition="The value of this property." )
2184        protected DataType value;
2185
2186        private static final long serialVersionUID = -422546419L;
2187
2188    /**
2189     * Constructor
2190     */
2191      public ConceptPropertyComponent() {
2192        super();
2193      }
2194
2195    /**
2196     * Constructor
2197     */
2198      public ConceptPropertyComponent(String code, DataType value) {
2199        super();
2200        this.setCode(code);
2201        this.setValue(value);
2202      }
2203
2204        /**
2205         * @return {@link #code} (A code that is a reference to CodeSystem.property.code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
2206         */
2207        public CodeType getCodeElement() { 
2208          if (this.code == null)
2209            if (Configuration.errorOnAutoCreate())
2210              throw new Error("Attempt to auto-create ConceptPropertyComponent.code");
2211            else if (Configuration.doAutoCreate())
2212              this.code = new CodeType(); // bb
2213          return this.code;
2214        }
2215
2216        public boolean hasCodeElement() { 
2217          return this.code != null && !this.code.isEmpty();
2218        }
2219
2220        public boolean hasCode() { 
2221          return this.code != null && !this.code.isEmpty();
2222        }
2223
2224        /**
2225         * @param value {@link #code} (A code that is a reference to CodeSystem.property.code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
2226         */
2227        public ConceptPropertyComponent setCodeElement(CodeType value) { 
2228          this.code = value;
2229          return this;
2230        }
2231
2232        /**
2233         * @return A code that is a reference to CodeSystem.property.code.
2234         */
2235        public String getCode() { 
2236          return this.code == null ? null : this.code.getValue();
2237        }
2238
2239        /**
2240         * @param value A code that is a reference to CodeSystem.property.code.
2241         */
2242        public ConceptPropertyComponent setCode(String value) { 
2243            if (this.code == null)
2244              this.code = new CodeType();
2245            this.code.setValue(value);
2246          return this;
2247        }
2248
2249        /**
2250         * @return {@link #value} (The value of this property.)
2251         */
2252        public DataType getValue() { 
2253          return this.value;
2254        }
2255
2256        /**
2257         * @return {@link #value} (The value of this property.)
2258         */
2259        public CodeType getValueCodeType() throws FHIRException { 
2260          if (this.value == null)
2261            this.value = new CodeType();
2262          if (!(this.value instanceof CodeType))
2263            throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.value.getClass().getName()+" was encountered");
2264          return (CodeType) this.value;
2265        }
2266
2267        public boolean hasValueCodeType() { 
2268          return this != null && this.value instanceof CodeType;
2269        }
2270
2271        /**
2272         * @return {@link #value} (The value of this property.)
2273         */
2274        public Coding getValueCoding() throws FHIRException { 
2275          if (this.value == null)
2276            this.value = new Coding();
2277          if (!(this.value instanceof Coding))
2278            throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.value.getClass().getName()+" was encountered");
2279          return (Coding) this.value;
2280        }
2281
2282        public boolean hasValueCoding() { 
2283          return this != null && this.value instanceof Coding;
2284        }
2285
2286        /**
2287         * @return {@link #value} (The value of this property.)
2288         */
2289        public StringType getValueStringType() throws FHIRException { 
2290          if (this.value == null)
2291            this.value = new StringType();
2292          if (!(this.value instanceof StringType))
2293            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
2294          return (StringType) this.value;
2295        }
2296
2297        public boolean hasValueStringType() { 
2298          return this != null && this.value instanceof StringType;
2299        }
2300
2301        /**
2302         * @return {@link #value} (The value of this property.)
2303         */
2304        public IntegerType getValueIntegerType() throws FHIRException { 
2305          if (this.value == null)
2306            this.value = new IntegerType();
2307          if (!(this.value instanceof IntegerType))
2308            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered");
2309          return (IntegerType) this.value;
2310        }
2311
2312        public boolean hasValueIntegerType() { 
2313          return this != null && this.value instanceof IntegerType;
2314        }
2315
2316        /**
2317         * @return {@link #value} (The value of this property.)
2318         */
2319        public BooleanType getValueBooleanType() throws FHIRException { 
2320          if (this.value == null)
2321            this.value = new BooleanType();
2322          if (!(this.value instanceof BooleanType))
2323            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
2324          return (BooleanType) this.value;
2325        }
2326
2327        public boolean hasValueBooleanType() { 
2328          return this != null && this.value instanceof BooleanType;
2329        }
2330
2331        /**
2332         * @return {@link #value} (The value of this property.)
2333         */
2334        public DateTimeType getValueDateTimeType() throws FHIRException { 
2335          if (this.value == null)
2336            this.value = new DateTimeType();
2337          if (!(this.value instanceof DateTimeType))
2338            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.value.getClass().getName()+" was encountered");
2339          return (DateTimeType) this.value;
2340        }
2341
2342        public boolean hasValueDateTimeType() { 
2343          return this != null && this.value instanceof DateTimeType;
2344        }
2345
2346        /**
2347         * @return {@link #value} (The value of this property.)
2348         */
2349        public DecimalType getValueDecimalType() throws FHIRException { 
2350          if (this.value == null)
2351            this.value = new DecimalType();
2352          if (!(this.value instanceof DecimalType))
2353            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered");
2354          return (DecimalType) this.value;
2355        }
2356
2357        public boolean hasValueDecimalType() { 
2358          return this != null && this.value instanceof DecimalType;
2359        }
2360
2361        public boolean hasValue() { 
2362          return this.value != null && !this.value.isEmpty();
2363        }
2364
2365        /**
2366         * @param value {@link #value} (The value of this property.)
2367         */
2368        public ConceptPropertyComponent setValue(DataType value) { 
2369          if (value != null && !(value instanceof CodeType || value instanceof Coding || value instanceof StringType || value instanceof IntegerType || value instanceof BooleanType || value instanceof DateTimeType || value instanceof DecimalType))
2370            throw new Error("Not the right type for CodeSystem.concept.property.value[x]: "+value.fhirType());
2371          this.value = value;
2372          return this;
2373        }
2374
2375        protected void listChildren(List<Property> children) {
2376          super.listChildren(children);
2377          children.add(new Property("code", "code", "A code that is a reference to CodeSystem.property.code.", 0, 1, code));
2378          children.add(new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this property.", 0, 1, value));
2379        }
2380
2381        @Override
2382        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2383          switch (_hash) {
2384          case 3059181: /*code*/  return new Property("code", "code", "A code that is a reference to CodeSystem.property.code.", 0, 1, code);
2385          case -1410166417: /*value[x]*/  return new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this property.", 0, 1, value);
2386          case 111972721: /*value*/  return new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this property.", 0, 1, value);
2387          case -766209282: /*valueCode*/  return new Property("value[x]", "code", "The value of this property.", 0, 1, value);
2388          case -1887705029: /*valueCoding*/  return new Property("value[x]", "Coding", "The value of this property.", 0, 1, value);
2389          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "The value of this property.", 0, 1, value);
2390          case -1668204915: /*valueInteger*/  return new Property("value[x]", "integer", "The value of this property.", 0, 1, value);
2391          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The value of this property.", 0, 1, value);
2392          case 1047929900: /*valueDateTime*/  return new Property("value[x]", "dateTime", "The value of this property.", 0, 1, value);
2393          case -2083993440: /*valueDecimal*/  return new Property("value[x]", "decimal", "The value of this property.", 0, 1, value);
2394          default: return super.getNamedProperty(_hash, _name, _checkValid);
2395          }
2396
2397        }
2398
2399      @Override
2400      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2401        switch (hash) {
2402        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
2403        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
2404        default: return super.getProperty(hash, name, checkValid);
2405        }
2406
2407      }
2408
2409      @Override
2410      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2411        switch (hash) {
2412        case 3059181: // code
2413          this.code = TypeConvertor.castToCode(value); // CodeType
2414          return value;
2415        case 111972721: // value
2416          this.value = TypeConvertor.castToType(value); // DataType
2417          return value;
2418        default: return super.setProperty(hash, name, value);
2419        }
2420
2421      }
2422
2423      @Override
2424      public Base setProperty(String name, Base value) throws FHIRException {
2425        if (name.equals("code")) {
2426          this.code = TypeConvertor.castToCode(value); // CodeType
2427        } else if (name.equals("value[x]")) {
2428          this.value = TypeConvertor.castToType(value); // DataType
2429        } else
2430          return super.setProperty(name, value);
2431        return value;
2432      }
2433
2434      @Override
2435      public Base makeProperty(int hash, String name) throws FHIRException {
2436        switch (hash) {
2437        case 3059181:  return getCodeElement();
2438        case -1410166417:  return getValue();
2439        case 111972721:  return getValue();
2440        default: return super.makeProperty(hash, name);
2441        }
2442
2443      }
2444
2445      @Override
2446      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2447        switch (hash) {
2448        case 3059181: /*code*/ return new String[] {"code"};
2449        case 111972721: /*value*/ return new String[] {"code", "Coding", "string", "integer", "boolean", "dateTime", "decimal"};
2450        default: return super.getTypesForProperty(hash, name);
2451        }
2452
2453      }
2454
2455      @Override
2456      public Base addChild(String name) throws FHIRException {
2457        if (name.equals("code")) {
2458          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.concept.property.code");
2459        }
2460        else if (name.equals("valueCode")) {
2461          this.value = new CodeType();
2462          return this.value;
2463        }
2464        else if (name.equals("valueCoding")) {
2465          this.value = new Coding();
2466          return this.value;
2467        }
2468        else if (name.equals("valueString")) {
2469          this.value = new StringType();
2470          return this.value;
2471        }
2472        else if (name.equals("valueInteger")) {
2473          this.value = new IntegerType();
2474          return this.value;
2475        }
2476        else if (name.equals("valueBoolean")) {
2477          this.value = new BooleanType();
2478          return this.value;
2479        }
2480        else if (name.equals("valueDateTime")) {
2481          this.value = new DateTimeType();
2482          return this.value;
2483        }
2484        else if (name.equals("valueDecimal")) {
2485          this.value = new DecimalType();
2486          return this.value;
2487        }
2488        else
2489          return super.addChild(name);
2490      }
2491
2492      public ConceptPropertyComponent copy() {
2493        ConceptPropertyComponent dst = new ConceptPropertyComponent();
2494        copyValues(dst);
2495        return dst;
2496      }
2497
2498      public void copyValues(ConceptPropertyComponent dst) {
2499        super.copyValues(dst);
2500        dst.code = code == null ? null : code.copy();
2501        dst.value = value == null ? null : value.copy();
2502      }
2503
2504      @Override
2505      public boolean equalsDeep(Base other_) {
2506        if (!super.equalsDeep(other_))
2507          return false;
2508        if (!(other_ instanceof ConceptPropertyComponent))
2509          return false;
2510        ConceptPropertyComponent o = (ConceptPropertyComponent) other_;
2511        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
2512      }
2513
2514      @Override
2515      public boolean equalsShallow(Base other_) {
2516        if (!super.equalsShallow(other_))
2517          return false;
2518        if (!(other_ instanceof ConceptPropertyComponent))
2519          return false;
2520        ConceptPropertyComponent o = (ConceptPropertyComponent) other_;
2521        return compareValues(code, o.code, true);
2522      }
2523
2524      public boolean isEmpty() {
2525        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
2526      }
2527
2528  public String fhirType() {
2529    return "CodeSystem.concept.property";
2530
2531  }
2532
2533  }
2534
2535    /**
2536     * An absolute URI that is used to identify this code system when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system.
2537     */
2538    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
2539    @Description(shortDefinition="Canonical identifier for this code system, represented as a URI (globally unique) (Coding.system)", formalDefinition="An absolute URI that is used to identify this code system when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system." )
2540    protected UriType url;
2541
2542    /**
2543     * A formal identifier that is used to identify this code system when it is represented in other formats, or referenced in a specification, model, design or an instance.
2544     */
2545    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2546    @Description(shortDefinition="Additional identifier for the code system (business identifier)", formalDefinition="A formal identifier that is used to identify this code system when it is represented in other formats, or referenced in a specification, model, design or an instance." )
2547    protected List<Identifier> identifier;
2548
2549    /**
2550     * The identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system 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 used in [Coding](datatypes.html#Coding).version.
2551     */
2552    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
2553    @Description(shortDefinition="Business version of the code system (Coding.version)", formalDefinition="The identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system 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 used in [Coding](datatypes.html#Coding).version." )
2554    protected StringType version;
2555
2556    /**
2557     * A natural language name identifying the code system. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2558     */
2559    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
2560    @Description(shortDefinition="Name for this code system (computer friendly)", formalDefinition="A natural language name identifying the code system. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
2561    protected StringType name;
2562
2563    /**
2564     * A short, descriptive, user-friendly title for the code system.
2565     */
2566    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
2567    @Description(shortDefinition="Name for this code system (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the code system." )
2568    protected StringType title;
2569
2570    /**
2571     * The date (and optionally time) when the code system resource was created or revised.
2572     */
2573    @Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
2574    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The date (and optionally time) when the code system resource was created or revised." )
2575    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
2576    protected Enumeration<PublicationStatus> status;
2577
2578    /**
2579     * A Boolean value to indicate that this code system is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
2580     */
2581    @Child(name = "experimental", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true)
2582    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this code system is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
2583    protected BooleanType experimental;
2584
2585    /**
2586     * The date  (and optionally time) when the code system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the code system changes.
2587     */
2588    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
2589    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the code system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the code system changes." )
2590    protected DateTimeType date;
2591
2592    /**
2593     * The name of the organization or individual that published the code system.
2594     */
2595    @Child(name = "publisher", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
2596    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the code system." )
2597    protected StringType publisher;
2598
2599    /**
2600     * Contact details to assist a user in finding and communicating with the publisher.
2601     */
2602    @Child(name = "contact", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2603    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
2604    protected List<ContactDetail> contact;
2605
2606    /**
2607     * A free text natural language description of the code system from a consumer's perspective.
2608     */
2609    @Child(name = "description", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=false)
2610    @Description(shortDefinition="Natural language description of the code system", formalDefinition="A free text natural language description of the code system from a consumer's perspective." )
2611    protected MarkdownType description;
2612
2613    /**
2614     * 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 code system instances.
2615     */
2616    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2617    @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 code system instances." )
2618    protected List<UsageContext> useContext;
2619
2620    /**
2621     * A legal or geographic region in which the code system is intended to be used.
2622     */
2623    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2624    @Description(shortDefinition="Intended jurisdiction for code system (if applicable)", formalDefinition="A legal or geographic region in which the code system is intended to be used." )
2625    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
2626    protected List<CodeableConcept> jurisdiction;
2627
2628    /**
2629     * Explanation of why this code system is needed and why it has been designed as it has.
2630     */
2631    @Child(name = "purpose", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=false)
2632    @Description(shortDefinition="Why this code system is defined", formalDefinition="Explanation of why this code system is needed and why it has been designed as it has." )
2633    protected MarkdownType purpose;
2634
2635    /**
2636     * A copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system.
2637     */
2638    @Child(name = "copyright", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
2639    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system." )
2640    protected MarkdownType copyright;
2641
2642    /**
2643     * If code comparison is case sensitive when codes within this system are compared to each other.
2644     */
2645    @Child(name = "caseSensitive", type = {BooleanType.class}, order=15, min=0, max=1, modifier=false, summary=true)
2646    @Description(shortDefinition="If code comparison is case sensitive", formalDefinition="If code comparison is case sensitive when codes within this system are compared to each other." )
2647    protected BooleanType caseSensitive;
2648
2649    /**
2650     * Canonical reference to the value set that contains the entire code system.
2651     */
2652    @Child(name = "valueSet", type = {CanonicalType.class}, order=16, min=0, max=1, modifier=false, summary=true)
2653    @Description(shortDefinition="Canonical reference to the value set with entire code system", formalDefinition="Canonical reference to the value set that contains the entire code system." )
2654    protected CanonicalType valueSet;
2655
2656    /**
2657     * The meaning of the hierarchy of concepts as represented in this resource.
2658     */
2659    @Child(name = "hierarchyMeaning", type = {CodeType.class}, order=17, min=0, max=1, modifier=false, summary=true)
2660    @Description(shortDefinition="grouped-by | is-a | part-of | classified-with", formalDefinition="The meaning of the hierarchy of concepts as represented in this resource." )
2661    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/codesystem-hierarchy-meaning")
2662    protected Enumeration<CodeSystemHierarchyMeaning> hierarchyMeaning;
2663
2664    /**
2665     * The code system defines a compositional (post-coordination) grammar.
2666     */
2667    @Child(name = "compositional", type = {BooleanType.class}, order=18, min=0, max=1, modifier=false, summary=true)
2668    @Description(shortDefinition="If code system defines a compositional grammar", formalDefinition="The code system defines a compositional (post-coordination) grammar." )
2669    protected BooleanType compositional;
2670
2671    /**
2672     * This flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system.
2673     */
2674    @Child(name = "versionNeeded", type = {BooleanType.class}, order=19, min=0, max=1, modifier=false, summary=true)
2675    @Description(shortDefinition="If definitions are not stable", formalDefinition="This flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system." )
2676    protected BooleanType versionNeeded;
2677
2678    /**
2679     * The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.
2680     */
2681    @Child(name = "content", type = {CodeType.class}, order=20, min=1, max=1, modifier=false, summary=true)
2682    @Description(shortDefinition="not-present | example | fragment | complete | supplement", formalDefinition="The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance." )
2683    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/codesystem-content-mode")
2684    protected Enumeration<CodeSystemContentMode> content;
2685
2686    /**
2687     * The canonical URL of the code system that this code system supplement is adding designations and properties to.
2688     */
2689    @Child(name = "supplements", type = {CanonicalType.class}, order=21, min=0, max=1, modifier=false, summary=true)
2690    @Description(shortDefinition="Canonical URL of Code System this adds designations and properties to", formalDefinition="The canonical URL of the code system that this code system supplement is adding designations and properties to." )
2691    protected CanonicalType supplements;
2692
2693    /**
2694     * The total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward.
2695     */
2696    @Child(name = "count", type = {UnsignedIntType.class}, order=22, min=0, max=1, modifier=false, summary=true)
2697    @Description(shortDefinition="Total concepts in the code system", formalDefinition="The total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward." )
2698    protected UnsignedIntType count;
2699
2700    /**
2701     * A filter that can be used in a value set compose statement when selecting concepts using a filter.
2702     */
2703    @Child(name = "filter", type = {}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2704    @Description(shortDefinition="Filter that can be used in a value set", formalDefinition="A filter that can be used in a value set compose statement when selecting concepts using a filter." )
2705    protected List<CodeSystemFilterComponent> filter;
2706
2707    /**
2708     * A property defines an additional slot through which additional information can be provided about a concept.
2709     */
2710    @Child(name = "property", type = {}, order=24, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2711    @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." )
2712    protected List<PropertyComponent> property;
2713
2714    /**
2715     * Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meanings of the hierarchical relationships are.
2716     */
2717    @Child(name = "concept", type = {}, order=25, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2718    @Description(shortDefinition="Concepts in the code system", formalDefinition="Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meanings of the hierarchical relationships are." )
2719    protected List<ConceptDefinitionComponent> concept;
2720
2721    private static final long serialVersionUID = -499428696L;
2722
2723  /**
2724   * Constructor
2725   */
2726    public CodeSystem() {
2727      super();
2728    }
2729
2730  /**
2731   * Constructor
2732   */
2733    public CodeSystem(PublicationStatus status, CodeSystemContentMode content) {
2734      super();
2735      this.setStatus(status);
2736      this.setContent(content);
2737    }
2738
2739    /**
2740     * @return {@link #url} (An absolute URI that is used to identify this code system when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2741     */
2742    public UriType getUrlElement() { 
2743      if (this.url == null)
2744        if (Configuration.errorOnAutoCreate())
2745          throw new Error("Attempt to auto-create CodeSystem.url");
2746        else if (Configuration.doAutoCreate())
2747          this.url = new UriType(); // bb
2748      return this.url;
2749    }
2750
2751    public boolean hasUrlElement() { 
2752      return this.url != null && !this.url.isEmpty();
2753    }
2754
2755    public boolean hasUrl() { 
2756      return this.url != null && !this.url.isEmpty();
2757    }
2758
2759    /**
2760     * @param value {@link #url} (An absolute URI that is used to identify this code system when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2761     */
2762    public CodeSystem setUrlElement(UriType value) { 
2763      this.url = value;
2764      return this;
2765    }
2766
2767    /**
2768     * @return An absolute URI that is used to identify this code system when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system.
2769     */
2770    public String getUrl() { 
2771      return this.url == null ? null : this.url.getValue();
2772    }
2773
2774    /**
2775     * @param value An absolute URI that is used to identify this code system when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system.
2776     */
2777    public CodeSystem setUrl(String value) { 
2778      if (Utilities.noString(value))
2779        this.url = null;
2780      else {
2781        if (this.url == null)
2782          this.url = new UriType();
2783        this.url.setValue(value);
2784      }
2785      return this;
2786    }
2787
2788    /**
2789     * @return {@link #identifier} (A formal identifier that is used to identify this code system when it is represented in other formats, or referenced in a specification, model, design or an instance.)
2790     */
2791    public List<Identifier> getIdentifier() { 
2792      if (this.identifier == null)
2793        this.identifier = new ArrayList<Identifier>();
2794      return this.identifier;
2795    }
2796
2797    /**
2798     * @return Returns a reference to <code>this</code> for easy method chaining
2799     */
2800    public CodeSystem setIdentifier(List<Identifier> theIdentifier) { 
2801      this.identifier = theIdentifier;
2802      return this;
2803    }
2804
2805    public boolean hasIdentifier() { 
2806      if (this.identifier == null)
2807        return false;
2808      for (Identifier item : this.identifier)
2809        if (!item.isEmpty())
2810          return true;
2811      return false;
2812    }
2813
2814    public Identifier addIdentifier() { //3
2815      Identifier t = new Identifier();
2816      if (this.identifier == null)
2817        this.identifier = new ArrayList<Identifier>();
2818      this.identifier.add(t);
2819      return t;
2820    }
2821
2822    public CodeSystem addIdentifier(Identifier t) { //3
2823      if (t == null)
2824        return this;
2825      if (this.identifier == null)
2826        this.identifier = new ArrayList<Identifier>();
2827      this.identifier.add(t);
2828      return this;
2829    }
2830
2831    /**
2832     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
2833     */
2834    public Identifier getIdentifierFirstRep() { 
2835      if (getIdentifier().isEmpty()) {
2836        addIdentifier();
2837      }
2838      return getIdentifier().get(0);
2839    }
2840
2841    /**
2842     * @return {@link #version} (The identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system 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 used in [Coding](datatypes.html#Coding).version.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
2843     */
2844    public StringType getVersionElement() { 
2845      if (this.version == null)
2846        if (Configuration.errorOnAutoCreate())
2847          throw new Error("Attempt to auto-create CodeSystem.version");
2848        else if (Configuration.doAutoCreate())
2849          this.version = new StringType(); // bb
2850      return this.version;
2851    }
2852
2853    public boolean hasVersionElement() { 
2854      return this.version != null && !this.version.isEmpty();
2855    }
2856
2857    public boolean hasVersion() { 
2858      return this.version != null && !this.version.isEmpty();
2859    }
2860
2861    /**
2862     * @param value {@link #version} (The identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system 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 used in [Coding](datatypes.html#Coding).version.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
2863     */
2864    public CodeSystem setVersionElement(StringType value) { 
2865      this.version = value;
2866      return this;
2867    }
2868
2869    /**
2870     * @return The identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system 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 used in [Coding](datatypes.html#Coding).version.
2871     */
2872    public String getVersion() { 
2873      return this.version == null ? null : this.version.getValue();
2874    }
2875
2876    /**
2877     * @param value The identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system 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 used in [Coding](datatypes.html#Coding).version.
2878     */
2879    public CodeSystem setVersion(String value) { 
2880      if (Utilities.noString(value))
2881        this.version = null;
2882      else {
2883        if (this.version == null)
2884          this.version = new StringType();
2885        this.version.setValue(value);
2886      }
2887      return this;
2888    }
2889
2890    /**
2891     * @return {@link #name} (A natural language name identifying the code system. 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
2892     */
2893    public StringType getNameElement() { 
2894      if (this.name == null)
2895        if (Configuration.errorOnAutoCreate())
2896          throw new Error("Attempt to auto-create CodeSystem.name");
2897        else if (Configuration.doAutoCreate())
2898          this.name = new StringType(); // bb
2899      return this.name;
2900    }
2901
2902    public boolean hasNameElement() { 
2903      return this.name != null && !this.name.isEmpty();
2904    }
2905
2906    public boolean hasName() { 
2907      return this.name != null && !this.name.isEmpty();
2908    }
2909
2910    /**
2911     * @param value {@link #name} (A natural language name identifying the code system. 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
2912     */
2913    public CodeSystem setNameElement(StringType value) { 
2914      this.name = value;
2915      return this;
2916    }
2917
2918    /**
2919     * @return A natural language name identifying the code system. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2920     */
2921    public String getName() { 
2922      return this.name == null ? null : this.name.getValue();
2923    }
2924
2925    /**
2926     * @param value A natural language name identifying the code system. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2927     */
2928    public CodeSystem setName(String value) { 
2929      if (Utilities.noString(value))
2930        this.name = null;
2931      else {
2932        if (this.name == null)
2933          this.name = new StringType();
2934        this.name.setValue(value);
2935      }
2936      return this;
2937    }
2938
2939    /**
2940     * @return {@link #title} (A short, descriptive, user-friendly title for the code system.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2941     */
2942    public StringType getTitleElement() { 
2943      if (this.title == null)
2944        if (Configuration.errorOnAutoCreate())
2945          throw new Error("Attempt to auto-create CodeSystem.title");
2946        else if (Configuration.doAutoCreate())
2947          this.title = new StringType(); // bb
2948      return this.title;
2949    }
2950
2951    public boolean hasTitleElement() { 
2952      return this.title != null && !this.title.isEmpty();
2953    }
2954
2955    public boolean hasTitle() { 
2956      return this.title != null && !this.title.isEmpty();
2957    }
2958
2959    /**
2960     * @param value {@link #title} (A short, descriptive, user-friendly title for the code system.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2961     */
2962    public CodeSystem setTitleElement(StringType value) { 
2963      this.title = value;
2964      return this;
2965    }
2966
2967    /**
2968     * @return A short, descriptive, user-friendly title for the code system.
2969     */
2970    public String getTitle() { 
2971      return this.title == null ? null : this.title.getValue();
2972    }
2973
2974    /**
2975     * @param value A short, descriptive, user-friendly title for the code system.
2976     */
2977    public CodeSystem setTitle(String value) { 
2978      if (Utilities.noString(value))
2979        this.title = null;
2980      else {
2981        if (this.title == null)
2982          this.title = new StringType();
2983        this.title.setValue(value);
2984      }
2985      return this;
2986    }
2987
2988    /**
2989     * @return {@link #status} (The date (and optionally time) when the code system resource was created or revised.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2990     */
2991    public Enumeration<PublicationStatus> getStatusElement() { 
2992      if (this.status == null)
2993        if (Configuration.errorOnAutoCreate())
2994          throw new Error("Attempt to auto-create CodeSystem.status");
2995        else if (Configuration.doAutoCreate())
2996          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
2997      return this.status;
2998    }
2999
3000    public boolean hasStatusElement() { 
3001      return this.status != null && !this.status.isEmpty();
3002    }
3003
3004    public boolean hasStatus() { 
3005      return this.status != null && !this.status.isEmpty();
3006    }
3007
3008    /**
3009     * @param value {@link #status} (The date (and optionally time) when the code system resource was created or revised.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
3010     */
3011    public CodeSystem setStatusElement(Enumeration<PublicationStatus> value) { 
3012      this.status = value;
3013      return this;
3014    }
3015
3016    /**
3017     * @return The date (and optionally time) when the code system resource was created or revised.
3018     */
3019    public PublicationStatus getStatus() { 
3020      return this.status == null ? null : this.status.getValue();
3021    }
3022
3023    /**
3024     * @param value The date (and optionally time) when the code system resource was created or revised.
3025     */
3026    public CodeSystem setStatus(PublicationStatus value) { 
3027        if (this.status == null)
3028          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
3029        this.status.setValue(value);
3030      return this;
3031    }
3032
3033    /**
3034     * @return {@link #experimental} (A Boolean value to indicate that this code system 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
3035     */
3036    public BooleanType getExperimentalElement() { 
3037      if (this.experimental == null)
3038        if (Configuration.errorOnAutoCreate())
3039          throw new Error("Attempt to auto-create CodeSystem.experimental");
3040        else if (Configuration.doAutoCreate())
3041          this.experimental = new BooleanType(); // bb
3042      return this.experimental;
3043    }
3044
3045    public boolean hasExperimentalElement() { 
3046      return this.experimental != null && !this.experimental.isEmpty();
3047    }
3048
3049    public boolean hasExperimental() { 
3050      return this.experimental != null && !this.experimental.isEmpty();
3051    }
3052
3053    /**
3054     * @param value {@link #experimental} (A Boolean value to indicate that this code system 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
3055     */
3056    public CodeSystem setExperimentalElement(BooleanType value) { 
3057      this.experimental = value;
3058      return this;
3059    }
3060
3061    /**
3062     * @return A Boolean value to indicate that this code system is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3063     */
3064    public boolean getExperimental() { 
3065      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
3066    }
3067
3068    /**
3069     * @param value A Boolean value to indicate that this code system is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3070     */
3071    public CodeSystem setExperimental(boolean value) { 
3072        if (this.experimental == null)
3073          this.experimental = new BooleanType();
3074        this.experimental.setValue(value);
3075      return this;
3076    }
3077
3078    /**
3079     * @return {@link #date} (The date  (and optionally time) when the code system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the code system changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
3080     */
3081    public DateTimeType getDateElement() { 
3082      if (this.date == null)
3083        if (Configuration.errorOnAutoCreate())
3084          throw new Error("Attempt to auto-create CodeSystem.date");
3085        else if (Configuration.doAutoCreate())
3086          this.date = new DateTimeType(); // bb
3087      return this.date;
3088    }
3089
3090    public boolean hasDateElement() { 
3091      return this.date != null && !this.date.isEmpty();
3092    }
3093
3094    public boolean hasDate() { 
3095      return this.date != null && !this.date.isEmpty();
3096    }
3097
3098    /**
3099     * @param value {@link #date} (The date  (and optionally time) when the code system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the code system changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
3100     */
3101    public CodeSystem setDateElement(DateTimeType value) { 
3102      this.date = value;
3103      return this;
3104    }
3105
3106    /**
3107     * @return The date  (and optionally time) when the code system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the code system changes.
3108     */
3109    public Date getDate() { 
3110      return this.date == null ? null : this.date.getValue();
3111    }
3112
3113    /**
3114     * @param value The date  (and optionally time) when the code system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the code system changes.
3115     */
3116    public CodeSystem setDate(Date value) { 
3117      if (value == null)
3118        this.date = null;
3119      else {
3120        if (this.date == null)
3121          this.date = new DateTimeType();
3122        this.date.setValue(value);
3123      }
3124      return this;
3125    }
3126
3127    /**
3128     * @return {@link #publisher} (The name of the organization or individual that published the code system.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
3129     */
3130    public StringType getPublisherElement() { 
3131      if (this.publisher == null)
3132        if (Configuration.errorOnAutoCreate())
3133          throw new Error("Attempt to auto-create CodeSystem.publisher");
3134        else if (Configuration.doAutoCreate())
3135          this.publisher = new StringType(); // bb
3136      return this.publisher;
3137    }
3138
3139    public boolean hasPublisherElement() { 
3140      return this.publisher != null && !this.publisher.isEmpty();
3141    }
3142
3143    public boolean hasPublisher() { 
3144      return this.publisher != null && !this.publisher.isEmpty();
3145    }
3146
3147    /**
3148     * @param value {@link #publisher} (The name of the organization or individual that published the code system.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
3149     */
3150    public CodeSystem setPublisherElement(StringType value) { 
3151      this.publisher = value;
3152      return this;
3153    }
3154
3155    /**
3156     * @return The name of the organization or individual that published the code system.
3157     */
3158    public String getPublisher() { 
3159      return this.publisher == null ? null : this.publisher.getValue();
3160    }
3161
3162    /**
3163     * @param value The name of the organization or individual that published the code system.
3164     */
3165    public CodeSystem setPublisher(String value) { 
3166      if (Utilities.noString(value))
3167        this.publisher = null;
3168      else {
3169        if (this.publisher == null)
3170          this.publisher = new StringType();
3171        this.publisher.setValue(value);
3172      }
3173      return this;
3174    }
3175
3176    /**
3177     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
3178     */
3179    public List<ContactDetail> getContact() { 
3180      if (this.contact == null)
3181        this.contact = new ArrayList<ContactDetail>();
3182      return this.contact;
3183    }
3184
3185    /**
3186     * @return Returns a reference to <code>this</code> for easy method chaining
3187     */
3188    public CodeSystem setContact(List<ContactDetail> theContact) { 
3189      this.contact = theContact;
3190      return this;
3191    }
3192
3193    public boolean hasContact() { 
3194      if (this.contact == null)
3195        return false;
3196      for (ContactDetail item : this.contact)
3197        if (!item.isEmpty())
3198          return true;
3199      return false;
3200    }
3201
3202    public ContactDetail addContact() { //3
3203      ContactDetail t = new ContactDetail();
3204      if (this.contact == null)
3205        this.contact = new ArrayList<ContactDetail>();
3206      this.contact.add(t);
3207      return t;
3208    }
3209
3210    public CodeSystem addContact(ContactDetail t) { //3
3211      if (t == null)
3212        return this;
3213      if (this.contact == null)
3214        this.contact = new ArrayList<ContactDetail>();
3215      this.contact.add(t);
3216      return this;
3217    }
3218
3219    /**
3220     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
3221     */
3222    public ContactDetail getContactFirstRep() { 
3223      if (getContact().isEmpty()) {
3224        addContact();
3225      }
3226      return getContact().get(0);
3227    }
3228
3229    /**
3230     * @return {@link #description} (A free text natural language description of the code system from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3231     */
3232    public MarkdownType getDescriptionElement() { 
3233      if (this.description == null)
3234        if (Configuration.errorOnAutoCreate())
3235          throw new Error("Attempt to auto-create CodeSystem.description");
3236        else if (Configuration.doAutoCreate())
3237          this.description = new MarkdownType(); // bb
3238      return this.description;
3239    }
3240
3241    public boolean hasDescriptionElement() { 
3242      return this.description != null && !this.description.isEmpty();
3243    }
3244
3245    public boolean hasDescription() { 
3246      return this.description != null && !this.description.isEmpty();
3247    }
3248
3249    /**
3250     * @param value {@link #description} (A free text natural language description of the code system from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3251     */
3252    public CodeSystem setDescriptionElement(MarkdownType value) { 
3253      this.description = value;
3254      return this;
3255    }
3256
3257    /**
3258     * @return A free text natural language description of the code system from a consumer's perspective.
3259     */
3260    public String getDescription() { 
3261      return this.description == null ? null : this.description.getValue();
3262    }
3263
3264    /**
3265     * @param value A free text natural language description of the code system from a consumer's perspective.
3266     */
3267    public CodeSystem setDescription(String value) { 
3268      if (value == null)
3269        this.description = null;
3270      else {
3271        if (this.description == null)
3272          this.description = new MarkdownType();
3273        this.description.setValue(value);
3274      }
3275      return this;
3276    }
3277
3278    /**
3279     * @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 code system instances.)
3280     */
3281    public List<UsageContext> getUseContext() { 
3282      if (this.useContext == null)
3283        this.useContext = new ArrayList<UsageContext>();
3284      return this.useContext;
3285    }
3286
3287    /**
3288     * @return Returns a reference to <code>this</code> for easy method chaining
3289     */
3290    public CodeSystem setUseContext(List<UsageContext> theUseContext) { 
3291      this.useContext = theUseContext;
3292      return this;
3293    }
3294
3295    public boolean hasUseContext() { 
3296      if (this.useContext == null)
3297        return false;
3298      for (UsageContext item : this.useContext)
3299        if (!item.isEmpty())
3300          return true;
3301      return false;
3302    }
3303
3304    public UsageContext addUseContext() { //3
3305      UsageContext t = new UsageContext();
3306      if (this.useContext == null)
3307        this.useContext = new ArrayList<UsageContext>();
3308      this.useContext.add(t);
3309      return t;
3310    }
3311
3312    public CodeSystem addUseContext(UsageContext t) { //3
3313      if (t == null)
3314        return this;
3315      if (this.useContext == null)
3316        this.useContext = new ArrayList<UsageContext>();
3317      this.useContext.add(t);
3318      return this;
3319    }
3320
3321    /**
3322     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
3323     */
3324    public UsageContext getUseContextFirstRep() { 
3325      if (getUseContext().isEmpty()) {
3326        addUseContext();
3327      }
3328      return getUseContext().get(0);
3329    }
3330
3331    /**
3332     * @return {@link #jurisdiction} (A legal or geographic region in which the code system is intended to be used.)
3333     */
3334    public List<CodeableConcept> getJurisdiction() { 
3335      if (this.jurisdiction == null)
3336        this.jurisdiction = new ArrayList<CodeableConcept>();
3337      return this.jurisdiction;
3338    }
3339
3340    /**
3341     * @return Returns a reference to <code>this</code> for easy method chaining
3342     */
3343    public CodeSystem setJurisdiction(List<CodeableConcept> theJurisdiction) { 
3344      this.jurisdiction = theJurisdiction;
3345      return this;
3346    }
3347
3348    public boolean hasJurisdiction() { 
3349      if (this.jurisdiction == null)
3350        return false;
3351      for (CodeableConcept item : this.jurisdiction)
3352        if (!item.isEmpty())
3353          return true;
3354      return false;
3355    }
3356
3357    public CodeableConcept addJurisdiction() { //3
3358      CodeableConcept t = new CodeableConcept();
3359      if (this.jurisdiction == null)
3360        this.jurisdiction = new ArrayList<CodeableConcept>();
3361      this.jurisdiction.add(t);
3362      return t;
3363    }
3364
3365    public CodeSystem addJurisdiction(CodeableConcept t) { //3
3366      if (t == null)
3367        return this;
3368      if (this.jurisdiction == null)
3369        this.jurisdiction = new ArrayList<CodeableConcept>();
3370      this.jurisdiction.add(t);
3371      return this;
3372    }
3373
3374    /**
3375     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
3376     */
3377    public CodeableConcept getJurisdictionFirstRep() { 
3378      if (getJurisdiction().isEmpty()) {
3379        addJurisdiction();
3380      }
3381      return getJurisdiction().get(0);
3382    }
3383
3384    /**
3385     * @return {@link #purpose} (Explanation of why this code system 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
3386     */
3387    public MarkdownType getPurposeElement() { 
3388      if (this.purpose == null)
3389        if (Configuration.errorOnAutoCreate())
3390          throw new Error("Attempt to auto-create CodeSystem.purpose");
3391        else if (Configuration.doAutoCreate())
3392          this.purpose = new MarkdownType(); // bb
3393      return this.purpose;
3394    }
3395
3396    public boolean hasPurposeElement() { 
3397      return this.purpose != null && !this.purpose.isEmpty();
3398    }
3399
3400    public boolean hasPurpose() { 
3401      return this.purpose != null && !this.purpose.isEmpty();
3402    }
3403
3404    /**
3405     * @param value {@link #purpose} (Explanation of why this code system 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
3406     */
3407    public CodeSystem setPurposeElement(MarkdownType value) { 
3408      this.purpose = value;
3409      return this;
3410    }
3411
3412    /**
3413     * @return Explanation of why this code system is needed and why it has been designed as it has.
3414     */
3415    public String getPurpose() { 
3416      return this.purpose == null ? null : this.purpose.getValue();
3417    }
3418
3419    /**
3420     * @param value Explanation of why this code system is needed and why it has been designed as it has.
3421     */
3422    public CodeSystem setPurpose(String value) { 
3423      if (value == null)
3424        this.purpose = null;
3425      else {
3426        if (this.purpose == null)
3427          this.purpose = new MarkdownType();
3428        this.purpose.setValue(value);
3429      }
3430      return this;
3431    }
3432
3433    /**
3434     * @return {@link #copyright} (A copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3435     */
3436    public MarkdownType getCopyrightElement() { 
3437      if (this.copyright == null)
3438        if (Configuration.errorOnAutoCreate())
3439          throw new Error("Attempt to auto-create CodeSystem.copyright");
3440        else if (Configuration.doAutoCreate())
3441          this.copyright = new MarkdownType(); // bb
3442      return this.copyright;
3443    }
3444
3445    public boolean hasCopyrightElement() { 
3446      return this.copyright != null && !this.copyright.isEmpty();
3447    }
3448
3449    public boolean hasCopyright() { 
3450      return this.copyright != null && !this.copyright.isEmpty();
3451    }
3452
3453    /**
3454     * @param value {@link #copyright} (A copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3455     */
3456    public CodeSystem setCopyrightElement(MarkdownType value) { 
3457      this.copyright = value;
3458      return this;
3459    }
3460
3461    /**
3462     * @return A copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system.
3463     */
3464    public String getCopyright() { 
3465      return this.copyright == null ? null : this.copyright.getValue();
3466    }
3467
3468    /**
3469     * @param value A copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system.
3470     */
3471    public CodeSystem setCopyright(String value) { 
3472      if (value == null)
3473        this.copyright = null;
3474      else {
3475        if (this.copyright == null)
3476          this.copyright = new MarkdownType();
3477        this.copyright.setValue(value);
3478      }
3479      return this;
3480    }
3481
3482    /**
3483     * @return {@link #caseSensitive} (If code comparison is case sensitive when codes within this system are compared to each other.). This is the underlying object with id, value and extensions. The accessor "getCaseSensitive" gives direct access to the value
3484     */
3485    public BooleanType getCaseSensitiveElement() { 
3486      if (this.caseSensitive == null)
3487        if (Configuration.errorOnAutoCreate())
3488          throw new Error("Attempt to auto-create CodeSystem.caseSensitive");
3489        else if (Configuration.doAutoCreate())
3490          this.caseSensitive = new BooleanType(); // bb
3491      return this.caseSensitive;
3492    }
3493
3494    public boolean hasCaseSensitiveElement() { 
3495      return this.caseSensitive != null && !this.caseSensitive.isEmpty();
3496    }
3497
3498    public boolean hasCaseSensitive() { 
3499      return this.caseSensitive != null && !this.caseSensitive.isEmpty();
3500    }
3501
3502    /**
3503     * @param value {@link #caseSensitive} (If code comparison is case sensitive when codes within this system are compared to each other.). This is the underlying object with id, value and extensions. The accessor "getCaseSensitive" gives direct access to the value
3504     */
3505    public CodeSystem setCaseSensitiveElement(BooleanType value) { 
3506      this.caseSensitive = value;
3507      return this;
3508    }
3509
3510    /**
3511     * @return If code comparison is case sensitive when codes within this system are compared to each other.
3512     */
3513    public boolean getCaseSensitive() { 
3514      return this.caseSensitive == null || this.caseSensitive.isEmpty() ? false : this.caseSensitive.getValue();
3515    }
3516
3517    /**
3518     * @param value If code comparison is case sensitive when codes within this system are compared to each other.
3519     */
3520    public CodeSystem setCaseSensitive(boolean value) { 
3521        if (this.caseSensitive == null)
3522          this.caseSensitive = new BooleanType();
3523        this.caseSensitive.setValue(value);
3524      return this;
3525    }
3526
3527    /**
3528     * @return {@link #valueSet} (Canonical reference to the value set that contains the entire code system.). This is the underlying object with id, value and extensions. The accessor "getValueSet" gives direct access to the value
3529     */
3530    public CanonicalType getValueSetElement() { 
3531      if (this.valueSet == null)
3532        if (Configuration.errorOnAutoCreate())
3533          throw new Error("Attempt to auto-create CodeSystem.valueSet");
3534        else if (Configuration.doAutoCreate())
3535          this.valueSet = new CanonicalType(); // bb
3536      return this.valueSet;
3537    }
3538
3539    public boolean hasValueSetElement() { 
3540      return this.valueSet != null && !this.valueSet.isEmpty();
3541    }
3542
3543    public boolean hasValueSet() { 
3544      return this.valueSet != null && !this.valueSet.isEmpty();
3545    }
3546
3547    /**
3548     * @param value {@link #valueSet} (Canonical reference to the value set that contains the entire code system.). This is the underlying object with id, value and extensions. The accessor "getValueSet" gives direct access to the value
3549     */
3550    public CodeSystem setValueSetElement(CanonicalType value) { 
3551      this.valueSet = value;
3552      return this;
3553    }
3554
3555    /**
3556     * @return Canonical reference to the value set that contains the entire code system.
3557     */
3558    public String getValueSet() { 
3559      return this.valueSet == null ? null : this.valueSet.getValue();
3560    }
3561
3562    /**
3563     * @param value Canonical reference to the value set that contains the entire code system.
3564     */
3565    public CodeSystem setValueSet(String value) { 
3566      if (Utilities.noString(value))
3567        this.valueSet = null;
3568      else {
3569        if (this.valueSet == null)
3570          this.valueSet = new CanonicalType();
3571        this.valueSet.setValue(value);
3572      }
3573      return this;
3574    }
3575
3576    /**
3577     * @return {@link #hierarchyMeaning} (The meaning of the hierarchy of concepts as represented in this resource.). This is the underlying object with id, value and extensions. The accessor "getHierarchyMeaning" gives direct access to the value
3578     */
3579    public Enumeration<CodeSystemHierarchyMeaning> getHierarchyMeaningElement() { 
3580      if (this.hierarchyMeaning == null)
3581        if (Configuration.errorOnAutoCreate())
3582          throw new Error("Attempt to auto-create CodeSystem.hierarchyMeaning");
3583        else if (Configuration.doAutoCreate())
3584          this.hierarchyMeaning = new Enumeration<CodeSystemHierarchyMeaning>(new CodeSystemHierarchyMeaningEnumFactory()); // bb
3585      return this.hierarchyMeaning;
3586    }
3587
3588    public boolean hasHierarchyMeaningElement() { 
3589      return this.hierarchyMeaning != null && !this.hierarchyMeaning.isEmpty();
3590    }
3591
3592    public boolean hasHierarchyMeaning() { 
3593      return this.hierarchyMeaning != null && !this.hierarchyMeaning.isEmpty();
3594    }
3595
3596    /**
3597     * @param value {@link #hierarchyMeaning} (The meaning of the hierarchy of concepts as represented in this resource.). This is the underlying object with id, value and extensions. The accessor "getHierarchyMeaning" gives direct access to the value
3598     */
3599    public CodeSystem setHierarchyMeaningElement(Enumeration<CodeSystemHierarchyMeaning> value) { 
3600      this.hierarchyMeaning = value;
3601      return this;
3602    }
3603
3604    /**
3605     * @return The meaning of the hierarchy of concepts as represented in this resource.
3606     */
3607    public CodeSystemHierarchyMeaning getHierarchyMeaning() { 
3608      return this.hierarchyMeaning == null ? null : this.hierarchyMeaning.getValue();
3609    }
3610
3611    /**
3612     * @param value The meaning of the hierarchy of concepts as represented in this resource.
3613     */
3614    public CodeSystem setHierarchyMeaning(CodeSystemHierarchyMeaning value) { 
3615      if (value == null)
3616        this.hierarchyMeaning = null;
3617      else {
3618        if (this.hierarchyMeaning == null)
3619          this.hierarchyMeaning = new Enumeration<CodeSystemHierarchyMeaning>(new CodeSystemHierarchyMeaningEnumFactory());
3620        this.hierarchyMeaning.setValue(value);
3621      }
3622      return this;
3623    }
3624
3625    /**
3626     * @return {@link #compositional} (The code system defines a compositional (post-coordination) grammar.). This is the underlying object with id, value and extensions. The accessor "getCompositional" gives direct access to the value
3627     */
3628    public BooleanType getCompositionalElement() { 
3629      if (this.compositional == null)
3630        if (Configuration.errorOnAutoCreate())
3631          throw new Error("Attempt to auto-create CodeSystem.compositional");
3632        else if (Configuration.doAutoCreate())
3633          this.compositional = new BooleanType(); // bb
3634      return this.compositional;
3635    }
3636
3637    public boolean hasCompositionalElement() { 
3638      return this.compositional != null && !this.compositional.isEmpty();
3639    }
3640
3641    public boolean hasCompositional() { 
3642      return this.compositional != null && !this.compositional.isEmpty();
3643    }
3644
3645    /**
3646     * @param value {@link #compositional} (The code system defines a compositional (post-coordination) grammar.). This is the underlying object with id, value and extensions. The accessor "getCompositional" gives direct access to the value
3647     */
3648    public CodeSystem setCompositionalElement(BooleanType value) { 
3649      this.compositional = value;
3650      return this;
3651    }
3652
3653    /**
3654     * @return The code system defines a compositional (post-coordination) grammar.
3655     */
3656    public boolean getCompositional() { 
3657      return this.compositional == null || this.compositional.isEmpty() ? false : this.compositional.getValue();
3658    }
3659
3660    /**
3661     * @param value The code system defines a compositional (post-coordination) grammar.
3662     */
3663    public CodeSystem setCompositional(boolean value) { 
3664        if (this.compositional == null)
3665          this.compositional = new BooleanType();
3666        this.compositional.setValue(value);
3667      return this;
3668    }
3669
3670    /**
3671     * @return {@link #versionNeeded} (This flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system.). This is the underlying object with id, value and extensions. The accessor "getVersionNeeded" gives direct access to the value
3672     */
3673    public BooleanType getVersionNeededElement() { 
3674      if (this.versionNeeded == null)
3675        if (Configuration.errorOnAutoCreate())
3676          throw new Error("Attempt to auto-create CodeSystem.versionNeeded");
3677        else if (Configuration.doAutoCreate())
3678          this.versionNeeded = new BooleanType(); // bb
3679      return this.versionNeeded;
3680    }
3681
3682    public boolean hasVersionNeededElement() { 
3683      return this.versionNeeded != null && !this.versionNeeded.isEmpty();
3684    }
3685
3686    public boolean hasVersionNeeded() { 
3687      return this.versionNeeded != null && !this.versionNeeded.isEmpty();
3688    }
3689
3690    /**
3691     * @param value {@link #versionNeeded} (This flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system.). This is the underlying object with id, value and extensions. The accessor "getVersionNeeded" gives direct access to the value
3692     */
3693    public CodeSystem setVersionNeededElement(BooleanType value) { 
3694      this.versionNeeded = value;
3695      return this;
3696    }
3697
3698    /**
3699     * @return This flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system.
3700     */
3701    public boolean getVersionNeeded() { 
3702      return this.versionNeeded == null || this.versionNeeded.isEmpty() ? false : this.versionNeeded.getValue();
3703    }
3704
3705    /**
3706     * @param value This flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system.
3707     */
3708    public CodeSystem setVersionNeeded(boolean value) { 
3709        if (this.versionNeeded == null)
3710          this.versionNeeded = new BooleanType();
3711        this.versionNeeded.setValue(value);
3712      return this;
3713    }
3714
3715    /**
3716     * @return {@link #content} (The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.). This is the underlying object with id, value and extensions. The accessor "getContent" gives direct access to the value
3717     */
3718    public Enumeration<CodeSystemContentMode> getContentElement() { 
3719      if (this.content == null)
3720        if (Configuration.errorOnAutoCreate())
3721          throw new Error("Attempt to auto-create CodeSystem.content");
3722        else if (Configuration.doAutoCreate())
3723          this.content = new Enumeration<CodeSystemContentMode>(new CodeSystemContentModeEnumFactory()); // bb
3724      return this.content;
3725    }
3726
3727    public boolean hasContentElement() { 
3728      return this.content != null && !this.content.isEmpty();
3729    }
3730
3731    public boolean hasContent() { 
3732      return this.content != null && !this.content.isEmpty();
3733    }
3734
3735    /**
3736     * @param value {@link #content} (The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.). This is the underlying object with id, value and extensions. The accessor "getContent" gives direct access to the value
3737     */
3738    public CodeSystem setContentElement(Enumeration<CodeSystemContentMode> value) { 
3739      this.content = value;
3740      return this;
3741    }
3742
3743    /**
3744     * @return The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.
3745     */
3746    public CodeSystemContentMode getContent() { 
3747      return this.content == null ? null : this.content.getValue();
3748    }
3749
3750    /**
3751     * @param value The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.
3752     */
3753    public CodeSystem setContent(CodeSystemContentMode value) { 
3754        if (this.content == null)
3755          this.content = new Enumeration<CodeSystemContentMode>(new CodeSystemContentModeEnumFactory());
3756        this.content.setValue(value);
3757      return this;
3758    }
3759
3760    /**
3761     * @return {@link #supplements} (The canonical URL of the code system that this code system supplement is adding designations and properties to.). This is the underlying object with id, value and extensions. The accessor "getSupplements" gives direct access to the value
3762     */
3763    public CanonicalType getSupplementsElement() { 
3764      if (this.supplements == null)
3765        if (Configuration.errorOnAutoCreate())
3766          throw new Error("Attempt to auto-create CodeSystem.supplements");
3767        else if (Configuration.doAutoCreate())
3768          this.supplements = new CanonicalType(); // bb
3769      return this.supplements;
3770    }
3771
3772    public boolean hasSupplementsElement() { 
3773      return this.supplements != null && !this.supplements.isEmpty();
3774    }
3775
3776    public boolean hasSupplements() { 
3777      return this.supplements != null && !this.supplements.isEmpty();
3778    }
3779
3780    /**
3781     * @param value {@link #supplements} (The canonical URL of the code system that this code system supplement is adding designations and properties to.). This is the underlying object with id, value and extensions. The accessor "getSupplements" gives direct access to the value
3782     */
3783    public CodeSystem setSupplementsElement(CanonicalType value) { 
3784      this.supplements = value;
3785      return this;
3786    }
3787
3788    /**
3789     * @return The canonical URL of the code system that this code system supplement is adding designations and properties to.
3790     */
3791    public String getSupplements() { 
3792      return this.supplements == null ? null : this.supplements.getValue();
3793    }
3794
3795    /**
3796     * @param value The canonical URL of the code system that this code system supplement is adding designations and properties to.
3797     */
3798    public CodeSystem setSupplements(String value) { 
3799      if (Utilities.noString(value))
3800        this.supplements = null;
3801      else {
3802        if (this.supplements == null)
3803          this.supplements = new CanonicalType();
3804        this.supplements.setValue(value);
3805      }
3806      return this;
3807    }
3808
3809    /**
3810     * @return {@link #count} (The total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward.). This is the underlying object with id, value and extensions. The accessor "getCount" gives direct access to the value
3811     */
3812    public UnsignedIntType getCountElement() { 
3813      if (this.count == null)
3814        if (Configuration.errorOnAutoCreate())
3815          throw new Error("Attempt to auto-create CodeSystem.count");
3816        else if (Configuration.doAutoCreate())
3817          this.count = new UnsignedIntType(); // bb
3818      return this.count;
3819    }
3820
3821    public boolean hasCountElement() { 
3822      return this.count != null && !this.count.isEmpty();
3823    }
3824
3825    public boolean hasCount() { 
3826      return this.count != null && !this.count.isEmpty();
3827    }
3828
3829    /**
3830     * @param value {@link #count} (The total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward.). This is the underlying object with id, value and extensions. The accessor "getCount" gives direct access to the value
3831     */
3832    public CodeSystem setCountElement(UnsignedIntType value) { 
3833      this.count = value;
3834      return this;
3835    }
3836
3837    /**
3838     * @return The total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward.
3839     */
3840    public int getCount() { 
3841      return this.count == null || this.count.isEmpty() ? 0 : this.count.getValue();
3842    }
3843
3844    /**
3845     * @param value The total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward.
3846     */
3847    public CodeSystem setCount(int value) { 
3848        if (this.count == null)
3849          this.count = new UnsignedIntType();
3850        this.count.setValue(value);
3851      return this;
3852    }
3853
3854    /**
3855     * @return {@link #filter} (A filter that can be used in a value set compose statement when selecting concepts using a filter.)
3856     */
3857    public List<CodeSystemFilterComponent> getFilter() { 
3858      if (this.filter == null)
3859        this.filter = new ArrayList<CodeSystemFilterComponent>();
3860      return this.filter;
3861    }
3862
3863    /**
3864     * @return Returns a reference to <code>this</code> for easy method chaining
3865     */
3866    public CodeSystem setFilter(List<CodeSystemFilterComponent> theFilter) { 
3867      this.filter = theFilter;
3868      return this;
3869    }
3870
3871    public boolean hasFilter() { 
3872      if (this.filter == null)
3873        return false;
3874      for (CodeSystemFilterComponent item : this.filter)
3875        if (!item.isEmpty())
3876          return true;
3877      return false;
3878    }
3879
3880    public CodeSystemFilterComponent addFilter() { //3
3881      CodeSystemFilterComponent t = new CodeSystemFilterComponent();
3882      if (this.filter == null)
3883        this.filter = new ArrayList<CodeSystemFilterComponent>();
3884      this.filter.add(t);
3885      return t;
3886    }
3887
3888    public CodeSystem addFilter(CodeSystemFilterComponent t) { //3
3889      if (t == null)
3890        return this;
3891      if (this.filter == null)
3892        this.filter = new ArrayList<CodeSystemFilterComponent>();
3893      this.filter.add(t);
3894      return this;
3895    }
3896
3897    /**
3898     * @return The first repetition of repeating field {@link #filter}, creating it if it does not already exist {3}
3899     */
3900    public CodeSystemFilterComponent getFilterFirstRep() { 
3901      if (getFilter().isEmpty()) {
3902        addFilter();
3903      }
3904      return getFilter().get(0);
3905    }
3906
3907    /**
3908     * @return {@link #property} (A property defines an additional slot through which additional information can be provided about a concept.)
3909     */
3910    public List<PropertyComponent> getProperty() { 
3911      if (this.property == null)
3912        this.property = new ArrayList<PropertyComponent>();
3913      return this.property;
3914    }
3915
3916    /**
3917     * @return Returns a reference to <code>this</code> for easy method chaining
3918     */
3919    public CodeSystem setProperty(List<PropertyComponent> theProperty) { 
3920      this.property = theProperty;
3921      return this;
3922    }
3923
3924    public boolean hasProperty() { 
3925      if (this.property == null)
3926        return false;
3927      for (PropertyComponent item : this.property)
3928        if (!item.isEmpty())
3929          return true;
3930      return false;
3931    }
3932
3933    public PropertyComponent addProperty() { //3
3934      PropertyComponent t = new PropertyComponent();
3935      if (this.property == null)
3936        this.property = new ArrayList<PropertyComponent>();
3937      this.property.add(t);
3938      return t;
3939    }
3940
3941    public CodeSystem addProperty(PropertyComponent t) { //3
3942      if (t == null)
3943        return this;
3944      if (this.property == null)
3945        this.property = new ArrayList<PropertyComponent>();
3946      this.property.add(t);
3947      return this;
3948    }
3949
3950    /**
3951     * @return The first repetition of repeating field {@link #property}, creating it if it does not already exist {3}
3952     */
3953    public PropertyComponent getPropertyFirstRep() { 
3954      if (getProperty().isEmpty()) {
3955        addProperty();
3956      }
3957      return getProperty().get(0);
3958    }
3959
3960    /**
3961     * @return {@link #concept} (Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meanings of the hierarchical relationships are.)
3962     */
3963    public List<ConceptDefinitionComponent> getConcept() { 
3964      if (this.concept == null)
3965        this.concept = new ArrayList<ConceptDefinitionComponent>();
3966      return this.concept;
3967    }
3968
3969    /**
3970     * @return Returns a reference to <code>this</code> for easy method chaining
3971     */
3972    public CodeSystem setConcept(List<ConceptDefinitionComponent> theConcept) { 
3973      this.concept = theConcept;
3974      return this;
3975    }
3976
3977    public boolean hasConcept() { 
3978      if (this.concept == null)
3979        return false;
3980      for (ConceptDefinitionComponent item : this.concept)
3981        if (!item.isEmpty())
3982          return true;
3983      return false;
3984    }
3985
3986    public ConceptDefinitionComponent addConcept() { //3
3987      ConceptDefinitionComponent t = new ConceptDefinitionComponent();
3988      if (this.concept == null)
3989        this.concept = new ArrayList<ConceptDefinitionComponent>();
3990      this.concept.add(t);
3991      return t;
3992    }
3993
3994    public CodeSystem addConcept(ConceptDefinitionComponent t) { //3
3995      if (t == null)
3996        return this;
3997      if (this.concept == null)
3998        this.concept = new ArrayList<ConceptDefinitionComponent>();
3999      this.concept.add(t);
4000      return this;
4001    }
4002
4003    /**
4004     * @return The first repetition of repeating field {@link #concept}, creating it if it does not already exist {3}
4005     */
4006    public ConceptDefinitionComponent getConceptFirstRep() { 
4007      if (getConcept().isEmpty()) {
4008        addConcept();
4009      }
4010      return getConcept().get(0);
4011    }
4012
4013      protected void listChildren(List<Property> children) {
4014        super.listChildren(children);
4015        children.add(new Property("url", "uri", "An absolute URI that is used to identify this code system when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system.", 0, 1, url));
4016        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this code system when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
4017        children.add(new Property("version", "string", "The identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system 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 used in [Coding](datatypes.html#Coding).version.", 0, 1, version));
4018        children.add(new Property("name", "string", "A natural language name identifying the code system. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
4019        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the code system.", 0, 1, title));
4020        children.add(new Property("status", "code", "The date (and optionally time) when the code system resource was created or revised.", 0, 1, status));
4021        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this code system is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
4022        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the code system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the code system changes.", 0, 1, date));
4023        children.add(new Property("publisher", "string", "The name of the organization or individual that published the code system.", 0, 1, publisher));
4024        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));
4025        children.add(new Property("description", "markdown", "A free text natural language description of the code system from a consumer's perspective.", 0, 1, description));
4026        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 code system instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
4027        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the code system is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
4028        children.add(new Property("purpose", "markdown", "Explanation of why this code system is needed and why it has been designed as it has.", 0, 1, purpose));
4029        children.add(new Property("copyright", "markdown", "A copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system.", 0, 1, copyright));
4030        children.add(new Property("caseSensitive", "boolean", "If code comparison is case sensitive when codes within this system are compared to each other.", 0, 1, caseSensitive));
4031        children.add(new Property("valueSet", "canonical(ValueSet)", "Canonical reference to the value set that contains the entire code system.", 0, 1, valueSet));
4032        children.add(new Property("hierarchyMeaning", "code", "The meaning of the hierarchy of concepts as represented in this resource.", 0, 1, hierarchyMeaning));
4033        children.add(new Property("compositional", "boolean", "The code system defines a compositional (post-coordination) grammar.", 0, 1, compositional));
4034        children.add(new Property("versionNeeded", "boolean", "This flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system.", 0, 1, versionNeeded));
4035        children.add(new Property("content", "code", "The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.", 0, 1, content));
4036        children.add(new Property("supplements", "canonical(CodeSystem)", "The canonical URL of the code system that this code system supplement is adding designations and properties to.", 0, 1, supplements));
4037        children.add(new Property("count", "unsignedInt", "The total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward.", 0, 1, count));
4038        children.add(new Property("filter", "", "A filter that can be used in a value set compose statement when selecting concepts using a filter.", 0, java.lang.Integer.MAX_VALUE, filter));
4039        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));
4040        children.add(new Property("concept", "", "Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meanings of the hierarchical relationships are.", 0, java.lang.Integer.MAX_VALUE, concept));
4041      }
4042
4043      @Override
4044      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4045        switch (_hash) {
4046        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this code system when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this code system is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the code system is stored on different servers. This is used in [Coding](datatypes.html#Coding).system.", 0, 1, url);
4047        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this code system when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
4048        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the code system when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the code system 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 used in [Coding](datatypes.html#Coding).version.", 0, 1, version);
4049        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the code system. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
4050        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the code system.", 0, 1, title);
4051        case -892481550: /*status*/  return new Property("status", "code", "The date (and optionally time) when the code system resource was created or revised.", 0, 1, status);
4052        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this code system is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
4053        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the code system was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the code system changes.", 0, 1, date);
4054        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the code system.", 0, 1, publisher);
4055        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);
4056        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the code system from a consumer's perspective.", 0, 1, description);
4057        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 code system instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
4058        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the code system is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
4059        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this code system is needed and why it has been designed as it has.", 0, 1, purpose);
4060        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the code system and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the code system.", 0, 1, copyright);
4061        case -35616442: /*caseSensitive*/  return new Property("caseSensitive", "boolean", "If code comparison is case sensitive when codes within this system are compared to each other.", 0, 1, caseSensitive);
4062        case -1410174671: /*valueSet*/  return new Property("valueSet", "canonical(ValueSet)", "Canonical reference to the value set that contains the entire code system.", 0, 1, valueSet);
4063        case 1913078280: /*hierarchyMeaning*/  return new Property("hierarchyMeaning", "code", "The meaning of the hierarchy of concepts as represented in this resource.", 0, 1, hierarchyMeaning);
4064        case 1248023381: /*compositional*/  return new Property("compositional", "boolean", "The code system defines a compositional (post-coordination) grammar.", 0, 1, compositional);
4065        case 617270957: /*versionNeeded*/  return new Property("versionNeeded", "boolean", "This flag is used to signify that the code system does not commit to concept permanence across versions. If true, a version must be specified when referencing this code system.", 0, 1, versionNeeded);
4066        case 951530617: /*content*/  return new Property("content", "code", "The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.", 0, 1, content);
4067        case -596951334: /*supplements*/  return new Property("supplements", "canonical(CodeSystem)", "The canonical URL of the code system that this code system supplement is adding designations and properties to.", 0, 1, supplements);
4068        case 94851343: /*count*/  return new Property("count", "unsignedInt", "The total number of concepts defined by the code system. Where the code system has a compositional grammar, the basis of this count is defined by the system steward.", 0, 1, count);
4069        case -1274492040: /*filter*/  return new Property("filter", "", "A filter that can be used in a value set compose statement when selecting concepts using a filter.", 0, java.lang.Integer.MAX_VALUE, filter);
4070        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);
4071        case 951024232: /*concept*/  return new Property("concept", "", "Concepts that are in the code system. The concept definitions are inherently hierarchical, but the definitions must be consulted to determine what the meanings of the hierarchical relationships are.", 0, java.lang.Integer.MAX_VALUE, concept);
4072        default: return super.getNamedProperty(_hash, _name, _checkValid);
4073        }
4074
4075      }
4076
4077      @Override
4078      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4079        switch (hash) {
4080        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
4081        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
4082        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
4083        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
4084        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
4085        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
4086        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
4087        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
4088        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
4089        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
4090        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
4091        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
4092        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
4093        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
4094        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
4095        case -35616442: /*caseSensitive*/ return this.caseSensitive == null ? new Base[0] : new Base[] {this.caseSensitive}; // BooleanType
4096        case -1410174671: /*valueSet*/ return this.valueSet == null ? new Base[0] : new Base[] {this.valueSet}; // CanonicalType
4097        case 1913078280: /*hierarchyMeaning*/ return this.hierarchyMeaning == null ? new Base[0] : new Base[] {this.hierarchyMeaning}; // Enumeration<CodeSystemHierarchyMeaning>
4098        case 1248023381: /*compositional*/ return this.compositional == null ? new Base[0] : new Base[] {this.compositional}; // BooleanType
4099        case 617270957: /*versionNeeded*/ return this.versionNeeded == null ? new Base[0] : new Base[] {this.versionNeeded}; // BooleanType
4100        case 951530617: /*content*/ return this.content == null ? new Base[0] : new Base[] {this.content}; // Enumeration<CodeSystemContentMode>
4101        case -596951334: /*supplements*/ return this.supplements == null ? new Base[0] : new Base[] {this.supplements}; // CanonicalType
4102        case 94851343: /*count*/ return this.count == null ? new Base[0] : new Base[] {this.count}; // UnsignedIntType
4103        case -1274492040: /*filter*/ return this.filter == null ? new Base[0] : this.filter.toArray(new Base[this.filter.size()]); // CodeSystemFilterComponent
4104        case -993141291: /*property*/ return this.property == null ? new Base[0] : this.property.toArray(new Base[this.property.size()]); // PropertyComponent
4105        case 951024232: /*concept*/ return this.concept == null ? new Base[0] : this.concept.toArray(new Base[this.concept.size()]); // ConceptDefinitionComponent
4106        default: return super.getProperty(hash, name, checkValid);
4107        }
4108
4109      }
4110
4111      @Override
4112      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4113        switch (hash) {
4114        case 116079: // url
4115          this.url = TypeConvertor.castToUri(value); // UriType
4116          return value;
4117        case -1618432855: // identifier
4118          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
4119          return value;
4120        case 351608024: // version
4121          this.version = TypeConvertor.castToString(value); // StringType
4122          return value;
4123        case 3373707: // name
4124          this.name = TypeConvertor.castToString(value); // StringType
4125          return value;
4126        case 110371416: // title
4127          this.title = TypeConvertor.castToString(value); // StringType
4128          return value;
4129        case -892481550: // status
4130          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4131          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4132          return value;
4133        case -404562712: // experimental
4134          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4135          return value;
4136        case 3076014: // date
4137          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4138          return value;
4139        case 1447404028: // publisher
4140          this.publisher = TypeConvertor.castToString(value); // StringType
4141          return value;
4142        case 951526432: // contact
4143          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4144          return value;
4145        case -1724546052: // description
4146          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
4147          return value;
4148        case -669707736: // useContext
4149          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
4150          return value;
4151        case -507075711: // jurisdiction
4152          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4153          return value;
4154        case -220463842: // purpose
4155          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4156          return value;
4157        case 1522889671: // copyright
4158          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4159          return value;
4160        case -35616442: // caseSensitive
4161          this.caseSensitive = TypeConvertor.castToBoolean(value); // BooleanType
4162          return value;
4163        case -1410174671: // valueSet
4164          this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType
4165          return value;
4166        case 1913078280: // hierarchyMeaning
4167          value = new CodeSystemHierarchyMeaningEnumFactory().fromType(TypeConvertor.castToCode(value));
4168          this.hierarchyMeaning = (Enumeration) value; // Enumeration<CodeSystemHierarchyMeaning>
4169          return value;
4170        case 1248023381: // compositional
4171          this.compositional = TypeConvertor.castToBoolean(value); // BooleanType
4172          return value;
4173        case 617270957: // versionNeeded
4174          this.versionNeeded = TypeConvertor.castToBoolean(value); // BooleanType
4175          return value;
4176        case 951530617: // content
4177          value = new CodeSystemContentModeEnumFactory().fromType(TypeConvertor.castToCode(value));
4178          this.content = (Enumeration) value; // Enumeration<CodeSystemContentMode>
4179          return value;
4180        case -596951334: // supplements
4181          this.supplements = TypeConvertor.castToCanonical(value); // CanonicalType
4182          return value;
4183        case 94851343: // count
4184          this.count = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
4185          return value;
4186        case -1274492040: // filter
4187          this.getFilter().add((CodeSystemFilterComponent) value); // CodeSystemFilterComponent
4188          return value;
4189        case -993141291: // property
4190          this.getProperty().add((PropertyComponent) value); // PropertyComponent
4191          return value;
4192        case 951024232: // concept
4193          this.getConcept().add((ConceptDefinitionComponent) value); // ConceptDefinitionComponent
4194          return value;
4195        default: return super.setProperty(hash, name, value);
4196        }
4197
4198      }
4199
4200      @Override
4201      public Base setProperty(String name, Base value) throws FHIRException {
4202        if (name.equals("url")) {
4203          this.url = TypeConvertor.castToUri(value); // UriType
4204        } else if (name.equals("identifier")) {
4205          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
4206        } else if (name.equals("version")) {
4207          this.version = TypeConvertor.castToString(value); // StringType
4208        } else if (name.equals("name")) {
4209          this.name = TypeConvertor.castToString(value); // StringType
4210        } else if (name.equals("title")) {
4211          this.title = TypeConvertor.castToString(value); // StringType
4212        } else if (name.equals("status")) {
4213          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4214          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4215        } else if (name.equals("experimental")) {
4216          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4217        } else if (name.equals("date")) {
4218          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4219        } else if (name.equals("publisher")) {
4220          this.publisher = TypeConvertor.castToString(value); // StringType
4221        } else if (name.equals("contact")) {
4222          this.getContact().add(TypeConvertor.castToContactDetail(value));
4223        } else if (name.equals("description")) {
4224          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
4225        } else if (name.equals("useContext")) {
4226          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
4227        } else if (name.equals("jurisdiction")) {
4228          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
4229        } else if (name.equals("purpose")) {
4230          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4231        } else if (name.equals("copyright")) {
4232          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4233        } else if (name.equals("caseSensitive")) {
4234          this.caseSensitive = TypeConvertor.castToBoolean(value); // BooleanType
4235        } else if (name.equals("valueSet")) {
4236          this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType
4237        } else if (name.equals("hierarchyMeaning")) {
4238          value = new CodeSystemHierarchyMeaningEnumFactory().fromType(TypeConvertor.castToCode(value));
4239          this.hierarchyMeaning = (Enumeration) value; // Enumeration<CodeSystemHierarchyMeaning>
4240        } else if (name.equals("compositional")) {
4241          this.compositional = TypeConvertor.castToBoolean(value); // BooleanType
4242        } else if (name.equals("versionNeeded")) {
4243          this.versionNeeded = TypeConvertor.castToBoolean(value); // BooleanType
4244        } else if (name.equals("content")) {
4245          value = new CodeSystemContentModeEnumFactory().fromType(TypeConvertor.castToCode(value));
4246          this.content = (Enumeration) value; // Enumeration<CodeSystemContentMode>
4247        } else if (name.equals("supplements")) {
4248          this.supplements = TypeConvertor.castToCanonical(value); // CanonicalType
4249        } else if (name.equals("count")) {
4250          this.count = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
4251        } else if (name.equals("filter")) {
4252          this.getFilter().add((CodeSystemFilterComponent) value);
4253        } else if (name.equals("property")) {
4254          this.getProperty().add((PropertyComponent) value);
4255        } else if (name.equals("concept")) {
4256          this.getConcept().add((ConceptDefinitionComponent) value);
4257        } else
4258          return super.setProperty(name, value);
4259        return value;
4260      }
4261
4262      @Override
4263      public Base makeProperty(int hash, String name) throws FHIRException {
4264        switch (hash) {
4265        case 116079:  return getUrlElement();
4266        case -1618432855:  return addIdentifier(); 
4267        case 351608024:  return getVersionElement();
4268        case 3373707:  return getNameElement();
4269        case 110371416:  return getTitleElement();
4270        case -892481550:  return getStatusElement();
4271        case -404562712:  return getExperimentalElement();
4272        case 3076014:  return getDateElement();
4273        case 1447404028:  return getPublisherElement();
4274        case 951526432:  return addContact(); 
4275        case -1724546052:  return getDescriptionElement();
4276        case -669707736:  return addUseContext(); 
4277        case -507075711:  return addJurisdiction(); 
4278        case -220463842:  return getPurposeElement();
4279        case 1522889671:  return getCopyrightElement();
4280        case -35616442:  return getCaseSensitiveElement();
4281        case -1410174671:  return getValueSetElement();
4282        case 1913078280:  return getHierarchyMeaningElement();
4283        case 1248023381:  return getCompositionalElement();
4284        case 617270957:  return getVersionNeededElement();
4285        case 951530617:  return getContentElement();
4286        case -596951334:  return getSupplementsElement();
4287        case 94851343:  return getCountElement();
4288        case -1274492040:  return addFilter(); 
4289        case -993141291:  return addProperty(); 
4290        case 951024232:  return addConcept(); 
4291        default: return super.makeProperty(hash, name);
4292        }
4293
4294      }
4295
4296      @Override
4297      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
4298        switch (hash) {
4299        case 116079: /*url*/ return new String[] {"uri"};
4300        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
4301        case 351608024: /*version*/ return new String[] {"string"};
4302        case 3373707: /*name*/ return new String[] {"string"};
4303        case 110371416: /*title*/ return new String[] {"string"};
4304        case -892481550: /*status*/ return new String[] {"code"};
4305        case -404562712: /*experimental*/ return new String[] {"boolean"};
4306        case 3076014: /*date*/ return new String[] {"dateTime"};
4307        case 1447404028: /*publisher*/ return new String[] {"string"};
4308        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
4309        case -1724546052: /*description*/ return new String[] {"markdown"};
4310        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
4311        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
4312        case -220463842: /*purpose*/ return new String[] {"markdown"};
4313        case 1522889671: /*copyright*/ return new String[] {"markdown"};
4314        case -35616442: /*caseSensitive*/ return new String[] {"boolean"};
4315        case -1410174671: /*valueSet*/ return new String[] {"canonical"};
4316        case 1913078280: /*hierarchyMeaning*/ return new String[] {"code"};
4317        case 1248023381: /*compositional*/ return new String[] {"boolean"};
4318        case 617270957: /*versionNeeded*/ return new String[] {"boolean"};
4319        case 951530617: /*content*/ return new String[] {"code"};
4320        case -596951334: /*supplements*/ return new String[] {"canonical"};
4321        case 94851343: /*count*/ return new String[] {"unsignedInt"};
4322        case -1274492040: /*filter*/ return new String[] {};
4323        case -993141291: /*property*/ return new String[] {};
4324        case 951024232: /*concept*/ return new String[] {};
4325        default: return super.getTypesForProperty(hash, name);
4326        }
4327
4328      }
4329
4330      @Override
4331      public Base addChild(String name) throws FHIRException {
4332        if (name.equals("url")) {
4333          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.url");
4334        }
4335        else if (name.equals("identifier")) {
4336          return addIdentifier();
4337        }
4338        else if (name.equals("version")) {
4339          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.version");
4340        }
4341        else if (name.equals("name")) {
4342          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.name");
4343        }
4344        else if (name.equals("title")) {
4345          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.title");
4346        }
4347        else if (name.equals("status")) {
4348          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.status");
4349        }
4350        else if (name.equals("experimental")) {
4351          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.experimental");
4352        }
4353        else if (name.equals("date")) {
4354          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.date");
4355        }
4356        else if (name.equals("publisher")) {
4357          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.publisher");
4358        }
4359        else if (name.equals("contact")) {
4360          return addContact();
4361        }
4362        else if (name.equals("description")) {
4363          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.description");
4364        }
4365        else if (name.equals("useContext")) {
4366          return addUseContext();
4367        }
4368        else if (name.equals("jurisdiction")) {
4369          return addJurisdiction();
4370        }
4371        else if (name.equals("purpose")) {
4372          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.purpose");
4373        }
4374        else if (name.equals("copyright")) {
4375          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.copyright");
4376        }
4377        else if (name.equals("caseSensitive")) {
4378          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.caseSensitive");
4379        }
4380        else if (name.equals("valueSet")) {
4381          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.valueSet");
4382        }
4383        else if (name.equals("hierarchyMeaning")) {
4384          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.hierarchyMeaning");
4385        }
4386        else if (name.equals("compositional")) {
4387          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.compositional");
4388        }
4389        else if (name.equals("versionNeeded")) {
4390          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.versionNeeded");
4391        }
4392        else if (name.equals("content")) {
4393          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.content");
4394        }
4395        else if (name.equals("supplements")) {
4396          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.supplements");
4397        }
4398        else if (name.equals("count")) {
4399          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.count");
4400        }
4401        else if (name.equals("filter")) {
4402          return addFilter();
4403        }
4404        else if (name.equals("property")) {
4405          return addProperty();
4406        }
4407        else if (name.equals("concept")) {
4408          return addConcept();
4409        }
4410        else
4411          return super.addChild(name);
4412      }
4413
4414  public String fhirType() {
4415    return "CodeSystem";
4416
4417  }
4418
4419      public CodeSystem copy() {
4420        CodeSystem dst = new CodeSystem();
4421        copyValues(dst);
4422        return dst;
4423      }
4424
4425      public void copyValues(CodeSystem dst) {
4426        super.copyValues(dst);
4427        dst.url = url == null ? null : url.copy();
4428        if (identifier != null) {
4429          dst.identifier = new ArrayList<Identifier>();
4430          for (Identifier i : identifier)
4431            dst.identifier.add(i.copy());
4432        };
4433        dst.version = version == null ? null : version.copy();
4434        dst.name = name == null ? null : name.copy();
4435        dst.title = title == null ? null : title.copy();
4436        dst.status = status == null ? null : status.copy();
4437        dst.experimental = experimental == null ? null : experimental.copy();
4438        dst.date = date == null ? null : date.copy();
4439        dst.publisher = publisher == null ? null : publisher.copy();
4440        if (contact != null) {
4441          dst.contact = new ArrayList<ContactDetail>();
4442          for (ContactDetail i : contact)
4443            dst.contact.add(i.copy());
4444        };
4445        dst.description = description == null ? null : description.copy();
4446        if (useContext != null) {
4447          dst.useContext = new ArrayList<UsageContext>();
4448          for (UsageContext i : useContext)
4449            dst.useContext.add(i.copy());
4450        };
4451        if (jurisdiction != null) {
4452          dst.jurisdiction = new ArrayList<CodeableConcept>();
4453          for (CodeableConcept i : jurisdiction)
4454            dst.jurisdiction.add(i.copy());
4455        };
4456        dst.purpose = purpose == null ? null : purpose.copy();
4457        dst.copyright = copyright == null ? null : copyright.copy();
4458        dst.caseSensitive = caseSensitive == null ? null : caseSensitive.copy();
4459        dst.valueSet = valueSet == null ? null : valueSet.copy();
4460        dst.hierarchyMeaning = hierarchyMeaning == null ? null : hierarchyMeaning.copy();
4461        dst.compositional = compositional == null ? null : compositional.copy();
4462        dst.versionNeeded = versionNeeded == null ? null : versionNeeded.copy();
4463        dst.content = content == null ? null : content.copy();
4464        dst.supplements = supplements == null ? null : supplements.copy();
4465        dst.count = count == null ? null : count.copy();
4466        if (filter != null) {
4467          dst.filter = new ArrayList<CodeSystemFilterComponent>();
4468          for (CodeSystemFilterComponent i : filter)
4469            dst.filter.add(i.copy());
4470        };
4471        if (property != null) {
4472          dst.property = new ArrayList<PropertyComponent>();
4473          for (PropertyComponent i : property)
4474            dst.property.add(i.copy());
4475        };
4476        if (concept != null) {
4477          dst.concept = new ArrayList<ConceptDefinitionComponent>();
4478          for (ConceptDefinitionComponent i : concept)
4479            dst.concept.add(i.copy());
4480        };
4481      }
4482
4483      protected CodeSystem typedCopy() {
4484        return copy();
4485      }
4486
4487      @Override
4488      public boolean equalsDeep(Base other_) {
4489        if (!super.equalsDeep(other_))
4490          return false;
4491        if (!(other_ instanceof CodeSystem))
4492          return false;
4493        CodeSystem o = (CodeSystem) other_;
4494        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
4495           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(status, o.status, true)
4496           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
4497           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
4498           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true)
4499           && compareDeep(caseSensitive, o.caseSensitive, true) && compareDeep(valueSet, o.valueSet, true)
4500           && compareDeep(hierarchyMeaning, o.hierarchyMeaning, true) && compareDeep(compositional, o.compositional, true)
4501           && compareDeep(versionNeeded, o.versionNeeded, true) && compareDeep(content, o.content, true) && compareDeep(supplements, o.supplements, true)
4502           && compareDeep(count, o.count, true) && compareDeep(filter, o.filter, true) && compareDeep(property, o.property, true)
4503           && compareDeep(concept, o.concept, true);
4504      }
4505
4506      @Override
4507      public boolean equalsShallow(Base other_) {
4508        if (!super.equalsShallow(other_))
4509          return false;
4510        if (!(other_ instanceof CodeSystem))
4511          return false;
4512        CodeSystem o = (CodeSystem) other_;
4513        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
4514           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
4515           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
4516           && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true) && compareValues(caseSensitive, o.caseSensitive, true)
4517           && compareValues(valueSet, o.valueSet, true) && compareValues(hierarchyMeaning, o.hierarchyMeaning, true)
4518           && compareValues(compositional, o.compositional, true) && compareValues(versionNeeded, o.versionNeeded, true)
4519           && compareValues(content, o.content, true) && compareValues(supplements, o.supplements, true) && compareValues(count, o.count, true)
4520          ;
4521      }
4522
4523      public boolean isEmpty() {
4524        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
4525          , name, title, status, experimental, date, publisher, contact, description, useContext
4526          , jurisdiction, purpose, copyright, caseSensitive, valueSet, hierarchyMeaning, compositional
4527          , versionNeeded, content, supplements, count, filter, property, concept);
4528      }
4529
4530  @Override
4531  public ResourceType getResourceType() {
4532    return ResourceType.CodeSystem;
4533   }
4534
4535 /**
4536   * Search parameter: <b>code</b>
4537   * <p>
4538   * Description: <b>A code defined in the code system</b><br>
4539   * Type: <b>token</b><br>
4540   * Path: <b>CodeSystem.concept.code</b><br>
4541   * </p>
4542   */
4543  @SearchParamDefinition(name="code", path="CodeSystem.concept.code", description="A code defined in the code system", type="token" )
4544  public static final String SP_CODE = "code";
4545 /**
4546   * <b>Fluent Client</b> search parameter constant for <b>code</b>
4547   * <p>
4548   * Description: <b>A code defined in the code system</b><br>
4549   * Type: <b>token</b><br>
4550   * Path: <b>CodeSystem.concept.code</b><br>
4551   * </p>
4552   */
4553  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
4554
4555 /**
4556   * Search parameter: <b>content-mode</b>
4557   * <p>
4558   * Description: <b>not-present | example | fragment | complete | supplement</b><br>
4559   * Type: <b>token</b><br>
4560   * Path: <b>CodeSystem.content</b><br>
4561   * </p>
4562   */
4563  @SearchParamDefinition(name="content-mode", path="CodeSystem.content", description="not-present | example | fragment | complete | supplement", type="token" )
4564  public static final String SP_CONTENT_MODE = "content-mode";
4565 /**
4566   * <b>Fluent Client</b> search parameter constant for <b>content-mode</b>
4567   * <p>
4568   * Description: <b>not-present | example | fragment | complete | supplement</b><br>
4569   * Type: <b>token</b><br>
4570   * Path: <b>CodeSystem.content</b><br>
4571   * </p>
4572   */
4573  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTENT_MODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTENT_MODE);
4574
4575 /**
4576   * Search parameter: <b>language</b>
4577   * <p>
4578   * Description: <b>A language in which a designation is provided</b><br>
4579   * Type: <b>token</b><br>
4580   * Path: <b>CodeSystem.concept.designation.language</b><br>
4581   * </p>
4582   */
4583  @SearchParamDefinition(name="language", path="CodeSystem.concept.designation.language", description="A language in which a designation is provided", type="token" )
4584  public static final String SP_LANGUAGE = "language";
4585 /**
4586   * <b>Fluent Client</b> search parameter constant for <b>language</b>
4587   * <p>
4588   * Description: <b>A language in which a designation is provided</b><br>
4589   * Type: <b>token</b><br>
4590   * Path: <b>CodeSystem.concept.designation.language</b><br>
4591   * </p>
4592   */
4593  public static final ca.uhn.fhir.rest.gclient.TokenClientParam LANGUAGE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_LANGUAGE);
4594
4595 /**
4596   * Search parameter: <b>supplements</b>
4597   * <p>
4598   * Description: <b>Find code system supplements for the referenced code system</b><br>
4599   * Type: <b>reference</b><br>
4600   * Path: <b>CodeSystem.supplements</b><br>
4601   * </p>
4602   */
4603  @SearchParamDefinition(name="supplements", path="CodeSystem.supplements", description="Find code system supplements for the referenced code system", type="reference", target={CodeSystem.class } )
4604  public static final String SP_SUPPLEMENTS = "supplements";
4605 /**
4606   * <b>Fluent Client</b> search parameter constant for <b>supplements</b>
4607   * <p>
4608   * Description: <b>Find code system supplements for the referenced code system</b><br>
4609   * Type: <b>reference</b><br>
4610   * Path: <b>CodeSystem.supplements</b><br>
4611   * </p>
4612   */
4613  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUPPLEMENTS = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUPPLEMENTS);
4614
4615/**
4616   * Constant for fluent queries to be used to add include statements. Specifies
4617   * the path value of "<b>CodeSystem:supplements</b>".
4618   */
4619  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUPPLEMENTS = new ca.uhn.fhir.model.api.Include("CodeSystem:supplements").toLocked();
4620
4621 /**
4622   * Search parameter: <b>system</b>
4623   * <p>
4624   * Description: <b>The system for any codes defined by this code system (same as 'url')</b><br>
4625   * Type: <b>uri</b><br>
4626   * Path: <b>CodeSystem.url</b><br>
4627   * </p>
4628   */
4629  @SearchParamDefinition(name="system", path="CodeSystem.url", description="The system for any codes defined by this code system (same as 'url')", type="uri" )
4630  public static final String SP_SYSTEM = "system";
4631 /**
4632   * <b>Fluent Client</b> search parameter constant for <b>system</b>
4633   * <p>
4634   * Description: <b>The system for any codes defined by this code system (same as 'url')</b><br>
4635   * Type: <b>uri</b><br>
4636   * Path: <b>CodeSystem.url</b><br>
4637   * </p>
4638   */
4639  public static final ca.uhn.fhir.rest.gclient.UriClientParam SYSTEM = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_SYSTEM);
4640
4641 /**
4642   * Search parameter: <b>context-quantity</b>
4643   * <p>
4644   * Description: <b>Multiple Resources: 
4645
4646* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
4647* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
4648* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
4649* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
4650* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
4651* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
4652* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
4653* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
4654* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
4655* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
4656* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
4657* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
4658* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
4659* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
4660</b><br>
4661   * Type: <b>quantity</b><br>
4662   * Path: <b>(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
4663   * </p>
4664   */
4665  @SearchParamDefinition(name="context-quantity", path="(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set\r\n", type="quantity" )
4666  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
4667 /**
4668   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
4669   * <p>
4670   * Description: <b>Multiple Resources: 
4671
4672* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
4673* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
4674* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
4675* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
4676* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
4677* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
4678* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
4679* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
4680* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
4681* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
4682* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
4683* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
4684* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
4685* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
4686</b><br>
4687   * Type: <b>quantity</b><br>
4688   * Path: <b>(CapabilityStatement.useContext.value as Quantity) | (CapabilityStatement.useContext.value as Range) | (CodeSystem.useContext.value as Quantity) | (CodeSystem.useContext.value as Range) | (CompartmentDefinition.useContext.value as Quantity) | (CompartmentDefinition.useContext.value as Range) | (ConceptMap.useContext.value as Quantity) | (ConceptMap.useContext.value as Range) | (GraphDefinition.useContext.value as Quantity) | (GraphDefinition.useContext.value as Range) | (ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range) | (MessageDefinition.useContext.value as Quantity) | (MessageDefinition.useContext.value as Range) | (NamingSystem.useContext.value as Quantity) | (NamingSystem.useContext.value as Range) | (OperationDefinition.useContext.value as Quantity) | (OperationDefinition.useContext.value as Range) | (SearchParameter.useContext.value as Quantity) | (SearchParameter.useContext.value as Range) | (StructureDefinition.useContext.value as Quantity) | (StructureDefinition.useContext.value as Range) | (StructureMap.useContext.value as Quantity) | (StructureMap.useContext.value as Range) | (TerminologyCapabilities.useContext.value as Quantity) | (TerminologyCapabilities.useContext.value as Range) | (ValueSet.useContext.value as Quantity) | (ValueSet.useContext.value as Range)</b><br>
4689   * </p>
4690   */
4691  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
4692
4693 /**
4694   * Search parameter: <b>context-type-quantity</b>
4695   * <p>
4696   * Description: <b>Multiple Resources: 
4697
4698* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
4699* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
4700* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
4701* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
4702* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
4703* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
4704* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
4705* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
4706* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
4707* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
4708* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
4709* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
4710* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
4711* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
4712</b><br>
4713   * Type: <b>composite</b><br>
4714   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
4715   * </p>
4716   */
4717  @SearchParamDefinition(name="context-type-quantity", path="CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context-quantity"} )
4718  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
4719 /**
4720   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
4721   * <p>
4722   * Description: <b>Multiple Resources: 
4723
4724* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
4725* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
4726* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
4727* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
4728* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
4729* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
4730* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
4731* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
4732* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
4733* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
4734* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
4735* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
4736* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
4737* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
4738</b><br>
4739   * Type: <b>composite</b><br>
4740   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
4741   * </p>
4742   */
4743  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);
4744
4745 /**
4746   * Search parameter: <b>context-type-value</b>
4747   * <p>
4748   * Description: <b>Multiple Resources: 
4749
4750* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4751* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4752* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4753* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4754* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4755* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4756* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4757* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4758* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4759* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4760* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4761* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4762* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4763* [ValueSet](valueset.html): A use context type and value assigned to the value set
4764</b><br>
4765   * Type: <b>composite</b><br>
4766   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
4767   * </p>
4768   */
4769  @SearchParamDefinition(name="context-type-value", path="CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context type and value assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context type and value assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context type and value assigned to the value set\r\n", type="composite", compositeOf={"context-type", "context"} )
4770  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
4771 /**
4772   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
4773   * <p>
4774   * Description: <b>Multiple Resources: 
4775
4776* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4777* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4778* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4779* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4780* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4781* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4782* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4783* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4784* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4785* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4786* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4787* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4788* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4789* [ValueSet](valueset.html): A use context type and value assigned to the value set
4790</b><br>
4791   * Type: <b>composite</b><br>
4792   * Path: <b>CapabilityStatement.useContext | CodeSystem.useContext | CompartmentDefinition.useContext | ConceptMap.useContext | GraphDefinition.useContext | ImplementationGuide.useContext | MessageDefinition.useContext | NamingSystem.useContext | OperationDefinition.useContext | SearchParameter.useContext | StructureDefinition.useContext | StructureMap.useContext | TerminologyCapabilities.useContext | ValueSet.useContext</b><br>
4793   * </p>
4794   */
4795  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);
4796
4797 /**
4798   * Search parameter: <b>context-type</b>
4799   * <p>
4800   * Description: <b>Multiple Resources: 
4801
4802* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4803* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4804* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4805* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4806* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4807* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4808* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4809* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4810* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4811* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4812* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4813* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4814* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4815* [ValueSet](valueset.html): A type of use context assigned to the value set
4816</b><br>
4817   * Type: <b>token</b><br>
4818   * Path: <b>CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code</b><br>
4819   * </p>
4820   */
4821  @SearchParamDefinition(name="context-type", path="CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A type of use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A type of use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A type of use context assigned to the value set\r\n", type="token" )
4822  public static final String SP_CONTEXT_TYPE = "context-type";
4823 /**
4824   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
4825   * <p>
4826   * Description: <b>Multiple Resources: 
4827
4828* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4829* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4830* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4831* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4832* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4833* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4834* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4835* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4836* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4837* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4838* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4839* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4840* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4841* [ValueSet](valueset.html): A type of use context assigned to the value set
4842</b><br>
4843   * Type: <b>token</b><br>
4844   * Path: <b>CapabilityStatement.useContext.code | CodeSystem.useContext.code | CompartmentDefinition.useContext.code | ConceptMap.useContext.code | GraphDefinition.useContext.code | ImplementationGuide.useContext.code | MessageDefinition.useContext.code | NamingSystem.useContext.code | OperationDefinition.useContext.code | SearchParameter.useContext.code | StructureDefinition.useContext.code | StructureMap.useContext.code | TerminologyCapabilities.useContext.code | ValueSet.useContext.code</b><br>
4845   * </p>
4846   */
4847  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
4848
4849 /**
4850   * Search parameter: <b>context</b>
4851   * <p>
4852   * Description: <b>Multiple Resources: 
4853
4854* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4855* [CodeSystem](codesystem.html): A use context assigned to the code system
4856* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4857* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4858* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4859* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4860* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4861* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4862* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4863* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4864* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4865* [StructureMap](structuremap.html): A use context assigned to the structure map
4866* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4867* [ValueSet](valueset.html): A use context assigned to the value set
4868</b><br>
4869   * Type: <b>token</b><br>
4870   * Path: <b>(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
4871   * </p>
4872   */
4873  @SearchParamDefinition(name="context", path="(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement\r\n* [CodeSystem](codesystem.html): A use context assigned to the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition\r\n* [ConceptMap](conceptmap.html): A use context assigned to the concept map\r\n* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition\r\n* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide\r\n* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition\r\n* [NamingSystem](namingsystem.html): A use context assigned to the naming system\r\n* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition\r\n* [SearchParameter](searchparameter.html): A use context assigned to the search parameter\r\n* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition\r\n* [StructureMap](structuremap.html): A use context assigned to the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities\r\n* [ValueSet](valueset.html): A use context assigned to the value set\r\n", type="token" )
4874  public static final String SP_CONTEXT = "context";
4875 /**
4876   * <b>Fluent Client</b> search parameter constant for <b>context</b>
4877   * <p>
4878   * Description: <b>Multiple Resources: 
4879
4880* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4881* [CodeSystem](codesystem.html): A use context assigned to the code system
4882* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4883* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4884* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4885* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4886* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4887* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4888* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4889* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4890* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4891* [StructureMap](structuremap.html): A use context assigned to the structure map
4892* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4893* [ValueSet](valueset.html): A use context assigned to the value set
4894</b><br>
4895   * Type: <b>token</b><br>
4896   * Path: <b>(CapabilityStatement.useContext.value as CodeableConcept) | (CodeSystem.useContext.value as CodeableConcept) | (CompartmentDefinition.useContext.value as CodeableConcept) | (ConceptMap.useContext.value as CodeableConcept) | (GraphDefinition.useContext.value as CodeableConcept) | (ImplementationGuide.useContext.value as CodeableConcept) | (MessageDefinition.useContext.value as CodeableConcept) | (NamingSystem.useContext.value as CodeableConcept) | (OperationDefinition.useContext.value as CodeableConcept) | (SearchParameter.useContext.value as CodeableConcept) | (StructureDefinition.useContext.value as CodeableConcept) | (StructureMap.useContext.value as CodeableConcept) | (TerminologyCapabilities.useContext.value as CodeableConcept) | (ValueSet.useContext.value as CodeableConcept)</b><br>
4897   * </p>
4898   */
4899  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
4900
4901 /**
4902   * Search parameter: <b>date</b>
4903   * <p>
4904   * Description: <b>Multiple Resources: 
4905
4906* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4907* [CodeSystem](codesystem.html): The code system publication date
4908* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4909* [ConceptMap](conceptmap.html): The concept map publication date
4910* [GraphDefinition](graphdefinition.html): The graph definition publication date
4911* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4912* [MessageDefinition](messagedefinition.html): The message definition publication date
4913* [NamingSystem](namingsystem.html): The naming system publication date
4914* [OperationDefinition](operationdefinition.html): The operation definition publication date
4915* [SearchParameter](searchparameter.html): The search parameter publication date
4916* [StructureDefinition](structuredefinition.html): The structure definition publication date
4917* [StructureMap](structuremap.html): The structure map publication date
4918* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4919* [ValueSet](valueset.html): The value set publication date
4920</b><br>
4921   * Type: <b>date</b><br>
4922   * Path: <b>CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date</b><br>
4923   * </p>
4924   */
4925  @SearchParamDefinition(name="date", path="CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The capability statement publication date\r\n* [CodeSystem](codesystem.html): The code system publication date\r\n* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date\r\n* [ConceptMap](conceptmap.html): The concept map publication date\r\n* [GraphDefinition](graphdefinition.html): The graph definition publication date\r\n* [ImplementationGuide](implementationguide.html): The implementation guide publication date\r\n* [MessageDefinition](messagedefinition.html): The message definition publication date\r\n* [NamingSystem](namingsystem.html): The naming system publication date\r\n* [OperationDefinition](operationdefinition.html): The operation definition publication date\r\n* [SearchParameter](searchparameter.html): The search parameter publication date\r\n* [StructureDefinition](structuredefinition.html): The structure definition publication date\r\n* [StructureMap](structuremap.html): The structure map publication date\r\n* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date\r\n* [ValueSet](valueset.html): The value set publication date\r\n", type="date" )
4926  public static final String SP_DATE = "date";
4927 /**
4928   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4929   * <p>
4930   * Description: <b>Multiple Resources: 
4931
4932* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4933* [CodeSystem](codesystem.html): The code system publication date
4934* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4935* [ConceptMap](conceptmap.html): The concept map publication date
4936* [GraphDefinition](graphdefinition.html): The graph definition publication date
4937* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4938* [MessageDefinition](messagedefinition.html): The message definition publication date
4939* [NamingSystem](namingsystem.html): The naming system publication date
4940* [OperationDefinition](operationdefinition.html): The operation definition publication date
4941* [SearchParameter](searchparameter.html): The search parameter publication date
4942* [StructureDefinition](structuredefinition.html): The structure definition publication date
4943* [StructureMap](structuremap.html): The structure map publication date
4944* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4945* [ValueSet](valueset.html): The value set publication date
4946</b><br>
4947   * Type: <b>date</b><br>
4948   * Path: <b>CapabilityStatement.date | CodeSystem.date | CompartmentDefinition.date | ConceptMap.date | GraphDefinition.date | ImplementationGuide.date | MessageDefinition.date | NamingSystem.date | OperationDefinition.date | SearchParameter.date | StructureDefinition.date | StructureMap.date | TerminologyCapabilities.date | ValueSet.date</b><br>
4949   * </p>
4950   */
4951  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4952
4953 /**
4954   * Search parameter: <b>description</b>
4955   * <p>
4956   * Description: <b>Multiple Resources: 
4957
4958* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4959* [CodeSystem](codesystem.html): The description of the code system
4960* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4961* [ConceptMap](conceptmap.html): The description of the concept map
4962* [GraphDefinition](graphdefinition.html): The description of the graph definition
4963* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4964* [MessageDefinition](messagedefinition.html): The description of the message definition
4965* [NamingSystem](namingsystem.html): The description of the naming system
4966* [OperationDefinition](operationdefinition.html): The description of the operation definition
4967* [SearchParameter](searchparameter.html): The description of the search parameter
4968* [StructureDefinition](structuredefinition.html): The description of the structure definition
4969* [StructureMap](structuremap.html): The description of the structure map
4970* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4971* [ValueSet](valueset.html): The description of the value set
4972</b><br>
4973   * Type: <b>string</b><br>
4974   * Path: <b>CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description</b><br>
4975   * </p>
4976   */
4977  @SearchParamDefinition(name="description", path="CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The description of the capability statement\r\n* [CodeSystem](codesystem.html): The description of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition\r\n* [ConceptMap](conceptmap.html): The description of the concept map\r\n* [GraphDefinition](graphdefinition.html): The description of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The description of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The description of the message definition\r\n* [NamingSystem](namingsystem.html): The description of the naming system\r\n* [OperationDefinition](operationdefinition.html): The description of the operation definition\r\n* [SearchParameter](searchparameter.html): The description of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The description of the structure definition\r\n* [StructureMap](structuremap.html): The description of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities\r\n* [ValueSet](valueset.html): The description of the value set\r\n", type="string" )
4978  public static final String SP_DESCRIPTION = "description";
4979 /**
4980   * <b>Fluent Client</b> search parameter constant for <b>description</b>
4981   * <p>
4982   * Description: <b>Multiple Resources: 
4983
4984* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4985* [CodeSystem](codesystem.html): The description of the code system
4986* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4987* [ConceptMap](conceptmap.html): The description of the concept map
4988* [GraphDefinition](graphdefinition.html): The description of the graph definition
4989* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4990* [MessageDefinition](messagedefinition.html): The description of the message definition
4991* [NamingSystem](namingsystem.html): The description of the naming system
4992* [OperationDefinition](operationdefinition.html): The description of the operation definition
4993* [SearchParameter](searchparameter.html): The description of the search parameter
4994* [StructureDefinition](structuredefinition.html): The description of the structure definition
4995* [StructureMap](structuremap.html): The description of the structure map
4996* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4997* [ValueSet](valueset.html): The description of the value set
4998</b><br>
4999   * Type: <b>string</b><br>
5000   * Path: <b>CapabilityStatement.description | CodeSystem.description | CompartmentDefinition.description | ConceptMap.description | GraphDefinition.description | ImplementationGuide.description | MessageDefinition.description | NamingSystem.description | OperationDefinition.description | SearchParameter.description | StructureDefinition.description | StructureMap.description | TerminologyCapabilities.description | ValueSet.description</b><br>
5001   * </p>
5002   */
5003  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
5004
5005 /**
5006   * Search parameter: <b>identifier</b>
5007   * <p>
5008   * Description: <b>Multiple Resources: 
5009
5010* [CodeSystem](codesystem.html): External identifier for the code system
5011* [ConceptMap](conceptmap.html): External identifier for the concept map
5012* [MessageDefinition](messagedefinition.html): External identifier for the message definition
5013* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
5014* [StructureMap](structuremap.html): External identifier for the structure map
5015* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
5016* [ValueSet](valueset.html): External identifier for the value set
5017</b><br>
5018   * Type: <b>token</b><br>
5019   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
5020   * </p>
5021   */
5022  @SearchParamDefinition(name="identifier", path="CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
5023  public static final String SP_IDENTIFIER = "identifier";
5024 /**
5025   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
5026   * <p>
5027   * Description: <b>Multiple Resources: 
5028
5029* [CodeSystem](codesystem.html): External identifier for the code system
5030* [ConceptMap](conceptmap.html): External identifier for the concept map
5031* [MessageDefinition](messagedefinition.html): External identifier for the message definition
5032* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
5033* [StructureMap](structuremap.html): External identifier for the structure map
5034* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
5035* [ValueSet](valueset.html): External identifier for the value set
5036</b><br>
5037   * Type: <b>token</b><br>
5038   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
5039   * </p>
5040   */
5041  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
5042
5043 /**
5044   * Search parameter: <b>jurisdiction</b>
5045   * <p>
5046   * Description: <b>Multiple Resources: 
5047
5048* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
5049* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
5050* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
5051* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
5052* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
5053* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
5054* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
5055* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
5056* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
5057* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
5058* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
5059* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
5060* [ValueSet](valueset.html): Intended jurisdiction for the value set
5061</b><br>
5062   * Type: <b>token</b><br>
5063   * Path: <b>CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction</b><br>
5064   * </p>
5065   */
5066  @SearchParamDefinition(name="jurisdiction", path="CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement\r\n* [CodeSystem](codesystem.html): Intended jurisdiction for the code system\r\n* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map\r\n* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition\r\n* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition\r\n* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system\r\n* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition\r\n* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter\r\n* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition\r\n* [StructureMap](structuremap.html): Intended jurisdiction for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities\r\n* [ValueSet](valueset.html): Intended jurisdiction for the value set\r\n", type="token" )
5067  public static final String SP_JURISDICTION = "jurisdiction";
5068 /**
5069   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
5070   * <p>
5071   * Description: <b>Multiple Resources: 
5072
5073* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
5074* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
5075* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
5076* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
5077* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
5078* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
5079* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
5080* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
5081* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
5082* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
5083* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
5084* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
5085* [ValueSet](valueset.html): Intended jurisdiction for the value set
5086</b><br>
5087   * Type: <b>token</b><br>
5088   * Path: <b>CapabilityStatement.jurisdiction | CodeSystem.jurisdiction | ConceptMap.jurisdiction | GraphDefinition.jurisdiction | ImplementationGuide.jurisdiction | MessageDefinition.jurisdiction | NamingSystem.jurisdiction | OperationDefinition.jurisdiction | SearchParameter.jurisdiction | StructureDefinition.jurisdiction | StructureMap.jurisdiction | TerminologyCapabilities.jurisdiction | ValueSet.jurisdiction</b><br>
5089   * </p>
5090   */
5091  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
5092
5093 /**
5094   * Search parameter: <b>name</b>
5095   * <p>
5096   * Description: <b>Multiple Resources: 
5097
5098* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
5099* [CodeSystem](codesystem.html): Computationally friendly name of the code system
5100* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
5101* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
5102* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
5103* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
5104* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
5105* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
5106* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
5107* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
5108* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
5109* [StructureMap](structuremap.html): Computationally friendly name of the structure map
5110* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
5111* [ValueSet](valueset.html): Computationally friendly name of the value set
5112</b><br>
5113   * Type: <b>string</b><br>
5114   * Path: <b>CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name</b><br>
5115   * </p>
5116   */
5117  @SearchParamDefinition(name="name", path="CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement\r\n* [CodeSystem](codesystem.html): Computationally friendly name of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition\r\n* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map\r\n* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition\r\n* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system\r\n* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition\r\n* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition\r\n* [StructureMap](structuremap.html): Computationally friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities\r\n* [ValueSet](valueset.html): Computationally friendly name of the value set\r\n", type="string" )
5118  public static final String SP_NAME = "name";
5119 /**
5120   * <b>Fluent Client</b> search parameter constant for <b>name</b>
5121   * <p>
5122   * Description: <b>Multiple Resources: 
5123
5124* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
5125* [CodeSystem](codesystem.html): Computationally friendly name of the code system
5126* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
5127* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
5128* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
5129* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
5130* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
5131* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
5132* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
5133* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
5134* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
5135* [StructureMap](structuremap.html): Computationally friendly name of the structure map
5136* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
5137* [ValueSet](valueset.html): Computationally friendly name of the value set
5138</b><br>
5139   * Type: <b>string</b><br>
5140   * Path: <b>CapabilityStatement.name | CodeSystem.name | CompartmentDefinition.name | ConceptMap.name | GraphDefinition.name | ImplementationGuide.name | MessageDefinition.name | NamingSystem.name | OperationDefinition.name | SearchParameter.name | StructureDefinition.name | StructureMap.name | TerminologyCapabilities.name | ValueSet.name</b><br>
5141   * </p>
5142   */
5143  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
5144
5145 /**
5146   * Search parameter: <b>publisher</b>
5147   * <p>
5148   * Description: <b>Multiple Resources: 
5149
5150* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
5151* [CodeSystem](codesystem.html): Name of the publisher of the code system
5152* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
5153* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
5154* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
5155* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
5156* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
5157* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
5158* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
5159* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
5160* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
5161* [StructureMap](structuremap.html): Name of the publisher of the structure map
5162* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
5163* [ValueSet](valueset.html): Name of the publisher of the value set
5164</b><br>
5165   * Type: <b>string</b><br>
5166   * Path: <b>CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher</b><br>
5167   * </p>
5168   */
5169  @SearchParamDefinition(name="publisher", path="CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement\r\n* [CodeSystem](codesystem.html): Name of the publisher of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition\r\n* [ConceptMap](conceptmap.html): Name of the publisher of the concept map\r\n* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition\r\n* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition\r\n* [NamingSystem](namingsystem.html): Name of the publisher of the naming system\r\n* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition\r\n* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter\r\n* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition\r\n* [StructureMap](structuremap.html): Name of the publisher of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities\r\n* [ValueSet](valueset.html): Name of the publisher of the value set\r\n", type="string" )
5170  public static final String SP_PUBLISHER = "publisher";
5171 /**
5172   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
5173   * <p>
5174   * Description: <b>Multiple Resources: 
5175
5176* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
5177* [CodeSystem](codesystem.html): Name of the publisher of the code system
5178* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
5179* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
5180* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
5181* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
5182* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
5183* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
5184* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
5185* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
5186* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
5187* [StructureMap](structuremap.html): Name of the publisher of the structure map
5188* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
5189* [ValueSet](valueset.html): Name of the publisher of the value set
5190</b><br>
5191   * Type: <b>string</b><br>
5192   * Path: <b>CapabilityStatement.publisher | CodeSystem.publisher | CompartmentDefinition.publisher | ConceptMap.publisher | GraphDefinition.publisher | ImplementationGuide.publisher | MessageDefinition.publisher | NamingSystem.publisher | OperationDefinition.publisher | SearchParameter.publisher | StructureDefinition.publisher | StructureMap.publisher | TerminologyCapabilities.publisher | ValueSet.publisher</b><br>
5193   * </p>
5194   */
5195  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
5196
5197 /**
5198   * Search parameter: <b>status</b>
5199   * <p>
5200   * Description: <b>Multiple Resources: 
5201
5202* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
5203* [CodeSystem](codesystem.html): The current status of the code system
5204* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
5205* [ConceptMap](conceptmap.html): The current status of the concept map
5206* [GraphDefinition](graphdefinition.html): The current status of the graph definition
5207* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
5208* [MessageDefinition](messagedefinition.html): The current status of the message definition
5209* [NamingSystem](namingsystem.html): The current status of the naming system
5210* [OperationDefinition](operationdefinition.html): The current status of the operation definition
5211* [SearchParameter](searchparameter.html): The current status of the search parameter
5212* [StructureDefinition](structuredefinition.html): The current status of the structure definition
5213* [StructureMap](structuremap.html): The current status of the structure map
5214* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
5215* [ValueSet](valueset.html): The current status of the value set
5216</b><br>
5217   * Type: <b>token</b><br>
5218   * Path: <b>CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status</b><br>
5219   * </p>
5220   */
5221  @SearchParamDefinition(name="status", path="CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement\r\n* [CodeSystem](codesystem.html): The current status of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition\r\n* [ConceptMap](conceptmap.html): The current status of the concept map\r\n* [GraphDefinition](graphdefinition.html): The current status of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The current status of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The current status of the message definition\r\n* [NamingSystem](namingsystem.html): The current status of the naming system\r\n* [OperationDefinition](operationdefinition.html): The current status of the operation definition\r\n* [SearchParameter](searchparameter.html): The current status of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The current status of the structure definition\r\n* [StructureMap](structuremap.html): The current status of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities\r\n* [ValueSet](valueset.html): The current status of the value set\r\n", type="token" )
5222  public static final String SP_STATUS = "status";
5223 /**
5224   * <b>Fluent Client</b> search parameter constant for <b>status</b>
5225   * <p>
5226   * Description: <b>Multiple Resources: 
5227
5228* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
5229* [CodeSystem](codesystem.html): The current status of the code system
5230* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
5231* [ConceptMap](conceptmap.html): The current status of the concept map
5232* [GraphDefinition](graphdefinition.html): The current status of the graph definition
5233* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
5234* [MessageDefinition](messagedefinition.html): The current status of the message definition
5235* [NamingSystem](namingsystem.html): The current status of the naming system
5236* [OperationDefinition](operationdefinition.html): The current status of the operation definition
5237* [SearchParameter](searchparameter.html): The current status of the search parameter
5238* [StructureDefinition](structuredefinition.html): The current status of the structure definition
5239* [StructureMap](structuremap.html): The current status of the structure map
5240* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
5241* [ValueSet](valueset.html): The current status of the value set
5242</b><br>
5243   * Type: <b>token</b><br>
5244   * Path: <b>CapabilityStatement.status | CodeSystem.status | CompartmentDefinition.status | ConceptMap.status | GraphDefinition.status | ImplementationGuide.status | MessageDefinition.status | NamingSystem.status | OperationDefinition.status | SearchParameter.status | StructureDefinition.status | StructureMap.status | TerminologyCapabilities.status | ValueSet.status</b><br>
5245   * </p>
5246   */
5247  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
5248
5249 /**
5250   * Search parameter: <b>title</b>
5251   * <p>
5252   * Description: <b>Multiple Resources: 
5253
5254* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
5255* [CodeSystem](codesystem.html): The human-friendly name of the code system
5256* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
5257* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
5258* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
5259* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
5260* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
5261* [StructureMap](structuremap.html): The human-friendly name of the structure map
5262* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
5263* [ValueSet](valueset.html): The human-friendly name of the value set
5264</b><br>
5265   * Type: <b>string</b><br>
5266   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
5267   * </p>
5268   */
5269  @SearchParamDefinition(name="title", path="CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement\r\n* [CodeSystem](codesystem.html): The human-friendly name of the code system\r\n* [ConceptMap](conceptmap.html): The human-friendly name of the concept map\r\n* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition\r\n* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition\r\n* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition\r\n* [StructureMap](structuremap.html): The human-friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities\r\n* [ValueSet](valueset.html): The human-friendly name of the value set\r\n", type="string" )
5270  public static final String SP_TITLE = "title";
5271 /**
5272   * <b>Fluent Client</b> search parameter constant for <b>title</b>
5273   * <p>
5274   * Description: <b>Multiple Resources: 
5275
5276* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
5277* [CodeSystem](codesystem.html): The human-friendly name of the code system
5278* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
5279* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
5280* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
5281* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
5282* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
5283* [StructureMap](structuremap.html): The human-friendly name of the structure map
5284* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
5285* [ValueSet](valueset.html): The human-friendly name of the value set
5286</b><br>
5287   * Type: <b>string</b><br>
5288   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
5289   * </p>
5290   */
5291  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
5292
5293 /**
5294   * Search parameter: <b>url</b>
5295   * <p>
5296   * Description: <b>Multiple Resources: 
5297
5298* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
5299* [CodeSystem](codesystem.html): The uri that identifies the code system
5300* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
5301* [ConceptMap](conceptmap.html): The uri that identifies the concept map
5302* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
5303* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
5304* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
5305* [NamingSystem](namingsystem.html): The uri that identifies the naming system
5306* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
5307* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
5308* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
5309* [StructureMap](structuremap.html): The uri that identifies the structure map
5310* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
5311* [ValueSet](valueset.html): The uri that identifies the value set
5312</b><br>
5313   * Type: <b>uri</b><br>
5314   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
5315   * </p>
5316   */
5317  @SearchParamDefinition(name="url", path="CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\r\n* [CodeSystem](codesystem.html): The uri that identifies the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition\r\n* [ConceptMap](conceptmap.html): The uri that identifies the concept map\r\n* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition\r\n* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition\r\n* [NamingSystem](namingsystem.html): The uri that identifies the naming system\r\n* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\r\n* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition\r\n* [StructureMap](structuremap.html): The uri that identifies the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
5318  public static final String SP_URL = "url";
5319 /**
5320   * <b>Fluent Client</b> search parameter constant for <b>url</b>
5321   * <p>
5322   * Description: <b>Multiple Resources: 
5323
5324* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
5325* [CodeSystem](codesystem.html): The uri that identifies the code system
5326* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
5327* [ConceptMap](conceptmap.html): The uri that identifies the concept map
5328* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
5329* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
5330* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
5331* [NamingSystem](namingsystem.html): The uri that identifies the naming system
5332* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
5333* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
5334* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
5335* [StructureMap](structuremap.html): The uri that identifies the structure map
5336* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
5337* [ValueSet](valueset.html): The uri that identifies the value set
5338</b><br>
5339   * Type: <b>uri</b><br>
5340   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
5341   * </p>
5342   */
5343  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
5344
5345 /**
5346   * Search parameter: <b>version</b>
5347   * <p>
5348   * Description: <b>Multiple Resources: 
5349
5350* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
5351* [CodeSystem](codesystem.html): The business version of the code system
5352* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
5353* [ConceptMap](conceptmap.html): The business version of the concept map
5354* [GraphDefinition](graphdefinition.html): The business version of the graph definition
5355* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
5356* [MessageDefinition](messagedefinition.html): The business version of the message definition
5357* [NamingSystem](namingsystem.html): The business version of the naming system
5358* [OperationDefinition](operationdefinition.html): The business version of the operation definition
5359* [SearchParameter](searchparameter.html): The business version of the search parameter
5360* [StructureDefinition](structuredefinition.html): The business version of the structure definition
5361* [StructureMap](structuremap.html): The business version of the structure map
5362* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
5363* [ValueSet](valueset.html): The business version of the value set
5364</b><br>
5365   * Type: <b>token</b><br>
5366   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
5367   * </p>
5368   */
5369  @SearchParamDefinition(name="version", path="CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\r\n* [CodeSystem](codesystem.html): The business version of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition\r\n* [ConceptMap](conceptmap.html): The business version of the concept map\r\n* [GraphDefinition](graphdefinition.html): The business version of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The business version of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The business version of the message definition\r\n* [NamingSystem](namingsystem.html): The business version of the naming system\r\n* [OperationDefinition](operationdefinition.html): The business version of the operation definition\r\n* [SearchParameter](searchparameter.html): The business version of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The business version of the structure definition\r\n* [StructureMap](structuremap.html): The business version of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
5370  public static final String SP_VERSION = "version";
5371 /**
5372   * <b>Fluent Client</b> search parameter constant for <b>version</b>
5373   * <p>
5374   * Description: <b>Multiple Resources: 
5375
5376* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
5377* [CodeSystem](codesystem.html): The business version of the code system
5378* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
5379* [ConceptMap](conceptmap.html): The business version of the concept map
5380* [GraphDefinition](graphdefinition.html): The business version of the graph definition
5381* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
5382* [MessageDefinition](messagedefinition.html): The business version of the message definition
5383* [NamingSystem](namingsystem.html): The business version of the naming system
5384* [OperationDefinition](operationdefinition.html): The business version of the operation definition
5385* [SearchParameter](searchparameter.html): The business version of the search parameter
5386* [StructureDefinition](structuredefinition.html): The business version of the structure definition
5387* [StructureMap](structuremap.html): The business version of the structure map
5388* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
5389* [ValueSet](valueset.html): The business version of the value set
5390</b><br>
5391   * Type: <b>token</b><br>
5392   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
5393   * </p>
5394   */
5395  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
5396
5397// Manual code (from Configuration.txt):
5398public PropertyComponent getProperty(String code) {
5399    for (PropertyComponent pd : getProperty()) {
5400      if (pd.getCode().equalsIgnoreCase(code))
5401        return pd;
5402    }
5403    return null;
5404  }
5405
5406  public ConceptDefinitionComponent getDefinitionByCode(String code) {
5407    return getDefinitionByCode(getConcept(), code);
5408  }
5409
5410  private ConceptDefinitionComponent getDefinitionByCode(List<ConceptDefinitionComponent> list, String code) {
5411    for (ConceptDefinitionComponent t : list) {
5412      if (code.equals(t.getCode())) {
5413        return t;
5414      }
5415      ConceptDefinitionComponent cc = getDefinitionByCode(t.getConcept(), code);
5416      if (cc != null) {
5417        return cc;
5418      }
5419    }
5420    return null;
5421  }
5422// end addition
5423
5424}
5425