001package org.hl7.fhir.r4b.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Dec 31, 2021 05:58+1100 for FHIR v4.3.0-snapshot1
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r4b.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 formal computable definition of a graph of resources - that is, a coherent set of resources that form a graph by following references. The Graph Definition resource defines a set and makes rules about the set.
052 */
053@ResourceDef(name="GraphDefinition", profile="http://hl7.org/fhir/StructureDefinition/GraphDefinition")
054public class GraphDefinition extends DomainResource {
055
056    public enum GraphCompartmentRule {
057        /**
058         * The compartment must be identical (the same literal reference).
059         */
060        IDENTICAL, 
061        /**
062         * The compartment must be the same - the record must be about the same patient, but the reference may be different.
063         */
064        MATCHING, 
065        /**
066         * The compartment must be different.
067         */
068        DIFFERENT, 
069        /**
070         * The compartment rule is defined in the accompanying FHIRPath expression.
071         */
072        CUSTOM, 
073        /**
074         * added to help the parsers with the generic types
075         */
076        NULL;
077        public static GraphCompartmentRule fromCode(String codeString) throws FHIRException {
078            if (codeString == null || "".equals(codeString))
079                return null;
080        if ("identical".equals(codeString))
081          return IDENTICAL;
082        if ("matching".equals(codeString))
083          return MATCHING;
084        if ("different".equals(codeString))
085          return DIFFERENT;
086        if ("custom".equals(codeString))
087          return CUSTOM;
088        if (Configuration.isAcceptInvalidEnums())
089          return null;
090        else
091          throw new FHIRException("Unknown GraphCompartmentRule code '"+codeString+"'");
092        }
093        public String toCode() {
094          switch (this) {
095            case IDENTICAL: return "identical";
096            case MATCHING: return "matching";
097            case DIFFERENT: return "different";
098            case CUSTOM: return "custom";
099            case NULL: return null;
100            default: return "?";
101          }
102        }
103        public String getSystem() {
104          switch (this) {
105            case IDENTICAL: return "http://hl7.org/fhir/graph-compartment-rule";
106            case MATCHING: return "http://hl7.org/fhir/graph-compartment-rule";
107            case DIFFERENT: return "http://hl7.org/fhir/graph-compartment-rule";
108            case CUSTOM: return "http://hl7.org/fhir/graph-compartment-rule";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113        public String getDefinition() {
114          switch (this) {
115            case IDENTICAL: return "The compartment must be identical (the same literal reference).";
116            case MATCHING: return "The compartment must be the same - the record must be about the same patient, but the reference may be different.";
117            case DIFFERENT: return "The compartment must be different.";
118            case CUSTOM: return "The compartment rule is defined in the accompanying FHIRPath expression.";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123        public String getDisplay() {
124          switch (this) {
125            case IDENTICAL: return "Identical";
126            case MATCHING: return "Matching";
127            case DIFFERENT: return "Different";
128            case CUSTOM: return "Custom";
129            case NULL: return null;
130            default: return "?";
131          }
132        }
133    }
134
135  public static class GraphCompartmentRuleEnumFactory implements EnumFactory<GraphCompartmentRule> {
136    public GraphCompartmentRule fromCode(String codeString) throws IllegalArgumentException {
137      if (codeString == null || "".equals(codeString))
138            if (codeString == null || "".equals(codeString))
139                return null;
140        if ("identical".equals(codeString))
141          return GraphCompartmentRule.IDENTICAL;
142        if ("matching".equals(codeString))
143          return GraphCompartmentRule.MATCHING;
144        if ("different".equals(codeString))
145          return GraphCompartmentRule.DIFFERENT;
146        if ("custom".equals(codeString))
147          return GraphCompartmentRule.CUSTOM;
148        throw new IllegalArgumentException("Unknown GraphCompartmentRule code '"+codeString+"'");
149        }
150        public Enumeration<GraphCompartmentRule> fromType(Base code) throws FHIRException {
151          if (code == null)
152            return null;
153          if (code.isEmpty())
154            return new Enumeration<GraphCompartmentRule>(this);
155          String codeString = ((PrimitiveType) code).asStringValue();
156          if (codeString == null || "".equals(codeString))
157            return null;
158        if ("identical".equals(codeString))
159          return new Enumeration<GraphCompartmentRule>(this, GraphCompartmentRule.IDENTICAL);
160        if ("matching".equals(codeString))
161          return new Enumeration<GraphCompartmentRule>(this, GraphCompartmentRule.MATCHING);
162        if ("different".equals(codeString))
163          return new Enumeration<GraphCompartmentRule>(this, GraphCompartmentRule.DIFFERENT);
164        if ("custom".equals(codeString))
165          return new Enumeration<GraphCompartmentRule>(this, GraphCompartmentRule.CUSTOM);
166        throw new FHIRException("Unknown GraphCompartmentRule code '"+codeString+"'");
167        }
168    public String toCode(GraphCompartmentRule code) {
169      if (code == GraphCompartmentRule.IDENTICAL)
170        return "identical";
171      if (code == GraphCompartmentRule.MATCHING)
172        return "matching";
173      if (code == GraphCompartmentRule.DIFFERENT)
174        return "different";
175      if (code == GraphCompartmentRule.CUSTOM)
176        return "custom";
177      return "?";
178      }
179    public String toSystem(GraphCompartmentRule code) {
180      return code.getSystem();
181      }
182    }
183
184    public enum GraphCompartmentUse {
185        /**
186         * This compartment rule is a condition for whether the rule applies.
187         */
188        CONDITION, 
189        /**
190         * This compartment rule is enforced on any relationships that meet the conditions.
191         */
192        REQUIREMENT, 
193        /**
194         * added to help the parsers with the generic types
195         */
196        NULL;
197        public static GraphCompartmentUse fromCode(String codeString) throws FHIRException {
198            if (codeString == null || "".equals(codeString))
199                return null;
200        if ("condition".equals(codeString))
201          return CONDITION;
202        if ("requirement".equals(codeString))
203          return REQUIREMENT;
204        if (Configuration.isAcceptInvalidEnums())
205          return null;
206        else
207          throw new FHIRException("Unknown GraphCompartmentUse code '"+codeString+"'");
208        }
209        public String toCode() {
210          switch (this) {
211            case CONDITION: return "condition";
212            case REQUIREMENT: return "requirement";
213            case NULL: return null;
214            default: return "?";
215          }
216        }
217        public String getSystem() {
218          switch (this) {
219            case CONDITION: return "http://hl7.org/fhir/graph-compartment-use";
220            case REQUIREMENT: return "http://hl7.org/fhir/graph-compartment-use";
221            case NULL: return null;
222            default: return "?";
223          }
224        }
225        public String getDefinition() {
226          switch (this) {
227            case CONDITION: return "This compartment rule is a condition for whether the rule applies.";
228            case REQUIREMENT: return "This compartment rule is enforced on any relationships that meet the conditions.";
229            case NULL: return null;
230            default: return "?";
231          }
232        }
233        public String getDisplay() {
234          switch (this) {
235            case CONDITION: return "Condition";
236            case REQUIREMENT: return "Requirement";
237            case NULL: return null;
238            default: return "?";
239          }
240        }
241    }
242
243  public static class GraphCompartmentUseEnumFactory implements EnumFactory<GraphCompartmentUse> {
244    public GraphCompartmentUse fromCode(String codeString) throws IllegalArgumentException {
245      if (codeString == null || "".equals(codeString))
246            if (codeString == null || "".equals(codeString))
247                return null;
248        if ("condition".equals(codeString))
249          return GraphCompartmentUse.CONDITION;
250        if ("requirement".equals(codeString))
251          return GraphCompartmentUse.REQUIREMENT;
252        throw new IllegalArgumentException("Unknown GraphCompartmentUse code '"+codeString+"'");
253        }
254        public Enumeration<GraphCompartmentUse> fromType(Base code) throws FHIRException {
255          if (code == null)
256            return null;
257          if (code.isEmpty())
258            return new Enumeration<GraphCompartmentUse>(this);
259          String codeString = ((PrimitiveType) code).asStringValue();
260          if (codeString == null || "".equals(codeString))
261            return null;
262        if ("condition".equals(codeString))
263          return new Enumeration<GraphCompartmentUse>(this, GraphCompartmentUse.CONDITION);
264        if ("requirement".equals(codeString))
265          return new Enumeration<GraphCompartmentUse>(this, GraphCompartmentUse.REQUIREMENT);
266        throw new FHIRException("Unknown GraphCompartmentUse code '"+codeString+"'");
267        }
268    public String toCode(GraphCompartmentUse code) {
269      if (code == GraphCompartmentUse.CONDITION)
270        return "condition";
271      if (code == GraphCompartmentUse.REQUIREMENT)
272        return "requirement";
273      return "?";
274      }
275    public String toSystem(GraphCompartmentUse code) {
276      return code.getSystem();
277      }
278    }
279
280    @Block()
281    public static class GraphDefinitionLinkComponent extends BackboneElement implements IBaseBackboneElement {
282        /**
283         * A FHIR expression that identifies one of FHIR References to other resources.
284         */
285        @Child(name = "path", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
286        @Description(shortDefinition="Path in the resource that contains the link", formalDefinition="A FHIR expression that identifies one of FHIR References to other resources." )
287        protected StringType path;
288
289        /**
290         * Which slice (if profiled).
291         */
292        @Child(name = "sliceName", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
293        @Description(shortDefinition="Which slice (if profiled)", formalDefinition="Which slice (if profiled)." )
294        protected StringType sliceName;
295
296        /**
297         * Minimum occurrences for this link.
298         */
299        @Child(name = "min", type = {IntegerType.class}, order=3, min=0, max=1, modifier=false, summary=false)
300        @Description(shortDefinition="Minimum occurrences for this link", formalDefinition="Minimum occurrences for this link." )
301        protected IntegerType min;
302
303        /**
304         * Maximum occurrences for this link.
305         */
306        @Child(name = "max", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
307        @Description(shortDefinition="Maximum occurrences for this link", formalDefinition="Maximum occurrences for this link." )
308        protected StringType max;
309
310        /**
311         * Information about why this link is of interest in this graph definition.
312         */
313        @Child(name = "description", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
314        @Description(shortDefinition="Why this link is specified", formalDefinition="Information about why this link is of interest in this graph definition." )
315        protected StringType description;
316
317        /**
318         * Potential target for the link.
319         */
320        @Child(name = "target", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
321        @Description(shortDefinition="Potential target for the link", formalDefinition="Potential target for the link." )
322        protected List<GraphDefinitionLinkTargetComponent> target;
323
324        private static final long serialVersionUID = -593733346L;
325
326    /**
327     * Constructor
328     */
329      public GraphDefinitionLinkComponent() {
330        super();
331      }
332
333        /**
334         * @return {@link #path} (A FHIR expression that identifies one of FHIR References to other resources.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value
335         */
336        public StringType getPathElement() { 
337          if (this.path == null)
338            if (Configuration.errorOnAutoCreate())
339              throw new Error("Attempt to auto-create GraphDefinitionLinkComponent.path");
340            else if (Configuration.doAutoCreate())
341              this.path = new StringType(); // bb
342          return this.path;
343        }
344
345        public boolean hasPathElement() { 
346          return this.path != null && !this.path.isEmpty();
347        }
348
349        public boolean hasPath() { 
350          return this.path != null && !this.path.isEmpty();
351        }
352
353        /**
354         * @param value {@link #path} (A FHIR expression that identifies one of FHIR References to other resources.). This is the underlying object with id, value and extensions. The accessor "getPath" gives direct access to the value
355         */
356        public GraphDefinitionLinkComponent setPathElement(StringType value) { 
357          this.path = value;
358          return this;
359        }
360
361        /**
362         * @return A FHIR expression that identifies one of FHIR References to other resources.
363         */
364        public String getPath() { 
365          return this.path == null ? null : this.path.getValue();
366        }
367
368        /**
369         * @param value A FHIR expression that identifies one of FHIR References to other resources.
370         */
371        public GraphDefinitionLinkComponent setPath(String value) { 
372          if (Utilities.noString(value))
373            this.path = null;
374          else {
375            if (this.path == null)
376              this.path = new StringType();
377            this.path.setValue(value);
378          }
379          return this;
380        }
381
382        /**
383         * @return {@link #sliceName} (Which slice (if profiled).). This is the underlying object with id, value and extensions. The accessor "getSliceName" gives direct access to the value
384         */
385        public StringType getSliceNameElement() { 
386          if (this.sliceName == null)
387            if (Configuration.errorOnAutoCreate())
388              throw new Error("Attempt to auto-create GraphDefinitionLinkComponent.sliceName");
389            else if (Configuration.doAutoCreate())
390              this.sliceName = new StringType(); // bb
391          return this.sliceName;
392        }
393
394        public boolean hasSliceNameElement() { 
395          return this.sliceName != null && !this.sliceName.isEmpty();
396        }
397
398        public boolean hasSliceName() { 
399          return this.sliceName != null && !this.sliceName.isEmpty();
400        }
401
402        /**
403         * @param value {@link #sliceName} (Which slice (if profiled).). This is the underlying object with id, value and extensions. The accessor "getSliceName" gives direct access to the value
404         */
405        public GraphDefinitionLinkComponent setSliceNameElement(StringType value) { 
406          this.sliceName = value;
407          return this;
408        }
409
410        /**
411         * @return Which slice (if profiled).
412         */
413        public String getSliceName() { 
414          return this.sliceName == null ? null : this.sliceName.getValue();
415        }
416
417        /**
418         * @param value Which slice (if profiled).
419         */
420        public GraphDefinitionLinkComponent setSliceName(String value) { 
421          if (Utilities.noString(value))
422            this.sliceName = null;
423          else {
424            if (this.sliceName == null)
425              this.sliceName = new StringType();
426            this.sliceName.setValue(value);
427          }
428          return this;
429        }
430
431        /**
432         * @return {@link #min} (Minimum occurrences for this link.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value
433         */
434        public IntegerType getMinElement() { 
435          if (this.min == null)
436            if (Configuration.errorOnAutoCreate())
437              throw new Error("Attempt to auto-create GraphDefinitionLinkComponent.min");
438            else if (Configuration.doAutoCreate())
439              this.min = new IntegerType(); // bb
440          return this.min;
441        }
442
443        public boolean hasMinElement() { 
444          return this.min != null && !this.min.isEmpty();
445        }
446
447        public boolean hasMin() { 
448          return this.min != null && !this.min.isEmpty();
449        }
450
451        /**
452         * @param value {@link #min} (Minimum occurrences for this link.). This is the underlying object with id, value and extensions. The accessor "getMin" gives direct access to the value
453         */
454        public GraphDefinitionLinkComponent setMinElement(IntegerType value) { 
455          this.min = value;
456          return this;
457        }
458
459        /**
460         * @return Minimum occurrences for this link.
461         */
462        public int getMin() { 
463          return this.min == null || this.min.isEmpty() ? 0 : this.min.getValue();
464        }
465
466        /**
467         * @param value Minimum occurrences for this link.
468         */
469        public GraphDefinitionLinkComponent setMin(int value) { 
470            if (this.min == null)
471              this.min = new IntegerType();
472            this.min.setValue(value);
473          return this;
474        }
475
476        /**
477         * @return {@link #max} (Maximum occurrences for this link.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value
478         */
479        public StringType getMaxElement() { 
480          if (this.max == null)
481            if (Configuration.errorOnAutoCreate())
482              throw new Error("Attempt to auto-create GraphDefinitionLinkComponent.max");
483            else if (Configuration.doAutoCreate())
484              this.max = new StringType(); // bb
485          return this.max;
486        }
487
488        public boolean hasMaxElement() { 
489          return this.max != null && !this.max.isEmpty();
490        }
491
492        public boolean hasMax() { 
493          return this.max != null && !this.max.isEmpty();
494        }
495
496        /**
497         * @param value {@link #max} (Maximum occurrences for this link.). This is the underlying object with id, value and extensions. The accessor "getMax" gives direct access to the value
498         */
499        public GraphDefinitionLinkComponent setMaxElement(StringType value) { 
500          this.max = value;
501          return this;
502        }
503
504        /**
505         * @return Maximum occurrences for this link.
506         */
507        public String getMax() { 
508          return this.max == null ? null : this.max.getValue();
509        }
510
511        /**
512         * @param value Maximum occurrences for this link.
513         */
514        public GraphDefinitionLinkComponent setMax(String value) { 
515          if (Utilities.noString(value))
516            this.max = null;
517          else {
518            if (this.max == null)
519              this.max = new StringType();
520            this.max.setValue(value);
521          }
522          return this;
523        }
524
525        /**
526         * @return {@link #description} (Information about why this link is of interest in this graph definition.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
527         */
528        public StringType getDescriptionElement() { 
529          if (this.description == null)
530            if (Configuration.errorOnAutoCreate())
531              throw new Error("Attempt to auto-create GraphDefinitionLinkComponent.description");
532            else if (Configuration.doAutoCreate())
533              this.description = new StringType(); // bb
534          return this.description;
535        }
536
537        public boolean hasDescriptionElement() { 
538          return this.description != null && !this.description.isEmpty();
539        }
540
541        public boolean hasDescription() { 
542          return this.description != null && !this.description.isEmpty();
543        }
544
545        /**
546         * @param value {@link #description} (Information about why this link is of interest in this graph definition.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
547         */
548        public GraphDefinitionLinkComponent setDescriptionElement(StringType value) { 
549          this.description = value;
550          return this;
551        }
552
553        /**
554         * @return Information about why this link is of interest in this graph definition.
555         */
556        public String getDescription() { 
557          return this.description == null ? null : this.description.getValue();
558        }
559
560        /**
561         * @param value Information about why this link is of interest in this graph definition.
562         */
563        public GraphDefinitionLinkComponent setDescription(String value) { 
564          if (Utilities.noString(value))
565            this.description = null;
566          else {
567            if (this.description == null)
568              this.description = new StringType();
569            this.description.setValue(value);
570          }
571          return this;
572        }
573
574        /**
575         * @return {@link #target} (Potential target for the link.)
576         */
577        public List<GraphDefinitionLinkTargetComponent> getTarget() { 
578          if (this.target == null)
579            this.target = new ArrayList<GraphDefinitionLinkTargetComponent>();
580          return this.target;
581        }
582
583        /**
584         * @return Returns a reference to <code>this</code> for easy method chaining
585         */
586        public GraphDefinitionLinkComponent setTarget(List<GraphDefinitionLinkTargetComponent> theTarget) { 
587          this.target = theTarget;
588          return this;
589        }
590
591        public boolean hasTarget() { 
592          if (this.target == null)
593            return false;
594          for (GraphDefinitionLinkTargetComponent item : this.target)
595            if (!item.isEmpty())
596              return true;
597          return false;
598        }
599
600        public GraphDefinitionLinkTargetComponent addTarget() { //3
601          GraphDefinitionLinkTargetComponent t = new GraphDefinitionLinkTargetComponent();
602          if (this.target == null)
603            this.target = new ArrayList<GraphDefinitionLinkTargetComponent>();
604          this.target.add(t);
605          return t;
606        }
607
608        public GraphDefinitionLinkComponent addTarget(GraphDefinitionLinkTargetComponent t) { //3
609          if (t == null)
610            return this;
611          if (this.target == null)
612            this.target = new ArrayList<GraphDefinitionLinkTargetComponent>();
613          this.target.add(t);
614          return this;
615        }
616
617        /**
618         * @return The first repetition of repeating field {@link #target}, creating it if it does not already exist {3}
619         */
620        public GraphDefinitionLinkTargetComponent getTargetFirstRep() { 
621          if (getTarget().isEmpty()) {
622            addTarget();
623          }
624          return getTarget().get(0);
625        }
626
627        protected void listChildren(List<Property> children) {
628          super.listChildren(children);
629          children.add(new Property("path", "string", "A FHIR expression that identifies one of FHIR References to other resources.", 0, 1, path));
630          children.add(new Property("sliceName", "string", "Which slice (if profiled).", 0, 1, sliceName));
631          children.add(new Property("min", "integer", "Minimum occurrences for this link.", 0, 1, min));
632          children.add(new Property("max", "string", "Maximum occurrences for this link.", 0, 1, max));
633          children.add(new Property("description", "string", "Information about why this link is of interest in this graph definition.", 0, 1, description));
634          children.add(new Property("target", "", "Potential target for the link.", 0, java.lang.Integer.MAX_VALUE, target));
635        }
636
637        @Override
638        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
639          switch (_hash) {
640          case 3433509: /*path*/  return new Property("path", "string", "A FHIR expression that identifies one of FHIR References to other resources.", 0, 1, path);
641          case -825289923: /*sliceName*/  return new Property("sliceName", "string", "Which slice (if profiled).", 0, 1, sliceName);
642          case 108114: /*min*/  return new Property("min", "integer", "Minimum occurrences for this link.", 0, 1, min);
643          case 107876: /*max*/  return new Property("max", "string", "Maximum occurrences for this link.", 0, 1, max);
644          case -1724546052: /*description*/  return new Property("description", "string", "Information about why this link is of interest in this graph definition.", 0, 1, description);
645          case -880905839: /*target*/  return new Property("target", "", "Potential target for the link.", 0, java.lang.Integer.MAX_VALUE, target);
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 3433509: /*path*/ return this.path == null ? new Base[0] : new Base[] {this.path}; // StringType
655        case -825289923: /*sliceName*/ return this.sliceName == null ? new Base[0] : new Base[] {this.sliceName}; // StringType
656        case 108114: /*min*/ return this.min == null ? new Base[0] : new Base[] {this.min}; // IntegerType
657        case 107876: /*max*/ return this.max == null ? new Base[0] : new Base[] {this.max}; // StringType
658        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
659        case -880905839: /*target*/ return this.target == null ? new Base[0] : this.target.toArray(new Base[this.target.size()]); // GraphDefinitionLinkTargetComponent
660        default: return super.getProperty(hash, name, checkValid);
661        }
662
663      }
664
665      @Override
666      public Base setProperty(int hash, String name, Base value) throws FHIRException {
667        switch (hash) {
668        case 3433509: // path
669          this.path = TypeConvertor.castToString(value); // StringType
670          return value;
671        case -825289923: // sliceName
672          this.sliceName = TypeConvertor.castToString(value); // StringType
673          return value;
674        case 108114: // min
675          this.min = TypeConvertor.castToInteger(value); // IntegerType
676          return value;
677        case 107876: // max
678          this.max = TypeConvertor.castToString(value); // StringType
679          return value;
680        case -1724546052: // description
681          this.description = TypeConvertor.castToString(value); // StringType
682          return value;
683        case -880905839: // target
684          this.getTarget().add((GraphDefinitionLinkTargetComponent) value); // GraphDefinitionLinkTargetComponent
685          return value;
686        default: return super.setProperty(hash, name, value);
687        }
688
689      }
690
691      @Override
692      public Base setProperty(String name, Base value) throws FHIRException {
693        if (name.equals("path")) {
694          this.path = TypeConvertor.castToString(value); // StringType
695        } else if (name.equals("sliceName")) {
696          this.sliceName = TypeConvertor.castToString(value); // StringType
697        } else if (name.equals("min")) {
698          this.min = TypeConvertor.castToInteger(value); // IntegerType
699        } else if (name.equals("max")) {
700          this.max = TypeConvertor.castToString(value); // StringType
701        } else if (name.equals("description")) {
702          this.description = TypeConvertor.castToString(value); // StringType
703        } else if (name.equals("target")) {
704          this.getTarget().add((GraphDefinitionLinkTargetComponent) value);
705        } else
706          return super.setProperty(name, value);
707        return value;
708      }
709
710      @Override
711      public Base makeProperty(int hash, String name) throws FHIRException {
712        switch (hash) {
713        case 3433509:  return getPathElement();
714        case -825289923:  return getSliceNameElement();
715        case 108114:  return getMinElement();
716        case 107876:  return getMaxElement();
717        case -1724546052:  return getDescriptionElement();
718        case -880905839:  return addTarget(); 
719        default: return super.makeProperty(hash, name);
720        }
721
722      }
723
724      @Override
725      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
726        switch (hash) {
727        case 3433509: /*path*/ return new String[] {"string"};
728        case -825289923: /*sliceName*/ return new String[] {"string"};
729        case 108114: /*min*/ return new String[] {"integer"};
730        case 107876: /*max*/ return new String[] {"string"};
731        case -1724546052: /*description*/ return new String[] {"string"};
732        case -880905839: /*target*/ return new String[] {};
733        default: return super.getTypesForProperty(hash, name);
734        }
735
736      }
737
738      @Override
739      public Base addChild(String name) throws FHIRException {
740        if (name.equals("path")) {
741          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.path");
742        }
743        else if (name.equals("sliceName")) {
744          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.sliceName");
745        }
746        else if (name.equals("min")) {
747          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.min");
748        }
749        else if (name.equals("max")) {
750          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.max");
751        }
752        else if (name.equals("description")) {
753          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.description");
754        }
755        else if (name.equals("target")) {
756          return addTarget();
757        }
758        else
759          return super.addChild(name);
760      }
761
762      public GraphDefinitionLinkComponent copy() {
763        GraphDefinitionLinkComponent dst = new GraphDefinitionLinkComponent();
764        copyValues(dst);
765        return dst;
766      }
767
768      public void copyValues(GraphDefinitionLinkComponent dst) {
769        super.copyValues(dst);
770        dst.path = path == null ? null : path.copy();
771        dst.sliceName = sliceName == null ? null : sliceName.copy();
772        dst.min = min == null ? null : min.copy();
773        dst.max = max == null ? null : max.copy();
774        dst.description = description == null ? null : description.copy();
775        if (target != null) {
776          dst.target = new ArrayList<GraphDefinitionLinkTargetComponent>();
777          for (GraphDefinitionLinkTargetComponent i : target)
778            dst.target.add(i.copy());
779        };
780      }
781
782      @Override
783      public boolean equalsDeep(Base other_) {
784        if (!super.equalsDeep(other_))
785          return false;
786        if (!(other_ instanceof GraphDefinitionLinkComponent))
787          return false;
788        GraphDefinitionLinkComponent o = (GraphDefinitionLinkComponent) other_;
789        return compareDeep(path, o.path, true) && compareDeep(sliceName, o.sliceName, true) && compareDeep(min, o.min, true)
790           && compareDeep(max, o.max, true) && compareDeep(description, o.description, true) && compareDeep(target, o.target, true)
791          ;
792      }
793
794      @Override
795      public boolean equalsShallow(Base other_) {
796        if (!super.equalsShallow(other_))
797          return false;
798        if (!(other_ instanceof GraphDefinitionLinkComponent))
799          return false;
800        GraphDefinitionLinkComponent o = (GraphDefinitionLinkComponent) other_;
801        return compareValues(path, o.path, true) && compareValues(sliceName, o.sliceName, true) && compareValues(min, o.min, true)
802           && compareValues(max, o.max, true) && compareValues(description, o.description, true);
803      }
804
805      public boolean isEmpty() {
806        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(path, sliceName, min, max
807          , description, target);
808      }
809
810  public String fhirType() {
811    return "GraphDefinition.link";
812
813  }
814
815  }
816
817    @Block()
818    public static class GraphDefinitionLinkTargetComponent extends BackboneElement implements IBaseBackboneElement {
819        /**
820         * Type of resource this link refers to.
821         */
822        @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
823        @Description(shortDefinition="Type of resource this link refers to", formalDefinition="Type of resource this link refers to." )
824        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
825        protected CodeType type;
826
827        /**
828         * A set of parameters to look up.
829         */
830        @Child(name = "params", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
831        @Description(shortDefinition="Criteria for reverse lookup", formalDefinition="A set of parameters to look up." )
832        protected StringType params;
833
834        /**
835         * Profile for the target resource.
836         */
837        @Child(name = "profile", type = {CanonicalType.class}, order=3, min=0, max=1, modifier=false, summary=false)
838        @Description(shortDefinition="Profile for the target resource", formalDefinition="Profile for the target resource." )
839        protected CanonicalType profile;
840
841        /**
842         * Compartment Consistency Rules.
843         */
844        @Child(name = "compartment", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
845        @Description(shortDefinition="Compartment Consistency Rules", formalDefinition="Compartment Consistency Rules." )
846        protected List<GraphDefinitionLinkTargetCompartmentComponent> compartment;
847
848        /**
849         * Additional links from target resource.
850         */
851        @Child(name = "link", type = {GraphDefinitionLinkComponent.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
852        @Description(shortDefinition="Additional links from target resource", formalDefinition="Additional links from target resource." )
853        protected List<GraphDefinitionLinkComponent> link;
854
855        private static final long serialVersionUID = -35248998L;
856
857    /**
858     * Constructor
859     */
860      public GraphDefinitionLinkTargetComponent() {
861        super();
862      }
863
864    /**
865     * Constructor
866     */
867      public GraphDefinitionLinkTargetComponent(String type) {
868        super();
869        this.setType(type);
870      }
871
872        /**
873         * @return {@link #type} (Type of resource this link refers to.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
874         */
875        public CodeType getTypeElement() { 
876          if (this.type == null)
877            if (Configuration.errorOnAutoCreate())
878              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetComponent.type");
879            else if (Configuration.doAutoCreate())
880              this.type = new CodeType(); // bb
881          return this.type;
882        }
883
884        public boolean hasTypeElement() { 
885          return this.type != null && !this.type.isEmpty();
886        }
887
888        public boolean hasType() { 
889          return this.type != null && !this.type.isEmpty();
890        }
891
892        /**
893         * @param value {@link #type} (Type of resource this link refers to.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
894         */
895        public GraphDefinitionLinkTargetComponent setTypeElement(CodeType value) { 
896          this.type = value;
897          return this;
898        }
899
900        /**
901         * @return Type of resource this link refers to.
902         */
903        public String getType() { 
904          return this.type == null ? null : this.type.getValue();
905        }
906
907        /**
908         * @param value Type of resource this link refers to.
909         */
910        public GraphDefinitionLinkTargetComponent setType(String value) { 
911            if (this.type == null)
912              this.type = new CodeType();
913            this.type.setValue(value);
914          return this;
915        }
916
917        /**
918         * @return {@link #params} (A set of parameters to look up.). This is the underlying object with id, value and extensions. The accessor "getParams" gives direct access to the value
919         */
920        public StringType getParamsElement() { 
921          if (this.params == null)
922            if (Configuration.errorOnAutoCreate())
923              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetComponent.params");
924            else if (Configuration.doAutoCreate())
925              this.params = new StringType(); // bb
926          return this.params;
927        }
928
929        public boolean hasParamsElement() { 
930          return this.params != null && !this.params.isEmpty();
931        }
932
933        public boolean hasParams() { 
934          return this.params != null && !this.params.isEmpty();
935        }
936
937        /**
938         * @param value {@link #params} (A set of parameters to look up.). This is the underlying object with id, value and extensions. The accessor "getParams" gives direct access to the value
939         */
940        public GraphDefinitionLinkTargetComponent setParamsElement(StringType value) { 
941          this.params = value;
942          return this;
943        }
944
945        /**
946         * @return A set of parameters to look up.
947         */
948        public String getParams() { 
949          return this.params == null ? null : this.params.getValue();
950        }
951
952        /**
953         * @param value A set of parameters to look up.
954         */
955        public GraphDefinitionLinkTargetComponent setParams(String value) { 
956          if (Utilities.noString(value))
957            this.params = null;
958          else {
959            if (this.params == null)
960              this.params = new StringType();
961            this.params.setValue(value);
962          }
963          return this;
964        }
965
966        /**
967         * @return {@link #profile} (Profile for the target resource.). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
968         */
969        public CanonicalType getProfileElement() { 
970          if (this.profile == null)
971            if (Configuration.errorOnAutoCreate())
972              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetComponent.profile");
973            else if (Configuration.doAutoCreate())
974              this.profile = new CanonicalType(); // bb
975          return this.profile;
976        }
977
978        public boolean hasProfileElement() { 
979          return this.profile != null && !this.profile.isEmpty();
980        }
981
982        public boolean hasProfile() { 
983          return this.profile != null && !this.profile.isEmpty();
984        }
985
986        /**
987         * @param value {@link #profile} (Profile for the target resource.). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
988         */
989        public GraphDefinitionLinkTargetComponent setProfileElement(CanonicalType value) { 
990          this.profile = value;
991          return this;
992        }
993
994        /**
995         * @return Profile for the target resource.
996         */
997        public String getProfile() { 
998          return this.profile == null ? null : this.profile.getValue();
999        }
1000
1001        /**
1002         * @param value Profile for the target resource.
1003         */
1004        public GraphDefinitionLinkTargetComponent setProfile(String value) { 
1005          if (Utilities.noString(value))
1006            this.profile = null;
1007          else {
1008            if (this.profile == null)
1009              this.profile = new CanonicalType();
1010            this.profile.setValue(value);
1011          }
1012          return this;
1013        }
1014
1015        /**
1016         * @return {@link #compartment} (Compartment Consistency Rules.)
1017         */
1018        public List<GraphDefinitionLinkTargetCompartmentComponent> getCompartment() { 
1019          if (this.compartment == null)
1020            this.compartment = new ArrayList<GraphDefinitionLinkTargetCompartmentComponent>();
1021          return this.compartment;
1022        }
1023
1024        /**
1025         * @return Returns a reference to <code>this</code> for easy method chaining
1026         */
1027        public GraphDefinitionLinkTargetComponent setCompartment(List<GraphDefinitionLinkTargetCompartmentComponent> theCompartment) { 
1028          this.compartment = theCompartment;
1029          return this;
1030        }
1031
1032        public boolean hasCompartment() { 
1033          if (this.compartment == null)
1034            return false;
1035          for (GraphDefinitionLinkTargetCompartmentComponent item : this.compartment)
1036            if (!item.isEmpty())
1037              return true;
1038          return false;
1039        }
1040
1041        public GraphDefinitionLinkTargetCompartmentComponent addCompartment() { //3
1042          GraphDefinitionLinkTargetCompartmentComponent t = new GraphDefinitionLinkTargetCompartmentComponent();
1043          if (this.compartment == null)
1044            this.compartment = new ArrayList<GraphDefinitionLinkTargetCompartmentComponent>();
1045          this.compartment.add(t);
1046          return t;
1047        }
1048
1049        public GraphDefinitionLinkTargetComponent addCompartment(GraphDefinitionLinkTargetCompartmentComponent t) { //3
1050          if (t == null)
1051            return this;
1052          if (this.compartment == null)
1053            this.compartment = new ArrayList<GraphDefinitionLinkTargetCompartmentComponent>();
1054          this.compartment.add(t);
1055          return this;
1056        }
1057
1058        /**
1059         * @return The first repetition of repeating field {@link #compartment}, creating it if it does not already exist {3}
1060         */
1061        public GraphDefinitionLinkTargetCompartmentComponent getCompartmentFirstRep() { 
1062          if (getCompartment().isEmpty()) {
1063            addCompartment();
1064          }
1065          return getCompartment().get(0);
1066        }
1067
1068        /**
1069         * @return {@link #link} (Additional links from target resource.)
1070         */
1071        public List<GraphDefinitionLinkComponent> getLink() { 
1072          if (this.link == null)
1073            this.link = new ArrayList<GraphDefinitionLinkComponent>();
1074          return this.link;
1075        }
1076
1077        /**
1078         * @return Returns a reference to <code>this</code> for easy method chaining
1079         */
1080        public GraphDefinitionLinkTargetComponent setLink(List<GraphDefinitionLinkComponent> theLink) { 
1081          this.link = theLink;
1082          return this;
1083        }
1084
1085        public boolean hasLink() { 
1086          if (this.link == null)
1087            return false;
1088          for (GraphDefinitionLinkComponent item : this.link)
1089            if (!item.isEmpty())
1090              return true;
1091          return false;
1092        }
1093
1094        public GraphDefinitionLinkComponent addLink() { //3
1095          GraphDefinitionLinkComponent t = new GraphDefinitionLinkComponent();
1096          if (this.link == null)
1097            this.link = new ArrayList<GraphDefinitionLinkComponent>();
1098          this.link.add(t);
1099          return t;
1100        }
1101
1102        public GraphDefinitionLinkTargetComponent addLink(GraphDefinitionLinkComponent t) { //3
1103          if (t == null)
1104            return this;
1105          if (this.link == null)
1106            this.link = new ArrayList<GraphDefinitionLinkComponent>();
1107          this.link.add(t);
1108          return this;
1109        }
1110
1111        /**
1112         * @return The first repetition of repeating field {@link #link}, creating it if it does not already exist {3}
1113         */
1114        public GraphDefinitionLinkComponent getLinkFirstRep() { 
1115          if (getLink().isEmpty()) {
1116            addLink();
1117          }
1118          return getLink().get(0);
1119        }
1120
1121        protected void listChildren(List<Property> children) {
1122          super.listChildren(children);
1123          children.add(new Property("type", "code", "Type of resource this link refers to.", 0, 1, type));
1124          children.add(new Property("params", "string", "A set of parameters to look up.", 0, 1, params));
1125          children.add(new Property("profile", "canonical(StructureDefinition)", "Profile for the target resource.", 0, 1, profile));
1126          children.add(new Property("compartment", "", "Compartment Consistency Rules.", 0, java.lang.Integer.MAX_VALUE, compartment));
1127          children.add(new Property("link", "@GraphDefinition.link", "Additional links from target resource.", 0, java.lang.Integer.MAX_VALUE, link));
1128        }
1129
1130        @Override
1131        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1132          switch (_hash) {
1133          case 3575610: /*type*/  return new Property("type", "code", "Type of resource this link refers to.", 0, 1, type);
1134          case -995427962: /*params*/  return new Property("params", "string", "A set of parameters to look up.", 0, 1, params);
1135          case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "Profile for the target resource.", 0, 1, profile);
1136          case -397756334: /*compartment*/  return new Property("compartment", "", "Compartment Consistency Rules.", 0, java.lang.Integer.MAX_VALUE, compartment);
1137          case 3321850: /*link*/  return new Property("link", "@GraphDefinition.link", "Additional links from target resource.", 0, java.lang.Integer.MAX_VALUE, link);
1138          default: return super.getNamedProperty(_hash, _name, _checkValid);
1139          }
1140
1141        }
1142
1143      @Override
1144      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1145        switch (hash) {
1146        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeType
1147        case -995427962: /*params*/ return this.params == null ? new Base[0] : new Base[] {this.params}; // StringType
1148        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
1149        case -397756334: /*compartment*/ return this.compartment == null ? new Base[0] : this.compartment.toArray(new Base[this.compartment.size()]); // GraphDefinitionLinkTargetCompartmentComponent
1150        case 3321850: /*link*/ return this.link == null ? new Base[0] : this.link.toArray(new Base[this.link.size()]); // GraphDefinitionLinkComponent
1151        default: return super.getProperty(hash, name, checkValid);
1152        }
1153
1154      }
1155
1156      @Override
1157      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1158        switch (hash) {
1159        case 3575610: // type
1160          this.type = TypeConvertor.castToCode(value); // CodeType
1161          return value;
1162        case -995427962: // params
1163          this.params = TypeConvertor.castToString(value); // StringType
1164          return value;
1165        case -309425751: // profile
1166          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
1167          return value;
1168        case -397756334: // compartment
1169          this.getCompartment().add((GraphDefinitionLinkTargetCompartmentComponent) value); // GraphDefinitionLinkTargetCompartmentComponent
1170          return value;
1171        case 3321850: // link
1172          this.getLink().add((GraphDefinitionLinkComponent) value); // GraphDefinitionLinkComponent
1173          return value;
1174        default: return super.setProperty(hash, name, value);
1175        }
1176
1177      }
1178
1179      @Override
1180      public Base setProperty(String name, Base value) throws FHIRException {
1181        if (name.equals("type")) {
1182          this.type = TypeConvertor.castToCode(value); // CodeType
1183        } else if (name.equals("params")) {
1184          this.params = TypeConvertor.castToString(value); // StringType
1185        } else if (name.equals("profile")) {
1186          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
1187        } else if (name.equals("compartment")) {
1188          this.getCompartment().add((GraphDefinitionLinkTargetCompartmentComponent) value);
1189        } else if (name.equals("link")) {
1190          this.getLink().add((GraphDefinitionLinkComponent) value);
1191        } else
1192          return super.setProperty(name, value);
1193        return value;
1194      }
1195
1196      @Override
1197      public Base makeProperty(int hash, String name) throws FHIRException {
1198        switch (hash) {
1199        case 3575610:  return getTypeElement();
1200        case -995427962:  return getParamsElement();
1201        case -309425751:  return getProfileElement();
1202        case -397756334:  return addCompartment(); 
1203        case 3321850:  return addLink(); 
1204        default: return super.makeProperty(hash, name);
1205        }
1206
1207      }
1208
1209      @Override
1210      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1211        switch (hash) {
1212        case 3575610: /*type*/ return new String[] {"code"};
1213        case -995427962: /*params*/ return new String[] {"string"};
1214        case -309425751: /*profile*/ return new String[] {"canonical"};
1215        case -397756334: /*compartment*/ return new String[] {};
1216        case 3321850: /*link*/ return new String[] {"@GraphDefinition.link"};
1217        default: return super.getTypesForProperty(hash, name);
1218        }
1219
1220      }
1221
1222      @Override
1223      public Base addChild(String name) throws FHIRException {
1224        if (name.equals("type")) {
1225          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.type");
1226        }
1227        else if (name.equals("params")) {
1228          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.params");
1229        }
1230        else if (name.equals("profile")) {
1231          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.profile");
1232        }
1233        else if (name.equals("compartment")) {
1234          return addCompartment();
1235        }
1236        else if (name.equals("link")) {
1237          return addLink();
1238        }
1239        else
1240          return super.addChild(name);
1241      }
1242
1243      public GraphDefinitionLinkTargetComponent copy() {
1244        GraphDefinitionLinkTargetComponent dst = new GraphDefinitionLinkTargetComponent();
1245        copyValues(dst);
1246        return dst;
1247      }
1248
1249      public void copyValues(GraphDefinitionLinkTargetComponent dst) {
1250        super.copyValues(dst);
1251        dst.type = type == null ? null : type.copy();
1252        dst.params = params == null ? null : params.copy();
1253        dst.profile = profile == null ? null : profile.copy();
1254        if (compartment != null) {
1255          dst.compartment = new ArrayList<GraphDefinitionLinkTargetCompartmentComponent>();
1256          for (GraphDefinitionLinkTargetCompartmentComponent i : compartment)
1257            dst.compartment.add(i.copy());
1258        };
1259        if (link != null) {
1260          dst.link = new ArrayList<GraphDefinitionLinkComponent>();
1261          for (GraphDefinitionLinkComponent i : link)
1262            dst.link.add(i.copy());
1263        };
1264      }
1265
1266      @Override
1267      public boolean equalsDeep(Base other_) {
1268        if (!super.equalsDeep(other_))
1269          return false;
1270        if (!(other_ instanceof GraphDefinitionLinkTargetComponent))
1271          return false;
1272        GraphDefinitionLinkTargetComponent o = (GraphDefinitionLinkTargetComponent) other_;
1273        return compareDeep(type, o.type, true) && compareDeep(params, o.params, true) && compareDeep(profile, o.profile, true)
1274           && compareDeep(compartment, o.compartment, true) && compareDeep(link, o.link, true);
1275      }
1276
1277      @Override
1278      public boolean equalsShallow(Base other_) {
1279        if (!super.equalsShallow(other_))
1280          return false;
1281        if (!(other_ instanceof GraphDefinitionLinkTargetComponent))
1282          return false;
1283        GraphDefinitionLinkTargetComponent o = (GraphDefinitionLinkTargetComponent) other_;
1284        return compareValues(type, o.type, true) && compareValues(params, o.params, true) && compareValues(profile, o.profile, true)
1285          ;
1286      }
1287
1288      public boolean isEmpty() {
1289        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, params, profile, compartment
1290          , link);
1291      }
1292
1293  public String fhirType() {
1294    return "GraphDefinition.link.target";
1295
1296  }
1297
1298  }
1299
1300    @Block()
1301    public static class GraphDefinitionLinkTargetCompartmentComponent extends BackboneElement implements IBaseBackboneElement {
1302        /**
1303         * Defines how the compartment rule is used - whether it it is used to test whether resources are subject to the rule, or whether it is a rule that must be followed.
1304         */
1305        @Child(name = "use", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1306        @Description(shortDefinition="condition | requirement", formalDefinition="Defines how the compartment rule is used - whether it it is used to test whether resources are subject to the rule, or whether it is a rule that must be followed." )
1307        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/graph-compartment-use")
1308        protected Enumeration<GraphCompartmentUse> use;
1309
1310        /**
1311         * Identifies the compartment.
1312         */
1313        @Child(name = "code", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
1314        @Description(shortDefinition="Patient | Encounter | RelatedPerson | Practitioner | Device", formalDefinition="Identifies the compartment." )
1315        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/compartment-type")
1316        protected Enumeration<CompartmentType> code;
1317
1318        /**
1319         * identical | matching | different | no-rule | custom.
1320         */
1321        @Child(name = "rule", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
1322        @Description(shortDefinition="identical | matching | different | custom", formalDefinition="identical | matching | different | no-rule | custom." )
1323        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/graph-compartment-rule")
1324        protected Enumeration<GraphCompartmentRule> rule;
1325
1326        /**
1327         * Custom rule, as a FHIRPath expression.
1328         */
1329        @Child(name = "expression", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
1330        @Description(shortDefinition="Custom rule, as a FHIRPath expression", formalDefinition="Custom rule, as a FHIRPath expression." )
1331        protected StringType expression;
1332
1333        /**
1334         * Documentation for FHIRPath expression.
1335         */
1336        @Child(name = "description", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
1337        @Description(shortDefinition="Documentation for FHIRPath expression", formalDefinition="Documentation for FHIRPath expression." )
1338        protected StringType description;
1339
1340        private static final long serialVersionUID = -1757652062L;
1341
1342    /**
1343     * Constructor
1344     */
1345      public GraphDefinitionLinkTargetCompartmentComponent() {
1346        super();
1347      }
1348
1349    /**
1350     * Constructor
1351     */
1352      public GraphDefinitionLinkTargetCompartmentComponent(GraphCompartmentUse use, CompartmentType code, GraphCompartmentRule rule) {
1353        super();
1354        this.setUse(use);
1355        this.setCode(code);
1356        this.setRule(rule);
1357      }
1358
1359        /**
1360         * @return {@link #use} (Defines how the compartment rule is used - whether it it is used to test whether resources are subject to the rule, or whether it is a rule that must be followed.). This is the underlying object with id, value and extensions. The accessor "getUse" gives direct access to the value
1361         */
1362        public Enumeration<GraphCompartmentUse> getUseElement() { 
1363          if (this.use == null)
1364            if (Configuration.errorOnAutoCreate())
1365              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.use");
1366            else if (Configuration.doAutoCreate())
1367              this.use = new Enumeration<GraphCompartmentUse>(new GraphCompartmentUseEnumFactory()); // bb
1368          return this.use;
1369        }
1370
1371        public boolean hasUseElement() { 
1372          return this.use != null && !this.use.isEmpty();
1373        }
1374
1375        public boolean hasUse() { 
1376          return this.use != null && !this.use.isEmpty();
1377        }
1378
1379        /**
1380         * @param value {@link #use} (Defines how the compartment rule is used - whether it it is used to test whether resources are subject to the rule, or whether it is a rule that must be followed.). This is the underlying object with id, value and extensions. The accessor "getUse" gives direct access to the value
1381         */
1382        public GraphDefinitionLinkTargetCompartmentComponent setUseElement(Enumeration<GraphCompartmentUse> value) { 
1383          this.use = value;
1384          return this;
1385        }
1386
1387        /**
1388         * @return Defines how the compartment rule is used - whether it it is used to test whether resources are subject to the rule, or whether it is a rule that must be followed.
1389         */
1390        public GraphCompartmentUse getUse() { 
1391          return this.use == null ? null : this.use.getValue();
1392        }
1393
1394        /**
1395         * @param value Defines how the compartment rule is used - whether it it is used to test whether resources are subject to the rule, or whether it is a rule that must be followed.
1396         */
1397        public GraphDefinitionLinkTargetCompartmentComponent setUse(GraphCompartmentUse value) { 
1398            if (this.use == null)
1399              this.use = new Enumeration<GraphCompartmentUse>(new GraphCompartmentUseEnumFactory());
1400            this.use.setValue(value);
1401          return this;
1402        }
1403
1404        /**
1405         * @return {@link #code} (Identifies the compartment.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1406         */
1407        public Enumeration<CompartmentType> getCodeElement() { 
1408          if (this.code == null)
1409            if (Configuration.errorOnAutoCreate())
1410              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.code");
1411            else if (Configuration.doAutoCreate())
1412              this.code = new Enumeration<CompartmentType>(new CompartmentTypeEnumFactory()); // bb
1413          return this.code;
1414        }
1415
1416        public boolean hasCodeElement() { 
1417          return this.code != null && !this.code.isEmpty();
1418        }
1419
1420        public boolean hasCode() { 
1421          return this.code != null && !this.code.isEmpty();
1422        }
1423
1424        /**
1425         * @param value {@link #code} (Identifies the compartment.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1426         */
1427        public GraphDefinitionLinkTargetCompartmentComponent setCodeElement(Enumeration<CompartmentType> value) { 
1428          this.code = value;
1429          return this;
1430        }
1431
1432        /**
1433         * @return Identifies the compartment.
1434         */
1435        public CompartmentType getCode() { 
1436          return this.code == null ? null : this.code.getValue();
1437        }
1438
1439        /**
1440         * @param value Identifies the compartment.
1441         */
1442        public GraphDefinitionLinkTargetCompartmentComponent setCode(CompartmentType value) { 
1443            if (this.code == null)
1444              this.code = new Enumeration<CompartmentType>(new CompartmentTypeEnumFactory());
1445            this.code.setValue(value);
1446          return this;
1447        }
1448
1449        /**
1450         * @return {@link #rule} (identical | matching | different | no-rule | custom.). This is the underlying object with id, value and extensions. The accessor "getRule" gives direct access to the value
1451         */
1452        public Enumeration<GraphCompartmentRule> getRuleElement() { 
1453          if (this.rule == null)
1454            if (Configuration.errorOnAutoCreate())
1455              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.rule");
1456            else if (Configuration.doAutoCreate())
1457              this.rule = new Enumeration<GraphCompartmentRule>(new GraphCompartmentRuleEnumFactory()); // bb
1458          return this.rule;
1459        }
1460
1461        public boolean hasRuleElement() { 
1462          return this.rule != null && !this.rule.isEmpty();
1463        }
1464
1465        public boolean hasRule() { 
1466          return this.rule != null && !this.rule.isEmpty();
1467        }
1468
1469        /**
1470         * @param value {@link #rule} (identical | matching | different | no-rule | custom.). This is the underlying object with id, value and extensions. The accessor "getRule" gives direct access to the value
1471         */
1472        public GraphDefinitionLinkTargetCompartmentComponent setRuleElement(Enumeration<GraphCompartmentRule> value) { 
1473          this.rule = value;
1474          return this;
1475        }
1476
1477        /**
1478         * @return identical | matching | different | no-rule | custom.
1479         */
1480        public GraphCompartmentRule getRule() { 
1481          return this.rule == null ? null : this.rule.getValue();
1482        }
1483
1484        /**
1485         * @param value identical | matching | different | no-rule | custom.
1486         */
1487        public GraphDefinitionLinkTargetCompartmentComponent setRule(GraphCompartmentRule value) { 
1488            if (this.rule == null)
1489              this.rule = new Enumeration<GraphCompartmentRule>(new GraphCompartmentRuleEnumFactory());
1490            this.rule.setValue(value);
1491          return this;
1492        }
1493
1494        /**
1495         * @return {@link #expression} (Custom rule, as a FHIRPath expression.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
1496         */
1497        public StringType getExpressionElement() { 
1498          if (this.expression == null)
1499            if (Configuration.errorOnAutoCreate())
1500              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.expression");
1501            else if (Configuration.doAutoCreate())
1502              this.expression = new StringType(); // bb
1503          return this.expression;
1504        }
1505
1506        public boolean hasExpressionElement() { 
1507          return this.expression != null && !this.expression.isEmpty();
1508        }
1509
1510        public boolean hasExpression() { 
1511          return this.expression != null && !this.expression.isEmpty();
1512        }
1513
1514        /**
1515         * @param value {@link #expression} (Custom rule, as a FHIRPath expression.). This is the underlying object with id, value and extensions. The accessor "getExpression" gives direct access to the value
1516         */
1517        public GraphDefinitionLinkTargetCompartmentComponent setExpressionElement(StringType value) { 
1518          this.expression = value;
1519          return this;
1520        }
1521
1522        /**
1523         * @return Custom rule, as a FHIRPath expression.
1524         */
1525        public String getExpression() { 
1526          return this.expression == null ? null : this.expression.getValue();
1527        }
1528
1529        /**
1530         * @param value Custom rule, as a FHIRPath expression.
1531         */
1532        public GraphDefinitionLinkTargetCompartmentComponent setExpression(String value) { 
1533          if (Utilities.noString(value))
1534            this.expression = null;
1535          else {
1536            if (this.expression == null)
1537              this.expression = new StringType();
1538            this.expression.setValue(value);
1539          }
1540          return this;
1541        }
1542
1543        /**
1544         * @return {@link #description} (Documentation for FHIRPath expression.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1545         */
1546        public StringType getDescriptionElement() { 
1547          if (this.description == null)
1548            if (Configuration.errorOnAutoCreate())
1549              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.description");
1550            else if (Configuration.doAutoCreate())
1551              this.description = new StringType(); // bb
1552          return this.description;
1553        }
1554
1555        public boolean hasDescriptionElement() { 
1556          return this.description != null && !this.description.isEmpty();
1557        }
1558
1559        public boolean hasDescription() { 
1560          return this.description != null && !this.description.isEmpty();
1561        }
1562
1563        /**
1564         * @param value {@link #description} (Documentation for FHIRPath expression.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
1565         */
1566        public GraphDefinitionLinkTargetCompartmentComponent setDescriptionElement(StringType value) { 
1567          this.description = value;
1568          return this;
1569        }
1570
1571        /**
1572         * @return Documentation for FHIRPath expression.
1573         */
1574        public String getDescription() { 
1575          return this.description == null ? null : this.description.getValue();
1576        }
1577
1578        /**
1579         * @param value Documentation for FHIRPath expression.
1580         */
1581        public GraphDefinitionLinkTargetCompartmentComponent setDescription(String value) { 
1582          if (Utilities.noString(value))
1583            this.description = null;
1584          else {
1585            if (this.description == null)
1586              this.description = new StringType();
1587            this.description.setValue(value);
1588          }
1589          return this;
1590        }
1591
1592        protected void listChildren(List<Property> children) {
1593          super.listChildren(children);
1594          children.add(new Property("use", "code", "Defines how the compartment rule is used - whether it it is used to test whether resources are subject to the rule, or whether it is a rule that must be followed.", 0, 1, use));
1595          children.add(new Property("code", "code", "Identifies the compartment.", 0, 1, code));
1596          children.add(new Property("rule", "code", "identical | matching | different | no-rule | custom.", 0, 1, rule));
1597          children.add(new Property("expression", "string", "Custom rule, as a FHIRPath expression.", 0, 1, expression));
1598          children.add(new Property("description", "string", "Documentation for FHIRPath expression.", 0, 1, description));
1599        }
1600
1601        @Override
1602        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1603          switch (_hash) {
1604          case 116103: /*use*/  return new Property("use", "code", "Defines how the compartment rule is used - whether it it is used to test whether resources are subject to the rule, or whether it is a rule that must be followed.", 0, 1, use);
1605          case 3059181: /*code*/  return new Property("code", "code", "Identifies the compartment.", 0, 1, code);
1606          case 3512060: /*rule*/  return new Property("rule", "code", "identical | matching | different | no-rule | custom.", 0, 1, rule);
1607          case -1795452264: /*expression*/  return new Property("expression", "string", "Custom rule, as a FHIRPath expression.", 0, 1, expression);
1608          case -1724546052: /*description*/  return new Property("description", "string", "Documentation for FHIRPath expression.", 0, 1, description);
1609          default: return super.getNamedProperty(_hash, _name, _checkValid);
1610          }
1611
1612        }
1613
1614      @Override
1615      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1616        switch (hash) {
1617        case 116103: /*use*/ return this.use == null ? new Base[0] : new Base[] {this.use}; // Enumeration<GraphCompartmentUse>
1618        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // Enumeration<CompartmentType>
1619        case 3512060: /*rule*/ return this.rule == null ? new Base[0] : new Base[] {this.rule}; // Enumeration<GraphCompartmentRule>
1620        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // StringType
1621        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1622        default: return super.getProperty(hash, name, checkValid);
1623        }
1624
1625      }
1626
1627      @Override
1628      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1629        switch (hash) {
1630        case 116103: // use
1631          value = new GraphCompartmentUseEnumFactory().fromType(TypeConvertor.castToCode(value));
1632          this.use = (Enumeration) value; // Enumeration<GraphCompartmentUse>
1633          return value;
1634        case 3059181: // code
1635          value = new CompartmentTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
1636          this.code = (Enumeration) value; // Enumeration<CompartmentType>
1637          return value;
1638        case 3512060: // rule
1639          value = new GraphCompartmentRuleEnumFactory().fromType(TypeConvertor.castToCode(value));
1640          this.rule = (Enumeration) value; // Enumeration<GraphCompartmentRule>
1641          return value;
1642        case -1795452264: // expression
1643          this.expression = TypeConvertor.castToString(value); // StringType
1644          return value;
1645        case -1724546052: // description
1646          this.description = TypeConvertor.castToString(value); // StringType
1647          return value;
1648        default: return super.setProperty(hash, name, value);
1649        }
1650
1651      }
1652
1653      @Override
1654      public Base setProperty(String name, Base value) throws FHIRException {
1655        if (name.equals("use")) {
1656          value = new GraphCompartmentUseEnumFactory().fromType(TypeConvertor.castToCode(value));
1657          this.use = (Enumeration) value; // Enumeration<GraphCompartmentUse>
1658        } else if (name.equals("code")) {
1659          value = new CompartmentTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
1660          this.code = (Enumeration) value; // Enumeration<CompartmentType>
1661        } else if (name.equals("rule")) {
1662          value = new GraphCompartmentRuleEnumFactory().fromType(TypeConvertor.castToCode(value));
1663          this.rule = (Enumeration) value; // Enumeration<GraphCompartmentRule>
1664        } else if (name.equals("expression")) {
1665          this.expression = TypeConvertor.castToString(value); // StringType
1666        } else if (name.equals("description")) {
1667          this.description = TypeConvertor.castToString(value); // StringType
1668        } else
1669          return super.setProperty(name, value);
1670        return value;
1671      }
1672
1673      @Override
1674      public Base makeProperty(int hash, String name) throws FHIRException {
1675        switch (hash) {
1676        case 116103:  return getUseElement();
1677        case 3059181:  return getCodeElement();
1678        case 3512060:  return getRuleElement();
1679        case -1795452264:  return getExpressionElement();
1680        case -1724546052:  return getDescriptionElement();
1681        default: return super.makeProperty(hash, name);
1682        }
1683
1684      }
1685
1686      @Override
1687      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1688        switch (hash) {
1689        case 116103: /*use*/ return new String[] {"code"};
1690        case 3059181: /*code*/ return new String[] {"code"};
1691        case 3512060: /*rule*/ return new String[] {"code"};
1692        case -1795452264: /*expression*/ return new String[] {"string"};
1693        case -1724546052: /*description*/ return new String[] {"string"};
1694        default: return super.getTypesForProperty(hash, name);
1695        }
1696
1697      }
1698
1699      @Override
1700      public Base addChild(String name) throws FHIRException {
1701        if (name.equals("use")) {
1702          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.use");
1703        }
1704        else if (name.equals("code")) {
1705          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.code");
1706        }
1707        else if (name.equals("rule")) {
1708          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.rule");
1709        }
1710        else if (name.equals("expression")) {
1711          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.expression");
1712        }
1713        else if (name.equals("description")) {
1714          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.description");
1715        }
1716        else
1717          return super.addChild(name);
1718      }
1719
1720      public GraphDefinitionLinkTargetCompartmentComponent copy() {
1721        GraphDefinitionLinkTargetCompartmentComponent dst = new GraphDefinitionLinkTargetCompartmentComponent();
1722        copyValues(dst);
1723        return dst;
1724      }
1725
1726      public void copyValues(GraphDefinitionLinkTargetCompartmentComponent dst) {
1727        super.copyValues(dst);
1728        dst.use = use == null ? null : use.copy();
1729        dst.code = code == null ? null : code.copy();
1730        dst.rule = rule == null ? null : rule.copy();
1731        dst.expression = expression == null ? null : expression.copy();
1732        dst.description = description == null ? null : description.copy();
1733      }
1734
1735      @Override
1736      public boolean equalsDeep(Base other_) {
1737        if (!super.equalsDeep(other_))
1738          return false;
1739        if (!(other_ instanceof GraphDefinitionLinkTargetCompartmentComponent))
1740          return false;
1741        GraphDefinitionLinkTargetCompartmentComponent o = (GraphDefinitionLinkTargetCompartmentComponent) other_;
1742        return compareDeep(use, o.use, true) && compareDeep(code, o.code, true) && compareDeep(rule, o.rule, true)
1743           && compareDeep(expression, o.expression, true) && compareDeep(description, o.description, true)
1744          ;
1745      }
1746
1747      @Override
1748      public boolean equalsShallow(Base other_) {
1749        if (!super.equalsShallow(other_))
1750          return false;
1751        if (!(other_ instanceof GraphDefinitionLinkTargetCompartmentComponent))
1752          return false;
1753        GraphDefinitionLinkTargetCompartmentComponent o = (GraphDefinitionLinkTargetCompartmentComponent) other_;
1754        return compareValues(use, o.use, true) && compareValues(code, o.code, true) && compareValues(rule, o.rule, true)
1755           && compareValues(expression, o.expression, true) && compareValues(description, o.description, true)
1756          ;
1757      }
1758
1759      public boolean isEmpty() {
1760        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(use, code, rule, expression
1761          , description);
1762      }
1763
1764  public String fhirType() {
1765    return "GraphDefinition.link.target.compartment";
1766
1767  }
1768
1769  }
1770
1771    /**
1772     * An absolute URI that is used to identify this graph definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this graph definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the graph definition is stored on different servers.
1773     */
1774    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
1775    @Description(shortDefinition="Canonical identifier for this graph definition, represented as a URI (globally unique)", formalDefinition="An absolute URI that is used to identify this graph definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this graph definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the graph definition is stored on different servers." )
1776    protected UriType url;
1777
1778    /**
1779     * The identifier that is used to identify this version of the graph definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the graph 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.
1780     */
1781    @Child(name = "version", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
1782    @Description(shortDefinition="Business version of the graph definition", formalDefinition="The identifier that is used to identify this version of the graph definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the graph 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." )
1783    protected StringType version;
1784
1785    /**
1786     * A natural language name identifying the graph definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
1787     */
1788    @Child(name = "name", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=true)
1789    @Description(shortDefinition="Name for this graph definition (computer friendly)", formalDefinition="A natural language name identifying the graph definition. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
1790    protected StringType name;
1791
1792    /**
1793     * The status of this graph definition. Enables tracking the life-cycle of the content.
1794     */
1795    @Child(name = "status", type = {CodeType.class}, order=3, min=1, max=1, modifier=true, summary=true)
1796    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this graph definition. Enables tracking the life-cycle of the content." )
1797    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
1798    protected Enumeration<PublicationStatus> status;
1799
1800    /**
1801     * A Boolean value to indicate that this graph definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
1802     */
1803    @Child(name = "experimental", type = {BooleanType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1804    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this graph definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
1805    protected BooleanType experimental;
1806
1807    /**
1808     * The date  (and optionally time) when the graph 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 graph definition changes.
1809     */
1810    @Child(name = "date", type = {DateTimeType.class}, order=5, min=0, max=1, modifier=false, summary=true)
1811    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the graph 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 graph definition changes." )
1812    protected DateTimeType date;
1813
1814    /**
1815     * The name of the organization or individual that published the graph definition.
1816     */
1817    @Child(name = "publisher", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
1818    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the graph definition." )
1819    protected StringType publisher;
1820
1821    /**
1822     * Contact details to assist a user in finding and communicating with the publisher.
1823     */
1824    @Child(name = "contact", type = {ContactDetail.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1825    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
1826    protected List<ContactDetail> contact;
1827
1828    /**
1829     * A free text natural language description of the graph definition from a consumer's perspective.
1830     */
1831    @Child(name = "description", type = {MarkdownType.class}, order=8, min=0, max=1, modifier=false, summary=false)
1832    @Description(shortDefinition="Natural language description of the graph definition", formalDefinition="A free text natural language description of the graph definition from a consumer's perspective." )
1833    protected MarkdownType description;
1834
1835    /**
1836     * 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 graph definition instances.
1837     */
1838    @Child(name = "useContext", type = {UsageContext.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1839    @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 graph definition instances." )
1840    protected List<UsageContext> useContext;
1841
1842    /**
1843     * A legal or geographic region in which the graph definition is intended to be used.
1844     */
1845    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1846    @Description(shortDefinition="Intended jurisdiction for graph definition (if applicable)", formalDefinition="A legal or geographic region in which the graph definition is intended to be used." )
1847    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
1848    protected List<CodeableConcept> jurisdiction;
1849
1850    /**
1851     * Explanation of why this graph definition is needed and why it has been designed as it has.
1852     */
1853    @Child(name = "purpose", type = {MarkdownType.class}, order=11, min=0, max=1, modifier=false, summary=false)
1854    @Description(shortDefinition="Why this graph definition is defined", formalDefinition="Explanation of why this graph definition is needed and why it has been designed as it has." )
1855    protected MarkdownType purpose;
1856
1857    /**
1858     * The type of FHIR resource at which instances of this graph start.
1859     */
1860    @Child(name = "start", type = {CodeType.class}, order=12, min=1, max=1, modifier=false, summary=true)
1861    @Description(shortDefinition="Type of resource at which the graph starts", formalDefinition="The type of FHIR resource at which instances of this graph start." )
1862    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
1863    protected CodeType start;
1864
1865    /**
1866     * The profile that describes the use of the base resource.
1867     */
1868    @Child(name = "profile", type = {CanonicalType.class}, order=13, min=0, max=1, modifier=false, summary=false)
1869    @Description(shortDefinition="Profile on base resource", formalDefinition="The profile that describes the use of the base resource." )
1870    protected CanonicalType profile;
1871
1872    /**
1873     * Links this graph makes rules about.
1874     */
1875    @Child(name = "link", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1876    @Description(shortDefinition="Links this graph makes rules about", formalDefinition="Links this graph makes rules about." )
1877    protected List<GraphDefinitionLinkComponent> link;
1878
1879    private static final long serialVersionUID = -1567569412L;
1880
1881  /**
1882   * Constructor
1883   */
1884    public GraphDefinition() {
1885      super();
1886    }
1887
1888  /**
1889   * Constructor
1890   */
1891    public GraphDefinition(String name, PublicationStatus status, String start) {
1892      super();
1893      this.setName(name);
1894      this.setStatus(status);
1895      this.setStart(start);
1896    }
1897
1898    /**
1899     * @return {@link #url} (An absolute URI that is used to identify this graph definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this graph definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the graph 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
1900     */
1901    public UriType getUrlElement() { 
1902      if (this.url == null)
1903        if (Configuration.errorOnAutoCreate())
1904          throw new Error("Attempt to auto-create GraphDefinition.url");
1905        else if (Configuration.doAutoCreate())
1906          this.url = new UriType(); // bb
1907      return this.url;
1908    }
1909
1910    public boolean hasUrlElement() { 
1911      return this.url != null && !this.url.isEmpty();
1912    }
1913
1914    public boolean hasUrl() { 
1915      return this.url != null && !this.url.isEmpty();
1916    }
1917
1918    /**
1919     * @param value {@link #url} (An absolute URI that is used to identify this graph definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this graph definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the graph 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
1920     */
1921    public GraphDefinition setUrlElement(UriType value) { 
1922      this.url = value;
1923      return this;
1924    }
1925
1926    /**
1927     * @return An absolute URI that is used to identify this graph definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this graph definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the graph definition is stored on different servers.
1928     */
1929    public String getUrl() { 
1930      return this.url == null ? null : this.url.getValue();
1931    }
1932
1933    /**
1934     * @param value An absolute URI that is used to identify this graph definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this graph definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the graph definition is stored on different servers.
1935     */
1936    public GraphDefinition setUrl(String value) { 
1937      if (Utilities.noString(value))
1938        this.url = null;
1939      else {
1940        if (this.url == null)
1941          this.url = new UriType();
1942        this.url.setValue(value);
1943      }
1944      return this;
1945    }
1946
1947    /**
1948     * @return {@link #version} (The identifier that is used to identify this version of the graph definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the graph 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
1949     */
1950    public StringType getVersionElement() { 
1951      if (this.version == null)
1952        if (Configuration.errorOnAutoCreate())
1953          throw new Error("Attempt to auto-create GraphDefinition.version");
1954        else if (Configuration.doAutoCreate())
1955          this.version = new StringType(); // bb
1956      return this.version;
1957    }
1958
1959    public boolean hasVersionElement() { 
1960      return this.version != null && !this.version.isEmpty();
1961    }
1962
1963    public boolean hasVersion() { 
1964      return this.version != null && !this.version.isEmpty();
1965    }
1966
1967    /**
1968     * @param value {@link #version} (The identifier that is used to identify this version of the graph definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the graph 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
1969     */
1970    public GraphDefinition setVersionElement(StringType value) { 
1971      this.version = value;
1972      return this;
1973    }
1974
1975    /**
1976     * @return The identifier that is used to identify this version of the graph definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the graph 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.
1977     */
1978    public String getVersion() { 
1979      return this.version == null ? null : this.version.getValue();
1980    }
1981
1982    /**
1983     * @param value The identifier that is used to identify this version of the graph definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the graph 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.
1984     */
1985    public GraphDefinition setVersion(String value) { 
1986      if (Utilities.noString(value))
1987        this.version = null;
1988      else {
1989        if (this.version == null)
1990          this.version = new StringType();
1991        this.version.setValue(value);
1992      }
1993      return this;
1994    }
1995
1996    /**
1997     * @return {@link #name} (A natural language name identifying the graph 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
1998     */
1999    public StringType getNameElement() { 
2000      if (this.name == null)
2001        if (Configuration.errorOnAutoCreate())
2002          throw new Error("Attempt to auto-create GraphDefinition.name");
2003        else if (Configuration.doAutoCreate())
2004          this.name = new StringType(); // bb
2005      return this.name;
2006    }
2007
2008    public boolean hasNameElement() { 
2009      return this.name != null && !this.name.isEmpty();
2010    }
2011
2012    public boolean hasName() { 
2013      return this.name != null && !this.name.isEmpty();
2014    }
2015
2016    /**
2017     * @param value {@link #name} (A natural language name identifying the graph 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
2018     */
2019    public GraphDefinition setNameElement(StringType value) { 
2020      this.name = value;
2021      return this;
2022    }
2023
2024    /**
2025     * @return A natural language name identifying the graph definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2026     */
2027    public String getName() { 
2028      return this.name == null ? null : this.name.getValue();
2029    }
2030
2031    /**
2032     * @param value A natural language name identifying the graph definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2033     */
2034    public GraphDefinition setName(String value) { 
2035        if (this.name == null)
2036          this.name = new StringType();
2037        this.name.setValue(value);
2038      return this;
2039    }
2040
2041    /**
2042     * @return {@link #status} (The status of this graph 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
2043     */
2044    public Enumeration<PublicationStatus> getStatusElement() { 
2045      if (this.status == null)
2046        if (Configuration.errorOnAutoCreate())
2047          throw new Error("Attempt to auto-create GraphDefinition.status");
2048        else if (Configuration.doAutoCreate())
2049          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
2050      return this.status;
2051    }
2052
2053    public boolean hasStatusElement() { 
2054      return this.status != null && !this.status.isEmpty();
2055    }
2056
2057    public boolean hasStatus() { 
2058      return this.status != null && !this.status.isEmpty();
2059    }
2060
2061    /**
2062     * @param value {@link #status} (The status of this graph 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
2063     */
2064    public GraphDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
2065      this.status = value;
2066      return this;
2067    }
2068
2069    /**
2070     * @return The status of this graph definition. Enables tracking the life-cycle of the content.
2071     */
2072    public PublicationStatus getStatus() { 
2073      return this.status == null ? null : this.status.getValue();
2074    }
2075
2076    /**
2077     * @param value The status of this graph definition. Enables tracking the life-cycle of the content.
2078     */
2079    public GraphDefinition setStatus(PublicationStatus value) { 
2080        if (this.status == null)
2081          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
2082        this.status.setValue(value);
2083      return this;
2084    }
2085
2086    /**
2087     * @return {@link #experimental} (A Boolean value to indicate that this graph 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
2088     */
2089    public BooleanType getExperimentalElement() { 
2090      if (this.experimental == null)
2091        if (Configuration.errorOnAutoCreate())
2092          throw new Error("Attempt to auto-create GraphDefinition.experimental");
2093        else if (Configuration.doAutoCreate())
2094          this.experimental = new BooleanType(); // bb
2095      return this.experimental;
2096    }
2097
2098    public boolean hasExperimentalElement() { 
2099      return this.experimental != null && !this.experimental.isEmpty();
2100    }
2101
2102    public boolean hasExperimental() { 
2103      return this.experimental != null && !this.experimental.isEmpty();
2104    }
2105
2106    /**
2107     * @param value {@link #experimental} (A Boolean value to indicate that this graph 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
2108     */
2109    public GraphDefinition setExperimentalElement(BooleanType value) { 
2110      this.experimental = value;
2111      return this;
2112    }
2113
2114    /**
2115     * @return A Boolean value to indicate that this graph definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
2116     */
2117    public boolean getExperimental() { 
2118      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
2119    }
2120
2121    /**
2122     * @param value A Boolean value to indicate that this graph definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
2123     */
2124    public GraphDefinition setExperimental(boolean value) { 
2125        if (this.experimental == null)
2126          this.experimental = new BooleanType();
2127        this.experimental.setValue(value);
2128      return this;
2129    }
2130
2131    /**
2132     * @return {@link #date} (The date  (and optionally time) when the graph 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 graph definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
2133     */
2134    public DateTimeType getDateElement() { 
2135      if (this.date == null)
2136        if (Configuration.errorOnAutoCreate())
2137          throw new Error("Attempt to auto-create GraphDefinition.date");
2138        else if (Configuration.doAutoCreate())
2139          this.date = new DateTimeType(); // bb
2140      return this.date;
2141    }
2142
2143    public boolean hasDateElement() { 
2144      return this.date != null && !this.date.isEmpty();
2145    }
2146
2147    public boolean hasDate() { 
2148      return this.date != null && !this.date.isEmpty();
2149    }
2150
2151    /**
2152     * @param value {@link #date} (The date  (and optionally time) when the graph 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 graph definition changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
2153     */
2154    public GraphDefinition setDateElement(DateTimeType value) { 
2155      this.date = value;
2156      return this;
2157    }
2158
2159    /**
2160     * @return The date  (and optionally time) when the graph 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 graph definition changes.
2161     */
2162    public Date getDate() { 
2163      return this.date == null ? null : this.date.getValue();
2164    }
2165
2166    /**
2167     * @param value The date  (and optionally time) when the graph 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 graph definition changes.
2168     */
2169    public GraphDefinition setDate(Date value) { 
2170      if (value == null)
2171        this.date = null;
2172      else {
2173        if (this.date == null)
2174          this.date = new DateTimeType();
2175        this.date.setValue(value);
2176      }
2177      return this;
2178    }
2179
2180    /**
2181     * @return {@link #publisher} (The name of the organization or individual that published the graph definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2182     */
2183    public StringType getPublisherElement() { 
2184      if (this.publisher == null)
2185        if (Configuration.errorOnAutoCreate())
2186          throw new Error("Attempt to auto-create GraphDefinition.publisher");
2187        else if (Configuration.doAutoCreate())
2188          this.publisher = new StringType(); // bb
2189      return this.publisher;
2190    }
2191
2192    public boolean hasPublisherElement() { 
2193      return this.publisher != null && !this.publisher.isEmpty();
2194    }
2195
2196    public boolean hasPublisher() { 
2197      return this.publisher != null && !this.publisher.isEmpty();
2198    }
2199
2200    /**
2201     * @param value {@link #publisher} (The name of the organization or individual that published the graph definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2202     */
2203    public GraphDefinition setPublisherElement(StringType value) { 
2204      this.publisher = value;
2205      return this;
2206    }
2207
2208    /**
2209     * @return The name of the organization or individual that published the graph definition.
2210     */
2211    public String getPublisher() { 
2212      return this.publisher == null ? null : this.publisher.getValue();
2213    }
2214
2215    /**
2216     * @param value The name of the organization or individual that published the graph definition.
2217     */
2218    public GraphDefinition setPublisher(String value) { 
2219      if (Utilities.noString(value))
2220        this.publisher = null;
2221      else {
2222        if (this.publisher == null)
2223          this.publisher = new StringType();
2224        this.publisher.setValue(value);
2225      }
2226      return this;
2227    }
2228
2229    /**
2230     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
2231     */
2232    public List<ContactDetail> getContact() { 
2233      if (this.contact == null)
2234        this.contact = new ArrayList<ContactDetail>();
2235      return this.contact;
2236    }
2237
2238    /**
2239     * @return Returns a reference to <code>this</code> for easy method chaining
2240     */
2241    public GraphDefinition setContact(List<ContactDetail> theContact) { 
2242      this.contact = theContact;
2243      return this;
2244    }
2245
2246    public boolean hasContact() { 
2247      if (this.contact == null)
2248        return false;
2249      for (ContactDetail item : this.contact)
2250        if (!item.isEmpty())
2251          return true;
2252      return false;
2253    }
2254
2255    public ContactDetail addContact() { //3
2256      ContactDetail t = new ContactDetail();
2257      if (this.contact == null)
2258        this.contact = new ArrayList<ContactDetail>();
2259      this.contact.add(t);
2260      return t;
2261    }
2262
2263    public GraphDefinition addContact(ContactDetail t) { //3
2264      if (t == null)
2265        return this;
2266      if (this.contact == null)
2267        this.contact = new ArrayList<ContactDetail>();
2268      this.contact.add(t);
2269      return this;
2270    }
2271
2272    /**
2273     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
2274     */
2275    public ContactDetail getContactFirstRep() { 
2276      if (getContact().isEmpty()) {
2277        addContact();
2278      }
2279      return getContact().get(0);
2280    }
2281
2282    /**
2283     * @return {@link #description} (A free text natural language description of the graph 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
2284     */
2285    public MarkdownType getDescriptionElement() { 
2286      if (this.description == null)
2287        if (Configuration.errorOnAutoCreate())
2288          throw new Error("Attempt to auto-create GraphDefinition.description");
2289        else if (Configuration.doAutoCreate())
2290          this.description = new MarkdownType(); // bb
2291      return this.description;
2292    }
2293
2294    public boolean hasDescriptionElement() { 
2295      return this.description != null && !this.description.isEmpty();
2296    }
2297
2298    public boolean hasDescription() { 
2299      return this.description != null && !this.description.isEmpty();
2300    }
2301
2302    /**
2303     * @param value {@link #description} (A free text natural language description of the graph 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
2304     */
2305    public GraphDefinition setDescriptionElement(MarkdownType value) { 
2306      this.description = value;
2307      return this;
2308    }
2309
2310    /**
2311     * @return A free text natural language description of the graph definition from a consumer's perspective.
2312     */
2313    public String getDescription() { 
2314      return this.description == null ? null : this.description.getValue();
2315    }
2316
2317    /**
2318     * @param value A free text natural language description of the graph definition from a consumer's perspective.
2319     */
2320    public GraphDefinition setDescription(String value) { 
2321      if (value == null)
2322        this.description = null;
2323      else {
2324        if (this.description == null)
2325          this.description = new MarkdownType();
2326        this.description.setValue(value);
2327      }
2328      return this;
2329    }
2330
2331    /**
2332     * @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 graph definition instances.)
2333     */
2334    public List<UsageContext> getUseContext() { 
2335      if (this.useContext == null)
2336        this.useContext = new ArrayList<UsageContext>();
2337      return this.useContext;
2338    }
2339
2340    /**
2341     * @return Returns a reference to <code>this</code> for easy method chaining
2342     */
2343    public GraphDefinition setUseContext(List<UsageContext> theUseContext) { 
2344      this.useContext = theUseContext;
2345      return this;
2346    }
2347
2348    public boolean hasUseContext() { 
2349      if (this.useContext == null)
2350        return false;
2351      for (UsageContext item : this.useContext)
2352        if (!item.isEmpty())
2353          return true;
2354      return false;
2355    }
2356
2357    public UsageContext addUseContext() { //3
2358      UsageContext t = new UsageContext();
2359      if (this.useContext == null)
2360        this.useContext = new ArrayList<UsageContext>();
2361      this.useContext.add(t);
2362      return t;
2363    }
2364
2365    public GraphDefinition addUseContext(UsageContext t) { //3
2366      if (t == null)
2367        return this;
2368      if (this.useContext == null)
2369        this.useContext = new ArrayList<UsageContext>();
2370      this.useContext.add(t);
2371      return this;
2372    }
2373
2374    /**
2375     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
2376     */
2377    public UsageContext getUseContextFirstRep() { 
2378      if (getUseContext().isEmpty()) {
2379        addUseContext();
2380      }
2381      return getUseContext().get(0);
2382    }
2383
2384    /**
2385     * @return {@link #jurisdiction} (A legal or geographic region in which the graph definition is intended to be used.)
2386     */
2387    public List<CodeableConcept> getJurisdiction() { 
2388      if (this.jurisdiction == null)
2389        this.jurisdiction = new ArrayList<CodeableConcept>();
2390      return this.jurisdiction;
2391    }
2392
2393    /**
2394     * @return Returns a reference to <code>this</code> for easy method chaining
2395     */
2396    public GraphDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
2397      this.jurisdiction = theJurisdiction;
2398      return this;
2399    }
2400
2401    public boolean hasJurisdiction() { 
2402      if (this.jurisdiction == null)
2403        return false;
2404      for (CodeableConcept item : this.jurisdiction)
2405        if (!item.isEmpty())
2406          return true;
2407      return false;
2408    }
2409
2410    public CodeableConcept addJurisdiction() { //3
2411      CodeableConcept t = new CodeableConcept();
2412      if (this.jurisdiction == null)
2413        this.jurisdiction = new ArrayList<CodeableConcept>();
2414      this.jurisdiction.add(t);
2415      return t;
2416    }
2417
2418    public GraphDefinition addJurisdiction(CodeableConcept t) { //3
2419      if (t == null)
2420        return this;
2421      if (this.jurisdiction == null)
2422        this.jurisdiction = new ArrayList<CodeableConcept>();
2423      this.jurisdiction.add(t);
2424      return this;
2425    }
2426
2427    /**
2428     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
2429     */
2430    public CodeableConcept getJurisdictionFirstRep() { 
2431      if (getJurisdiction().isEmpty()) {
2432        addJurisdiction();
2433      }
2434      return getJurisdiction().get(0);
2435    }
2436
2437    /**
2438     * @return {@link #purpose} (Explanation of why this graph 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
2439     */
2440    public MarkdownType getPurposeElement() { 
2441      if (this.purpose == null)
2442        if (Configuration.errorOnAutoCreate())
2443          throw new Error("Attempt to auto-create GraphDefinition.purpose");
2444        else if (Configuration.doAutoCreate())
2445          this.purpose = new MarkdownType(); // bb
2446      return this.purpose;
2447    }
2448
2449    public boolean hasPurposeElement() { 
2450      return this.purpose != null && !this.purpose.isEmpty();
2451    }
2452
2453    public boolean hasPurpose() { 
2454      return this.purpose != null && !this.purpose.isEmpty();
2455    }
2456
2457    /**
2458     * @param value {@link #purpose} (Explanation of why this graph 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
2459     */
2460    public GraphDefinition setPurposeElement(MarkdownType value) { 
2461      this.purpose = value;
2462      return this;
2463    }
2464
2465    /**
2466     * @return Explanation of why this graph definition is needed and why it has been designed as it has.
2467     */
2468    public String getPurpose() { 
2469      return this.purpose == null ? null : this.purpose.getValue();
2470    }
2471
2472    /**
2473     * @param value Explanation of why this graph definition is needed and why it has been designed as it has.
2474     */
2475    public GraphDefinition setPurpose(String value) { 
2476      if (value == null)
2477        this.purpose = null;
2478      else {
2479        if (this.purpose == null)
2480          this.purpose = new MarkdownType();
2481        this.purpose.setValue(value);
2482      }
2483      return this;
2484    }
2485
2486    /**
2487     * @return {@link #start} (The type of FHIR resource at which instances of this graph start.). This is the underlying object with id, value and extensions. The accessor "getStart" gives direct access to the value
2488     */
2489    public CodeType getStartElement() { 
2490      if (this.start == null)
2491        if (Configuration.errorOnAutoCreate())
2492          throw new Error("Attempt to auto-create GraphDefinition.start");
2493        else if (Configuration.doAutoCreate())
2494          this.start = new CodeType(); // bb
2495      return this.start;
2496    }
2497
2498    public boolean hasStartElement() { 
2499      return this.start != null && !this.start.isEmpty();
2500    }
2501
2502    public boolean hasStart() { 
2503      return this.start != null && !this.start.isEmpty();
2504    }
2505
2506    /**
2507     * @param value {@link #start} (The type of FHIR resource at which instances of this graph start.). This is the underlying object with id, value and extensions. The accessor "getStart" gives direct access to the value
2508     */
2509    public GraphDefinition setStartElement(CodeType value) { 
2510      this.start = value;
2511      return this;
2512    }
2513
2514    /**
2515     * @return The type of FHIR resource at which instances of this graph start.
2516     */
2517    public String getStart() { 
2518      return this.start == null ? null : this.start.getValue();
2519    }
2520
2521    /**
2522     * @param value The type of FHIR resource at which instances of this graph start.
2523     */
2524    public GraphDefinition setStart(String value) { 
2525        if (this.start == null)
2526          this.start = new CodeType();
2527        this.start.setValue(value);
2528      return this;
2529    }
2530
2531    /**
2532     * @return {@link #profile} (The profile that describes the use of the base resource.). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
2533     */
2534    public CanonicalType getProfileElement() { 
2535      if (this.profile == null)
2536        if (Configuration.errorOnAutoCreate())
2537          throw new Error("Attempt to auto-create GraphDefinition.profile");
2538        else if (Configuration.doAutoCreate())
2539          this.profile = new CanonicalType(); // bb
2540      return this.profile;
2541    }
2542
2543    public boolean hasProfileElement() { 
2544      return this.profile != null && !this.profile.isEmpty();
2545    }
2546
2547    public boolean hasProfile() { 
2548      return this.profile != null && !this.profile.isEmpty();
2549    }
2550
2551    /**
2552     * @param value {@link #profile} (The profile that describes the use of the base resource.). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
2553     */
2554    public GraphDefinition setProfileElement(CanonicalType value) { 
2555      this.profile = value;
2556      return this;
2557    }
2558
2559    /**
2560     * @return The profile that describes the use of the base resource.
2561     */
2562    public String getProfile() { 
2563      return this.profile == null ? null : this.profile.getValue();
2564    }
2565
2566    /**
2567     * @param value The profile that describes the use of the base resource.
2568     */
2569    public GraphDefinition setProfile(String value) { 
2570      if (Utilities.noString(value))
2571        this.profile = null;
2572      else {
2573        if (this.profile == null)
2574          this.profile = new CanonicalType();
2575        this.profile.setValue(value);
2576      }
2577      return this;
2578    }
2579
2580    /**
2581     * @return {@link #link} (Links this graph makes rules about.)
2582     */
2583    public List<GraphDefinitionLinkComponent> getLink() { 
2584      if (this.link == null)
2585        this.link = new ArrayList<GraphDefinitionLinkComponent>();
2586      return this.link;
2587    }
2588
2589    /**
2590     * @return Returns a reference to <code>this</code> for easy method chaining
2591     */
2592    public GraphDefinition setLink(List<GraphDefinitionLinkComponent> theLink) { 
2593      this.link = theLink;
2594      return this;
2595    }
2596
2597    public boolean hasLink() { 
2598      if (this.link == null)
2599        return false;
2600      for (GraphDefinitionLinkComponent item : this.link)
2601        if (!item.isEmpty())
2602          return true;
2603      return false;
2604    }
2605
2606    public GraphDefinitionLinkComponent addLink() { //3
2607      GraphDefinitionLinkComponent t = new GraphDefinitionLinkComponent();
2608      if (this.link == null)
2609        this.link = new ArrayList<GraphDefinitionLinkComponent>();
2610      this.link.add(t);
2611      return t;
2612    }
2613
2614    public GraphDefinition addLink(GraphDefinitionLinkComponent t) { //3
2615      if (t == null)
2616        return this;
2617      if (this.link == null)
2618        this.link = new ArrayList<GraphDefinitionLinkComponent>();
2619      this.link.add(t);
2620      return this;
2621    }
2622
2623    /**
2624     * @return The first repetition of repeating field {@link #link}, creating it if it does not already exist {3}
2625     */
2626    public GraphDefinitionLinkComponent getLinkFirstRep() { 
2627      if (getLink().isEmpty()) {
2628        addLink();
2629      }
2630      return getLink().get(0);
2631    }
2632
2633      protected void listChildren(List<Property> children) {
2634        super.listChildren(children);
2635        children.add(new Property("url", "uri", "An absolute URI that is used to identify this graph definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this graph definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the graph definition is stored on different servers.", 0, 1, url));
2636        children.add(new Property("version", "string", "The identifier that is used to identify this version of the graph definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the graph 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));
2637        children.add(new Property("name", "string", "A natural language name identifying the graph definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
2638        children.add(new Property("status", "code", "The status of this graph definition. Enables tracking the life-cycle of the content.", 0, 1, status));
2639        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this graph definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
2640        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the graph 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 graph definition changes.", 0, 1, date));
2641        children.add(new Property("publisher", "string", "The name of the organization or individual that published the graph definition.", 0, 1, publisher));
2642        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));
2643        children.add(new Property("description", "markdown", "A free text natural language description of the graph definition from a consumer's perspective.", 0, 1, description));
2644        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 graph definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
2645        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the graph definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
2646        children.add(new Property("purpose", "markdown", "Explanation of why this graph definition is needed and why it has been designed as it has.", 0, 1, purpose));
2647        children.add(new Property("start", "code", "The type of FHIR resource at which instances of this graph start.", 0, 1, start));
2648        children.add(new Property("profile", "canonical(StructureDefinition)", "The profile that describes the use of the base resource.", 0, 1, profile));
2649        children.add(new Property("link", "", "Links this graph makes rules about.", 0, java.lang.Integer.MAX_VALUE, link));
2650      }
2651
2652      @Override
2653      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2654        switch (_hash) {
2655        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this graph definition when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this graph definition is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the graph definition is stored on different servers.", 0, 1, url);
2656        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the graph definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the graph 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);
2657        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the graph definition. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
2658        case -892481550: /*status*/  return new Property("status", "code", "The status of this graph definition. Enables tracking the life-cycle of the content.", 0, 1, status);
2659        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this graph definition is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
2660        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the graph 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 graph definition changes.", 0, 1, date);
2661        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the graph definition.", 0, 1, publisher);
2662        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);
2663        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the graph definition from a consumer's perspective.", 0, 1, description);
2664        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 graph definition instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
2665        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the graph definition is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
2666        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this graph definition is needed and why it has been designed as it has.", 0, 1, purpose);
2667        case 109757538: /*start*/  return new Property("start", "code", "The type of FHIR resource at which instances of this graph start.", 0, 1, start);
2668        case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "The profile that describes the use of the base resource.", 0, 1, profile);
2669        case 3321850: /*link*/  return new Property("link", "", "Links this graph makes rules about.", 0, java.lang.Integer.MAX_VALUE, link);
2670        default: return super.getNamedProperty(_hash, _name, _checkValid);
2671        }
2672
2673      }
2674
2675      @Override
2676      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2677        switch (hash) {
2678        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
2679        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
2680        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
2681        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
2682        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
2683        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
2684        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
2685        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
2686        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
2687        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
2688        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
2689        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
2690        case 109757538: /*start*/ return this.start == null ? new Base[0] : new Base[] {this.start}; // CodeType
2691        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
2692        case 3321850: /*link*/ return this.link == null ? new Base[0] : this.link.toArray(new Base[this.link.size()]); // GraphDefinitionLinkComponent
2693        default: return super.getProperty(hash, name, checkValid);
2694        }
2695
2696      }
2697
2698      @Override
2699      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2700        switch (hash) {
2701        case 116079: // url
2702          this.url = TypeConvertor.castToUri(value); // UriType
2703          return value;
2704        case 351608024: // version
2705          this.version = TypeConvertor.castToString(value); // StringType
2706          return value;
2707        case 3373707: // name
2708          this.name = TypeConvertor.castToString(value); // StringType
2709          return value;
2710        case -892481550: // status
2711          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2712          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2713          return value;
2714        case -404562712: // experimental
2715          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2716          return value;
2717        case 3076014: // date
2718          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2719          return value;
2720        case 1447404028: // publisher
2721          this.publisher = TypeConvertor.castToString(value); // StringType
2722          return value;
2723        case 951526432: // contact
2724          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
2725          return value;
2726        case -1724546052: // description
2727          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2728          return value;
2729        case -669707736: // useContext
2730          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
2731          return value;
2732        case -507075711: // jurisdiction
2733          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2734          return value;
2735        case -220463842: // purpose
2736          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2737          return value;
2738        case 109757538: // start
2739          this.start = TypeConvertor.castToCode(value); // CodeType
2740          return value;
2741        case -309425751: // profile
2742          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
2743          return value;
2744        case 3321850: // link
2745          this.getLink().add((GraphDefinitionLinkComponent) value); // GraphDefinitionLinkComponent
2746          return value;
2747        default: return super.setProperty(hash, name, value);
2748        }
2749
2750      }
2751
2752      @Override
2753      public Base setProperty(String name, Base value) throws FHIRException {
2754        if (name.equals("url")) {
2755          this.url = TypeConvertor.castToUri(value); // UriType
2756        } else if (name.equals("version")) {
2757          this.version = TypeConvertor.castToString(value); // StringType
2758        } else if (name.equals("name")) {
2759          this.name = TypeConvertor.castToString(value); // StringType
2760        } else if (name.equals("status")) {
2761          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2762          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2763        } else if (name.equals("experimental")) {
2764          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2765        } else if (name.equals("date")) {
2766          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2767        } else if (name.equals("publisher")) {
2768          this.publisher = TypeConvertor.castToString(value); // StringType
2769        } else if (name.equals("contact")) {
2770          this.getContact().add(TypeConvertor.castToContactDetail(value));
2771        } else if (name.equals("description")) {
2772          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2773        } else if (name.equals("useContext")) {
2774          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
2775        } else if (name.equals("jurisdiction")) {
2776          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
2777        } else if (name.equals("purpose")) {
2778          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2779        } else if (name.equals("start")) {
2780          this.start = TypeConvertor.castToCode(value); // CodeType
2781        } else if (name.equals("profile")) {
2782          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
2783        } else if (name.equals("link")) {
2784          this.getLink().add((GraphDefinitionLinkComponent) value);
2785        } else
2786          return super.setProperty(name, value);
2787        return value;
2788      }
2789
2790      @Override
2791      public Base makeProperty(int hash, String name) throws FHIRException {
2792        switch (hash) {
2793        case 116079:  return getUrlElement();
2794        case 351608024:  return getVersionElement();
2795        case 3373707:  return getNameElement();
2796        case -892481550:  return getStatusElement();
2797        case -404562712:  return getExperimentalElement();
2798        case 3076014:  return getDateElement();
2799        case 1447404028:  return getPublisherElement();
2800        case 951526432:  return addContact(); 
2801        case -1724546052:  return getDescriptionElement();
2802        case -669707736:  return addUseContext(); 
2803        case -507075711:  return addJurisdiction(); 
2804        case -220463842:  return getPurposeElement();
2805        case 109757538:  return getStartElement();
2806        case -309425751:  return getProfileElement();
2807        case 3321850:  return addLink(); 
2808        default: return super.makeProperty(hash, name);
2809        }
2810
2811      }
2812
2813      @Override
2814      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2815        switch (hash) {
2816        case 116079: /*url*/ return new String[] {"uri"};
2817        case 351608024: /*version*/ return new String[] {"string"};
2818        case 3373707: /*name*/ return new String[] {"string"};
2819        case -892481550: /*status*/ return new String[] {"code"};
2820        case -404562712: /*experimental*/ return new String[] {"boolean"};
2821        case 3076014: /*date*/ return new String[] {"dateTime"};
2822        case 1447404028: /*publisher*/ return new String[] {"string"};
2823        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
2824        case -1724546052: /*description*/ return new String[] {"markdown"};
2825        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
2826        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
2827        case -220463842: /*purpose*/ return new String[] {"markdown"};
2828        case 109757538: /*start*/ return new String[] {"code"};
2829        case -309425751: /*profile*/ return new String[] {"canonical"};
2830        case 3321850: /*link*/ return new String[] {};
2831        default: return super.getTypesForProperty(hash, name);
2832        }
2833
2834      }
2835
2836      @Override
2837      public Base addChild(String name) throws FHIRException {
2838        if (name.equals("url")) {
2839          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.url");
2840        }
2841        else if (name.equals("version")) {
2842          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.version");
2843        }
2844        else if (name.equals("name")) {
2845          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.name");
2846        }
2847        else if (name.equals("status")) {
2848          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.status");
2849        }
2850        else if (name.equals("experimental")) {
2851          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.experimental");
2852        }
2853        else if (name.equals("date")) {
2854          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.date");
2855        }
2856        else if (name.equals("publisher")) {
2857          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.publisher");
2858        }
2859        else if (name.equals("contact")) {
2860          return addContact();
2861        }
2862        else if (name.equals("description")) {
2863          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.description");
2864        }
2865        else if (name.equals("useContext")) {
2866          return addUseContext();
2867        }
2868        else if (name.equals("jurisdiction")) {
2869          return addJurisdiction();
2870        }
2871        else if (name.equals("purpose")) {
2872          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.purpose");
2873        }
2874        else if (name.equals("start")) {
2875          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.start");
2876        }
2877        else if (name.equals("profile")) {
2878          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.profile");
2879        }
2880        else if (name.equals("link")) {
2881          return addLink();
2882        }
2883        else
2884          return super.addChild(name);
2885      }
2886
2887  public String fhirType() {
2888    return "GraphDefinition";
2889
2890  }
2891
2892      public GraphDefinition copy() {
2893        GraphDefinition dst = new GraphDefinition();
2894        copyValues(dst);
2895        return dst;
2896      }
2897
2898      public void copyValues(GraphDefinition dst) {
2899        super.copyValues(dst);
2900        dst.url = url == null ? null : url.copy();
2901        dst.version = version == null ? null : version.copy();
2902        dst.name = name == null ? null : name.copy();
2903        dst.status = status == null ? null : status.copy();
2904        dst.experimental = experimental == null ? null : experimental.copy();
2905        dst.date = date == null ? null : date.copy();
2906        dst.publisher = publisher == null ? null : publisher.copy();
2907        if (contact != null) {
2908          dst.contact = new ArrayList<ContactDetail>();
2909          for (ContactDetail i : contact)
2910            dst.contact.add(i.copy());
2911        };
2912        dst.description = description == null ? null : description.copy();
2913        if (useContext != null) {
2914          dst.useContext = new ArrayList<UsageContext>();
2915          for (UsageContext i : useContext)
2916            dst.useContext.add(i.copy());
2917        };
2918        if (jurisdiction != null) {
2919          dst.jurisdiction = new ArrayList<CodeableConcept>();
2920          for (CodeableConcept i : jurisdiction)
2921            dst.jurisdiction.add(i.copy());
2922        };
2923        dst.purpose = purpose == null ? null : purpose.copy();
2924        dst.start = start == null ? null : start.copy();
2925        dst.profile = profile == null ? null : profile.copy();
2926        if (link != null) {
2927          dst.link = new ArrayList<GraphDefinitionLinkComponent>();
2928          for (GraphDefinitionLinkComponent i : link)
2929            dst.link.add(i.copy());
2930        };
2931      }
2932
2933      protected GraphDefinition typedCopy() {
2934        return copy();
2935      }
2936
2937      @Override
2938      public boolean equalsDeep(Base other_) {
2939        if (!super.equalsDeep(other_))
2940          return false;
2941        if (!(other_ instanceof GraphDefinition))
2942          return false;
2943        GraphDefinition o = (GraphDefinition) other_;
2944        return compareDeep(url, o.url, true) && compareDeep(version, o.version, true) && compareDeep(name, o.name, true)
2945           && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true)
2946           && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true)
2947           && compareDeep(useContext, o.useContext, true) && compareDeep(jurisdiction, o.jurisdiction, true)
2948           && compareDeep(purpose, o.purpose, true) && compareDeep(start, o.start, true) && compareDeep(profile, o.profile, true)
2949           && compareDeep(link, o.link, true);
2950      }
2951
2952      @Override
2953      public boolean equalsShallow(Base other_) {
2954        if (!super.equalsShallow(other_))
2955          return false;
2956        if (!(other_ instanceof GraphDefinition))
2957          return false;
2958        GraphDefinition o = (GraphDefinition) other_;
2959        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
2960           && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true)
2961           && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true) && compareValues(purpose, o.purpose, true)
2962           && compareValues(start, o.start, true) && compareValues(profile, o.profile, true);
2963      }
2964
2965      public boolean isEmpty() {
2966        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, version, name, status
2967          , experimental, date, publisher, contact, description, useContext, jurisdiction
2968          , purpose, start, profile, link);
2969      }
2970
2971  @Override
2972  public ResourceType getResourceType() {
2973    return ResourceType.GraphDefinition;
2974   }
2975
2976 /**
2977   * Search parameter: <b>start</b>
2978   * <p>
2979   * Description: <b>Type of resource at which the graph starts</b><br>
2980   * Type: <b>token</b><br>
2981   * Path: <b>GraphDefinition.start</b><br>
2982   * </p>
2983   */
2984  @SearchParamDefinition(name="start", path="GraphDefinition.start", description="Type of resource at which the graph starts", type="token" )
2985  public static final String SP_START = "start";
2986 /**
2987   * <b>Fluent Client</b> search parameter constant for <b>start</b>
2988   * <p>
2989   * Description: <b>Type of resource at which the graph starts</b><br>
2990   * Type: <b>token</b><br>
2991   * Path: <b>GraphDefinition.start</b><br>
2992   * </p>
2993   */
2994  public static final ca.uhn.fhir.rest.gclient.TokenClientParam START = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_START);
2995
2996 /**
2997   * Search parameter: <b>context-quantity</b>
2998   * <p>
2999   * Description: <b>Multiple Resources: 
3000
3001* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3002* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3003* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3004* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3005* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3006* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3007* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3008* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3009* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3010* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3011* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3012* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3013* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3014* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3015</b><br>
3016   * Type: <b>quantity</b><br>
3017   * 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>
3018   * </p>
3019   */
3020  @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" )
3021  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
3022 /**
3023   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
3024   * <p>
3025   * Description: <b>Multiple Resources: 
3026
3027* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3028* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3029* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3030* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3031* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3032* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3033* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3034* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3035* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3036* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3037* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3038* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3039* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3040* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3041</b><br>
3042   * Type: <b>quantity</b><br>
3043   * 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>
3044   * </p>
3045   */
3046  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
3047
3048 /**
3049   * Search parameter: <b>context-type-quantity</b>
3050   * <p>
3051   * Description: <b>Multiple Resources: 
3052
3053* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3054* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3055* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3056* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3057* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3058* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3059* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3060* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3061* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3062* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3063* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3064* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3065* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3066* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3067</b><br>
3068   * Type: <b>composite</b><br>
3069   * 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>
3070   * </p>
3071   */
3072  @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"} )
3073  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
3074 /**
3075   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
3076   * <p>
3077   * Description: <b>Multiple Resources: 
3078
3079* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3080* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3081* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3082* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3083* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3084* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3085* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3086* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3087* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3088* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3089* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3090* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3091* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3092* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3093</b><br>
3094   * Type: <b>composite</b><br>
3095   * 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>
3096   * </p>
3097   */
3098  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);
3099
3100 /**
3101   * Search parameter: <b>context-type-value</b>
3102   * <p>
3103   * Description: <b>Multiple Resources: 
3104
3105* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3106* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3107* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3108* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3109* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3110* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3111* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3112* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3113* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3114* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3115* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3116* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3117* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3118* [ValueSet](valueset.html): A use context type and value assigned to the value set
3119</b><br>
3120   * Type: <b>composite</b><br>
3121   * 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>
3122   * </p>
3123   */
3124  @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"} )
3125  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
3126 /**
3127   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
3128   * <p>
3129   * Description: <b>Multiple Resources: 
3130
3131* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3132* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3133* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3134* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3135* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3136* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3137* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3138* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3139* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3140* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3141* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3142* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3143* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3144* [ValueSet](valueset.html): A use context type and value assigned to the value set
3145</b><br>
3146   * Type: <b>composite</b><br>
3147   * 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>
3148   * </p>
3149   */
3150  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);
3151
3152 /**
3153   * Search parameter: <b>context-type</b>
3154   * <p>
3155   * Description: <b>Multiple Resources: 
3156
3157* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3158* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3159* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3160* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3161* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3162* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3163* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3164* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3165* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3166* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3167* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3168* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3169* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3170* [ValueSet](valueset.html): A type of use context assigned to the value set
3171</b><br>
3172   * Type: <b>token</b><br>
3173   * 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>
3174   * </p>
3175   */
3176  @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" )
3177  public static final String SP_CONTEXT_TYPE = "context-type";
3178 /**
3179   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
3180   * <p>
3181   * Description: <b>Multiple Resources: 
3182
3183* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3184* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3185* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3186* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3187* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3188* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3189* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3190* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3191* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3192* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3193* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3194* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3195* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3196* [ValueSet](valueset.html): A type of use context assigned to the value set
3197</b><br>
3198   * Type: <b>token</b><br>
3199   * 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>
3200   * </p>
3201   */
3202  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
3203
3204 /**
3205   * Search parameter: <b>context</b>
3206   * <p>
3207   * Description: <b>Multiple Resources: 
3208
3209* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3210* [CodeSystem](codesystem.html): A use context assigned to the code system
3211* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3212* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3213* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3214* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3215* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3216* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3217* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3218* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3219* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3220* [StructureMap](structuremap.html): A use context assigned to the structure map
3221* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3222* [ValueSet](valueset.html): A use context assigned to the value set
3223</b><br>
3224   * Type: <b>token</b><br>
3225   * 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>
3226   * </p>
3227   */
3228  @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" )
3229  public static final String SP_CONTEXT = "context";
3230 /**
3231   * <b>Fluent Client</b> search parameter constant for <b>context</b>
3232   * <p>
3233   * Description: <b>Multiple Resources: 
3234
3235* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3236* [CodeSystem](codesystem.html): A use context assigned to the code system
3237* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3238* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3239* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3240* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3241* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3242* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3243* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3244* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3245* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3246* [StructureMap](structuremap.html): A use context assigned to the structure map
3247* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3248* [ValueSet](valueset.html): A use context assigned to the value set
3249</b><br>
3250   * Type: <b>token</b><br>
3251   * 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>
3252   * </p>
3253   */
3254  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
3255
3256 /**
3257   * Search parameter: <b>date</b>
3258   * <p>
3259   * Description: <b>Multiple Resources: 
3260
3261* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3262* [CodeSystem](codesystem.html): The code system publication date
3263* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3264* [ConceptMap](conceptmap.html): The concept map publication date
3265* [GraphDefinition](graphdefinition.html): The graph definition publication date
3266* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3267* [MessageDefinition](messagedefinition.html): The message definition publication date
3268* [NamingSystem](namingsystem.html): The naming system publication date
3269* [OperationDefinition](operationdefinition.html): The operation definition publication date
3270* [SearchParameter](searchparameter.html): The search parameter publication date
3271* [StructureDefinition](structuredefinition.html): The structure definition publication date
3272* [StructureMap](structuremap.html): The structure map publication date
3273* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3274* [ValueSet](valueset.html): The value set publication date
3275</b><br>
3276   * Type: <b>date</b><br>
3277   * 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>
3278   * </p>
3279   */
3280  @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" )
3281  public static final String SP_DATE = "date";
3282 /**
3283   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3284   * <p>
3285   * Description: <b>Multiple Resources: 
3286
3287* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3288* [CodeSystem](codesystem.html): The code system publication date
3289* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3290* [ConceptMap](conceptmap.html): The concept map publication date
3291* [GraphDefinition](graphdefinition.html): The graph definition publication date
3292* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3293* [MessageDefinition](messagedefinition.html): The message definition publication date
3294* [NamingSystem](namingsystem.html): The naming system publication date
3295* [OperationDefinition](operationdefinition.html): The operation definition publication date
3296* [SearchParameter](searchparameter.html): The search parameter publication date
3297* [StructureDefinition](structuredefinition.html): The structure definition publication date
3298* [StructureMap](structuremap.html): The structure map publication date
3299* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3300* [ValueSet](valueset.html): The value set publication date
3301</b><br>
3302   * Type: <b>date</b><br>
3303   * 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>
3304   * </p>
3305   */
3306  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3307
3308 /**
3309   * Search parameter: <b>description</b>
3310   * <p>
3311   * Description: <b>Multiple Resources: 
3312
3313* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3314* [CodeSystem](codesystem.html): The description of the code system
3315* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3316* [ConceptMap](conceptmap.html): The description of the concept map
3317* [GraphDefinition](graphdefinition.html): The description of the graph definition
3318* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3319* [MessageDefinition](messagedefinition.html): The description of the message definition
3320* [NamingSystem](namingsystem.html): The description of the naming system
3321* [OperationDefinition](operationdefinition.html): The description of the operation definition
3322* [SearchParameter](searchparameter.html): The description of the search parameter
3323* [StructureDefinition](structuredefinition.html): The description of the structure definition
3324* [StructureMap](structuremap.html): The description of the structure map
3325* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3326* [ValueSet](valueset.html): The description of the value set
3327</b><br>
3328   * Type: <b>string</b><br>
3329   * 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>
3330   * </p>
3331   */
3332  @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" )
3333  public static final String SP_DESCRIPTION = "description";
3334 /**
3335   * <b>Fluent Client</b> search parameter constant for <b>description</b>
3336   * <p>
3337   * Description: <b>Multiple Resources: 
3338
3339* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3340* [CodeSystem](codesystem.html): The description of the code system
3341* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3342* [ConceptMap](conceptmap.html): The description of the concept map
3343* [GraphDefinition](graphdefinition.html): The description of the graph definition
3344* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3345* [MessageDefinition](messagedefinition.html): The description of the message definition
3346* [NamingSystem](namingsystem.html): The description of the naming system
3347* [OperationDefinition](operationdefinition.html): The description of the operation definition
3348* [SearchParameter](searchparameter.html): The description of the search parameter
3349* [StructureDefinition](structuredefinition.html): The description of the structure definition
3350* [StructureMap](structuremap.html): The description of the structure map
3351* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3352* [ValueSet](valueset.html): The description of the value set
3353</b><br>
3354   * Type: <b>string</b><br>
3355   * 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>
3356   * </p>
3357   */
3358  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
3359
3360 /**
3361   * Search parameter: <b>jurisdiction</b>
3362   * <p>
3363   * Description: <b>Multiple Resources: 
3364
3365* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3366* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3367* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3368* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3369* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3370* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3371* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3372* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3373* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3374* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3375* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3376* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3377* [ValueSet](valueset.html): Intended jurisdiction for the value set
3378</b><br>
3379   * Type: <b>token</b><br>
3380   * 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>
3381   * </p>
3382   */
3383  @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" )
3384  public static final String SP_JURISDICTION = "jurisdiction";
3385 /**
3386   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
3387   * <p>
3388   * Description: <b>Multiple Resources: 
3389
3390* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3391* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3392* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3393* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3394* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3395* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3396* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3397* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3398* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3399* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3400* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3401* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3402* [ValueSet](valueset.html): Intended jurisdiction for the value set
3403</b><br>
3404   * Type: <b>token</b><br>
3405   * 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>
3406   * </p>
3407   */
3408  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
3409
3410 /**
3411   * Search parameter: <b>name</b>
3412   * <p>
3413   * Description: <b>Multiple Resources: 
3414
3415* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3416* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3417* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3418* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3419* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3420* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3421* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3422* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3423* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3424* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3425* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3426* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3427* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3428* [ValueSet](valueset.html): Computationally friendly name of the value set
3429</b><br>
3430   * Type: <b>string</b><br>
3431   * 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>
3432   * </p>
3433   */
3434  @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" )
3435  public static final String SP_NAME = "name";
3436 /**
3437   * <b>Fluent Client</b> search parameter constant for <b>name</b>
3438   * <p>
3439   * Description: <b>Multiple Resources: 
3440
3441* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3442* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3443* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3444* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3445* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3446* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3447* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3448* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3449* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3450* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3451* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3452* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3453* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3454* [ValueSet](valueset.html): Computationally friendly name of the value set
3455</b><br>
3456   * Type: <b>string</b><br>
3457   * 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>
3458   * </p>
3459   */
3460  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
3461
3462 /**
3463   * Search parameter: <b>publisher</b>
3464   * <p>
3465   * Description: <b>Multiple Resources: 
3466
3467* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3468* [CodeSystem](codesystem.html): Name of the publisher of the code system
3469* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3470* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3471* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3472* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3473* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3474* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3475* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3476* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3477* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3478* [StructureMap](structuremap.html): Name of the publisher of the structure map
3479* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3480* [ValueSet](valueset.html): Name of the publisher of the value set
3481</b><br>
3482   * Type: <b>string</b><br>
3483   * 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>
3484   * </p>
3485   */
3486  @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" )
3487  public static final String SP_PUBLISHER = "publisher";
3488 /**
3489   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
3490   * <p>
3491   * Description: <b>Multiple Resources: 
3492
3493* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3494* [CodeSystem](codesystem.html): Name of the publisher of the code system
3495* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3496* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3497* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3498* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3499* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3500* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3501* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3502* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3503* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3504* [StructureMap](structuremap.html): Name of the publisher of the structure map
3505* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3506* [ValueSet](valueset.html): Name of the publisher of the value set
3507</b><br>
3508   * Type: <b>string</b><br>
3509   * 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>
3510   * </p>
3511   */
3512  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
3513
3514 /**
3515   * Search parameter: <b>status</b>
3516   * <p>
3517   * Description: <b>Multiple Resources: 
3518
3519* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3520* [CodeSystem](codesystem.html): The current status of the code system
3521* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3522* [ConceptMap](conceptmap.html): The current status of the concept map
3523* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3524* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3525* [MessageDefinition](messagedefinition.html): The current status of the message definition
3526* [NamingSystem](namingsystem.html): The current status of the naming system
3527* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3528* [SearchParameter](searchparameter.html): The current status of the search parameter
3529* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3530* [StructureMap](structuremap.html): The current status of the structure map
3531* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3532* [ValueSet](valueset.html): The current status of the value set
3533</b><br>
3534   * Type: <b>token</b><br>
3535   * 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>
3536   * </p>
3537   */
3538  @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" )
3539  public static final String SP_STATUS = "status";
3540 /**
3541   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3542   * <p>
3543   * Description: <b>Multiple Resources: 
3544
3545* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3546* [CodeSystem](codesystem.html): The current status of the code system
3547* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3548* [ConceptMap](conceptmap.html): The current status of the concept map
3549* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3550* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3551* [MessageDefinition](messagedefinition.html): The current status of the message definition
3552* [NamingSystem](namingsystem.html): The current status of the naming system
3553* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3554* [SearchParameter](searchparameter.html): The current status of the search parameter
3555* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3556* [StructureMap](structuremap.html): The current status of the structure map
3557* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3558* [ValueSet](valueset.html): The current status of the value set
3559</b><br>
3560   * Type: <b>token</b><br>
3561   * 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>
3562   * </p>
3563   */
3564  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3565
3566 /**
3567   * Search parameter: <b>url</b>
3568   * <p>
3569   * Description: <b>Multiple Resources: 
3570
3571* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3572* [CodeSystem](codesystem.html): The uri that identifies the code system
3573* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3574* [ConceptMap](conceptmap.html): The uri that identifies the concept map
3575* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3576* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3577* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3578* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3579* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3580* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3581* [StructureMap](structuremap.html): The uri that identifies the structure map
3582* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3583* [ValueSet](valueset.html): The uri that identifies the value set
3584</b><br>
3585   * Type: <b>uri</b><br>
3586   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
3587   * </p>
3588   */
3589  @SearchParamDefinition(name="url", path="CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.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* [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" )
3590  public static final String SP_URL = "url";
3591 /**
3592   * <b>Fluent Client</b> search parameter constant for <b>url</b>
3593   * <p>
3594   * Description: <b>Multiple Resources: 
3595
3596* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3597* [CodeSystem](codesystem.html): The uri that identifies the code system
3598* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3599* [ConceptMap](conceptmap.html): The uri that identifies the concept map
3600* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3601* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3602* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3603* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3604* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3605* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3606* [StructureMap](structuremap.html): The uri that identifies the structure map
3607* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3608* [ValueSet](valueset.html): The uri that identifies the value set
3609</b><br>
3610   * Type: <b>uri</b><br>
3611   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
3612   * </p>
3613   */
3614  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
3615
3616 /**
3617   * Search parameter: <b>version</b>
3618   * <p>
3619   * Description: <b>Multiple Resources: 
3620
3621* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3622* [CodeSystem](codesystem.html): The business version of the code system
3623* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3624* [ConceptMap](conceptmap.html): The business version of the concept map
3625* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3626* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3627* [MessageDefinition](messagedefinition.html): The business version of the message definition
3628* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3629* [SearchParameter](searchparameter.html): The business version of the search parameter
3630* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3631* [StructureMap](structuremap.html): The business version of the structure map
3632* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3633* [ValueSet](valueset.html): The business version of the value set
3634</b><br>
3635   * Type: <b>token</b><br>
3636   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
3637   * </p>
3638   */
3639  @SearchParamDefinition(name="version", path="CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.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* [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" )
3640  public static final String SP_VERSION = "version";
3641 /**
3642   * <b>Fluent Client</b> search parameter constant for <b>version</b>
3643   * <p>
3644   * Description: <b>Multiple Resources: 
3645
3646* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3647* [CodeSystem](codesystem.html): The business version of the code system
3648* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3649* [ConceptMap](conceptmap.html): The business version of the concept map
3650* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3651* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3652* [MessageDefinition](messagedefinition.html): The business version of the message definition
3653* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3654* [SearchParameter](searchparameter.html): The business version of the search parameter
3655* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3656* [StructureMap](structuremap.html): The business version of the structure map
3657* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3658* [ValueSet](valueset.html): The business version of the value set
3659</b><br>
3660   * Type: <b>token</b><br>
3661   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
3662   * </p>
3663   */
3664  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
3665
3666// Manual code (from Configuration.txt):
3667  public boolean supportsCopyright() {
3668    return false;
3669  }
3670  
3671// end addition
3672
3673}
3674