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