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