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 definition of a FHIR structure. This resource is used to describe the underlying resources, data types defined in FHIR, and also for describing extensions and constraints on resources and data types.
052 */
053@ResourceDef(name="StructureDefinition", profile="http://hl7.org/fhir/StructureDefinition/StructureDefinition")
054public class StructureDefinition extends CanonicalResource {
055
056    public enum ExtensionContextType {
057        /**
058         * The context is all elements that match the FHIRPath query found in the expression.
059         */
060        FHIRPATH, 
061        /**
062         * The context is any element that has an ElementDefinition.id that matches that found in the expression. This includes ElementDefinition Ids that have slicing identifiers. The full path for the element is [url]#[elementid]. If there is no #, the Element id is one defined in the base specification.
063         */
064        ELEMENT, 
065        /**
066         * The context is a particular extension from a particular StructureDefinition, and the expression is just a uri that identifies the extension.
067         */
068        EXTENSION, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static ExtensionContextType fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("fhirpath".equals(codeString))
077          return FHIRPATH;
078        if ("element".equals(codeString))
079          return ELEMENT;
080        if ("extension".equals(codeString))
081          return EXTENSION;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown ExtensionContextType code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case FHIRPATH: return "fhirpath";
090            case ELEMENT: return "element";
091            case EXTENSION: return "extension";
092            default: return "?";
093          }
094        }
095        public String getSystem() {
096          switch (this) {
097            case FHIRPATH: return "http://hl7.org/fhir/extension-context-type";
098            case ELEMENT: return "http://hl7.org/fhir/extension-context-type";
099            case EXTENSION: return "http://hl7.org/fhir/extension-context-type";
100            default: return "?";
101          }
102        }
103        public String getDefinition() {
104          switch (this) {
105            case FHIRPATH: return "The context is all elements that match the FHIRPath query found in the expression.";
106            case ELEMENT: return "The context is any element that has an ElementDefinition.id that matches that found in the expression. This includes ElementDefinition Ids that have slicing identifiers. The full path for the element is [url]#[elementid]. If there is no #, the Element id is one defined in the base specification.";
107            case EXTENSION: return "The context is a particular extension from a particular StructureDefinition, and the expression is just a uri that identifies the extension.";
108            default: return "?";
109          }
110        }
111        public String getDisplay() {
112          switch (this) {
113            case FHIRPATH: return "FHIRPath";
114            case ELEMENT: return "Element ID";
115            case EXTENSION: return "Extension URL";
116            default: return "?";
117          }
118        }
119    }
120
121  public static class ExtensionContextTypeEnumFactory implements EnumFactory<ExtensionContextType> {
122    public ExtensionContextType fromCode(String codeString) throws IllegalArgumentException {
123      if (codeString == null || "".equals(codeString))
124            if (codeString == null || "".equals(codeString))
125                return null;
126        if ("fhirpath".equals(codeString))
127          return ExtensionContextType.FHIRPATH;
128        if ("element".equals(codeString))
129          return ExtensionContextType.ELEMENT;
130        if ("extension".equals(codeString))
131          return ExtensionContextType.EXTENSION;
132        throw new IllegalArgumentException("Unknown ExtensionContextType code '"+codeString+"'");
133        }
134        public Enumeration<ExtensionContextType> fromType(Base code) throws FHIRException {
135          if (code == null)
136            return null;
137          if (code.isEmpty())
138            return new Enumeration<ExtensionContextType>(this);
139          String codeString = ((PrimitiveType) code).asStringValue();
140          if (codeString == null || "".equals(codeString))
141            return null;
142        if ("fhirpath".equals(codeString))
143          return new Enumeration<ExtensionContextType>(this, ExtensionContextType.FHIRPATH);
144        if ("element".equals(codeString))
145          return new Enumeration<ExtensionContextType>(this, ExtensionContextType.ELEMENT);
146        if ("extension".equals(codeString))
147          return new Enumeration<ExtensionContextType>(this, ExtensionContextType.EXTENSION);
148        throw new FHIRException("Unknown ExtensionContextType code '"+codeString+"'");
149        }
150    public String toCode(ExtensionContextType code) {
151      if (code == ExtensionContextType.FHIRPATH)
152        return "fhirpath";
153      if (code == ExtensionContextType.ELEMENT)
154        return "element";
155      if (code == ExtensionContextType.EXTENSION)
156        return "extension";
157      return "?";
158      }
159    public String toSystem(ExtensionContextType code) {
160      return code.getSystem();
161      }
162    }
163
164    public enum StructureDefinitionKind {
165        /**
166         * A primitive type that has a value and an extension. These can be used throughout complex datatype, Resource and extension definitions. Only the base specification can define primitive types.
167         */
168        PRIMITIVETYPE, 
169        /**
170         * A  complex structure that defines a set of data elements that is suitable for use in 'resources'. The base specification defines a number of complex types, and other specifications can define additional types. These structures do not have a maintained identity.
171         */
172        COMPLEXTYPE, 
173        /**
174         * A 'resource' - a directed acyclic graph of elements that aggregrates other types into an identifiable entity. The base FHIR resources are defined by the FHIR specification itself but other 'resources' can be defined in additional specifications (though these will not be recognised as 'resources' by the FHIR specification (i.e. they do not get end-points etc, or act as the targets of references in FHIR defined resources - though other specificatiosn can treat them this way).
175         */
176        RESOURCE, 
177        /**
178         * A pattern or a template that is not intended to be a real resource or complex type.
179         */
180        LOGICAL, 
181        /**
182         * added to help the parsers with the generic types
183         */
184        NULL;
185        public static StructureDefinitionKind fromCode(String codeString) throws FHIRException {
186            if (codeString == null || "".equals(codeString))
187                return null;
188        if ("primitive-type".equals(codeString))
189          return PRIMITIVETYPE;
190        if ("complex-type".equals(codeString))
191          return COMPLEXTYPE;
192        if ("resource".equals(codeString))
193          return RESOURCE;
194        if ("logical".equals(codeString))
195          return LOGICAL;
196        if (Configuration.isAcceptInvalidEnums())
197          return null;
198        else
199          throw new FHIRException("Unknown StructureDefinitionKind code '"+codeString+"'");
200        }
201        public String toCode() {
202          switch (this) {
203            case PRIMITIVETYPE: return "primitive-type";
204            case COMPLEXTYPE: return "complex-type";
205            case RESOURCE: return "resource";
206            case LOGICAL: return "logical";
207            default: return "?";
208          }
209        }
210        public String getSystem() {
211          switch (this) {
212            case PRIMITIVETYPE: return "http://hl7.org/fhir/structure-definition-kind";
213            case COMPLEXTYPE: return "http://hl7.org/fhir/structure-definition-kind";
214            case RESOURCE: return "http://hl7.org/fhir/structure-definition-kind";
215            case LOGICAL: return "http://hl7.org/fhir/structure-definition-kind";
216            default: return "?";
217          }
218        }
219        public String getDefinition() {
220          switch (this) {
221            case PRIMITIVETYPE: return "A primitive type that has a value and an extension. These can be used throughout complex datatype, Resource and extension definitions. Only the base specification can define primitive types.";
222            case COMPLEXTYPE: return "A  complex structure that defines a set of data elements that is suitable for use in 'resources'. The base specification defines a number of complex types, and other specifications can define additional types. These structures do not have a maintained identity.";
223            case RESOURCE: return "A 'resource' - a directed acyclic graph of elements that aggregrates other types into an identifiable entity. The base FHIR resources are defined by the FHIR specification itself but other 'resources' can be defined in additional specifications (though these will not be recognised as 'resources' by the FHIR specification (i.e. they do not get end-points etc, or act as the targets of references in FHIR defined resources - though other specificatiosn can treat them this way).";
224            case LOGICAL: return "A pattern or a template that is not intended to be a real resource or complex type.";
225            default: return "?";
226          }
227        }
228        public String getDisplay() {
229          switch (this) {
230            case PRIMITIVETYPE: return "Primitive Data Type";
231            case COMPLEXTYPE: return "Complex Data Type";
232            case RESOURCE: return "Resource";
233            case LOGICAL: return "Logical";
234            default: return "?";
235          }
236        }
237    }
238
239  public static class StructureDefinitionKindEnumFactory implements EnumFactory<StructureDefinitionKind> {
240    public StructureDefinitionKind fromCode(String codeString) throws IllegalArgumentException {
241      if (codeString == null || "".equals(codeString))
242            if (codeString == null || "".equals(codeString))
243                return null;
244        if ("primitive-type".equals(codeString))
245          return StructureDefinitionKind.PRIMITIVETYPE;
246        if ("complex-type".equals(codeString))
247          return StructureDefinitionKind.COMPLEXTYPE;
248        if ("resource".equals(codeString))
249          return StructureDefinitionKind.RESOURCE;
250        if ("logical".equals(codeString))
251          return StructureDefinitionKind.LOGICAL;
252        throw new IllegalArgumentException("Unknown StructureDefinitionKind code '"+codeString+"'");
253        }
254        public Enumeration<StructureDefinitionKind> fromType(Base code) throws FHIRException {
255          if (code == null)
256            return null;
257          if (code.isEmpty())
258            return new Enumeration<StructureDefinitionKind>(this);
259          String codeString = ((PrimitiveType) code).asStringValue();
260          if (codeString == null || "".equals(codeString))
261            return null;
262        if ("primitive-type".equals(codeString))
263          return new Enumeration<StructureDefinitionKind>(this, StructureDefinitionKind.PRIMITIVETYPE);
264        if ("complex-type".equals(codeString))
265          return new Enumeration<StructureDefinitionKind>(this, StructureDefinitionKind.COMPLEXTYPE);
266        if ("resource".equals(codeString))
267          return new Enumeration<StructureDefinitionKind>(this, StructureDefinitionKind.RESOURCE);
268        if ("logical".equals(codeString))
269          return new Enumeration<StructureDefinitionKind>(this, StructureDefinitionKind.LOGICAL);
270        throw new FHIRException("Unknown StructureDefinitionKind code '"+codeString+"'");
271        }
272    public String toCode(StructureDefinitionKind code) {
273      if (code == StructureDefinitionKind.PRIMITIVETYPE)
274        return "primitive-type";
275      if (code == StructureDefinitionKind.COMPLEXTYPE)
276        return "complex-type";
277      if (code == StructureDefinitionKind.RESOURCE)
278        return "resource";
279      if (code == StructureDefinitionKind.LOGICAL)
280        return "logical";
281      return "?";
282      }
283    public String toSystem(StructureDefinitionKind code) {
284      return code.getSystem();
285      }
286    }
287
288    public enum TypeDerivationRule {
289        /**
290         * This definition defines a new type that adds additional elements to the base type.
291         */
292        SPECIALIZATION, 
293        /**
294         * This definition adds additional rules to an existing concrete type.
295         */
296        CONSTRAINT, 
297        /**
298         * added to help the parsers with the generic types
299         */
300        NULL;
301        public static TypeDerivationRule fromCode(String codeString) throws FHIRException {
302            if (codeString == null || "".equals(codeString))
303                return null;
304        if ("specialization".equals(codeString))
305          return SPECIALIZATION;
306        if ("constraint".equals(codeString))
307          return CONSTRAINT;
308        if (Configuration.isAcceptInvalidEnums())
309          return null;
310        else
311          throw new FHIRException("Unknown TypeDerivationRule code '"+codeString+"'");
312        }
313        public String toCode() {
314          switch (this) {
315            case SPECIALIZATION: return "specialization";
316            case CONSTRAINT: return "constraint";
317            default: return "?";
318          }
319        }
320        public String getSystem() {
321          switch (this) {
322            case SPECIALIZATION: return "http://hl7.org/fhir/type-derivation-rule";
323            case CONSTRAINT: return "http://hl7.org/fhir/type-derivation-rule";
324            default: return "?";
325          }
326        }
327        public String getDefinition() {
328          switch (this) {
329            case SPECIALIZATION: return "This definition defines a new type that adds additional elements to the base type.";
330            case CONSTRAINT: return "This definition adds additional rules to an existing concrete type.";
331            default: return "?";
332          }
333        }
334        public String getDisplay() {
335          switch (this) {
336            case SPECIALIZATION: return "Specialization";
337            case CONSTRAINT: return "Constraint";
338            default: return "?";
339          }
340        }
341    }
342
343  public static class TypeDerivationRuleEnumFactory implements EnumFactory<TypeDerivationRule> {
344    public TypeDerivationRule fromCode(String codeString) throws IllegalArgumentException {
345      if (codeString == null || "".equals(codeString))
346            if (codeString == null || "".equals(codeString))
347                return null;
348        if ("specialization".equals(codeString))
349          return TypeDerivationRule.SPECIALIZATION;
350        if ("constraint".equals(codeString))
351          return TypeDerivationRule.CONSTRAINT;
352        throw new IllegalArgumentException("Unknown TypeDerivationRule code '"+codeString+"'");
353        }
354        public Enumeration<TypeDerivationRule> fromType(Base code) throws FHIRException {
355          if (code == null)
356            return null;
357          if (code.isEmpty())
358            return new Enumeration<TypeDerivationRule>(this);
359          String codeString = ((PrimitiveType) code).asStringValue();
360          if (codeString == null || "".equals(codeString))
361            return null;
362        if ("specialization".equals(codeString))
363          return new Enumeration<TypeDerivationRule>(this, TypeDerivationRule.SPECIALIZATION);
364        if ("constraint".equals(codeString))
365          return new Enumeration<TypeDerivationRule>(this, TypeDerivationRule.CONSTRAINT);
366        throw new FHIRException("Unknown TypeDerivationRule code '"+codeString+"'");
367        }
368    public String toCode(TypeDerivationRule code) {
369      if (code == TypeDerivationRule.SPECIALIZATION)
370        return "specialization";
371      if (code == TypeDerivationRule.CONSTRAINT)
372        return "constraint";
373      return "?";
374      }
375    public String toSystem(TypeDerivationRule code) {
376      return code.getSystem();
377      }
378    }
379
380    @Block()
381    public static class StructureDefinitionMappingComponent extends BackboneElement implements IBaseBackboneElement {
382        /**
383         * An Internal id that is used to identify this mapping set when specific mappings are made.
384         */
385        @Child(name = "identity", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=false)
386        @Description(shortDefinition="Internal id when this mapping is used", formalDefinition="An Internal id that is used to identify this mapping set when specific mappings are made." )
387        protected IdType identity;
388
389        /**
390         * An absolute URI that identifies the specification that this mapping is expressed to.
391         */
392        @Child(name = "uri", type = {UriType.class}, order=2, min=0, max=1, modifier=false, summary=false)
393        @Description(shortDefinition="Identifies what this mapping refers to", formalDefinition="An absolute URI that identifies the specification that this mapping is expressed to." )
394        protected UriType uri;
395
396        /**
397         * A name for the specification that is being mapped to.
398         */
399        @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
400        @Description(shortDefinition="Names what this mapping refers to", formalDefinition="A name for the specification that is being mapped to." )
401        protected StringType name;
402
403        /**
404         * Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.
405         */
406        @Child(name = "comment", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
407        @Description(shortDefinition="Versions, Issues, Scope limitations etc.", formalDefinition="Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage." )
408        protected StringType comment;
409
410        private static final long serialVersionUID = 9610265L;
411
412    /**
413     * Constructor
414     */
415      public StructureDefinitionMappingComponent() {
416        super();
417      }
418
419    /**
420     * Constructor
421     */
422      public StructureDefinitionMappingComponent(String identity) {
423        super();
424        this.setIdentity(identity);
425      }
426
427        /**
428         * @return {@link #identity} (An Internal id that is used to identify this mapping set when specific mappings are made.). This is the underlying object with id, value and extensions. The accessor "getIdentity" gives direct access to the value
429         */
430        public IdType getIdentityElement() { 
431          if (this.identity == null)
432            if (Configuration.errorOnAutoCreate())
433              throw new Error("Attempt to auto-create StructureDefinitionMappingComponent.identity");
434            else if (Configuration.doAutoCreate())
435              this.identity = new IdType(); // bb
436          return this.identity;
437        }
438
439        public boolean hasIdentityElement() { 
440          return this.identity != null && !this.identity.isEmpty();
441        }
442
443        public boolean hasIdentity() { 
444          return this.identity != null && !this.identity.isEmpty();
445        }
446
447        /**
448         * @param value {@link #identity} (An Internal id that is used to identify this mapping set when specific mappings are made.). This is the underlying object with id, value and extensions. The accessor "getIdentity" gives direct access to the value
449         */
450        public StructureDefinitionMappingComponent setIdentityElement(IdType value) { 
451          this.identity = value;
452          return this;
453        }
454
455        /**
456         * @return An Internal id that is used to identify this mapping set when specific mappings are made.
457         */
458        public String getIdentity() { 
459          return this.identity == null ? null : this.identity.getValue();
460        }
461
462        /**
463         * @param value An Internal id that is used to identify this mapping set when specific mappings are made.
464         */
465        public StructureDefinitionMappingComponent setIdentity(String value) { 
466            if (this.identity == null)
467              this.identity = new IdType();
468            this.identity.setValue(value);
469          return this;
470        }
471
472        /**
473         * @return {@link #uri} (An absolute URI that identifies the specification that this mapping is expressed to.). This is the underlying object with id, value and extensions. The accessor "getUri" gives direct access to the value
474         */
475        public UriType getUriElement() { 
476          if (this.uri == null)
477            if (Configuration.errorOnAutoCreate())
478              throw new Error("Attempt to auto-create StructureDefinitionMappingComponent.uri");
479            else if (Configuration.doAutoCreate())
480              this.uri = new UriType(); // bb
481          return this.uri;
482        }
483
484        public boolean hasUriElement() { 
485          return this.uri != null && !this.uri.isEmpty();
486        }
487
488        public boolean hasUri() { 
489          return this.uri != null && !this.uri.isEmpty();
490        }
491
492        /**
493         * @param value {@link #uri} (An absolute URI that identifies the specification that this mapping is expressed to.). This is the underlying object with id, value and extensions. The accessor "getUri" gives direct access to the value
494         */
495        public StructureDefinitionMappingComponent setUriElement(UriType value) { 
496          this.uri = value;
497          return this;
498        }
499
500        /**
501         * @return An absolute URI that identifies the specification that this mapping is expressed to.
502         */
503        public String getUri() { 
504          return this.uri == null ? null : this.uri.getValue();
505        }
506
507        /**
508         * @param value An absolute URI that identifies the specification that this mapping is expressed to.
509         */
510        public StructureDefinitionMappingComponent setUri(String value) { 
511          if (Utilities.noString(value))
512            this.uri = null;
513          else {
514            if (this.uri == null)
515              this.uri = new UriType();
516            this.uri.setValue(value);
517          }
518          return this;
519        }
520
521        /**
522         * @return {@link #name} (A name for the specification that is being mapped to.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
523         */
524        public StringType getNameElement() { 
525          if (this.name == null)
526            if (Configuration.errorOnAutoCreate())
527              throw new Error("Attempt to auto-create StructureDefinitionMappingComponent.name");
528            else if (Configuration.doAutoCreate())
529              this.name = new StringType(); // bb
530          return this.name;
531        }
532
533        public boolean hasNameElement() { 
534          return this.name != null && !this.name.isEmpty();
535        }
536
537        public boolean hasName() { 
538          return this.name != null && !this.name.isEmpty();
539        }
540
541        /**
542         * @param value {@link #name} (A name for the specification that is being mapped to.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
543         */
544        public StructureDefinitionMappingComponent setNameElement(StringType value) { 
545          this.name = value;
546          return this;
547        }
548
549        /**
550         * @return A name for the specification that is being mapped to.
551         */
552        public String getName() { 
553          return this.name == null ? null : this.name.getValue();
554        }
555
556        /**
557         * @param value A name for the specification that is being mapped to.
558         */
559        public StructureDefinitionMappingComponent setName(String value) { 
560          if (Utilities.noString(value))
561            this.name = null;
562          else {
563            if (this.name == null)
564              this.name = new StringType();
565            this.name.setValue(value);
566          }
567          return this;
568        }
569
570        /**
571         * @return {@link #comment} (Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
572         */
573        public StringType getCommentElement() { 
574          if (this.comment == null)
575            if (Configuration.errorOnAutoCreate())
576              throw new Error("Attempt to auto-create StructureDefinitionMappingComponent.comment");
577            else if (Configuration.doAutoCreate())
578              this.comment = new StringType(); // bb
579          return this.comment;
580        }
581
582        public boolean hasCommentElement() { 
583          return this.comment != null && !this.comment.isEmpty();
584        }
585
586        public boolean hasComment() { 
587          return this.comment != null && !this.comment.isEmpty();
588        }
589
590        /**
591         * @param value {@link #comment} (Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
592         */
593        public StructureDefinitionMappingComponent setCommentElement(StringType value) { 
594          this.comment = value;
595          return this;
596        }
597
598        /**
599         * @return Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.
600         */
601        public String getComment() { 
602          return this.comment == null ? null : this.comment.getValue();
603        }
604
605        /**
606         * @param value Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.
607         */
608        public StructureDefinitionMappingComponent setComment(String value) { 
609          if (Utilities.noString(value))
610            this.comment = null;
611          else {
612            if (this.comment == null)
613              this.comment = new StringType();
614            this.comment.setValue(value);
615          }
616          return this;
617        }
618
619        protected void listChildren(List<Property> children) {
620          super.listChildren(children);
621          children.add(new Property("identity", "id", "An Internal id that is used to identify this mapping set when specific mappings are made.", 0, 1, identity));
622          children.add(new Property("uri", "uri", "An absolute URI that identifies the specification that this mapping is expressed to.", 0, 1, uri));
623          children.add(new Property("name", "string", "A name for the specification that is being mapped to.", 0, 1, name));
624          children.add(new Property("comment", "string", "Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.", 0, 1, comment));
625        }
626
627        @Override
628        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
629          switch (_hash) {
630          case -135761730: /*identity*/  return new Property("identity", "id", "An Internal id that is used to identify this mapping set when specific mappings are made.", 0, 1, identity);
631          case 116076: /*uri*/  return new Property("uri", "uri", "An absolute URI that identifies the specification that this mapping is expressed to.", 0, 1, uri);
632          case 3373707: /*name*/  return new Property("name", "string", "A name for the specification that is being mapped to.", 0, 1, name);
633          case 950398559: /*comment*/  return new Property("comment", "string", "Comments about this mapping, including version notes, issues, scope limitations, and other important notes for usage.", 0, 1, comment);
634          default: return super.getNamedProperty(_hash, _name, _checkValid);
635          }
636
637        }
638
639      @Override
640      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
641        switch (hash) {
642        case -135761730: /*identity*/ return this.identity == null ? new Base[0] : new Base[] {this.identity}; // IdType
643        case 116076: /*uri*/ return this.uri == null ? new Base[0] : new Base[] {this.uri}; // UriType
644        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
645        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
646        default: return super.getProperty(hash, name, checkValid);
647        }
648
649      }
650
651      @Override
652      public Base setProperty(int hash, String name, Base value) throws FHIRException {
653        switch (hash) {
654        case -135761730: // identity
655          this.identity = TypeConvertor.castToId(value); // IdType
656          return value;
657        case 116076: // uri
658          this.uri = TypeConvertor.castToUri(value); // UriType
659          return value;
660        case 3373707: // name
661          this.name = TypeConvertor.castToString(value); // StringType
662          return value;
663        case 950398559: // comment
664          this.comment = TypeConvertor.castToString(value); // StringType
665          return value;
666        default: return super.setProperty(hash, name, value);
667        }
668
669      }
670
671      @Override
672      public Base setProperty(String name, Base value) throws FHIRException {
673        if (name.equals("identity")) {
674          this.identity = TypeConvertor.castToId(value); // IdType
675        } else if (name.equals("uri")) {
676          this.uri = TypeConvertor.castToUri(value); // UriType
677        } else if (name.equals("name")) {
678          this.name = TypeConvertor.castToString(value); // StringType
679        } else if (name.equals("comment")) {
680          this.comment = TypeConvertor.castToString(value); // StringType
681        } else
682          return super.setProperty(name, value);
683        return value;
684      }
685
686      @Override
687      public Base makeProperty(int hash, String name) throws FHIRException {
688        switch (hash) {
689        case -135761730:  return getIdentityElement();
690        case 116076:  return getUriElement();
691        case 3373707:  return getNameElement();
692        case 950398559:  return getCommentElement();
693        default: return super.makeProperty(hash, name);
694        }
695
696      }
697
698      @Override
699      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
700        switch (hash) {
701        case -135761730: /*identity*/ return new String[] {"id"};
702        case 116076: /*uri*/ return new String[] {"uri"};
703        case 3373707: /*name*/ return new String[] {"string"};
704        case 950398559: /*comment*/ return new String[] {"string"};
705        default: return super.getTypesForProperty(hash, name);
706        }
707
708      }
709
710      @Override
711      public Base addChild(String name) throws FHIRException {
712        if (name.equals("identity")) {
713          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.mapping.identity");
714        }
715        else if (name.equals("uri")) {
716          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.mapping.uri");
717        }
718        else if (name.equals("name")) {
719          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.mapping.name");
720        }
721        else if (name.equals("comment")) {
722          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.mapping.comment");
723        }
724        else
725          return super.addChild(name);
726      }
727
728      public StructureDefinitionMappingComponent copy() {
729        StructureDefinitionMappingComponent dst = new StructureDefinitionMappingComponent();
730        copyValues(dst);
731        return dst;
732      }
733
734      public void copyValues(StructureDefinitionMappingComponent dst) {
735        super.copyValues(dst);
736        dst.identity = identity == null ? null : identity.copy();
737        dst.uri = uri == null ? null : uri.copy();
738        dst.name = name == null ? null : name.copy();
739        dst.comment = comment == null ? null : comment.copy();
740      }
741
742      @Override
743      public boolean equalsDeep(Base other_) {
744        if (!super.equalsDeep(other_))
745          return false;
746        if (!(other_ instanceof StructureDefinitionMappingComponent))
747          return false;
748        StructureDefinitionMappingComponent o = (StructureDefinitionMappingComponent) other_;
749        return compareDeep(identity, o.identity, true) && compareDeep(uri, o.uri, true) && compareDeep(name, o.name, true)
750           && compareDeep(comment, o.comment, true);
751      }
752
753      @Override
754      public boolean equalsShallow(Base other_) {
755        if (!super.equalsShallow(other_))
756          return false;
757        if (!(other_ instanceof StructureDefinitionMappingComponent))
758          return false;
759        StructureDefinitionMappingComponent o = (StructureDefinitionMappingComponent) other_;
760        return compareValues(identity, o.identity, true) && compareValues(uri, o.uri, true) && compareValues(name, o.name, true)
761           && compareValues(comment, o.comment, true);
762      }
763
764      public boolean isEmpty() {
765        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identity, uri, name, comment
766          );
767      }
768
769  public String fhirType() {
770    return "StructureDefinition.mapping";
771
772  }
773
774  }
775
776    @Block()
777    public static class StructureDefinitionContextComponent extends BackboneElement implements IBaseBackboneElement {
778        /**
779         * Defines how to interpret the expression that defines what the context of the extension is.
780         */
781        @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
782        @Description(shortDefinition="fhirpath | element | extension", formalDefinition="Defines how to interpret the expression that defines what the context of the extension is." )
783        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/extension-context-type")
784        protected Enumeration<ExtensionContextType> type;
785
786        /**
787         * An expression that defines where an extension can be used in resources.
788         */
789        @Child(name = "expression", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=true)
790        @Description(shortDefinition="Where the extension can be used in instances", formalDefinition="An expression that defines where an extension can be used in resources." )
791        protected StringType expression;
792
793        private static final long serialVersionUID = 1958074856L;
794
795    /**
796     * Constructor
797     */
798      public StructureDefinitionContextComponent() {
799        super();
800      }
801
802    /**
803     * Constructor
804     */
805      public StructureDefinitionContextComponent(ExtensionContextType type, String expression) {
806        super();
807        this.setType(type);
808        this.setExpression(expression);
809      }
810
811        /**
812         * @return {@link #type} (Defines how to interpret the expression that defines what the context of the extension is.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
813         */
814        public Enumeration<ExtensionContextType> getTypeElement() { 
815          if (this.type == null)
816            if (Configuration.errorOnAutoCreate())
817              throw new Error("Attempt to auto-create StructureDefinitionContextComponent.type");
818            else if (Configuration.doAutoCreate())
819              this.type = new Enumeration<ExtensionContextType>(new ExtensionContextTypeEnumFactory()); // bb
820          return this.type;
821        }
822
823        public boolean hasTypeElement() { 
824          return this.type != null && !this.type.isEmpty();
825        }
826
827        public boolean hasType() { 
828          return this.type != null && !this.type.isEmpty();
829        }
830
831        /**
832         * @param value {@link #type} (Defines how to interpret the expression that defines what the context of the extension is.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
833         */
834        public StructureDefinitionContextComponent setTypeElement(Enumeration<ExtensionContextType> value) { 
835          this.type = value;
836          return this;
837        }
838
839        /**
840         * @return Defines how to interpret the expression that defines what the context of the extension is.
841         */
842        public ExtensionContextType getType() { 
843          return this.type == null ? null : this.type.getValue();
844        }
845
846        /**
847         * @param value Defines how to interpret the expression that defines what the context of the extension is.
848         */
849        public StructureDefinitionContextComponent setType(ExtensionContextType value) { 
850            if (this.type == null)
851              this.type = new Enumeration<ExtensionContextType>(new ExtensionContextTypeEnumFactory());
852            this.type.setValue(value);
853          return this;
854        }
855
856        /**
857         * @return {@link #expression} (An expression that defines where an extension can be used in resources.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
858         */
859        public StringType getExpressionElement() { 
860          if (this.expression == null)
861            if (Configuration.errorOnAutoCreate())
862              throw new Error("Attempt to auto-create StructureDefinitionContextComponent.expression");
863            else if (Configuration.doAutoCreate())
864              this.expression = new StringType(); // bb
865          return this.expression;
866        }
867
868        public boolean hasExpressionElement() { 
869          return this.expression != null && !this.expression.isEmpty();
870        }
871
872        public boolean hasExpression() { 
873          return this.expression != null && !this.expression.isEmpty();
874        }
875
876        /**
877         * @param value {@link #expression} (An expression that defines where an extension can be used in resources.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
878         */
879        public StructureDefinitionContextComponent setExpressionElement(StringType value) { 
880          this.expression = value;
881          return this;
882        }
883
884        /**
885         * @return An expression that defines where an extension can be used in resources.
886         */
887        public String getExpression() { 
888          return this.expression == null ? null : this.expression.getValue();
889        }
890
891        /**
892         * @param value An expression that defines where an extension can be used in resources.
893         */
894        public StructureDefinitionContextComponent setExpression(String value) { 
895            if (this.expression == null)
896              this.expression = new StringType();
897            this.expression.setValue(value);
898          return this;
899        }
900
901        protected void listChildren(List<Property> children) {
902          super.listChildren(children);
903          children.add(new Property("type", "code", "Defines how to interpret the expression that defines what the context of the extension is.", 0, 1, type));
904          children.add(new Property("expression", "string", "An expression that defines where an extension can be used in resources.", 0, 1, expression));
905        }
906
907        @Override
908        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
909          switch (_hash) {
910          case 3575610: /*type*/  return new Property("type", "code", "Defines how to interpret the expression that defines what the context of the extension is.", 0, 1, type);
911          case -1795452264: /*expression*/  return new Property("expression", "string", "An expression that defines where an extension can be used in resources.", 0, 1, expression);
912          default: return super.getNamedProperty(_hash, _name, _checkValid);
913          }
914
915        }
916
917      @Override
918      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
919        switch (hash) {
920        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // Enumeration<ExtensionContextType>
921        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // StringType
922        default: return super.getProperty(hash, name, checkValid);
923        }
924
925      }
926
927      @Override
928      public Base setProperty(int hash, String name, Base value) throws FHIRException {
929        switch (hash) {
930        case 3575610: // type
931          value = new ExtensionContextTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
932          this.type = (Enumeration) value; // Enumeration<ExtensionContextType>
933          return value;
934        case -1795452264: // expression
935          this.expression = TypeConvertor.castToString(value); // StringType
936          return value;
937        default: return super.setProperty(hash, name, value);
938        }
939
940      }
941
942      @Override
943      public Base setProperty(String name, Base value) throws FHIRException {
944        if (name.equals("type")) {
945          value = new ExtensionContextTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
946          this.type = (Enumeration) value; // Enumeration<ExtensionContextType>
947        } else if (name.equals("expression")) {
948          this.expression = TypeConvertor.castToString(value); // StringType
949        } else
950          return super.setProperty(name, value);
951        return value;
952      }
953
954      @Override
955      public Base makeProperty(int hash, String name) throws FHIRException {
956        switch (hash) {
957        case 3575610:  return getTypeElement();
958        case -1795452264:  return getExpressionElement();
959        default: return super.makeProperty(hash, name);
960        }
961
962      }
963
964      @Override
965      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
966        switch (hash) {
967        case 3575610: /*type*/ return new String[] {"code"};
968        case -1795452264: /*expression*/ return new String[] {"string"};
969        default: return super.getTypesForProperty(hash, name);
970        }
971
972      }
973
974      @Override
975      public Base addChild(String name) throws FHIRException {
976        if (name.equals("type")) {
977          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.context.type");
978        }
979        else if (name.equals("expression")) {
980          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.context.expression");
981        }
982        else
983          return super.addChild(name);
984      }
985
986      public StructureDefinitionContextComponent copy() {
987        StructureDefinitionContextComponent dst = new StructureDefinitionContextComponent();
988        copyValues(dst);
989        return dst;
990      }
991
992      public void copyValues(StructureDefinitionContextComponent dst) {
993        super.copyValues(dst);
994        dst.type = type == null ? null : type.copy();
995        dst.expression = expression == null ? null : expression.copy();
996      }
997
998      @Override
999      public boolean equalsDeep(Base other_) {
1000        if (!super.equalsDeep(other_))
1001          return false;
1002        if (!(other_ instanceof StructureDefinitionContextComponent))
1003          return false;
1004        StructureDefinitionContextComponent o = (StructureDefinitionContextComponent) other_;
1005        return compareDeep(type, o.type, true) && compareDeep(expression, o.expression, true);
1006      }
1007
1008      @Override
1009      public boolean equalsShallow(Base other_) {
1010        if (!super.equalsShallow(other_))
1011          return false;
1012        if (!(other_ instanceof StructureDefinitionContextComponent))
1013          return false;
1014        StructureDefinitionContextComponent o = (StructureDefinitionContextComponent) other_;
1015        return compareValues(type, o.type, true) && compareValues(expression, o.expression, true);
1016      }
1017
1018      public boolean isEmpty() {
1019        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, expression);
1020      }
1021
1022  public String fhirType() {
1023    return "StructureDefinition.context";
1024
1025  }
1026
1027  }
1028
1029    @Block()
1030    public static class StructureDefinitionSnapshotComponent extends BackboneElement implements IBaseBackboneElement {
1031        /**
1032         * Captures constraints on each element within the resource.
1033         */
1034        @Child(name = "element", type = {ElementDefinition.class}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1035        @Description(shortDefinition="Definition of elements in the resource (if no StructureDefinition)", formalDefinition="Captures constraints on each element within the resource." )
1036        protected List<ElementDefinition> element;
1037
1038        private static final long serialVersionUID = 53896641L;
1039
1040    /**
1041     * Constructor
1042     */
1043      public StructureDefinitionSnapshotComponent() {
1044        super();
1045      }
1046
1047    /**
1048     * Constructor
1049     */
1050      public StructureDefinitionSnapshotComponent(ElementDefinition element) {
1051        super();
1052        this.addElement(element);
1053      }
1054
1055        /**
1056         * @return {@link #element} (Captures constraints on each element within the resource.)
1057         */
1058        public List<ElementDefinition> getElement() { 
1059          if (this.element == null)
1060            this.element = new ArrayList<ElementDefinition>();
1061          return this.element;
1062        }
1063
1064        /**
1065         * @return Returns a reference to <code>this</code> for easy method chaining
1066         */
1067        public StructureDefinitionSnapshotComponent setElement(List<ElementDefinition> theElement) { 
1068          this.element = theElement;
1069          return this;
1070        }
1071
1072        public boolean hasElement() { 
1073          if (this.element == null)
1074            return false;
1075          for (ElementDefinition item : this.element)
1076            if (!item.isEmpty())
1077              return true;
1078          return false;
1079        }
1080
1081        public ElementDefinition addElement() { //3
1082          ElementDefinition t = new ElementDefinition();
1083          if (this.element == null)
1084            this.element = new ArrayList<ElementDefinition>();
1085          this.element.add(t);
1086          return t;
1087        }
1088
1089        public StructureDefinitionSnapshotComponent addElement(ElementDefinition t) { //3
1090          if (t == null)
1091            return this;
1092          if (this.element == null)
1093            this.element = new ArrayList<ElementDefinition>();
1094          this.element.add(t);
1095          return this;
1096        }
1097
1098        /**
1099         * @return The first repetition of repeating field {@link #element}, creating it if it does not already exist {3}
1100         */
1101        public ElementDefinition getElementFirstRep() { 
1102          if (getElement().isEmpty()) {
1103            addElement();
1104          }
1105          return getElement().get(0);
1106        }
1107
1108        protected void listChildren(List<Property> children) {
1109          super.listChildren(children);
1110          children.add(new Property("element", "ElementDefinition", "Captures constraints on each element within the resource.", 0, java.lang.Integer.MAX_VALUE, element));
1111        }
1112
1113        @Override
1114        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1115          switch (_hash) {
1116          case -1662836996: /*element*/  return new Property("element", "ElementDefinition", "Captures constraints on each element within the resource.", 0, java.lang.Integer.MAX_VALUE, element);
1117          default: return super.getNamedProperty(_hash, _name, _checkValid);
1118          }
1119
1120        }
1121
1122      @Override
1123      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1124        switch (hash) {
1125        case -1662836996: /*element*/ return this.element == null ? new Base[0] : this.element.toArray(new Base[this.element.size()]); // ElementDefinition
1126        default: return super.getProperty(hash, name, checkValid);
1127        }
1128
1129      }
1130
1131      @Override
1132      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1133        switch (hash) {
1134        case -1662836996: // element
1135          this.getElement().add(TypeConvertor.castToElementDefinition(value)); // ElementDefinition
1136          return value;
1137        default: return super.setProperty(hash, name, value);
1138        }
1139
1140      }
1141
1142      @Override
1143      public Base setProperty(String name, Base value) throws FHIRException {
1144        if (name.equals("element")) {
1145          this.getElement().add(TypeConvertor.castToElementDefinition(value));
1146        } else
1147          return super.setProperty(name, value);
1148        return value;
1149      }
1150
1151      @Override
1152      public Base makeProperty(int hash, String name) throws FHIRException {
1153        switch (hash) {
1154        case -1662836996:  return addElement(); 
1155        default: return super.makeProperty(hash, name);
1156        }
1157
1158      }
1159
1160      @Override
1161      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1162        switch (hash) {
1163        case -1662836996: /*element*/ return new String[] {"ElementDefinition"};
1164        default: return super.getTypesForProperty(hash, name);
1165        }
1166
1167      }
1168
1169      @Override
1170      public Base addChild(String name) throws FHIRException {
1171        if (name.equals("element")) {
1172          return addElement();
1173        }
1174        else
1175          return super.addChild(name);
1176      }
1177
1178      public StructureDefinitionSnapshotComponent copy() {
1179        StructureDefinitionSnapshotComponent dst = new StructureDefinitionSnapshotComponent();
1180        copyValues(dst);
1181        return dst;
1182      }
1183
1184      public void copyValues(StructureDefinitionSnapshotComponent dst) {
1185        super.copyValues(dst);
1186        if (element != null) {
1187          dst.element = new ArrayList<ElementDefinition>();
1188          for (ElementDefinition i : element)
1189            dst.element.add(i.copy());
1190        };
1191      }
1192
1193      @Override
1194      public boolean equalsDeep(Base other_) {
1195        if (!super.equalsDeep(other_))
1196          return false;
1197        if (!(other_ instanceof StructureDefinitionSnapshotComponent))
1198          return false;
1199        StructureDefinitionSnapshotComponent o = (StructureDefinitionSnapshotComponent) other_;
1200        return compareDeep(element, o.element, true);
1201      }
1202
1203      @Override
1204      public boolean equalsShallow(Base other_) {
1205        if (!super.equalsShallow(other_))
1206          return false;
1207        if (!(other_ instanceof StructureDefinitionSnapshotComponent))
1208          return false;
1209        StructureDefinitionSnapshotComponent o = (StructureDefinitionSnapshotComponent) other_;
1210        return true;
1211      }
1212
1213      public boolean isEmpty() {
1214        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(element);
1215      }
1216
1217  public String fhirType() {
1218    return "StructureDefinition.snapshot";
1219
1220  }
1221
1222  }
1223
1224    @Block()
1225    public static class StructureDefinitionDifferentialComponent extends BackboneElement implements IBaseBackboneElement {
1226        /**
1227         * Captures constraints on each element within the resource.
1228         */
1229        @Child(name = "element", type = {ElementDefinition.class}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1230        @Description(shortDefinition="Definition of elements in the resource (if no StructureDefinition)", formalDefinition="Captures constraints on each element within the resource." )
1231        protected List<ElementDefinition> element;
1232
1233        private static final long serialVersionUID = 53896641L;
1234
1235    /**
1236     * Constructor
1237     */
1238      public StructureDefinitionDifferentialComponent() {
1239        super();
1240      }
1241
1242    /**
1243     * Constructor
1244     */
1245      public StructureDefinitionDifferentialComponent(ElementDefinition element) {
1246        super();
1247        this.addElement(element);
1248      }
1249
1250        /**
1251         * @return {@link #element} (Captures constraints on each element within the resource.)
1252         */
1253        public List<ElementDefinition> getElement() { 
1254          if (this.element == null)
1255            this.element = new ArrayList<ElementDefinition>();
1256          return this.element;
1257        }
1258
1259        /**
1260         * @return Returns a reference to <code>this</code> for easy method chaining
1261         */
1262        public StructureDefinitionDifferentialComponent setElement(List<ElementDefinition> theElement) { 
1263          this.element = theElement;
1264          return this;
1265        }
1266
1267        public boolean hasElement() { 
1268          if (this.element == null)
1269            return false;
1270          for (ElementDefinition item : this.element)
1271            if (!item.isEmpty())
1272              return true;
1273          return false;
1274        }
1275
1276        public ElementDefinition addElement() { //3
1277          ElementDefinition t = new ElementDefinition();
1278          if (this.element == null)
1279            this.element = new ArrayList<ElementDefinition>();
1280          this.element.add(t);
1281          return t;
1282        }
1283
1284        public StructureDefinitionDifferentialComponent addElement(ElementDefinition t) { //3
1285          if (t == null)
1286            return this;
1287          if (this.element == null)
1288            this.element = new ArrayList<ElementDefinition>();
1289          this.element.add(t);
1290          return this;
1291        }
1292
1293        /**
1294         * @return The first repetition of repeating field {@link #element}, creating it if it does not already exist {3}
1295         */
1296        public ElementDefinition getElementFirstRep() { 
1297          if (getElement().isEmpty()) {
1298            addElement();
1299          }
1300          return getElement().get(0);
1301        }
1302
1303        protected void listChildren(List<Property> children) {
1304          super.listChildren(children);
1305          children.add(new Property("element", "ElementDefinition", "Captures constraints on each element within the resource.", 0, java.lang.Integer.MAX_VALUE, element));
1306        }
1307
1308        @Override
1309        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1310          switch (_hash) {
1311          case -1662836996: /*element*/  return new Property("element", "ElementDefinition", "Captures constraints on each element within the resource.", 0, java.lang.Integer.MAX_VALUE, element);
1312          default: return super.getNamedProperty(_hash, _name, _checkValid);
1313          }
1314
1315        }
1316
1317      @Override
1318      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1319        switch (hash) {
1320        case -1662836996: /*element*/ return this.element == null ? new Base[0] : this.element.toArray(new Base[this.element.size()]); // ElementDefinition
1321        default: return super.getProperty(hash, name, checkValid);
1322        }
1323
1324      }
1325
1326      @Override
1327      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1328        switch (hash) {
1329        case -1662836996: // element
1330          this.getElement().add(TypeConvertor.castToElementDefinition(value)); // ElementDefinition
1331          return value;
1332        default: return super.setProperty(hash, name, value);
1333        }
1334
1335      }
1336
1337      @Override
1338      public Base setProperty(String name, Base value) throws FHIRException {
1339        if (name.equals("element")) {
1340          this.getElement().add(TypeConvertor.castToElementDefinition(value));
1341        } else
1342          return super.setProperty(name, value);
1343        return value;
1344      }
1345
1346      @Override
1347      public Base makeProperty(int hash, String name) throws FHIRException {
1348        switch (hash) {
1349        case -1662836996:  return addElement(); 
1350        default: return super.makeProperty(hash, name);
1351        }
1352
1353      }
1354
1355      @Override
1356      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1357        switch (hash) {
1358        case -1662836996: /*element*/ return new String[] {"ElementDefinition"};
1359        default: return super.getTypesForProperty(hash, name);
1360        }
1361
1362      }
1363
1364      @Override
1365      public Base addChild(String name) throws FHIRException {
1366        if (name.equals("element")) {
1367          return addElement();
1368        }
1369        else
1370          return super.addChild(name);
1371      }
1372
1373      public StructureDefinitionDifferentialComponent copy() {
1374        StructureDefinitionDifferentialComponent dst = new StructureDefinitionDifferentialComponent();
1375        copyValues(dst);
1376        return dst;
1377      }
1378
1379      public void copyValues(StructureDefinitionDifferentialComponent dst) {
1380        super.copyValues(dst);
1381        if (element != null) {
1382          dst.element = new ArrayList<ElementDefinition>();
1383          for (ElementDefinition i : element)
1384            dst.element.add(i.copy());
1385        };
1386      }
1387
1388      @Override
1389      public boolean equalsDeep(Base other_) {
1390        if (!super.equalsDeep(other_))
1391          return false;
1392        if (!(other_ instanceof StructureDefinitionDifferentialComponent))
1393          return false;
1394        StructureDefinitionDifferentialComponent o = (StructureDefinitionDifferentialComponent) other_;
1395        return compareDeep(element, o.element, true);
1396      }
1397
1398      @Override
1399      public boolean equalsShallow(Base other_) {
1400        if (!super.equalsShallow(other_))
1401          return false;
1402        if (!(other_ instanceof StructureDefinitionDifferentialComponent))
1403          return false;
1404        StructureDefinitionDifferentialComponent o = (StructureDefinitionDifferentialComponent) other_;
1405        return true;
1406      }
1407
1408      public boolean isEmpty() {
1409        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(element);
1410      }
1411
1412  public String fhirType() {
1413    return "StructureDefinition.differential";
1414
1415  }
1416
1417  }
1418
1419    /**
1420     * An absolute URI that is used to identify this structure definition 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 structure definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure definition is stored on different servers.
1421     */
1422    @Child(name = "url", type = {UriType.class}, order=0, min=1, max=1, modifier=false, summary=true)
1423    @Description(shortDefinition="Canonical identifier for this structure definition, represented as a URI (globally unique)", formalDefinition="An absolute URI that is used to identify this structure definition 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 structure definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure definition is stored on different servers." )
1424    protected UriType url;
1425
1426    /**
1427     * A formal identifier that is used to identify this structure definition when it is represented in other formats, or referenced in a specification, model, design or an instance.
1428     */
1429    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1430    @Description(shortDefinition="Additional identifier for the structure definition", formalDefinition="A formal identifier that is used to identify this structure definition when it is represented in other formats, or referenced in a specification, model, design or an instance." )
1431    protected List<Identifier> identifier;
1432
1433    /**
1434     * The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition 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.
1435     */
1436    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
1437    @Description(shortDefinition="Business version of the structure definition", formalDefinition="The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition 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." )
1438    protected StringType version;
1439
1440    /**
1441     * A natural language name identifying the structure definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1442     */
1443    @Child(name = "name", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true)
1444    @Description(shortDefinition="Name for this structure definition (computer friendly)", formalDefinition="A natural language name identifying the structure definition. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
1445    protected StringType name;
1446
1447    /**
1448     * A short, descriptive, user-friendly title for the structure definition.
1449     */
1450    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1451    @Description(shortDefinition="Name for this structure definition (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the structure definition." )
1452    protected StringType title;
1453
1454    /**
1455     * The status of this structure definition. Enables tracking the life-cycle of the content.
1456     */
1457    @Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
1458    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this structure definition. Enables tracking the life-cycle of the content." )
1459    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
1460    protected Enumeration<PublicationStatus> status;
1461
1462    /**
1463     * A Boolean value to indicate that this structure definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
1464     */
1465    @Child(name = "experimental", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true)
1466    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this structure definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
1467    protected BooleanType experimental;
1468
1469    /**
1470     * The date  (and optionally time) when the structure definition 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 structure definition changes.
1471     */
1472    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
1473    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the structure definition 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 structure definition changes." )
1474    protected DateTimeType date;
1475
1476    /**
1477     * The name of the organization or individual that published the structure definition.
1478     */
1479    @Child(name = "publisher", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
1480    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the structure definition." )
1481    protected StringType publisher;
1482
1483    /**
1484     * Contact details to assist a user in finding and communicating with the publisher.
1485     */
1486    @Child(name = "contact", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1487    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
1488    protected List<ContactDetail> contact;
1489
1490    /**
1491     * A free text natural language description of the structure definition from a consumer's perspective.
1492     */
1493    @Child(name = "description", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=false)
1494    @Description(shortDefinition="Natural language description of the structure definition", formalDefinition="A free text natural language description of the structure definition from a consumer's perspective." )
1495    protected MarkdownType description;
1496
1497    /**
1498     * 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 structure definition instances.
1499     */
1500    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1501    @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 structure definition instances." )
1502    protected List<UsageContext> useContext;
1503
1504    /**
1505     * A legal or geographic region in which the structure definition is intended to be used.
1506     */
1507    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1508    @Description(shortDefinition="Intended jurisdiction for structure definition (if applicable)", formalDefinition="A legal or geographic region in which the structure definition is intended to be used." )
1509    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
1510    protected List<CodeableConcept> jurisdiction;
1511
1512    /**
1513     * Explanation of why this structure definition is needed and why it has been designed as it has.
1514     */
1515    @Child(name = "purpose", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=false)
1516    @Description(shortDefinition="Why this structure definition is defined", formalDefinition="Explanation of why this structure definition is needed and why it has been designed as it has." )
1517    protected MarkdownType purpose;
1518
1519    /**
1520     * A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition.
1521     */
1522    @Child(name = "copyright", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
1523    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition." )
1524    protected MarkdownType copyright;
1525
1526    /**
1527     * A set of key words or terms from external terminologies that may be used to assist with indexing and searching of templates nby describing the use of this structure definition, or the content it describes.
1528     */
1529    @Child(name = "keyword", type = {Coding.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1530    @Description(shortDefinition="Assist with indexing and finding", formalDefinition="A set of key words or terms from external terminologies that may be used to assist with indexing and searching of templates nby describing the use of this structure definition, or the content it describes." )
1531    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/definition-use")
1532    protected List<Coding> keyword;
1533
1534    /**
1535     * The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 5.0.0-snapshot1. for this version.
1536     */
1537    @Child(name = "fhirVersion", type = {CodeType.class}, order=16, min=0, max=1, modifier=false, summary=true)
1538    @Description(shortDefinition="FHIR Version this StructureDefinition targets", formalDefinition="The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 5.0.0-snapshot1. for this version." )
1539    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
1540    protected Enumeration<FHIRVersion> fhirVersion;
1541
1542    /**
1543     * An external specification that the content is mapped to.
1544     */
1545    @Child(name = "mapping", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1546    @Description(shortDefinition="External specification that the content is mapped to", formalDefinition="An external specification that the content is mapped to." )
1547    protected List<StructureDefinitionMappingComponent> mapping;
1548
1549    /**
1550     * Defines the kind of structure that this definition is describing.
1551     */
1552    @Child(name = "kind", type = {CodeType.class}, order=18, min=1, max=1, modifier=false, summary=true)
1553    @Description(shortDefinition="primitive-type | complex-type | resource | logical", formalDefinition="Defines the kind of structure that this definition is describing." )
1554    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/structure-definition-kind")
1555    protected Enumeration<StructureDefinitionKind> kind;
1556
1557    /**
1558     * Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems.
1559     */
1560    @Child(name = "abstract", type = {BooleanType.class}, order=19, min=1, max=1, modifier=false, summary=true)
1561    @Description(shortDefinition="Whether the structure is abstract", formalDefinition="Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems." )
1562    protected BooleanType abstract_;
1563
1564    /**
1565     * Identifies the types of resource or data type elements to which the extension can be applied.
1566     */
1567    @Child(name = "context", type = {}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1568    @Description(shortDefinition="If an extension, where it can be used in instances", formalDefinition="Identifies the types of resource or data type elements to which the extension can be applied." )
1569    protected List<StructureDefinitionContextComponent> context;
1570
1571    /**
1572     * A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true.
1573     */
1574    @Child(name = "contextInvariant", type = {StringType.class}, order=21, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1575    @Description(shortDefinition="FHIRPath invariants - when the extension can be used", formalDefinition="A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true." )
1576    protected List<StringType> contextInvariant;
1577
1578    /**
1579     * The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.
1580     */
1581    @Child(name = "type", type = {UriType.class}, order=22, min=1, max=1, modifier=false, summary=true)
1582    @Description(shortDefinition="Type defined or constrained by this structure", formalDefinition="The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. \"string\" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models." )
1583    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/defined-types")
1584    protected UriType type;
1585
1586    /**
1587     * An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.
1588     */
1589    @Child(name = "baseDefinition", type = {CanonicalType.class}, order=23, min=0, max=1, modifier=false, summary=true)
1590    @Description(shortDefinition="Definition that this type is constrained/specialized from", formalDefinition="An absolute URI that is the base structure from which this type is derived, either by specialization or constraint." )
1591    protected CanonicalType baseDefinition;
1592
1593    /**
1594     * How the type relates to the baseDefinition.
1595     */
1596    @Child(name = "derivation", type = {CodeType.class}, order=24, min=0, max=1, modifier=false, summary=true)
1597    @Description(shortDefinition="specialization | constraint - How relates to base definition", formalDefinition="How the type relates to the baseDefinition." )
1598    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/type-derivation-rule")
1599    protected Enumeration<TypeDerivationRule> derivation;
1600
1601    /**
1602     * A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition.
1603     */
1604    @Child(name = "snapshot", type = {}, order=25, min=0, max=1, modifier=false, summary=false)
1605    @Description(shortDefinition="Snapshot view of the structure", formalDefinition="A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition." )
1606    protected StructureDefinitionSnapshotComponent snapshot;
1607
1608    /**
1609     * A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies.
1610     */
1611    @Child(name = "differential", type = {}, order=26, min=0, max=1, modifier=false, summary=false)
1612    @Description(shortDefinition="Differential view of the structure", formalDefinition="A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies." )
1613    protected StructureDefinitionDifferentialComponent differential;
1614
1615    private static final long serialVersionUID = -101902378L;
1616
1617  /**
1618   * Constructor
1619   */
1620    public StructureDefinition() {
1621      super();
1622    }
1623
1624  /**
1625   * Constructor
1626   */
1627    public StructureDefinition(String url, String name, PublicationStatus status, StructureDefinitionKind kind, boolean abstract_, String type) {
1628      super();
1629      this.setUrl(url);
1630      this.setName(name);
1631      this.setStatus(status);
1632      this.setKind(kind);
1633      this.setAbstract(abstract_);
1634      this.setType(type);
1635    }
1636
1637    /**
1638     * @return {@link #url} (An absolute URI that is used to identify this structure definition 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 structure definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure definition is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1639     */
1640    public UriType getUrlElement() { 
1641      if (this.url == null)
1642        if (Configuration.errorOnAutoCreate())
1643          throw new Error("Attempt to auto-create StructureDefinition.url");
1644        else if (Configuration.doAutoCreate())
1645          this.url = new UriType(); // bb
1646      return this.url;
1647    }
1648
1649    public boolean hasUrlElement() { 
1650      return this.url != null && !this.url.isEmpty();
1651    }
1652
1653    public boolean hasUrl() { 
1654      return this.url != null && !this.url.isEmpty();
1655    }
1656
1657    /**
1658     * @param value {@link #url} (An absolute URI that is used to identify this structure definition 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 structure definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure definition is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
1659     */
1660    public StructureDefinition setUrlElement(UriType value) { 
1661      this.url = value;
1662      return this;
1663    }
1664
1665    /**
1666     * @return An absolute URI that is used to identify this structure definition 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 structure definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure definition is stored on different servers.
1667     */
1668    public String getUrl() { 
1669      return this.url == null ? null : this.url.getValue();
1670    }
1671
1672    /**
1673     * @param value An absolute URI that is used to identify this structure definition 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 structure definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure definition is stored on different servers.
1674     */
1675    public StructureDefinition setUrl(String value) { 
1676        if (this.url == null)
1677          this.url = new UriType();
1678        this.url.setValue(value);
1679      return this;
1680    }
1681
1682    /**
1683     * @return {@link #identifier} (A formal identifier that is used to identify this structure definition when it is represented in other formats, or referenced in a specification, model, design or an instance.)
1684     */
1685    public List<Identifier> getIdentifier() { 
1686      if (this.identifier == null)
1687        this.identifier = new ArrayList<Identifier>();
1688      return this.identifier;
1689    }
1690
1691    /**
1692     * @return Returns a reference to <code>this</code> for easy method chaining
1693     */
1694    public StructureDefinition setIdentifier(List<Identifier> theIdentifier) { 
1695      this.identifier = theIdentifier;
1696      return this;
1697    }
1698
1699    public boolean hasIdentifier() { 
1700      if (this.identifier == null)
1701        return false;
1702      for (Identifier item : this.identifier)
1703        if (!item.isEmpty())
1704          return true;
1705      return false;
1706    }
1707
1708    public Identifier addIdentifier() { //3
1709      Identifier t = new Identifier();
1710      if (this.identifier == null)
1711        this.identifier = new ArrayList<Identifier>();
1712      this.identifier.add(t);
1713      return t;
1714    }
1715
1716    public StructureDefinition addIdentifier(Identifier t) { //3
1717      if (t == null)
1718        return this;
1719      if (this.identifier == null)
1720        this.identifier = new ArrayList<Identifier>();
1721      this.identifier.add(t);
1722      return this;
1723    }
1724
1725    /**
1726     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1727     */
1728    public Identifier getIdentifierFirstRep() { 
1729      if (getIdentifier().isEmpty()) {
1730        addIdentifier();
1731      }
1732      return getIdentifier().get(0);
1733    }
1734
1735    /**
1736     * @return {@link #version} (The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition 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
1737     */
1738    public StringType getVersionElement() { 
1739      if (this.version == null)
1740        if (Configuration.errorOnAutoCreate())
1741          throw new Error("Attempt to auto-create StructureDefinition.version");
1742        else if (Configuration.doAutoCreate())
1743          this.version = new StringType(); // bb
1744      return this.version;
1745    }
1746
1747    public boolean hasVersionElement() { 
1748      return this.version != null && !this.version.isEmpty();
1749    }
1750
1751    public boolean hasVersion() { 
1752      return this.version != null && !this.version.isEmpty();
1753    }
1754
1755    /**
1756     * @param value {@link #version} (The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition 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
1757     */
1758    public StructureDefinition setVersionElement(StringType value) { 
1759      this.version = value;
1760      return this;
1761    }
1762
1763    /**
1764     * @return The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition 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.
1765     */
1766    public String getVersion() { 
1767      return this.version == null ? null : this.version.getValue();
1768    }
1769
1770    /**
1771     * @param value The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition 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.
1772     */
1773    public StructureDefinition setVersion(String value) { 
1774      if (Utilities.noString(value))
1775        this.version = null;
1776      else {
1777        if (this.version == null)
1778          this.version = new StringType();
1779        this.version.setValue(value);
1780      }
1781      return this;
1782    }
1783
1784    /**
1785     * @return {@link #name} (A natural language name identifying the structure definition. 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
1786     */
1787    public StringType getNameElement() { 
1788      if (this.name == null)
1789        if (Configuration.errorOnAutoCreate())
1790          throw new Error("Attempt to auto-create StructureDefinition.name");
1791        else if (Configuration.doAutoCreate())
1792          this.name = new StringType(); // bb
1793      return this.name;
1794    }
1795
1796    public boolean hasNameElement() { 
1797      return this.name != null && !this.name.isEmpty();
1798    }
1799
1800    public boolean hasName() { 
1801      return this.name != null && !this.name.isEmpty();
1802    }
1803
1804    /**
1805     * @param value {@link #name} (A natural language name identifying the structure definition. 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
1806     */
1807    public StructureDefinition setNameElement(StringType value) { 
1808      this.name = value;
1809      return this;
1810    }
1811
1812    /**
1813     * @return A natural language name identifying the structure definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1814     */
1815    public String getName() { 
1816      return this.name == null ? null : this.name.getValue();
1817    }
1818
1819    /**
1820     * @param value A natural language name identifying the structure definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1821     */
1822    public StructureDefinition setName(String value) { 
1823        if (this.name == null)
1824          this.name = new StringType();
1825        this.name.setValue(value);
1826      return this;
1827    }
1828
1829    /**
1830     * @return {@link #title} (A short, descriptive, user-friendly title for the structure definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1831     */
1832    public StringType getTitleElement() { 
1833      if (this.title == null)
1834        if (Configuration.errorOnAutoCreate())
1835          throw new Error("Attempt to auto-create StructureDefinition.title");
1836        else if (Configuration.doAutoCreate())
1837          this.title = new StringType(); // bb
1838      return this.title;
1839    }
1840
1841    public boolean hasTitleElement() { 
1842      return this.title != null && !this.title.isEmpty();
1843    }
1844
1845    public boolean hasTitle() { 
1846      return this.title != null && !this.title.isEmpty();
1847    }
1848
1849    /**
1850     * @param value {@link #title} (A short, descriptive, user-friendly title for the structure definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
1851     */
1852    public StructureDefinition setTitleElement(StringType value) { 
1853      this.title = value;
1854      return this;
1855    }
1856
1857    /**
1858     * @return A short, descriptive, user-friendly title for the structure definition.
1859     */
1860    public String getTitle() { 
1861      return this.title == null ? null : this.title.getValue();
1862    }
1863
1864    /**
1865     * @param value A short, descriptive, user-friendly title for the structure definition.
1866     */
1867    public StructureDefinition setTitle(String value) { 
1868      if (Utilities.noString(value))
1869        this.title = null;
1870      else {
1871        if (this.title == null)
1872          this.title = new StringType();
1873        this.title.setValue(value);
1874      }
1875      return this;
1876    }
1877
1878    /**
1879     * @return {@link #status} (The status of this structure definition. 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
1880     */
1881    public Enumeration<PublicationStatus> getStatusElement() { 
1882      if (this.status == null)
1883        if (Configuration.errorOnAutoCreate())
1884          throw new Error("Attempt to auto-create StructureDefinition.status");
1885        else if (Configuration.doAutoCreate())
1886          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
1887      return this.status;
1888    }
1889
1890    public boolean hasStatusElement() { 
1891      return this.status != null && !this.status.isEmpty();
1892    }
1893
1894    public boolean hasStatus() { 
1895      return this.status != null && !this.status.isEmpty();
1896    }
1897
1898    /**
1899     * @param value {@link #status} (The status of this structure definition. 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
1900     */
1901    public StructureDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
1902      this.status = value;
1903      return this;
1904    }
1905
1906    /**
1907     * @return The status of this structure definition. Enables tracking the life-cycle of the content.
1908     */
1909    public PublicationStatus getStatus() { 
1910      return this.status == null ? null : this.status.getValue();
1911    }
1912
1913    /**
1914     * @param value The status of this structure definition. Enables tracking the life-cycle of the content.
1915     */
1916    public StructureDefinition setStatus(PublicationStatus value) { 
1917        if (this.status == null)
1918          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
1919        this.status.setValue(value);
1920      return this;
1921    }
1922
1923    /**
1924     * @return {@link #experimental} (A Boolean value to indicate that this structure definition 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
1925     */
1926    public BooleanType getExperimentalElement() { 
1927      if (this.experimental == null)
1928        if (Configuration.errorOnAutoCreate())
1929          throw new Error("Attempt to auto-create StructureDefinition.experimental");
1930        else if (Configuration.doAutoCreate())
1931          this.experimental = new BooleanType(); // bb
1932      return this.experimental;
1933    }
1934
1935    public boolean hasExperimentalElement() { 
1936      return this.experimental != null && !this.experimental.isEmpty();
1937    }
1938
1939    public boolean hasExperimental() { 
1940      return this.experimental != null && !this.experimental.isEmpty();
1941    }
1942
1943    /**
1944     * @param value {@link #experimental} (A Boolean value to indicate that this structure definition 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
1945     */
1946    public StructureDefinition setExperimentalElement(BooleanType value) { 
1947      this.experimental = value;
1948      return this;
1949    }
1950
1951    /**
1952     * @return A Boolean value to indicate that this structure definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
1953     */
1954    public boolean getExperimental() { 
1955      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
1956    }
1957
1958    /**
1959     * @param value A Boolean value to indicate that this structure definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
1960     */
1961    public StructureDefinition setExperimental(boolean value) { 
1962        if (this.experimental == null)
1963          this.experimental = new BooleanType();
1964        this.experimental.setValue(value);
1965      return this;
1966    }
1967
1968    /**
1969     * @return {@link #date} (The date  (and optionally time) when the structure definition 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 structure definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1970     */
1971    public DateTimeType getDateElement() { 
1972      if (this.date == null)
1973        if (Configuration.errorOnAutoCreate())
1974          throw new Error("Attempt to auto-create StructureDefinition.date");
1975        else if (Configuration.doAutoCreate())
1976          this.date = new DateTimeType(); // bb
1977      return this.date;
1978    }
1979
1980    public boolean hasDateElement() { 
1981      return this.date != null && !this.date.isEmpty();
1982    }
1983
1984    public boolean hasDate() { 
1985      return this.date != null && !this.date.isEmpty();
1986    }
1987
1988    /**
1989     * @param value {@link #date} (The date  (and optionally time) when the structure definition 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 structure definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
1990     */
1991    public StructureDefinition setDateElement(DateTimeType value) { 
1992      this.date = value;
1993      return this;
1994    }
1995
1996    /**
1997     * @return The date  (and optionally time) when the structure definition 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 structure definition changes.
1998     */
1999    public Date getDate() { 
2000      return this.date == null ? null : this.date.getValue();
2001    }
2002
2003    /**
2004     * @param value The date  (and optionally time) when the structure definition 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 structure definition changes.
2005     */
2006    public StructureDefinition setDate(Date value) { 
2007      if (value == null)
2008        this.date = null;
2009      else {
2010        if (this.date == null)
2011          this.date = new DateTimeType();
2012        this.date.setValue(value);
2013      }
2014      return this;
2015    }
2016
2017    /**
2018     * @return {@link #publisher} (The name of the organization or individual that published the structure definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2019     */
2020    public StringType getPublisherElement() { 
2021      if (this.publisher == null)
2022        if (Configuration.errorOnAutoCreate())
2023          throw new Error("Attempt to auto-create StructureDefinition.publisher");
2024        else if (Configuration.doAutoCreate())
2025          this.publisher = new StringType(); // bb
2026      return this.publisher;
2027    }
2028
2029    public boolean hasPublisherElement() { 
2030      return this.publisher != null && !this.publisher.isEmpty();
2031    }
2032
2033    public boolean hasPublisher() { 
2034      return this.publisher != null && !this.publisher.isEmpty();
2035    }
2036
2037    /**
2038     * @param value {@link #publisher} (The name of the organization or individual that published the structure definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2039     */
2040    public StructureDefinition setPublisherElement(StringType value) { 
2041      this.publisher = value;
2042      return this;
2043    }
2044
2045    /**
2046     * @return The name of the organization or individual that published the structure definition.
2047     */
2048    public String getPublisher() { 
2049      return this.publisher == null ? null : this.publisher.getValue();
2050    }
2051
2052    /**
2053     * @param value The name of the organization or individual that published the structure definition.
2054     */
2055    public StructureDefinition setPublisher(String value) { 
2056      if (Utilities.noString(value))
2057        this.publisher = null;
2058      else {
2059        if (this.publisher == null)
2060          this.publisher = new StringType();
2061        this.publisher.setValue(value);
2062      }
2063      return this;
2064    }
2065
2066    /**
2067     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
2068     */
2069    public List<ContactDetail> getContact() { 
2070      if (this.contact == null)
2071        this.contact = new ArrayList<ContactDetail>();
2072      return this.contact;
2073    }
2074
2075    /**
2076     * @return Returns a reference to <code>this</code> for easy method chaining
2077     */
2078    public StructureDefinition setContact(List<ContactDetail> theContact) { 
2079      this.contact = theContact;
2080      return this;
2081    }
2082
2083    public boolean hasContact() { 
2084      if (this.contact == null)
2085        return false;
2086      for (ContactDetail item : this.contact)
2087        if (!item.isEmpty())
2088          return true;
2089      return false;
2090    }
2091
2092    public ContactDetail addContact() { //3
2093      ContactDetail t = new ContactDetail();
2094      if (this.contact == null)
2095        this.contact = new ArrayList<ContactDetail>();
2096      this.contact.add(t);
2097      return t;
2098    }
2099
2100    public StructureDefinition addContact(ContactDetail t) { //3
2101      if (t == null)
2102        return this;
2103      if (this.contact == null)
2104        this.contact = new ArrayList<ContactDetail>();
2105      this.contact.add(t);
2106      return this;
2107    }
2108
2109    /**
2110     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
2111     */
2112    public ContactDetail getContactFirstRep() { 
2113      if (getContact().isEmpty()) {
2114        addContact();
2115      }
2116      return getContact().get(0);
2117    }
2118
2119    /**
2120     * @return {@link #description} (A free text natural language description of the structure definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2121     */
2122    public MarkdownType getDescriptionElement() { 
2123      if (this.description == null)
2124        if (Configuration.errorOnAutoCreate())
2125          throw new Error("Attempt to auto-create StructureDefinition.description");
2126        else if (Configuration.doAutoCreate())
2127          this.description = new MarkdownType(); // bb
2128      return this.description;
2129    }
2130
2131    public boolean hasDescriptionElement() { 
2132      return this.description != null && !this.description.isEmpty();
2133    }
2134
2135    public boolean hasDescription() { 
2136      return this.description != null && !this.description.isEmpty();
2137    }
2138
2139    /**
2140     * @param value {@link #description} (A free text natural language description of the structure definition from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2141     */
2142    public StructureDefinition setDescriptionElement(MarkdownType value) { 
2143      this.description = value;
2144      return this;
2145    }
2146
2147    /**
2148     * @return A free text natural language description of the structure definition from a consumer's perspective.
2149     */
2150    public String getDescription() { 
2151      return this.description == null ? null : this.description.getValue();
2152    }
2153
2154    /**
2155     * @param value A free text natural language description of the structure definition from a consumer's perspective.
2156     */
2157    public StructureDefinition setDescription(String value) { 
2158      if (value == null)
2159        this.description = null;
2160      else {
2161        if (this.description == null)
2162          this.description = new MarkdownType();
2163        this.description.setValue(value);
2164      }
2165      return this;
2166    }
2167
2168    /**
2169     * @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 structure definition instances.)
2170     */
2171    public List<UsageContext> getUseContext() { 
2172      if (this.useContext == null)
2173        this.useContext = new ArrayList<UsageContext>();
2174      return this.useContext;
2175    }
2176
2177    /**
2178     * @return Returns a reference to <code>this</code> for easy method chaining
2179     */
2180    public StructureDefinition setUseContext(List<UsageContext> theUseContext) { 
2181      this.useContext = theUseContext;
2182      return this;
2183    }
2184
2185    public boolean hasUseContext() { 
2186      if (this.useContext == null)
2187        return false;
2188      for (UsageContext item : this.useContext)
2189        if (!item.isEmpty())
2190          return true;
2191      return false;
2192    }
2193
2194    public UsageContext addUseContext() { //3
2195      UsageContext t = new UsageContext();
2196      if (this.useContext == null)
2197        this.useContext = new ArrayList<UsageContext>();
2198      this.useContext.add(t);
2199      return t;
2200    }
2201
2202    public StructureDefinition addUseContext(UsageContext t) { //3
2203      if (t == null)
2204        return this;
2205      if (this.useContext == null)
2206        this.useContext = new ArrayList<UsageContext>();
2207      this.useContext.add(t);
2208      return this;
2209    }
2210
2211    /**
2212     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
2213     */
2214    public UsageContext getUseContextFirstRep() { 
2215      if (getUseContext().isEmpty()) {
2216        addUseContext();
2217      }
2218      return getUseContext().get(0);
2219    }
2220
2221    /**
2222     * @return {@link #jurisdiction} (A legal or geographic region in which the structure definition is intended to be used.)
2223     */
2224    public List<CodeableConcept> getJurisdiction() { 
2225      if (this.jurisdiction == null)
2226        this.jurisdiction = new ArrayList<CodeableConcept>();
2227      return this.jurisdiction;
2228    }
2229
2230    /**
2231     * @return Returns a reference to <code>this</code> for easy method chaining
2232     */
2233    public StructureDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
2234      this.jurisdiction = theJurisdiction;
2235      return this;
2236    }
2237
2238    public boolean hasJurisdiction() { 
2239      if (this.jurisdiction == null)
2240        return false;
2241      for (CodeableConcept item : this.jurisdiction)
2242        if (!item.isEmpty())
2243          return true;
2244      return false;
2245    }
2246
2247    public CodeableConcept addJurisdiction() { //3
2248      CodeableConcept t = new CodeableConcept();
2249      if (this.jurisdiction == null)
2250        this.jurisdiction = new ArrayList<CodeableConcept>();
2251      this.jurisdiction.add(t);
2252      return t;
2253    }
2254
2255    public StructureDefinition addJurisdiction(CodeableConcept t) { //3
2256      if (t == null)
2257        return this;
2258      if (this.jurisdiction == null)
2259        this.jurisdiction = new ArrayList<CodeableConcept>();
2260      this.jurisdiction.add(t);
2261      return this;
2262    }
2263
2264    /**
2265     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
2266     */
2267    public CodeableConcept getJurisdictionFirstRep() { 
2268      if (getJurisdiction().isEmpty()) {
2269        addJurisdiction();
2270      }
2271      return getJurisdiction().get(0);
2272    }
2273
2274    /**
2275     * @return {@link #purpose} (Explanation of why this structure definition 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
2276     */
2277    public MarkdownType getPurposeElement() { 
2278      if (this.purpose == null)
2279        if (Configuration.errorOnAutoCreate())
2280          throw new Error("Attempt to auto-create StructureDefinition.purpose");
2281        else if (Configuration.doAutoCreate())
2282          this.purpose = new MarkdownType(); // bb
2283      return this.purpose;
2284    }
2285
2286    public boolean hasPurposeElement() { 
2287      return this.purpose != null && !this.purpose.isEmpty();
2288    }
2289
2290    public boolean hasPurpose() { 
2291      return this.purpose != null && !this.purpose.isEmpty();
2292    }
2293
2294    /**
2295     * @param value {@link #purpose} (Explanation of why this structure definition 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
2296     */
2297    public StructureDefinition setPurposeElement(MarkdownType value) { 
2298      this.purpose = value;
2299      return this;
2300    }
2301
2302    /**
2303     * @return Explanation of why this structure definition is needed and why it has been designed as it has.
2304     */
2305    public String getPurpose() { 
2306      return this.purpose == null ? null : this.purpose.getValue();
2307    }
2308
2309    /**
2310     * @param value Explanation of why this structure definition is needed and why it has been designed as it has.
2311     */
2312    public StructureDefinition setPurpose(String value) { 
2313      if (value == null)
2314        this.purpose = null;
2315      else {
2316        if (this.purpose == null)
2317          this.purpose = new MarkdownType();
2318        this.purpose.setValue(value);
2319      }
2320      return this;
2321    }
2322
2323    /**
2324     * @return {@link #copyright} (A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
2325     */
2326    public MarkdownType getCopyrightElement() { 
2327      if (this.copyright == null)
2328        if (Configuration.errorOnAutoCreate())
2329          throw new Error("Attempt to auto-create StructureDefinition.copyright");
2330        else if (Configuration.doAutoCreate())
2331          this.copyright = new MarkdownType(); // bb
2332      return this.copyright;
2333    }
2334
2335    public boolean hasCopyrightElement() { 
2336      return this.copyright != null && !this.copyright.isEmpty();
2337    }
2338
2339    public boolean hasCopyright() { 
2340      return this.copyright != null && !this.copyright.isEmpty();
2341    }
2342
2343    /**
2344     * @param value {@link #copyright} (A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
2345     */
2346    public StructureDefinition setCopyrightElement(MarkdownType value) { 
2347      this.copyright = value;
2348      return this;
2349    }
2350
2351    /**
2352     * @return A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition.
2353     */
2354    public String getCopyright() { 
2355      return this.copyright == null ? null : this.copyright.getValue();
2356    }
2357
2358    /**
2359     * @param value A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition.
2360     */
2361    public StructureDefinition setCopyright(String value) { 
2362      if (value == null)
2363        this.copyright = null;
2364      else {
2365        if (this.copyright == null)
2366          this.copyright = new MarkdownType();
2367        this.copyright.setValue(value);
2368      }
2369      return this;
2370    }
2371
2372    /**
2373     * @return {@link #keyword} (A set of key words or terms from external terminologies that may be used to assist with indexing and searching of templates nby describing the use of this structure definition, or the content it describes.)
2374     */
2375    public List<Coding> getKeyword() { 
2376      if (this.keyword == null)
2377        this.keyword = new ArrayList<Coding>();
2378      return this.keyword;
2379    }
2380
2381    /**
2382     * @return Returns a reference to <code>this</code> for easy method chaining
2383     */
2384    public StructureDefinition setKeyword(List<Coding> theKeyword) { 
2385      this.keyword = theKeyword;
2386      return this;
2387    }
2388
2389    public boolean hasKeyword() { 
2390      if (this.keyword == null)
2391        return false;
2392      for (Coding item : this.keyword)
2393        if (!item.isEmpty())
2394          return true;
2395      return false;
2396    }
2397
2398    public Coding addKeyword() { //3
2399      Coding t = new Coding();
2400      if (this.keyword == null)
2401        this.keyword = new ArrayList<Coding>();
2402      this.keyword.add(t);
2403      return t;
2404    }
2405
2406    public StructureDefinition addKeyword(Coding t) { //3
2407      if (t == null)
2408        return this;
2409      if (this.keyword == null)
2410        this.keyword = new ArrayList<Coding>();
2411      this.keyword.add(t);
2412      return this;
2413    }
2414
2415    /**
2416     * @return The first repetition of repeating field {@link #keyword}, creating it if it does not already exist {3}
2417     */
2418    public Coding getKeywordFirstRep() { 
2419      if (getKeyword().isEmpty()) {
2420        addKeyword();
2421      }
2422      return getKeyword().get(0);
2423    }
2424
2425    /**
2426     * @return {@link #fhirVersion} (The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 5.0.0-snapshot1. for this version.). This is the underlying object with id, value and extensions. The accessor "getFhirVersion" gives direct access to the value
2427     */
2428    public Enumeration<FHIRVersion> getFhirVersionElement() { 
2429      if (this.fhirVersion == null)
2430        if (Configuration.errorOnAutoCreate())
2431          throw new Error("Attempt to auto-create StructureDefinition.fhirVersion");
2432        else if (Configuration.doAutoCreate())
2433          this.fhirVersion = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory()); // bb
2434      return this.fhirVersion;
2435    }
2436
2437    public boolean hasFhirVersionElement() { 
2438      return this.fhirVersion != null && !this.fhirVersion.isEmpty();
2439    }
2440
2441    public boolean hasFhirVersion() { 
2442      return this.fhirVersion != null && !this.fhirVersion.isEmpty();
2443    }
2444
2445    /**
2446     * @param value {@link #fhirVersion} (The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 5.0.0-snapshot1. for this version.). This is the underlying object with id, value and extensions. The accessor "getFhirVersion" gives direct access to the value
2447     */
2448    public StructureDefinition setFhirVersionElement(Enumeration<FHIRVersion> value) { 
2449      this.fhirVersion = value;
2450      return this;
2451    }
2452
2453    /**
2454     * @return The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 5.0.0-snapshot1. for this version.
2455     */
2456    public FHIRVersion getFhirVersion() { 
2457      return this.fhirVersion == null ? null : this.fhirVersion.getValue();
2458    }
2459
2460    /**
2461     * @param value The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 5.0.0-snapshot1. for this version.
2462     */
2463    public StructureDefinition setFhirVersion(FHIRVersion value) { 
2464      if (value == null)
2465        this.fhirVersion = null;
2466      else {
2467        if (this.fhirVersion == null)
2468          this.fhirVersion = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
2469        this.fhirVersion.setValue(value);
2470      }
2471      return this;
2472    }
2473
2474    /**
2475     * @return {@link #mapping} (An external specification that the content is mapped to.)
2476     */
2477    public List<StructureDefinitionMappingComponent> getMapping() { 
2478      if (this.mapping == null)
2479        this.mapping = new ArrayList<StructureDefinitionMappingComponent>();
2480      return this.mapping;
2481    }
2482
2483    /**
2484     * @return Returns a reference to <code>this</code> for easy method chaining
2485     */
2486    public StructureDefinition setMapping(List<StructureDefinitionMappingComponent> theMapping) { 
2487      this.mapping = theMapping;
2488      return this;
2489    }
2490
2491    public boolean hasMapping() { 
2492      if (this.mapping == null)
2493        return false;
2494      for (StructureDefinitionMappingComponent item : this.mapping)
2495        if (!item.isEmpty())
2496          return true;
2497      return false;
2498    }
2499
2500    public StructureDefinitionMappingComponent addMapping() { //3
2501      StructureDefinitionMappingComponent t = new StructureDefinitionMappingComponent();
2502      if (this.mapping == null)
2503        this.mapping = new ArrayList<StructureDefinitionMappingComponent>();
2504      this.mapping.add(t);
2505      return t;
2506    }
2507
2508    public StructureDefinition addMapping(StructureDefinitionMappingComponent t) { //3
2509      if (t == null)
2510        return this;
2511      if (this.mapping == null)
2512        this.mapping = new ArrayList<StructureDefinitionMappingComponent>();
2513      this.mapping.add(t);
2514      return this;
2515    }
2516
2517    /**
2518     * @return The first repetition of repeating field {@link #mapping}, creating it if it does not already exist {3}
2519     */
2520    public StructureDefinitionMappingComponent getMappingFirstRep() { 
2521      if (getMapping().isEmpty()) {
2522        addMapping();
2523      }
2524      return getMapping().get(0);
2525    }
2526
2527    /**
2528     * @return {@link #kind} (Defines the kind of structure that this definition is describing.). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
2529     */
2530    public Enumeration<StructureDefinitionKind> getKindElement() { 
2531      if (this.kind == null)
2532        if (Configuration.errorOnAutoCreate())
2533          throw new Error("Attempt to auto-create StructureDefinition.kind");
2534        else if (Configuration.doAutoCreate())
2535          this.kind = new Enumeration<StructureDefinitionKind>(new StructureDefinitionKindEnumFactory()); // bb
2536      return this.kind;
2537    }
2538
2539    public boolean hasKindElement() { 
2540      return this.kind != null && !this.kind.isEmpty();
2541    }
2542
2543    public boolean hasKind() { 
2544      return this.kind != null && !this.kind.isEmpty();
2545    }
2546
2547    /**
2548     * @param value {@link #kind} (Defines the kind of structure that this definition is describing.). This is the underlying object with id, value and extensions. The accessor "getKind" gives direct access to the value
2549     */
2550    public StructureDefinition setKindElement(Enumeration<StructureDefinitionKind> value) { 
2551      this.kind = value;
2552      return this;
2553    }
2554
2555    /**
2556     * @return Defines the kind of structure that this definition is describing.
2557     */
2558    public StructureDefinitionKind getKind() { 
2559      return this.kind == null ? null : this.kind.getValue();
2560    }
2561
2562    /**
2563     * @param value Defines the kind of structure that this definition is describing.
2564     */
2565    public StructureDefinition setKind(StructureDefinitionKind value) { 
2566        if (this.kind == null)
2567          this.kind = new Enumeration<StructureDefinitionKind>(new StructureDefinitionKindEnumFactory());
2568        this.kind.setValue(value);
2569      return this;
2570    }
2571
2572    /**
2573     * @return {@link #abstract_} (Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems.). This is the underlying object with id, value and extensions. The accessor "getAbstract" gives direct access to the value
2574     */
2575    public BooleanType getAbstractElement() { 
2576      if (this.abstract_ == null)
2577        if (Configuration.errorOnAutoCreate())
2578          throw new Error("Attempt to auto-create StructureDefinition.abstract_");
2579        else if (Configuration.doAutoCreate())
2580          this.abstract_ = new BooleanType(); // bb
2581      return this.abstract_;
2582    }
2583
2584    public boolean hasAbstractElement() { 
2585      return this.abstract_ != null && !this.abstract_.isEmpty();
2586    }
2587
2588    public boolean hasAbstract() { 
2589      return this.abstract_ != null && !this.abstract_.isEmpty();
2590    }
2591
2592    /**
2593     * @param value {@link #abstract_} (Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems.). This is the underlying object with id, value and extensions. The accessor "getAbstract" gives direct access to the value
2594     */
2595    public StructureDefinition setAbstractElement(BooleanType value) { 
2596      this.abstract_ = value;
2597      return this;
2598    }
2599
2600    /**
2601     * @return Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems.
2602     */
2603    public boolean getAbstract() { 
2604      return this.abstract_ == null || this.abstract_.isEmpty() ? false : this.abstract_.getValue();
2605    }
2606
2607    /**
2608     * @param value Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems.
2609     */
2610    public StructureDefinition setAbstract(boolean value) { 
2611        if (this.abstract_ == null)
2612          this.abstract_ = new BooleanType();
2613        this.abstract_.setValue(value);
2614      return this;
2615    }
2616
2617    /**
2618     * @return {@link #context} (Identifies the types of resource or data type elements to which the extension can be applied.)
2619     */
2620    public List<StructureDefinitionContextComponent> getContext() { 
2621      if (this.context == null)
2622        this.context = new ArrayList<StructureDefinitionContextComponent>();
2623      return this.context;
2624    }
2625
2626    /**
2627     * @return Returns a reference to <code>this</code> for easy method chaining
2628     */
2629    public StructureDefinition setContext(List<StructureDefinitionContextComponent> theContext) { 
2630      this.context = theContext;
2631      return this;
2632    }
2633
2634    public boolean hasContext() { 
2635      if (this.context == null)
2636        return false;
2637      for (StructureDefinitionContextComponent item : this.context)
2638        if (!item.isEmpty())
2639          return true;
2640      return false;
2641    }
2642
2643    public StructureDefinitionContextComponent addContext() { //3
2644      StructureDefinitionContextComponent t = new StructureDefinitionContextComponent();
2645      if (this.context == null)
2646        this.context = new ArrayList<StructureDefinitionContextComponent>();
2647      this.context.add(t);
2648      return t;
2649    }
2650
2651    public StructureDefinition addContext(StructureDefinitionContextComponent t) { //3
2652      if (t == null)
2653        return this;
2654      if (this.context == null)
2655        this.context = new ArrayList<StructureDefinitionContextComponent>();
2656      this.context.add(t);
2657      return this;
2658    }
2659
2660    /**
2661     * @return The first repetition of repeating field {@link #context}, creating it if it does not already exist {3}
2662     */
2663    public StructureDefinitionContextComponent getContextFirstRep() { 
2664      if (getContext().isEmpty()) {
2665        addContext();
2666      }
2667      return getContext().get(0);
2668    }
2669
2670    /**
2671     * @return {@link #contextInvariant} (A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true.)
2672     */
2673    public List<StringType> getContextInvariant() { 
2674      if (this.contextInvariant == null)
2675        this.contextInvariant = new ArrayList<StringType>();
2676      return this.contextInvariant;
2677    }
2678
2679    /**
2680     * @return Returns a reference to <code>this</code> for easy method chaining
2681     */
2682    public StructureDefinition setContextInvariant(List<StringType> theContextInvariant) { 
2683      this.contextInvariant = theContextInvariant;
2684      return this;
2685    }
2686
2687    public boolean hasContextInvariant() { 
2688      if (this.contextInvariant == null)
2689        return false;
2690      for (StringType item : this.contextInvariant)
2691        if (!item.isEmpty())
2692          return true;
2693      return false;
2694    }
2695
2696    /**
2697     * @return {@link #contextInvariant} (A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true.)
2698     */
2699    public StringType addContextInvariantElement() {//2 
2700      StringType t = new StringType();
2701      if (this.contextInvariant == null)
2702        this.contextInvariant = new ArrayList<StringType>();
2703      this.contextInvariant.add(t);
2704      return t;
2705    }
2706
2707    /**
2708     * @param value {@link #contextInvariant} (A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true.)
2709     */
2710    public StructureDefinition addContextInvariant(String value) { //1
2711      StringType t = new StringType();
2712      t.setValue(value);
2713      if (this.contextInvariant == null)
2714        this.contextInvariant = new ArrayList<StringType>();
2715      this.contextInvariant.add(t);
2716      return this;
2717    }
2718
2719    /**
2720     * @param value {@link #contextInvariant} (A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true.)
2721     */
2722    public boolean hasContextInvariant(String value) { 
2723      if (this.contextInvariant == null)
2724        return false;
2725      for (StringType v : this.contextInvariant)
2726        if (v.getValue().equals(value)) // string
2727          return true;
2728      return false;
2729    }
2730
2731    /**
2732     * @return {@link #type} (The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
2733     */
2734    public UriType getTypeElement() { 
2735      if (this.type == null)
2736        if (Configuration.errorOnAutoCreate())
2737          throw new Error("Attempt to auto-create StructureDefinition.type");
2738        else if (Configuration.doAutoCreate())
2739          this.type = new UriType(); // bb
2740      return this.type;
2741    }
2742
2743    public boolean hasTypeElement() { 
2744      return this.type != null && !this.type.isEmpty();
2745    }
2746
2747    public boolean hasType() { 
2748      return this.type != null && !this.type.isEmpty();
2749    }
2750
2751    /**
2752     * @param value {@link #type} (The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
2753     */
2754    public StructureDefinition setTypeElement(UriType value) { 
2755      this.type = value;
2756      return this;
2757    }
2758
2759    /**
2760     * @return The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.
2761     */
2762    public String getType() { 
2763      return this.type == null ? null : this.type.getValue();
2764    }
2765
2766    /**
2767     * @param value The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. "string" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.
2768     */
2769    public StructureDefinition setType(String value) { 
2770        if (this.type == null)
2771          this.type = new UriType();
2772        this.type.setValue(value);
2773      return this;
2774    }
2775
2776    /**
2777     * @return {@link #baseDefinition} (An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.). This is the underlying object with id, value and extensions. The accessor "getBaseDefinition" gives direct access to the value
2778     */
2779    public CanonicalType getBaseDefinitionElement() { 
2780      if (this.baseDefinition == null)
2781        if (Configuration.errorOnAutoCreate())
2782          throw new Error("Attempt to auto-create StructureDefinition.baseDefinition");
2783        else if (Configuration.doAutoCreate())
2784          this.baseDefinition = new CanonicalType(); // bb
2785      return this.baseDefinition;
2786    }
2787
2788    public boolean hasBaseDefinitionElement() { 
2789      return this.baseDefinition != null && !this.baseDefinition.isEmpty();
2790    }
2791
2792    public boolean hasBaseDefinition() { 
2793      return this.baseDefinition != null && !this.baseDefinition.isEmpty();
2794    }
2795
2796    /**
2797     * @param value {@link #baseDefinition} (An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.). This is the underlying object with id, value and extensions. The accessor "getBaseDefinition" gives direct access to the value
2798     */
2799    public StructureDefinition setBaseDefinitionElement(CanonicalType value) { 
2800      this.baseDefinition = value;
2801      return this;
2802    }
2803
2804    /**
2805     * @return An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.
2806     */
2807    public String getBaseDefinition() { 
2808      return this.baseDefinition == null ? null : this.baseDefinition.getValue();
2809    }
2810
2811    /**
2812     * @param value An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.
2813     */
2814    public StructureDefinition setBaseDefinition(String value) { 
2815      if (Utilities.noString(value))
2816        this.baseDefinition = null;
2817      else {
2818        if (this.baseDefinition == null)
2819          this.baseDefinition = new CanonicalType();
2820        this.baseDefinition.setValue(value);
2821      }
2822      return this;
2823    }
2824
2825    /**
2826     * @return {@link #derivation} (How the type relates to the baseDefinition.). This is the underlying object with id, value and extensions. The accessor "getDerivation" gives direct access to the value
2827     */
2828    public Enumeration<TypeDerivationRule> getDerivationElement() { 
2829      if (this.derivation == null)
2830        if (Configuration.errorOnAutoCreate())
2831          throw new Error("Attempt to auto-create StructureDefinition.derivation");
2832        else if (Configuration.doAutoCreate())
2833          this.derivation = new Enumeration<TypeDerivationRule>(new TypeDerivationRuleEnumFactory()); // bb
2834      return this.derivation;
2835    }
2836
2837    public boolean hasDerivationElement() { 
2838      return this.derivation != null && !this.derivation.isEmpty();
2839    }
2840
2841    public boolean hasDerivation() { 
2842      return this.derivation != null && !this.derivation.isEmpty();
2843    }
2844
2845    /**
2846     * @param value {@link #derivation} (How the type relates to the baseDefinition.). This is the underlying object with id, value and extensions. The accessor "getDerivation" gives direct access to the value
2847     */
2848    public StructureDefinition setDerivationElement(Enumeration<TypeDerivationRule> value) { 
2849      this.derivation = value;
2850      return this;
2851    }
2852
2853    /**
2854     * @return How the type relates to the baseDefinition.
2855     */
2856    public TypeDerivationRule getDerivation() { 
2857      return this.derivation == null ? null : this.derivation.getValue();
2858    }
2859
2860    /**
2861     * @param value How the type relates to the baseDefinition.
2862     */
2863    public StructureDefinition setDerivation(TypeDerivationRule value) { 
2864      if (value == null)
2865        this.derivation = null;
2866      else {
2867        if (this.derivation == null)
2868          this.derivation = new Enumeration<TypeDerivationRule>(new TypeDerivationRuleEnumFactory());
2869        this.derivation.setValue(value);
2870      }
2871      return this;
2872    }
2873
2874    /**
2875     * @return {@link #snapshot} (A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition.)
2876     */
2877    public StructureDefinitionSnapshotComponent getSnapshot() { 
2878      if (this.snapshot == null)
2879        if (Configuration.errorOnAutoCreate())
2880          throw new Error("Attempt to auto-create StructureDefinition.snapshot");
2881        else if (Configuration.doAutoCreate())
2882          this.snapshot = new StructureDefinitionSnapshotComponent(); // cc
2883      return this.snapshot;
2884    }
2885
2886    public boolean hasSnapshot() { 
2887      return this.snapshot != null && !this.snapshot.isEmpty();
2888    }
2889
2890    /**
2891     * @param value {@link #snapshot} (A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition.)
2892     */
2893    public StructureDefinition setSnapshot(StructureDefinitionSnapshotComponent value) { 
2894      this.snapshot = value;
2895      return this;
2896    }
2897
2898    /**
2899     * @return {@link #differential} (A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies.)
2900     */
2901    public StructureDefinitionDifferentialComponent getDifferential() { 
2902      if (this.differential == null)
2903        if (Configuration.errorOnAutoCreate())
2904          throw new Error("Attempt to auto-create StructureDefinition.differential");
2905        else if (Configuration.doAutoCreate())
2906          this.differential = new StructureDefinitionDifferentialComponent(); // cc
2907      return this.differential;
2908    }
2909
2910    public boolean hasDifferential() { 
2911      return this.differential != null && !this.differential.isEmpty();
2912    }
2913
2914    /**
2915     * @param value {@link #differential} (A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies.)
2916     */
2917    public StructureDefinition setDifferential(StructureDefinitionDifferentialComponent value) { 
2918      this.differential = value;
2919      return this;
2920    }
2921
2922      protected void listChildren(List<Property> children) {
2923        super.listChildren(children);
2924        children.add(new Property("url", "uri", "An absolute URI that is used to identify this structure definition 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 structure definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure definition is stored on different servers.", 0, 1, url));
2925        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this structure definition when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
2926        children.add(new Property("version", "string", "The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition 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));
2927        children.add(new Property("name", "string", "A natural language name identifying the structure definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
2928        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the structure definition.", 0, 1, title));
2929        children.add(new Property("status", "code", "The status of this structure definition. Enables tracking the life-cycle of the content.", 0, 1, status));
2930        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this structure definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
2931        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the structure definition 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 structure definition changes.", 0, 1, date));
2932        children.add(new Property("publisher", "string", "The name of the organization or individual that published the structure definition.", 0, 1, publisher));
2933        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));
2934        children.add(new Property("description", "markdown", "A free text natural language description of the structure definition from a consumer's perspective.", 0, 1, description));
2935        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 structure definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
2936        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the structure definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
2937        children.add(new Property("purpose", "markdown", "Explanation of why this structure definition is needed and why it has been designed as it has.", 0, 1, purpose));
2938        children.add(new Property("copyright", "markdown", "A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition.", 0, 1, copyright));
2939        children.add(new Property("keyword", "Coding", "A set of key words or terms from external terminologies that may be used to assist with indexing and searching of templates nby describing the use of this structure definition, or the content it describes.", 0, java.lang.Integer.MAX_VALUE, keyword));
2940        children.add(new Property("fhirVersion", "code", "The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 5.0.0-snapshot1. for this version.", 0, 1, fhirVersion));
2941        children.add(new Property("mapping", "", "An external specification that the content is mapped to.", 0, java.lang.Integer.MAX_VALUE, mapping));
2942        children.add(new Property("kind", "code", "Defines the kind of structure that this definition is describing.", 0, 1, kind));
2943        children.add(new Property("abstract", "boolean", "Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems.", 0, 1, abstract_));
2944        children.add(new Property("context", "", "Identifies the types of resource or data type elements to which the extension can be applied.", 0, java.lang.Integer.MAX_VALUE, context));
2945        children.add(new Property("contextInvariant", "string", "A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true.", 0, java.lang.Integer.MAX_VALUE, contextInvariant));
2946        children.add(new Property("type", "uri", "The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. \"string\" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.", 0, 1, type));
2947        children.add(new Property("baseDefinition", "canonical(StructureDefinition)", "An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.", 0, 1, baseDefinition));
2948        children.add(new Property("derivation", "code", "How the type relates to the baseDefinition.", 0, 1, derivation));
2949        children.add(new Property("snapshot", "", "A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition.", 0, 1, snapshot));
2950        children.add(new Property("differential", "", "A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies.", 0, 1, differential));
2951      }
2952
2953      @Override
2954      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2955        switch (_hash) {
2956        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this structure definition 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 structure definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the structure definition is stored on different servers.", 0, 1, url);
2957        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this structure definition when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier);
2958        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition 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);
2959        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the structure definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
2960        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the structure definition.", 0, 1, title);
2961        case -892481550: /*status*/  return new Property("status", "code", "The status of this structure definition. Enables tracking the life-cycle of the content.", 0, 1, status);
2962        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this structure definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
2963        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the structure definition 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 structure definition changes.", 0, 1, date);
2964        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the structure definition.", 0, 1, publisher);
2965        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);
2966        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the structure definition from a consumer's perspective.", 0, 1, description);
2967        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 structure definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
2968        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the structure definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
2969        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this structure definition is needed and why it has been designed as it has.", 0, 1, purpose);
2970        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definition.", 0, 1, copyright);
2971        case -814408215: /*keyword*/  return new Property("keyword", "Coding", "A set of key words or terms from external terminologies that may be used to assist with indexing and searching of templates nby describing the use of this structure definition, or the content it describes.", 0, java.lang.Integer.MAX_VALUE, keyword);
2972        case 461006061: /*fhirVersion*/  return new Property("fhirVersion", "code", "The version of the FHIR specification on which this StructureDefinition is based - this is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 5.0.0-snapshot1. for this version.", 0, 1, fhirVersion);
2973        case 837556430: /*mapping*/  return new Property("mapping", "", "An external specification that the content is mapped to.", 0, java.lang.Integer.MAX_VALUE, mapping);
2974        case 3292052: /*kind*/  return new Property("kind", "code", "Defines the kind of structure that this definition is describing.", 0, 1, kind);
2975        case 1732898850: /*abstract*/  return new Property("abstract", "boolean", "Whether structure this definition describes is abstract or not  - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged  between systems.", 0, 1, abstract_);
2976        case 951530927: /*context*/  return new Property("context", "", "Identifies the types of resource or data type elements to which the extension can be applied.", 0, java.lang.Integer.MAX_VALUE, context);
2977        case -802505007: /*contextInvariant*/  return new Property("contextInvariant", "string", "A set of rules as FHIRPath Invariants about when the extension can be used (e.g. co-occurrence variants for the extension). All the rules must be true.", 0, java.lang.Integer.MAX_VALUE, contextInvariant);
2978        case 3575610: /*type*/  return new Property("type", "uri", "The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type).  References are URLs that are relative to http://hl7.org/fhir/StructureDefinition e.g. \"string\" is a reference to http://hl7.org/fhir/StructureDefinition/string. Absolute URLs are only allowed in logical models.", 0, 1, type);
2979        case 1139771140: /*baseDefinition*/  return new Property("baseDefinition", "canonical(StructureDefinition)", "An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.", 0, 1, baseDefinition);
2980        case -1353885513: /*derivation*/  return new Property("derivation", "code", "How the type relates to the baseDefinition.", 0, 1, derivation);
2981        case 284874180: /*snapshot*/  return new Property("snapshot", "", "A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition.", 0, 1, snapshot);
2982        case -1196150917: /*differential*/  return new Property("differential", "", "A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies.", 0, 1, differential);
2983        default: return super.getNamedProperty(_hash, _name, _checkValid);
2984        }
2985
2986      }
2987
2988      @Override
2989      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2990        switch (hash) {
2991        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
2992        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2993        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
2994        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
2995        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
2996        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
2997        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
2998        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
2999        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
3000        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
3001        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
3002        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
3003        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
3004        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
3005        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
3006        case -814408215: /*keyword*/ return this.keyword == null ? new Base[0] : this.keyword.toArray(new Base[this.keyword.size()]); // Coding
3007        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : new Base[] {this.fhirVersion}; // Enumeration<FHIRVersion>
3008        case 837556430: /*mapping*/ return this.mapping == null ? new Base[0] : this.mapping.toArray(new Base[this.mapping.size()]); // StructureDefinitionMappingComponent
3009        case 3292052: /*kind*/ return this.kind == null ? new Base[0] : new Base[] {this.kind}; // Enumeration<StructureDefinitionKind>
3010        case 1732898850: /*abstract*/ return this.abstract_ == null ? new Base[0] : new Base[] {this.abstract_}; // BooleanType
3011        case 951530927: /*context*/ return this.context == null ? new Base[0] : this.context.toArray(new Base[this.context.size()]); // StructureDefinitionContextComponent
3012        case -802505007: /*contextInvariant*/ return this.contextInvariant == null ? new Base[0] : this.contextInvariant.toArray(new Base[this.contextInvariant.size()]); // StringType
3013        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // UriType
3014        case 1139771140: /*baseDefinition*/ return this.baseDefinition == null ? new Base[0] : new Base[] {this.baseDefinition}; // CanonicalType
3015        case -1353885513: /*derivation*/ return this.derivation == null ? new Base[0] : new Base[] {this.derivation}; // Enumeration<TypeDerivationRule>
3016        case 284874180: /*snapshot*/ return this.snapshot == null ? new Base[0] : new Base[] {this.snapshot}; // StructureDefinitionSnapshotComponent
3017        case -1196150917: /*differential*/ return this.differential == null ? new Base[0] : new Base[] {this.differential}; // StructureDefinitionDifferentialComponent
3018        default: return super.getProperty(hash, name, checkValid);
3019        }
3020
3021      }
3022
3023      @Override
3024      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3025        switch (hash) {
3026        case 116079: // url
3027          this.url = TypeConvertor.castToUri(value); // UriType
3028          return value;
3029        case -1618432855: // identifier
3030          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
3031          return value;
3032        case 351608024: // version
3033          this.version = TypeConvertor.castToString(value); // StringType
3034          return value;
3035        case 3373707: // name
3036          this.name = TypeConvertor.castToString(value); // StringType
3037          return value;
3038        case 110371416: // title
3039          this.title = TypeConvertor.castToString(value); // StringType
3040          return value;
3041        case -892481550: // status
3042          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3043          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3044          return value;
3045        case -404562712: // experimental
3046          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3047          return value;
3048        case 3076014: // date
3049          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3050          return value;
3051        case 1447404028: // publisher
3052          this.publisher = TypeConvertor.castToString(value); // StringType
3053          return value;
3054        case 951526432: // contact
3055          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3056          return value;
3057        case -1724546052: // description
3058          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3059          return value;
3060        case -669707736: // useContext
3061          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
3062          return value;
3063        case -507075711: // jurisdiction
3064          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3065          return value;
3066        case -220463842: // purpose
3067          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3068          return value;
3069        case 1522889671: // copyright
3070          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
3071          return value;
3072        case -814408215: // keyword
3073          this.getKeyword().add(TypeConvertor.castToCoding(value)); // Coding
3074          return value;
3075        case 461006061: // fhirVersion
3076          value = new FHIRVersionEnumFactory().fromType(TypeConvertor.castToCode(value));
3077          this.fhirVersion = (Enumeration) value; // Enumeration<FHIRVersion>
3078          return value;
3079        case 837556430: // mapping
3080          this.getMapping().add((StructureDefinitionMappingComponent) value); // StructureDefinitionMappingComponent
3081          return value;
3082        case 3292052: // kind
3083          value = new StructureDefinitionKindEnumFactory().fromType(TypeConvertor.castToCode(value));
3084          this.kind = (Enumeration) value; // Enumeration<StructureDefinitionKind>
3085          return value;
3086        case 1732898850: // abstract
3087          this.abstract_ = TypeConvertor.castToBoolean(value); // BooleanType
3088          return value;
3089        case 951530927: // context
3090          this.getContext().add((StructureDefinitionContextComponent) value); // StructureDefinitionContextComponent
3091          return value;
3092        case -802505007: // contextInvariant
3093          this.getContextInvariant().add(TypeConvertor.castToString(value)); // StringType
3094          return value;
3095        case 3575610: // type
3096          this.type = TypeConvertor.castToUri(value); // UriType
3097          return value;
3098        case 1139771140: // baseDefinition
3099          this.baseDefinition = TypeConvertor.castToCanonical(value); // CanonicalType
3100          return value;
3101        case -1353885513: // derivation
3102          value = new TypeDerivationRuleEnumFactory().fromType(TypeConvertor.castToCode(value));
3103          this.derivation = (Enumeration) value; // Enumeration<TypeDerivationRule>
3104          return value;
3105        case 284874180: // snapshot
3106          this.snapshot = (StructureDefinitionSnapshotComponent) value; // StructureDefinitionSnapshotComponent
3107          return value;
3108        case -1196150917: // differential
3109          this.differential = (StructureDefinitionDifferentialComponent) value; // StructureDefinitionDifferentialComponent
3110          return value;
3111        default: return super.setProperty(hash, name, value);
3112        }
3113
3114      }
3115
3116      @Override
3117      public Base setProperty(String name, Base value) throws FHIRException {
3118        if (name.equals("url")) {
3119          this.url = TypeConvertor.castToUri(value); // UriType
3120        } else if (name.equals("identifier")) {
3121          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
3122        } else if (name.equals("version")) {
3123          this.version = TypeConvertor.castToString(value); // StringType
3124        } else if (name.equals("name")) {
3125          this.name = TypeConvertor.castToString(value); // StringType
3126        } else if (name.equals("title")) {
3127          this.title = TypeConvertor.castToString(value); // StringType
3128        } else if (name.equals("status")) {
3129          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3130          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3131        } else if (name.equals("experimental")) {
3132          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3133        } else if (name.equals("date")) {
3134          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3135        } else if (name.equals("publisher")) {
3136          this.publisher = TypeConvertor.castToString(value); // StringType
3137        } else if (name.equals("contact")) {
3138          this.getContact().add(TypeConvertor.castToContactDetail(value));
3139        } else if (name.equals("description")) {
3140          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3141        } else if (name.equals("useContext")) {
3142          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
3143        } else if (name.equals("jurisdiction")) {
3144          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
3145        } else if (name.equals("purpose")) {
3146          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3147        } else if (name.equals("copyright")) {
3148          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
3149        } else if (name.equals("keyword")) {
3150          this.getKeyword().add(TypeConvertor.castToCoding(value));
3151        } else if (name.equals("fhirVersion")) {
3152          value = new FHIRVersionEnumFactory().fromType(TypeConvertor.castToCode(value));
3153          this.fhirVersion = (Enumeration) value; // Enumeration<FHIRVersion>
3154        } else if (name.equals("mapping")) {
3155          this.getMapping().add((StructureDefinitionMappingComponent) value);
3156        } else if (name.equals("kind")) {
3157          value = new StructureDefinitionKindEnumFactory().fromType(TypeConvertor.castToCode(value));
3158          this.kind = (Enumeration) value; // Enumeration<StructureDefinitionKind>
3159        } else if (name.equals("abstract")) {
3160          this.abstract_ = TypeConvertor.castToBoolean(value); // BooleanType
3161        } else if (name.equals("context")) {
3162          this.getContext().add((StructureDefinitionContextComponent) value);
3163        } else if (name.equals("contextInvariant")) {
3164          this.getContextInvariant().add(TypeConvertor.castToString(value));
3165        } else if (name.equals("type")) {
3166          this.type = TypeConvertor.castToUri(value); // UriType
3167        } else if (name.equals("baseDefinition")) {
3168          this.baseDefinition = TypeConvertor.castToCanonical(value); // CanonicalType
3169        } else if (name.equals("derivation")) {
3170          value = new TypeDerivationRuleEnumFactory().fromType(TypeConvertor.castToCode(value));
3171          this.derivation = (Enumeration) value; // Enumeration<TypeDerivationRule>
3172        } else if (name.equals("snapshot")) {
3173          this.snapshot = (StructureDefinitionSnapshotComponent) value; // StructureDefinitionSnapshotComponent
3174        } else if (name.equals("differential")) {
3175          this.differential = (StructureDefinitionDifferentialComponent) value; // StructureDefinitionDifferentialComponent
3176        } else
3177          return super.setProperty(name, value);
3178        return value;
3179      }
3180
3181      @Override
3182      public Base makeProperty(int hash, String name) throws FHIRException {
3183        switch (hash) {
3184        case 116079:  return getUrlElement();
3185        case -1618432855:  return addIdentifier(); 
3186        case 351608024:  return getVersionElement();
3187        case 3373707:  return getNameElement();
3188        case 110371416:  return getTitleElement();
3189        case -892481550:  return getStatusElement();
3190        case -404562712:  return getExperimentalElement();
3191        case 3076014:  return getDateElement();
3192        case 1447404028:  return getPublisherElement();
3193        case 951526432:  return addContact(); 
3194        case -1724546052:  return getDescriptionElement();
3195        case -669707736:  return addUseContext(); 
3196        case -507075711:  return addJurisdiction(); 
3197        case -220463842:  return getPurposeElement();
3198        case 1522889671:  return getCopyrightElement();
3199        case -814408215:  return addKeyword(); 
3200        case 461006061:  return getFhirVersionElement();
3201        case 837556430:  return addMapping(); 
3202        case 3292052:  return getKindElement();
3203        case 1732898850:  return getAbstractElement();
3204        case 951530927:  return addContext(); 
3205        case -802505007:  return addContextInvariantElement();
3206        case 3575610:  return getTypeElement();
3207        case 1139771140:  return getBaseDefinitionElement();
3208        case -1353885513:  return getDerivationElement();
3209        case 284874180:  return getSnapshot();
3210        case -1196150917:  return getDifferential();
3211        default: return super.makeProperty(hash, name);
3212        }
3213
3214      }
3215
3216      @Override
3217      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3218        switch (hash) {
3219        case 116079: /*url*/ return new String[] {"uri"};
3220        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
3221        case 351608024: /*version*/ return new String[] {"string"};
3222        case 3373707: /*name*/ return new String[] {"string"};
3223        case 110371416: /*title*/ return new String[] {"string"};
3224        case -892481550: /*status*/ return new String[] {"code"};
3225        case -404562712: /*experimental*/ return new String[] {"boolean"};
3226        case 3076014: /*date*/ return new String[] {"dateTime"};
3227        case 1447404028: /*publisher*/ return new String[] {"string"};
3228        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
3229        case -1724546052: /*description*/ return new String[] {"markdown"};
3230        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
3231        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
3232        case -220463842: /*purpose*/ return new String[] {"markdown"};
3233        case 1522889671: /*copyright*/ return new String[] {"markdown"};
3234        case -814408215: /*keyword*/ return new String[] {"Coding"};
3235        case 461006061: /*fhirVersion*/ return new String[] {"code"};
3236        case 837556430: /*mapping*/ return new String[] {};
3237        case 3292052: /*kind*/ return new String[] {"code"};
3238        case 1732898850: /*abstract*/ return new String[] {"boolean"};
3239        case 951530927: /*context*/ return new String[] {};
3240        case -802505007: /*contextInvariant*/ return new String[] {"string"};
3241        case 3575610: /*type*/ return new String[] {"uri"};
3242        case 1139771140: /*baseDefinition*/ return new String[] {"canonical"};
3243        case -1353885513: /*derivation*/ return new String[] {"code"};
3244        case 284874180: /*snapshot*/ return new String[] {};
3245        case -1196150917: /*differential*/ return new String[] {};
3246        default: return super.getTypesForProperty(hash, name);
3247        }
3248
3249      }
3250
3251      @Override
3252      public Base addChild(String name) throws FHIRException {
3253        if (name.equals("url")) {
3254          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.url");
3255        }
3256        else if (name.equals("identifier")) {
3257          return addIdentifier();
3258        }
3259        else if (name.equals("version")) {
3260          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.version");
3261        }
3262        else if (name.equals("name")) {
3263          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.name");
3264        }
3265        else if (name.equals("title")) {
3266          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.title");
3267        }
3268        else if (name.equals("status")) {
3269          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.status");
3270        }
3271        else if (name.equals("experimental")) {
3272          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.experimental");
3273        }
3274        else if (name.equals("date")) {
3275          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.date");
3276        }
3277        else if (name.equals("publisher")) {
3278          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.publisher");
3279        }
3280        else if (name.equals("contact")) {
3281          return addContact();
3282        }
3283        else if (name.equals("description")) {
3284          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.description");
3285        }
3286        else if (name.equals("useContext")) {
3287          return addUseContext();
3288        }
3289        else if (name.equals("jurisdiction")) {
3290          return addJurisdiction();
3291        }
3292        else if (name.equals("purpose")) {
3293          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.purpose");
3294        }
3295        else if (name.equals("copyright")) {
3296          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.copyright");
3297        }
3298        else if (name.equals("keyword")) {
3299          return addKeyword();
3300        }
3301        else if (name.equals("fhirVersion")) {
3302          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.fhirVersion");
3303        }
3304        else if (name.equals("mapping")) {
3305          return addMapping();
3306        }
3307        else if (name.equals("kind")) {
3308          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.kind");
3309        }
3310        else if (name.equals("abstract")) {
3311          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.abstract");
3312        }
3313        else if (name.equals("context")) {
3314          return addContext();
3315        }
3316        else if (name.equals("contextInvariant")) {
3317          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.contextInvariant");
3318        }
3319        else if (name.equals("type")) {
3320          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.type");
3321        }
3322        else if (name.equals("baseDefinition")) {
3323          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.baseDefinition");
3324        }
3325        else if (name.equals("derivation")) {
3326          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.derivation");
3327        }
3328        else if (name.equals("snapshot")) {
3329          this.snapshot = new StructureDefinitionSnapshotComponent();
3330          return this.snapshot;
3331        }
3332        else if (name.equals("differential")) {
3333          this.differential = new StructureDefinitionDifferentialComponent();
3334          return this.differential;
3335        }
3336        else
3337          return super.addChild(name);
3338      }
3339
3340  public String fhirType() {
3341    return "StructureDefinition";
3342
3343  }
3344
3345      public StructureDefinition copy() {
3346        StructureDefinition dst = new StructureDefinition();
3347        copyValues(dst);
3348        return dst;
3349      }
3350
3351      public void copyValues(StructureDefinition dst) {
3352        super.copyValues(dst);
3353        dst.url = url == null ? null : url.copy();
3354        if (identifier != null) {
3355          dst.identifier = new ArrayList<Identifier>();
3356          for (Identifier i : identifier)
3357            dst.identifier.add(i.copy());
3358        };
3359        dst.version = version == null ? null : version.copy();
3360        dst.name = name == null ? null : name.copy();
3361        dst.title = title == null ? null : title.copy();
3362        dst.status = status == null ? null : status.copy();
3363        dst.experimental = experimental == null ? null : experimental.copy();
3364        dst.date = date == null ? null : date.copy();
3365        dst.publisher = publisher == null ? null : publisher.copy();
3366        if (contact != null) {
3367          dst.contact = new ArrayList<ContactDetail>();
3368          for (ContactDetail i : contact)
3369            dst.contact.add(i.copy());
3370        };
3371        dst.description = description == null ? null : description.copy();
3372        if (useContext != null) {
3373          dst.useContext = new ArrayList<UsageContext>();
3374          for (UsageContext i : useContext)
3375            dst.useContext.add(i.copy());
3376        };
3377        if (jurisdiction != null) {
3378          dst.jurisdiction = new ArrayList<CodeableConcept>();
3379          for (CodeableConcept i : jurisdiction)
3380            dst.jurisdiction.add(i.copy());
3381        };
3382        dst.purpose = purpose == null ? null : purpose.copy();
3383        dst.copyright = copyright == null ? null : copyright.copy();
3384        if (keyword != null) {
3385          dst.keyword = new ArrayList<Coding>();
3386          for (Coding i : keyword)
3387            dst.keyword.add(i.copy());
3388        };
3389        dst.fhirVersion = fhirVersion == null ? null : fhirVersion.copy();
3390        if (mapping != null) {
3391          dst.mapping = new ArrayList<StructureDefinitionMappingComponent>();
3392          for (StructureDefinitionMappingComponent i : mapping)
3393            dst.mapping.add(i.copy());
3394        };
3395        dst.kind = kind == null ? null : kind.copy();
3396        dst.abstract_ = abstract_ == null ? null : abstract_.copy();
3397        if (context != null) {
3398          dst.context = new ArrayList<StructureDefinitionContextComponent>();
3399          for (StructureDefinitionContextComponent i : context)
3400            dst.context.add(i.copy());
3401        };
3402        if (contextInvariant != null) {
3403          dst.contextInvariant = new ArrayList<StringType>();
3404          for (StringType i : contextInvariant)
3405            dst.contextInvariant.add(i.copy());
3406        };
3407        dst.type = type == null ? null : type.copy();
3408        dst.baseDefinition = baseDefinition == null ? null : baseDefinition.copy();
3409        dst.derivation = derivation == null ? null : derivation.copy();
3410        dst.snapshot = snapshot == null ? null : snapshot.copy();
3411        dst.differential = differential == null ? null : differential.copy();
3412      }
3413
3414      protected StructureDefinition typedCopy() {
3415        return copy();
3416      }
3417
3418      @Override
3419      public boolean equalsDeep(Base other_) {
3420        if (!super.equalsDeep(other_))
3421          return false;
3422        if (!(other_ instanceof StructureDefinition))
3423          return false;
3424        StructureDefinition o = (StructureDefinition) other_;
3425        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
3426           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(status, o.status, true)
3427           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
3428           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
3429           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true)
3430           && compareDeep(keyword, o.keyword, true) && compareDeep(fhirVersion, o.fhirVersion, true) && compareDeep(mapping, o.mapping, true)
3431           && compareDeep(kind, o.kind, true) && compareDeep(abstract_, o.abstract_, true) && compareDeep(context, o.context, true)
3432           && compareDeep(contextInvariant, o.contextInvariant, true) && compareDeep(type, o.type, true) && compareDeep(baseDefinition, o.baseDefinition, true)
3433           && compareDeep(derivation, o.derivation, true) && compareDeep(snapshot, o.snapshot, true) && compareDeep(differential, o.differential, true)
3434          ;
3435      }
3436
3437      @Override
3438      public boolean equalsShallow(Base other_) {
3439        if (!super.equalsShallow(other_))
3440          return false;
3441        if (!(other_ instanceof StructureDefinition))
3442          return false;
3443        StructureDefinition o = (StructureDefinition) other_;
3444        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
3445           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
3446           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
3447           && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true) && compareValues(fhirVersion, o.fhirVersion, true)
3448           && compareValues(kind, o.kind, true) && compareValues(abstract_, o.abstract_, true) && compareValues(contextInvariant, o.contextInvariant, true)
3449           && compareValues(type, o.type, true) && compareValues(baseDefinition, o.baseDefinition, true) && compareValues(derivation, o.derivation, true)
3450          ;
3451      }
3452
3453      public boolean isEmpty() {
3454        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
3455          , name, title, status, experimental, date, publisher, contact, description, useContext
3456          , jurisdiction, purpose, copyright, keyword, fhirVersion, mapping, kind, abstract_
3457          , context, contextInvariant, type, baseDefinition, derivation, snapshot, differential
3458          );
3459      }
3460
3461  @Override
3462  public ResourceType getResourceType() {
3463    return ResourceType.StructureDefinition;
3464   }
3465
3466 /**
3467   * Search parameter: <b>abstract</b>
3468   * <p>
3469   * Description: <b>Whether the structure is abstract</b><br>
3470   * Type: <b>token</b><br>
3471   * Path: <b>StructureDefinition.abstract</b><br>
3472   * </p>
3473   */
3474  @SearchParamDefinition(name="abstract", path="StructureDefinition.abstract", description="Whether the structure is abstract", type="token" )
3475  public static final String SP_ABSTRACT = "abstract";
3476 /**
3477   * <b>Fluent Client</b> search parameter constant for <b>abstract</b>
3478   * <p>
3479   * Description: <b>Whether the structure is abstract</b><br>
3480   * Type: <b>token</b><br>
3481   * Path: <b>StructureDefinition.abstract</b><br>
3482   * </p>
3483   */
3484  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ABSTRACT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ABSTRACT);
3485
3486 /**
3487   * Search parameter: <b>base-path</b>
3488   * <p>
3489   * Description: <b>Path that identifies the base element</b><br>
3490   * Type: <b>token</b><br>
3491   * Path: <b>StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path</b><br>
3492   * </p>
3493   */
3494  @SearchParamDefinition(name="base-path", path="StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path", description="Path that identifies the base element", type="token" )
3495  public static final String SP_BASE_PATH = "base-path";
3496 /**
3497   * <b>Fluent Client</b> search parameter constant for <b>base-path</b>
3498   * <p>
3499   * Description: <b>Path that identifies the base element</b><br>
3500   * Type: <b>token</b><br>
3501   * Path: <b>StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path</b><br>
3502   * </p>
3503   */
3504  public static final ca.uhn.fhir.rest.gclient.TokenClientParam BASE_PATH = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_BASE_PATH);
3505
3506 /**
3507   * Search parameter: <b>base</b>
3508   * <p>
3509   * Description: <b>Definition that this type is constrained/specialized from</b><br>
3510   * Type: <b>reference</b><br>
3511   * Path: <b>StructureDefinition.baseDefinition</b><br>
3512   * </p>
3513   */
3514  @SearchParamDefinition(name="base", path="StructureDefinition.baseDefinition", description="Definition that this type is constrained/specialized from", type="reference", target={StructureDefinition.class } )
3515  public static final String SP_BASE = "base";
3516 /**
3517   * <b>Fluent Client</b> search parameter constant for <b>base</b>
3518   * <p>
3519   * Description: <b>Definition that this type is constrained/specialized from</b><br>
3520   * Type: <b>reference</b><br>
3521   * Path: <b>StructureDefinition.baseDefinition</b><br>
3522   * </p>
3523   */
3524  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASE);
3525
3526/**
3527   * Constant for fluent queries to be used to add include statements. Specifies
3528   * the path value of "<b>StructureDefinition:base</b>".
3529   */
3530  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASE = new ca.uhn.fhir.model.api.Include("StructureDefinition:base").toLocked();
3531
3532 /**
3533   * Search parameter: <b>derivation</b>
3534   * <p>
3535   * Description: <b>specialization | constraint - How relates to base definition</b><br>
3536   * Type: <b>token</b><br>
3537   * Path: <b>StructureDefinition.derivation</b><br>
3538   * </p>
3539   */
3540  @SearchParamDefinition(name="derivation", path="StructureDefinition.derivation", description="specialization | constraint - How relates to base definition", type="token" )
3541  public static final String SP_DERIVATION = "derivation";
3542 /**
3543   * <b>Fluent Client</b> search parameter constant for <b>derivation</b>
3544   * <p>
3545   * Description: <b>specialization | constraint - How relates to base definition</b><br>
3546   * Type: <b>token</b><br>
3547   * Path: <b>StructureDefinition.derivation</b><br>
3548   * </p>
3549   */
3550  public static final ca.uhn.fhir.rest.gclient.TokenClientParam DERIVATION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_DERIVATION);
3551
3552 /**
3553   * Search parameter: <b>experimental</b>
3554   * <p>
3555   * Description: <b>For testing purposes, not real usage</b><br>
3556   * Type: <b>token</b><br>
3557   * Path: <b>StructureDefinition.experimental</b><br>
3558   * </p>
3559   */
3560  @SearchParamDefinition(name="experimental", path="StructureDefinition.experimental", description="For testing purposes, not real usage", type="token" )
3561  public static final String SP_EXPERIMENTAL = "experimental";
3562 /**
3563   * <b>Fluent Client</b> search parameter constant for <b>experimental</b>
3564   * <p>
3565   * Description: <b>For testing purposes, not real usage</b><br>
3566   * Type: <b>token</b><br>
3567   * Path: <b>StructureDefinition.experimental</b><br>
3568   * </p>
3569   */
3570  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EXPERIMENTAL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EXPERIMENTAL);
3571
3572 /**
3573   * Search parameter: <b>ext-context</b>
3574   * <p>
3575   * Description: <b>The system is the URL for the context-type: e.g. http://hl7.org/fhir/extension-context-type#element|CodeableConcept.text</b><br>
3576   * Type: <b>token</b><br>
3577   * Path: <b>StructureDefinition.context</b><br>
3578   * </p>
3579   */
3580  @SearchParamDefinition(name="ext-context", path="StructureDefinition.context", description="The system is the URL for the context-type: e.g. http://hl7.org/fhir/extension-context-type#element|CodeableConcept.text", type="token" )
3581  public static final String SP_EXT_CONTEXT = "ext-context";
3582 /**
3583   * <b>Fluent Client</b> search parameter constant for <b>ext-context</b>
3584   * <p>
3585   * Description: <b>The system is the URL for the context-type: e.g. http://hl7.org/fhir/extension-context-type#element|CodeableConcept.text</b><br>
3586   * Type: <b>token</b><br>
3587   * Path: <b>StructureDefinition.context</b><br>
3588   * </p>
3589   */
3590  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EXT_CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EXT_CONTEXT);
3591
3592 /**
3593   * Search parameter: <b>keyword</b>
3594   * <p>
3595   * Description: <b>A code for the StructureDefinition</b><br>
3596   * Type: <b>token</b><br>
3597   * Path: <b>StructureDefinition.keyword</b><br>
3598   * </p>
3599   */
3600  @SearchParamDefinition(name="keyword", path="StructureDefinition.keyword", description="A code for the StructureDefinition", type="token" )
3601  public static final String SP_KEYWORD = "keyword";
3602 /**
3603   * <b>Fluent Client</b> search parameter constant for <b>keyword</b>
3604   * <p>
3605   * Description: <b>A code for the StructureDefinition</b><br>
3606   * Type: <b>token</b><br>
3607   * Path: <b>StructureDefinition.keyword</b><br>
3608   * </p>
3609   */
3610  public static final ca.uhn.fhir.rest.gclient.TokenClientParam KEYWORD = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_KEYWORD);
3611
3612 /**
3613   * Search parameter: <b>kind</b>
3614   * <p>
3615   * Description: <b>primitive-type | complex-type | resource | logical</b><br>
3616   * Type: <b>token</b><br>
3617   * Path: <b>StructureDefinition.kind</b><br>
3618   * </p>
3619   */
3620  @SearchParamDefinition(name="kind", path="StructureDefinition.kind", description="primitive-type | complex-type | resource | logical", type="token" )
3621  public static final String SP_KIND = "kind";
3622 /**
3623   * <b>Fluent Client</b> search parameter constant for <b>kind</b>
3624   * <p>
3625   * Description: <b>primitive-type | complex-type | resource | logical</b><br>
3626   * Type: <b>token</b><br>
3627   * Path: <b>StructureDefinition.kind</b><br>
3628   * </p>
3629   */
3630  public static final ca.uhn.fhir.rest.gclient.TokenClientParam KIND = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_KIND);
3631
3632 /**
3633   * Search parameter: <b>path</b>
3634   * <p>
3635   * Description: <b>A path that is constrained in the StructureDefinition</b><br>
3636   * Type: <b>token</b><br>
3637   * Path: <b>StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path</b><br>
3638   * </p>
3639   */
3640  @SearchParamDefinition(name="path", path="StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path", description="A path that is constrained in the StructureDefinition", type="token" )
3641  public static final String SP_PATH = "path";
3642 /**
3643   * <b>Fluent Client</b> search parameter constant for <b>path</b>
3644   * <p>
3645   * Description: <b>A path that is constrained in the StructureDefinition</b><br>
3646   * Type: <b>token</b><br>
3647   * Path: <b>StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path</b><br>
3648   * </p>
3649   */
3650  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PATH = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PATH);
3651
3652 /**
3653   * Search parameter: <b>type</b>
3654   * <p>
3655   * Description: <b>Type defined or constrained by this structure</b><br>
3656   * Type: <b>uri</b><br>
3657   * Path: <b>StructureDefinition.type</b><br>
3658   * </p>
3659   */
3660  @SearchParamDefinition(name="type", path="StructureDefinition.type", description="Type defined or constrained by this structure", type="uri" )
3661  public static final String SP_TYPE = "type";
3662 /**
3663   * <b>Fluent Client</b> search parameter constant for <b>type</b>
3664   * <p>
3665   * Description: <b>Type defined or constrained by this structure</b><br>
3666   * Type: <b>uri</b><br>
3667   * Path: <b>StructureDefinition.type</b><br>
3668   * </p>
3669   */
3670  public static final ca.uhn.fhir.rest.gclient.UriClientParam TYPE = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_TYPE);
3671
3672 /**
3673   * Search parameter: <b>valueset</b>
3674   * <p>
3675   * Description: <b>A vocabulary binding reference</b><br>
3676   * Type: <b>reference</b><br>
3677   * Path: <b>StructureDefinition.snapshot.element.binding.valueSet</b><br>
3678   * </p>
3679   */
3680  @SearchParamDefinition(name="valueset", path="StructureDefinition.snapshot.element.binding.valueSet", description="A vocabulary binding reference", type="reference", target={ValueSet.class } )
3681  public static final String SP_VALUESET = "valueset";
3682 /**
3683   * <b>Fluent Client</b> search parameter constant for <b>valueset</b>
3684   * <p>
3685   * Description: <b>A vocabulary binding reference</b><br>
3686   * Type: <b>reference</b><br>
3687   * Path: <b>StructureDefinition.snapshot.element.binding.valueSet</b><br>
3688   * </p>
3689   */
3690  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam VALUESET = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_VALUESET);
3691
3692/**
3693   * Constant for fluent queries to be used to add include statements. Specifies
3694   * the path value of "<b>StructureDefinition:valueset</b>".
3695   */
3696  public static final ca.uhn.fhir.model.api.Include INCLUDE_VALUESET = new ca.uhn.fhir.model.api.Include("StructureDefinition:valueset").toLocked();
3697
3698 /**
3699   * Search parameter: <b>context-quantity</b>
3700   * <p>
3701   * Description: <b>Multiple Resources: 
3702
3703* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3704* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3705* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3706* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3707* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3708* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3709* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3710* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3711* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3712* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3713* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3714* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3715* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3716* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3717</b><br>
3718   * Type: <b>quantity</b><br>
3719   * 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>
3720   * </p>
3721   */
3722  @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" )
3723  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
3724 /**
3725   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
3726   * <p>
3727   * Description: <b>Multiple Resources: 
3728
3729* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3730* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3731* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3732* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3733* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3734* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3735* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3736* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3737* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3738* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3739* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3740* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3741* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3742* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3743</b><br>
3744   * Type: <b>quantity</b><br>
3745   * 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>
3746   * </p>
3747   */
3748  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
3749
3750 /**
3751   * Search parameter: <b>context-type-quantity</b>
3752   * <p>
3753   * Description: <b>Multiple Resources: 
3754
3755* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3756* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3757* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3758* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3759* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3760* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3761* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3762* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3763* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3764* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3765* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3766* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3767* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3768* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3769</b><br>
3770   * Type: <b>composite</b><br>
3771   * 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>
3772   * </p>
3773   */
3774  @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"} )
3775  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
3776 /**
3777   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
3778   * <p>
3779   * Description: <b>Multiple Resources: 
3780
3781* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3782* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3783* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3784* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3785* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3786* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3787* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3788* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3789* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3790* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3791* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3792* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3793* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3794* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3795</b><br>
3796   * Type: <b>composite</b><br>
3797   * 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>
3798   * </p>
3799   */
3800  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);
3801
3802 /**
3803   * Search parameter: <b>context-type-value</b>
3804   * <p>
3805   * Description: <b>Multiple Resources: 
3806
3807* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3808* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3809* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3810* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3811* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3812* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3813* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3814* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3815* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3816* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3817* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3818* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3819* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3820* [ValueSet](valueset.html): A use context type and value assigned to the value set
3821</b><br>
3822   * Type: <b>composite</b><br>
3823   * 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>
3824   * </p>
3825   */
3826  @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"} )
3827  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
3828 /**
3829   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
3830   * <p>
3831   * Description: <b>Multiple Resources: 
3832
3833* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3834* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3835* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3836* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3837* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3838* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3839* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3840* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3841* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3842* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3843* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3844* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3845* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3846* [ValueSet](valueset.html): A use context type and value assigned to the value set
3847</b><br>
3848   * Type: <b>composite</b><br>
3849   * 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>
3850   * </p>
3851   */
3852  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);
3853
3854 /**
3855   * Search parameter: <b>context-type</b>
3856   * <p>
3857   * Description: <b>Multiple Resources: 
3858
3859* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3860* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3861* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3862* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3863* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3864* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3865* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3866* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3867* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3868* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3869* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3870* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3871* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3872* [ValueSet](valueset.html): A type of use context assigned to the value set
3873</b><br>
3874   * Type: <b>token</b><br>
3875   * 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>
3876   * </p>
3877   */
3878  @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" )
3879  public static final String SP_CONTEXT_TYPE = "context-type";
3880 /**
3881   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
3882   * <p>
3883   * Description: <b>Multiple Resources: 
3884
3885* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3886* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3887* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3888* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3889* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3890* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3891* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3892* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3893* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3894* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3895* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3896* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3897* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3898* [ValueSet](valueset.html): A type of use context assigned to the value set
3899</b><br>
3900   * Type: <b>token</b><br>
3901   * 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>
3902   * </p>
3903   */
3904  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
3905
3906 /**
3907   * Search parameter: <b>context</b>
3908   * <p>
3909   * Description: <b>Multiple Resources: 
3910
3911* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3912* [CodeSystem](codesystem.html): A use context assigned to the code system
3913* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3914* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3915* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3916* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3917* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3918* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3919* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3920* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3921* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3922* [StructureMap](structuremap.html): A use context assigned to the structure map
3923* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3924* [ValueSet](valueset.html): A use context assigned to the value set
3925</b><br>
3926   * Type: <b>token</b><br>
3927   * 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>
3928   * </p>
3929   */
3930  @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" )
3931  public static final String SP_CONTEXT = "context";
3932 /**
3933   * <b>Fluent Client</b> search parameter constant for <b>context</b>
3934   * <p>
3935   * Description: <b>Multiple Resources: 
3936
3937* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3938* [CodeSystem](codesystem.html): A use context assigned to the code system
3939* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3940* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3941* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3942* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3943* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3944* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3945* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3946* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3947* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3948* [StructureMap](structuremap.html): A use context assigned to the structure map
3949* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3950* [ValueSet](valueset.html): A use context assigned to the value set
3951</b><br>
3952   * Type: <b>token</b><br>
3953   * 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>
3954   * </p>
3955   */
3956  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
3957
3958 /**
3959   * Search parameter: <b>date</b>
3960   * <p>
3961   * Description: <b>Multiple Resources: 
3962
3963* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3964* [CodeSystem](codesystem.html): The code system publication date
3965* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3966* [ConceptMap](conceptmap.html): The concept map publication date
3967* [GraphDefinition](graphdefinition.html): The graph definition publication date
3968* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3969* [MessageDefinition](messagedefinition.html): The message definition publication date
3970* [NamingSystem](namingsystem.html): The naming system publication date
3971* [OperationDefinition](operationdefinition.html): The operation definition publication date
3972* [SearchParameter](searchparameter.html): The search parameter publication date
3973* [StructureDefinition](structuredefinition.html): The structure definition publication date
3974* [StructureMap](structuremap.html): The structure map publication date
3975* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3976* [ValueSet](valueset.html): The value set publication date
3977</b><br>
3978   * Type: <b>date</b><br>
3979   * 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>
3980   * </p>
3981   */
3982  @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" )
3983  public static final String SP_DATE = "date";
3984 /**
3985   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3986   * <p>
3987   * Description: <b>Multiple Resources: 
3988
3989* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3990* [CodeSystem](codesystem.html): The code system publication date
3991* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3992* [ConceptMap](conceptmap.html): The concept map publication date
3993* [GraphDefinition](graphdefinition.html): The graph definition publication date
3994* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3995* [MessageDefinition](messagedefinition.html): The message definition publication date
3996* [NamingSystem](namingsystem.html): The naming system publication date
3997* [OperationDefinition](operationdefinition.html): The operation definition publication date
3998* [SearchParameter](searchparameter.html): The search parameter publication date
3999* [StructureDefinition](structuredefinition.html): The structure definition publication date
4000* [StructureMap](structuremap.html): The structure map publication date
4001* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4002* [ValueSet](valueset.html): The value set publication date
4003</b><br>
4004   * Type: <b>date</b><br>
4005   * 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>
4006   * </p>
4007   */
4008  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4009
4010 /**
4011   * Search parameter: <b>description</b>
4012   * <p>
4013   * Description: <b>Multiple Resources: 
4014
4015* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4016* [CodeSystem](codesystem.html): The description of the code system
4017* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4018* [ConceptMap](conceptmap.html): The description of the concept map
4019* [GraphDefinition](graphdefinition.html): The description of the graph definition
4020* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4021* [MessageDefinition](messagedefinition.html): The description of the message definition
4022* [NamingSystem](namingsystem.html): The description of the naming system
4023* [OperationDefinition](operationdefinition.html): The description of the operation definition
4024* [SearchParameter](searchparameter.html): The description of the search parameter
4025* [StructureDefinition](structuredefinition.html): The description of the structure definition
4026* [StructureMap](structuremap.html): The description of the structure map
4027* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4028* [ValueSet](valueset.html): The description of the value set
4029</b><br>
4030   * Type: <b>string</b><br>
4031   * 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>
4032   * </p>
4033   */
4034  @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" )
4035  public static final String SP_DESCRIPTION = "description";
4036 /**
4037   * <b>Fluent Client</b> search parameter constant for <b>description</b>
4038   * <p>
4039   * Description: <b>Multiple Resources: 
4040
4041* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4042* [CodeSystem](codesystem.html): The description of the code system
4043* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4044* [ConceptMap](conceptmap.html): The description of the concept map
4045* [GraphDefinition](graphdefinition.html): The description of the graph definition
4046* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4047* [MessageDefinition](messagedefinition.html): The description of the message definition
4048* [NamingSystem](namingsystem.html): The description of the naming system
4049* [OperationDefinition](operationdefinition.html): The description of the operation definition
4050* [SearchParameter](searchparameter.html): The description of the search parameter
4051* [StructureDefinition](structuredefinition.html): The description of the structure definition
4052* [StructureMap](structuremap.html): The description of the structure map
4053* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4054* [ValueSet](valueset.html): The description of the value set
4055</b><br>
4056   * Type: <b>string</b><br>
4057   * 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>
4058   * </p>
4059   */
4060  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
4061
4062 /**
4063   * Search parameter: <b>identifier</b>
4064   * <p>
4065   * Description: <b>Multiple Resources: 
4066
4067* [CodeSystem](codesystem.html): External identifier for the code system
4068* [ConceptMap](conceptmap.html): External identifier for the concept map
4069* [MessageDefinition](messagedefinition.html): External identifier for the message definition
4070* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
4071* [StructureMap](structuremap.html): External identifier for the structure map
4072* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
4073* [ValueSet](valueset.html): External identifier for the value set
4074</b><br>
4075   * Type: <b>token</b><br>
4076   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
4077   * </p>
4078   */
4079  @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" )
4080  public static final String SP_IDENTIFIER = "identifier";
4081 /**
4082   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4083   * <p>
4084   * Description: <b>Multiple Resources: 
4085
4086* [CodeSystem](codesystem.html): External identifier for the code system
4087* [ConceptMap](conceptmap.html): External identifier for the concept map
4088* [MessageDefinition](messagedefinition.html): External identifier for the message definition
4089* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
4090* [StructureMap](structuremap.html): External identifier for the structure map
4091* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
4092* [ValueSet](valueset.html): External identifier for the value set
4093</b><br>
4094   * Type: <b>token</b><br>
4095   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
4096   * </p>
4097   */
4098  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4099
4100 /**
4101   * Search parameter: <b>jurisdiction</b>
4102   * <p>
4103   * Description: <b>Multiple Resources: 
4104
4105* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4106* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4107* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4108* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4109* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4110* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4111* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4112* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4113* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4114* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4115* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4116* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4117* [ValueSet](valueset.html): Intended jurisdiction for the value set
4118</b><br>
4119   * Type: <b>token</b><br>
4120   * 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>
4121   * </p>
4122   */
4123  @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" )
4124  public static final String SP_JURISDICTION = "jurisdiction";
4125 /**
4126   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
4127   * <p>
4128   * Description: <b>Multiple Resources: 
4129
4130* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4131* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4132* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4133* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4134* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4135* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4136* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4137* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4138* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4139* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4140* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4141* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4142* [ValueSet](valueset.html): Intended jurisdiction for the value set
4143</b><br>
4144   * Type: <b>token</b><br>
4145   * 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>
4146   * </p>
4147   */
4148  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
4149
4150 /**
4151   * Search parameter: <b>name</b>
4152   * <p>
4153   * Description: <b>Multiple Resources: 
4154
4155* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4156* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4157* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4158* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4159* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4160* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4161* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4162* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4163* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4164* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4165* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4166* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4167* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4168* [ValueSet](valueset.html): Computationally friendly name of the value set
4169</b><br>
4170   * Type: <b>string</b><br>
4171   * 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>
4172   * </p>
4173   */
4174  @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" )
4175  public static final String SP_NAME = "name";
4176 /**
4177   * <b>Fluent Client</b> search parameter constant for <b>name</b>
4178   * <p>
4179   * Description: <b>Multiple Resources: 
4180
4181* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4182* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4183* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4184* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4185* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4186* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4187* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4188* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4189* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4190* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4191* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4192* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4193* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4194* [ValueSet](valueset.html): Computationally friendly name of the value set
4195</b><br>
4196   * Type: <b>string</b><br>
4197   * 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>
4198   * </p>
4199   */
4200  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
4201
4202 /**
4203   * Search parameter: <b>publisher</b>
4204   * <p>
4205   * Description: <b>Multiple Resources: 
4206
4207* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4208* [CodeSystem](codesystem.html): Name of the publisher of the code system
4209* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4210* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4211* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4212* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4213* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4214* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4215* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4216* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4217* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4218* [StructureMap](structuremap.html): Name of the publisher of the structure map
4219* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4220* [ValueSet](valueset.html): Name of the publisher of the value set
4221</b><br>
4222   * Type: <b>string</b><br>
4223   * 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>
4224   * </p>
4225   */
4226  @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" )
4227  public static final String SP_PUBLISHER = "publisher";
4228 /**
4229   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
4230   * <p>
4231   * Description: <b>Multiple Resources: 
4232
4233* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4234* [CodeSystem](codesystem.html): Name of the publisher of the code system
4235* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4236* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4237* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4238* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4239* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4240* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4241* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4242* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4243* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4244* [StructureMap](structuremap.html): Name of the publisher of the structure map
4245* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4246* [ValueSet](valueset.html): Name of the publisher of the value set
4247</b><br>
4248   * Type: <b>string</b><br>
4249   * 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>
4250   * </p>
4251   */
4252  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
4253
4254 /**
4255   * Search parameter: <b>status</b>
4256   * <p>
4257   * Description: <b>Multiple Resources: 
4258
4259* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4260* [CodeSystem](codesystem.html): The current status of the code system
4261* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4262* [ConceptMap](conceptmap.html): The current status of the concept map
4263* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4264* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4265* [MessageDefinition](messagedefinition.html): The current status of the message definition
4266* [NamingSystem](namingsystem.html): The current status of the naming system
4267* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4268* [SearchParameter](searchparameter.html): The current status of the search parameter
4269* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4270* [StructureMap](structuremap.html): The current status of the structure map
4271* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4272* [ValueSet](valueset.html): The current status of the value set
4273</b><br>
4274   * Type: <b>token</b><br>
4275   * 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>
4276   * </p>
4277   */
4278  @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" )
4279  public static final String SP_STATUS = "status";
4280 /**
4281   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4282   * <p>
4283   * Description: <b>Multiple Resources: 
4284
4285* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4286* [CodeSystem](codesystem.html): The current status of the code system
4287* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4288* [ConceptMap](conceptmap.html): The current status of the concept map
4289* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4290* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4291* [MessageDefinition](messagedefinition.html): The current status of the message definition
4292* [NamingSystem](namingsystem.html): The current status of the naming system
4293* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4294* [SearchParameter](searchparameter.html): The current status of the search parameter
4295* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4296* [StructureMap](structuremap.html): The current status of the structure map
4297* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4298* [ValueSet](valueset.html): The current status of the value set
4299</b><br>
4300   * Type: <b>token</b><br>
4301   * 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>
4302   * </p>
4303   */
4304  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4305
4306 /**
4307   * Search parameter: <b>title</b>
4308   * <p>
4309   * Description: <b>Multiple Resources: 
4310
4311* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4312* [CodeSystem](codesystem.html): The human-friendly name of the code system
4313* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4314* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4315* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4316* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4317* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4318* [StructureMap](structuremap.html): The human-friendly name of the structure map
4319* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4320* [ValueSet](valueset.html): The human-friendly name of the value set
4321</b><br>
4322   * Type: <b>string</b><br>
4323   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4324   * </p>
4325   */
4326  @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" )
4327  public static final String SP_TITLE = "title";
4328 /**
4329   * <b>Fluent Client</b> search parameter constant for <b>title</b>
4330   * <p>
4331   * Description: <b>Multiple Resources: 
4332
4333* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4334* [CodeSystem](codesystem.html): The human-friendly name of the code system
4335* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4336* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4337* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4338* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4339* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4340* [StructureMap](structuremap.html): The human-friendly name of the structure map
4341* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4342* [ValueSet](valueset.html): The human-friendly name of the value set
4343</b><br>
4344   * Type: <b>string</b><br>
4345   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4346   * </p>
4347   */
4348  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
4349
4350 /**
4351   * Search parameter: <b>url</b>
4352   * <p>
4353   * Description: <b>Multiple Resources: 
4354
4355* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4356* [CodeSystem](codesystem.html): The uri that identifies the code system
4357* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4358* [ConceptMap](conceptmap.html): The uri that identifies the concept map
4359* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4360* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4361* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4362* [NamingSystem](namingsystem.html): The uri that identifies the naming system
4363* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4364* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4365* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4366* [StructureMap](structuremap.html): The uri that identifies the structure map
4367* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4368* [ValueSet](valueset.html): The uri that identifies the value set
4369</b><br>
4370   * Type: <b>uri</b><br>
4371   * 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>
4372   * </p>
4373   */
4374  @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" )
4375  public static final String SP_URL = "url";
4376 /**
4377   * <b>Fluent Client</b> search parameter constant for <b>url</b>
4378   * <p>
4379   * Description: <b>Multiple Resources: 
4380
4381* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4382* [CodeSystem](codesystem.html): The uri that identifies the code system
4383* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4384* [ConceptMap](conceptmap.html): The uri that identifies the concept map
4385* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4386* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4387* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4388* [NamingSystem](namingsystem.html): The uri that identifies the naming system
4389* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4390* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4391* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4392* [StructureMap](structuremap.html): The uri that identifies the structure map
4393* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4394* [ValueSet](valueset.html): The uri that identifies the value set
4395</b><br>
4396   * Type: <b>uri</b><br>
4397   * 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>
4398   * </p>
4399   */
4400  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
4401
4402 /**
4403   * Search parameter: <b>version</b>
4404   * <p>
4405   * Description: <b>Multiple Resources: 
4406
4407* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4408* [CodeSystem](codesystem.html): The business version of the code system
4409* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4410* [ConceptMap](conceptmap.html): The business version of the concept map
4411* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4412* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4413* [MessageDefinition](messagedefinition.html): The business version of the message definition
4414* [NamingSystem](namingsystem.html): The business version of the naming system
4415* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4416* [SearchParameter](searchparameter.html): The business version of the search parameter
4417* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4418* [StructureMap](structuremap.html): The business version of the structure map
4419* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4420* [ValueSet](valueset.html): The business version of the value set
4421</b><br>
4422   * Type: <b>token</b><br>
4423   * 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>
4424   * </p>
4425   */
4426  @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" )
4427  public static final String SP_VERSION = "version";
4428 /**
4429   * <b>Fluent Client</b> search parameter constant for <b>version</b>
4430   * <p>
4431   * Description: <b>Multiple Resources: 
4432
4433* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4434* [CodeSystem](codesystem.html): The business version of the code system
4435* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4436* [ConceptMap](conceptmap.html): The business version of the concept map
4437* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4438* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4439* [MessageDefinition](messagedefinition.html): The business version of the message definition
4440* [NamingSystem](namingsystem.html): The business version of the naming system
4441* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4442* [SearchParameter](searchparameter.html): The business version of the search parameter
4443* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4444* [StructureMap](structuremap.html): The business version of the structure map
4445* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4446* [ValueSet](valueset.html): The business version of the value set
4447</b><br>
4448   * Type: <b>token</b><br>
4449   * 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>
4450   * </p>
4451   */
4452  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
4453
4454// Manual code (from Configuration.txt):
4455public String describeType() {
4456    if ("Extension".equals(getType()))
4457      return "Extension" ;
4458    switch (getKind()) {
4459    case COMPLEXTYPE: return getDerivation() == TypeDerivationRule.CONSTRAINT ? "DataType Constraint" : "DataType" ;
4460    case LOGICAL: return getDerivation() == TypeDerivationRule.CONSTRAINT ? "Logical Model" : "Logical Model Profile";
4461    case PRIMITIVETYPE: return getDerivation() == TypeDerivationRule.CONSTRAINT ? "PrimitiveType Constraint" : "PrimitiveType";
4462    case RESOURCE: return getDerivation() == TypeDerivationRule.CONSTRAINT ? "Resource Profile" : "Resource";
4463    default:
4464      return "Definition";
4465    }
4466  }
4467// end addition
4468
4469}
4470