001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Fri, Jul 15, 2022 11:20+1000 for FHIR v5.0.0-snapshot2
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A 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 CanonicalResource {
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    /**
2634     * not supported on this implementation
2635     */
2636    @Override
2637    public int getIdentifierMax() { 
2638      return 0;
2639    }
2640    /**
2641     * @return {@link #identifier} (A formal identifier that is used to identify this graph definition when it is represented in other formats, or referenced in a specification, model, design or an instance.)
2642     */
2643    public List<Identifier> getIdentifier() { 
2644      return new ArrayList<>();
2645    }
2646    /**
2647     * @return Returns a reference to <code>this</code> for easy method chaining
2648     */
2649    public GraphDefinition setIdentifier(List<Identifier> theIdentifier) { 
2650      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"identifier\"");
2651    }
2652    public boolean hasIdentifier() { 
2653      return false;
2654    }
2655
2656    public Identifier addIdentifier() { //3
2657      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"identifier\"");
2658    }
2659    public GraphDefinition addIdentifier(Identifier t) { //3
2660      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"identifier\"");
2661    }
2662    /**
2663     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {2}
2664     */
2665    public Identifier getIdentifierFirstRep() { 
2666      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"identifier\"");
2667    }
2668    /**
2669     * not supported on this implementation
2670     */
2671    @Override
2672    public int getTitleMax() { 
2673      return 0;
2674    }
2675    /**
2676     * @return {@link #title} (A short, descriptive, user-friendly title for the graph definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2677     */
2678    public StringType getTitleElement() { 
2679      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"title\"");
2680    }
2681
2682    public boolean hasTitleElement() { 
2683      return false;
2684    }
2685    public boolean hasTitle() {
2686      return false;
2687    }
2688
2689    /**
2690     * @param value {@link #title} (A short, descriptive, user-friendly title for the graph definition.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2691     */
2692    public GraphDefinition setTitleElement(StringType value) { 
2693      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"title\"");
2694    }
2695    public String getTitle() { 
2696      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"title\"");
2697    }
2698    /**
2699     * @param value A short, descriptive, user-friendly title for the graph definition.
2700     */
2701    public GraphDefinition setTitle(String value) { 
2702      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"title\"");
2703    }
2704    /**
2705     * not supported on this implementation
2706     */
2707    @Override
2708    public int getCopyrightMax() { 
2709      return 0;
2710    }
2711    /**
2712     * @return {@link #copyright} (A copyright statement relating to the graph definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the graph definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
2713     */
2714    public MarkdownType getCopyrightElement() { 
2715      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyright\"");
2716    }
2717
2718    public boolean hasCopyrightElement() { 
2719      return false;
2720    }
2721    public boolean hasCopyright() {
2722      return false;
2723    }
2724
2725    /**
2726     * @param value {@link #copyright} (A copyright statement relating to the graph definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the graph definition.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
2727     */
2728    public GraphDefinition setCopyrightElement(MarkdownType value) { 
2729      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyright\"");
2730    }
2731    public String getCopyright() { 
2732      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyright\"");
2733    }
2734    /**
2735     * @param value A copyright statement relating to the graph definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the graph definition.
2736     */
2737    public GraphDefinition setCopyright(String value) { 
2738      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyright\"");
2739    }
2740      protected void listChildren(List<Property> children) {
2741        super.listChildren(children);
2742        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));
2743        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));
2744        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));
2745        children.add(new Property("status", "code", "The status of this graph definition. Enables tracking the life-cycle of the content.", 0, 1, status));
2746        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));
2747        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));
2748        children.add(new Property("publisher", "string", "The name of the organization or individual that published the graph definition.", 0, 1, publisher));
2749        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));
2750        children.add(new Property("description", "markdown", "A free text natural language description of the graph definition from a consumer's perspective.", 0, 1, description));
2751        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));
2752        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));
2753        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));
2754        children.add(new Property("start", "code", "The type of FHIR resource at which instances of this graph start.", 0, 1, start));
2755        children.add(new Property("profile", "canonical(StructureDefinition)", "The profile that describes the use of the base resource.", 0, 1, profile));
2756        children.add(new Property("link", "", "Links this graph makes rules about.", 0, java.lang.Integer.MAX_VALUE, link));
2757      }
2758
2759      @Override
2760      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2761        switch (_hash) {
2762        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);
2763        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);
2764        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);
2765        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);
2766        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);
2767        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);
2768        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the graph definition.", 0, 1, publisher);
2769        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);
2770        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);
2771        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);
2772        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);
2773        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);
2774        case 109757538: /*start*/  return new Property("start", "code", "The type of FHIR resource at which instances of this graph start.", 0, 1, start);
2775        case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "The profile that describes the use of the base resource.", 0, 1, profile);
2776        case 3321850: /*link*/  return new Property("link", "", "Links this graph makes rules about.", 0, java.lang.Integer.MAX_VALUE, link);
2777        default: return super.getNamedProperty(_hash, _name, _checkValid);
2778        }
2779
2780      }
2781
2782      @Override
2783      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2784        switch (hash) {
2785        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
2786        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
2787        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
2788        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
2789        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
2790        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
2791        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
2792        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
2793        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
2794        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
2795        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
2796        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
2797        case 109757538: /*start*/ return this.start == null ? new Base[0] : new Base[] {this.start}; // CodeType
2798        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
2799        case 3321850: /*link*/ return this.link == null ? new Base[0] : this.link.toArray(new Base[this.link.size()]); // GraphDefinitionLinkComponent
2800        default: return super.getProperty(hash, name, checkValid);
2801        }
2802
2803      }
2804
2805      @Override
2806      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2807        switch (hash) {
2808        case 116079: // url
2809          this.url = TypeConvertor.castToUri(value); // UriType
2810          return value;
2811        case 351608024: // version
2812          this.version = TypeConvertor.castToString(value); // StringType
2813          return value;
2814        case 3373707: // name
2815          this.name = TypeConvertor.castToString(value); // StringType
2816          return value;
2817        case -892481550: // status
2818          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2819          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2820          return value;
2821        case -404562712: // experimental
2822          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2823          return value;
2824        case 3076014: // date
2825          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2826          return value;
2827        case 1447404028: // publisher
2828          this.publisher = TypeConvertor.castToString(value); // StringType
2829          return value;
2830        case 951526432: // contact
2831          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
2832          return value;
2833        case -1724546052: // description
2834          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2835          return value;
2836        case -669707736: // useContext
2837          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
2838          return value;
2839        case -507075711: // jurisdiction
2840          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2841          return value;
2842        case -220463842: // purpose
2843          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2844          return value;
2845        case 109757538: // start
2846          this.start = TypeConvertor.castToCode(value); // CodeType
2847          return value;
2848        case -309425751: // profile
2849          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
2850          return value;
2851        case 3321850: // link
2852          this.getLink().add((GraphDefinitionLinkComponent) value); // GraphDefinitionLinkComponent
2853          return value;
2854        default: return super.setProperty(hash, name, value);
2855        }
2856
2857      }
2858
2859      @Override
2860      public Base setProperty(String name, Base value) throws FHIRException {
2861        if (name.equals("url")) {
2862          this.url = TypeConvertor.castToUri(value); // UriType
2863        } else if (name.equals("version")) {
2864          this.version = TypeConvertor.castToString(value); // StringType
2865        } else if (name.equals("name")) {
2866          this.name = TypeConvertor.castToString(value); // StringType
2867        } else if (name.equals("status")) {
2868          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2869          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2870        } else if (name.equals("experimental")) {
2871          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2872        } else if (name.equals("date")) {
2873          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2874        } else if (name.equals("publisher")) {
2875          this.publisher = TypeConvertor.castToString(value); // StringType
2876        } else if (name.equals("contact")) {
2877          this.getContact().add(TypeConvertor.castToContactDetail(value));
2878        } else if (name.equals("description")) {
2879          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2880        } else if (name.equals("useContext")) {
2881          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
2882        } else if (name.equals("jurisdiction")) {
2883          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
2884        } else if (name.equals("purpose")) {
2885          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2886        } else if (name.equals("start")) {
2887          this.start = TypeConvertor.castToCode(value); // CodeType
2888        } else if (name.equals("profile")) {
2889          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
2890        } else if (name.equals("link")) {
2891          this.getLink().add((GraphDefinitionLinkComponent) value);
2892        } else
2893          return super.setProperty(name, value);
2894        return value;
2895      }
2896
2897      @Override
2898      public Base makeProperty(int hash, String name) throws FHIRException {
2899        switch (hash) {
2900        case 116079:  return getUrlElement();
2901        case 351608024:  return getVersionElement();
2902        case 3373707:  return getNameElement();
2903        case -892481550:  return getStatusElement();
2904        case -404562712:  return getExperimentalElement();
2905        case 3076014:  return getDateElement();
2906        case 1447404028:  return getPublisherElement();
2907        case 951526432:  return addContact(); 
2908        case -1724546052:  return getDescriptionElement();
2909        case -669707736:  return addUseContext(); 
2910        case -507075711:  return addJurisdiction(); 
2911        case -220463842:  return getPurposeElement();
2912        case 109757538:  return getStartElement();
2913        case -309425751:  return getProfileElement();
2914        case 3321850:  return addLink(); 
2915        default: return super.makeProperty(hash, name);
2916        }
2917
2918      }
2919
2920      @Override
2921      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2922        switch (hash) {
2923        case 116079: /*url*/ return new String[] {"uri"};
2924        case 351608024: /*version*/ return new String[] {"string"};
2925        case 3373707: /*name*/ return new String[] {"string"};
2926        case -892481550: /*status*/ return new String[] {"code"};
2927        case -404562712: /*experimental*/ return new String[] {"boolean"};
2928        case 3076014: /*date*/ return new String[] {"dateTime"};
2929        case 1447404028: /*publisher*/ return new String[] {"string"};
2930        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
2931        case -1724546052: /*description*/ return new String[] {"markdown"};
2932        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
2933        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
2934        case -220463842: /*purpose*/ return new String[] {"markdown"};
2935        case 109757538: /*start*/ return new String[] {"code"};
2936        case -309425751: /*profile*/ return new String[] {"canonical"};
2937        case 3321850: /*link*/ return new String[] {};
2938        default: return super.getTypesForProperty(hash, name);
2939        }
2940
2941      }
2942
2943      @Override
2944      public Base addChild(String name) throws FHIRException {
2945        if (name.equals("url")) {
2946          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.url");
2947        }
2948        else if (name.equals("version")) {
2949          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.version");
2950        }
2951        else if (name.equals("name")) {
2952          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.name");
2953        }
2954        else if (name.equals("status")) {
2955          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.status");
2956        }
2957        else if (name.equals("experimental")) {
2958          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.experimental");
2959        }
2960        else if (name.equals("date")) {
2961          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.date");
2962        }
2963        else if (name.equals("publisher")) {
2964          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.publisher");
2965        }
2966        else if (name.equals("contact")) {
2967          return addContact();
2968        }
2969        else if (name.equals("description")) {
2970          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.description");
2971        }
2972        else if (name.equals("useContext")) {
2973          return addUseContext();
2974        }
2975        else if (name.equals("jurisdiction")) {
2976          return addJurisdiction();
2977        }
2978        else if (name.equals("purpose")) {
2979          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.purpose");
2980        }
2981        else if (name.equals("start")) {
2982          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.start");
2983        }
2984        else if (name.equals("profile")) {
2985          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.profile");
2986        }
2987        else if (name.equals("link")) {
2988          return addLink();
2989        }
2990        else
2991          return super.addChild(name);
2992      }
2993
2994  public String fhirType() {
2995    return "GraphDefinition";
2996
2997  }
2998
2999      public GraphDefinition copy() {
3000        GraphDefinition dst = new GraphDefinition();
3001        copyValues(dst);
3002        return dst;
3003      }
3004
3005      public void copyValues(GraphDefinition dst) {
3006        super.copyValues(dst);
3007        dst.url = url == null ? null : url.copy();
3008        dst.version = version == null ? null : version.copy();
3009        dst.name = name == null ? null : name.copy();
3010        dst.status = status == null ? null : status.copy();
3011        dst.experimental = experimental == null ? null : experimental.copy();
3012        dst.date = date == null ? null : date.copy();
3013        dst.publisher = publisher == null ? null : publisher.copy();
3014        if (contact != null) {
3015          dst.contact = new ArrayList<ContactDetail>();
3016          for (ContactDetail i : contact)
3017            dst.contact.add(i.copy());
3018        };
3019        dst.description = description == null ? null : description.copy();
3020        if (useContext != null) {
3021          dst.useContext = new ArrayList<UsageContext>();
3022          for (UsageContext i : useContext)
3023            dst.useContext.add(i.copy());
3024        };
3025        if (jurisdiction != null) {
3026          dst.jurisdiction = new ArrayList<CodeableConcept>();
3027          for (CodeableConcept i : jurisdiction)
3028            dst.jurisdiction.add(i.copy());
3029        };
3030        dst.purpose = purpose == null ? null : purpose.copy();
3031        dst.start = start == null ? null : start.copy();
3032        dst.profile = profile == null ? null : profile.copy();
3033        if (link != null) {
3034          dst.link = new ArrayList<GraphDefinitionLinkComponent>();
3035          for (GraphDefinitionLinkComponent i : link)
3036            dst.link.add(i.copy());
3037        };
3038      }
3039
3040      protected GraphDefinition typedCopy() {
3041        return copy();
3042      }
3043
3044      @Override
3045      public boolean equalsDeep(Base other_) {
3046        if (!super.equalsDeep(other_))
3047          return false;
3048        if (!(other_ instanceof GraphDefinition))
3049          return false;
3050        GraphDefinition o = (GraphDefinition) other_;
3051        return compareDeep(url, o.url, true) && compareDeep(version, o.version, true) && compareDeep(name, o.name, true)
3052           && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true)
3053           && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true)
3054           && compareDeep(useContext, o.useContext, true) && compareDeep(jurisdiction, o.jurisdiction, true)
3055           && compareDeep(purpose, o.purpose, true) && compareDeep(start, o.start, true) && compareDeep(profile, o.profile, true)
3056           && compareDeep(link, o.link, true);
3057      }
3058
3059      @Override
3060      public boolean equalsShallow(Base other_) {
3061        if (!super.equalsShallow(other_))
3062          return false;
3063        if (!(other_ instanceof GraphDefinition))
3064          return false;
3065        GraphDefinition o = (GraphDefinition) other_;
3066        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
3067           && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true) && compareValues(date, o.date, true)
3068           && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true) && compareValues(purpose, o.purpose, true)
3069           && compareValues(start, o.start, true) && compareValues(profile, o.profile, true);
3070      }
3071
3072      public boolean isEmpty() {
3073        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, version, name, status
3074          , experimental, date, publisher, contact, description, useContext, jurisdiction
3075          , purpose, start, profile, link);
3076      }
3077
3078  @Override
3079  public ResourceType getResourceType() {
3080    return ResourceType.GraphDefinition;
3081   }
3082
3083 /**
3084   * Search parameter: <b>start</b>
3085   * <p>
3086   * Description: <b>Type of resource at which the graph starts</b><br>
3087   * Type: <b>token</b><br>
3088   * Path: <b>GraphDefinition.start</b><br>
3089   * </p>
3090   */
3091  @SearchParamDefinition(name="start", path="GraphDefinition.start", description="Type of resource at which the graph starts", type="token" )
3092  public static final String SP_START = "start";
3093 /**
3094   * <b>Fluent Client</b> search parameter constant for <b>start</b>
3095   * <p>
3096   * Description: <b>Type of resource at which the graph starts</b><br>
3097   * Type: <b>token</b><br>
3098   * Path: <b>GraphDefinition.start</b><br>
3099   * </p>
3100   */
3101  public static final ca.uhn.fhir.rest.gclient.TokenClientParam START = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_START);
3102
3103 /**
3104   * Search parameter: <b>context-quantity</b>
3105   * <p>
3106   * Description: <b>Multiple Resources: 
3107
3108* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3109* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3110* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3111* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3112* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3113* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3114* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3115* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3116* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3117* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3118* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3119* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3120* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3121* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3122</b><br>
3123   * Type: <b>quantity</b><br>
3124   * 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>
3125   * </p>
3126   */
3127  @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" )
3128  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
3129 /**
3130   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
3131   * <p>
3132   * Description: <b>Multiple Resources: 
3133
3134* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3135* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3136* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3137* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3138* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3139* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3140* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3141* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3142* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3143* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3144* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3145* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3146* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3147* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3148</b><br>
3149   * Type: <b>quantity</b><br>
3150   * 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>
3151   * </p>
3152   */
3153  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
3154
3155 /**
3156   * Search parameter: <b>context-type-quantity</b>
3157   * <p>
3158   * Description: <b>Multiple Resources: 
3159
3160* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3161* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3162* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3163* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3164* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3165* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3166* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3167* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3168* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3169* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3170* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3171* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3172* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3173* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3174</b><br>
3175   * Type: <b>composite</b><br>
3176   * 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>
3177   * </p>
3178   */
3179  @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"} )
3180  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
3181 /**
3182   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
3183   * <p>
3184   * Description: <b>Multiple Resources: 
3185
3186* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3187* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3188* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3189* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3190* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3191* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3192* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3193* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3194* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3195* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3196* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3197* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3198* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3199* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3200</b><br>
3201   * Type: <b>composite</b><br>
3202   * 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>
3203   * </p>
3204   */
3205  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);
3206
3207 /**
3208   * Search parameter: <b>context-type-value</b>
3209   * <p>
3210   * Description: <b>Multiple Resources: 
3211
3212* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3213* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3214* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3215* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3216* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3217* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3218* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3219* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3220* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3221* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3222* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3223* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3224* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3225* [ValueSet](valueset.html): A use context type and value assigned to the value set
3226</b><br>
3227   * Type: <b>composite</b><br>
3228   * 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>
3229   * </p>
3230   */
3231  @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"} )
3232  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
3233 /**
3234   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
3235   * <p>
3236   * Description: <b>Multiple Resources: 
3237
3238* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3239* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3240* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3241* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3242* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3243* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3244* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3245* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3246* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3247* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3248* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3249* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3250* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3251* [ValueSet](valueset.html): A use context type and value assigned to the value set
3252</b><br>
3253   * Type: <b>composite</b><br>
3254   * 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>
3255   * </p>
3256   */
3257  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);
3258
3259 /**
3260   * Search parameter: <b>context-type</b>
3261   * <p>
3262   * Description: <b>Multiple Resources: 
3263
3264* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3265* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3266* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3267* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3268* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3269* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3270* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3271* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3272* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3273* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3274* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3275* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3276* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3277* [ValueSet](valueset.html): A type of use context assigned to the value set
3278</b><br>
3279   * Type: <b>token</b><br>
3280   * 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>
3281   * </p>
3282   */
3283  @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" )
3284  public static final String SP_CONTEXT_TYPE = "context-type";
3285 /**
3286   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
3287   * <p>
3288   * Description: <b>Multiple Resources: 
3289
3290* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3291* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3292* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3293* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3294* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3295* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3296* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3297* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3298* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3299* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3300* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3301* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3302* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3303* [ValueSet](valueset.html): A type of use context assigned to the value set
3304</b><br>
3305   * Type: <b>token</b><br>
3306   * 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>
3307   * </p>
3308   */
3309  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
3310
3311 /**
3312   * Search parameter: <b>context</b>
3313   * <p>
3314   * Description: <b>Multiple Resources: 
3315
3316* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3317* [CodeSystem](codesystem.html): A use context assigned to the code system
3318* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3319* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3320* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3321* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3322* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3323* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3324* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3325* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3326* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3327* [StructureMap](structuremap.html): A use context assigned to the structure map
3328* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3329* [ValueSet](valueset.html): A use context assigned to the value set
3330</b><br>
3331   * Type: <b>token</b><br>
3332   * 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>
3333   * </p>
3334   */
3335  @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" )
3336  public static final String SP_CONTEXT = "context";
3337 /**
3338   * <b>Fluent Client</b> search parameter constant for <b>context</b>
3339   * <p>
3340   * Description: <b>Multiple Resources: 
3341
3342* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3343* [CodeSystem](codesystem.html): A use context assigned to the code system
3344* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3345* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3346* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3347* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3348* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3349* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3350* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3351* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3352* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3353* [StructureMap](structuremap.html): A use context assigned to the structure map
3354* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3355* [ValueSet](valueset.html): A use context assigned to the value set
3356</b><br>
3357   * Type: <b>token</b><br>
3358   * 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>
3359   * </p>
3360   */
3361  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
3362
3363 /**
3364   * Search parameter: <b>date</b>
3365   * <p>
3366   * Description: <b>Multiple Resources: 
3367
3368* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3369* [CodeSystem](codesystem.html): The code system publication date
3370* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3371* [ConceptMap](conceptmap.html): The concept map publication date
3372* [GraphDefinition](graphdefinition.html): The graph definition publication date
3373* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3374* [MessageDefinition](messagedefinition.html): The message definition publication date
3375* [NamingSystem](namingsystem.html): The naming system publication date
3376* [OperationDefinition](operationdefinition.html): The operation definition publication date
3377* [SearchParameter](searchparameter.html): The search parameter publication date
3378* [StructureDefinition](structuredefinition.html): The structure definition publication date
3379* [StructureMap](structuremap.html): The structure map publication date
3380* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3381* [ValueSet](valueset.html): The value set publication date
3382</b><br>
3383   * Type: <b>date</b><br>
3384   * 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>
3385   * </p>
3386   */
3387  @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" )
3388  public static final String SP_DATE = "date";
3389 /**
3390   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3391   * <p>
3392   * Description: <b>Multiple Resources: 
3393
3394* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3395* [CodeSystem](codesystem.html): The code system publication date
3396* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3397* [ConceptMap](conceptmap.html): The concept map publication date
3398* [GraphDefinition](graphdefinition.html): The graph definition publication date
3399* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3400* [MessageDefinition](messagedefinition.html): The message definition publication date
3401* [NamingSystem](namingsystem.html): The naming system publication date
3402* [OperationDefinition](operationdefinition.html): The operation definition publication date
3403* [SearchParameter](searchparameter.html): The search parameter publication date
3404* [StructureDefinition](structuredefinition.html): The structure definition publication date
3405* [StructureMap](structuremap.html): The structure map publication date
3406* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3407* [ValueSet](valueset.html): The value set publication date
3408</b><br>
3409   * Type: <b>date</b><br>
3410   * 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>
3411   * </p>
3412   */
3413  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3414
3415 /**
3416   * Search parameter: <b>description</b>
3417   * <p>
3418   * Description: <b>Multiple Resources: 
3419
3420* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3421* [CodeSystem](codesystem.html): The description of the code system
3422* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3423* [ConceptMap](conceptmap.html): The description of the concept map
3424* [GraphDefinition](graphdefinition.html): The description of the graph definition
3425* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3426* [MessageDefinition](messagedefinition.html): The description of the message definition
3427* [NamingSystem](namingsystem.html): The description of the naming system
3428* [OperationDefinition](operationdefinition.html): The description of the operation definition
3429* [SearchParameter](searchparameter.html): The description of the search parameter
3430* [StructureDefinition](structuredefinition.html): The description of the structure definition
3431* [StructureMap](structuremap.html): The description of the structure map
3432* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3433* [ValueSet](valueset.html): The description of the value set
3434</b><br>
3435   * Type: <b>string</b><br>
3436   * 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>
3437   * </p>
3438   */
3439  @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" )
3440  public static final String SP_DESCRIPTION = "description";
3441 /**
3442   * <b>Fluent Client</b> search parameter constant for <b>description</b>
3443   * <p>
3444   * Description: <b>Multiple Resources: 
3445
3446* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3447* [CodeSystem](codesystem.html): The description of the code system
3448* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3449* [ConceptMap](conceptmap.html): The description of the concept map
3450* [GraphDefinition](graphdefinition.html): The description of the graph definition
3451* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3452* [MessageDefinition](messagedefinition.html): The description of the message definition
3453* [NamingSystem](namingsystem.html): The description of the naming system
3454* [OperationDefinition](operationdefinition.html): The description of the operation definition
3455* [SearchParameter](searchparameter.html): The description of the search parameter
3456* [StructureDefinition](structuredefinition.html): The description of the structure definition
3457* [StructureMap](structuremap.html): The description of the structure map
3458* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3459* [ValueSet](valueset.html): The description of the value set
3460</b><br>
3461   * Type: <b>string</b><br>
3462   * 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>
3463   * </p>
3464   */
3465  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
3466
3467 /**
3468   * Search parameter: <b>jurisdiction</b>
3469   * <p>
3470   * Description: <b>Multiple Resources: 
3471
3472* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3473* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3474* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3475* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3476* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3477* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3478* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3479* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3480* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3481* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3482* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3483* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3484* [ValueSet](valueset.html): Intended jurisdiction for the value set
3485</b><br>
3486   * Type: <b>token</b><br>
3487   * 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>
3488   * </p>
3489   */
3490  @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" )
3491  public static final String SP_JURISDICTION = "jurisdiction";
3492 /**
3493   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
3494   * <p>
3495   * Description: <b>Multiple Resources: 
3496
3497* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3498* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3499* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3500* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3501* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3502* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3503* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3504* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3505* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3506* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3507* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3508* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3509* [ValueSet](valueset.html): Intended jurisdiction for the value set
3510</b><br>
3511   * Type: <b>token</b><br>
3512   * 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>
3513   * </p>
3514   */
3515  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
3516
3517 /**
3518   * Search parameter: <b>name</b>
3519   * <p>
3520   * Description: <b>Multiple Resources: 
3521
3522* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3523* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3524* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3525* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3526* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3527* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3528* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3529* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3530* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3531* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3532* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3533* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3534* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3535* [ValueSet](valueset.html): Computationally friendly name of the value set
3536</b><br>
3537   * Type: <b>string</b><br>
3538   * 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>
3539   * </p>
3540   */
3541  @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" )
3542  public static final String SP_NAME = "name";
3543 /**
3544   * <b>Fluent Client</b> search parameter constant for <b>name</b>
3545   * <p>
3546   * Description: <b>Multiple Resources: 
3547
3548* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3549* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3550* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3551* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3552* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3553* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3554* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3555* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3556* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3557* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3558* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3559* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3560* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3561* [ValueSet](valueset.html): Computationally friendly name of the value set
3562</b><br>
3563   * Type: <b>string</b><br>
3564   * 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>
3565   * </p>
3566   */
3567  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
3568
3569 /**
3570   * Search parameter: <b>publisher</b>
3571   * <p>
3572   * Description: <b>Multiple Resources: 
3573
3574* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3575* [CodeSystem](codesystem.html): Name of the publisher of the code system
3576* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3577* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3578* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3579* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3580* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3581* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3582* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3583* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3584* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3585* [StructureMap](structuremap.html): Name of the publisher of the structure map
3586* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3587* [ValueSet](valueset.html): Name of the publisher of the value set
3588</b><br>
3589   * Type: <b>string</b><br>
3590   * 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>
3591   * </p>
3592   */
3593  @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" )
3594  public static final String SP_PUBLISHER = "publisher";
3595 /**
3596   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
3597   * <p>
3598   * Description: <b>Multiple Resources: 
3599
3600* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3601* [CodeSystem](codesystem.html): Name of the publisher of the code system
3602* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3603* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3604* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3605* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3606* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3607* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3608* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3609* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3610* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3611* [StructureMap](structuremap.html): Name of the publisher of the structure map
3612* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3613* [ValueSet](valueset.html): Name of the publisher of the value set
3614</b><br>
3615   * Type: <b>string</b><br>
3616   * 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>
3617   * </p>
3618   */
3619  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
3620
3621 /**
3622   * Search parameter: <b>status</b>
3623   * <p>
3624   * Description: <b>Multiple Resources: 
3625
3626* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3627* [CodeSystem](codesystem.html): The current status of the code system
3628* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3629* [ConceptMap](conceptmap.html): The current status of the concept map
3630* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3631* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3632* [MessageDefinition](messagedefinition.html): The current status of the message definition
3633* [NamingSystem](namingsystem.html): The current status of the naming system
3634* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3635* [SearchParameter](searchparameter.html): The current status of the search parameter
3636* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3637* [StructureMap](structuremap.html): The current status of the structure map
3638* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3639* [ValueSet](valueset.html): The current status of the value set
3640</b><br>
3641   * Type: <b>token</b><br>
3642   * 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>
3643   * </p>
3644   */
3645  @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" )
3646  public static final String SP_STATUS = "status";
3647 /**
3648   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3649   * <p>
3650   * Description: <b>Multiple Resources: 
3651
3652* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3653* [CodeSystem](codesystem.html): The current status of the code system
3654* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3655* [ConceptMap](conceptmap.html): The current status of the concept map
3656* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3657* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3658* [MessageDefinition](messagedefinition.html): The current status of the message definition
3659* [NamingSystem](namingsystem.html): The current status of the naming system
3660* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3661* [SearchParameter](searchparameter.html): The current status of the search parameter
3662* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3663* [StructureMap](structuremap.html): The current status of the structure map
3664* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3665* [ValueSet](valueset.html): The current status of the value set
3666</b><br>
3667   * Type: <b>token</b><br>
3668   * 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>
3669   * </p>
3670   */
3671  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3672
3673 /**
3674   * Search parameter: <b>url</b>
3675   * <p>
3676   * Description: <b>Multiple Resources: 
3677
3678* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3679* [CodeSystem](codesystem.html): The uri that identifies the code system
3680* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3681* [ConceptMap](conceptmap.html): The uri that identifies the concept map
3682* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3683* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3684* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3685* [NamingSystem](namingsystem.html): The uri that identifies the naming system
3686* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3687* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3688* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3689* [StructureMap](structuremap.html): The uri that identifies the structure map
3690* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3691* [ValueSet](valueset.html): The uri that identifies the value set
3692</b><br>
3693   * Type: <b>uri</b><br>
3694   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
3695   * </p>
3696   */
3697  @SearchParamDefinition(name="url", path="CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement\r\n* [CodeSystem](codesystem.html): The uri that identifies the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition\r\n* [ConceptMap](conceptmap.html): The uri that identifies the concept map\r\n* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition\r\n* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition\r\n* [NamingSystem](namingsystem.html): The uri that identifies the naming system\r\n* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition\r\n* [SearchParameter](searchparameter.html): The uri that identifies the search parameter\r\n* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition\r\n* [StructureMap](structuremap.html): The uri that identifies the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities\r\n* [ValueSet](valueset.html): The uri that identifies the value set\r\n", type="uri" )
3698  public static final String SP_URL = "url";
3699 /**
3700   * <b>Fluent Client</b> search parameter constant for <b>url</b>
3701   * <p>
3702   * Description: <b>Multiple Resources: 
3703
3704* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3705* [CodeSystem](codesystem.html): The uri that identifies the code system
3706* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3707* [ConceptMap](conceptmap.html): The uri that identifies the concept map
3708* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3709* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3710* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3711* [NamingSystem](namingsystem.html): The uri that identifies the naming system
3712* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3713* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3714* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3715* [StructureMap](structuremap.html): The uri that identifies the structure map
3716* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3717* [ValueSet](valueset.html): The uri that identifies the value set
3718</b><br>
3719   * Type: <b>uri</b><br>
3720   * Path: <b>CapabilityStatement.url | CodeSystem.url | CompartmentDefinition.url | ConceptMap.url | GraphDefinition.url | ImplementationGuide.url | MessageDefinition.url | NamingSystem.url | OperationDefinition.url | SearchParameter.url | StructureDefinition.url | StructureMap.url | TerminologyCapabilities.url | ValueSet.url</b><br>
3721   * </p>
3722   */
3723  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
3724
3725 /**
3726   * Search parameter: <b>version</b>
3727   * <p>
3728   * Description: <b>Multiple Resources: 
3729
3730* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3731* [CodeSystem](codesystem.html): The business version of the code system
3732* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3733* [ConceptMap](conceptmap.html): The business version of the concept map
3734* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3735* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3736* [MessageDefinition](messagedefinition.html): The business version of the message definition
3737* [NamingSystem](namingsystem.html): The business version of the naming system
3738* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3739* [SearchParameter](searchparameter.html): The business version of the search parameter
3740* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3741* [StructureMap](structuremap.html): The business version of the structure map
3742* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3743* [ValueSet](valueset.html): The business version of the value set
3744</b><br>
3745   * Type: <b>token</b><br>
3746   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
3747   * </p>
3748   */
3749  @SearchParamDefinition(name="version", path="CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement\r\n* [CodeSystem](codesystem.html): The business version of the code system\r\n* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition\r\n* [ConceptMap](conceptmap.html): The business version of the concept map\r\n* [GraphDefinition](graphdefinition.html): The business version of the graph definition\r\n* [ImplementationGuide](implementationguide.html): The business version of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The business version of the message definition\r\n* [NamingSystem](namingsystem.html): The business version of the naming system\r\n* [OperationDefinition](operationdefinition.html): The business version of the operation definition\r\n* [SearchParameter](searchparameter.html): The business version of the search parameter\r\n* [StructureDefinition](structuredefinition.html): The business version of the structure definition\r\n* [StructureMap](structuremap.html): The business version of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities\r\n* [ValueSet](valueset.html): The business version of the value set\r\n", type="token" )
3750  public static final String SP_VERSION = "version";
3751 /**
3752   * <b>Fluent Client</b> search parameter constant for <b>version</b>
3753   * <p>
3754   * Description: <b>Multiple Resources: 
3755
3756* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3757* [CodeSystem](codesystem.html): The business version of the code system
3758* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3759* [ConceptMap](conceptmap.html): The business version of the concept map
3760* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3761* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3762* [MessageDefinition](messagedefinition.html): The business version of the message definition
3763* [NamingSystem](namingsystem.html): The business version of the naming system
3764* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3765* [SearchParameter](searchparameter.html): The business version of the search parameter
3766* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3767* [StructureMap](structuremap.html): The business version of the structure map
3768* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3769* [ValueSet](valueset.html): The business version of the value set
3770</b><br>
3771   * Type: <b>token</b><br>
3772   * Path: <b>CapabilityStatement.version | CodeSystem.version | CompartmentDefinition.version | ConceptMap.version | GraphDefinition.version | ImplementationGuide.version | MessageDefinition.version | NamingSystem.version | OperationDefinition.version | SearchParameter.version | StructureDefinition.version | StructureMap.version | TerminologyCapabilities.version | ValueSet.version</b><br>
3773   * </p>
3774   */
3775  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
3776
3777// Manual code (from Configuration.txt):
3778  public boolean supportsCopyright() {
3779    return false;
3780  }
3781  
3782// end addition
3783
3784}
3785