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