001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Sat, Nov 5, 2022 10:47+1100 for FHIR v5.0.0-ballot
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * 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 specifications 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 specifications 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 and optionally additional rules 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 and optionally additional rules 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 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 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     * Indicates the mechanism used to compare versions to determine which is more current.
1454     */
1455    @Child(name = "versionAlgorithm", type = {StringType.class, Coding.class}, order=3, min=0, max=1, modifier=false, summary=true)
1456    @Description(shortDefinition="How to compare versions", formalDefinition="Indicates the mechanism used to compare versions to determine which is more current." )
1457    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/version-algorithm")
1458    protected DataType versionAlgorithm;
1459
1460    /**
1461     * 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.
1462     */
1463    @Child(name = "name", type = {StringType.class}, order=4, min=1, max=1, modifier=false, summary=true)
1464    @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." )
1465    protected StringType name;
1466
1467    /**
1468     * A short, descriptive, user-friendly title for the structure definition.
1469     */
1470    @Child(name = "title", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=true)
1471    @Description(shortDefinition="Name for this structure definition (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the structure definition." )
1472    protected StringType title;
1473
1474    /**
1475     * The status of this structure definition. Enables tracking the life-cycle of the content.
1476     */
1477    @Child(name = "status", type = {CodeType.class}, order=6, min=1, max=1, modifier=true, summary=true)
1478    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this structure definition. Enables tracking the life-cycle of the content." )
1479    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
1480    protected Enumeration<PublicationStatus> status;
1481
1482    /**
1483     * 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.
1484     */
1485    @Child(name = "experimental", type = {BooleanType.class}, order=7, min=0, max=1, modifier=false, summary=true)
1486    @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." )
1487    protected BooleanType experimental;
1488
1489    /**
1490     * 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.
1491     */
1492    @Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
1493    @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." )
1494    protected DateTimeType date;
1495
1496    /**
1497     * The name of the organization or individual responsible for the release and ongoing maintenance of the structure definition.
1498     */
1499    @Child(name = "publisher", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
1500    @Description(shortDefinition="Name of the publisher/steward (organization or individual)", formalDefinition="The name of the organization or individual responsible for the release and ongoing maintenance of the structure definition." )
1501    protected StringType publisher;
1502
1503    /**
1504     * Contact details to assist a user in finding and communicating with the publisher.
1505     */
1506    @Child(name = "contact", type = {ContactDetail.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1507    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
1508    protected List<ContactDetail> contact;
1509
1510    /**
1511     * A free text natural language description of the structure definition from a consumer's perspective.
1512     */
1513    @Child(name = "description", type = {MarkdownType.class}, order=11, min=0, max=1, modifier=false, summary=false)
1514    @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." )
1515    protected MarkdownType description;
1516
1517    /**
1518     * 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.
1519     */
1520    @Child(name = "useContext", type = {UsageContext.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1521    @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." )
1522    protected List<UsageContext> useContext;
1523
1524    /**
1525     * A legal or geographic region in which the structure definition is intended to be used.
1526     */
1527    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1528    @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." )
1529    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
1530    protected List<CodeableConcept> jurisdiction;
1531
1532    /**
1533     * Explanation of why this structure definition is needed and why it has been designed as it has.
1534     */
1535    @Child(name = "purpose", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
1536    @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." )
1537    protected MarkdownType purpose;
1538
1539    /**
1540     * 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.  The short copyright declaration (e.g. (c) '2015+ xyz organization' should be sent in the copyrightLabel element.
1541     */
1542    @Child(name = "copyright", type = {MarkdownType.class}, order=15, min=0, max=1, modifier=false, summary=false)
1543    @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.  The short copyright declaration (e.g. (c) '2015+ xyz organization' should be sent in the copyrightLabel element." )
1544    protected MarkdownType copyright;
1545
1546    /**
1547     * A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
1548     */
1549    @Child(name = "copyrightLabel", type = {StringType.class}, order=16, min=0, max=1, modifier=false, summary=false)
1550    @Description(shortDefinition="Copyright holder and year(s)", formalDefinition="A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved')." )
1551    protected StringType copyrightLabel;
1552
1553    /**
1554     * (DEPRECATED) 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.
1555     */
1556    @Child(name = "keyword", type = {Coding.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1557    @Description(shortDefinition="Assist with indexing and finding", formalDefinition="(DEPRECATED) 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." )
1558    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/definition-use")
1559    protected List<Coding> keyword;
1560
1561    /**
1562     * 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.
1563     */
1564    @Child(name = "fhirVersion", type = {CodeType.class}, order=18, min=0, max=1, modifier=false, summary=true)
1565    @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." )
1566    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
1567    protected Enumeration<FHIRVersion> fhirVersion;
1568
1569    /**
1570     * An external specification that the content is mapped to.
1571     */
1572    @Child(name = "mapping", type = {}, order=19, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1573    @Description(shortDefinition="External specification that the content is mapped to", formalDefinition="An external specification that the content is mapped to." )
1574    protected List<StructureDefinitionMappingComponent> mapping;
1575
1576    /**
1577     * Defines the kind of structure that this definition is describing.
1578     */
1579    @Child(name = "kind", type = {CodeType.class}, order=20, min=1, max=1, modifier=false, summary=true)
1580    @Description(shortDefinition="primitive-type | complex-type | resource | logical", formalDefinition="Defines the kind of structure that this definition is describing." )
1581    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/structure-definition-kind")
1582    protected Enumeration<StructureDefinitionKind> kind;
1583
1584    /**
1585     * 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.
1586     */
1587    @Child(name = "abstract", type = {BooleanType.class}, order=21, min=1, max=1, modifier=false, summary=true)
1588    @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." )
1589    protected BooleanType abstract_;
1590
1591    /**
1592     * Identifies the types of resource or data type elements to which the extension can be applied.
1593     */
1594    @Child(name = "context", type = {}, order=22, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1595    @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." )
1596    protected List<StructureDefinitionContextComponent> context;
1597
1598    /**
1599     * 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.
1600     */
1601    @Child(name = "contextInvariant", type = {StringType.class}, order=23, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1602    @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." )
1603    protected List<StringType> contextInvariant;
1604
1605    /**
1606     * 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.
1607     */
1608    @Child(name = "type", type = {UriType.class}, order=24, min=1, max=1, modifier=false, summary=true)
1609    @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." )
1610    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/fhir-types")
1611    protected UriType type;
1612
1613    /**
1614     * An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.
1615     */
1616    @Child(name = "baseDefinition", type = {CanonicalType.class}, order=25, min=0, max=1, modifier=false, summary=true)
1617    @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." )
1618    protected CanonicalType baseDefinition;
1619
1620    /**
1621     * How the type relates to the baseDefinition.
1622     */
1623    @Child(name = "derivation", type = {CodeType.class}, order=26, min=0, max=1, modifier=false, summary=true)
1624    @Description(shortDefinition="specialization | constraint - How relates to base definition", formalDefinition="How the type relates to the baseDefinition." )
1625    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/type-derivation-rule")
1626    protected Enumeration<TypeDerivationRule> derivation;
1627
1628    /**
1629     * A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition.
1630     */
1631    @Child(name = "snapshot", type = {}, order=27, min=0, max=1, modifier=false, summary=false)
1632    @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." )
1633    protected StructureDefinitionSnapshotComponent snapshot;
1634
1635    /**
1636     * A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies.
1637     */
1638    @Child(name = "differential", type = {}, order=28, min=0, max=1, modifier=false, summary=false)
1639    @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." )
1640    protected StructureDefinitionDifferentialComponent differential;
1641
1642    private static final long serialVersionUID = -1127285723L;
1643
1644  /**
1645   * Constructor
1646   */
1647    public StructureDefinition() {
1648      super();
1649    }
1650
1651  /**
1652   * Constructor
1653   */
1654    public StructureDefinition(String url, String name, PublicationStatus status, StructureDefinitionKind kind, boolean abstract_, String type) {
1655      super();
1656      this.setUrl(url);
1657      this.setName(name);
1658      this.setStatus(status);
1659      this.setKind(kind);
1660      this.setAbstract(abstract_);
1661      this.setType(type);
1662    }
1663
1664    /**
1665     * @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 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
1666     */
1667    public UriType getUrlElement() { 
1668      if (this.url == null)
1669        if (Configuration.errorOnAutoCreate())
1670          throw new Error("Attempt to auto-create StructureDefinition.url");
1671        else if (Configuration.doAutoCreate())
1672          this.url = new UriType(); // bb
1673      return this.url;
1674    }
1675
1676    public boolean hasUrlElement() { 
1677      return this.url != null && !this.url.isEmpty();
1678    }
1679
1680    public boolean hasUrl() { 
1681      return this.url != null && !this.url.isEmpty();
1682    }
1683
1684    /**
1685     * @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 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
1686     */
1687    public StructureDefinition setUrlElement(UriType value) { 
1688      this.url = value;
1689      return this;
1690    }
1691
1692    /**
1693     * @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 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.
1694     */
1695    public String getUrl() { 
1696      return this.url == null ? null : this.url.getValue();
1697    }
1698
1699    /**
1700     * @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 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.
1701     */
1702    public StructureDefinition setUrl(String value) { 
1703        if (this.url == null)
1704          this.url = new UriType();
1705        this.url.setValue(value);
1706      return this;
1707    }
1708
1709    /**
1710     * @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.)
1711     */
1712    public List<Identifier> getIdentifier() { 
1713      if (this.identifier == null)
1714        this.identifier = new ArrayList<Identifier>();
1715      return this.identifier;
1716    }
1717
1718    /**
1719     * @return Returns a reference to <code>this</code> for easy method chaining
1720     */
1721    public StructureDefinition setIdentifier(List<Identifier> theIdentifier) { 
1722      this.identifier = theIdentifier;
1723      return this;
1724    }
1725
1726    public boolean hasIdentifier() { 
1727      if (this.identifier == null)
1728        return false;
1729      for (Identifier item : this.identifier)
1730        if (!item.isEmpty())
1731          return true;
1732      return false;
1733    }
1734
1735    public Identifier addIdentifier() { //3
1736      Identifier t = new Identifier();
1737      if (this.identifier == null)
1738        this.identifier = new ArrayList<Identifier>();
1739      this.identifier.add(t);
1740      return t;
1741    }
1742
1743    public StructureDefinition addIdentifier(Identifier t) { //3
1744      if (t == null)
1745        return this;
1746      if (this.identifier == null)
1747        this.identifier = new ArrayList<Identifier>();
1748      this.identifier.add(t);
1749      return this;
1750    }
1751
1752    /**
1753     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1754     */
1755    public Identifier getIdentifierFirstRep() { 
1756      if (getIdentifier().isEmpty()) {
1757        addIdentifier();
1758      }
1759      return getIdentifier().get(0);
1760    }
1761
1762    /**
1763     * @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
1764     */
1765    public StringType getVersionElement() { 
1766      if (this.version == null)
1767        if (Configuration.errorOnAutoCreate())
1768          throw new Error("Attempt to auto-create StructureDefinition.version");
1769        else if (Configuration.doAutoCreate())
1770          this.version = new StringType(); // bb
1771      return this.version;
1772    }
1773
1774    public boolean hasVersionElement() { 
1775      return this.version != null && !this.version.isEmpty();
1776    }
1777
1778    public boolean hasVersion() { 
1779      return this.version != null && !this.version.isEmpty();
1780    }
1781
1782    /**
1783     * @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
1784     */
1785    public StructureDefinition setVersionElement(StringType value) { 
1786      this.version = value;
1787      return this;
1788    }
1789
1790    /**
1791     * @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.
1792     */
1793    public String getVersion() { 
1794      return this.version == null ? null : this.version.getValue();
1795    }
1796
1797    /**
1798     * @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.
1799     */
1800    public StructureDefinition setVersion(String value) { 
1801      if (Utilities.noString(value))
1802        this.version = null;
1803      else {
1804        if (this.version == null)
1805          this.version = new StringType();
1806        this.version.setValue(value);
1807      }
1808      return this;
1809    }
1810
1811    /**
1812     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
1813     */
1814    public DataType getVersionAlgorithm() { 
1815      return this.versionAlgorithm;
1816    }
1817
1818    /**
1819     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
1820     */
1821    public StringType getVersionAlgorithmStringType() throws FHIRException { 
1822      if (this.versionAlgorithm == null)
1823        this.versionAlgorithm = new StringType();
1824      if (!(this.versionAlgorithm instanceof StringType))
1825        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
1826      return (StringType) this.versionAlgorithm;
1827    }
1828
1829    public boolean hasVersionAlgorithmStringType() { 
1830      return this != null && this.versionAlgorithm instanceof StringType;
1831    }
1832
1833    /**
1834     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
1835     */
1836    public Coding getVersionAlgorithmCoding() throws FHIRException { 
1837      if (this.versionAlgorithm == null)
1838        this.versionAlgorithm = new Coding();
1839      if (!(this.versionAlgorithm instanceof Coding))
1840        throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
1841      return (Coding) this.versionAlgorithm;
1842    }
1843
1844    public boolean hasVersionAlgorithmCoding() { 
1845      return this != null && this.versionAlgorithm instanceof Coding;
1846    }
1847
1848    public boolean hasVersionAlgorithm() { 
1849      return this.versionAlgorithm != null && !this.versionAlgorithm.isEmpty();
1850    }
1851
1852    /**
1853     * @param value {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
1854     */
1855    public StructureDefinition setVersionAlgorithm(DataType value) { 
1856      if (value != null && !(value instanceof StringType || value instanceof Coding))
1857        throw new Error("Not the right type for StructureDefinition.versionAlgorithm[x]: "+value.fhirType());
1858      this.versionAlgorithm = value;
1859      return this;
1860    }
1861
1862    /**
1863     * @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
1864     */
1865    public StringType getNameElement() { 
1866      if (this.name == null)
1867        if (Configuration.errorOnAutoCreate())
1868          throw new Error("Attempt to auto-create StructureDefinition.name");
1869        else if (Configuration.doAutoCreate())
1870          this.name = new StringType(); // bb
1871      return this.name;
1872    }
1873
1874    public boolean hasNameElement() { 
1875      return this.name != null && !this.name.isEmpty();
1876    }
1877
1878    public boolean hasName() { 
1879      return this.name != null && !this.name.isEmpty();
1880    }
1881
1882    /**
1883     * @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
1884     */
1885    public StructureDefinition setNameElement(StringType value) { 
1886      this.name = value;
1887      return this;
1888    }
1889
1890    /**
1891     * @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.
1892     */
1893    public String getName() { 
1894      return this.name == null ? null : this.name.getValue();
1895    }
1896
1897    /**
1898     * @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.
1899     */
1900    public StructureDefinition setName(String value) { 
1901        if (this.name == null)
1902          this.name = new StringType();
1903        this.name.setValue(value);
1904      return this;
1905    }
1906
1907    /**
1908     * @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
1909     */
1910    public StringType getTitleElement() { 
1911      if (this.title == null)
1912        if (Configuration.errorOnAutoCreate())
1913          throw new Error("Attempt to auto-create StructureDefinition.title");
1914        else if (Configuration.doAutoCreate())
1915          this.title = new StringType(); // bb
1916      return this.title;
1917    }
1918
1919    public boolean hasTitleElement() { 
1920      return this.title != null && !this.title.isEmpty();
1921    }
1922
1923    public boolean hasTitle() { 
1924      return this.title != null && !this.title.isEmpty();
1925    }
1926
1927    /**
1928     * @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
1929     */
1930    public StructureDefinition setTitleElement(StringType value) { 
1931      this.title = value;
1932      return this;
1933    }
1934
1935    /**
1936     * @return A short, descriptive, user-friendly title for the structure definition.
1937     */
1938    public String getTitle() { 
1939      return this.title == null ? null : this.title.getValue();
1940    }
1941
1942    /**
1943     * @param value A short, descriptive, user-friendly title for the structure definition.
1944     */
1945    public StructureDefinition setTitle(String value) { 
1946      if (Utilities.noString(value))
1947        this.title = null;
1948      else {
1949        if (this.title == null)
1950          this.title = new StringType();
1951        this.title.setValue(value);
1952      }
1953      return this;
1954    }
1955
1956    /**
1957     * @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
1958     */
1959    public Enumeration<PublicationStatus> getStatusElement() { 
1960      if (this.status == null)
1961        if (Configuration.errorOnAutoCreate())
1962          throw new Error("Attempt to auto-create StructureDefinition.status");
1963        else if (Configuration.doAutoCreate())
1964          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
1965      return this.status;
1966    }
1967
1968    public boolean hasStatusElement() { 
1969      return this.status != null && !this.status.isEmpty();
1970    }
1971
1972    public boolean hasStatus() { 
1973      return this.status != null && !this.status.isEmpty();
1974    }
1975
1976    /**
1977     * @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
1978     */
1979    public StructureDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
1980      this.status = value;
1981      return this;
1982    }
1983
1984    /**
1985     * @return The status of this structure definition. Enables tracking the life-cycle of the content.
1986     */
1987    public PublicationStatus getStatus() { 
1988      return this.status == null ? null : this.status.getValue();
1989    }
1990
1991    /**
1992     * @param value The status of this structure definition. Enables tracking the life-cycle of the content.
1993     */
1994    public StructureDefinition setStatus(PublicationStatus value) { 
1995        if (this.status == null)
1996          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
1997        this.status.setValue(value);
1998      return this;
1999    }
2000
2001    /**
2002     * @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
2003     */
2004    public BooleanType getExperimentalElement() { 
2005      if (this.experimental == null)
2006        if (Configuration.errorOnAutoCreate())
2007          throw new Error("Attempt to auto-create StructureDefinition.experimental");
2008        else if (Configuration.doAutoCreate())
2009          this.experimental = new BooleanType(); // bb
2010      return this.experimental;
2011    }
2012
2013    public boolean hasExperimentalElement() { 
2014      return this.experimental != null && !this.experimental.isEmpty();
2015    }
2016
2017    public boolean hasExperimental() { 
2018      return this.experimental != null && !this.experimental.isEmpty();
2019    }
2020
2021    /**
2022     * @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
2023     */
2024    public StructureDefinition setExperimentalElement(BooleanType value) { 
2025      this.experimental = value;
2026      return this;
2027    }
2028
2029    /**
2030     * @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.
2031     */
2032    public boolean getExperimental() { 
2033      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
2034    }
2035
2036    /**
2037     * @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.
2038     */
2039    public StructureDefinition setExperimental(boolean value) { 
2040        if (this.experimental == null)
2041          this.experimental = new BooleanType();
2042        this.experimental.setValue(value);
2043      return this;
2044    }
2045
2046    /**
2047     * @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
2048     */
2049    public DateTimeType getDateElement() { 
2050      if (this.date == null)
2051        if (Configuration.errorOnAutoCreate())
2052          throw new Error("Attempt to auto-create StructureDefinition.date");
2053        else if (Configuration.doAutoCreate())
2054          this.date = new DateTimeType(); // bb
2055      return this.date;
2056    }
2057
2058    public boolean hasDateElement() { 
2059      return this.date != null && !this.date.isEmpty();
2060    }
2061
2062    public boolean hasDate() { 
2063      return this.date != null && !this.date.isEmpty();
2064    }
2065
2066    /**
2067     * @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
2068     */
2069    public StructureDefinition setDateElement(DateTimeType value) { 
2070      this.date = value;
2071      return this;
2072    }
2073
2074    /**
2075     * @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.
2076     */
2077    public Date getDate() { 
2078      return this.date == null ? null : this.date.getValue();
2079    }
2080
2081    /**
2082     * @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.
2083     */
2084    public StructureDefinition setDate(Date value) { 
2085      if (value == null)
2086        this.date = null;
2087      else {
2088        if (this.date == null)
2089          this.date = new DateTimeType();
2090        this.date.setValue(value);
2091      }
2092      return this;
2093    }
2094
2095    /**
2096     * @return {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the structure definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2097     */
2098    public StringType getPublisherElement() { 
2099      if (this.publisher == null)
2100        if (Configuration.errorOnAutoCreate())
2101          throw new Error("Attempt to auto-create StructureDefinition.publisher");
2102        else if (Configuration.doAutoCreate())
2103          this.publisher = new StringType(); // bb
2104      return this.publisher;
2105    }
2106
2107    public boolean hasPublisherElement() { 
2108      return this.publisher != null && !this.publisher.isEmpty();
2109    }
2110
2111    public boolean hasPublisher() { 
2112      return this.publisher != null && !this.publisher.isEmpty();
2113    }
2114
2115    /**
2116     * @param value {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the structure definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2117     */
2118    public StructureDefinition setPublisherElement(StringType value) { 
2119      this.publisher = value;
2120      return this;
2121    }
2122
2123    /**
2124     * @return The name of the organization or individual responsible for the release and ongoing maintenance of the structure definition.
2125     */
2126    public String getPublisher() { 
2127      return this.publisher == null ? null : this.publisher.getValue();
2128    }
2129
2130    /**
2131     * @param value The name of the organization or individual responsible for the release and ongoing maintenance of the structure definition.
2132     */
2133    public StructureDefinition setPublisher(String value) { 
2134      if (Utilities.noString(value))
2135        this.publisher = null;
2136      else {
2137        if (this.publisher == null)
2138          this.publisher = new StringType();
2139        this.publisher.setValue(value);
2140      }
2141      return this;
2142    }
2143
2144    /**
2145     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
2146     */
2147    public List<ContactDetail> getContact() { 
2148      if (this.contact == null)
2149        this.contact = new ArrayList<ContactDetail>();
2150      return this.contact;
2151    }
2152
2153    /**
2154     * @return Returns a reference to <code>this</code> for easy method chaining
2155     */
2156    public StructureDefinition setContact(List<ContactDetail> theContact) { 
2157      this.contact = theContact;
2158      return this;
2159    }
2160
2161    public boolean hasContact() { 
2162      if (this.contact == null)
2163        return false;
2164      for (ContactDetail item : this.contact)
2165        if (!item.isEmpty())
2166          return true;
2167      return false;
2168    }
2169
2170    public ContactDetail addContact() { //3
2171      ContactDetail t = new ContactDetail();
2172      if (this.contact == null)
2173        this.contact = new ArrayList<ContactDetail>();
2174      this.contact.add(t);
2175      return t;
2176    }
2177
2178    public StructureDefinition addContact(ContactDetail t) { //3
2179      if (t == null)
2180        return this;
2181      if (this.contact == null)
2182        this.contact = new ArrayList<ContactDetail>();
2183      this.contact.add(t);
2184      return this;
2185    }
2186
2187    /**
2188     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
2189     */
2190    public ContactDetail getContactFirstRep() { 
2191      if (getContact().isEmpty()) {
2192        addContact();
2193      }
2194      return getContact().get(0);
2195    }
2196
2197    /**
2198     * @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
2199     */
2200    public MarkdownType getDescriptionElement() { 
2201      if (this.description == null)
2202        if (Configuration.errorOnAutoCreate())
2203          throw new Error("Attempt to auto-create StructureDefinition.description");
2204        else if (Configuration.doAutoCreate())
2205          this.description = new MarkdownType(); // bb
2206      return this.description;
2207    }
2208
2209    public boolean hasDescriptionElement() { 
2210      return this.description != null && !this.description.isEmpty();
2211    }
2212
2213    public boolean hasDescription() { 
2214      return this.description != null && !this.description.isEmpty();
2215    }
2216
2217    /**
2218     * @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
2219     */
2220    public StructureDefinition setDescriptionElement(MarkdownType value) { 
2221      this.description = value;
2222      return this;
2223    }
2224
2225    /**
2226     * @return A free text natural language description of the structure definition from a consumer's perspective.
2227     */
2228    public String getDescription() { 
2229      return this.description == null ? null : this.description.getValue();
2230    }
2231
2232    /**
2233     * @param value A free text natural language description of the structure definition from a consumer's perspective.
2234     */
2235    public StructureDefinition setDescription(String value) { 
2236      if (value == null)
2237        this.description = null;
2238      else {
2239        if (this.description == null)
2240          this.description = new MarkdownType();
2241        this.description.setValue(value);
2242      }
2243      return this;
2244    }
2245
2246    /**
2247     * @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.)
2248     */
2249    public List<UsageContext> getUseContext() { 
2250      if (this.useContext == null)
2251        this.useContext = new ArrayList<UsageContext>();
2252      return this.useContext;
2253    }
2254
2255    /**
2256     * @return Returns a reference to <code>this</code> for easy method chaining
2257     */
2258    public StructureDefinition setUseContext(List<UsageContext> theUseContext) { 
2259      this.useContext = theUseContext;
2260      return this;
2261    }
2262
2263    public boolean hasUseContext() { 
2264      if (this.useContext == null)
2265        return false;
2266      for (UsageContext item : this.useContext)
2267        if (!item.isEmpty())
2268          return true;
2269      return false;
2270    }
2271
2272    public UsageContext addUseContext() { //3
2273      UsageContext t = new UsageContext();
2274      if (this.useContext == null)
2275        this.useContext = new ArrayList<UsageContext>();
2276      this.useContext.add(t);
2277      return t;
2278    }
2279
2280    public StructureDefinition addUseContext(UsageContext t) { //3
2281      if (t == null)
2282        return this;
2283      if (this.useContext == null)
2284        this.useContext = new ArrayList<UsageContext>();
2285      this.useContext.add(t);
2286      return this;
2287    }
2288
2289    /**
2290     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
2291     */
2292    public UsageContext getUseContextFirstRep() { 
2293      if (getUseContext().isEmpty()) {
2294        addUseContext();
2295      }
2296      return getUseContext().get(0);
2297    }
2298
2299    /**
2300     * @return {@link #jurisdiction} (A legal or geographic region in which the structure definition is intended to be used.)
2301     */
2302    public List<CodeableConcept> getJurisdiction() { 
2303      if (this.jurisdiction == null)
2304        this.jurisdiction = new ArrayList<CodeableConcept>();
2305      return this.jurisdiction;
2306    }
2307
2308    /**
2309     * @return Returns a reference to <code>this</code> for easy method chaining
2310     */
2311    public StructureDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
2312      this.jurisdiction = theJurisdiction;
2313      return this;
2314    }
2315
2316    public boolean hasJurisdiction() { 
2317      if (this.jurisdiction == null)
2318        return false;
2319      for (CodeableConcept item : this.jurisdiction)
2320        if (!item.isEmpty())
2321          return true;
2322      return false;
2323    }
2324
2325    public CodeableConcept addJurisdiction() { //3
2326      CodeableConcept t = new CodeableConcept();
2327      if (this.jurisdiction == null)
2328        this.jurisdiction = new ArrayList<CodeableConcept>();
2329      this.jurisdiction.add(t);
2330      return t;
2331    }
2332
2333    public StructureDefinition addJurisdiction(CodeableConcept t) { //3
2334      if (t == null)
2335        return this;
2336      if (this.jurisdiction == null)
2337        this.jurisdiction = new ArrayList<CodeableConcept>();
2338      this.jurisdiction.add(t);
2339      return this;
2340    }
2341
2342    /**
2343     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
2344     */
2345    public CodeableConcept getJurisdictionFirstRep() { 
2346      if (getJurisdiction().isEmpty()) {
2347        addJurisdiction();
2348      }
2349      return getJurisdiction().get(0);
2350    }
2351
2352    /**
2353     * @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
2354     */
2355    public MarkdownType getPurposeElement() { 
2356      if (this.purpose == null)
2357        if (Configuration.errorOnAutoCreate())
2358          throw new Error("Attempt to auto-create StructureDefinition.purpose");
2359        else if (Configuration.doAutoCreate())
2360          this.purpose = new MarkdownType(); // bb
2361      return this.purpose;
2362    }
2363
2364    public boolean hasPurposeElement() { 
2365      return this.purpose != null && !this.purpose.isEmpty();
2366    }
2367
2368    public boolean hasPurpose() { 
2369      return this.purpose != null && !this.purpose.isEmpty();
2370    }
2371
2372    /**
2373     * @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
2374     */
2375    public StructureDefinition setPurposeElement(MarkdownType value) { 
2376      this.purpose = value;
2377      return this;
2378    }
2379
2380    /**
2381     * @return Explanation of why this structure definition is needed and why it has been designed as it has.
2382     */
2383    public String getPurpose() { 
2384      return this.purpose == null ? null : this.purpose.getValue();
2385    }
2386
2387    /**
2388     * @param value Explanation of why this structure definition is needed and why it has been designed as it has.
2389     */
2390    public StructureDefinition setPurpose(String value) { 
2391      if (value == null)
2392        this.purpose = null;
2393      else {
2394        if (this.purpose == null)
2395          this.purpose = new MarkdownType();
2396        this.purpose.setValue(value);
2397      }
2398      return this;
2399    }
2400
2401    /**
2402     * @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.  The short copyright declaration (e.g. (c) '2015+ xyz organization' should be sent in the copyrightLabel element.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
2403     */
2404    public MarkdownType getCopyrightElement() { 
2405      if (this.copyright == null)
2406        if (Configuration.errorOnAutoCreate())
2407          throw new Error("Attempt to auto-create StructureDefinition.copyright");
2408        else if (Configuration.doAutoCreate())
2409          this.copyright = new MarkdownType(); // bb
2410      return this.copyright;
2411    }
2412
2413    public boolean hasCopyrightElement() { 
2414      return this.copyright != null && !this.copyright.isEmpty();
2415    }
2416
2417    public boolean hasCopyright() { 
2418      return this.copyright != null && !this.copyright.isEmpty();
2419    }
2420
2421    /**
2422     * @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.  The short copyright declaration (e.g. (c) '2015+ xyz organization' should be sent in the copyrightLabel element.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
2423     */
2424    public StructureDefinition setCopyrightElement(MarkdownType value) { 
2425      this.copyright = value;
2426      return this;
2427    }
2428
2429    /**
2430     * @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.  The short copyright declaration (e.g. (c) '2015+ xyz organization' should be sent in the copyrightLabel element.
2431     */
2432    public String getCopyright() { 
2433      return this.copyright == null ? null : this.copyright.getValue();
2434    }
2435
2436    /**
2437     * @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.  The short copyright declaration (e.g. (c) '2015+ xyz organization' should be sent in the copyrightLabel element.
2438     */
2439    public StructureDefinition setCopyright(String value) { 
2440      if (value == null)
2441        this.copyright = null;
2442      else {
2443        if (this.copyright == null)
2444          this.copyright = new MarkdownType();
2445        this.copyright.setValue(value);
2446      }
2447      return this;
2448    }
2449
2450    /**
2451     * @return {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
2452     */
2453    public StringType getCopyrightLabelElement() { 
2454      if (this.copyrightLabel == null)
2455        if (Configuration.errorOnAutoCreate())
2456          throw new Error("Attempt to auto-create StructureDefinition.copyrightLabel");
2457        else if (Configuration.doAutoCreate())
2458          this.copyrightLabel = new StringType(); // bb
2459      return this.copyrightLabel;
2460    }
2461
2462    public boolean hasCopyrightLabelElement() { 
2463      return this.copyrightLabel != null && !this.copyrightLabel.isEmpty();
2464    }
2465
2466    public boolean hasCopyrightLabel() { 
2467      return this.copyrightLabel != null && !this.copyrightLabel.isEmpty();
2468    }
2469
2470    /**
2471     * @param value {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
2472     */
2473    public StructureDefinition setCopyrightLabelElement(StringType value) { 
2474      this.copyrightLabel = value;
2475      return this;
2476    }
2477
2478    /**
2479     * @return A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
2480     */
2481    public String getCopyrightLabel() { 
2482      return this.copyrightLabel == null ? null : this.copyrightLabel.getValue();
2483    }
2484
2485    /**
2486     * @param value A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
2487     */
2488    public StructureDefinition setCopyrightLabel(String value) { 
2489      if (Utilities.noString(value))
2490        this.copyrightLabel = null;
2491      else {
2492        if (this.copyrightLabel == null)
2493          this.copyrightLabel = new StringType();
2494        this.copyrightLabel.setValue(value);
2495      }
2496      return this;
2497    }
2498
2499    /**
2500     * @return {@link #keyword} ((DEPRECATED) 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.)
2501     */
2502    public List<Coding> getKeyword() { 
2503      if (this.keyword == null)
2504        this.keyword = new ArrayList<Coding>();
2505      return this.keyword;
2506    }
2507
2508    /**
2509     * @return Returns a reference to <code>this</code> for easy method chaining
2510     */
2511    public StructureDefinition setKeyword(List<Coding> theKeyword) { 
2512      this.keyword = theKeyword;
2513      return this;
2514    }
2515
2516    public boolean hasKeyword() { 
2517      if (this.keyword == null)
2518        return false;
2519      for (Coding item : this.keyword)
2520        if (!item.isEmpty())
2521          return true;
2522      return false;
2523    }
2524
2525    public Coding addKeyword() { //3
2526      Coding t = new Coding();
2527      if (this.keyword == null)
2528        this.keyword = new ArrayList<Coding>();
2529      this.keyword.add(t);
2530      return t;
2531    }
2532
2533    public StructureDefinition addKeyword(Coding t) { //3
2534      if (t == null)
2535        return this;
2536      if (this.keyword == null)
2537        this.keyword = new ArrayList<Coding>();
2538      this.keyword.add(t);
2539      return this;
2540    }
2541
2542    /**
2543     * @return The first repetition of repeating field {@link #keyword}, creating it if it does not already exist {3}
2544     */
2545    public Coding getKeywordFirstRep() { 
2546      if (getKeyword().isEmpty()) {
2547        addKeyword();
2548      }
2549      return getKeyword().get(0);
2550    }
2551
2552    /**
2553     * @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
2554     */
2555    public Enumeration<FHIRVersion> getFhirVersionElement() { 
2556      if (this.fhirVersion == null)
2557        if (Configuration.errorOnAutoCreate())
2558          throw new Error("Attempt to auto-create StructureDefinition.fhirVersion");
2559        else if (Configuration.doAutoCreate())
2560          this.fhirVersion = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory()); // bb
2561      return this.fhirVersion;
2562    }
2563
2564    public boolean hasFhirVersionElement() { 
2565      return this.fhirVersion != null && !this.fhirVersion.isEmpty();
2566    }
2567
2568    public boolean hasFhirVersion() { 
2569      return this.fhirVersion != null && !this.fhirVersion.isEmpty();
2570    }
2571
2572    /**
2573     * @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
2574     */
2575    public StructureDefinition setFhirVersionElement(Enumeration<FHIRVersion> value) { 
2576      this.fhirVersion = value;
2577      return this;
2578    }
2579
2580    /**
2581     * @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.
2582     */
2583    public FHIRVersion getFhirVersion() { 
2584      return this.fhirVersion == null ? null : this.fhirVersion.getValue();
2585    }
2586
2587    /**
2588     * @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.
2589     */
2590    public StructureDefinition setFhirVersion(FHIRVersion value) { 
2591      if (value == null)
2592        this.fhirVersion = null;
2593      else {
2594        if (this.fhirVersion == null)
2595          this.fhirVersion = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
2596        this.fhirVersion.setValue(value);
2597      }
2598      return this;
2599    }
2600
2601    /**
2602     * @return {@link #mapping} (An external specification that the content is mapped to.)
2603     */
2604    public List<StructureDefinitionMappingComponent> getMapping() { 
2605      if (this.mapping == null)
2606        this.mapping = new ArrayList<StructureDefinitionMappingComponent>();
2607      return this.mapping;
2608    }
2609
2610    /**
2611     * @return Returns a reference to <code>this</code> for easy method chaining
2612     */
2613    public StructureDefinition setMapping(List<StructureDefinitionMappingComponent> theMapping) { 
2614      this.mapping = theMapping;
2615      return this;
2616    }
2617
2618    public boolean hasMapping() { 
2619      if (this.mapping == null)
2620        return false;
2621      for (StructureDefinitionMappingComponent item : this.mapping)
2622        if (!item.isEmpty())
2623          return true;
2624      return false;
2625    }
2626
2627    public StructureDefinitionMappingComponent addMapping() { //3
2628      StructureDefinitionMappingComponent t = new StructureDefinitionMappingComponent();
2629      if (this.mapping == null)
2630        this.mapping = new ArrayList<StructureDefinitionMappingComponent>();
2631      this.mapping.add(t);
2632      return t;
2633    }
2634
2635    public StructureDefinition addMapping(StructureDefinitionMappingComponent t) { //3
2636      if (t == null)
2637        return this;
2638      if (this.mapping == null)
2639        this.mapping = new ArrayList<StructureDefinitionMappingComponent>();
2640      this.mapping.add(t);
2641      return this;
2642    }
2643
2644    /**
2645     * @return The first repetition of repeating field {@link #mapping}, creating it if it does not already exist {3}
2646     */
2647    public StructureDefinitionMappingComponent getMappingFirstRep() { 
2648      if (getMapping().isEmpty()) {
2649        addMapping();
2650      }
2651      return getMapping().get(0);
2652    }
2653
2654    /**
2655     * @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
2656     */
2657    public Enumeration<StructureDefinitionKind> getKindElement() { 
2658      if (this.kind == null)
2659        if (Configuration.errorOnAutoCreate())
2660          throw new Error("Attempt to auto-create StructureDefinition.kind");
2661        else if (Configuration.doAutoCreate())
2662          this.kind = new Enumeration<StructureDefinitionKind>(new StructureDefinitionKindEnumFactory()); // bb
2663      return this.kind;
2664    }
2665
2666    public boolean hasKindElement() { 
2667      return this.kind != null && !this.kind.isEmpty();
2668    }
2669
2670    public boolean hasKind() { 
2671      return this.kind != null && !this.kind.isEmpty();
2672    }
2673
2674    /**
2675     * @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
2676     */
2677    public StructureDefinition setKindElement(Enumeration<StructureDefinitionKind> value) { 
2678      this.kind = value;
2679      return this;
2680    }
2681
2682    /**
2683     * @return Defines the kind of structure that this definition is describing.
2684     */
2685    public StructureDefinitionKind getKind() { 
2686      return this.kind == null ? null : this.kind.getValue();
2687    }
2688
2689    /**
2690     * @param value Defines the kind of structure that this definition is describing.
2691     */
2692    public StructureDefinition setKind(StructureDefinitionKind value) { 
2693        if (this.kind == null)
2694          this.kind = new Enumeration<StructureDefinitionKind>(new StructureDefinitionKindEnumFactory());
2695        this.kind.setValue(value);
2696      return this;
2697    }
2698
2699    /**
2700     * @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
2701     */
2702    public BooleanType getAbstractElement() { 
2703      if (this.abstract_ == null)
2704        if (Configuration.errorOnAutoCreate())
2705          throw new Error("Attempt to auto-create StructureDefinition.abstract_");
2706        else if (Configuration.doAutoCreate())
2707          this.abstract_ = new BooleanType(); // bb
2708      return this.abstract_;
2709    }
2710
2711    public boolean hasAbstractElement() { 
2712      return this.abstract_ != null && !this.abstract_.isEmpty();
2713    }
2714
2715    public boolean hasAbstract() { 
2716      return this.abstract_ != null && !this.abstract_.isEmpty();
2717    }
2718
2719    /**
2720     * @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
2721     */
2722    public StructureDefinition setAbstractElement(BooleanType value) { 
2723      this.abstract_ = value;
2724      return this;
2725    }
2726
2727    /**
2728     * @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.
2729     */
2730    public boolean getAbstract() { 
2731      return this.abstract_ == null || this.abstract_.isEmpty() ? false : this.abstract_.getValue();
2732    }
2733
2734    /**
2735     * @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.
2736     */
2737    public StructureDefinition setAbstract(boolean value) { 
2738        if (this.abstract_ == null)
2739          this.abstract_ = new BooleanType();
2740        this.abstract_.setValue(value);
2741      return this;
2742    }
2743
2744    /**
2745     * @return {@link #context} (Identifies the types of resource or data type elements to which the extension can be applied.)
2746     */
2747    public List<StructureDefinitionContextComponent> getContext() { 
2748      if (this.context == null)
2749        this.context = new ArrayList<StructureDefinitionContextComponent>();
2750      return this.context;
2751    }
2752
2753    /**
2754     * @return Returns a reference to <code>this</code> for easy method chaining
2755     */
2756    public StructureDefinition setContext(List<StructureDefinitionContextComponent> theContext) { 
2757      this.context = theContext;
2758      return this;
2759    }
2760
2761    public boolean hasContext() { 
2762      if (this.context == null)
2763        return false;
2764      for (StructureDefinitionContextComponent item : this.context)
2765        if (!item.isEmpty())
2766          return true;
2767      return false;
2768    }
2769
2770    public StructureDefinitionContextComponent addContext() { //3
2771      StructureDefinitionContextComponent t = new StructureDefinitionContextComponent();
2772      if (this.context == null)
2773        this.context = new ArrayList<StructureDefinitionContextComponent>();
2774      this.context.add(t);
2775      return t;
2776    }
2777
2778    public StructureDefinition addContext(StructureDefinitionContextComponent t) { //3
2779      if (t == null)
2780        return this;
2781      if (this.context == null)
2782        this.context = new ArrayList<StructureDefinitionContextComponent>();
2783      this.context.add(t);
2784      return this;
2785    }
2786
2787    /**
2788     * @return The first repetition of repeating field {@link #context}, creating it if it does not already exist {3}
2789     */
2790    public StructureDefinitionContextComponent getContextFirstRep() { 
2791      if (getContext().isEmpty()) {
2792        addContext();
2793      }
2794      return getContext().get(0);
2795    }
2796
2797    /**
2798     * @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.)
2799     */
2800    public List<StringType> getContextInvariant() { 
2801      if (this.contextInvariant == null)
2802        this.contextInvariant = new ArrayList<StringType>();
2803      return this.contextInvariant;
2804    }
2805
2806    /**
2807     * @return Returns a reference to <code>this</code> for easy method chaining
2808     */
2809    public StructureDefinition setContextInvariant(List<StringType> theContextInvariant) { 
2810      this.contextInvariant = theContextInvariant;
2811      return this;
2812    }
2813
2814    public boolean hasContextInvariant() { 
2815      if (this.contextInvariant == null)
2816        return false;
2817      for (StringType item : this.contextInvariant)
2818        if (!item.isEmpty())
2819          return true;
2820      return false;
2821    }
2822
2823    /**
2824     * @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.)
2825     */
2826    public StringType addContextInvariantElement() {//2 
2827      StringType t = new StringType();
2828      if (this.contextInvariant == null)
2829        this.contextInvariant = new ArrayList<StringType>();
2830      this.contextInvariant.add(t);
2831      return t;
2832    }
2833
2834    /**
2835     * @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.)
2836     */
2837    public StructureDefinition addContextInvariant(String value) { //1
2838      StringType t = new StringType();
2839      t.setValue(value);
2840      if (this.contextInvariant == null)
2841        this.contextInvariant = new ArrayList<StringType>();
2842      this.contextInvariant.add(t);
2843      return this;
2844    }
2845
2846    /**
2847     * @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.)
2848     */
2849    public boolean hasContextInvariant(String value) { 
2850      if (this.contextInvariant == null)
2851        return false;
2852      for (StringType v : this.contextInvariant)
2853        if (v.getValue().equals(value)) // string
2854          return true;
2855      return false;
2856    }
2857
2858    /**
2859     * @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
2860     */
2861    public UriType getTypeElement() { 
2862      if (this.type == null)
2863        if (Configuration.errorOnAutoCreate())
2864          throw new Error("Attempt to auto-create StructureDefinition.type");
2865        else if (Configuration.doAutoCreate())
2866          this.type = new UriType(); // bb
2867      return this.type;
2868    }
2869
2870    public boolean hasTypeElement() { 
2871      return this.type != null && !this.type.isEmpty();
2872    }
2873
2874    public boolean hasType() { 
2875      return this.type != null && !this.type.isEmpty();
2876    }
2877
2878    /**
2879     * @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
2880     */
2881    public StructureDefinition setTypeElement(UriType value) { 
2882      this.type = value;
2883      return this;
2884    }
2885
2886    /**
2887     * @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.
2888     */
2889    public String getType() { 
2890      return this.type == null ? null : this.type.getValue();
2891    }
2892
2893    /**
2894     * @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.
2895     */
2896    public StructureDefinition setType(String value) { 
2897        if (this.type == null)
2898          this.type = new UriType();
2899        this.type.setValue(value);
2900      return this;
2901    }
2902
2903    /**
2904     * @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
2905     */
2906    public CanonicalType getBaseDefinitionElement() { 
2907      if (this.baseDefinition == null)
2908        if (Configuration.errorOnAutoCreate())
2909          throw new Error("Attempt to auto-create StructureDefinition.baseDefinition");
2910        else if (Configuration.doAutoCreate())
2911          this.baseDefinition = new CanonicalType(); // bb
2912      return this.baseDefinition;
2913    }
2914
2915    public boolean hasBaseDefinitionElement() { 
2916      return this.baseDefinition != null && !this.baseDefinition.isEmpty();
2917    }
2918
2919    public boolean hasBaseDefinition() { 
2920      return this.baseDefinition != null && !this.baseDefinition.isEmpty();
2921    }
2922
2923    /**
2924     * @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
2925     */
2926    public StructureDefinition setBaseDefinitionElement(CanonicalType value) { 
2927      this.baseDefinition = value;
2928      return this;
2929    }
2930
2931    /**
2932     * @return An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.
2933     */
2934    public String getBaseDefinition() { 
2935      return this.baseDefinition == null ? null : this.baseDefinition.getValue();
2936    }
2937
2938    /**
2939     * @param value An absolute URI that is the base structure from which this type is derived, either by specialization or constraint.
2940     */
2941    public StructureDefinition setBaseDefinition(String value) { 
2942      if (Utilities.noString(value))
2943        this.baseDefinition = null;
2944      else {
2945        if (this.baseDefinition == null)
2946          this.baseDefinition = new CanonicalType();
2947        this.baseDefinition.setValue(value);
2948      }
2949      return this;
2950    }
2951
2952    /**
2953     * @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
2954     */
2955    public Enumeration<TypeDerivationRule> getDerivationElement() { 
2956      if (this.derivation == null)
2957        if (Configuration.errorOnAutoCreate())
2958          throw new Error("Attempt to auto-create StructureDefinition.derivation");
2959        else if (Configuration.doAutoCreate())
2960          this.derivation = new Enumeration<TypeDerivationRule>(new TypeDerivationRuleEnumFactory()); // bb
2961      return this.derivation;
2962    }
2963
2964    public boolean hasDerivationElement() { 
2965      return this.derivation != null && !this.derivation.isEmpty();
2966    }
2967
2968    public boolean hasDerivation() { 
2969      return this.derivation != null && !this.derivation.isEmpty();
2970    }
2971
2972    /**
2973     * @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
2974     */
2975    public StructureDefinition setDerivationElement(Enumeration<TypeDerivationRule> value) { 
2976      this.derivation = value;
2977      return this;
2978    }
2979
2980    /**
2981     * @return How the type relates to the baseDefinition.
2982     */
2983    public TypeDerivationRule getDerivation() { 
2984      return this.derivation == null ? null : this.derivation.getValue();
2985    }
2986
2987    /**
2988     * @param value How the type relates to the baseDefinition.
2989     */
2990    public StructureDefinition setDerivation(TypeDerivationRule value) { 
2991      if (value == null)
2992        this.derivation = null;
2993      else {
2994        if (this.derivation == null)
2995          this.derivation = new Enumeration<TypeDerivationRule>(new TypeDerivationRuleEnumFactory());
2996        this.derivation.setValue(value);
2997      }
2998      return this;
2999    }
3000
3001    /**
3002     * @return {@link #snapshot} (A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition.)
3003     */
3004    public StructureDefinitionSnapshotComponent getSnapshot() { 
3005      if (this.snapshot == null)
3006        if (Configuration.errorOnAutoCreate())
3007          throw new Error("Attempt to auto-create StructureDefinition.snapshot");
3008        else if (Configuration.doAutoCreate())
3009          this.snapshot = new StructureDefinitionSnapshotComponent(); // cc
3010      return this.snapshot;
3011    }
3012
3013    public boolean hasSnapshot() { 
3014      return this.snapshot != null && !this.snapshot.isEmpty();
3015    }
3016
3017    /**
3018     * @param value {@link #snapshot} (A snapshot view is expressed in a standalone form that can be used and interpreted without considering the base StructureDefinition.)
3019     */
3020    public StructureDefinition setSnapshot(StructureDefinitionSnapshotComponent value) { 
3021      this.snapshot = value;
3022      return this;
3023    }
3024
3025    /**
3026     * @return {@link #differential} (A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies.)
3027     */
3028    public StructureDefinitionDifferentialComponent getDifferential() { 
3029      if (this.differential == null)
3030        if (Configuration.errorOnAutoCreate())
3031          throw new Error("Attempt to auto-create StructureDefinition.differential");
3032        else if (Configuration.doAutoCreate())
3033          this.differential = new StructureDefinitionDifferentialComponent(); // cc
3034      return this.differential;
3035    }
3036
3037    public boolean hasDifferential() { 
3038      return this.differential != null && !this.differential.isEmpty();
3039    }
3040
3041    /**
3042     * @param value {@link #differential} (A differential view is expressed relative to the base StructureDefinition - a statement of differences that it applies.)
3043     */
3044    public StructureDefinition setDifferential(StructureDefinitionDifferentialComponent value) { 
3045      this.differential = value;
3046      return this;
3047    }
3048
3049      protected void listChildren(List<Property> children) {
3050        super.listChildren(children);
3051        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 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));
3052        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));
3053        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));
3054        children.add(new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm));
3055        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));
3056        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the structure definition.", 0, 1, title));
3057        children.add(new Property("status", "code", "The status of this structure definition. Enables tracking the life-cycle of the content.", 0, 1, status));
3058        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));
3059        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));
3060        children.add(new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the structure definition.", 0, 1, publisher));
3061        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));
3062        children.add(new Property("description", "markdown", "A free text natural language description of the structure definition from a consumer's perspective.", 0, 1, description));
3063        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));
3064        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));
3065        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));
3066        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.  The short copyright declaration (e.g. (c) '2015+ xyz organization' should be sent in the copyrightLabel element.", 0, 1, copyright));
3067        children.add(new Property("copyrightLabel", "string", "A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').", 0, 1, copyrightLabel));
3068        children.add(new Property("keyword", "Coding", "(DEPRECATED) 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));
3069        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));
3070        children.add(new Property("mapping", "", "An external specification that the content is mapped to.", 0, java.lang.Integer.MAX_VALUE, mapping));
3071        children.add(new Property("kind", "code", "Defines the kind of structure that this definition is describing.", 0, 1, kind));
3072        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_));
3073        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));
3074        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));
3075        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));
3076        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));
3077        children.add(new Property("derivation", "code", "How the type relates to the baseDefinition.", 0, 1, derivation));
3078        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));
3079        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));
3080      }
3081
3082      @Override
3083      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3084        switch (_hash) {
3085        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 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);
3086        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);
3087        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);
3088        case -115699031: /*versionAlgorithm[x]*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
3089        case 1508158071: /*versionAlgorithm*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
3090        case 1836908904: /*versionAlgorithmString*/  return new Property("versionAlgorithm[x]", "string", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
3091        case 1373807809: /*versionAlgorithmCoding*/  return new Property("versionAlgorithm[x]", "Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
3092        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);
3093        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the structure definition.", 0, 1, title);
3094        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);
3095        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);
3096        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);
3097        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the structure definition.", 0, 1, publisher);
3098        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);
3099        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);
3100        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);
3101        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);
3102        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);
3103        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.  The short copyright declaration (e.g. (c) '2015+ xyz organization' should be sent in the copyrightLabel element.", 0, 1, copyright);
3104        case 765157229: /*copyrightLabel*/  return new Property("copyrightLabel", "string", "A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').", 0, 1, copyrightLabel);
3105        case -814408215: /*keyword*/  return new Property("keyword", "Coding", "(DEPRECATED) 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);
3106        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);
3107        case 837556430: /*mapping*/  return new Property("mapping", "", "An external specification that the content is mapped to.", 0, java.lang.Integer.MAX_VALUE, mapping);
3108        case 3292052: /*kind*/  return new Property("kind", "code", "Defines the kind of structure that this definition is describing.", 0, 1, kind);
3109        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_);
3110        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);
3111        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);
3112        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);
3113        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);
3114        case -1353885513: /*derivation*/  return new Property("derivation", "code", "How the type relates to the baseDefinition.", 0, 1, derivation);
3115        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);
3116        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);
3117        default: return super.getNamedProperty(_hash, _name, _checkValid);
3118        }
3119
3120      }
3121
3122      @Override
3123      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3124        switch (hash) {
3125        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
3126        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
3127        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
3128        case 1508158071: /*versionAlgorithm*/ return this.versionAlgorithm == null ? new Base[0] : new Base[] {this.versionAlgorithm}; // DataType
3129        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3130        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
3131        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
3132        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
3133        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
3134        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
3135        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
3136        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
3137        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
3138        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
3139        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
3140        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
3141        case 765157229: /*copyrightLabel*/ return this.copyrightLabel == null ? new Base[0] : new Base[] {this.copyrightLabel}; // StringType
3142        case -814408215: /*keyword*/ return this.keyword == null ? new Base[0] : this.keyword.toArray(new Base[this.keyword.size()]); // Coding
3143        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : new Base[] {this.fhirVersion}; // Enumeration<FHIRVersion>
3144        case 837556430: /*mapping*/ return this.mapping == null ? new Base[0] : this.mapping.toArray(new Base[this.mapping.size()]); // StructureDefinitionMappingComponent
3145        case 3292052: /*kind*/ return this.kind == null ? new Base[0] : new Base[] {this.kind}; // Enumeration<StructureDefinitionKind>
3146        case 1732898850: /*abstract*/ return this.abstract_ == null ? new Base[0] : new Base[] {this.abstract_}; // BooleanType
3147        case 951530927: /*context*/ return this.context == null ? new Base[0] : this.context.toArray(new Base[this.context.size()]); // StructureDefinitionContextComponent
3148        case -802505007: /*contextInvariant*/ return this.contextInvariant == null ? new Base[0] : this.contextInvariant.toArray(new Base[this.contextInvariant.size()]); // StringType
3149        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // UriType
3150        case 1139771140: /*baseDefinition*/ return this.baseDefinition == null ? new Base[0] : new Base[] {this.baseDefinition}; // CanonicalType
3151        case -1353885513: /*derivation*/ return this.derivation == null ? new Base[0] : new Base[] {this.derivation}; // Enumeration<TypeDerivationRule>
3152        case 284874180: /*snapshot*/ return this.snapshot == null ? new Base[0] : new Base[] {this.snapshot}; // StructureDefinitionSnapshotComponent
3153        case -1196150917: /*differential*/ return this.differential == null ? new Base[0] : new Base[] {this.differential}; // StructureDefinitionDifferentialComponent
3154        default: return super.getProperty(hash, name, checkValid);
3155        }
3156
3157      }
3158
3159      @Override
3160      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3161        switch (hash) {
3162        case 116079: // url
3163          this.url = TypeConvertor.castToUri(value); // UriType
3164          return value;
3165        case -1618432855: // identifier
3166          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
3167          return value;
3168        case 351608024: // version
3169          this.version = TypeConvertor.castToString(value); // StringType
3170          return value;
3171        case 1508158071: // versionAlgorithm
3172          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
3173          return value;
3174        case 3373707: // name
3175          this.name = TypeConvertor.castToString(value); // StringType
3176          return value;
3177        case 110371416: // title
3178          this.title = TypeConvertor.castToString(value); // StringType
3179          return value;
3180        case -892481550: // status
3181          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3182          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3183          return value;
3184        case -404562712: // experimental
3185          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3186          return value;
3187        case 3076014: // date
3188          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3189          return value;
3190        case 1447404028: // publisher
3191          this.publisher = TypeConvertor.castToString(value); // StringType
3192          return value;
3193        case 951526432: // contact
3194          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3195          return value;
3196        case -1724546052: // description
3197          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3198          return value;
3199        case -669707736: // useContext
3200          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
3201          return value;
3202        case -507075711: // jurisdiction
3203          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3204          return value;
3205        case -220463842: // purpose
3206          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3207          return value;
3208        case 1522889671: // copyright
3209          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
3210          return value;
3211        case 765157229: // copyrightLabel
3212          this.copyrightLabel = TypeConvertor.castToString(value); // StringType
3213          return value;
3214        case -814408215: // keyword
3215          this.getKeyword().add(TypeConvertor.castToCoding(value)); // Coding
3216          return value;
3217        case 461006061: // fhirVersion
3218          value = new FHIRVersionEnumFactory().fromType(TypeConvertor.castToCode(value));
3219          this.fhirVersion = (Enumeration) value; // Enumeration<FHIRVersion>
3220          return value;
3221        case 837556430: // mapping
3222          this.getMapping().add((StructureDefinitionMappingComponent) value); // StructureDefinitionMappingComponent
3223          return value;
3224        case 3292052: // kind
3225          value = new StructureDefinitionKindEnumFactory().fromType(TypeConvertor.castToCode(value));
3226          this.kind = (Enumeration) value; // Enumeration<StructureDefinitionKind>
3227          return value;
3228        case 1732898850: // abstract
3229          this.abstract_ = TypeConvertor.castToBoolean(value); // BooleanType
3230          return value;
3231        case 951530927: // context
3232          this.getContext().add((StructureDefinitionContextComponent) value); // StructureDefinitionContextComponent
3233          return value;
3234        case -802505007: // contextInvariant
3235          this.getContextInvariant().add(TypeConvertor.castToString(value)); // StringType
3236          return value;
3237        case 3575610: // type
3238          this.type = TypeConvertor.castToUri(value); // UriType
3239          return value;
3240        case 1139771140: // baseDefinition
3241          this.baseDefinition = TypeConvertor.castToCanonical(value); // CanonicalType
3242          return value;
3243        case -1353885513: // derivation
3244          value = new TypeDerivationRuleEnumFactory().fromType(TypeConvertor.castToCode(value));
3245          this.derivation = (Enumeration) value; // Enumeration<TypeDerivationRule>
3246          return value;
3247        case 284874180: // snapshot
3248          this.snapshot = (StructureDefinitionSnapshotComponent) value; // StructureDefinitionSnapshotComponent
3249          return value;
3250        case -1196150917: // differential
3251          this.differential = (StructureDefinitionDifferentialComponent) value; // StructureDefinitionDifferentialComponent
3252          return value;
3253        default: return super.setProperty(hash, name, value);
3254        }
3255
3256      }
3257
3258      @Override
3259      public Base setProperty(String name, Base value) throws FHIRException {
3260        if (name.equals("url")) {
3261          this.url = TypeConvertor.castToUri(value); // UriType
3262        } else if (name.equals("identifier")) {
3263          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
3264        } else if (name.equals("version")) {
3265          this.version = TypeConvertor.castToString(value); // StringType
3266        } else if (name.equals("versionAlgorithm[x]")) {
3267          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
3268        } else if (name.equals("name")) {
3269          this.name = TypeConvertor.castToString(value); // StringType
3270        } else if (name.equals("title")) {
3271          this.title = TypeConvertor.castToString(value); // StringType
3272        } else if (name.equals("status")) {
3273          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3274          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3275        } else if (name.equals("experimental")) {
3276          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3277        } else if (name.equals("date")) {
3278          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3279        } else if (name.equals("publisher")) {
3280          this.publisher = TypeConvertor.castToString(value); // StringType
3281        } else if (name.equals("contact")) {
3282          this.getContact().add(TypeConvertor.castToContactDetail(value));
3283        } else if (name.equals("description")) {
3284          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3285        } else if (name.equals("useContext")) {
3286          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
3287        } else if (name.equals("jurisdiction")) {
3288          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
3289        } else if (name.equals("purpose")) {
3290          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3291        } else if (name.equals("copyright")) {
3292          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
3293        } else if (name.equals("copyrightLabel")) {
3294          this.copyrightLabel = TypeConvertor.castToString(value); // StringType
3295        } else if (name.equals("keyword")) {
3296          this.getKeyword().add(TypeConvertor.castToCoding(value));
3297        } else if (name.equals("fhirVersion")) {
3298          value = new FHIRVersionEnumFactory().fromType(TypeConvertor.castToCode(value));
3299          this.fhirVersion = (Enumeration) value; // Enumeration<FHIRVersion>
3300        } else if (name.equals("mapping")) {
3301          this.getMapping().add((StructureDefinitionMappingComponent) value);
3302        } else if (name.equals("kind")) {
3303          value = new StructureDefinitionKindEnumFactory().fromType(TypeConvertor.castToCode(value));
3304          this.kind = (Enumeration) value; // Enumeration<StructureDefinitionKind>
3305        } else if (name.equals("abstract")) {
3306          this.abstract_ = TypeConvertor.castToBoolean(value); // BooleanType
3307        } else if (name.equals("context")) {
3308          this.getContext().add((StructureDefinitionContextComponent) value);
3309        } else if (name.equals("contextInvariant")) {
3310          this.getContextInvariant().add(TypeConvertor.castToString(value));
3311        } else if (name.equals("type")) {
3312          this.type = TypeConvertor.castToUri(value); // UriType
3313        } else if (name.equals("baseDefinition")) {
3314          this.baseDefinition = TypeConvertor.castToCanonical(value); // CanonicalType
3315        } else if (name.equals("derivation")) {
3316          value = new TypeDerivationRuleEnumFactory().fromType(TypeConvertor.castToCode(value));
3317          this.derivation = (Enumeration) value; // Enumeration<TypeDerivationRule>
3318        } else if (name.equals("snapshot")) {
3319          this.snapshot = (StructureDefinitionSnapshotComponent) value; // StructureDefinitionSnapshotComponent
3320        } else if (name.equals("differential")) {
3321          this.differential = (StructureDefinitionDifferentialComponent) value; // StructureDefinitionDifferentialComponent
3322        } else
3323          return super.setProperty(name, value);
3324        return value;
3325      }
3326
3327      @Override
3328      public Base makeProperty(int hash, String name) throws FHIRException {
3329        switch (hash) {
3330        case 116079:  return getUrlElement();
3331        case -1618432855:  return addIdentifier(); 
3332        case 351608024:  return getVersionElement();
3333        case -115699031:  return getVersionAlgorithm();
3334        case 1508158071:  return getVersionAlgorithm();
3335        case 3373707:  return getNameElement();
3336        case 110371416:  return getTitleElement();
3337        case -892481550:  return getStatusElement();
3338        case -404562712:  return getExperimentalElement();
3339        case 3076014:  return getDateElement();
3340        case 1447404028:  return getPublisherElement();
3341        case 951526432:  return addContact(); 
3342        case -1724546052:  return getDescriptionElement();
3343        case -669707736:  return addUseContext(); 
3344        case -507075711:  return addJurisdiction(); 
3345        case -220463842:  return getPurposeElement();
3346        case 1522889671:  return getCopyrightElement();
3347        case 765157229:  return getCopyrightLabelElement();
3348        case -814408215:  return addKeyword(); 
3349        case 461006061:  return getFhirVersionElement();
3350        case 837556430:  return addMapping(); 
3351        case 3292052:  return getKindElement();
3352        case 1732898850:  return getAbstractElement();
3353        case 951530927:  return addContext(); 
3354        case -802505007:  return addContextInvariantElement();
3355        case 3575610:  return getTypeElement();
3356        case 1139771140:  return getBaseDefinitionElement();
3357        case -1353885513:  return getDerivationElement();
3358        case 284874180:  return getSnapshot();
3359        case -1196150917:  return getDifferential();
3360        default: return super.makeProperty(hash, name);
3361        }
3362
3363      }
3364
3365      @Override
3366      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3367        switch (hash) {
3368        case 116079: /*url*/ return new String[] {"uri"};
3369        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
3370        case 351608024: /*version*/ return new String[] {"string"};
3371        case 1508158071: /*versionAlgorithm*/ return new String[] {"string", "Coding"};
3372        case 3373707: /*name*/ return new String[] {"string"};
3373        case 110371416: /*title*/ return new String[] {"string"};
3374        case -892481550: /*status*/ return new String[] {"code"};
3375        case -404562712: /*experimental*/ return new String[] {"boolean"};
3376        case 3076014: /*date*/ return new String[] {"dateTime"};
3377        case 1447404028: /*publisher*/ return new String[] {"string"};
3378        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
3379        case -1724546052: /*description*/ return new String[] {"markdown"};
3380        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
3381        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
3382        case -220463842: /*purpose*/ return new String[] {"markdown"};
3383        case 1522889671: /*copyright*/ return new String[] {"markdown"};
3384        case 765157229: /*copyrightLabel*/ return new String[] {"string"};
3385        case -814408215: /*keyword*/ return new String[] {"Coding"};
3386        case 461006061: /*fhirVersion*/ return new String[] {"code"};
3387        case 837556430: /*mapping*/ return new String[] {};
3388        case 3292052: /*kind*/ return new String[] {"code"};
3389        case 1732898850: /*abstract*/ return new String[] {"boolean"};
3390        case 951530927: /*context*/ return new String[] {};
3391        case -802505007: /*contextInvariant*/ return new String[] {"string"};
3392        case 3575610: /*type*/ return new String[] {"uri"};
3393        case 1139771140: /*baseDefinition*/ return new String[] {"canonical"};
3394        case -1353885513: /*derivation*/ return new String[] {"code"};
3395        case 284874180: /*snapshot*/ return new String[] {};
3396        case -1196150917: /*differential*/ return new String[] {};
3397        default: return super.getTypesForProperty(hash, name);
3398        }
3399
3400      }
3401
3402      @Override
3403      public Base addChild(String name) throws FHIRException {
3404        if (name.equals("url")) {
3405          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.url");
3406        }
3407        else if (name.equals("identifier")) {
3408          return addIdentifier();
3409        }
3410        else if (name.equals("version")) {
3411          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.version");
3412        }
3413        else if (name.equals("versionAlgorithmString")) {
3414          this.versionAlgorithm = new StringType();
3415          return this.versionAlgorithm;
3416        }
3417        else if (name.equals("versionAlgorithmCoding")) {
3418          this.versionAlgorithm = new Coding();
3419          return this.versionAlgorithm;
3420        }
3421        else if (name.equals("name")) {
3422          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.name");
3423        }
3424        else if (name.equals("title")) {
3425          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.title");
3426        }
3427        else if (name.equals("status")) {
3428          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.status");
3429        }
3430        else if (name.equals("experimental")) {
3431          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.experimental");
3432        }
3433        else if (name.equals("date")) {
3434          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.date");
3435        }
3436        else if (name.equals("publisher")) {
3437          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.publisher");
3438        }
3439        else if (name.equals("contact")) {
3440          return addContact();
3441        }
3442        else if (name.equals("description")) {
3443          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.description");
3444        }
3445        else if (name.equals("useContext")) {
3446          return addUseContext();
3447        }
3448        else if (name.equals("jurisdiction")) {
3449          return addJurisdiction();
3450        }
3451        else if (name.equals("purpose")) {
3452          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.purpose");
3453        }
3454        else if (name.equals("copyright")) {
3455          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.copyright");
3456        }
3457        else if (name.equals("copyrightLabel")) {
3458          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.copyrightLabel");
3459        }
3460        else if (name.equals("keyword")) {
3461          return addKeyword();
3462        }
3463        else if (name.equals("fhirVersion")) {
3464          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.fhirVersion");
3465        }
3466        else if (name.equals("mapping")) {
3467          return addMapping();
3468        }
3469        else if (name.equals("kind")) {
3470          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.kind");
3471        }
3472        else if (name.equals("abstract")) {
3473          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.abstract");
3474        }
3475        else if (name.equals("context")) {
3476          return addContext();
3477        }
3478        else if (name.equals("contextInvariant")) {
3479          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.contextInvariant");
3480        }
3481        else if (name.equals("type")) {
3482          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.type");
3483        }
3484        else if (name.equals("baseDefinition")) {
3485          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.baseDefinition");
3486        }
3487        else if (name.equals("derivation")) {
3488          throw new FHIRException("Cannot call addChild on a primitive type StructureDefinition.derivation");
3489        }
3490        else if (name.equals("snapshot")) {
3491          this.snapshot = new StructureDefinitionSnapshotComponent();
3492          return this.snapshot;
3493        }
3494        else if (name.equals("differential")) {
3495          this.differential = new StructureDefinitionDifferentialComponent();
3496          return this.differential;
3497        }
3498        else
3499          return super.addChild(name);
3500      }
3501
3502  public String fhirType() {
3503    return "StructureDefinition";
3504
3505  }
3506
3507      public StructureDefinition copy() {
3508        StructureDefinition dst = new StructureDefinition();
3509        copyValues(dst);
3510        return dst;
3511      }
3512
3513      public void copyValues(StructureDefinition dst) {
3514        super.copyValues(dst);
3515        dst.url = url == null ? null : url.copy();
3516        if (identifier != null) {
3517          dst.identifier = new ArrayList<Identifier>();
3518          for (Identifier i : identifier)
3519            dst.identifier.add(i.copy());
3520        };
3521        dst.version = version == null ? null : version.copy();
3522        dst.versionAlgorithm = versionAlgorithm == null ? null : versionAlgorithm.copy();
3523        dst.name = name == null ? null : name.copy();
3524        dst.title = title == null ? null : title.copy();
3525        dst.status = status == null ? null : status.copy();
3526        dst.experimental = experimental == null ? null : experimental.copy();
3527        dst.date = date == null ? null : date.copy();
3528        dst.publisher = publisher == null ? null : publisher.copy();
3529        if (contact != null) {
3530          dst.contact = new ArrayList<ContactDetail>();
3531          for (ContactDetail i : contact)
3532            dst.contact.add(i.copy());
3533        };
3534        dst.description = description == null ? null : description.copy();
3535        if (useContext != null) {
3536          dst.useContext = new ArrayList<UsageContext>();
3537          for (UsageContext i : useContext)
3538            dst.useContext.add(i.copy());
3539        };
3540        if (jurisdiction != null) {
3541          dst.jurisdiction = new ArrayList<CodeableConcept>();
3542          for (CodeableConcept i : jurisdiction)
3543            dst.jurisdiction.add(i.copy());
3544        };
3545        dst.purpose = purpose == null ? null : purpose.copy();
3546        dst.copyright = copyright == null ? null : copyright.copy();
3547        dst.copyrightLabel = copyrightLabel == null ? null : copyrightLabel.copy();
3548        if (keyword != null) {
3549          dst.keyword = new ArrayList<Coding>();
3550          for (Coding i : keyword)
3551            dst.keyword.add(i.copy());
3552        };
3553        dst.fhirVersion = fhirVersion == null ? null : fhirVersion.copy();
3554        if (mapping != null) {
3555          dst.mapping = new ArrayList<StructureDefinitionMappingComponent>();
3556          for (StructureDefinitionMappingComponent i : mapping)
3557            dst.mapping.add(i.copy());
3558        };
3559        dst.kind = kind == null ? null : kind.copy();
3560        dst.abstract_ = abstract_ == null ? null : abstract_.copy();
3561        if (context != null) {
3562          dst.context = new ArrayList<StructureDefinitionContextComponent>();
3563          for (StructureDefinitionContextComponent i : context)
3564            dst.context.add(i.copy());
3565        };
3566        if (contextInvariant != null) {
3567          dst.contextInvariant = new ArrayList<StringType>();
3568          for (StringType i : contextInvariant)
3569            dst.contextInvariant.add(i.copy());
3570        };
3571        dst.type = type == null ? null : type.copy();
3572        dst.baseDefinition = baseDefinition == null ? null : baseDefinition.copy();
3573        dst.derivation = derivation == null ? null : derivation.copy();
3574        dst.snapshot = snapshot == null ? null : snapshot.copy();
3575        dst.differential = differential == null ? null : differential.copy();
3576      }
3577
3578      protected StructureDefinition typedCopy() {
3579        return copy();
3580      }
3581
3582      @Override
3583      public boolean equalsDeep(Base other_) {
3584        if (!super.equalsDeep(other_))
3585          return false;
3586        if (!(other_ instanceof StructureDefinition))
3587          return false;
3588        StructureDefinition o = (StructureDefinition) other_;
3589        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
3590           && compareDeep(versionAlgorithm, o.versionAlgorithm, true) && compareDeep(name, o.name, true) && compareDeep(title, o.title, true)
3591           && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true)
3592           && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true)
3593           && compareDeep(useContext, o.useContext, true) && compareDeep(jurisdiction, o.jurisdiction, true)
3594           && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true) && compareDeep(copyrightLabel, o.copyrightLabel, true)
3595           && compareDeep(keyword, o.keyword, true) && compareDeep(fhirVersion, o.fhirVersion, true) && compareDeep(mapping, o.mapping, true)
3596           && compareDeep(kind, o.kind, true) && compareDeep(abstract_, o.abstract_, true) && compareDeep(context, o.context, true)
3597           && compareDeep(contextInvariant, o.contextInvariant, true) && compareDeep(type, o.type, true) && compareDeep(baseDefinition, o.baseDefinition, true)
3598           && compareDeep(derivation, o.derivation, true) && compareDeep(snapshot, o.snapshot, true) && compareDeep(differential, o.differential, true)
3599          ;
3600      }
3601
3602      @Override
3603      public boolean equalsShallow(Base other_) {
3604        if (!super.equalsShallow(other_))
3605          return false;
3606        if (!(other_ instanceof StructureDefinition))
3607          return false;
3608        StructureDefinition o = (StructureDefinition) other_;
3609        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
3610           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
3611           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
3612           && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true) && compareValues(copyrightLabel, o.copyrightLabel, true)
3613           && compareValues(fhirVersion, o.fhirVersion, true) && compareValues(kind, o.kind, true) && compareValues(abstract_, o.abstract_, true)
3614           && compareValues(contextInvariant, o.contextInvariant, true) && compareValues(type, o.type, true) && compareValues(baseDefinition, o.baseDefinition, true)
3615           && compareValues(derivation, o.derivation, true);
3616      }
3617
3618      public boolean isEmpty() {
3619        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
3620          , versionAlgorithm, name, title, status, experimental, date, publisher, contact
3621          , description, useContext, jurisdiction, purpose, copyright, copyrightLabel, keyword
3622          , fhirVersion, mapping, kind, abstract_, context, contextInvariant, type, baseDefinition
3623          , derivation, snapshot, differential);
3624      }
3625
3626  @Override
3627  public ResourceType getResourceType() {
3628    return ResourceType.StructureDefinition;
3629   }
3630
3631 /**
3632   * Search parameter: <b>abstract</b>
3633   * <p>
3634   * Description: <b>Whether the structure is abstract</b><br>
3635   * Type: <b>token</b><br>
3636   * Path: <b>StructureDefinition.abstract</b><br>
3637   * </p>
3638   */
3639  @SearchParamDefinition(name="abstract", path="StructureDefinition.abstract", description="Whether the structure is abstract", type="token" )
3640  public static final String SP_ABSTRACT = "abstract";
3641 /**
3642   * <b>Fluent Client</b> search parameter constant for <b>abstract</b>
3643   * <p>
3644   * Description: <b>Whether the structure is abstract</b><br>
3645   * Type: <b>token</b><br>
3646   * Path: <b>StructureDefinition.abstract</b><br>
3647   * </p>
3648   */
3649  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ABSTRACT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ABSTRACT);
3650
3651 /**
3652   * Search parameter: <b>base-path</b>
3653   * <p>
3654   * Description: <b>Path that identifies the base element</b><br>
3655   * Type: <b>token</b><br>
3656   * Path: <b>StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path</b><br>
3657   * </p>
3658   */
3659  @SearchParamDefinition(name="base-path", path="StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path", description="Path that identifies the base element", type="token" )
3660  public static final String SP_BASE_PATH = "base-path";
3661 /**
3662   * <b>Fluent Client</b> search parameter constant for <b>base-path</b>
3663   * <p>
3664   * Description: <b>Path that identifies the base element</b><br>
3665   * Type: <b>token</b><br>
3666   * Path: <b>StructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path</b><br>
3667   * </p>
3668   */
3669  public static final ca.uhn.fhir.rest.gclient.TokenClientParam BASE_PATH = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_BASE_PATH);
3670
3671 /**
3672   * Search parameter: <b>base</b>
3673   * <p>
3674   * Description: <b>Definition that this type is constrained/specialized from</b><br>
3675   * Type: <b>reference</b><br>
3676   * Path: <b>StructureDefinition.baseDefinition</b><br>
3677   * </p>
3678   */
3679  @SearchParamDefinition(name="base", path="StructureDefinition.baseDefinition", description="Definition that this type is constrained/specialized from", type="reference", target={StructureDefinition.class } )
3680  public static final String SP_BASE = "base";
3681 /**
3682   * <b>Fluent Client</b> search parameter constant for <b>base</b>
3683   * <p>
3684   * Description: <b>Definition that this type is constrained/specialized from</b><br>
3685   * Type: <b>reference</b><br>
3686   * Path: <b>StructureDefinition.baseDefinition</b><br>
3687   * </p>
3688   */
3689  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam BASE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_BASE);
3690
3691/**
3692   * Constant for fluent queries to be used to add include statements. Specifies
3693   * the path value of "<b>StructureDefinition:base</b>".
3694   */
3695  public static final ca.uhn.fhir.model.api.Include INCLUDE_BASE = new ca.uhn.fhir.model.api.Include("StructureDefinition:base").toLocked();
3696
3697 /**
3698   * Search parameter: <b>derivation</b>
3699   * <p>
3700   * Description: <b>specialization | constraint - How relates to base definition</b><br>
3701   * Type: <b>token</b><br>
3702   * Path: <b>StructureDefinition.derivation</b><br>
3703   * </p>
3704   */
3705  @SearchParamDefinition(name="derivation", path="StructureDefinition.derivation", description="specialization | constraint - How relates to base definition", type="token" )
3706  public static final String SP_DERIVATION = "derivation";
3707 /**
3708   * <b>Fluent Client</b> search parameter constant for <b>derivation</b>
3709   * <p>
3710   * Description: <b>specialization | constraint - How relates to base definition</b><br>
3711   * Type: <b>token</b><br>
3712   * Path: <b>StructureDefinition.derivation</b><br>
3713   * </p>
3714   */
3715  public static final ca.uhn.fhir.rest.gclient.TokenClientParam DERIVATION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_DERIVATION);
3716
3717 /**
3718   * Search parameter: <b>experimental</b>
3719   * <p>
3720   * Description: <b>For testing purposes, not real usage</b><br>
3721   * Type: <b>token</b><br>
3722   * Path: <b>StructureDefinition.experimental</b><br>
3723   * </p>
3724   */
3725  @SearchParamDefinition(name="experimental", path="StructureDefinition.experimental", description="For testing purposes, not real usage", type="token" )
3726  public static final String SP_EXPERIMENTAL = "experimental";
3727 /**
3728   * <b>Fluent Client</b> search parameter constant for <b>experimental</b>
3729   * <p>
3730   * Description: <b>For testing purposes, not real usage</b><br>
3731   * Type: <b>token</b><br>
3732   * Path: <b>StructureDefinition.experimental</b><br>
3733   * </p>
3734   */
3735  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EXPERIMENTAL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EXPERIMENTAL);
3736
3737 /**
3738   * Search parameter: <b>ext-context-expression</b>
3739   * <p>
3740   * Description: <b>An expression of extension context assigned to the structure definition</b><br>
3741   * Type: <b>token</b><br>
3742   * Path: <b>StructureDefinition.context.expression</b><br>
3743   * </p>
3744   */
3745  @SearchParamDefinition(name="ext-context-expression", path="StructureDefinition.context.expression", description="An expression of extension context assigned to the structure definition", type="token" )
3746  public static final String SP_EXT_CONTEXT_EXPRESSION = "ext-context-expression";
3747 /**
3748   * <b>Fluent Client</b> search parameter constant for <b>ext-context-expression</b>
3749   * <p>
3750   * Description: <b>An expression of extension context assigned to the structure definition</b><br>
3751   * Type: <b>token</b><br>
3752   * Path: <b>StructureDefinition.context.expression</b><br>
3753   * </p>
3754   */
3755  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EXT_CONTEXT_EXPRESSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EXT_CONTEXT_EXPRESSION);
3756
3757 /**
3758   * Search parameter: <b>ext-context-type</b>
3759   * <p>
3760   * Description: <b>A type of extension context assigned to the structure definition</b><br>
3761   * Type: <b>token</b><br>
3762   * Path: <b>StructureDefinition.context.type</b><br>
3763   * </p>
3764   */
3765  @SearchParamDefinition(name="ext-context-type", path="StructureDefinition.context.type", description="A type of extension context assigned to the structure definition", type="token" )
3766  public static final String SP_EXT_CONTEXT_TYPE = "ext-context-type";
3767 /**
3768   * <b>Fluent Client</b> search parameter constant for <b>ext-context-type</b>
3769   * <p>
3770   * Description: <b>A type of extension context assigned to the structure definition</b><br>
3771   * Type: <b>token</b><br>
3772   * Path: <b>StructureDefinition.context.type</b><br>
3773   * </p>
3774   */
3775  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EXT_CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EXT_CONTEXT_TYPE);
3776
3777 /**
3778   * Search parameter: <b>ext-context</b>
3779   * <p>
3780   * Description: <b>An extension context assigned to the structure definition</b><br>
3781   * Type: <b>composite</b><br>
3782   * Path: <b>StructureDefinition.context</b><br>
3783   * </p>
3784   */
3785  @SearchParamDefinition(name="ext-context", path="StructureDefinition.context", description="An extension context assigned to the structure definition", type="composite", compositeOf={"ext-context-type", "ext-context-expression"} )
3786  public static final String SP_EXT_CONTEXT = "ext-context";
3787 /**
3788   * <b>Fluent Client</b> search parameter constant for <b>ext-context</b>
3789   * <p>
3790   * Description: <b>An extension context assigned to the structure definition</b><br>
3791   * Type: <b>composite</b><br>
3792   * Path: <b>StructureDefinition.context</b><br>
3793   * </p>
3794   */
3795  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> EXT_CONTEXT = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_EXT_CONTEXT);
3796
3797 /**
3798   * Search parameter: <b>keyword</b>
3799   * <p>
3800   * Description: <b>A code for the StructureDefinition</b><br>
3801   * Type: <b>token</b><br>
3802   * Path: <b>StructureDefinition.keyword</b><br>
3803   * </p>
3804   */
3805  @SearchParamDefinition(name="keyword", path="StructureDefinition.keyword", description="A code for the StructureDefinition", type="token" )
3806  public static final String SP_KEYWORD = "keyword";
3807 /**
3808   * <b>Fluent Client</b> search parameter constant for <b>keyword</b>
3809   * <p>
3810   * Description: <b>A code for the StructureDefinition</b><br>
3811   * Type: <b>token</b><br>
3812   * Path: <b>StructureDefinition.keyword</b><br>
3813   * </p>
3814   */
3815  public static final ca.uhn.fhir.rest.gclient.TokenClientParam KEYWORD = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_KEYWORD);
3816
3817 /**
3818   * Search parameter: <b>kind</b>
3819   * <p>
3820   * Description: <b>primitive-type | complex-type | resource | logical</b><br>
3821   * Type: <b>token</b><br>
3822   * Path: <b>StructureDefinition.kind</b><br>
3823   * </p>
3824   */
3825  @SearchParamDefinition(name="kind", path="StructureDefinition.kind", description="primitive-type | complex-type | resource | logical", type="token" )
3826  public static final String SP_KIND = "kind";
3827 /**
3828   * <b>Fluent Client</b> search parameter constant for <b>kind</b>
3829   * <p>
3830   * Description: <b>primitive-type | complex-type | resource | logical</b><br>
3831   * Type: <b>token</b><br>
3832   * Path: <b>StructureDefinition.kind</b><br>
3833   * </p>
3834   */
3835  public static final ca.uhn.fhir.rest.gclient.TokenClientParam KIND = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_KIND);
3836
3837 /**
3838   * Search parameter: <b>path</b>
3839   * <p>
3840   * Description: <b>A path that is constrained in the StructureDefinition</b><br>
3841   * Type: <b>token</b><br>
3842   * Path: <b>StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path</b><br>
3843   * </p>
3844   */
3845  @SearchParamDefinition(name="path", path="StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path", description="A path that is constrained in the StructureDefinition", type="token" )
3846  public static final String SP_PATH = "path";
3847 /**
3848   * <b>Fluent Client</b> search parameter constant for <b>path</b>
3849   * <p>
3850   * Description: <b>A path that is constrained in the StructureDefinition</b><br>
3851   * Type: <b>token</b><br>
3852   * Path: <b>StructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path</b><br>
3853   * </p>
3854   */
3855  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PATH = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PATH);
3856
3857 /**
3858   * Search parameter: <b>type</b>
3859   * <p>
3860   * Description: <b>Type defined or constrained by this structure</b><br>
3861   * Type: <b>uri</b><br>
3862   * Path: <b>StructureDefinition.type</b><br>
3863   * </p>
3864   */
3865  @SearchParamDefinition(name="type", path="StructureDefinition.type", description="Type defined or constrained by this structure", type="uri" )
3866  public static final String SP_TYPE = "type";
3867 /**
3868   * <b>Fluent Client</b> search parameter constant for <b>type</b>
3869   * <p>
3870   * Description: <b>Type defined or constrained by this structure</b><br>
3871   * Type: <b>uri</b><br>
3872   * Path: <b>StructureDefinition.type</b><br>
3873   * </p>
3874   */
3875  public static final ca.uhn.fhir.rest.gclient.UriClientParam TYPE = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_TYPE);
3876
3877 /**
3878   * Search parameter: <b>valueset</b>
3879   * <p>
3880   * Description: <b>A vocabulary binding reference</b><br>
3881   * Type: <b>reference</b><br>
3882   * Path: <b>StructureDefinition.snapshot.element.binding.valueSet</b><br>
3883   * </p>
3884   */
3885  @SearchParamDefinition(name="valueset", path="StructureDefinition.snapshot.element.binding.valueSet", description="A vocabulary binding reference", type="reference", target={ValueSet.class } )
3886  public static final String SP_VALUESET = "valueset";
3887 /**
3888   * <b>Fluent Client</b> search parameter constant for <b>valueset</b>
3889   * <p>
3890   * Description: <b>A vocabulary binding reference</b><br>
3891   * Type: <b>reference</b><br>
3892   * Path: <b>StructureDefinition.snapshot.element.binding.valueSet</b><br>
3893   * </p>
3894   */
3895  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam VALUESET = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_VALUESET);
3896
3897/**
3898   * Constant for fluent queries to be used to add include statements. Specifies
3899   * the path value of "<b>StructureDefinition:valueset</b>".
3900   */
3901  public static final ca.uhn.fhir.model.api.Include INCLUDE_VALUESET = new ca.uhn.fhir.model.api.Include("StructureDefinition:valueset").toLocked();
3902
3903 /**
3904   * Search parameter: <b>context-quantity</b>
3905   * <p>
3906   * Description: <b>Multiple Resources: 
3907
3908* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3909* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3910* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3911* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3912* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3913* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3914* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3915* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3916* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3917* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3918* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3919* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3920* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3921* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3922</b><br>
3923   * Type: <b>quantity</b><br>
3924   * 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>
3925   * </p>
3926   */
3927  @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" )
3928  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
3929 /**
3930   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
3931   * <p>
3932   * Description: <b>Multiple Resources: 
3933
3934* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3935* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3936* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3937* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3938* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3939* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3940* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3941* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3942* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3943* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3944* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3945* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3946* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3947* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3948</b><br>
3949   * Type: <b>quantity</b><br>
3950   * 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>
3951   * </p>
3952   */
3953  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
3954
3955 /**
3956   * Search parameter: <b>context-type-quantity</b>
3957   * <p>
3958   * Description: <b>Multiple Resources: 
3959
3960* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3961* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3962* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3963* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3964* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3965* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3966* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3967* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3968* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3969* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3970* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3971* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3972* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3973* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3974</b><br>
3975   * Type: <b>composite</b><br>
3976   * 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>
3977   * </p>
3978   */
3979  @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"} )
3980  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
3981 /**
3982   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
3983   * <p>
3984   * Description: <b>Multiple Resources: 
3985
3986* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3987* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3988* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3989* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3990* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3991* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3992* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3993* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3994* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3995* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3996* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3997* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3998* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3999* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
4000</b><br>
4001   * Type: <b>composite</b><br>
4002   * 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>
4003   * </p>
4004   */
4005  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);
4006
4007 /**
4008   * Search parameter: <b>context-type-value</b>
4009   * <p>
4010   * Description: <b>Multiple Resources: 
4011
4012* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4013* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4014* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4015* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4016* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4017* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4018* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4019* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4020* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4021* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4022* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4023* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4024* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4025* [ValueSet](valueset.html): A use context type and value assigned to the value set
4026</b><br>
4027   * Type: <b>composite</b><br>
4028   * 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>
4029   * </p>
4030   */
4031  @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"} )
4032  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
4033 /**
4034   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
4035   * <p>
4036   * Description: <b>Multiple Resources: 
4037
4038* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4039* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4040* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4041* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4042* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4043* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4044* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4045* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4046* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4047* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4048* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4049* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4050* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4051* [ValueSet](valueset.html): A use context type and value assigned to the value set
4052</b><br>
4053   * Type: <b>composite</b><br>
4054   * 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>
4055   * </p>
4056   */
4057  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);
4058
4059 /**
4060   * Search parameter: <b>context-type</b>
4061   * <p>
4062   * Description: <b>Multiple Resources: 
4063
4064* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4065* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4066* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4067* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4068* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4069* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4070* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4071* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4072* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4073* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4074* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4075* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4076* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4077* [ValueSet](valueset.html): A type of use context assigned to the value set
4078</b><br>
4079   * Type: <b>token</b><br>
4080   * 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>
4081   * </p>
4082   */
4083  @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" )
4084  public static final String SP_CONTEXT_TYPE = "context-type";
4085 /**
4086   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
4087   * <p>
4088   * Description: <b>Multiple Resources: 
4089
4090* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4091* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4092* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4093* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4094* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4095* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4096* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4097* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4098* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4099* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4100* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4101* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4102* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4103* [ValueSet](valueset.html): A type of use context assigned to the value set
4104</b><br>
4105   * Type: <b>token</b><br>
4106   * 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>
4107   * </p>
4108   */
4109  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
4110
4111 /**
4112   * Search parameter: <b>context</b>
4113   * <p>
4114   * Description: <b>Multiple Resources: 
4115
4116* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4117* [CodeSystem](codesystem.html): A use context assigned to the code system
4118* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4119* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4120* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4121* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4122* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4123* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4124* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4125* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4126* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4127* [StructureMap](structuremap.html): A use context assigned to the structure map
4128* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4129* [ValueSet](valueset.html): A use context assigned to the value set
4130</b><br>
4131   * Type: <b>token</b><br>
4132   * 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>
4133   * </p>
4134   */
4135  @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" )
4136  public static final String SP_CONTEXT = "context";
4137 /**
4138   * <b>Fluent Client</b> search parameter constant for <b>context</b>
4139   * <p>
4140   * Description: <b>Multiple Resources: 
4141
4142* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4143* [CodeSystem](codesystem.html): A use context assigned to the code system
4144* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4145* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4146* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4147* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4148* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4149* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4150* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4151* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4152* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4153* [StructureMap](structuremap.html): A use context assigned to the structure map
4154* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4155* [ValueSet](valueset.html): A use context assigned to the value set
4156</b><br>
4157   * Type: <b>token</b><br>
4158   * 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>
4159   * </p>
4160   */
4161  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
4162
4163 /**
4164   * Search parameter: <b>date</b>
4165   * <p>
4166   * Description: <b>Multiple Resources: 
4167
4168* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4169* [CodeSystem](codesystem.html): The code system publication date
4170* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4171* [ConceptMap](conceptmap.html): The concept map publication date
4172* [GraphDefinition](graphdefinition.html): The graph definition publication date
4173* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4174* [MessageDefinition](messagedefinition.html): The message definition publication date
4175* [NamingSystem](namingsystem.html): The naming system publication date
4176* [OperationDefinition](operationdefinition.html): The operation definition publication date
4177* [SearchParameter](searchparameter.html): The search parameter publication date
4178* [StructureDefinition](structuredefinition.html): The structure definition publication date
4179* [StructureMap](structuremap.html): The structure map publication date
4180* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4181* [ValueSet](valueset.html): The value set publication date
4182</b><br>
4183   * Type: <b>date</b><br>
4184   * 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>
4185   * </p>
4186   */
4187  @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" )
4188  public static final String SP_DATE = "date";
4189 /**
4190   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4191   * <p>
4192   * Description: <b>Multiple Resources: 
4193
4194* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4195* [CodeSystem](codesystem.html): The code system publication date
4196* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4197* [ConceptMap](conceptmap.html): The concept map publication date
4198* [GraphDefinition](graphdefinition.html): The graph definition publication date
4199* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4200* [MessageDefinition](messagedefinition.html): The message definition publication date
4201* [NamingSystem](namingsystem.html): The naming system publication date
4202* [OperationDefinition](operationdefinition.html): The operation definition publication date
4203* [SearchParameter](searchparameter.html): The search parameter publication date
4204* [StructureDefinition](structuredefinition.html): The structure definition publication date
4205* [StructureMap](structuremap.html): The structure map publication date
4206* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4207* [ValueSet](valueset.html): The value set publication date
4208</b><br>
4209   * Type: <b>date</b><br>
4210   * 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>
4211   * </p>
4212   */
4213  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4214
4215 /**
4216   * Search parameter: <b>description</b>
4217   * <p>
4218   * Description: <b>Multiple Resources: 
4219
4220* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4221* [CodeSystem](codesystem.html): The description of the code system
4222* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4223* [ConceptMap](conceptmap.html): The description of the concept map
4224* [GraphDefinition](graphdefinition.html): The description of the graph definition
4225* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4226* [MessageDefinition](messagedefinition.html): The description of the message definition
4227* [NamingSystem](namingsystem.html): The description of the naming system
4228* [OperationDefinition](operationdefinition.html): The description of the operation definition
4229* [SearchParameter](searchparameter.html): The description of the search parameter
4230* [StructureDefinition](structuredefinition.html): The description of the structure definition
4231* [StructureMap](structuremap.html): The description of the structure map
4232* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4233* [ValueSet](valueset.html): The description of the value set
4234</b><br>
4235   * Type: <b>string</b><br>
4236   * 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>
4237   * </p>
4238   */
4239  @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" )
4240  public static final String SP_DESCRIPTION = "description";
4241 /**
4242   * <b>Fluent Client</b> search parameter constant for <b>description</b>
4243   * <p>
4244   * Description: <b>Multiple Resources: 
4245
4246* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4247* [CodeSystem](codesystem.html): The description of the code system
4248* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4249* [ConceptMap](conceptmap.html): The description of the concept map
4250* [GraphDefinition](graphdefinition.html): The description of the graph definition
4251* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4252* [MessageDefinition](messagedefinition.html): The description of the message definition
4253* [NamingSystem](namingsystem.html): The description of the naming system
4254* [OperationDefinition](operationdefinition.html): The description of the operation definition
4255* [SearchParameter](searchparameter.html): The description of the search parameter
4256* [StructureDefinition](structuredefinition.html): The description of the structure definition
4257* [StructureMap](structuremap.html): The description of the structure map
4258* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4259* [ValueSet](valueset.html): The description of the value set
4260</b><br>
4261   * Type: <b>string</b><br>
4262   * 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>
4263   * </p>
4264   */
4265  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
4266
4267 /**
4268   * Search parameter: <b>identifier</b>
4269   * <p>
4270   * Description: <b>Multiple Resources: 
4271
4272* [CodeSystem](codesystem.html): External identifier for the code system
4273* [ConceptMap](conceptmap.html): External identifier for the concept map
4274* [MessageDefinition](messagedefinition.html): External identifier for the message definition
4275* [NamingSystem](namingsystem.html): External identifier for the naming system
4276* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
4277* [StructureMap](structuremap.html): External identifier for the structure map
4278* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
4279* [ValueSet](valueset.html): External identifier for the value set
4280</b><br>
4281   * Type: <b>token</b><br>
4282   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | NamingSystem.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
4283   * </p>
4284   */
4285  @SearchParamDefinition(name="identifier", path="CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | NamingSystem.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [NamingSystem](namingsystem.html): External identifier for the naming system\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
4286  public static final String SP_IDENTIFIER = "identifier";
4287 /**
4288   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4289   * <p>
4290   * Description: <b>Multiple Resources: 
4291
4292* [CodeSystem](codesystem.html): External identifier for the code system
4293* [ConceptMap](conceptmap.html): External identifier for the concept map
4294* [MessageDefinition](messagedefinition.html): External identifier for the message definition
4295* [NamingSystem](namingsystem.html): External identifier for the naming system
4296* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
4297* [StructureMap](structuremap.html): External identifier for the structure map
4298* [TerminologyCapabilities](terminologycapabilities.html): External identifier for the terminology capabilities
4299* [ValueSet](valueset.html): External identifier for the value set
4300</b><br>
4301   * Type: <b>token</b><br>
4302   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | NamingSystem.identifier | StructureDefinition.identifier | StructureMap.identifier | TerminologyCapabilities.identifier | ValueSet.identifier</b><br>
4303   * </p>
4304   */
4305  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4306
4307 /**
4308   * Search parameter: <b>jurisdiction</b>
4309   * <p>
4310   * Description: <b>Multiple Resources: 
4311
4312* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4313* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4314* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4315* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4316* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4317* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4318* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4319* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4320* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4321* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4322* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4323* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4324* [ValueSet](valueset.html): Intended jurisdiction for the value set
4325</b><br>
4326   * Type: <b>token</b><br>
4327   * 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>
4328   * </p>
4329   */
4330  @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" )
4331  public static final String SP_JURISDICTION = "jurisdiction";
4332 /**
4333   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
4334   * <p>
4335   * Description: <b>Multiple Resources: 
4336
4337* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4338* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4339* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4340* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4341* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4342* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4343* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4344* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4345* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4346* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4347* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4348* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4349* [ValueSet](valueset.html): Intended jurisdiction for the value set
4350</b><br>
4351   * Type: <b>token</b><br>
4352   * 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>
4353   * </p>
4354   */
4355  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
4356
4357 /**
4358   * Search parameter: <b>name</b>
4359   * <p>
4360   * Description: <b>Multiple Resources: 
4361
4362* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4363* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4364* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4365* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4366* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4367* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4368* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4369* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4370* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4371* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4372* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4373* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4374* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4375* [ValueSet](valueset.html): Computationally friendly name of the value set
4376</b><br>
4377   * Type: <b>string</b><br>
4378   * 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>
4379   * </p>
4380   */
4381  @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" )
4382  public static final String SP_NAME = "name";
4383 /**
4384   * <b>Fluent Client</b> search parameter constant for <b>name</b>
4385   * <p>
4386   * Description: <b>Multiple Resources: 
4387
4388* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4389* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4390* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4391* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4392* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4393* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4394* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4395* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4396* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4397* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4398* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4399* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4400* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4401* [ValueSet](valueset.html): Computationally friendly name of the value set
4402</b><br>
4403   * Type: <b>string</b><br>
4404   * 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>
4405   * </p>
4406   */
4407  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
4408
4409 /**
4410   * Search parameter: <b>publisher</b>
4411   * <p>
4412   * Description: <b>Multiple Resources: 
4413
4414* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4415* [CodeSystem](codesystem.html): Name of the publisher of the code system
4416* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4417* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4418* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4419* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4420* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4421* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4422* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4423* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4424* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4425* [StructureMap](structuremap.html): Name of the publisher of the structure map
4426* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4427* [ValueSet](valueset.html): Name of the publisher of the value set
4428</b><br>
4429   * Type: <b>string</b><br>
4430   * 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>
4431   * </p>
4432   */
4433  @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" )
4434  public static final String SP_PUBLISHER = "publisher";
4435 /**
4436   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
4437   * <p>
4438   * Description: <b>Multiple Resources: 
4439
4440* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4441* [CodeSystem](codesystem.html): Name of the publisher of the code system
4442* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4443* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4444* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4445* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4446* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4447* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4448* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4449* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4450* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4451* [StructureMap](structuremap.html): Name of the publisher of the structure map
4452* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4453* [ValueSet](valueset.html): Name of the publisher of the value set
4454</b><br>
4455   * Type: <b>string</b><br>
4456   * 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>
4457   * </p>
4458   */
4459  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
4460
4461 /**
4462   * Search parameter: <b>status</b>
4463   * <p>
4464   * Description: <b>Multiple Resources: 
4465
4466* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4467* [CodeSystem](codesystem.html): The current status of the code system
4468* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4469* [ConceptMap](conceptmap.html): The current status of the concept map
4470* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4471* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4472* [MessageDefinition](messagedefinition.html): The current status of the message definition
4473* [NamingSystem](namingsystem.html): The current status of the naming system
4474* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4475* [SearchParameter](searchparameter.html): The current status of the search parameter
4476* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4477* [StructureMap](structuremap.html): The current status of the structure map
4478* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4479* [ValueSet](valueset.html): The current status of the value set
4480</b><br>
4481   * Type: <b>token</b><br>
4482   * 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>
4483   * </p>
4484   */
4485  @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" )
4486  public static final String SP_STATUS = "status";
4487 /**
4488   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4489   * <p>
4490   * Description: <b>Multiple Resources: 
4491
4492* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4493* [CodeSystem](codesystem.html): The current status of the code system
4494* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4495* [ConceptMap](conceptmap.html): The current status of the concept map
4496* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4497* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4498* [MessageDefinition](messagedefinition.html): The current status of the message definition
4499* [NamingSystem](namingsystem.html): The current status of the naming system
4500* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4501* [SearchParameter](searchparameter.html): The current status of the search parameter
4502* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4503* [StructureMap](structuremap.html): The current status of the structure map
4504* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4505* [ValueSet](valueset.html): The current status of the value set
4506</b><br>
4507   * Type: <b>token</b><br>
4508   * 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>
4509   * </p>
4510   */
4511  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4512
4513 /**
4514   * Search parameter: <b>title</b>
4515   * <p>
4516   * Description: <b>Multiple Resources: 
4517
4518* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4519* [CodeSystem](codesystem.html): The human-friendly name of the code system
4520* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4521* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4522* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4523* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4524* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4525* [StructureMap](structuremap.html): The human-friendly name of the structure map
4526* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4527* [ValueSet](valueset.html): The human-friendly name of the value set
4528</b><br>
4529   * Type: <b>string</b><br>
4530   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4531   * </p>
4532   */
4533  @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" )
4534  public static final String SP_TITLE = "title";
4535 /**
4536   * <b>Fluent Client</b> search parameter constant for <b>title</b>
4537   * <p>
4538   * Description: <b>Multiple Resources: 
4539
4540* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4541* [CodeSystem](codesystem.html): The human-friendly name of the code system
4542* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4543* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4544* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4545* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4546* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4547* [StructureMap](structuremap.html): The human-friendly name of the structure map
4548* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4549* [ValueSet](valueset.html): The human-friendly name of the value set
4550</b><br>
4551   * Type: <b>string</b><br>
4552   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4553   * </p>
4554   */
4555  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
4556
4557 /**
4558   * Search parameter: <b>url</b>
4559   * <p>
4560   * Description: <b>Multiple Resources: 
4561
4562* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4563* [CodeSystem](codesystem.html): The uri that identifies the code system
4564* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4565* [ConceptMap](conceptmap.html): The URI that identifies the concept map
4566* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4567* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4568* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4569* [NamingSystem](namingsystem.html): The uri that identifies the naming system
4570* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4571* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4572* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4573* [StructureMap](structuremap.html): The uri that identifies the structure map
4574* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4575* [ValueSet](valueset.html): The uri that identifies the value set
4576</b><br>
4577   * Type: <b>uri</b><br>
4578   * 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>
4579   * </p>
4580   */
4581  @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" )
4582  public static final String SP_URL = "url";
4583 /**
4584   * <b>Fluent Client</b> search parameter constant for <b>url</b>
4585   * <p>
4586   * Description: <b>Multiple Resources: 
4587
4588* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4589* [CodeSystem](codesystem.html): The uri that identifies the code system
4590* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4591* [ConceptMap](conceptmap.html): The URI that identifies the concept map
4592* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4593* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4594* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4595* [NamingSystem](namingsystem.html): The uri that identifies the naming system
4596* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4597* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4598* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4599* [StructureMap](structuremap.html): The uri that identifies the structure map
4600* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4601* [ValueSet](valueset.html): The uri that identifies the value set
4602</b><br>
4603   * Type: <b>uri</b><br>
4604   * 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>
4605   * </p>
4606   */
4607  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
4608
4609 /**
4610   * Search parameter: <b>version</b>
4611   * <p>
4612   * Description: <b>Multiple Resources: 
4613
4614* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4615* [CodeSystem](codesystem.html): The business version of the code system
4616* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4617* [ConceptMap](conceptmap.html): The business version of the concept map
4618* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4619* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4620* [MessageDefinition](messagedefinition.html): The business version of the message definition
4621* [NamingSystem](namingsystem.html): The business version of the naming system
4622* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4623* [SearchParameter](searchparameter.html): The business version of the search parameter
4624* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4625* [StructureMap](structuremap.html): The business version of the structure map
4626* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4627* [ValueSet](valueset.html): The business version of the value set
4628</b><br>
4629   * Type: <b>token</b><br>
4630   * 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>
4631   * </p>
4632   */
4633  @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" )
4634  public static final String SP_VERSION = "version";
4635 /**
4636   * <b>Fluent Client</b> search parameter constant for <b>version</b>
4637   * <p>
4638   * Description: <b>Multiple Resources: 
4639
4640* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4641* [CodeSystem](codesystem.html): The business version of the code system
4642* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4643* [ConceptMap](conceptmap.html): The business version of the concept map
4644* [GraphDefinition](graphdefinition.html): The business version of the graph definition
4645* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
4646* [MessageDefinition](messagedefinition.html): The business version of the message definition
4647* [NamingSystem](namingsystem.html): The business version of the naming system
4648* [OperationDefinition](operationdefinition.html): The business version of the operation definition
4649* [SearchParameter](searchparameter.html): The business version of the search parameter
4650* [StructureDefinition](structuredefinition.html): The business version of the structure definition
4651* [StructureMap](structuremap.html): The business version of the structure map
4652* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
4653* [ValueSet](valueset.html): The business version of the value set
4654</b><br>
4655   * Type: <b>token</b><br>
4656   * 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>
4657   * </p>
4658   */
4659  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
4660
4661  // Manual code (from Configuration.txt):
4662  public String describeType() {
4663    if ("Extension".equals(getType()))
4664      return "Extension" ;
4665    switch (getKind()) {
4666    case COMPLEXTYPE: return getDerivation() == TypeDerivationRule.CONSTRAINT ? "DataType Constraint" : "DataType" ;
4667    case LOGICAL: return getDerivation() == TypeDerivationRule.CONSTRAINT ? "Logical Model" : "Logical Model Profile";
4668    case PRIMITIVETYPE: return getDerivation() == TypeDerivationRule.CONSTRAINT ? "PrimitiveType Constraint" : "PrimitiveType";
4669    case RESOURCE: return getDerivation() == TypeDerivationRule.CONSTRAINT ? "Resource Profile" : "Resource";
4670    default:
4671      return "Definition";
4672    }
4673  }
4674
4675  public String getTypeName() {
4676    String t = getType();
4677    return StructureDefinitionKind.LOGICAL.equals(getKind()) && t.contains("/") ? t.substring(t.lastIndexOf("/")+1) : t;
4678  }
4679
4680  public String getTypeTail() {
4681    if (getType().contains("/")) {
4682      return getType().substring(getType().lastIndexOf("/")+1);
4683    } else {
4684      return getType();
4685    }
4686  }
4687
4688  // end addition
4689
4690
4691}
4692