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 Sat, Nov 5, 2022 10:47+1100 for FHIR v5.0.0-ballot
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 MetadataResource {
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.
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.";
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         * Additional codes that detail how this designation would be used, if there is more than one use.
1900         */
1901        @Child(name = "additionalUse", type = {Coding.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1902        @Description(shortDefinition="Additional ways how this designation would be used", formalDefinition="Additional codes that detail how this designation would be used, if there is more than one use." )
1903        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/designation-use")
1904        protected List<Coding> additionalUse;
1905
1906        /**
1907         * The text value for this designation.
1908         */
1909        @Child(name = "value", type = {StringType.class}, order=4, min=1, max=1, modifier=false, summary=false)
1910        @Description(shortDefinition="The text value for this designation", formalDefinition="The text value for this designation." )
1911        protected StringType value;
1912
1913        private static final long serialVersionUID = -141147882L;
1914
1915    /**
1916     * Constructor
1917     */
1918      public ConceptDefinitionDesignationComponent() {
1919        super();
1920      }
1921
1922    /**
1923     * Constructor
1924     */
1925      public ConceptDefinitionDesignationComponent(String value) {
1926        super();
1927        this.setValue(value);
1928      }
1929
1930        /**
1931         * @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
1932         */
1933        public CodeType getLanguageElement() { 
1934          if (this.language == null)
1935            if (Configuration.errorOnAutoCreate())
1936              throw new Error("Attempt to auto-create ConceptDefinitionDesignationComponent.language");
1937            else if (Configuration.doAutoCreate())
1938              this.language = new CodeType(); // bb
1939          return this.language;
1940        }
1941
1942        public boolean hasLanguageElement() { 
1943          return this.language != null && !this.language.isEmpty();
1944        }
1945
1946        public boolean hasLanguage() { 
1947          return this.language != null && !this.language.isEmpty();
1948        }
1949
1950        /**
1951         * @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
1952         */
1953        public ConceptDefinitionDesignationComponent setLanguageElement(CodeType value) { 
1954          this.language = value;
1955          return this;
1956        }
1957
1958        /**
1959         * @return The language this designation is defined for.
1960         */
1961        public String getLanguage() { 
1962          return this.language == null ? null : this.language.getValue();
1963        }
1964
1965        /**
1966         * @param value The language this designation is defined for.
1967         */
1968        public ConceptDefinitionDesignationComponent setLanguage(String value) { 
1969          if (Utilities.noString(value))
1970            this.language = null;
1971          else {
1972            if (this.language == null)
1973              this.language = new CodeType();
1974            this.language.setValue(value);
1975          }
1976          return this;
1977        }
1978
1979        /**
1980         * @return {@link #use} (A code that details how this designation would be used.)
1981         */
1982        public Coding getUse() { 
1983          if (this.use == null)
1984            if (Configuration.errorOnAutoCreate())
1985              throw new Error("Attempt to auto-create ConceptDefinitionDesignationComponent.use");
1986            else if (Configuration.doAutoCreate())
1987              this.use = new Coding(); // cc
1988          return this.use;
1989        }
1990
1991        public boolean hasUse() { 
1992          return this.use != null && !this.use.isEmpty();
1993        }
1994
1995        /**
1996         * @param value {@link #use} (A code that details how this designation would be used.)
1997         */
1998        public ConceptDefinitionDesignationComponent setUse(Coding value) { 
1999          this.use = value;
2000          return this;
2001        }
2002
2003        /**
2004         * @return {@link #additionalUse} (Additional codes that detail how this designation would be used, if there is more than one use.)
2005         */
2006        public List<Coding> getAdditionalUse() { 
2007          if (this.additionalUse == null)
2008            this.additionalUse = new ArrayList<Coding>();
2009          return this.additionalUse;
2010        }
2011
2012        /**
2013         * @return Returns a reference to <code>this</code> for easy method chaining
2014         */
2015        public ConceptDefinitionDesignationComponent setAdditionalUse(List<Coding> theAdditionalUse) { 
2016          this.additionalUse = theAdditionalUse;
2017          return this;
2018        }
2019
2020        public boolean hasAdditionalUse() { 
2021          if (this.additionalUse == null)
2022            return false;
2023          for (Coding item : this.additionalUse)
2024            if (!item.isEmpty())
2025              return true;
2026          return false;
2027        }
2028
2029        public Coding addAdditionalUse() { //3
2030          Coding t = new Coding();
2031          if (this.additionalUse == null)
2032            this.additionalUse = new ArrayList<Coding>();
2033          this.additionalUse.add(t);
2034          return t;
2035        }
2036
2037        public ConceptDefinitionDesignationComponent addAdditionalUse(Coding t) { //3
2038          if (t == null)
2039            return this;
2040          if (this.additionalUse == null)
2041            this.additionalUse = new ArrayList<Coding>();
2042          this.additionalUse.add(t);
2043          return this;
2044        }
2045
2046        /**
2047         * @return The first repetition of repeating field {@link #additionalUse}, creating it if it does not already exist {3}
2048         */
2049        public Coding getAdditionalUseFirstRep() { 
2050          if (getAdditionalUse().isEmpty()) {
2051            addAdditionalUse();
2052          }
2053          return getAdditionalUse().get(0);
2054        }
2055
2056        /**
2057         * @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
2058         */
2059        public StringType getValueElement() { 
2060          if (this.value == null)
2061            if (Configuration.errorOnAutoCreate())
2062              throw new Error("Attempt to auto-create ConceptDefinitionDesignationComponent.value");
2063            else if (Configuration.doAutoCreate())
2064              this.value = new StringType(); // bb
2065          return this.value;
2066        }
2067
2068        public boolean hasValueElement() { 
2069          return this.value != null && !this.value.isEmpty();
2070        }
2071
2072        public boolean hasValue() { 
2073          return this.value != null && !this.value.isEmpty();
2074        }
2075
2076        /**
2077         * @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
2078         */
2079        public ConceptDefinitionDesignationComponent setValueElement(StringType value) { 
2080          this.value = value;
2081          return this;
2082        }
2083
2084        /**
2085         * @return The text value for this designation.
2086         */
2087        public String getValue() { 
2088          return this.value == null ? null : this.value.getValue();
2089        }
2090
2091        /**
2092         * @param value The text value for this designation.
2093         */
2094        public ConceptDefinitionDesignationComponent setValue(String value) { 
2095            if (this.value == null)
2096              this.value = new StringType();
2097            this.value.setValue(value);
2098          return this;
2099        }
2100
2101        protected void listChildren(List<Property> children) {
2102          super.listChildren(children);
2103          children.add(new Property("language", "code", "The language this designation is defined for.", 0, 1, language));
2104          children.add(new Property("use", "Coding", "A code that details how this designation would be used.", 0, 1, use));
2105          children.add(new Property("additionalUse", "Coding", "Additional codes that detail how this designation would be used, if there is more than one use.", 0, java.lang.Integer.MAX_VALUE, additionalUse));
2106          children.add(new Property("value", "string", "The text value for this designation.", 0, 1, value));
2107        }
2108
2109        @Override
2110        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2111          switch (_hash) {
2112          case -1613589672: /*language*/  return new Property("language", "code", "The language this designation is defined for.", 0, 1, language);
2113          case 116103: /*use*/  return new Property("use", "Coding", "A code that details how this designation would be used.", 0, 1, use);
2114          case 938414048: /*additionalUse*/  return new Property("additionalUse", "Coding", "Additional codes that detail how this designation would be used, if there is more than one use.", 0, java.lang.Integer.MAX_VALUE, additionalUse);
2115          case 111972721: /*value*/  return new Property("value", "string", "The text value for this designation.", 0, 1, value);
2116          default: return super.getNamedProperty(_hash, _name, _checkValid);
2117          }
2118
2119        }
2120
2121      @Override
2122      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2123        switch (hash) {
2124        case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // CodeType
2125        case 116103: /*use*/ return this.use == null ? new Base[0] : new Base[] {this.use}; // Coding
2126        case 938414048: /*additionalUse*/ return this.additionalUse == null ? new Base[0] : this.additionalUse.toArray(new Base[this.additionalUse.size()]); // Coding
2127        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
2128        default: return super.getProperty(hash, name, checkValid);
2129        }
2130
2131      }
2132
2133      @Override
2134      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2135        switch (hash) {
2136        case -1613589672: // language
2137          this.language = TypeConvertor.castToCode(value); // CodeType
2138          return value;
2139        case 116103: // use
2140          this.use = TypeConvertor.castToCoding(value); // Coding
2141          return value;
2142        case 938414048: // additionalUse
2143          this.getAdditionalUse().add(TypeConvertor.castToCoding(value)); // Coding
2144          return value;
2145        case 111972721: // value
2146          this.value = TypeConvertor.castToString(value); // StringType
2147          return value;
2148        default: return super.setProperty(hash, name, value);
2149        }
2150
2151      }
2152
2153      @Override
2154      public Base setProperty(String name, Base value) throws FHIRException {
2155        if (name.equals("language")) {
2156          this.language = TypeConvertor.castToCode(value); // CodeType
2157        } else if (name.equals("use")) {
2158          this.use = TypeConvertor.castToCoding(value); // Coding
2159        } else if (name.equals("additionalUse")) {
2160          this.getAdditionalUse().add(TypeConvertor.castToCoding(value));
2161        } else if (name.equals("value")) {
2162          this.value = TypeConvertor.castToString(value); // StringType
2163        } else
2164          return super.setProperty(name, value);
2165        return value;
2166      }
2167
2168      @Override
2169      public Base makeProperty(int hash, String name) throws FHIRException {
2170        switch (hash) {
2171        case -1613589672:  return getLanguageElement();
2172        case 116103:  return getUse();
2173        case 938414048:  return addAdditionalUse(); 
2174        case 111972721:  return getValueElement();
2175        default: return super.makeProperty(hash, name);
2176        }
2177
2178      }
2179
2180      @Override
2181      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2182        switch (hash) {
2183        case -1613589672: /*language*/ return new String[] {"code"};
2184        case 116103: /*use*/ return new String[] {"Coding"};
2185        case 938414048: /*additionalUse*/ return new String[] {"Coding"};
2186        case 111972721: /*value*/ return new String[] {"string"};
2187        default: return super.getTypesForProperty(hash, name);
2188        }
2189
2190      }
2191
2192      @Override
2193      public Base addChild(String name) throws FHIRException {
2194        if (name.equals("language")) {
2195          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.concept.designation.language");
2196        }
2197        else if (name.equals("use")) {
2198          this.use = new Coding();
2199          return this.use;
2200        }
2201        else if (name.equals("additionalUse")) {
2202          return addAdditionalUse();
2203        }
2204        else if (name.equals("value")) {
2205          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.concept.designation.value");
2206        }
2207        else
2208          return super.addChild(name);
2209      }
2210
2211      public ConceptDefinitionDesignationComponent copy() {
2212        ConceptDefinitionDesignationComponent dst = new ConceptDefinitionDesignationComponent();
2213        copyValues(dst);
2214        return dst;
2215      }
2216
2217      public void copyValues(ConceptDefinitionDesignationComponent dst) {
2218        super.copyValues(dst);
2219        dst.language = language == null ? null : language.copy();
2220        dst.use = use == null ? null : use.copy();
2221        if (additionalUse != null) {
2222          dst.additionalUse = new ArrayList<Coding>();
2223          for (Coding i : additionalUse)
2224            dst.additionalUse.add(i.copy());
2225        };
2226        dst.value = value == null ? null : value.copy();
2227      }
2228
2229      @Override
2230      public boolean equalsDeep(Base other_) {
2231        if (!super.equalsDeep(other_))
2232          return false;
2233        if (!(other_ instanceof ConceptDefinitionDesignationComponent))
2234          return false;
2235        ConceptDefinitionDesignationComponent o = (ConceptDefinitionDesignationComponent) other_;
2236        return compareDeep(language, o.language, true) && compareDeep(use, o.use, true) && compareDeep(additionalUse, o.additionalUse, true)
2237           && compareDeep(value, o.value, true);
2238      }
2239
2240      @Override
2241      public boolean equalsShallow(Base other_) {
2242        if (!super.equalsShallow(other_))
2243          return false;
2244        if (!(other_ instanceof ConceptDefinitionDesignationComponent))
2245          return false;
2246        ConceptDefinitionDesignationComponent o = (ConceptDefinitionDesignationComponent) other_;
2247        return compareValues(language, o.language, true) && compareValues(value, o.value, true);
2248      }
2249
2250      public boolean isEmpty() {
2251        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(language, use, additionalUse
2252          , value);
2253      }
2254
2255  public String fhirType() {
2256    return "CodeSystem.concept.designation";
2257
2258  }
2259
2260  }
2261
2262    @Block()
2263    public static class ConceptPropertyComponent extends BackboneElement implements IBaseBackboneElement {
2264        /**
2265         * A code that is a reference to CodeSystem.property.code.
2266         */
2267        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
2268        @Description(shortDefinition="Reference to CodeSystem.property.code", formalDefinition="A code that is a reference to CodeSystem.property.code." )
2269        protected CodeType code;
2270
2271        /**
2272         * The value of this property.
2273         */
2274        @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)
2275        @Description(shortDefinition="Value of the property for this concept", formalDefinition="The value of this property." )
2276        protected DataType value;
2277
2278        private static final long serialVersionUID = -422546419L;
2279
2280    /**
2281     * Constructor
2282     */
2283      public ConceptPropertyComponent() {
2284        super();
2285      }
2286
2287    /**
2288     * Constructor
2289     */
2290      public ConceptPropertyComponent(String code, DataType value) {
2291        super();
2292        this.setCode(code);
2293        this.setValue(value);
2294      }
2295
2296        /**
2297         * @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
2298         */
2299        public CodeType getCodeElement() { 
2300          if (this.code == null)
2301            if (Configuration.errorOnAutoCreate())
2302              throw new Error("Attempt to auto-create ConceptPropertyComponent.code");
2303            else if (Configuration.doAutoCreate())
2304              this.code = new CodeType(); // bb
2305          return this.code;
2306        }
2307
2308        public boolean hasCodeElement() { 
2309          return this.code != null && !this.code.isEmpty();
2310        }
2311
2312        public boolean hasCode() { 
2313          return this.code != null && !this.code.isEmpty();
2314        }
2315
2316        /**
2317         * @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
2318         */
2319        public ConceptPropertyComponent setCodeElement(CodeType value) { 
2320          this.code = value;
2321          return this;
2322        }
2323
2324        /**
2325         * @return A code that is a reference to CodeSystem.property.code.
2326         */
2327        public String getCode() { 
2328          return this.code == null ? null : this.code.getValue();
2329        }
2330
2331        /**
2332         * @param value A code that is a reference to CodeSystem.property.code.
2333         */
2334        public ConceptPropertyComponent setCode(String value) { 
2335            if (this.code == null)
2336              this.code = new CodeType();
2337            this.code.setValue(value);
2338          return this;
2339        }
2340
2341        /**
2342         * @return {@link #value} (The value of this property.)
2343         */
2344        public DataType getValue() { 
2345          return this.value;
2346        }
2347
2348        /**
2349         * @return {@link #value} (The value of this property.)
2350         */
2351        public CodeType getValueCodeType() throws FHIRException { 
2352          if (this.value == null)
2353            this.value = new CodeType();
2354          if (!(this.value instanceof CodeType))
2355            throw new FHIRException("Type mismatch: the type CodeType was expected, but "+this.value.getClass().getName()+" was encountered");
2356          return (CodeType) this.value;
2357        }
2358
2359        public boolean hasValueCodeType() { 
2360          return this != null && this.value instanceof CodeType;
2361        }
2362
2363        /**
2364         * @return {@link #value} (The value of this property.)
2365         */
2366        public Coding getValueCoding() throws FHIRException { 
2367          if (this.value == null)
2368            this.value = new Coding();
2369          if (!(this.value instanceof Coding))
2370            throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.value.getClass().getName()+" was encountered");
2371          return (Coding) this.value;
2372        }
2373
2374        public boolean hasValueCoding() { 
2375          return this != null && this.value instanceof Coding;
2376        }
2377
2378        /**
2379         * @return {@link #value} (The value of this property.)
2380         */
2381        public StringType getValueStringType() throws FHIRException { 
2382          if (this.value == null)
2383            this.value = new StringType();
2384          if (!(this.value instanceof StringType))
2385            throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.value.getClass().getName()+" was encountered");
2386          return (StringType) this.value;
2387        }
2388
2389        public boolean hasValueStringType() { 
2390          return this != null && this.value instanceof StringType;
2391        }
2392
2393        /**
2394         * @return {@link #value} (The value of this property.)
2395         */
2396        public IntegerType getValueIntegerType() throws FHIRException { 
2397          if (this.value == null)
2398            this.value = new IntegerType();
2399          if (!(this.value instanceof IntegerType))
2400            throw new FHIRException("Type mismatch: the type IntegerType was expected, but "+this.value.getClass().getName()+" was encountered");
2401          return (IntegerType) this.value;
2402        }
2403
2404        public boolean hasValueIntegerType() { 
2405          return this != null && this.value instanceof IntegerType;
2406        }
2407
2408        /**
2409         * @return {@link #value} (The value of this property.)
2410         */
2411        public BooleanType getValueBooleanType() throws FHIRException { 
2412          if (this.value == null)
2413            this.value = new BooleanType();
2414          if (!(this.value instanceof BooleanType))
2415            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
2416          return (BooleanType) this.value;
2417        }
2418
2419        public boolean hasValueBooleanType() { 
2420          return this != null && this.value instanceof BooleanType;
2421        }
2422
2423        /**
2424         * @return {@link #value} (The value of this property.)
2425         */
2426        public DateTimeType getValueDateTimeType() throws FHIRException { 
2427          if (this.value == null)
2428            this.value = new DateTimeType();
2429          if (!(this.value instanceof DateTimeType))
2430            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.value.getClass().getName()+" was encountered");
2431          return (DateTimeType) this.value;
2432        }
2433
2434        public boolean hasValueDateTimeType() { 
2435          return this != null && this.value instanceof DateTimeType;
2436        }
2437
2438        /**
2439         * @return {@link #value} (The value of this property.)
2440         */
2441        public DecimalType getValueDecimalType() throws FHIRException { 
2442          if (this.value == null)
2443            this.value = new DecimalType();
2444          if (!(this.value instanceof DecimalType))
2445            throw new FHIRException("Type mismatch: the type DecimalType was expected, but "+this.value.getClass().getName()+" was encountered");
2446          return (DecimalType) this.value;
2447        }
2448
2449        public boolean hasValueDecimalType() { 
2450          return this != null && this.value instanceof DecimalType;
2451        }
2452
2453        public boolean hasValue() { 
2454          return this.value != null && !this.value.isEmpty();
2455        }
2456
2457        /**
2458         * @param value {@link #value} (The value of this property.)
2459         */
2460        public ConceptPropertyComponent setValue(DataType value) { 
2461          if (value != null && !(value instanceof CodeType || value instanceof Coding || value instanceof StringType || value instanceof IntegerType || value instanceof BooleanType || value instanceof DateTimeType || value instanceof DecimalType))
2462            throw new Error("Not the right type for CodeSystem.concept.property.value[x]: "+value.fhirType());
2463          this.value = value;
2464          return this;
2465        }
2466
2467        protected void listChildren(List<Property> children) {
2468          super.listChildren(children);
2469          children.add(new Property("code", "code", "A code that is a reference to CodeSystem.property.code.", 0, 1, code));
2470          children.add(new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this property.", 0, 1, value));
2471        }
2472
2473        @Override
2474        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2475          switch (_hash) {
2476          case 3059181: /*code*/  return new Property("code", "code", "A code that is a reference to CodeSystem.property.code.", 0, 1, code);
2477          case -1410166417: /*value[x]*/  return new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this property.", 0, 1, value);
2478          case 111972721: /*value*/  return new Property("value[x]", "code|Coding|string|integer|boolean|dateTime|decimal", "The value of this property.", 0, 1, value);
2479          case -766209282: /*valueCode*/  return new Property("value[x]", "code", "The value of this property.", 0, 1, value);
2480          case -1887705029: /*valueCoding*/  return new Property("value[x]", "Coding", "The value of this property.", 0, 1, value);
2481          case -1424603934: /*valueString*/  return new Property("value[x]", "string", "The value of this property.", 0, 1, value);
2482          case -1668204915: /*valueInteger*/  return new Property("value[x]", "integer", "The value of this property.", 0, 1, value);
2483          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "The value of this property.", 0, 1, value);
2484          case 1047929900: /*valueDateTime*/  return new Property("value[x]", "dateTime", "The value of this property.", 0, 1, value);
2485          case -2083993440: /*valueDecimal*/  return new Property("value[x]", "decimal", "The value of this property.", 0, 1, value);
2486          default: return super.getNamedProperty(_hash, _name, _checkValid);
2487          }
2488
2489        }
2490
2491      @Override
2492      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2493        switch (hash) {
2494        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
2495        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
2496        default: return super.getProperty(hash, name, checkValid);
2497        }
2498
2499      }
2500
2501      @Override
2502      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2503        switch (hash) {
2504        case 3059181: // code
2505          this.code = TypeConvertor.castToCode(value); // CodeType
2506          return value;
2507        case 111972721: // value
2508          this.value = TypeConvertor.castToType(value); // DataType
2509          return value;
2510        default: return super.setProperty(hash, name, value);
2511        }
2512
2513      }
2514
2515      @Override
2516      public Base setProperty(String name, Base value) throws FHIRException {
2517        if (name.equals("code")) {
2518          this.code = TypeConvertor.castToCode(value); // CodeType
2519        } else if (name.equals("value[x]")) {
2520          this.value = TypeConvertor.castToType(value); // DataType
2521        } else
2522          return super.setProperty(name, value);
2523        return value;
2524      }
2525
2526      @Override
2527      public Base makeProperty(int hash, String name) throws FHIRException {
2528        switch (hash) {
2529        case 3059181:  return getCodeElement();
2530        case -1410166417:  return getValue();
2531        case 111972721:  return getValue();
2532        default: return super.makeProperty(hash, name);
2533        }
2534
2535      }
2536
2537      @Override
2538      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2539        switch (hash) {
2540        case 3059181: /*code*/ return new String[] {"code"};
2541        case 111972721: /*value*/ return new String[] {"code", "Coding", "string", "integer", "boolean", "dateTime", "decimal"};
2542        default: return super.getTypesForProperty(hash, name);
2543        }
2544
2545      }
2546
2547      @Override
2548      public Base addChild(String name) throws FHIRException {
2549        if (name.equals("code")) {
2550          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.concept.property.code");
2551        }
2552        else if (name.equals("valueCode")) {
2553          this.value = new CodeType();
2554          return this.value;
2555        }
2556        else if (name.equals("valueCoding")) {
2557          this.value = new Coding();
2558          return this.value;
2559        }
2560        else if (name.equals("valueString")) {
2561          this.value = new StringType();
2562          return this.value;
2563        }
2564        else if (name.equals("valueInteger")) {
2565          this.value = new IntegerType();
2566          return this.value;
2567        }
2568        else if (name.equals("valueBoolean")) {
2569          this.value = new BooleanType();
2570          return this.value;
2571        }
2572        else if (name.equals("valueDateTime")) {
2573          this.value = new DateTimeType();
2574          return this.value;
2575        }
2576        else if (name.equals("valueDecimal")) {
2577          this.value = new DecimalType();
2578          return this.value;
2579        }
2580        else
2581          return super.addChild(name);
2582      }
2583
2584      public ConceptPropertyComponent copy() {
2585        ConceptPropertyComponent dst = new ConceptPropertyComponent();
2586        copyValues(dst);
2587        return dst;
2588      }
2589
2590      public void copyValues(ConceptPropertyComponent dst) {
2591        super.copyValues(dst);
2592        dst.code = code == null ? null : code.copy();
2593        dst.value = value == null ? null : value.copy();
2594      }
2595
2596      @Override
2597      public boolean equalsDeep(Base other_) {
2598        if (!super.equalsDeep(other_))
2599          return false;
2600        if (!(other_ instanceof ConceptPropertyComponent))
2601          return false;
2602        ConceptPropertyComponent o = (ConceptPropertyComponent) other_;
2603        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
2604      }
2605
2606      @Override
2607      public boolean equalsShallow(Base other_) {
2608        if (!super.equalsShallow(other_))
2609          return false;
2610        if (!(other_ instanceof ConceptPropertyComponent))
2611          return false;
2612        ConceptPropertyComponent o = (ConceptPropertyComponent) other_;
2613        return compareValues(code, o.code, true);
2614      }
2615
2616      public boolean isEmpty() {
2617        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
2618      }
2619
2620  public String fhirType() {
2621    return "CodeSystem.concept.property";
2622
2623  }
2624
2625  }
2626
2627    /**
2628     * 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 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.
2629     */
2630    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
2631    @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 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." )
2632    protected UriType url;
2633
2634    /**
2635     * 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.
2636     */
2637    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2638    @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." )
2639    protected List<Identifier> identifier;
2640
2641    /**
2642     * 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.
2643     */
2644    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
2645    @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." )
2646    protected StringType version;
2647
2648    /**
2649     * 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.
2650     */
2651    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
2652    @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." )
2653    protected StringType name;
2654
2655    /**
2656     * A short, descriptive, user-friendly title for the code system.
2657     */
2658    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
2659    @Description(shortDefinition="Name for this code system (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the code system." )
2660    protected StringType title;
2661
2662    /**
2663     * The status of this code system. Enables tracking the life-cycle of the content.
2664     */
2665    @Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
2666    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this code system. Enables tracking the life-cycle of the content." )
2667    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
2668    protected Enumeration<PublicationStatus> status;
2669
2670    /**
2671     * 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.
2672     */
2673    @Child(name = "experimental", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true)
2674    @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." )
2675    protected BooleanType experimental;
2676
2677    /**
2678     * 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.
2679     */
2680    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
2681    @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." )
2682    protected DateTimeType date;
2683
2684    /**
2685     * The name of the organization or individual responsible for the release and ongoing maintenance of the code system.
2686     */
2687    @Child(name = "publisher", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
2688    @Description(shortDefinition="Name of the publisher/steward (organization or individual)", formalDefinition="The name of the organization or individual responsible for the release and ongoing maintenance of the code system." )
2689    protected StringType publisher;
2690
2691    /**
2692     * Contact details to assist a user in finding and communicating with the publisher.
2693     */
2694    @Child(name = "contact", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2695    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
2696    protected List<ContactDetail> contact;
2697
2698    /**
2699     * A free text natural language description of the code system from a consumer's perspective.
2700     */
2701    @Child(name = "description", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=false)
2702    @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." )
2703    protected MarkdownType description;
2704
2705    /**
2706     * 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.
2707     */
2708    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2709    @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." )
2710    protected List<UsageContext> useContext;
2711
2712    /**
2713     * A legal or geographic region in which the code system is intended to be used.
2714     */
2715    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2716    @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." )
2717    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
2718    protected List<CodeableConcept> jurisdiction;
2719
2720    /**
2721     * Explanation of why this code system is needed and why it has been designed as it has.
2722     */
2723    @Child(name = "purpose", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=false)
2724    @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." )
2725    protected MarkdownType purpose;
2726
2727    /**
2728     * 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.
2729     */
2730    @Child(name = "copyright", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
2731    @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." )
2732    protected MarkdownType copyright;
2733
2734    /**
2735     * The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
2736     */
2737    @Child(name = "approvalDate", type = {DateType.class}, order=15, min=0, max=1, modifier=false, summary=false)
2738    @Description(shortDefinition="When the CodeSystem was approved by publisher", formalDefinition="The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage." )
2739    protected DateType approvalDate;
2740
2741    /**
2742     * The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
2743     */
2744    @Child(name = "lastReviewDate", type = {DateType.class}, order=16, min=0, max=1, modifier=false, summary=false)
2745    @Description(shortDefinition="When the CodeSystem was last reviewed", formalDefinition="The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date." )
2746    protected DateType lastReviewDate;
2747
2748    /**
2749     * The period during which the CodeSystem content was or is planned to be in active use.
2750     */
2751    @Child(name = "effectivePeriod", type = {Period.class}, order=17, min=0, max=1, modifier=false, summary=true)
2752    @Description(shortDefinition="When the CodeSystem is expected to be used", formalDefinition="The period during which the CodeSystem content was or is planned to be in active use." )
2753    protected Period effectivePeriod;
2754
2755    /**
2756     * Descriptions related to the content of the CodeSystem. Topics provide a high-level categorization as well as keywords for the CodeSystem that can be useful for filtering and searching.
2757     */
2758    @Child(name = "topic", type = {CodeableConcept.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2759    @Description(shortDefinition="E.g. Education, Treatment, Assessment, etc.", formalDefinition="Descriptions related to the content of the CodeSystem. Topics provide a high-level categorization as well as keywords for the CodeSystem that can be useful for filtering and searching." )
2760    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/definition-topic")
2761    protected List<CodeableConcept> topic;
2762
2763    /**
2764     * An individiual or organization primarily involved in the creation and maintenance of the CodeSystem.
2765     */
2766    @Child(name = "author", type = {ContactDetail.class}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2767    @Description(shortDefinition="Who authored the CodeSystem", formalDefinition="An individiual or organization primarily involved in the creation and maintenance of the CodeSystem." )
2768    protected List<ContactDetail> author;
2769
2770    /**
2771     * An individual or organization primarily responsible for internal coherence of the CodeSystem.
2772     */
2773    @Child(name = "editor", type = {ContactDetail.class}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2774    @Description(shortDefinition="Who edited the CodeSystem", formalDefinition="An individual or organization primarily responsible for internal coherence of the CodeSystem." )
2775    protected List<ContactDetail> editor;
2776
2777    /**
2778     * An individual or organization primarily responsible for review of some aspect of the CodeSystem.
2779     */
2780    @Child(name = "reviewer", type = {ContactDetail.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2781    @Description(shortDefinition="Who reviewed the CodeSystem", formalDefinition="An individual or organization primarily responsible for review of some aspect of the CodeSystem." )
2782    protected List<ContactDetail> reviewer;
2783
2784    /**
2785     * An individual or organization responsible for officially endorsing the CodeSystem for use in some setting.
2786     */
2787    @Child(name = "endorser", type = {ContactDetail.class}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2788    @Description(shortDefinition="Who endorsed the CodeSystem", formalDefinition="An individual or organization responsible for officially endorsing the CodeSystem for use in some setting." )
2789    protected List<ContactDetail> endorser;
2790
2791    /**
2792     * Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts.
2793     */
2794    @Child(name = "relatedArtifact", type = {RelatedArtifact.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2795    @Description(shortDefinition="Additional documentation, citations, etc.", formalDefinition="Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts." )
2796    protected List<RelatedArtifact> relatedArtifact;
2797
2798    /**
2799     * If code comparison is case sensitive when codes within this system are compared to each other.
2800     */
2801    @Child(name = "caseSensitive", type = {BooleanType.class}, order=24, min=0, max=1, modifier=false, summary=true)
2802    @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." )
2803    protected BooleanType caseSensitive;
2804
2805    /**
2806     * Canonical reference to the value set that contains all codes in the code system independent of code status.
2807     */
2808    @Child(name = "valueSet", type = {CanonicalType.class}, order=25, min=0, max=1, modifier=false, summary=true)
2809    @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." )
2810    protected CanonicalType valueSet;
2811
2812    /**
2813     * The meaning of the hierarchy of concepts as represented in this resource.
2814     */
2815    @Child(name = "hierarchyMeaning", type = {CodeType.class}, order=26, min=0, max=1, modifier=false, summary=true)
2816    @Description(shortDefinition="grouped-by | is-a | part-of | classified-with", formalDefinition="The meaning of the hierarchy of concepts as represented in this resource." )
2817    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/codesystem-hierarchy-meaning")
2818    protected Enumeration<CodeSystemHierarchyMeaning> hierarchyMeaning;
2819
2820    /**
2821     * The code system defines a compositional (post-coordination) grammar.
2822     */
2823    @Child(name = "compositional", type = {BooleanType.class}, order=27, min=0, max=1, modifier=false, summary=true)
2824    @Description(shortDefinition="If code system defines a compositional grammar", formalDefinition="The code system defines a compositional (post-coordination) grammar." )
2825    protected BooleanType compositional;
2826
2827    /**
2828     * 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.
2829     */
2830    @Child(name = "versionNeeded", type = {BooleanType.class}, order=28, min=0, max=1, modifier=false, summary=true)
2831    @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." )
2832    protected BooleanType versionNeeded;
2833
2834    /**
2835     * The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.
2836     */
2837    @Child(name = "content", type = {CodeType.class}, order=29, min=1, max=1, modifier=false, summary=true)
2838    @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." )
2839    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/codesystem-content-mode")
2840    protected Enumeration<CodeSystemContentMode> content;
2841
2842    /**
2843     * The canonical URL of the code system that this code system supplement is adding designations and properties to.
2844     */
2845    @Child(name = "supplements", type = {CanonicalType.class}, order=30, min=0, max=1, modifier=false, summary=true)
2846    @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." )
2847    protected CanonicalType supplements;
2848
2849    /**
2850     * 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.
2851     */
2852    @Child(name = "count", type = {UnsignedIntType.class}, order=31, min=0, max=1, modifier=false, summary=true)
2853    @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." )
2854    protected UnsignedIntType count;
2855
2856    /**
2857     * A filter that can be used in a value set compose statement when selecting concepts using a filter.
2858     */
2859    @Child(name = "filter", type = {}, order=32, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2860    @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." )
2861    protected List<CodeSystemFilterComponent> filter;
2862
2863    /**
2864     * A property defines an additional slot through which additional information can be provided about a concept.
2865     */
2866    @Child(name = "property", type = {}, order=33, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2867    @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." )
2868    protected List<PropertyComponent> property;
2869
2870    /**
2871     * 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.
2872     */
2873    @Child(name = "concept", type = {}, order=34, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2874    @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." )
2875    protected List<ConceptDefinitionComponent> concept;
2876
2877    private static final long serialVersionUID = -1497068225L;
2878
2879  /**
2880   * Constructor
2881   */
2882    public CodeSystem() {
2883      super();
2884    }
2885
2886  /**
2887   * Constructor
2888   */
2889    public CodeSystem(PublicationStatus status, CodeSystemContentMode content) {
2890      super();
2891      this.setStatus(status);
2892      this.setContent(content);
2893    }
2894
2895    /**
2896     * @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 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
2897     */
2898    public UriType getUrlElement() { 
2899      if (this.url == null)
2900        if (Configuration.errorOnAutoCreate())
2901          throw new Error("Attempt to auto-create CodeSystem.url");
2902        else if (Configuration.doAutoCreate())
2903          this.url = new UriType(); // bb
2904      return this.url;
2905    }
2906
2907    public boolean hasUrlElement() { 
2908      return this.url != null && !this.url.isEmpty();
2909    }
2910
2911    public boolean hasUrl() { 
2912      return this.url != null && !this.url.isEmpty();
2913    }
2914
2915    /**
2916     * @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 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
2917     */
2918    public CodeSystem setUrlElement(UriType value) { 
2919      this.url = value;
2920      return this;
2921    }
2922
2923    /**
2924     * @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 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.
2925     */
2926    public String getUrl() { 
2927      return this.url == null ? null : this.url.getValue();
2928    }
2929
2930    /**
2931     * @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 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.
2932     */
2933    public CodeSystem setUrl(String value) { 
2934      if (Utilities.noString(value))
2935        this.url = null;
2936      else {
2937        if (this.url == null)
2938          this.url = new UriType();
2939        this.url.setValue(value);
2940      }
2941      return this;
2942    }
2943
2944    /**
2945     * @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.)
2946     */
2947    public List<Identifier> getIdentifier() { 
2948      if (this.identifier == null)
2949        this.identifier = new ArrayList<Identifier>();
2950      return this.identifier;
2951    }
2952
2953    /**
2954     * @return Returns a reference to <code>this</code> for easy method chaining
2955     */
2956    public CodeSystem setIdentifier(List<Identifier> theIdentifier) { 
2957      this.identifier = theIdentifier;
2958      return this;
2959    }
2960
2961    public boolean hasIdentifier() { 
2962      if (this.identifier == null)
2963        return false;
2964      for (Identifier item : this.identifier)
2965        if (!item.isEmpty())
2966          return true;
2967      return false;
2968    }
2969
2970    public Identifier addIdentifier() { //3
2971      Identifier t = new Identifier();
2972      if (this.identifier == null)
2973        this.identifier = new ArrayList<Identifier>();
2974      this.identifier.add(t);
2975      return t;
2976    }
2977
2978    public CodeSystem addIdentifier(Identifier t) { //3
2979      if (t == null)
2980        return this;
2981      if (this.identifier == null)
2982        this.identifier = new ArrayList<Identifier>();
2983      this.identifier.add(t);
2984      return this;
2985    }
2986
2987    /**
2988     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
2989     */
2990    public Identifier getIdentifierFirstRep() { 
2991      if (getIdentifier().isEmpty()) {
2992        addIdentifier();
2993      }
2994      return getIdentifier().get(0);
2995    }
2996
2997    /**
2998     * @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
2999     */
3000    public StringType getVersionElement() { 
3001      if (this.version == null)
3002        if (Configuration.errorOnAutoCreate())
3003          throw new Error("Attempt to auto-create CodeSystem.version");
3004        else if (Configuration.doAutoCreate())
3005          this.version = new StringType(); // bb
3006      return this.version;
3007    }
3008
3009    public boolean hasVersionElement() { 
3010      return this.version != null && !this.version.isEmpty();
3011    }
3012
3013    public boolean hasVersion() { 
3014      return this.version != null && !this.version.isEmpty();
3015    }
3016
3017    /**
3018     * @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
3019     */
3020    public CodeSystem setVersionElement(StringType value) { 
3021      this.version = value;
3022      return this;
3023    }
3024
3025    /**
3026     * @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.
3027     */
3028    public String getVersion() { 
3029      return this.version == null ? null : this.version.getValue();
3030    }
3031
3032    /**
3033     * @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.
3034     */
3035    public CodeSystem setVersion(String value) { 
3036      if (Utilities.noString(value))
3037        this.version = null;
3038      else {
3039        if (this.version == null)
3040          this.version = new StringType();
3041        this.version.setValue(value);
3042      }
3043      return this;
3044    }
3045
3046    /**
3047     * @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
3048     */
3049    public StringType getNameElement() { 
3050      if (this.name == null)
3051        if (Configuration.errorOnAutoCreate())
3052          throw new Error("Attempt to auto-create CodeSystem.name");
3053        else if (Configuration.doAutoCreate())
3054          this.name = new StringType(); // bb
3055      return this.name;
3056    }
3057
3058    public boolean hasNameElement() { 
3059      return this.name != null && !this.name.isEmpty();
3060    }
3061
3062    public boolean hasName() { 
3063      return this.name != null && !this.name.isEmpty();
3064    }
3065
3066    /**
3067     * @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
3068     */
3069    public CodeSystem setNameElement(StringType value) { 
3070      this.name = value;
3071      return this;
3072    }
3073
3074    /**
3075     * @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.
3076     */
3077    public String getName() { 
3078      return this.name == null ? null : this.name.getValue();
3079    }
3080
3081    /**
3082     * @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.
3083     */
3084    public CodeSystem setName(String value) { 
3085      if (Utilities.noString(value))
3086        this.name = null;
3087      else {
3088        if (this.name == null)
3089          this.name = new StringType();
3090        this.name.setValue(value);
3091      }
3092      return this;
3093    }
3094
3095    /**
3096     * @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
3097     */
3098    public StringType getTitleElement() { 
3099      if (this.title == null)
3100        if (Configuration.errorOnAutoCreate())
3101          throw new Error("Attempt to auto-create CodeSystem.title");
3102        else if (Configuration.doAutoCreate())
3103          this.title = new StringType(); // bb
3104      return this.title;
3105    }
3106
3107    public boolean hasTitleElement() { 
3108      return this.title != null && !this.title.isEmpty();
3109    }
3110
3111    public boolean hasTitle() { 
3112      return this.title != null && !this.title.isEmpty();
3113    }
3114
3115    /**
3116     * @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
3117     */
3118    public CodeSystem setTitleElement(StringType value) { 
3119      this.title = value;
3120      return this;
3121    }
3122
3123    /**
3124     * @return A short, descriptive, user-friendly title for the code system.
3125     */
3126    public String getTitle() { 
3127      return this.title == null ? null : this.title.getValue();
3128    }
3129
3130    /**
3131     * @param value A short, descriptive, user-friendly title for the code system.
3132     */
3133    public CodeSystem setTitle(String value) { 
3134      if (Utilities.noString(value))
3135        this.title = null;
3136      else {
3137        if (this.title == null)
3138          this.title = new StringType();
3139        this.title.setValue(value);
3140      }
3141      return this;
3142    }
3143
3144    /**
3145     * @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
3146     */
3147    public Enumeration<PublicationStatus> getStatusElement() { 
3148      if (this.status == null)
3149        if (Configuration.errorOnAutoCreate())
3150          throw new Error("Attempt to auto-create CodeSystem.status");
3151        else if (Configuration.doAutoCreate())
3152          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
3153      return this.status;
3154    }
3155
3156    public boolean hasStatusElement() { 
3157      return this.status != null && !this.status.isEmpty();
3158    }
3159
3160    public boolean hasStatus() { 
3161      return this.status != null && !this.status.isEmpty();
3162    }
3163
3164    /**
3165     * @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
3166     */
3167    public CodeSystem setStatusElement(Enumeration<PublicationStatus> value) { 
3168      this.status = value;
3169      return this;
3170    }
3171
3172    /**
3173     * @return The status of this code system. Enables tracking the life-cycle of the content.
3174     */
3175    public PublicationStatus getStatus() { 
3176      return this.status == null ? null : this.status.getValue();
3177    }
3178
3179    /**
3180     * @param value The status of this code system. Enables tracking the life-cycle of the content.
3181     */
3182    public CodeSystem setStatus(PublicationStatus value) { 
3183        if (this.status == null)
3184          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
3185        this.status.setValue(value);
3186      return this;
3187    }
3188
3189    /**
3190     * @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
3191     */
3192    public BooleanType getExperimentalElement() { 
3193      if (this.experimental == null)
3194        if (Configuration.errorOnAutoCreate())
3195          throw new Error("Attempt to auto-create CodeSystem.experimental");
3196        else if (Configuration.doAutoCreate())
3197          this.experimental = new BooleanType(); // bb
3198      return this.experimental;
3199    }
3200
3201    public boolean hasExperimentalElement() { 
3202      return this.experimental != null && !this.experimental.isEmpty();
3203    }
3204
3205    public boolean hasExperimental() { 
3206      return this.experimental != null && !this.experimental.isEmpty();
3207    }
3208
3209    /**
3210     * @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
3211     */
3212    public CodeSystem setExperimentalElement(BooleanType value) { 
3213      this.experimental = value;
3214      return this;
3215    }
3216
3217    /**
3218     * @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.
3219     */
3220    public boolean getExperimental() { 
3221      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
3222    }
3223
3224    /**
3225     * @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.
3226     */
3227    public CodeSystem setExperimental(boolean value) { 
3228        if (this.experimental == null)
3229          this.experimental = new BooleanType();
3230        this.experimental.setValue(value);
3231      return this;
3232    }
3233
3234    /**
3235     * @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
3236     */
3237    public DateTimeType getDateElement() { 
3238      if (this.date == null)
3239        if (Configuration.errorOnAutoCreate())
3240          throw new Error("Attempt to auto-create CodeSystem.date");
3241        else if (Configuration.doAutoCreate())
3242          this.date = new DateTimeType(); // bb
3243      return this.date;
3244    }
3245
3246    public boolean hasDateElement() { 
3247      return this.date != null && !this.date.isEmpty();
3248    }
3249
3250    public boolean hasDate() { 
3251      return this.date != null && !this.date.isEmpty();
3252    }
3253
3254    /**
3255     * @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
3256     */
3257    public CodeSystem setDateElement(DateTimeType value) { 
3258      this.date = value;
3259      return this;
3260    }
3261
3262    /**
3263     * @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.
3264     */
3265    public Date getDate() { 
3266      return this.date == null ? null : this.date.getValue();
3267    }
3268
3269    /**
3270     * @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.
3271     */
3272    public CodeSystem setDate(Date value) { 
3273      if (value == null)
3274        this.date = null;
3275      else {
3276        if (this.date == null)
3277          this.date = new DateTimeType();
3278        this.date.setValue(value);
3279      }
3280      return this;
3281    }
3282
3283    /**
3284     * @return {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the code system.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
3285     */
3286    public StringType getPublisherElement() { 
3287      if (this.publisher == null)
3288        if (Configuration.errorOnAutoCreate())
3289          throw new Error("Attempt to auto-create CodeSystem.publisher");
3290        else if (Configuration.doAutoCreate())
3291          this.publisher = new StringType(); // bb
3292      return this.publisher;
3293    }
3294
3295    public boolean hasPublisherElement() { 
3296      return this.publisher != null && !this.publisher.isEmpty();
3297    }
3298
3299    public boolean hasPublisher() { 
3300      return this.publisher != null && !this.publisher.isEmpty();
3301    }
3302
3303    /**
3304     * @param value {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the code system.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
3305     */
3306    public CodeSystem setPublisherElement(StringType value) { 
3307      this.publisher = value;
3308      return this;
3309    }
3310
3311    /**
3312     * @return The name of the organization or individual responsible for the release and ongoing maintenance of the code system.
3313     */
3314    public String getPublisher() { 
3315      return this.publisher == null ? null : this.publisher.getValue();
3316    }
3317
3318    /**
3319     * @param value The name of the organization or individual responsible for the release and ongoing maintenance of the code system.
3320     */
3321    public CodeSystem setPublisher(String value) { 
3322      if (Utilities.noString(value))
3323        this.publisher = null;
3324      else {
3325        if (this.publisher == null)
3326          this.publisher = new StringType();
3327        this.publisher.setValue(value);
3328      }
3329      return this;
3330    }
3331
3332    /**
3333     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
3334     */
3335    public List<ContactDetail> getContact() { 
3336      if (this.contact == null)
3337        this.contact = new ArrayList<ContactDetail>();
3338      return this.contact;
3339    }
3340
3341    /**
3342     * @return Returns a reference to <code>this</code> for easy method chaining
3343     */
3344    public CodeSystem setContact(List<ContactDetail> theContact) { 
3345      this.contact = theContact;
3346      return this;
3347    }
3348
3349    public boolean hasContact() { 
3350      if (this.contact == null)
3351        return false;
3352      for (ContactDetail item : this.contact)
3353        if (!item.isEmpty())
3354          return true;
3355      return false;
3356    }
3357
3358    public ContactDetail addContact() { //3
3359      ContactDetail t = new ContactDetail();
3360      if (this.contact == null)
3361        this.contact = new ArrayList<ContactDetail>();
3362      this.contact.add(t);
3363      return t;
3364    }
3365
3366    public CodeSystem addContact(ContactDetail t) { //3
3367      if (t == null)
3368        return this;
3369      if (this.contact == null)
3370        this.contact = new ArrayList<ContactDetail>();
3371      this.contact.add(t);
3372      return this;
3373    }
3374
3375    /**
3376     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
3377     */
3378    public ContactDetail getContactFirstRep() { 
3379      if (getContact().isEmpty()) {
3380        addContact();
3381      }
3382      return getContact().get(0);
3383    }
3384
3385    /**
3386     * @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
3387     */
3388    public MarkdownType getDescriptionElement() { 
3389      if (this.description == null)
3390        if (Configuration.errorOnAutoCreate())
3391          throw new Error("Attempt to auto-create CodeSystem.description");
3392        else if (Configuration.doAutoCreate())
3393          this.description = new MarkdownType(); // bb
3394      return this.description;
3395    }
3396
3397    public boolean hasDescriptionElement() { 
3398      return this.description != null && !this.description.isEmpty();
3399    }
3400
3401    public boolean hasDescription() { 
3402      return this.description != null && !this.description.isEmpty();
3403    }
3404
3405    /**
3406     * @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
3407     */
3408    public CodeSystem setDescriptionElement(MarkdownType value) { 
3409      this.description = value;
3410      return this;
3411    }
3412
3413    /**
3414     * @return A free text natural language description of the code system from a consumer's perspective.
3415     */
3416    public String getDescription() { 
3417      return this.description == null ? null : this.description.getValue();
3418    }
3419
3420    /**
3421     * @param value A free text natural language description of the code system from a consumer's perspective.
3422     */
3423    public CodeSystem setDescription(String value) { 
3424      if (value == null)
3425        this.description = null;
3426      else {
3427        if (this.description == null)
3428          this.description = new MarkdownType();
3429        this.description.setValue(value);
3430      }
3431      return this;
3432    }
3433
3434    /**
3435     * @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.)
3436     */
3437    public List<UsageContext> getUseContext() { 
3438      if (this.useContext == null)
3439        this.useContext = new ArrayList<UsageContext>();
3440      return this.useContext;
3441    }
3442
3443    /**
3444     * @return Returns a reference to <code>this</code> for easy method chaining
3445     */
3446    public CodeSystem setUseContext(List<UsageContext> theUseContext) { 
3447      this.useContext = theUseContext;
3448      return this;
3449    }
3450
3451    public boolean hasUseContext() { 
3452      if (this.useContext == null)
3453        return false;
3454      for (UsageContext item : this.useContext)
3455        if (!item.isEmpty())
3456          return true;
3457      return false;
3458    }
3459
3460    public UsageContext addUseContext() { //3
3461      UsageContext t = new UsageContext();
3462      if (this.useContext == null)
3463        this.useContext = new ArrayList<UsageContext>();
3464      this.useContext.add(t);
3465      return t;
3466    }
3467
3468    public CodeSystem addUseContext(UsageContext t) { //3
3469      if (t == null)
3470        return this;
3471      if (this.useContext == null)
3472        this.useContext = new ArrayList<UsageContext>();
3473      this.useContext.add(t);
3474      return this;
3475    }
3476
3477    /**
3478     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
3479     */
3480    public UsageContext getUseContextFirstRep() { 
3481      if (getUseContext().isEmpty()) {
3482        addUseContext();
3483      }
3484      return getUseContext().get(0);
3485    }
3486
3487    /**
3488     * @return {@link #jurisdiction} (A legal or geographic region in which the code system is intended to be used.)
3489     */
3490    public List<CodeableConcept> getJurisdiction() { 
3491      if (this.jurisdiction == null)
3492        this.jurisdiction = new ArrayList<CodeableConcept>();
3493      return this.jurisdiction;
3494    }
3495
3496    /**
3497     * @return Returns a reference to <code>this</code> for easy method chaining
3498     */
3499    public CodeSystem setJurisdiction(List<CodeableConcept> theJurisdiction) { 
3500      this.jurisdiction = theJurisdiction;
3501      return this;
3502    }
3503
3504    public boolean hasJurisdiction() { 
3505      if (this.jurisdiction == null)
3506        return false;
3507      for (CodeableConcept item : this.jurisdiction)
3508        if (!item.isEmpty())
3509          return true;
3510      return false;
3511    }
3512
3513    public CodeableConcept addJurisdiction() { //3
3514      CodeableConcept t = new CodeableConcept();
3515      if (this.jurisdiction == null)
3516        this.jurisdiction = new ArrayList<CodeableConcept>();
3517      this.jurisdiction.add(t);
3518      return t;
3519    }
3520
3521    public CodeSystem addJurisdiction(CodeableConcept t) { //3
3522      if (t == null)
3523        return this;
3524      if (this.jurisdiction == null)
3525        this.jurisdiction = new ArrayList<CodeableConcept>();
3526      this.jurisdiction.add(t);
3527      return this;
3528    }
3529
3530    /**
3531     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
3532     */
3533    public CodeableConcept getJurisdictionFirstRep() { 
3534      if (getJurisdiction().isEmpty()) {
3535        addJurisdiction();
3536      }
3537      return getJurisdiction().get(0);
3538    }
3539
3540    /**
3541     * @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
3542     */
3543    public MarkdownType getPurposeElement() { 
3544      if (this.purpose == null)
3545        if (Configuration.errorOnAutoCreate())
3546          throw new Error("Attempt to auto-create CodeSystem.purpose");
3547        else if (Configuration.doAutoCreate())
3548          this.purpose = new MarkdownType(); // bb
3549      return this.purpose;
3550    }
3551
3552    public boolean hasPurposeElement() { 
3553      return this.purpose != null && !this.purpose.isEmpty();
3554    }
3555
3556    public boolean hasPurpose() { 
3557      return this.purpose != null && !this.purpose.isEmpty();
3558    }
3559
3560    /**
3561     * @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
3562     */
3563    public CodeSystem setPurposeElement(MarkdownType value) { 
3564      this.purpose = value;
3565      return this;
3566    }
3567
3568    /**
3569     * @return Explanation of why this code system is needed and why it has been designed as it has.
3570     */
3571    public String getPurpose() { 
3572      return this.purpose == null ? null : this.purpose.getValue();
3573    }
3574
3575    /**
3576     * @param value Explanation of why this code system is needed and why it has been designed as it has.
3577     */
3578    public CodeSystem setPurpose(String value) { 
3579      if (value == null)
3580        this.purpose = null;
3581      else {
3582        if (this.purpose == null)
3583          this.purpose = new MarkdownType();
3584        this.purpose.setValue(value);
3585      }
3586      return this;
3587    }
3588
3589    /**
3590     * @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
3591     */
3592    public MarkdownType getCopyrightElement() { 
3593      if (this.copyright == null)
3594        if (Configuration.errorOnAutoCreate())
3595          throw new Error("Attempt to auto-create CodeSystem.copyright");
3596        else if (Configuration.doAutoCreate())
3597          this.copyright = new MarkdownType(); // bb
3598      return this.copyright;
3599    }
3600
3601    public boolean hasCopyrightElement() { 
3602      return this.copyright != null && !this.copyright.isEmpty();
3603    }
3604
3605    public boolean hasCopyright() { 
3606      return this.copyright != null && !this.copyright.isEmpty();
3607    }
3608
3609    /**
3610     * @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
3611     */
3612    public CodeSystem setCopyrightElement(MarkdownType value) { 
3613      this.copyright = value;
3614      return this;
3615    }
3616
3617    /**
3618     * @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.
3619     */
3620    public String getCopyright() { 
3621      return this.copyright == null ? null : this.copyright.getValue();
3622    }
3623
3624    /**
3625     * @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.
3626     */
3627    public CodeSystem setCopyright(String value) { 
3628      if (value == null)
3629        this.copyright = null;
3630      else {
3631        if (this.copyright == null)
3632          this.copyright = new MarkdownType();
3633        this.copyright.setValue(value);
3634      }
3635      return this;
3636    }
3637
3638    /**
3639     * @return {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
3640     */
3641    public DateType getApprovalDateElement() { 
3642      if (this.approvalDate == null)
3643        if (Configuration.errorOnAutoCreate())
3644          throw new Error("Attempt to auto-create CodeSystem.approvalDate");
3645        else if (Configuration.doAutoCreate())
3646          this.approvalDate = new DateType(); // bb
3647      return this.approvalDate;
3648    }
3649
3650    public boolean hasApprovalDateElement() { 
3651      return this.approvalDate != null && !this.approvalDate.isEmpty();
3652    }
3653
3654    public boolean hasApprovalDate() { 
3655      return this.approvalDate != null && !this.approvalDate.isEmpty();
3656    }
3657
3658    /**
3659     * @param value {@link #approvalDate} (The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.). This is the underlying object with id, value and extensions. The accessor "getApprovalDate" gives direct access to the value
3660     */
3661    public CodeSystem setApprovalDateElement(DateType value) { 
3662      this.approvalDate = value;
3663      return this;
3664    }
3665
3666    /**
3667     * @return The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
3668     */
3669    public Date getApprovalDate() { 
3670      return this.approvalDate == null ? null : this.approvalDate.getValue();
3671    }
3672
3673    /**
3674     * @param value The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.
3675     */
3676    public CodeSystem setApprovalDate(Date value) { 
3677      if (value == null)
3678        this.approvalDate = null;
3679      else {
3680        if (this.approvalDate == null)
3681          this.approvalDate = new DateType();
3682        this.approvalDate.setValue(value);
3683      }
3684      return this;
3685    }
3686
3687    /**
3688     * @return {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
3689     */
3690    public DateType getLastReviewDateElement() { 
3691      if (this.lastReviewDate == null)
3692        if (Configuration.errorOnAutoCreate())
3693          throw new Error("Attempt to auto-create CodeSystem.lastReviewDate");
3694        else if (Configuration.doAutoCreate())
3695          this.lastReviewDate = new DateType(); // bb
3696      return this.lastReviewDate;
3697    }
3698
3699    public boolean hasLastReviewDateElement() { 
3700      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
3701    }
3702
3703    public boolean hasLastReviewDate() { 
3704      return this.lastReviewDate != null && !this.lastReviewDate.isEmpty();
3705    }
3706
3707    /**
3708     * @param value {@link #lastReviewDate} (The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.). This is the underlying object with id, value and extensions. The accessor "getLastReviewDate" gives direct access to the value
3709     */
3710    public CodeSystem setLastReviewDateElement(DateType value) { 
3711      this.lastReviewDate = value;
3712      return this;
3713    }
3714
3715    /**
3716     * @return The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
3717     */
3718    public Date getLastReviewDate() { 
3719      return this.lastReviewDate == null ? null : this.lastReviewDate.getValue();
3720    }
3721
3722    /**
3723     * @param value The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.
3724     */
3725    public CodeSystem setLastReviewDate(Date value) { 
3726      if (value == null)
3727        this.lastReviewDate = null;
3728      else {
3729        if (this.lastReviewDate == null)
3730          this.lastReviewDate = new DateType();
3731        this.lastReviewDate.setValue(value);
3732      }
3733      return this;
3734    }
3735
3736    /**
3737     * @return {@link #effectivePeriod} (The period during which the CodeSystem content was or is planned to be in active use.)
3738     */
3739    public Period getEffectivePeriod() { 
3740      if (this.effectivePeriod == null)
3741        if (Configuration.errorOnAutoCreate())
3742          throw new Error("Attempt to auto-create CodeSystem.effectivePeriod");
3743        else if (Configuration.doAutoCreate())
3744          this.effectivePeriod = new Period(); // cc
3745      return this.effectivePeriod;
3746    }
3747
3748    public boolean hasEffectivePeriod() { 
3749      return this.effectivePeriod != null && !this.effectivePeriod.isEmpty();
3750    }
3751
3752    /**
3753     * @param value {@link #effectivePeriod} (The period during which the CodeSystem content was or is planned to be in active use.)
3754     */
3755    public CodeSystem setEffectivePeriod(Period value) { 
3756      this.effectivePeriod = value;
3757      return this;
3758    }
3759
3760    /**
3761     * @return {@link #topic} (Descriptions related to the content of the CodeSystem. Topics provide a high-level categorization as well as keywords for the CodeSystem that can be useful for filtering and searching.)
3762     */
3763    public List<CodeableConcept> getTopic() { 
3764      if (this.topic == null)
3765        this.topic = new ArrayList<CodeableConcept>();
3766      return this.topic;
3767    }
3768
3769    /**
3770     * @return Returns a reference to <code>this</code> for easy method chaining
3771     */
3772    public CodeSystem setTopic(List<CodeableConcept> theTopic) { 
3773      this.topic = theTopic;
3774      return this;
3775    }
3776
3777    public boolean hasTopic() { 
3778      if (this.topic == null)
3779        return false;
3780      for (CodeableConcept item : this.topic)
3781        if (!item.isEmpty())
3782          return true;
3783      return false;
3784    }
3785
3786    public CodeableConcept addTopic() { //3
3787      CodeableConcept t = new CodeableConcept();
3788      if (this.topic == null)
3789        this.topic = new ArrayList<CodeableConcept>();
3790      this.topic.add(t);
3791      return t;
3792    }
3793
3794    public CodeSystem addTopic(CodeableConcept t) { //3
3795      if (t == null)
3796        return this;
3797      if (this.topic == null)
3798        this.topic = new ArrayList<CodeableConcept>();
3799      this.topic.add(t);
3800      return this;
3801    }
3802
3803    /**
3804     * @return The first repetition of repeating field {@link #topic}, creating it if it does not already exist {3}
3805     */
3806    public CodeableConcept getTopicFirstRep() { 
3807      if (getTopic().isEmpty()) {
3808        addTopic();
3809      }
3810      return getTopic().get(0);
3811    }
3812
3813    /**
3814     * @return {@link #author} (An individiual or organization primarily involved in the creation and maintenance of the CodeSystem.)
3815     */
3816    public List<ContactDetail> getAuthor() { 
3817      if (this.author == null)
3818        this.author = new ArrayList<ContactDetail>();
3819      return this.author;
3820    }
3821
3822    /**
3823     * @return Returns a reference to <code>this</code> for easy method chaining
3824     */
3825    public CodeSystem setAuthor(List<ContactDetail> theAuthor) { 
3826      this.author = theAuthor;
3827      return this;
3828    }
3829
3830    public boolean hasAuthor() { 
3831      if (this.author == null)
3832        return false;
3833      for (ContactDetail item : this.author)
3834        if (!item.isEmpty())
3835          return true;
3836      return false;
3837    }
3838
3839    public ContactDetail addAuthor() { //3
3840      ContactDetail t = new ContactDetail();
3841      if (this.author == null)
3842        this.author = new ArrayList<ContactDetail>();
3843      this.author.add(t);
3844      return t;
3845    }
3846
3847    public CodeSystem addAuthor(ContactDetail t) { //3
3848      if (t == null)
3849        return this;
3850      if (this.author == null)
3851        this.author = new ArrayList<ContactDetail>();
3852      this.author.add(t);
3853      return this;
3854    }
3855
3856    /**
3857     * @return The first repetition of repeating field {@link #author}, creating it if it does not already exist {3}
3858     */
3859    public ContactDetail getAuthorFirstRep() { 
3860      if (getAuthor().isEmpty()) {
3861        addAuthor();
3862      }
3863      return getAuthor().get(0);
3864    }
3865
3866    /**
3867     * @return {@link #editor} (An individual or organization primarily responsible for internal coherence of the CodeSystem.)
3868     */
3869    public List<ContactDetail> getEditor() { 
3870      if (this.editor == null)
3871        this.editor = new ArrayList<ContactDetail>();
3872      return this.editor;
3873    }
3874
3875    /**
3876     * @return Returns a reference to <code>this</code> for easy method chaining
3877     */
3878    public CodeSystem setEditor(List<ContactDetail> theEditor) { 
3879      this.editor = theEditor;
3880      return this;
3881    }
3882
3883    public boolean hasEditor() { 
3884      if (this.editor == null)
3885        return false;
3886      for (ContactDetail item : this.editor)
3887        if (!item.isEmpty())
3888          return true;
3889      return false;
3890    }
3891
3892    public ContactDetail addEditor() { //3
3893      ContactDetail t = new ContactDetail();
3894      if (this.editor == null)
3895        this.editor = new ArrayList<ContactDetail>();
3896      this.editor.add(t);
3897      return t;
3898    }
3899
3900    public CodeSystem addEditor(ContactDetail t) { //3
3901      if (t == null)
3902        return this;
3903      if (this.editor == null)
3904        this.editor = new ArrayList<ContactDetail>();
3905      this.editor.add(t);
3906      return this;
3907    }
3908
3909    /**
3910     * @return The first repetition of repeating field {@link #editor}, creating it if it does not already exist {3}
3911     */
3912    public ContactDetail getEditorFirstRep() { 
3913      if (getEditor().isEmpty()) {
3914        addEditor();
3915      }
3916      return getEditor().get(0);
3917    }
3918
3919    /**
3920     * @return {@link #reviewer} (An individual or organization primarily responsible for review of some aspect of the CodeSystem.)
3921     */
3922    public List<ContactDetail> getReviewer() { 
3923      if (this.reviewer == null)
3924        this.reviewer = new ArrayList<ContactDetail>();
3925      return this.reviewer;
3926    }
3927
3928    /**
3929     * @return Returns a reference to <code>this</code> for easy method chaining
3930     */
3931    public CodeSystem setReviewer(List<ContactDetail> theReviewer) { 
3932      this.reviewer = theReviewer;
3933      return this;
3934    }
3935
3936    public boolean hasReviewer() { 
3937      if (this.reviewer == null)
3938        return false;
3939      for (ContactDetail item : this.reviewer)
3940        if (!item.isEmpty())
3941          return true;
3942      return false;
3943    }
3944
3945    public ContactDetail addReviewer() { //3
3946      ContactDetail t = new ContactDetail();
3947      if (this.reviewer == null)
3948        this.reviewer = new ArrayList<ContactDetail>();
3949      this.reviewer.add(t);
3950      return t;
3951    }
3952
3953    public CodeSystem addReviewer(ContactDetail t) { //3
3954      if (t == null)
3955        return this;
3956      if (this.reviewer == null)
3957        this.reviewer = new ArrayList<ContactDetail>();
3958      this.reviewer.add(t);
3959      return this;
3960    }
3961
3962    /**
3963     * @return The first repetition of repeating field {@link #reviewer}, creating it if it does not already exist {3}
3964     */
3965    public ContactDetail getReviewerFirstRep() { 
3966      if (getReviewer().isEmpty()) {
3967        addReviewer();
3968      }
3969      return getReviewer().get(0);
3970    }
3971
3972    /**
3973     * @return {@link #endorser} (An individual or organization responsible for officially endorsing the CodeSystem for use in some setting.)
3974     */
3975    public List<ContactDetail> getEndorser() { 
3976      if (this.endorser == null)
3977        this.endorser = new ArrayList<ContactDetail>();
3978      return this.endorser;
3979    }
3980
3981    /**
3982     * @return Returns a reference to <code>this</code> for easy method chaining
3983     */
3984    public CodeSystem setEndorser(List<ContactDetail> theEndorser) { 
3985      this.endorser = theEndorser;
3986      return this;
3987    }
3988
3989    public boolean hasEndorser() { 
3990      if (this.endorser == null)
3991        return false;
3992      for (ContactDetail item : this.endorser)
3993        if (!item.isEmpty())
3994          return true;
3995      return false;
3996    }
3997
3998    public ContactDetail addEndorser() { //3
3999      ContactDetail t = new ContactDetail();
4000      if (this.endorser == null)
4001        this.endorser = new ArrayList<ContactDetail>();
4002      this.endorser.add(t);
4003      return t;
4004    }
4005
4006    public CodeSystem addEndorser(ContactDetail t) { //3
4007      if (t == null)
4008        return this;
4009      if (this.endorser == null)
4010        this.endorser = new ArrayList<ContactDetail>();
4011      this.endorser.add(t);
4012      return this;
4013    }
4014
4015    /**
4016     * @return The first repetition of repeating field {@link #endorser}, creating it if it does not already exist {3}
4017     */
4018    public ContactDetail getEndorserFirstRep() { 
4019      if (getEndorser().isEmpty()) {
4020        addEndorser();
4021      }
4022      return getEndorser().get(0);
4023    }
4024
4025    /**
4026     * @return {@link #relatedArtifact} (Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts.)
4027     */
4028    public List<RelatedArtifact> getRelatedArtifact() { 
4029      if (this.relatedArtifact == null)
4030        this.relatedArtifact = new ArrayList<RelatedArtifact>();
4031      return this.relatedArtifact;
4032    }
4033
4034    /**
4035     * @return Returns a reference to <code>this</code> for easy method chaining
4036     */
4037    public CodeSystem setRelatedArtifact(List<RelatedArtifact> theRelatedArtifact) { 
4038      this.relatedArtifact = theRelatedArtifact;
4039      return this;
4040    }
4041
4042    public boolean hasRelatedArtifact() { 
4043      if (this.relatedArtifact == null)
4044        return false;
4045      for (RelatedArtifact item : this.relatedArtifact)
4046        if (!item.isEmpty())
4047          return true;
4048      return false;
4049    }
4050
4051    public RelatedArtifact addRelatedArtifact() { //3
4052      RelatedArtifact t = new RelatedArtifact();
4053      if (this.relatedArtifact == null)
4054        this.relatedArtifact = new ArrayList<RelatedArtifact>();
4055      this.relatedArtifact.add(t);
4056      return t;
4057    }
4058
4059    public CodeSystem addRelatedArtifact(RelatedArtifact t) { //3
4060      if (t == null)
4061        return this;
4062      if (this.relatedArtifact == null)
4063        this.relatedArtifact = new ArrayList<RelatedArtifact>();
4064      this.relatedArtifact.add(t);
4065      return this;
4066    }
4067
4068    /**
4069     * @return The first repetition of repeating field {@link #relatedArtifact}, creating it if it does not already exist {3}
4070     */
4071    public RelatedArtifact getRelatedArtifactFirstRep() { 
4072      if (getRelatedArtifact().isEmpty()) {
4073        addRelatedArtifact();
4074      }
4075      return getRelatedArtifact().get(0);
4076    }
4077
4078    /**
4079     * @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
4080     */
4081    public BooleanType getCaseSensitiveElement() { 
4082      if (this.caseSensitive == null)
4083        if (Configuration.errorOnAutoCreate())
4084          throw new Error("Attempt to auto-create CodeSystem.caseSensitive");
4085        else if (Configuration.doAutoCreate())
4086          this.caseSensitive = new BooleanType(); // bb
4087      return this.caseSensitive;
4088    }
4089
4090    public boolean hasCaseSensitiveElement() { 
4091      return this.caseSensitive != null && !this.caseSensitive.isEmpty();
4092    }
4093
4094    public boolean hasCaseSensitive() { 
4095      return this.caseSensitive != null && !this.caseSensitive.isEmpty();
4096    }
4097
4098    /**
4099     * @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
4100     */
4101    public CodeSystem setCaseSensitiveElement(BooleanType value) { 
4102      this.caseSensitive = value;
4103      return this;
4104    }
4105
4106    /**
4107     * @return If code comparison is case sensitive when codes within this system are compared to each other.
4108     */
4109    public boolean getCaseSensitive() { 
4110      return this.caseSensitive == null || this.caseSensitive.isEmpty() ? false : this.caseSensitive.getValue();
4111    }
4112
4113    /**
4114     * @param value If code comparison is case sensitive when codes within this system are compared to each other.
4115     */
4116    public CodeSystem setCaseSensitive(boolean value) { 
4117        if (this.caseSensitive == null)
4118          this.caseSensitive = new BooleanType();
4119        this.caseSensitive.setValue(value);
4120      return this;
4121    }
4122
4123    /**
4124     * @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
4125     */
4126    public CanonicalType getValueSetElement() { 
4127      if (this.valueSet == null)
4128        if (Configuration.errorOnAutoCreate())
4129          throw new Error("Attempt to auto-create CodeSystem.valueSet");
4130        else if (Configuration.doAutoCreate())
4131          this.valueSet = new CanonicalType(); // bb
4132      return this.valueSet;
4133    }
4134
4135    public boolean hasValueSetElement() { 
4136      return this.valueSet != null && !this.valueSet.isEmpty();
4137    }
4138
4139    public boolean hasValueSet() { 
4140      return this.valueSet != null && !this.valueSet.isEmpty();
4141    }
4142
4143    /**
4144     * @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
4145     */
4146    public CodeSystem setValueSetElement(CanonicalType value) { 
4147      this.valueSet = value;
4148      return this;
4149    }
4150
4151    /**
4152     * @return Canonical reference to the value set that contains all codes in the code system independent of code status.
4153     */
4154    public String getValueSet() { 
4155      return this.valueSet == null ? null : this.valueSet.getValue();
4156    }
4157
4158    /**
4159     * @param value Canonical reference to the value set that contains all codes in the code system independent of code status.
4160     */
4161    public CodeSystem setValueSet(String value) { 
4162      if (Utilities.noString(value))
4163        this.valueSet = null;
4164      else {
4165        if (this.valueSet == null)
4166          this.valueSet = new CanonicalType();
4167        this.valueSet.setValue(value);
4168      }
4169      return this;
4170    }
4171
4172    /**
4173     * @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
4174     */
4175    public Enumeration<CodeSystemHierarchyMeaning> getHierarchyMeaningElement() { 
4176      if (this.hierarchyMeaning == null)
4177        if (Configuration.errorOnAutoCreate())
4178          throw new Error("Attempt to auto-create CodeSystem.hierarchyMeaning");
4179        else if (Configuration.doAutoCreate())
4180          this.hierarchyMeaning = new Enumeration<CodeSystemHierarchyMeaning>(new CodeSystemHierarchyMeaningEnumFactory()); // bb
4181      return this.hierarchyMeaning;
4182    }
4183
4184    public boolean hasHierarchyMeaningElement() { 
4185      return this.hierarchyMeaning != null && !this.hierarchyMeaning.isEmpty();
4186    }
4187
4188    public boolean hasHierarchyMeaning() { 
4189      return this.hierarchyMeaning != null && !this.hierarchyMeaning.isEmpty();
4190    }
4191
4192    /**
4193     * @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
4194     */
4195    public CodeSystem setHierarchyMeaningElement(Enumeration<CodeSystemHierarchyMeaning> value) { 
4196      this.hierarchyMeaning = value;
4197      return this;
4198    }
4199
4200    /**
4201     * @return The meaning of the hierarchy of concepts as represented in this resource.
4202     */
4203    public CodeSystemHierarchyMeaning getHierarchyMeaning() { 
4204      return this.hierarchyMeaning == null ? null : this.hierarchyMeaning.getValue();
4205    }
4206
4207    /**
4208     * @param value The meaning of the hierarchy of concepts as represented in this resource.
4209     */
4210    public CodeSystem setHierarchyMeaning(CodeSystemHierarchyMeaning value) { 
4211      if (value == null)
4212        this.hierarchyMeaning = null;
4213      else {
4214        if (this.hierarchyMeaning == null)
4215          this.hierarchyMeaning = new Enumeration<CodeSystemHierarchyMeaning>(new CodeSystemHierarchyMeaningEnumFactory());
4216        this.hierarchyMeaning.setValue(value);
4217      }
4218      return this;
4219    }
4220
4221    /**
4222     * @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
4223     */
4224    public BooleanType getCompositionalElement() { 
4225      if (this.compositional == null)
4226        if (Configuration.errorOnAutoCreate())
4227          throw new Error("Attempt to auto-create CodeSystem.compositional");
4228        else if (Configuration.doAutoCreate())
4229          this.compositional = new BooleanType(); // bb
4230      return this.compositional;
4231    }
4232
4233    public boolean hasCompositionalElement() { 
4234      return this.compositional != null && !this.compositional.isEmpty();
4235    }
4236
4237    public boolean hasCompositional() { 
4238      return this.compositional != null && !this.compositional.isEmpty();
4239    }
4240
4241    /**
4242     * @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
4243     */
4244    public CodeSystem setCompositionalElement(BooleanType value) { 
4245      this.compositional = value;
4246      return this;
4247    }
4248
4249    /**
4250     * @return The code system defines a compositional (post-coordination) grammar.
4251     */
4252    public boolean getCompositional() { 
4253      return this.compositional == null || this.compositional.isEmpty() ? false : this.compositional.getValue();
4254    }
4255
4256    /**
4257     * @param value The code system defines a compositional (post-coordination) grammar.
4258     */
4259    public CodeSystem setCompositional(boolean value) { 
4260        if (this.compositional == null)
4261          this.compositional = new BooleanType();
4262        this.compositional.setValue(value);
4263      return this;
4264    }
4265
4266    /**
4267     * @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
4268     */
4269    public BooleanType getVersionNeededElement() { 
4270      if (this.versionNeeded == null)
4271        if (Configuration.errorOnAutoCreate())
4272          throw new Error("Attempt to auto-create CodeSystem.versionNeeded");
4273        else if (Configuration.doAutoCreate())
4274          this.versionNeeded = new BooleanType(); // bb
4275      return this.versionNeeded;
4276    }
4277
4278    public boolean hasVersionNeededElement() { 
4279      return this.versionNeeded != null && !this.versionNeeded.isEmpty();
4280    }
4281
4282    public boolean hasVersionNeeded() { 
4283      return this.versionNeeded != null && !this.versionNeeded.isEmpty();
4284    }
4285
4286    /**
4287     * @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
4288     */
4289    public CodeSystem setVersionNeededElement(BooleanType value) { 
4290      this.versionNeeded = value;
4291      return this;
4292    }
4293
4294    /**
4295     * @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.
4296     */
4297    public boolean getVersionNeeded() { 
4298      return this.versionNeeded == null || this.versionNeeded.isEmpty() ? false : this.versionNeeded.getValue();
4299    }
4300
4301    /**
4302     * @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.
4303     */
4304    public CodeSystem setVersionNeeded(boolean value) { 
4305        if (this.versionNeeded == null)
4306          this.versionNeeded = new BooleanType();
4307        this.versionNeeded.setValue(value);
4308      return this;
4309    }
4310
4311    /**
4312     * @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
4313     */
4314    public Enumeration<CodeSystemContentMode> getContentElement() { 
4315      if (this.content == null)
4316        if (Configuration.errorOnAutoCreate())
4317          throw new Error("Attempt to auto-create CodeSystem.content");
4318        else if (Configuration.doAutoCreate())
4319          this.content = new Enumeration<CodeSystemContentMode>(new CodeSystemContentModeEnumFactory()); // bb
4320      return this.content;
4321    }
4322
4323    public boolean hasContentElement() { 
4324      return this.content != null && !this.content.isEmpty();
4325    }
4326
4327    public boolean hasContent() { 
4328      return this.content != null && !this.content.isEmpty();
4329    }
4330
4331    /**
4332     * @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
4333     */
4334    public CodeSystem setContentElement(Enumeration<CodeSystemContentMode> value) { 
4335      this.content = value;
4336      return this;
4337    }
4338
4339    /**
4340     * @return The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.
4341     */
4342    public CodeSystemContentMode getContent() { 
4343      return this.content == null ? null : this.content.getValue();
4344    }
4345
4346    /**
4347     * @param value The extent of the content of the code system (the concepts and codes it defines) are represented in this resource instance.
4348     */
4349    public CodeSystem setContent(CodeSystemContentMode value) { 
4350        if (this.content == null)
4351          this.content = new Enumeration<CodeSystemContentMode>(new CodeSystemContentModeEnumFactory());
4352        this.content.setValue(value);
4353      return this;
4354    }
4355
4356    /**
4357     * @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
4358     */
4359    public CanonicalType getSupplementsElement() { 
4360      if (this.supplements == null)
4361        if (Configuration.errorOnAutoCreate())
4362          throw new Error("Attempt to auto-create CodeSystem.supplements");
4363        else if (Configuration.doAutoCreate())
4364          this.supplements = new CanonicalType(); // bb
4365      return this.supplements;
4366    }
4367
4368    public boolean hasSupplementsElement() { 
4369      return this.supplements != null && !this.supplements.isEmpty();
4370    }
4371
4372    public boolean hasSupplements() { 
4373      return this.supplements != null && !this.supplements.isEmpty();
4374    }
4375
4376    /**
4377     * @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
4378     */
4379    public CodeSystem setSupplementsElement(CanonicalType value) { 
4380      this.supplements = value;
4381      return this;
4382    }
4383
4384    /**
4385     * @return The canonical URL of the code system that this code system supplement is adding designations and properties to.
4386     */
4387    public String getSupplements() { 
4388      return this.supplements == null ? null : this.supplements.getValue();
4389    }
4390
4391    /**
4392     * @param value The canonical URL of the code system that this code system supplement is adding designations and properties to.
4393     */
4394    public CodeSystem setSupplements(String value) { 
4395      if (Utilities.noString(value))
4396        this.supplements = null;
4397      else {
4398        if (this.supplements == null)
4399          this.supplements = new CanonicalType();
4400        this.supplements.setValue(value);
4401      }
4402      return this;
4403    }
4404
4405    /**
4406     * @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
4407     */
4408    public UnsignedIntType getCountElement() { 
4409      if (this.count == null)
4410        if (Configuration.errorOnAutoCreate())
4411          throw new Error("Attempt to auto-create CodeSystem.count");
4412        else if (Configuration.doAutoCreate())
4413          this.count = new UnsignedIntType(); // bb
4414      return this.count;
4415    }
4416
4417    public boolean hasCountElement() { 
4418      return this.count != null && !this.count.isEmpty();
4419    }
4420
4421    public boolean hasCount() { 
4422      return this.count != null && !this.count.isEmpty();
4423    }
4424
4425    /**
4426     * @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
4427     */
4428    public CodeSystem setCountElement(UnsignedIntType value) { 
4429      this.count = value;
4430      return this;
4431    }
4432
4433    /**
4434     * @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.
4435     */
4436    public int getCount() { 
4437      return this.count == null || this.count.isEmpty() ? 0 : this.count.getValue();
4438    }
4439
4440    /**
4441     * @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.
4442     */
4443    public CodeSystem setCount(int value) { 
4444        if (this.count == null)
4445          this.count = new UnsignedIntType();
4446        this.count.setValue(value);
4447      return this;
4448    }
4449
4450    /**
4451     * @return {@link #filter} (A filter that can be used in a value set compose statement when selecting concepts using a filter.)
4452     */
4453    public List<CodeSystemFilterComponent> getFilter() { 
4454      if (this.filter == null)
4455        this.filter = new ArrayList<CodeSystemFilterComponent>();
4456      return this.filter;
4457    }
4458
4459    /**
4460     * @return Returns a reference to <code>this</code> for easy method chaining
4461     */
4462    public CodeSystem setFilter(List<CodeSystemFilterComponent> theFilter) { 
4463      this.filter = theFilter;
4464      return this;
4465    }
4466
4467    public boolean hasFilter() { 
4468      if (this.filter == null)
4469        return false;
4470      for (CodeSystemFilterComponent item : this.filter)
4471        if (!item.isEmpty())
4472          return true;
4473      return false;
4474    }
4475
4476    public CodeSystemFilterComponent addFilter() { //3
4477      CodeSystemFilterComponent t = new CodeSystemFilterComponent();
4478      if (this.filter == null)
4479        this.filter = new ArrayList<CodeSystemFilterComponent>();
4480      this.filter.add(t);
4481      return t;
4482    }
4483
4484    public CodeSystem addFilter(CodeSystemFilterComponent t) { //3
4485      if (t == null)
4486        return this;
4487      if (this.filter == null)
4488        this.filter = new ArrayList<CodeSystemFilterComponent>();
4489      this.filter.add(t);
4490      return this;
4491    }
4492
4493    /**
4494     * @return The first repetition of repeating field {@link #filter}, creating it if it does not already exist {3}
4495     */
4496    public CodeSystemFilterComponent getFilterFirstRep() { 
4497      if (getFilter().isEmpty()) {
4498        addFilter();
4499      }
4500      return getFilter().get(0);
4501    }
4502
4503    /**
4504     * @return {@link #property} (A property defines an additional slot through which additional information can be provided about a concept.)
4505     */
4506    public List<PropertyComponent> getProperty() { 
4507      if (this.property == null)
4508        this.property = new ArrayList<PropertyComponent>();
4509      return this.property;
4510    }
4511
4512    /**
4513     * @return Returns a reference to <code>this</code> for easy method chaining
4514     */
4515    public CodeSystem setProperty(List<PropertyComponent> theProperty) { 
4516      this.property = theProperty;
4517      return this;
4518    }
4519
4520    public boolean hasProperty() { 
4521      if (this.property == null)
4522        return false;
4523      for (PropertyComponent item : this.property)
4524        if (!item.isEmpty())
4525          return true;
4526      return false;
4527    }
4528
4529    public PropertyComponent addProperty() { //3
4530      PropertyComponent t = new PropertyComponent();
4531      if (this.property == null)
4532        this.property = new ArrayList<PropertyComponent>();
4533      this.property.add(t);
4534      return t;
4535    }
4536
4537    public CodeSystem addProperty(PropertyComponent t) { //3
4538      if (t == null)
4539        return this;
4540      if (this.property == null)
4541        this.property = new ArrayList<PropertyComponent>();
4542      this.property.add(t);
4543      return this;
4544    }
4545
4546    /**
4547     * @return The first repetition of repeating field {@link #property}, creating it if it does not already exist {3}
4548     */
4549    public PropertyComponent getPropertyFirstRep() { 
4550      if (getProperty().isEmpty()) {
4551        addProperty();
4552      }
4553      return getProperty().get(0);
4554    }
4555
4556    /**
4557     * @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.)
4558     */
4559    public List<ConceptDefinitionComponent> getConcept() { 
4560      if (this.concept == null)
4561        this.concept = new ArrayList<ConceptDefinitionComponent>();
4562      return this.concept;
4563    }
4564
4565    /**
4566     * @return Returns a reference to <code>this</code> for easy method chaining
4567     */
4568    public CodeSystem setConcept(List<ConceptDefinitionComponent> theConcept) { 
4569      this.concept = theConcept;
4570      return this;
4571    }
4572
4573    public boolean hasConcept() { 
4574      if (this.concept == null)
4575        return false;
4576      for (ConceptDefinitionComponent item : this.concept)
4577        if (!item.isEmpty())
4578          return true;
4579      return false;
4580    }
4581
4582    public ConceptDefinitionComponent addConcept() { //3
4583      ConceptDefinitionComponent t = new ConceptDefinitionComponent();
4584      if (this.concept == null)
4585        this.concept = new ArrayList<ConceptDefinitionComponent>();
4586      this.concept.add(t);
4587      return t;
4588    }
4589
4590    public CodeSystem addConcept(ConceptDefinitionComponent t) { //3
4591      if (t == null)
4592        return this;
4593      if (this.concept == null)
4594        this.concept = new ArrayList<ConceptDefinitionComponent>();
4595      this.concept.add(t);
4596      return this;
4597    }
4598
4599    /**
4600     * @return The first repetition of repeating field {@link #concept}, creating it if it does not already exist {3}
4601     */
4602    public ConceptDefinitionComponent getConceptFirstRep() { 
4603      if (getConcept().isEmpty()) {
4604        addConcept();
4605      }
4606      return getConcept().get(0);
4607    }
4608
4609    /**
4610     * not supported on this implementation
4611     */
4612    @Override
4613    public int getVersionAlgorithmMax() { 
4614      return 0;
4615    }
4616    /**
4617     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
4618     */
4619    public DataType getVersionAlgorithm() { 
4620      throw new Error("The resource type \"CodeSystem\" does not implement the property \"versionAlgorithm[x]\""); 
4621    }
4622    /**
4623     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
4624     */
4625    public StringType getVersionAlgorithmStringType() { 
4626      throw new Error("The resource type \"CodeSystem\" does not implement the property \"versionAlgorithm[x]\""); 
4627    }
4628    public boolean hasVersionAlgorithmStringType() { 
4629      return false;////K 
4630    }
4631    /**
4632     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
4633     */
4634    public Coding getVersionAlgorithmCoding() { 
4635      throw new Error("The resource type \"CodeSystem\" does not implement the property \"versionAlgorithm[x]\""); 
4636    }
4637    public boolean hasVersionAlgorithmCoding() { 
4638      return false;////K 
4639    }
4640    public boolean hasVersionAlgorithm() { 
4641      return false;
4642    }
4643    /**
4644     * @param value {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
4645     */
4646    public CodeSystem setVersionAlgorithm(DataType value) { 
4647      throw new Error("The resource type \"CodeSystem\" does not implement the property \"versionAlgorithm[x]\""); 
4648    }
4649
4650    /**
4651     * not supported on this implementation
4652     */
4653    @Override
4654    public int getCopyrightLabelMax() { 
4655      return 0;
4656    }
4657    /**
4658     * @return {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
4659     */
4660    public StringType getCopyrightLabelElement() { 
4661      throw new Error("The resource type \"CodeSystem\" does not implement the property \"copyrightLabel\"");
4662    }
4663
4664    public boolean hasCopyrightLabelElement() { 
4665      return false;
4666    }
4667    public boolean hasCopyrightLabel() {
4668      return false;
4669    }
4670
4671    /**
4672     * @param value {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
4673     */
4674    public CodeSystem setCopyrightLabelElement(StringType value) { 
4675      throw new Error("The resource type \"CodeSystem\" does not implement the property \"copyrightLabel\""); 
4676    }
4677    public String getCopyrightLabel() { 
4678      throw new Error("The resource type \"CodeSystem\" does not implement the property \"copyrightLabel\""); 
4679    }
4680    /**
4681     * @param value A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
4682     */
4683    public CodeSystem setCopyrightLabel(String value) { 
4684      throw new Error("The resource type \"CodeSystem\" does not implement the property \"copyrightLabel\""); 
4685    }
4686      protected void listChildren(List<Property> children) {
4687        super.listChildren(children);
4688        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 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));
4689        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));
4690        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));
4691        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));
4692        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the code system.", 0, 1, title));
4693        children.add(new Property("status", "code", "The status of this code system. Enables tracking the life-cycle of the content.", 0, 1, status));
4694        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));
4695        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));
4696        children.add(new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the code system.", 0, 1, publisher));
4697        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));
4698        children.add(new Property("description", "markdown", "A free text natural language description of the code system from a consumer's perspective.", 0, 1, description));
4699        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));
4700        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));
4701        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));
4702        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));
4703        children.add(new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate));
4704        children.add(new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate));
4705        children.add(new Property("effectivePeriod", "Period", "The period during which the CodeSystem content was or is planned to be in active use.", 0, 1, effectivePeriod));
4706        children.add(new Property("topic", "CodeableConcept", "Descriptions related to the content of the CodeSystem. Topics provide a high-level categorization as well as keywords for the CodeSystem that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic));
4707        children.add(new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the CodeSystem.", 0, java.lang.Integer.MAX_VALUE, author));
4708        children.add(new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the CodeSystem.", 0, java.lang.Integer.MAX_VALUE, editor));
4709        children.add(new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the CodeSystem.", 0, java.lang.Integer.MAX_VALUE, reviewer));
4710        children.add(new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the CodeSystem for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser));
4711        children.add(new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact));
4712        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));
4713        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));
4714        children.add(new Property("hierarchyMeaning", "code", "The meaning of the hierarchy of concepts as represented in this resource.", 0, 1, hierarchyMeaning));
4715        children.add(new Property("compositional", "boolean", "The code system defines a compositional (post-coordination) grammar.", 0, 1, compositional));
4716        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));
4717        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));
4718        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));
4719        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));
4720        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));
4721        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));
4722        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));
4723      }
4724
4725      @Override
4726      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
4727        switch (_hash) {
4728        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 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);
4729        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);
4730        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);
4731        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);
4732        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the code system.", 0, 1, title);
4733        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);
4734        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);
4735        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);
4736        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the code system.", 0, 1, publisher);
4737        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);
4738        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);
4739        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);
4740        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);
4741        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);
4742        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);
4743        case 223539345: /*approvalDate*/  return new Property("approvalDate", "date", "The date on which the resource content was approved by the publisher. Approval happens once when the content is officially approved for usage.", 0, 1, approvalDate);
4744        case -1687512484: /*lastReviewDate*/  return new Property("lastReviewDate", "date", "The date on which the resource content was last reviewed. Review happens periodically after approval but does not change the original approval date.", 0, 1, lastReviewDate);
4745        case -403934648: /*effectivePeriod*/  return new Property("effectivePeriod", "Period", "The period during which the CodeSystem content was or is planned to be in active use.", 0, 1, effectivePeriod);
4746        case 110546223: /*topic*/  return new Property("topic", "CodeableConcept", "Descriptions related to the content of the CodeSystem. Topics provide a high-level categorization as well as keywords for the CodeSystem that can be useful for filtering and searching.", 0, java.lang.Integer.MAX_VALUE, topic);
4747        case -1406328437: /*author*/  return new Property("author", "ContactDetail", "An individiual or organization primarily involved in the creation and maintenance of the CodeSystem.", 0, java.lang.Integer.MAX_VALUE, author);
4748        case -1307827859: /*editor*/  return new Property("editor", "ContactDetail", "An individual or organization primarily responsible for internal coherence of the CodeSystem.", 0, java.lang.Integer.MAX_VALUE, editor);
4749        case -261190139: /*reviewer*/  return new Property("reviewer", "ContactDetail", "An individual or organization primarily responsible for review of some aspect of the CodeSystem.", 0, java.lang.Integer.MAX_VALUE, reviewer);
4750        case 1740277666: /*endorser*/  return new Property("endorser", "ContactDetail", "An individual or organization responsible for officially endorsing the CodeSystem for use in some setting.", 0, java.lang.Integer.MAX_VALUE, endorser);
4751        case 666807069: /*relatedArtifact*/  return new Property("relatedArtifact", "RelatedArtifact", "Related artifacts such as additional documentation, justification, dependencies, bibliographic references, and predecessor and successor artifacts.", 0, java.lang.Integer.MAX_VALUE, relatedArtifact);
4752        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);
4753        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);
4754        case 1913078280: /*hierarchyMeaning*/  return new Property("hierarchyMeaning", "code", "The meaning of the hierarchy of concepts as represented in this resource.", 0, 1, hierarchyMeaning);
4755        case 1248023381: /*compositional*/  return new Property("compositional", "boolean", "The code system defines a compositional (post-coordination) grammar.", 0, 1, compositional);
4756        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);
4757        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);
4758        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);
4759        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);
4760        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);
4761        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);
4762        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);
4763        default: return super.getNamedProperty(_hash, _name, _checkValid);
4764        }
4765
4766      }
4767
4768      @Override
4769      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
4770        switch (hash) {
4771        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
4772        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
4773        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
4774        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
4775        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
4776        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
4777        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
4778        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
4779        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
4780        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
4781        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
4782        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
4783        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
4784        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
4785        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
4786        case 223539345: /*approvalDate*/ return this.approvalDate == null ? new Base[0] : new Base[] {this.approvalDate}; // DateType
4787        case -1687512484: /*lastReviewDate*/ return this.lastReviewDate == null ? new Base[0] : new Base[] {this.lastReviewDate}; // DateType
4788        case -403934648: /*effectivePeriod*/ return this.effectivePeriod == null ? new Base[0] : new Base[] {this.effectivePeriod}; // Period
4789        case 110546223: /*topic*/ return this.topic == null ? new Base[0] : this.topic.toArray(new Base[this.topic.size()]); // CodeableConcept
4790        case -1406328437: /*author*/ return this.author == null ? new Base[0] : this.author.toArray(new Base[this.author.size()]); // ContactDetail
4791        case -1307827859: /*editor*/ return this.editor == null ? new Base[0] : this.editor.toArray(new Base[this.editor.size()]); // ContactDetail
4792        case -261190139: /*reviewer*/ return this.reviewer == null ? new Base[0] : this.reviewer.toArray(new Base[this.reviewer.size()]); // ContactDetail
4793        case 1740277666: /*endorser*/ return this.endorser == null ? new Base[0] : this.endorser.toArray(new Base[this.endorser.size()]); // ContactDetail
4794        case 666807069: /*relatedArtifact*/ return this.relatedArtifact == null ? new Base[0] : this.relatedArtifact.toArray(new Base[this.relatedArtifact.size()]); // RelatedArtifact
4795        case -35616442: /*caseSensitive*/ return this.caseSensitive == null ? new Base[0] : new Base[] {this.caseSensitive}; // BooleanType
4796        case -1410174671: /*valueSet*/ return this.valueSet == null ? new Base[0] : new Base[] {this.valueSet}; // CanonicalType
4797        case 1913078280: /*hierarchyMeaning*/ return this.hierarchyMeaning == null ? new Base[0] : new Base[] {this.hierarchyMeaning}; // Enumeration<CodeSystemHierarchyMeaning>
4798        case 1248023381: /*compositional*/ return this.compositional == null ? new Base[0] : new Base[] {this.compositional}; // BooleanType
4799        case 617270957: /*versionNeeded*/ return this.versionNeeded == null ? new Base[0] : new Base[] {this.versionNeeded}; // BooleanType
4800        case 951530617: /*content*/ return this.content == null ? new Base[0] : new Base[] {this.content}; // Enumeration<CodeSystemContentMode>
4801        case -596951334: /*supplements*/ return this.supplements == null ? new Base[0] : new Base[] {this.supplements}; // CanonicalType
4802        case 94851343: /*count*/ return this.count == null ? new Base[0] : new Base[] {this.count}; // UnsignedIntType
4803        case -1274492040: /*filter*/ return this.filter == null ? new Base[0] : this.filter.toArray(new Base[this.filter.size()]); // CodeSystemFilterComponent
4804        case -993141291: /*property*/ return this.property == null ? new Base[0] : this.property.toArray(new Base[this.property.size()]); // PropertyComponent
4805        case 951024232: /*concept*/ return this.concept == null ? new Base[0] : this.concept.toArray(new Base[this.concept.size()]); // ConceptDefinitionComponent
4806        default: return super.getProperty(hash, name, checkValid);
4807        }
4808
4809      }
4810
4811      @Override
4812      public Base setProperty(int hash, String name, Base value) throws FHIRException {
4813        switch (hash) {
4814        case 116079: // url
4815          this.url = TypeConvertor.castToUri(value); // UriType
4816          return value;
4817        case -1618432855: // identifier
4818          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
4819          return value;
4820        case 351608024: // version
4821          this.version = TypeConvertor.castToString(value); // StringType
4822          return value;
4823        case 3373707: // name
4824          this.name = TypeConvertor.castToString(value); // StringType
4825          return value;
4826        case 110371416: // title
4827          this.title = TypeConvertor.castToString(value); // StringType
4828          return value;
4829        case -892481550: // status
4830          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4831          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4832          return value;
4833        case -404562712: // experimental
4834          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4835          return value;
4836        case 3076014: // date
4837          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4838          return value;
4839        case 1447404028: // publisher
4840          this.publisher = TypeConvertor.castToString(value); // StringType
4841          return value;
4842        case 951526432: // contact
4843          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4844          return value;
4845        case -1724546052: // description
4846          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
4847          return value;
4848        case -669707736: // useContext
4849          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
4850          return value;
4851        case -507075711: // jurisdiction
4852          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4853          return value;
4854        case -220463842: // purpose
4855          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4856          return value;
4857        case 1522889671: // copyright
4858          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4859          return value;
4860        case 223539345: // approvalDate
4861          this.approvalDate = TypeConvertor.castToDate(value); // DateType
4862          return value;
4863        case -1687512484: // lastReviewDate
4864          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
4865          return value;
4866        case -403934648: // effectivePeriod
4867          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
4868          return value;
4869        case 110546223: // topic
4870          this.getTopic().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
4871          return value;
4872        case -1406328437: // author
4873          this.getAuthor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4874          return value;
4875        case -1307827859: // editor
4876          this.getEditor().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4877          return value;
4878        case -261190139: // reviewer
4879          this.getReviewer().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4880          return value;
4881        case 1740277666: // endorser
4882          this.getEndorser().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
4883          return value;
4884        case 666807069: // relatedArtifact
4885          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value)); // RelatedArtifact
4886          return value;
4887        case -35616442: // caseSensitive
4888          this.caseSensitive = TypeConvertor.castToBoolean(value); // BooleanType
4889          return value;
4890        case -1410174671: // valueSet
4891          this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType
4892          return value;
4893        case 1913078280: // hierarchyMeaning
4894          value = new CodeSystemHierarchyMeaningEnumFactory().fromType(TypeConvertor.castToCode(value));
4895          this.hierarchyMeaning = (Enumeration) value; // Enumeration<CodeSystemHierarchyMeaning>
4896          return value;
4897        case 1248023381: // compositional
4898          this.compositional = TypeConvertor.castToBoolean(value); // BooleanType
4899          return value;
4900        case 617270957: // versionNeeded
4901          this.versionNeeded = TypeConvertor.castToBoolean(value); // BooleanType
4902          return value;
4903        case 951530617: // content
4904          value = new CodeSystemContentModeEnumFactory().fromType(TypeConvertor.castToCode(value));
4905          this.content = (Enumeration) value; // Enumeration<CodeSystemContentMode>
4906          return value;
4907        case -596951334: // supplements
4908          this.supplements = TypeConvertor.castToCanonical(value); // CanonicalType
4909          return value;
4910        case 94851343: // count
4911          this.count = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
4912          return value;
4913        case -1274492040: // filter
4914          this.getFilter().add((CodeSystemFilterComponent) value); // CodeSystemFilterComponent
4915          return value;
4916        case -993141291: // property
4917          this.getProperty().add((PropertyComponent) value); // PropertyComponent
4918          return value;
4919        case 951024232: // concept
4920          this.getConcept().add((ConceptDefinitionComponent) value); // ConceptDefinitionComponent
4921          return value;
4922        default: return super.setProperty(hash, name, value);
4923        }
4924
4925      }
4926
4927      @Override
4928      public Base setProperty(String name, Base value) throws FHIRException {
4929        if (name.equals("url")) {
4930          this.url = TypeConvertor.castToUri(value); // UriType
4931        } else if (name.equals("identifier")) {
4932          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
4933        } else if (name.equals("version")) {
4934          this.version = TypeConvertor.castToString(value); // StringType
4935        } else if (name.equals("name")) {
4936          this.name = TypeConvertor.castToString(value); // StringType
4937        } else if (name.equals("title")) {
4938          this.title = TypeConvertor.castToString(value); // StringType
4939        } else if (name.equals("status")) {
4940          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
4941          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
4942        } else if (name.equals("experimental")) {
4943          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
4944        } else if (name.equals("date")) {
4945          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
4946        } else if (name.equals("publisher")) {
4947          this.publisher = TypeConvertor.castToString(value); // StringType
4948        } else if (name.equals("contact")) {
4949          this.getContact().add(TypeConvertor.castToContactDetail(value));
4950        } else if (name.equals("description")) {
4951          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
4952        } else if (name.equals("useContext")) {
4953          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
4954        } else if (name.equals("jurisdiction")) {
4955          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
4956        } else if (name.equals("purpose")) {
4957          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
4958        } else if (name.equals("copyright")) {
4959          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
4960        } else if (name.equals("approvalDate")) {
4961          this.approvalDate = TypeConvertor.castToDate(value); // DateType
4962        } else if (name.equals("lastReviewDate")) {
4963          this.lastReviewDate = TypeConvertor.castToDate(value); // DateType
4964        } else if (name.equals("effectivePeriod")) {
4965          this.effectivePeriod = TypeConvertor.castToPeriod(value); // Period
4966        } else if (name.equals("topic")) {
4967          this.getTopic().add(TypeConvertor.castToCodeableConcept(value));
4968        } else if (name.equals("author")) {
4969          this.getAuthor().add(TypeConvertor.castToContactDetail(value));
4970        } else if (name.equals("editor")) {
4971          this.getEditor().add(TypeConvertor.castToContactDetail(value));
4972        } else if (name.equals("reviewer")) {
4973          this.getReviewer().add(TypeConvertor.castToContactDetail(value));
4974        } else if (name.equals("endorser")) {
4975          this.getEndorser().add(TypeConvertor.castToContactDetail(value));
4976        } else if (name.equals("relatedArtifact")) {
4977          this.getRelatedArtifact().add(TypeConvertor.castToRelatedArtifact(value));
4978        } else if (name.equals("caseSensitive")) {
4979          this.caseSensitive = TypeConvertor.castToBoolean(value); // BooleanType
4980        } else if (name.equals("valueSet")) {
4981          this.valueSet = TypeConvertor.castToCanonical(value); // CanonicalType
4982        } else if (name.equals("hierarchyMeaning")) {
4983          value = new CodeSystemHierarchyMeaningEnumFactory().fromType(TypeConvertor.castToCode(value));
4984          this.hierarchyMeaning = (Enumeration) value; // Enumeration<CodeSystemHierarchyMeaning>
4985        } else if (name.equals("compositional")) {
4986          this.compositional = TypeConvertor.castToBoolean(value); // BooleanType
4987        } else if (name.equals("versionNeeded")) {
4988          this.versionNeeded = TypeConvertor.castToBoolean(value); // BooleanType
4989        } else if (name.equals("content")) {
4990          value = new CodeSystemContentModeEnumFactory().fromType(TypeConvertor.castToCode(value));
4991          this.content = (Enumeration) value; // Enumeration<CodeSystemContentMode>
4992        } else if (name.equals("supplements")) {
4993          this.supplements = TypeConvertor.castToCanonical(value); // CanonicalType
4994        } else if (name.equals("count")) {
4995          this.count = TypeConvertor.castToUnsignedInt(value); // UnsignedIntType
4996        } else if (name.equals("filter")) {
4997          this.getFilter().add((CodeSystemFilterComponent) value);
4998        } else if (name.equals("property")) {
4999          this.getProperty().add((PropertyComponent) value);
5000        } else if (name.equals("concept")) {
5001          this.getConcept().add((ConceptDefinitionComponent) value);
5002        } else
5003          return super.setProperty(name, value);
5004        return value;
5005      }
5006
5007      @Override
5008      public Base makeProperty(int hash, String name) throws FHIRException {
5009        switch (hash) {
5010        case 116079:  return getUrlElement();
5011        case -1618432855:  return addIdentifier(); 
5012        case 351608024:  return getVersionElement();
5013        case 3373707:  return getNameElement();
5014        case 110371416:  return getTitleElement();
5015        case -892481550:  return getStatusElement();
5016        case -404562712:  return getExperimentalElement();
5017        case 3076014:  return getDateElement();
5018        case 1447404028:  return getPublisherElement();
5019        case 951526432:  return addContact(); 
5020        case -1724546052:  return getDescriptionElement();
5021        case -669707736:  return addUseContext(); 
5022        case -507075711:  return addJurisdiction(); 
5023        case -220463842:  return getPurposeElement();
5024        case 1522889671:  return getCopyrightElement();
5025        case 223539345:  return getApprovalDateElement();
5026        case -1687512484:  return getLastReviewDateElement();
5027        case -403934648:  return getEffectivePeriod();
5028        case 110546223:  return addTopic(); 
5029        case -1406328437:  return addAuthor(); 
5030        case -1307827859:  return addEditor(); 
5031        case -261190139:  return addReviewer(); 
5032        case 1740277666:  return addEndorser(); 
5033        case 666807069:  return addRelatedArtifact(); 
5034        case -35616442:  return getCaseSensitiveElement();
5035        case -1410174671:  return getValueSetElement();
5036        case 1913078280:  return getHierarchyMeaningElement();
5037        case 1248023381:  return getCompositionalElement();
5038        case 617270957:  return getVersionNeededElement();
5039        case 951530617:  return getContentElement();
5040        case -596951334:  return getSupplementsElement();
5041        case 94851343:  return getCountElement();
5042        case -1274492040:  return addFilter(); 
5043        case -993141291:  return addProperty(); 
5044        case 951024232:  return addConcept(); 
5045        default: return super.makeProperty(hash, name);
5046        }
5047
5048      }
5049
5050      @Override
5051      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
5052        switch (hash) {
5053        case 116079: /*url*/ return new String[] {"uri"};
5054        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
5055        case 351608024: /*version*/ return new String[] {"string"};
5056        case 3373707: /*name*/ return new String[] {"string"};
5057        case 110371416: /*title*/ return new String[] {"string"};
5058        case -892481550: /*status*/ return new String[] {"code"};
5059        case -404562712: /*experimental*/ return new String[] {"boolean"};
5060        case 3076014: /*date*/ return new String[] {"dateTime"};
5061        case 1447404028: /*publisher*/ return new String[] {"string"};
5062        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
5063        case -1724546052: /*description*/ return new String[] {"markdown"};
5064        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
5065        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
5066        case -220463842: /*purpose*/ return new String[] {"markdown"};
5067        case 1522889671: /*copyright*/ return new String[] {"markdown"};
5068        case 223539345: /*approvalDate*/ return new String[] {"date"};
5069        case -1687512484: /*lastReviewDate*/ return new String[] {"date"};
5070        case -403934648: /*effectivePeriod*/ return new String[] {"Period"};
5071        case 110546223: /*topic*/ return new String[] {"CodeableConcept"};
5072        case -1406328437: /*author*/ return new String[] {"ContactDetail"};
5073        case -1307827859: /*editor*/ return new String[] {"ContactDetail"};
5074        case -261190139: /*reviewer*/ return new String[] {"ContactDetail"};
5075        case 1740277666: /*endorser*/ return new String[] {"ContactDetail"};
5076        case 666807069: /*relatedArtifact*/ return new String[] {"RelatedArtifact"};
5077        case -35616442: /*caseSensitive*/ return new String[] {"boolean"};
5078        case -1410174671: /*valueSet*/ return new String[] {"canonical"};
5079        case 1913078280: /*hierarchyMeaning*/ return new String[] {"code"};
5080        case 1248023381: /*compositional*/ return new String[] {"boolean"};
5081        case 617270957: /*versionNeeded*/ return new String[] {"boolean"};
5082        case 951530617: /*content*/ return new String[] {"code"};
5083        case -596951334: /*supplements*/ return new String[] {"canonical"};
5084        case 94851343: /*count*/ return new String[] {"unsignedInt"};
5085        case -1274492040: /*filter*/ return new String[] {};
5086        case -993141291: /*property*/ return new String[] {};
5087        case 951024232: /*concept*/ return new String[] {};
5088        default: return super.getTypesForProperty(hash, name);
5089        }
5090
5091      }
5092
5093      @Override
5094      public Base addChild(String name) throws FHIRException {
5095        if (name.equals("url")) {
5096          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.url");
5097        }
5098        else if (name.equals("identifier")) {
5099          return addIdentifier();
5100        }
5101        else if (name.equals("version")) {
5102          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.version");
5103        }
5104        else if (name.equals("name")) {
5105          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.name");
5106        }
5107        else if (name.equals("title")) {
5108          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.title");
5109        }
5110        else if (name.equals("status")) {
5111          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.status");
5112        }
5113        else if (name.equals("experimental")) {
5114          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.experimental");
5115        }
5116        else if (name.equals("date")) {
5117          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.date");
5118        }
5119        else if (name.equals("publisher")) {
5120          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.publisher");
5121        }
5122        else if (name.equals("contact")) {
5123          return addContact();
5124        }
5125        else if (name.equals("description")) {
5126          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.description");
5127        }
5128        else if (name.equals("useContext")) {
5129          return addUseContext();
5130        }
5131        else if (name.equals("jurisdiction")) {
5132          return addJurisdiction();
5133        }
5134        else if (name.equals("purpose")) {
5135          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.purpose");
5136        }
5137        else if (name.equals("copyright")) {
5138          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.copyright");
5139        }
5140        else if (name.equals("approvalDate")) {
5141          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.approvalDate");
5142        }
5143        else if (name.equals("lastReviewDate")) {
5144          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.lastReviewDate");
5145        }
5146        else if (name.equals("effectivePeriod")) {
5147          this.effectivePeriod = new Period();
5148          return this.effectivePeriod;
5149        }
5150        else if (name.equals("topic")) {
5151          return addTopic();
5152        }
5153        else if (name.equals("author")) {
5154          return addAuthor();
5155        }
5156        else if (name.equals("editor")) {
5157          return addEditor();
5158        }
5159        else if (name.equals("reviewer")) {
5160          return addReviewer();
5161        }
5162        else if (name.equals("endorser")) {
5163          return addEndorser();
5164        }
5165        else if (name.equals("relatedArtifact")) {
5166          return addRelatedArtifact();
5167        }
5168        else if (name.equals("caseSensitive")) {
5169          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.caseSensitive");
5170        }
5171        else if (name.equals("valueSet")) {
5172          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.valueSet");
5173        }
5174        else if (name.equals("hierarchyMeaning")) {
5175          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.hierarchyMeaning");
5176        }
5177        else if (name.equals("compositional")) {
5178          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.compositional");
5179        }
5180        else if (name.equals("versionNeeded")) {
5181          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.versionNeeded");
5182        }
5183        else if (name.equals("content")) {
5184          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.content");
5185        }
5186        else if (name.equals("supplements")) {
5187          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.supplements");
5188        }
5189        else if (name.equals("count")) {
5190          throw new FHIRException("Cannot call addChild on a primitive type CodeSystem.count");
5191        }
5192        else if (name.equals("filter")) {
5193          return addFilter();
5194        }
5195        else if (name.equals("property")) {
5196          return addProperty();
5197        }
5198        else if (name.equals("concept")) {
5199          return addConcept();
5200        }
5201        else
5202          return super.addChild(name);
5203      }
5204
5205  public String fhirType() {
5206    return "CodeSystem";
5207
5208  }
5209
5210      public CodeSystem copy() {
5211        CodeSystem dst = new CodeSystem();
5212        copyValues(dst);
5213        return dst;
5214      }
5215
5216      public void copyValues(CodeSystem dst) {
5217        super.copyValues(dst);
5218        dst.url = url == null ? null : url.copy();
5219        if (identifier != null) {
5220          dst.identifier = new ArrayList<Identifier>();
5221          for (Identifier i : identifier)
5222            dst.identifier.add(i.copy());
5223        };
5224        dst.version = version == null ? null : version.copy();
5225        dst.name = name == null ? null : name.copy();
5226        dst.title = title == null ? null : title.copy();
5227        dst.status = status == null ? null : status.copy();
5228        dst.experimental = experimental == null ? null : experimental.copy();
5229        dst.date = date == null ? null : date.copy();
5230        dst.publisher = publisher == null ? null : publisher.copy();
5231        if (contact != null) {
5232          dst.contact = new ArrayList<ContactDetail>();
5233          for (ContactDetail i : contact)
5234            dst.contact.add(i.copy());
5235        };
5236        dst.description = description == null ? null : description.copy();
5237        if (useContext != null) {
5238          dst.useContext = new ArrayList<UsageContext>();
5239          for (UsageContext i : useContext)
5240            dst.useContext.add(i.copy());
5241        };
5242        if (jurisdiction != null) {
5243          dst.jurisdiction = new ArrayList<CodeableConcept>();
5244          for (CodeableConcept i : jurisdiction)
5245            dst.jurisdiction.add(i.copy());
5246        };
5247        dst.purpose = purpose == null ? null : purpose.copy();
5248        dst.copyright = copyright == null ? null : copyright.copy();
5249        dst.approvalDate = approvalDate == null ? null : approvalDate.copy();
5250        dst.lastReviewDate = lastReviewDate == null ? null : lastReviewDate.copy();
5251        dst.effectivePeriod = effectivePeriod == null ? null : effectivePeriod.copy();
5252        if (topic != null) {
5253          dst.topic = new ArrayList<CodeableConcept>();
5254          for (CodeableConcept i : topic)
5255            dst.topic.add(i.copy());
5256        };
5257        if (author != null) {
5258          dst.author = new ArrayList<ContactDetail>();
5259          for (ContactDetail i : author)
5260            dst.author.add(i.copy());
5261        };
5262        if (editor != null) {
5263          dst.editor = new ArrayList<ContactDetail>();
5264          for (ContactDetail i : editor)
5265            dst.editor.add(i.copy());
5266        };
5267        if (reviewer != null) {
5268          dst.reviewer = new ArrayList<ContactDetail>();
5269          for (ContactDetail i : reviewer)
5270            dst.reviewer.add(i.copy());
5271        };
5272        if (endorser != null) {
5273          dst.endorser = new ArrayList<ContactDetail>();
5274          for (ContactDetail i : endorser)
5275            dst.endorser.add(i.copy());
5276        };
5277        if (relatedArtifact != null) {
5278          dst.relatedArtifact = new ArrayList<RelatedArtifact>();
5279          for (RelatedArtifact i : relatedArtifact)
5280            dst.relatedArtifact.add(i.copy());
5281        };
5282        dst.caseSensitive = caseSensitive == null ? null : caseSensitive.copy();
5283        dst.valueSet = valueSet == null ? null : valueSet.copy();
5284        dst.hierarchyMeaning = hierarchyMeaning == null ? null : hierarchyMeaning.copy();
5285        dst.compositional = compositional == null ? null : compositional.copy();
5286        dst.versionNeeded = versionNeeded == null ? null : versionNeeded.copy();
5287        dst.content = content == null ? null : content.copy();
5288        dst.supplements = supplements == null ? null : supplements.copy();
5289        dst.count = count == null ? null : count.copy();
5290        if (filter != null) {
5291          dst.filter = new ArrayList<CodeSystemFilterComponent>();
5292          for (CodeSystemFilterComponent i : filter)
5293            dst.filter.add(i.copy());
5294        };
5295        if (property != null) {
5296          dst.property = new ArrayList<PropertyComponent>();
5297          for (PropertyComponent i : property)
5298            dst.property.add(i.copy());
5299        };
5300        if (concept != null) {
5301          dst.concept = new ArrayList<ConceptDefinitionComponent>();
5302          for (ConceptDefinitionComponent i : concept)
5303            dst.concept.add(i.copy());
5304        };
5305      }
5306
5307      protected CodeSystem typedCopy() {
5308        return copy();
5309      }
5310
5311      @Override
5312      public boolean equalsDeep(Base other_) {
5313        if (!super.equalsDeep(other_))
5314          return false;
5315        if (!(other_ instanceof CodeSystem))
5316          return false;
5317        CodeSystem o = (CodeSystem) other_;
5318        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
5319           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(status, o.status, true)
5320           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
5321           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
5322           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true)
5323           && compareDeep(approvalDate, o.approvalDate, true) && compareDeep(lastReviewDate, o.lastReviewDate, true)
5324           && compareDeep(effectivePeriod, o.effectivePeriod, true) && compareDeep(topic, o.topic, true) && compareDeep(author, o.author, true)
5325           && compareDeep(editor, o.editor, true) && compareDeep(reviewer, o.reviewer, true) && compareDeep(endorser, o.endorser, true)
5326           && compareDeep(relatedArtifact, o.relatedArtifact, true) && compareDeep(caseSensitive, o.caseSensitive, true)
5327           && compareDeep(valueSet, o.valueSet, true) && compareDeep(hierarchyMeaning, o.hierarchyMeaning, true)
5328           && compareDeep(compositional, o.compositional, true) && compareDeep(versionNeeded, o.versionNeeded, true)
5329           && compareDeep(content, o.content, true) && compareDeep(supplements, o.supplements, true) && compareDeep(count, o.count, true)
5330           && compareDeep(filter, o.filter, true) && compareDeep(property, o.property, true) && compareDeep(concept, o.concept, true)
5331          ;
5332      }
5333
5334      @Override
5335      public boolean equalsShallow(Base other_) {
5336        if (!super.equalsShallow(other_))
5337          return false;
5338        if (!(other_ instanceof CodeSystem))
5339          return false;
5340        CodeSystem o = (CodeSystem) other_;
5341        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
5342           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
5343           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
5344           && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true) && compareValues(approvalDate, o.approvalDate, true)
5345           && compareValues(lastReviewDate, o.lastReviewDate, true) && compareValues(caseSensitive, o.caseSensitive, true)
5346           && compareValues(valueSet, o.valueSet, true) && compareValues(hierarchyMeaning, o.hierarchyMeaning, true)
5347           && compareValues(compositional, o.compositional, true) && compareValues(versionNeeded, o.versionNeeded, true)
5348           && compareValues(content, o.content, true) && compareValues(supplements, o.supplements, true) && compareValues(count, o.count, true)
5349          ;
5350      }
5351
5352      public boolean isEmpty() {
5353        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
5354          , name, title, status, experimental, date, publisher, contact, description, useContext
5355          , jurisdiction, purpose, copyright, approvalDate, lastReviewDate, effectivePeriod
5356          , topic, author, editor, reviewer, endorser, relatedArtifact, caseSensitive, valueSet
5357          , hierarchyMeaning, compositional, versionNeeded, content, supplements, count, filter
5358          , property, concept);
5359      }
5360
5361  @Override
5362  public ResourceType getResourceType() {
5363    return ResourceType.CodeSystem;
5364   }
5365
5366 /**
5367   * Search parameter: <b>code</b>
5368   * <p>
5369   * Description: <b>A code defined in the code system</b><br>
5370   * Type: <b>token</b><br>
5371   * Path: <b>CodeSystem.concept.code</b><br>
5372   * </p>
5373   */
5374  @SearchParamDefinition(name="code", path="CodeSystem.concept.code", description="A code defined in the code system", type="token" )
5375  public static final String SP_CODE = "code";
5376 /**
5377   * <b>Fluent Client</b> search parameter constant for <b>code</b>
5378   * <p>
5379   * Description: <b>A code defined in the code system</b><br>
5380   * Type: <b>token</b><br>
5381   * Path: <b>CodeSystem.concept.code</b><br>
5382   * </p>
5383   */
5384  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
5385
5386 /**
5387   * Search parameter: <b>content-mode</b>
5388   * <p>
5389   * Description: <b>not-present | example | fragment | complete | supplement</b><br>
5390   * Type: <b>token</b><br>
5391   * Path: <b>CodeSystem.content</b><br>
5392   * </p>
5393   */
5394  @SearchParamDefinition(name="content-mode", path="CodeSystem.content", description="not-present | example | fragment | complete | supplement", type="token" )
5395  public static final String SP_CONTENT_MODE = "content-mode";
5396 /**
5397   * <b>Fluent Client</b> search parameter constant for <b>content-mode</b>
5398   * <p>
5399   * Description: <b>not-present | example | fragment | complete | supplement</b><br>
5400   * Type: <b>token</b><br>
5401   * Path: <b>CodeSystem.content</b><br>
5402   * </p>
5403   */
5404  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTENT_MODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTENT_MODE);
5405
5406 /**
5407   * Search parameter: <b>derived-from</b>
5408   * <p>
5409   * Description: <b>A resource that the CodeSystem is derived from</b><br>
5410   * Type: <b>reference</b><br>
5411   * Path: <b>CodeSystem.relatedArtifact.where(type='derived-from').resource</b><br>
5412   * </p>
5413   */
5414  @SearchParamDefinition(name="derived-from", path="CodeSystem.relatedArtifact.where(type='derived-from').resource", description="A resource that the CodeSystem is derived from", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
5415  public static final String SP_DERIVED_FROM = "derived-from";
5416 /**
5417   * <b>Fluent Client</b> search parameter constant for <b>derived-from</b>
5418   * <p>
5419   * Description: <b>A resource that the CodeSystem is derived from</b><br>
5420   * Type: <b>reference</b><br>
5421   * Path: <b>CodeSystem.relatedArtifact.where(type='derived-from').resource</b><br>
5422   * </p>
5423   */
5424  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DERIVED_FROM = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DERIVED_FROM);
5425
5426/**
5427   * Constant for fluent queries to be used to add include statements. Specifies
5428   * the path value of "<b>CodeSystem:derived-from</b>".
5429   */
5430  public static final ca.uhn.fhir.model.api.Include INCLUDE_DERIVED_FROM = new ca.uhn.fhir.model.api.Include("CodeSystem:derived-from").toLocked();
5431
5432 /**
5433   * Search parameter: <b>language</b>
5434   * <p>
5435   * Description: <b>A language in which a designation is provided</b><br>
5436   * Type: <b>token</b><br>
5437   * Path: <b>CodeSystem.concept.designation.language</b><br>
5438   * </p>
5439   */
5440  @SearchParamDefinition(name="language", path="CodeSystem.concept.designation.language", description="A language in which a designation is provided", type="token" )
5441  public static final String SP_LANGUAGE = "language";
5442 /**
5443   * <b>Fluent Client</b> search parameter constant for <b>language</b>
5444   * <p>
5445   * Description: <b>A language in which a designation is provided</b><br>
5446   * Type: <b>token</b><br>
5447   * Path: <b>CodeSystem.concept.designation.language</b><br>
5448   * </p>
5449   */
5450  public static final ca.uhn.fhir.rest.gclient.TokenClientParam LANGUAGE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_LANGUAGE);
5451
5452 /**
5453   * Search parameter: <b>predecessor</b>
5454   * <p>
5455   * Description: <b>The predecessor of the CodeSystem</b><br>
5456   * Type: <b>reference</b><br>
5457   * Path: <b>CodeSystem.relatedArtifact.where(type='predecessor').resource</b><br>
5458   * </p>
5459   */
5460  @SearchParamDefinition(name="predecessor", path="CodeSystem.relatedArtifact.where(type='predecessor').resource", description="The predecessor of the CodeSystem", type="reference", target={Account.class, ActivityDefinition.class, ActorDefinition.class, AdministrableProductDefinition.class, AdverseEvent.class, AllergyIntolerance.class, Appointment.class, AppointmentResponse.class, ArtifactAssessment.class, AuditEvent.class, Basic.class, Binary.class, BiologicallyDerivedProduct.class, BodyStructure.class, Bundle.class, CapabilityStatement.class, CarePlan.class, CareTeam.class, ChargeItem.class, ChargeItemDefinition.class, Citation.class, Claim.class, ClaimResponse.class, ClinicalImpression.class, ClinicalUseDefinition.class, CodeSystem.class, Communication.class, CommunicationRequest.class, CompartmentDefinition.class, Composition.class, ConceptMap.class, Condition.class, ConditionDefinition.class, Consent.class, Contract.class, Coverage.class, CoverageEligibilityRequest.class, CoverageEligibilityResponse.class, DetectedIssue.class, Device.class, DeviceDefinition.class, DeviceDispense.class, DeviceMetric.class, DeviceRequest.class, DeviceUsage.class, DiagnosticReport.class, DocumentManifest.class, DocumentReference.class, Encounter.class, Endpoint.class, EnrollmentRequest.class, EnrollmentResponse.class, EpisodeOfCare.class, EventDefinition.class, Evidence.class, EvidenceReport.class, EvidenceVariable.class, ExampleScenario.class, ExplanationOfBenefit.class, FamilyMemberHistory.class, Flag.class, FormularyItem.class, GenomicStudy.class, Goal.class, GraphDefinition.class, Group.class, GuidanceResponse.class, HealthcareService.class, ImagingSelection.class, ImagingStudy.class, Immunization.class, ImmunizationEvaluation.class, ImmunizationRecommendation.class, ImplementationGuide.class, Ingredient.class, InsurancePlan.class, InventoryReport.class, Invoice.class, Library.class, Linkage.class, ListResource.class, Location.class, ManufacturedItemDefinition.class, Measure.class, MeasureReport.class, Medication.class, MedicationAdministration.class, MedicationDispense.class, MedicationKnowledge.class, MedicationRequest.class, MedicationUsage.class, MedicinalProductDefinition.class, MessageDefinition.class, MessageHeader.class, MolecularSequence.class, NamingSystem.class, NutritionIntake.class, NutritionOrder.class, NutritionProduct.class, Observation.class, ObservationDefinition.class, OperationDefinition.class, OperationOutcome.class, Organization.class, OrganizationAffiliation.class, PackagedProductDefinition.class, Patient.class, PaymentNotice.class, PaymentReconciliation.class, Permission.class, Person.class, PlanDefinition.class, Practitioner.class, PractitionerRole.class, Procedure.class, Provenance.class, Questionnaire.class, QuestionnaireResponse.class, RegulatedAuthorization.class, RelatedPerson.class, RequestOrchestration.class, Requirements.class, ResearchStudy.class, ResearchSubject.class, RiskAssessment.class, Schedule.class, SearchParameter.class, ServiceRequest.class, Slot.class, Specimen.class, SpecimenDefinition.class, StructureDefinition.class, StructureMap.class, Subscription.class, SubscriptionStatus.class, SubscriptionTopic.class, Substance.class, SubstanceDefinition.class, SubstanceNucleicAcid.class, SubstancePolymer.class, SubstanceProtein.class, SubstanceReferenceInformation.class, SubstanceSourceMaterial.class, SupplyDelivery.class, SupplyRequest.class, Task.class, TerminologyCapabilities.class, TestReport.class, TestScript.class, Transport.class, ValueSet.class, VerificationResult.class, VisionPrescription.class } )
5461  public static final String SP_PREDECESSOR = "predecessor";
5462 /**
5463   * <b>Fluent Client</b> search parameter constant for <b>predecessor</b>
5464   * <p>
5465   * Description: <b>The predecessor of the CodeSystem</b><br>
5466   * Type: <b>reference</b><br>
5467   * Path: <b>CodeSystem.relatedArtifact.where(type='predecessor').resource</b><br>
5468   * </p>
5469   */
5470  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PREDECESSOR = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PREDECESSOR);
5471
5472/**
5473   * Constant for fluent queries to be used to add include statements. Specifies
5474   * the path value of "<b>CodeSystem:predecessor</b>".
5475   */
5476  public static final ca.uhn.fhir.model.api.Include INCLUDE_PREDECESSOR = new ca.uhn.fhir.model.api.Include("CodeSystem:predecessor").toLocked();
5477
5478 /**
5479   * Search parameter: <b>supplements</b>
5480   * <p>
5481   * Description: <b>Find code system supplements for the referenced code system</b><br>
5482   * Type: <b>reference</b><br>
5483   * Path: <b>CodeSystem.supplements</b><br>
5484   * </p>
5485   */
5486  @SearchParamDefinition(name="supplements", path="CodeSystem.supplements", description="Find code system supplements for the referenced code system", type="reference", target={CodeSystem.class } )
5487  public static final String SP_SUPPLEMENTS = "supplements";
5488 /**
5489   * <b>Fluent Client</b> search parameter constant for <b>supplements</b>
5490   * <p>
5491   * Description: <b>Find code system supplements for the referenced code system</b><br>
5492   * Type: <b>reference</b><br>
5493   * Path: <b>CodeSystem.supplements</b><br>
5494   * </p>
5495   */
5496  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUPPLEMENTS = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUPPLEMENTS);
5497
5498/**
5499   * Constant for fluent queries to be used to add include statements. Specifies
5500   * the path value of "<b>CodeSystem:supplements</b>".
5501   */
5502  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUPPLEMENTS = new ca.uhn.fhir.model.api.Include("CodeSystem:supplements").toLocked();
5503
5504 /**
5505   * Search parameter: <b>system</b>
5506   * <p>
5507   * Description: <b>The system for any codes defined by this code system (same as 'url')</b><br>
5508   * Type: <b>uri</b><br>
5509   * Path: <b>CodeSystem.url</b><br>
5510   * </p>
5511   */
5512  @SearchParamDefinition(name="system", path="CodeSystem.url", description="The system for any codes defined by this code system (same as 'url')", type="uri" )
5513  public static final String SP_SYSTEM = "system";
5514 /**
5515   * <b>Fluent Client</b> search parameter constant for <b>system</b>
5516   * <p>
5517   * Description: <b>The system for any codes defined by this code system (same as 'url')</b><br>
5518   * Type: <b>uri</b><br>
5519   * Path: <b>CodeSystem.url</b><br>
5520   * </p>
5521   */
5522  public static final ca.uhn.fhir.rest.gclient.UriClientParam SYSTEM = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_SYSTEM);
5523
5524 /**
5525   * Search parameter: <b>topic</b>
5526   * <p>
5527   * Description: <b>Topics associated with the CodeSystem</b><br>
5528   * Type: <b>token</b><br>
5529   * Path: <b>CodeSystem.topic</b><br>
5530   * </p>
5531   */
5532  @SearchParamDefinition(name="topic", path="CodeSystem.topic", description="Topics associated with the CodeSystem", type="token" )
5533  public static final String SP_TOPIC = "topic";
5534 /**
5535   * <b>Fluent Client</b> search parameter constant for <b>topic</b>
5536   * <p>
5537   * Description: <b>Topics associated with the CodeSystem</b><br>
5538   * Type: <b>token</b><br>
5539   * Path: <b>CodeSystem.topic</b><br>
5540   * </p>
5541   */
5542  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TOPIC = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TOPIC);
5543
5544 /**
5545   * Search parameter: <b>author</b>
5546   * <p>
5547   * Description: <b>Optional Extensions Element</b><br>
5548   * Type: <b>string</b><br>
5549   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-author').value</b><br>
5550   * </p>
5551   */
5552  @SearchParamDefinition(name="author", path="CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-author').value", description="Optional Extensions Element", type="string" )
5553  public static final String SP_AUTHOR = "author";
5554 /**
5555   * <b>Fluent Client</b> search parameter constant for <b>author</b>
5556   * <p>
5557   * Description: <b>Optional Extensions Element</b><br>
5558   * Type: <b>string</b><br>
5559   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-author').value</b><br>
5560   * </p>
5561   */
5562  public static final ca.uhn.fhir.rest.gclient.StringClientParam AUTHOR = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_AUTHOR);
5563
5564 /**
5565   * Search parameter: <b>effective</b>
5566   * <p>
5567   * Description: <b>Optional Extensions Element</b><br>
5568   * Type: <b>date</b><br>
5569   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-effectiveDate'.value)</b><br>
5570   * </p>
5571   */
5572  @SearchParamDefinition(name="effective", path="CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-effectiveDate'.value)", description="Optional Extensions Element", type="date" )
5573  public static final String SP_EFFECTIVE = "effective";
5574 /**
5575   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
5576   * <p>
5577   * Description: <b>Optional Extensions Element</b><br>
5578   * Type: <b>date</b><br>
5579   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-effectiveDate'.value)</b><br>
5580   * </p>
5581   */
5582  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
5583
5584 /**
5585   * Search parameter: <b>end</b>
5586   * <p>
5587   * Description: <b>Optional Extensions Element</b><br>
5588   * Type: <b>date</b><br>
5589   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-expirationDate').value</b><br>
5590   * </p>
5591   */
5592  @SearchParamDefinition(name="end", path="CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-expirationDate').value", description="Optional Extensions Element", type="date" )
5593  public static final String SP_END = "end";
5594 /**
5595   * <b>Fluent Client</b> search parameter constant for <b>end</b>
5596   * <p>
5597   * Description: <b>Optional Extensions Element</b><br>
5598   * Type: <b>date</b><br>
5599   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-expirationDate').value</b><br>
5600   * </p>
5601   */
5602  public static final ca.uhn.fhir.rest.gclient.DateClientParam END = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_END);
5603
5604 /**
5605   * Search parameter: <b>keyword</b>
5606   * <p>
5607   * Description: <b>Optional Extensions Element</b><br>
5608   * Type: <b>string</b><br>
5609   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-keyWord').value</b><br>
5610   * </p>
5611   */
5612  @SearchParamDefinition(name="keyword", path="CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-keyWord').value", description="Optional Extensions Element", type="string" )
5613  public static final String SP_KEYWORD = "keyword";
5614 /**
5615   * <b>Fluent Client</b> search parameter constant for <b>keyword</b>
5616   * <p>
5617   * Description: <b>Optional Extensions Element</b><br>
5618   * Type: <b>string</b><br>
5619   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-keyWord').value</b><br>
5620   * </p>
5621   */
5622  public static final ca.uhn.fhir.rest.gclient.StringClientParam KEYWORD = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_KEYWORD);
5623
5624 /**
5625   * Search parameter: <b>workflow</b>
5626   * <p>
5627   * Description: <b>Optional Extensions Element</b><br>
5628   * Type: <b>token</b><br>
5629   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-workflowStatus').value</b><br>
5630   * </p>
5631   */
5632  @SearchParamDefinition(name="workflow", path="CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-workflowStatus').value", description="Optional Extensions Element", type="token" )
5633  public static final String SP_WORKFLOW = "workflow";
5634 /**
5635   * <b>Fluent Client</b> search parameter constant for <b>workflow</b>
5636   * <p>
5637   * Description: <b>Optional Extensions Element</b><br>
5638   * Type: <b>token</b><br>
5639   * Path: <b>CodeSystem.extension('http://hl7.org/fhir/StructureDefinition/codesystem-workflowStatus').value</b><br>
5640   * </p>
5641   */
5642  public static final ca.uhn.fhir.rest.gclient.TokenClientParam WORKFLOW = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_WORKFLOW);
5643
5644 /**
5645   * Search parameter: <b>context-quantity</b>
5646   * <p>
5647   * Description: <b>Multiple Resources: 
5648
5649* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
5650* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
5651* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
5652* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
5653* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
5654* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
5655* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
5656* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
5657* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
5658* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
5659* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
5660* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
5661* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
5662* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
5663</b><br>
5664   * Type: <b>quantity</b><br>
5665   * 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>
5666   * </p>
5667   */
5668  @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" )
5669  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
5670 /**
5671   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
5672   * <p>
5673   * Description: <b>Multiple Resources: 
5674
5675* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
5676* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
5677* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
5678* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
5679* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
5680* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
5681* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
5682* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
5683* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
5684* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
5685* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
5686* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
5687* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
5688* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
5689</b><br>
5690   * Type: <b>quantity</b><br>
5691   * 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>
5692   * </p>
5693   */
5694  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
5695
5696 /**
5697   * Search parameter: <b>context-type-quantity</b>
5698   * <p>
5699   * Description: <b>Multiple Resources: 
5700
5701* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
5702* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
5703* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
5704* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
5705* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
5706* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
5707* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
5708* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
5709* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
5710* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
5711* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
5712* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
5713* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
5714* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
5715</b><br>
5716   * Type: <b>composite</b><br>
5717   * 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>
5718   * </p>
5719   */
5720  @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"} )
5721  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
5722 /**
5723   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
5724   * <p>
5725   * Description: <b>Multiple Resources: 
5726
5727* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
5728* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
5729* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
5730* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
5731* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
5732* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
5733* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
5734* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
5735* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
5736* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
5737* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
5738* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
5739* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
5740* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
5741</b><br>
5742   * Type: <b>composite</b><br>
5743   * 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>
5744   * </p>
5745   */
5746  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);
5747
5748 /**
5749   * Search parameter: <b>context-type-value</b>
5750   * <p>
5751   * Description: <b>Multiple Resources: 
5752
5753* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
5754* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
5755* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
5756* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
5757* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
5758* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
5759* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
5760* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
5761* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
5762* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
5763* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
5764* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
5765* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
5766* [ValueSet](valueset.html): A use context type and value assigned to the value set
5767</b><br>
5768   * Type: <b>composite</b><br>
5769   * 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>
5770   * </p>
5771   */
5772  @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"} )
5773  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
5774 /**
5775   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
5776   * <p>
5777   * Description: <b>Multiple Resources: 
5778
5779* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
5780* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
5781* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
5782* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
5783* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
5784* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
5785* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
5786* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
5787* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
5788* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
5789* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
5790* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
5791* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
5792* [ValueSet](valueset.html): A use context type and value assigned to the value set
5793</b><br>
5794   * Type: <b>composite</b><br>
5795   * 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>
5796   * </p>
5797   */
5798  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);
5799
5800 /**
5801   * Search parameter: <b>context-type</b>
5802   * <p>
5803   * Description: <b>Multiple Resources: 
5804
5805* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
5806* [CodeSystem](codesystem.html): A type of use context assigned to the code system
5807* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
5808* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
5809* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
5810* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
5811* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
5812* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
5813* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
5814* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
5815* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
5816* [StructureMap](structuremap.html): A type of use context assigned to the structure map
5817* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
5818* [ValueSet](valueset.html): A type of use context assigned to the value set
5819</b><br>
5820   * Type: <b>token</b><br>
5821   * 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>
5822   * </p>
5823   */
5824  @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" )
5825  public static final String SP_CONTEXT_TYPE = "context-type";
5826 /**
5827   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
5828   * <p>
5829   * Description: <b>Multiple Resources: 
5830
5831* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
5832* [CodeSystem](codesystem.html): A type of use context assigned to the code system
5833* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
5834* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
5835* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
5836* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
5837* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
5838* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
5839* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
5840* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
5841* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
5842* [StructureMap](structuremap.html): A type of use context assigned to the structure map
5843* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
5844* [ValueSet](valueset.html): A type of use context assigned to the value set
5845</b><br>
5846   * Type: <b>token</b><br>
5847   * 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>
5848   * </p>
5849   */
5850  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
5851
5852 /**
5853   * Search parameter: <b>context</b>
5854   * <p>
5855   * Description: <b>Multiple Resources: 
5856
5857* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
5858* [CodeSystem](codesystem.html): A use context assigned to the code system
5859* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
5860* [ConceptMap](conceptmap.html): A use context assigned to the concept map
5861* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
5862* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
5863* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
5864* [NamingSystem](namingsystem.html): A use context assigned to the naming system
5865* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
5866* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
5867* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
5868* [StructureMap](structuremap.html): A use context assigned to the structure map
5869* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
5870* [ValueSet](valueset.html): A use context assigned to the value set
5871</b><br>
5872   * Type: <b>token</b><br>
5873   * 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>
5874   * </p>
5875   */
5876  @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" )
5877  public static final String SP_CONTEXT = "context";
5878 /**
5879   * <b>Fluent Client</b> search parameter constant for <b>context</b>
5880   * <p>
5881   * Description: <b>Multiple Resources: 
5882
5883* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
5884* [CodeSystem](codesystem.html): A use context assigned to the code system
5885* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
5886* [ConceptMap](conceptmap.html): A use context assigned to the concept map
5887* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
5888* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
5889* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
5890* [NamingSystem](namingsystem.html): A use context assigned to the naming system
5891* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
5892* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
5893* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
5894* [StructureMap](structuremap.html): A use context assigned to the structure map
5895* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
5896* [ValueSet](valueset.html): A use context assigned to the value set
5897</b><br>
5898   * Type: <b>token</b><br>
5899   * 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>
5900   * </p>
5901   */
5902  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
5903
5904 /**
5905   * Search parameter: <b>date</b>
5906   * <p>
5907   * Description: <b>Multiple Resources: 
5908
5909* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
5910* [CodeSystem](codesystem.html): The code system publication date
5911* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
5912* [ConceptMap](conceptmap.html): The concept map publication date
5913* [GraphDefinition](graphdefinition.html): The graph definition publication date
5914* [ImplementationGuide](implementationguide.html): The implementation guide publication date
5915* [MessageDefinition](messagedefinition.html): The message definition publication date
5916* [NamingSystem](namingsystem.html): The naming system publication date
5917* [OperationDefinition](operationdefinition.html): The operation definition publication date
5918* [SearchParameter](searchparameter.html): The search parameter publication date
5919* [StructureDefinition](structuredefinition.html): The structure definition publication date
5920* [StructureMap](structuremap.html): The structure map publication date
5921* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
5922* [ValueSet](valueset.html): The value set publication date
5923</b><br>
5924   * Type: <b>date</b><br>
5925   * 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>
5926   * </p>
5927   */
5928  @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" )
5929  public static final String SP_DATE = "date";
5930 /**
5931   * <b>Fluent Client</b> search parameter constant for <b>date</b>
5932   * <p>
5933   * Description: <b>Multiple Resources: 
5934
5935* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
5936* [CodeSystem](codesystem.html): The code system publication date
5937* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
5938* [ConceptMap](conceptmap.html): The concept map publication date
5939* [GraphDefinition](graphdefinition.html): The graph definition publication date
5940* [ImplementationGuide](implementationguide.html): The implementation guide publication date
5941* [MessageDefinition](messagedefinition.html): The message definition publication date
5942* [NamingSystem](namingsystem.html): The naming system publication date
5943* [OperationDefinition](operationdefinition.html): The operation definition publication date
5944* [SearchParameter](searchparameter.html): The search parameter publication date
5945* [StructureDefinition](structuredefinition.html): The structure definition publication date
5946* [StructureMap](structuremap.html): The structure map publication date
5947* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
5948* [ValueSet](valueset.html): The value set publication date
5949</b><br>
5950   * Type: <b>date</b><br>
5951   * 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>
5952   * </p>
5953   */
5954  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
5955
5956 /**
5957   * Search parameter: <b>description</b>
5958   * <p>
5959   * Description: <b>Multiple Resources: 
5960
5961* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
5962* [CodeSystem](codesystem.html): The description of the code system
5963* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
5964* [ConceptMap](conceptmap.html): The description of the concept map
5965* [GraphDefinition](graphdefinition.html): The description of the graph definition
5966* [ImplementationGuide](implementationguide.html): The description of the implementation guide
5967* [MessageDefinition](messagedefinition.html): The description of the message definition
5968* [NamingSystem](namingsystem.html): The description of the naming system
5969* [OperationDefinition](operationdefinition.html): The description of the operation definition
5970* [SearchParameter](searchparameter.html): The description of the search parameter
5971* [StructureDefinition](structuredefinition.html): The description of the structure definition
5972* [StructureMap](structuremap.html): The description of the structure map
5973* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
5974* [ValueSet](valueset.html): The description of the value set
5975</b><br>
5976   * Type: <b>string</b><br>
5977   * 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>
5978   * </p>
5979   */
5980  @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" )
5981  public static final String SP_DESCRIPTION = "description";
5982 /**
5983   * <b>Fluent Client</b> search parameter constant for <b>description</b>
5984   * <p>
5985   * Description: <b>Multiple Resources: 
5986
5987* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
5988* [CodeSystem](codesystem.html): The description of the code system
5989* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
5990* [ConceptMap](conceptmap.html): The description of the concept map
5991* [GraphDefinition](graphdefinition.html): The description of the graph definition
5992* [ImplementationGuide](implementationguide.html): The description of the implementation guide
5993* [MessageDefinition](messagedefinition.html): The description of the message definition
5994* [NamingSystem](namingsystem.html): The description of the naming system
5995* [OperationDefinition](operationdefinition.html): The description of the operation definition
5996* [SearchParameter](searchparameter.html): The description of the search parameter
5997* [StructureDefinition](structuredefinition.html): The description of the structure definition
5998* [StructureMap](structuremap.html): The description of the structure map
5999* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
6000* [ValueSet](valueset.html): The description of the value set
6001</b><br>
6002   * Type: <b>string</b><br>
6003   * 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>
6004   * </p>
6005   */
6006  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
6007
6008 /**
6009   * Search parameter: <b>identifier</b>
6010   * <p>
6011   * Description: <b>Multiple Resources: 
6012
6013* [CodeSystem](codesystem.html): External identifier for the code system
6014* [ConceptMap](conceptmap.html): External identifier for the concept map
6015* [MessageDefinition](messagedefinition.html): External identifier for the message definition
6016* [NamingSystem](namingsystem.html): External identifier for the naming system
6017* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
6018* [StructureMap](structuremap.html): External identifier for the structure map
6019* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
6020* [ValueSet](valueset.html): External identifier for the value set
6021</b><br>
6022   * Type: <b>token</b><br>
6023   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | NamingSystem.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
6024   * </p>
6025   */
6026  @SearchParamDefinition(name="identifier", path="CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | NamingSystem.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* [NamingSystem](namingsystem.html): External identifier for the naming system\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" )
6027  public static final String SP_IDENTIFIER = "identifier";
6028 /**
6029   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
6030   * <p>
6031   * Description: <b>Multiple Resources: 
6032
6033* [CodeSystem](codesystem.html): External identifier for the code system
6034* [ConceptMap](conceptmap.html): External identifier for the concept map
6035* [MessageDefinition](messagedefinition.html): External identifier for the message definition
6036* [NamingSystem](namingsystem.html): External identifier for the naming system
6037* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
6038* [StructureMap](structuremap.html): External identifier for the structure map
6039* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
6040* [ValueSet](valueset.html): External identifier for the value set
6041</b><br>
6042   * Type: <b>token</b><br>
6043   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | NamingSystem.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
6044   * </p>
6045   */
6046  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
6047
6048 /**
6049   * Search parameter: <b>jurisdiction</b>
6050   * <p>
6051   * Description: <b>Multiple Resources: 
6052
6053* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
6054* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
6055* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
6056* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
6057* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
6058* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
6059* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
6060* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
6061* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
6062* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
6063* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
6064* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
6065* [ValueSet](valueset.html): Intended jurisdiction for the value set
6066</b><br>
6067   * Type: <b>token</b><br>
6068   * 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>
6069   * </p>
6070   */
6071  @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" )
6072  public static final String SP_JURISDICTION = "jurisdiction";
6073 /**
6074   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
6075   * <p>
6076   * Description: <b>Multiple Resources: 
6077
6078* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
6079* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
6080* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
6081* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
6082* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
6083* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
6084* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
6085* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
6086* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
6087* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
6088* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
6089* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
6090* [ValueSet](valueset.html): Intended jurisdiction for the value set
6091</b><br>
6092   * Type: <b>token</b><br>
6093   * 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>
6094   * </p>
6095   */
6096  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
6097
6098 /**
6099   * Search parameter: <b>name</b>
6100   * <p>
6101   * Description: <b>Multiple Resources: 
6102
6103* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
6104* [CodeSystem](codesystem.html): Computationally friendly name of the code system
6105* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
6106* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
6107* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
6108* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
6109* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
6110* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
6111* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
6112* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
6113* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
6114* [StructureMap](structuremap.html): Computationally friendly name of the structure map
6115* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
6116* [ValueSet](valueset.html): Computationally friendly name of the value set
6117</b><br>
6118   * Type: <b>string</b><br>
6119   * 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>
6120   * </p>
6121   */
6122  @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" )
6123  public static final String SP_NAME = "name";
6124 /**
6125   * <b>Fluent Client</b> search parameter constant for <b>name</b>
6126   * <p>
6127   * Description: <b>Multiple Resources: 
6128
6129* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
6130* [CodeSystem](codesystem.html): Computationally friendly name of the code system
6131* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
6132* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
6133* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
6134* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
6135* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
6136* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
6137* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
6138* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
6139* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
6140* [StructureMap](structuremap.html): Computationally friendly name of the structure map
6141* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
6142* [ValueSet](valueset.html): Computationally friendly name of the value set
6143</b><br>
6144   * Type: <b>string</b><br>
6145   * 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>
6146   * </p>
6147   */
6148  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
6149
6150 /**
6151   * Search parameter: <b>publisher</b>
6152   * <p>
6153   * Description: <b>Multiple Resources: 
6154
6155* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
6156* [CodeSystem](codesystem.html): Name of the publisher of the code system
6157* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
6158* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
6159* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
6160* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
6161* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
6162* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
6163* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
6164* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
6165* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
6166* [StructureMap](structuremap.html): Name of the publisher of the structure map
6167* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
6168* [ValueSet](valueset.html): Name of the publisher of the value set
6169</b><br>
6170   * Type: <b>string</b><br>
6171   * 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>
6172   * </p>
6173   */
6174  @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" )
6175  public static final String SP_PUBLISHER = "publisher";
6176 /**
6177   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
6178   * <p>
6179   * Description: <b>Multiple Resources: 
6180
6181* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
6182* [CodeSystem](codesystem.html): Name of the publisher of the code system
6183* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
6184* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
6185* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
6186* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
6187* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
6188* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
6189* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
6190* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
6191* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
6192* [StructureMap](structuremap.html): Name of the publisher of the structure map
6193* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
6194* [ValueSet](valueset.html): Name of the publisher of the value set
6195</b><br>
6196   * Type: <b>string</b><br>
6197   * 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>
6198   * </p>
6199   */
6200  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
6201
6202 /**
6203   * Search parameter: <b>status</b>
6204   * <p>
6205   * Description: <b>Multiple Resources: 
6206
6207* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
6208* [CodeSystem](codesystem.html): The current status of the code system
6209* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
6210* [ConceptMap](conceptmap.html): The current status of the concept map
6211* [GraphDefinition](graphdefinition.html): The current status of the graph definition
6212* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
6213* [MessageDefinition](messagedefinition.html): The current status of the message definition
6214* [NamingSystem](namingsystem.html): The current status of the naming system
6215* [OperationDefinition](operationdefinition.html): The current status of the operation definition
6216* [SearchParameter](searchparameter.html): The current status of the search parameter
6217* [StructureDefinition](structuredefinition.html): The current status of the structure definition
6218* [StructureMap](structuremap.html): The current status of the structure map
6219* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
6220* [ValueSet](valueset.html): The current status of the value set
6221</b><br>
6222   * Type: <b>token</b><br>
6223   * 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>
6224   * </p>
6225   */
6226  @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" )
6227  public static final String SP_STATUS = "status";
6228 /**
6229   * <b>Fluent Client</b> search parameter constant for <b>status</b>
6230   * <p>
6231   * Description: <b>Multiple Resources: 
6232
6233* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
6234* [CodeSystem](codesystem.html): The current status of the code system
6235* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
6236* [ConceptMap](conceptmap.html): The current status of the concept map
6237* [GraphDefinition](graphdefinition.html): The current status of the graph definition
6238* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
6239* [MessageDefinition](messagedefinition.html): The current status of the message definition
6240* [NamingSystem](namingsystem.html): The current status of the naming system
6241* [OperationDefinition](operationdefinition.html): The current status of the operation definition
6242* [SearchParameter](searchparameter.html): The current status of the search parameter
6243* [StructureDefinition](structuredefinition.html): The current status of the structure definition
6244* [StructureMap](structuremap.html): The current status of the structure map
6245* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
6246* [ValueSet](valueset.html): The current status of the value set
6247</b><br>
6248   * Type: <b>token</b><br>
6249   * 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>
6250   * </p>
6251   */
6252  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
6253
6254 /**
6255   * Search parameter: <b>title</b>
6256   * <p>
6257   * Description: <b>Multiple Resources: 
6258
6259* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
6260* [CodeSystem](codesystem.html): The human-friendly name of the code system
6261* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
6262* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
6263* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
6264* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
6265* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
6266* [StructureMap](structuremap.html): The human-friendly name of the structure map
6267* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
6268* [ValueSet](valueset.html): The human-friendly name of the value set
6269</b><br>
6270   * Type: <b>string</b><br>
6271   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
6272   * </p>
6273   */
6274  @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" )
6275  public static final String SP_TITLE = "title";
6276 /**
6277   * <b>Fluent Client</b> search parameter constant for <b>title</b>
6278   * <p>
6279   * Description: <b>Multiple Resources: 
6280
6281* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
6282* [CodeSystem](codesystem.html): The human-friendly name of the code system
6283* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
6284* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
6285* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
6286* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
6287* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
6288* [StructureMap](structuremap.html): The human-friendly name of the structure map
6289* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
6290* [ValueSet](valueset.html): The human-friendly name of the value set
6291</b><br>
6292   * Type: <b>string</b><br>
6293   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
6294   * </p>
6295   */
6296  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
6297
6298 /**
6299   * Search parameter: <b>url</b>
6300   * <p>
6301   * Description: <b>Multiple Resources: 
6302
6303* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
6304* [CodeSystem](codesystem.html): The uri that identifies the code system
6305* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
6306* [ConceptMap](conceptmap.html): The URI that identifies the concept map
6307* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
6308* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
6309* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
6310* [NamingSystem](namingsystem.html): The uri that identifies the naming system
6311* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
6312* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
6313* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
6314* [StructureMap](structuremap.html): The uri that identifies the structure map
6315* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
6316* [ValueSet](valueset.html): The uri that identifies the value set
6317</b><br>
6318   * Type: <b>uri</b><br>
6319   * 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>
6320   * </p>
6321   */
6322  @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" )
6323  public static final String SP_URL = "url";
6324 /**
6325   * <b>Fluent Client</b> search parameter constant for <b>url</b>
6326   * <p>
6327   * Description: <b>Multiple Resources: 
6328
6329* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
6330* [CodeSystem](codesystem.html): The uri that identifies the code system
6331* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
6332* [ConceptMap](conceptmap.html): The URI that identifies the concept map
6333* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
6334* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
6335* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
6336* [NamingSystem](namingsystem.html): The uri that identifies the naming system
6337* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
6338* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
6339* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
6340* [StructureMap](structuremap.html): The uri that identifies the structure map
6341* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
6342* [ValueSet](valueset.html): The uri that identifies the value set
6343</b><br>
6344   * Type: <b>uri</b><br>
6345   * 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>
6346   * </p>
6347   */
6348  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
6349
6350 /**
6351   * Search parameter: <b>version</b>
6352   * <p>
6353   * Description: <b>Multiple Resources: 
6354
6355* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
6356* [CodeSystem](codesystem.html): The business version of the code system
6357* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
6358* [ConceptMap](conceptmap.html): The business version of the concept map
6359* [GraphDefinition](graphdefinition.html): The business version of the graph definition
6360* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
6361* [MessageDefinition](messagedefinition.html): The business version of the message definition
6362* [NamingSystem](namingsystem.html): The business version of the naming system
6363* [OperationDefinition](operationdefinition.html): The business version of the operation definition
6364* [SearchParameter](searchparameter.html): The business version of the search parameter
6365* [StructureDefinition](structuredefinition.html): The business version of the structure definition
6366* [StructureMap](structuremap.html): The business version of the structure map
6367* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
6368* [ValueSet](valueset.html): The business version of the value set
6369</b><br>
6370   * Type: <b>token</b><br>
6371   * 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>
6372   * </p>
6373   */
6374  @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" )
6375  public static final String SP_VERSION = "version";
6376 /**
6377   * <b>Fluent Client</b> search parameter constant for <b>version</b>
6378   * <p>
6379   * Description: <b>Multiple Resources: 
6380
6381* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
6382* [CodeSystem](codesystem.html): The business version of the code system
6383* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
6384* [ConceptMap](conceptmap.html): The business version of the concept map
6385* [GraphDefinition](graphdefinition.html): The business version of the graph definition
6386* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
6387* [MessageDefinition](messagedefinition.html): The business version of the message definition
6388* [NamingSystem](namingsystem.html): The business version of the naming system
6389* [OperationDefinition](operationdefinition.html): The business version of the operation definition
6390* [SearchParameter](searchparameter.html): The business version of the search parameter
6391* [StructureDefinition](structuredefinition.html): The business version of the structure definition
6392* [StructureMap](structuremap.html): The business version of the structure map
6393* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
6394* [ValueSet](valueset.html): The business version of the value set
6395</b><br>
6396   * Type: <b>token</b><br>
6397   * 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>
6398   * </p>
6399   */
6400  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
6401
6402// Manual code (from Configuration.txt):
6403public PropertyComponent getProperty(String code) {
6404    for (PropertyComponent pd : getProperty()) {
6405      if (pd.getCode().equalsIgnoreCase(code))
6406        return pd;
6407    }
6408    return null;
6409  }
6410
6411  public ConceptDefinitionComponent getDefinitionByCode(String code) {
6412    return getDefinitionByCode(getConcept(), code);
6413  }
6414
6415  private ConceptDefinitionComponent getDefinitionByCode(List<ConceptDefinitionComponent> list, String code) {
6416    for (ConceptDefinitionComponent t : list) {
6417      if (code.equals(t.getCode())) {
6418        return t;
6419      }
6420      ConceptDefinitionComponent cc = getDefinitionByCode(t.getConcept(), code);
6421      if (cc != null) {
6422        return cc;
6423      }
6424    }
6425    return null;
6426  }
6427// end addition
6428
6429}
6430