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