001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Sat, Nov 5, 2022 10:47+1100 for FHIR v5.0.0-ballot
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * A 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 FHIRPath 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 FHIRPath 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 FHIRPath 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 FHIRPath 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 FHIRPath 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 FHIRPath 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 FHIRPath 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 FHIRPath 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/all-resource-types")
825        protected Enumeration<AllResourceTypes> 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 = 1399881390L;
856
857    /**
858     * Constructor
859     */
860      public GraphDefinitionLinkTargetComponent() {
861        super();
862      }
863
864    /**
865     * Constructor
866     */
867      public GraphDefinitionLinkTargetComponent(AllResourceTypes 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 Enumeration<AllResourceTypes> 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 Enumeration<AllResourceTypes>(new AllResourceTypesEnumFactory()); // 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(Enumeration<AllResourceTypes> value) { 
896          this.type = value;
897          return this;
898        }
899
900        /**
901         * @return Type of resource this link refers to.
902         */
903        public AllResourceTypes 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(AllResourceTypes value) { 
911            if (this.type == null)
912              this.type = new Enumeration<AllResourceTypes>(new AllResourceTypesEnumFactory());
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}; // Enumeration<AllResourceTypes>
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          value = new AllResourceTypesEnumFactory().fromType(TypeConvertor.castToCode(value));
1161          this.type = (Enumeration) value; // Enumeration<AllResourceTypes>
1162          return value;
1163        case -995427962: // params
1164          this.params = TypeConvertor.castToString(value); // StringType
1165          return value;
1166        case -309425751: // profile
1167          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
1168          return value;
1169        case -397756334: // compartment
1170          this.getCompartment().add((GraphDefinitionLinkTargetCompartmentComponent) value); // GraphDefinitionLinkTargetCompartmentComponent
1171          return value;
1172        case 3321850: // link
1173          this.getLink().add((GraphDefinitionLinkComponent) value); // GraphDefinitionLinkComponent
1174          return value;
1175        default: return super.setProperty(hash, name, value);
1176        }
1177
1178      }
1179
1180      @Override
1181      public Base setProperty(String name, Base value) throws FHIRException {
1182        if (name.equals("type")) {
1183          value = new AllResourceTypesEnumFactory().fromType(TypeConvertor.castToCode(value));
1184          this.type = (Enumeration) value; // Enumeration<AllResourceTypes>
1185        } else if (name.equals("params")) {
1186          this.params = TypeConvertor.castToString(value); // StringType
1187        } else if (name.equals("profile")) {
1188          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
1189        } else if (name.equals("compartment")) {
1190          this.getCompartment().add((GraphDefinitionLinkTargetCompartmentComponent) value);
1191        } else if (name.equals("link")) {
1192          this.getLink().add((GraphDefinitionLinkComponent) value);
1193        } else
1194          return super.setProperty(name, value);
1195        return value;
1196      }
1197
1198      @Override
1199      public Base makeProperty(int hash, String name) throws FHIRException {
1200        switch (hash) {
1201        case 3575610:  return getTypeElement();
1202        case -995427962:  return getParamsElement();
1203        case -309425751:  return getProfileElement();
1204        case -397756334:  return addCompartment(); 
1205        case 3321850:  return addLink(); 
1206        default: return super.makeProperty(hash, name);
1207        }
1208
1209      }
1210
1211      @Override
1212      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1213        switch (hash) {
1214        case 3575610: /*type*/ return new String[] {"code"};
1215        case -995427962: /*params*/ return new String[] {"string"};
1216        case -309425751: /*profile*/ return new String[] {"canonical"};
1217        case -397756334: /*compartment*/ return new String[] {};
1218        case 3321850: /*link*/ return new String[] {"@GraphDefinition.link"};
1219        default: return super.getTypesForProperty(hash, name);
1220        }
1221
1222      }
1223
1224      @Override
1225      public Base addChild(String name) throws FHIRException {
1226        if (name.equals("type")) {
1227          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.type");
1228        }
1229        else if (name.equals("params")) {
1230          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.params");
1231        }
1232        else if (name.equals("profile")) {
1233          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.profile");
1234        }
1235        else if (name.equals("compartment")) {
1236          return addCompartment();
1237        }
1238        else if (name.equals("link")) {
1239          return addLink();
1240        }
1241        else
1242          return super.addChild(name);
1243      }
1244
1245      public GraphDefinitionLinkTargetComponent copy() {
1246        GraphDefinitionLinkTargetComponent dst = new GraphDefinitionLinkTargetComponent();
1247        copyValues(dst);
1248        return dst;
1249      }
1250
1251      public void copyValues(GraphDefinitionLinkTargetComponent dst) {
1252        super.copyValues(dst);
1253        dst.type = type == null ? null : type.copy();
1254        dst.params = params == null ? null : params.copy();
1255        dst.profile = profile == null ? null : profile.copy();
1256        if (compartment != null) {
1257          dst.compartment = new ArrayList<GraphDefinitionLinkTargetCompartmentComponent>();
1258          for (GraphDefinitionLinkTargetCompartmentComponent i : compartment)
1259            dst.compartment.add(i.copy());
1260        };
1261        if (link != null) {
1262          dst.link = new ArrayList<GraphDefinitionLinkComponent>();
1263          for (GraphDefinitionLinkComponent i : link)
1264            dst.link.add(i.copy());
1265        };
1266      }
1267
1268      @Override
1269      public boolean equalsDeep(Base other_) {
1270        if (!super.equalsDeep(other_))
1271          return false;
1272        if (!(other_ instanceof GraphDefinitionLinkTargetComponent))
1273          return false;
1274        GraphDefinitionLinkTargetComponent o = (GraphDefinitionLinkTargetComponent) other_;
1275        return compareDeep(type, o.type, true) && compareDeep(params, o.params, true) && compareDeep(profile, o.profile, true)
1276           && compareDeep(compartment, o.compartment, true) && compareDeep(link, o.link, true);
1277      }
1278
1279      @Override
1280      public boolean equalsShallow(Base other_) {
1281        if (!super.equalsShallow(other_))
1282          return false;
1283        if (!(other_ instanceof GraphDefinitionLinkTargetComponent))
1284          return false;
1285        GraphDefinitionLinkTargetComponent o = (GraphDefinitionLinkTargetComponent) other_;
1286        return compareValues(type, o.type, true) && compareValues(params, o.params, true) && compareValues(profile, o.profile, true)
1287          ;
1288      }
1289
1290      public boolean isEmpty() {
1291        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, params, profile, compartment
1292          , link);
1293      }
1294
1295  public String fhirType() {
1296    return "GraphDefinition.link.target";
1297
1298  }
1299
1300  }
1301
1302    @Block()
1303    public static class GraphDefinitionLinkTargetCompartmentComponent extends BackboneElement implements IBaseBackboneElement {
1304        /**
1305         * 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.
1306         */
1307        @Child(name = "use", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1308        @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." )
1309        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/graph-compartment-use")
1310        protected Enumeration<GraphCompartmentUse> use;
1311
1312        /**
1313         * Identifies the compartment.
1314         */
1315        @Child(name = "code", type = {CodeType.class}, order=2, min=1, max=1, modifier=false, summary=false)
1316        @Description(shortDefinition="Patient | Encounter | RelatedPerson | Practitioner | Device", formalDefinition="Identifies the compartment." )
1317        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/compartment-type")
1318        protected Enumeration<CompartmentType> code;
1319
1320        /**
1321         * identical | matching | different | no-rule | custom.
1322         */
1323        @Child(name = "rule", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
1324        @Description(shortDefinition="identical | matching | different | custom", formalDefinition="identical | matching | different | no-rule | custom." )
1325        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/graph-compartment-rule")
1326        protected Enumeration<GraphCompartmentRule> rule;
1327
1328        /**
1329         * Custom rule, as a FHIRPath expression.
1330         */
1331        @Child(name = "expression", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
1332        @Description(shortDefinition="Custom rule, as a FHIRPath expression", formalDefinition="Custom rule, as a FHIRPath expression." )
1333        protected StringType expression;
1334
1335        /**
1336         * Documentation for FHIRPath expression.
1337         */
1338        @Child(name = "description", type = {StringType.class}, order=5, min=0, max=1, modifier=false, summary=false)
1339        @Description(shortDefinition="Documentation for FHIRPath expression", formalDefinition="Documentation for FHIRPath expression." )
1340        protected StringType description;
1341
1342        private static final long serialVersionUID = -1757652062L;
1343
1344    /**
1345     * Constructor
1346     */
1347      public GraphDefinitionLinkTargetCompartmentComponent() {
1348        super();
1349      }
1350
1351    /**
1352     * Constructor
1353     */
1354      public GraphDefinitionLinkTargetCompartmentComponent(GraphCompartmentUse use, CompartmentType code, GraphCompartmentRule rule) {
1355        super();
1356        this.setUse(use);
1357        this.setCode(code);
1358        this.setRule(rule);
1359      }
1360
1361        /**
1362         * @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
1363         */
1364        public Enumeration<GraphCompartmentUse> getUseElement() { 
1365          if (this.use == null)
1366            if (Configuration.errorOnAutoCreate())
1367              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.use");
1368            else if (Configuration.doAutoCreate())
1369              this.use = new Enumeration<GraphCompartmentUse>(new GraphCompartmentUseEnumFactory()); // bb
1370          return this.use;
1371        }
1372
1373        public boolean hasUseElement() { 
1374          return this.use != null && !this.use.isEmpty();
1375        }
1376
1377        public boolean hasUse() { 
1378          return this.use != null && !this.use.isEmpty();
1379        }
1380
1381        /**
1382         * @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
1383         */
1384        public GraphDefinitionLinkTargetCompartmentComponent setUseElement(Enumeration<GraphCompartmentUse> value) { 
1385          this.use = value;
1386          return this;
1387        }
1388
1389        /**
1390         * @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.
1391         */
1392        public GraphCompartmentUse getUse() { 
1393          return this.use == null ? null : this.use.getValue();
1394        }
1395
1396        /**
1397         * @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.
1398         */
1399        public GraphDefinitionLinkTargetCompartmentComponent setUse(GraphCompartmentUse value) { 
1400            if (this.use == null)
1401              this.use = new Enumeration<GraphCompartmentUse>(new GraphCompartmentUseEnumFactory());
1402            this.use.setValue(value);
1403          return this;
1404        }
1405
1406        /**
1407         * @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
1408         */
1409        public Enumeration<CompartmentType> getCodeElement() { 
1410          if (this.code == null)
1411            if (Configuration.errorOnAutoCreate())
1412              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.code");
1413            else if (Configuration.doAutoCreate())
1414              this.code = new Enumeration<CompartmentType>(new CompartmentTypeEnumFactory()); // bb
1415          return this.code;
1416        }
1417
1418        public boolean hasCodeElement() { 
1419          return this.code != null && !this.code.isEmpty();
1420        }
1421
1422        public boolean hasCode() { 
1423          return this.code != null && !this.code.isEmpty();
1424        }
1425
1426        /**
1427         * @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
1428         */
1429        public GraphDefinitionLinkTargetCompartmentComponent setCodeElement(Enumeration<CompartmentType> value) { 
1430          this.code = value;
1431          return this;
1432        }
1433
1434        /**
1435         * @return Identifies the compartment.
1436         */
1437        public CompartmentType getCode() { 
1438          return this.code == null ? null : this.code.getValue();
1439        }
1440
1441        /**
1442         * @param value Identifies the compartment.
1443         */
1444        public GraphDefinitionLinkTargetCompartmentComponent setCode(CompartmentType value) { 
1445            if (this.code == null)
1446              this.code = new Enumeration<CompartmentType>(new CompartmentTypeEnumFactory());
1447            this.code.setValue(value);
1448          return this;
1449        }
1450
1451        /**
1452         * @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
1453         */
1454        public Enumeration<GraphCompartmentRule> getRuleElement() { 
1455          if (this.rule == null)
1456            if (Configuration.errorOnAutoCreate())
1457              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.rule");
1458            else if (Configuration.doAutoCreate())
1459              this.rule = new Enumeration<GraphCompartmentRule>(new GraphCompartmentRuleEnumFactory()); // bb
1460          return this.rule;
1461        }
1462
1463        public boolean hasRuleElement() { 
1464          return this.rule != null && !this.rule.isEmpty();
1465        }
1466
1467        public boolean hasRule() { 
1468          return this.rule != null && !this.rule.isEmpty();
1469        }
1470
1471        /**
1472         * @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
1473         */
1474        public GraphDefinitionLinkTargetCompartmentComponent setRuleElement(Enumeration<GraphCompartmentRule> value) { 
1475          this.rule = value;
1476          return this;
1477        }
1478
1479        /**
1480         * @return identical | matching | different | no-rule | custom.
1481         */
1482        public GraphCompartmentRule getRule() { 
1483          return this.rule == null ? null : this.rule.getValue();
1484        }
1485
1486        /**
1487         * @param value identical | matching | different | no-rule | custom.
1488         */
1489        public GraphDefinitionLinkTargetCompartmentComponent setRule(GraphCompartmentRule value) { 
1490            if (this.rule == null)
1491              this.rule = new Enumeration<GraphCompartmentRule>(new GraphCompartmentRuleEnumFactory());
1492            this.rule.setValue(value);
1493          return this;
1494        }
1495
1496        /**
1497         * @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
1498         */
1499        public StringType getExpressionElement() { 
1500          if (this.expression == null)
1501            if (Configuration.errorOnAutoCreate())
1502              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.expression");
1503            else if (Configuration.doAutoCreate())
1504              this.expression = new StringType(); // bb
1505          return this.expression;
1506        }
1507
1508        public boolean hasExpressionElement() { 
1509          return this.expression != null && !this.expression.isEmpty();
1510        }
1511
1512        public boolean hasExpression() { 
1513          return this.expression != null && !this.expression.isEmpty();
1514        }
1515
1516        /**
1517         * @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
1518         */
1519        public GraphDefinitionLinkTargetCompartmentComponent setExpressionElement(StringType value) { 
1520          this.expression = value;
1521          return this;
1522        }
1523
1524        /**
1525         * @return Custom rule, as a FHIRPath expression.
1526         */
1527        public String getExpression() { 
1528          return this.expression == null ? null : this.expression.getValue();
1529        }
1530
1531        /**
1532         * @param value Custom rule, as a FHIRPath expression.
1533         */
1534        public GraphDefinitionLinkTargetCompartmentComponent setExpression(String value) { 
1535          if (Utilities.noString(value))
1536            this.expression = null;
1537          else {
1538            if (this.expression == null)
1539              this.expression = new StringType();
1540            this.expression.setValue(value);
1541          }
1542          return this;
1543        }
1544
1545        /**
1546         * @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
1547         */
1548        public StringType getDescriptionElement() { 
1549          if (this.description == null)
1550            if (Configuration.errorOnAutoCreate())
1551              throw new Error("Attempt to auto-create GraphDefinitionLinkTargetCompartmentComponent.description");
1552            else if (Configuration.doAutoCreate())
1553              this.description = new StringType(); // bb
1554          return this.description;
1555        }
1556
1557        public boolean hasDescriptionElement() { 
1558          return this.description != null && !this.description.isEmpty();
1559        }
1560
1561        public boolean hasDescription() { 
1562          return this.description != null && !this.description.isEmpty();
1563        }
1564
1565        /**
1566         * @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
1567         */
1568        public GraphDefinitionLinkTargetCompartmentComponent setDescriptionElement(StringType value) { 
1569          this.description = value;
1570          return this;
1571        }
1572
1573        /**
1574         * @return Documentation for FHIRPath expression.
1575         */
1576        public String getDescription() { 
1577          return this.description == null ? null : this.description.getValue();
1578        }
1579
1580        /**
1581         * @param value Documentation for FHIRPath expression.
1582         */
1583        public GraphDefinitionLinkTargetCompartmentComponent setDescription(String value) { 
1584          if (Utilities.noString(value))
1585            this.description = null;
1586          else {
1587            if (this.description == null)
1588              this.description = new StringType();
1589            this.description.setValue(value);
1590          }
1591          return this;
1592        }
1593
1594        protected void listChildren(List<Property> children) {
1595          super.listChildren(children);
1596          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));
1597          children.add(new Property("code", "code", "Identifies the compartment.", 0, 1, code));
1598          children.add(new Property("rule", "code", "identical | matching | different | no-rule | custom.", 0, 1, rule));
1599          children.add(new Property("expression", "string", "Custom rule, as a FHIRPath expression.", 0, 1, expression));
1600          children.add(new Property("description", "string", "Documentation for FHIRPath expression.", 0, 1, description));
1601        }
1602
1603        @Override
1604        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1605          switch (_hash) {
1606          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);
1607          case 3059181: /*code*/  return new Property("code", "code", "Identifies the compartment.", 0, 1, code);
1608          case 3512060: /*rule*/  return new Property("rule", "code", "identical | matching | different | no-rule | custom.", 0, 1, rule);
1609          case -1795452264: /*expression*/  return new Property("expression", "string", "Custom rule, as a FHIRPath expression.", 0, 1, expression);
1610          case -1724546052: /*description*/  return new Property("description", "string", "Documentation for FHIRPath expression.", 0, 1, description);
1611          default: return super.getNamedProperty(_hash, _name, _checkValid);
1612          }
1613
1614        }
1615
1616      @Override
1617      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1618        switch (hash) {
1619        case 116103: /*use*/ return this.use == null ? new Base[0] : new Base[] {this.use}; // Enumeration<GraphCompartmentUse>
1620        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // Enumeration<CompartmentType>
1621        case 3512060: /*rule*/ return this.rule == null ? new Base[0] : new Base[] {this.rule}; // Enumeration<GraphCompartmentRule>
1622        case -1795452264: /*expression*/ return this.expression == null ? new Base[0] : new Base[] {this.expression}; // StringType
1623        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
1624        default: return super.getProperty(hash, name, checkValid);
1625        }
1626
1627      }
1628
1629      @Override
1630      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1631        switch (hash) {
1632        case 116103: // use
1633          value = new GraphCompartmentUseEnumFactory().fromType(TypeConvertor.castToCode(value));
1634          this.use = (Enumeration) value; // Enumeration<GraphCompartmentUse>
1635          return value;
1636        case 3059181: // code
1637          value = new CompartmentTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
1638          this.code = (Enumeration) value; // Enumeration<CompartmentType>
1639          return value;
1640        case 3512060: // rule
1641          value = new GraphCompartmentRuleEnumFactory().fromType(TypeConvertor.castToCode(value));
1642          this.rule = (Enumeration) value; // Enumeration<GraphCompartmentRule>
1643          return value;
1644        case -1795452264: // expression
1645          this.expression = TypeConvertor.castToString(value); // StringType
1646          return value;
1647        case -1724546052: // description
1648          this.description = TypeConvertor.castToString(value); // StringType
1649          return value;
1650        default: return super.setProperty(hash, name, value);
1651        }
1652
1653      }
1654
1655      @Override
1656      public Base setProperty(String name, Base value) throws FHIRException {
1657        if (name.equals("use")) {
1658          value = new GraphCompartmentUseEnumFactory().fromType(TypeConvertor.castToCode(value));
1659          this.use = (Enumeration) value; // Enumeration<GraphCompartmentUse>
1660        } else if (name.equals("code")) {
1661          value = new CompartmentTypeEnumFactory().fromType(TypeConvertor.castToCode(value));
1662          this.code = (Enumeration) value; // Enumeration<CompartmentType>
1663        } else if (name.equals("rule")) {
1664          value = new GraphCompartmentRuleEnumFactory().fromType(TypeConvertor.castToCode(value));
1665          this.rule = (Enumeration) value; // Enumeration<GraphCompartmentRule>
1666        } else if (name.equals("expression")) {
1667          this.expression = TypeConvertor.castToString(value); // StringType
1668        } else if (name.equals("description")) {
1669          this.description = TypeConvertor.castToString(value); // StringType
1670        } else
1671          return super.setProperty(name, value);
1672        return value;
1673      }
1674
1675      @Override
1676      public Base makeProperty(int hash, String name) throws FHIRException {
1677        switch (hash) {
1678        case 116103:  return getUseElement();
1679        case 3059181:  return getCodeElement();
1680        case 3512060:  return getRuleElement();
1681        case -1795452264:  return getExpressionElement();
1682        case -1724546052:  return getDescriptionElement();
1683        default: return super.makeProperty(hash, name);
1684        }
1685
1686      }
1687
1688      @Override
1689      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1690        switch (hash) {
1691        case 116103: /*use*/ return new String[] {"code"};
1692        case 3059181: /*code*/ return new String[] {"code"};
1693        case 3512060: /*rule*/ return new String[] {"code"};
1694        case -1795452264: /*expression*/ return new String[] {"string"};
1695        case -1724546052: /*description*/ return new String[] {"string"};
1696        default: return super.getTypesForProperty(hash, name);
1697        }
1698
1699      }
1700
1701      @Override
1702      public Base addChild(String name) throws FHIRException {
1703        if (name.equals("use")) {
1704          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.use");
1705        }
1706        else if (name.equals("code")) {
1707          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.code");
1708        }
1709        else if (name.equals("rule")) {
1710          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.rule");
1711        }
1712        else if (name.equals("expression")) {
1713          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.expression");
1714        }
1715        else if (name.equals("description")) {
1716          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.link.target.compartment.description");
1717        }
1718        else
1719          return super.addChild(name);
1720      }
1721
1722      public GraphDefinitionLinkTargetCompartmentComponent copy() {
1723        GraphDefinitionLinkTargetCompartmentComponent dst = new GraphDefinitionLinkTargetCompartmentComponent();
1724        copyValues(dst);
1725        return dst;
1726      }
1727
1728      public void copyValues(GraphDefinitionLinkTargetCompartmentComponent dst) {
1729        super.copyValues(dst);
1730        dst.use = use == null ? null : use.copy();
1731        dst.code = code == null ? null : code.copy();
1732        dst.rule = rule == null ? null : rule.copy();
1733        dst.expression = expression == null ? null : expression.copy();
1734        dst.description = description == null ? null : description.copy();
1735      }
1736
1737      @Override
1738      public boolean equalsDeep(Base other_) {
1739        if (!super.equalsDeep(other_))
1740          return false;
1741        if (!(other_ instanceof GraphDefinitionLinkTargetCompartmentComponent))
1742          return false;
1743        GraphDefinitionLinkTargetCompartmentComponent o = (GraphDefinitionLinkTargetCompartmentComponent) other_;
1744        return compareDeep(use, o.use, true) && compareDeep(code, o.code, true) && compareDeep(rule, o.rule, true)
1745           && compareDeep(expression, o.expression, true) && compareDeep(description, o.description, true)
1746          ;
1747      }
1748
1749      @Override
1750      public boolean equalsShallow(Base other_) {
1751        if (!super.equalsShallow(other_))
1752          return false;
1753        if (!(other_ instanceof GraphDefinitionLinkTargetCompartmentComponent))
1754          return false;
1755        GraphDefinitionLinkTargetCompartmentComponent o = (GraphDefinitionLinkTargetCompartmentComponent) other_;
1756        return compareValues(use, o.use, true) && compareValues(code, o.code, true) && compareValues(rule, o.rule, true)
1757           && compareValues(expression, o.expression, true) && compareValues(description, o.description, true)
1758          ;
1759      }
1760
1761      public boolean isEmpty() {
1762        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(use, code, rule, expression
1763          , description);
1764      }
1765
1766  public String fhirType() {
1767    return "GraphDefinition.link.target.compartment";
1768
1769  }
1770
1771  }
1772
1773    /**
1774     * 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 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.
1775     */
1776    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
1777    @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 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." )
1778    protected UriType url;
1779
1780    /**
1781     * 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.
1782     */
1783    @Child(name = "version", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
1784    @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." )
1785    protected StringType version;
1786
1787    /**
1788     * Indicates the mechanism used to compare versions to determine which is more current.
1789     */
1790    @Child(name = "versionAlgorithm", type = {StringType.class, Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
1791    @Description(shortDefinition="How to compare versions", formalDefinition="Indicates the mechanism used to compare versions to determine which is more current." )
1792    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/version-algorithm")
1793    protected DataType versionAlgorithm;
1794
1795    /**
1796     * 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.
1797     */
1798    @Child(name = "name", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=true)
1799    @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." )
1800    protected StringType name;
1801
1802    /**
1803     * A short, descriptive, user-friendly title for the capability statement.
1804     */
1805    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
1806    @Description(shortDefinition="Name for this graph definition (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the capability statement." )
1807    protected StringType title;
1808
1809    /**
1810     * The status of this graph definition. Enables tracking the life-cycle of the content.
1811     */
1812    @Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
1813    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this graph definition. Enables tracking the life-cycle of the content." )
1814    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
1815    protected Enumeration<PublicationStatus> status;
1816
1817    /**
1818     * 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.
1819     */
1820    @Child(name = "experimental", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true)
1821    @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." )
1822    protected BooleanType experimental;
1823
1824    /**
1825     * 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.
1826     */
1827    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
1828    @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." )
1829    protected DateTimeType date;
1830
1831    /**
1832     * The name of the organization or individual responsible for the release and ongoing maintenance of the graph definition.
1833     */
1834    @Child(name = "publisher", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
1835    @Description(shortDefinition="Name of the publisher/steward (organization or individual)", formalDefinition="The name of the organization or individual responsible for the release and ongoing maintenance of the graph definition." )
1836    protected StringType publisher;
1837
1838    /**
1839     * Contact details to assist a user in finding and communicating with the publisher.
1840     */
1841    @Child(name = "contact", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1842    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
1843    protected List<ContactDetail> contact;
1844
1845    /**
1846     * A free text natural language description of the graph definition from a consumer's perspective.
1847     */
1848    @Child(name = "description", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=false)
1849    @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." )
1850    protected MarkdownType description;
1851
1852    /**
1853     * 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.
1854     */
1855    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1856    @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." )
1857    protected List<UsageContext> useContext;
1858
1859    /**
1860     * A legal or geographic region in which the graph definition is intended to be used.
1861     */
1862    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1863    @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." )
1864    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
1865    protected List<CodeableConcept> jurisdiction;
1866
1867    /**
1868     * Explanation of why this graph definition is needed and why it has been designed as it has.
1869     */
1870    @Child(name = "purpose", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=false)
1871    @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." )
1872    protected MarkdownType purpose;
1873
1874    /**
1875     * The type of FHIR resource at which instances of this graph start.
1876     */
1877    @Child(name = "start", type = {CodeType.class}, order=14, min=1, max=1, modifier=false, summary=true)
1878    @Description(shortDefinition="Type of resource at which the graph starts", formalDefinition="The type of FHIR resource at which instances of this graph start." )
1879    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
1880    protected CodeType start;
1881
1882    /**
1883     * The profile that describes the use of the base resource.
1884     */
1885    @Child(name = "profile", type = {CanonicalType.class}, order=15, min=0, max=1, modifier=false, summary=false)
1886    @Description(shortDefinition="Profile on base resource", formalDefinition="The profile that describes the use of the base resource." )
1887    protected CanonicalType profile;
1888
1889    /**
1890     * Links this graph makes rules about.
1891     */
1892    @Child(name = "link", type = {}, order=16, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1893    @Description(shortDefinition="Links this graph makes rules about", formalDefinition="Links this graph makes rules about." )
1894    protected List<GraphDefinitionLinkComponent> link;
1895
1896    private static final long serialVersionUID = -805640264L;
1897
1898  /**
1899   * Constructor
1900   */
1901    public GraphDefinition() {
1902      super();
1903    }
1904
1905  /**
1906   * Constructor
1907   */
1908    public GraphDefinition(String name, PublicationStatus status, String start) {
1909      super();
1910      this.setName(name);
1911      this.setStatus(status);
1912      this.setStart(start);
1913    }
1914
1915    /**
1916     * @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 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
1917     */
1918    public UriType getUrlElement() { 
1919      if (this.url == null)
1920        if (Configuration.errorOnAutoCreate())
1921          throw new Error("Attempt to auto-create GraphDefinition.url");
1922        else if (Configuration.doAutoCreate())
1923          this.url = new UriType(); // bb
1924      return this.url;
1925    }
1926
1927    public boolean hasUrlElement() { 
1928      return this.url != null && !this.url.isEmpty();
1929    }
1930
1931    public boolean hasUrl() { 
1932      return this.url != null && !this.url.isEmpty();
1933    }
1934
1935    /**
1936     * @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 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
1937     */
1938    public GraphDefinition setUrlElement(UriType value) { 
1939      this.url = value;
1940      return this;
1941    }
1942
1943    /**
1944     * @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 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.
1945     */
1946    public String getUrl() { 
1947      return this.url == null ? null : this.url.getValue();
1948    }
1949
1950    /**
1951     * @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 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.
1952     */
1953    public GraphDefinition setUrl(String value) { 
1954      if (Utilities.noString(value))
1955        this.url = null;
1956      else {
1957        if (this.url == null)
1958          this.url = new UriType();
1959        this.url.setValue(value);
1960      }
1961      return this;
1962    }
1963
1964    /**
1965     * @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
1966     */
1967    public StringType getVersionElement() { 
1968      if (this.version == null)
1969        if (Configuration.errorOnAutoCreate())
1970          throw new Error("Attempt to auto-create GraphDefinition.version");
1971        else if (Configuration.doAutoCreate())
1972          this.version = new StringType(); // bb
1973      return this.version;
1974    }
1975
1976    public boolean hasVersionElement() { 
1977      return this.version != null && !this.version.isEmpty();
1978    }
1979
1980    public boolean hasVersion() { 
1981      return this.version != null && !this.version.isEmpty();
1982    }
1983
1984    /**
1985     * @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
1986     */
1987    public GraphDefinition setVersionElement(StringType value) { 
1988      this.version = value;
1989      return this;
1990    }
1991
1992    /**
1993     * @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.
1994     */
1995    public String getVersion() { 
1996      return this.version == null ? null : this.version.getValue();
1997    }
1998
1999    /**
2000     * @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.
2001     */
2002    public GraphDefinition setVersion(String value) { 
2003      if (Utilities.noString(value))
2004        this.version = null;
2005      else {
2006        if (this.version == null)
2007          this.version = new StringType();
2008        this.version.setValue(value);
2009      }
2010      return this;
2011    }
2012
2013    /**
2014     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
2015     */
2016    public DataType getVersionAlgorithm() { 
2017      return this.versionAlgorithm;
2018    }
2019
2020    /**
2021     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
2022     */
2023    public StringType getVersionAlgorithmStringType() throws FHIRException { 
2024      if (this.versionAlgorithm == null)
2025        this.versionAlgorithm = new StringType();
2026      if (!(this.versionAlgorithm instanceof StringType))
2027        throw new FHIRException("Type mismatch: the type StringType was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
2028      return (StringType) this.versionAlgorithm;
2029    }
2030
2031    public boolean hasVersionAlgorithmStringType() { 
2032      return this != null && this.versionAlgorithm instanceof StringType;
2033    }
2034
2035    /**
2036     * @return {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
2037     */
2038    public Coding getVersionAlgorithmCoding() throws FHIRException { 
2039      if (this.versionAlgorithm == null)
2040        this.versionAlgorithm = new Coding();
2041      if (!(this.versionAlgorithm instanceof Coding))
2042        throw new FHIRException("Type mismatch: the type Coding was expected, but "+this.versionAlgorithm.getClass().getName()+" was encountered");
2043      return (Coding) this.versionAlgorithm;
2044    }
2045
2046    public boolean hasVersionAlgorithmCoding() { 
2047      return this != null && this.versionAlgorithm instanceof Coding;
2048    }
2049
2050    public boolean hasVersionAlgorithm() { 
2051      return this.versionAlgorithm != null && !this.versionAlgorithm.isEmpty();
2052    }
2053
2054    /**
2055     * @param value {@link #versionAlgorithm} (Indicates the mechanism used to compare versions to determine which is more current.)
2056     */
2057    public GraphDefinition setVersionAlgorithm(DataType value) { 
2058      if (value != null && !(value instanceof StringType || value instanceof Coding))
2059        throw new Error("Not the right type for GraphDefinition.versionAlgorithm[x]: "+value.fhirType());
2060      this.versionAlgorithm = value;
2061      return this;
2062    }
2063
2064    /**
2065     * @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
2066     */
2067    public StringType getNameElement() { 
2068      if (this.name == null)
2069        if (Configuration.errorOnAutoCreate())
2070          throw new Error("Attempt to auto-create GraphDefinition.name");
2071        else if (Configuration.doAutoCreate())
2072          this.name = new StringType(); // bb
2073      return this.name;
2074    }
2075
2076    public boolean hasNameElement() { 
2077      return this.name != null && !this.name.isEmpty();
2078    }
2079
2080    public boolean hasName() { 
2081      return this.name != null && !this.name.isEmpty();
2082    }
2083
2084    /**
2085     * @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
2086     */
2087    public GraphDefinition setNameElement(StringType value) { 
2088      this.name = value;
2089      return this;
2090    }
2091
2092    /**
2093     * @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.
2094     */
2095    public String getName() { 
2096      return this.name == null ? null : this.name.getValue();
2097    }
2098
2099    /**
2100     * @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.
2101     */
2102    public GraphDefinition setName(String value) { 
2103        if (this.name == null)
2104          this.name = new StringType();
2105        this.name.setValue(value);
2106      return this;
2107    }
2108
2109    /**
2110     * @return {@link #title} (A short, descriptive, user-friendly title for the capability statement.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2111     */
2112    public StringType getTitleElement() { 
2113      if (this.title == null)
2114        if (Configuration.errorOnAutoCreate())
2115          throw new Error("Attempt to auto-create GraphDefinition.title");
2116        else if (Configuration.doAutoCreate())
2117          this.title = new StringType(); // bb
2118      return this.title;
2119    }
2120
2121    public boolean hasTitleElement() { 
2122      return this.title != null && !this.title.isEmpty();
2123    }
2124
2125    public boolean hasTitle() { 
2126      return this.title != null && !this.title.isEmpty();
2127    }
2128
2129    /**
2130     * @param value {@link #title} (A short, descriptive, user-friendly title for the capability statement.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2131     */
2132    public GraphDefinition setTitleElement(StringType value) { 
2133      this.title = value;
2134      return this;
2135    }
2136
2137    /**
2138     * @return A short, descriptive, user-friendly title for the capability statement.
2139     */
2140    public String getTitle() { 
2141      return this.title == null ? null : this.title.getValue();
2142    }
2143
2144    /**
2145     * @param value A short, descriptive, user-friendly title for the capability statement.
2146     */
2147    public GraphDefinition setTitle(String value) { 
2148      if (Utilities.noString(value))
2149        this.title = null;
2150      else {
2151        if (this.title == null)
2152          this.title = new StringType();
2153        this.title.setValue(value);
2154      }
2155      return this;
2156    }
2157
2158    /**
2159     * @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
2160     */
2161    public Enumeration<PublicationStatus> getStatusElement() { 
2162      if (this.status == null)
2163        if (Configuration.errorOnAutoCreate())
2164          throw new Error("Attempt to auto-create GraphDefinition.status");
2165        else if (Configuration.doAutoCreate())
2166          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
2167      return this.status;
2168    }
2169
2170    public boolean hasStatusElement() { 
2171      return this.status != null && !this.status.isEmpty();
2172    }
2173
2174    public boolean hasStatus() { 
2175      return this.status != null && !this.status.isEmpty();
2176    }
2177
2178    /**
2179     * @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
2180     */
2181    public GraphDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
2182      this.status = value;
2183      return this;
2184    }
2185
2186    /**
2187     * @return The status of this graph definition. Enables tracking the life-cycle of the content.
2188     */
2189    public PublicationStatus getStatus() { 
2190      return this.status == null ? null : this.status.getValue();
2191    }
2192
2193    /**
2194     * @param value The status of this graph definition. Enables tracking the life-cycle of the content.
2195     */
2196    public GraphDefinition setStatus(PublicationStatus value) { 
2197        if (this.status == null)
2198          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
2199        this.status.setValue(value);
2200      return this;
2201    }
2202
2203    /**
2204     * @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
2205     */
2206    public BooleanType getExperimentalElement() { 
2207      if (this.experimental == null)
2208        if (Configuration.errorOnAutoCreate())
2209          throw new Error("Attempt to auto-create GraphDefinition.experimental");
2210        else if (Configuration.doAutoCreate())
2211          this.experimental = new BooleanType(); // bb
2212      return this.experimental;
2213    }
2214
2215    public boolean hasExperimentalElement() { 
2216      return this.experimental != null && !this.experimental.isEmpty();
2217    }
2218
2219    public boolean hasExperimental() { 
2220      return this.experimental != null && !this.experimental.isEmpty();
2221    }
2222
2223    /**
2224     * @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
2225     */
2226    public GraphDefinition setExperimentalElement(BooleanType value) { 
2227      this.experimental = value;
2228      return this;
2229    }
2230
2231    /**
2232     * @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.
2233     */
2234    public boolean getExperimental() { 
2235      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
2236    }
2237
2238    /**
2239     * @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.
2240     */
2241    public GraphDefinition setExperimental(boolean value) { 
2242        if (this.experimental == null)
2243          this.experimental = new BooleanType();
2244        this.experimental.setValue(value);
2245      return this;
2246    }
2247
2248    /**
2249     * @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
2250     */
2251    public DateTimeType getDateElement() { 
2252      if (this.date == null)
2253        if (Configuration.errorOnAutoCreate())
2254          throw new Error("Attempt to auto-create GraphDefinition.date");
2255        else if (Configuration.doAutoCreate())
2256          this.date = new DateTimeType(); // bb
2257      return this.date;
2258    }
2259
2260    public boolean hasDateElement() { 
2261      return this.date != null && !this.date.isEmpty();
2262    }
2263
2264    public boolean hasDate() { 
2265      return this.date != null && !this.date.isEmpty();
2266    }
2267
2268    /**
2269     * @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
2270     */
2271    public GraphDefinition setDateElement(DateTimeType value) { 
2272      this.date = value;
2273      return this;
2274    }
2275
2276    /**
2277     * @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.
2278     */
2279    public Date getDate() { 
2280      return this.date == null ? null : this.date.getValue();
2281    }
2282
2283    /**
2284     * @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.
2285     */
2286    public GraphDefinition setDate(Date value) { 
2287      if (value == null)
2288        this.date = null;
2289      else {
2290        if (this.date == null)
2291          this.date = new DateTimeType();
2292        this.date.setValue(value);
2293      }
2294      return this;
2295    }
2296
2297    /**
2298     * @return {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the graph definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2299     */
2300    public StringType getPublisherElement() { 
2301      if (this.publisher == null)
2302        if (Configuration.errorOnAutoCreate())
2303          throw new Error("Attempt to auto-create GraphDefinition.publisher");
2304        else if (Configuration.doAutoCreate())
2305          this.publisher = new StringType(); // bb
2306      return this.publisher;
2307    }
2308
2309    public boolean hasPublisherElement() { 
2310      return this.publisher != null && !this.publisher.isEmpty();
2311    }
2312
2313    public boolean hasPublisher() { 
2314      return this.publisher != null && !this.publisher.isEmpty();
2315    }
2316
2317    /**
2318     * @param value {@link #publisher} (The name of the organization or individual responsible for the release and ongoing maintenance of the graph definition.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2319     */
2320    public GraphDefinition setPublisherElement(StringType value) { 
2321      this.publisher = value;
2322      return this;
2323    }
2324
2325    /**
2326     * @return The name of the organization or individual responsible for the release and ongoing maintenance of the graph definition.
2327     */
2328    public String getPublisher() { 
2329      return this.publisher == null ? null : this.publisher.getValue();
2330    }
2331
2332    /**
2333     * @param value The name of the organization or individual responsible for the release and ongoing maintenance of the graph definition.
2334     */
2335    public GraphDefinition setPublisher(String value) { 
2336      if (Utilities.noString(value))
2337        this.publisher = null;
2338      else {
2339        if (this.publisher == null)
2340          this.publisher = new StringType();
2341        this.publisher.setValue(value);
2342      }
2343      return this;
2344    }
2345
2346    /**
2347     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
2348     */
2349    public List<ContactDetail> getContact() { 
2350      if (this.contact == null)
2351        this.contact = new ArrayList<ContactDetail>();
2352      return this.contact;
2353    }
2354
2355    /**
2356     * @return Returns a reference to <code>this</code> for easy method chaining
2357     */
2358    public GraphDefinition setContact(List<ContactDetail> theContact) { 
2359      this.contact = theContact;
2360      return this;
2361    }
2362
2363    public boolean hasContact() { 
2364      if (this.contact == null)
2365        return false;
2366      for (ContactDetail item : this.contact)
2367        if (!item.isEmpty())
2368          return true;
2369      return false;
2370    }
2371
2372    public ContactDetail addContact() { //3
2373      ContactDetail t = new ContactDetail();
2374      if (this.contact == null)
2375        this.contact = new ArrayList<ContactDetail>();
2376      this.contact.add(t);
2377      return t;
2378    }
2379
2380    public GraphDefinition addContact(ContactDetail t) { //3
2381      if (t == null)
2382        return this;
2383      if (this.contact == null)
2384        this.contact = new ArrayList<ContactDetail>();
2385      this.contact.add(t);
2386      return this;
2387    }
2388
2389    /**
2390     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
2391     */
2392    public ContactDetail getContactFirstRep() { 
2393      if (getContact().isEmpty()) {
2394        addContact();
2395      }
2396      return getContact().get(0);
2397    }
2398
2399    /**
2400     * @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
2401     */
2402    public MarkdownType getDescriptionElement() { 
2403      if (this.description == null)
2404        if (Configuration.errorOnAutoCreate())
2405          throw new Error("Attempt to auto-create GraphDefinition.description");
2406        else if (Configuration.doAutoCreate())
2407          this.description = new MarkdownType(); // bb
2408      return this.description;
2409    }
2410
2411    public boolean hasDescriptionElement() { 
2412      return this.description != null && !this.description.isEmpty();
2413    }
2414
2415    public boolean hasDescription() { 
2416      return this.description != null && !this.description.isEmpty();
2417    }
2418
2419    /**
2420     * @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
2421     */
2422    public GraphDefinition setDescriptionElement(MarkdownType value) { 
2423      this.description = value;
2424      return this;
2425    }
2426
2427    /**
2428     * @return A free text natural language description of the graph definition from a consumer's perspective.
2429     */
2430    public String getDescription() { 
2431      return this.description == null ? null : this.description.getValue();
2432    }
2433
2434    /**
2435     * @param value A free text natural language description of the graph definition from a consumer's perspective.
2436     */
2437    public GraphDefinition setDescription(String value) { 
2438      if (value == null)
2439        this.description = null;
2440      else {
2441        if (this.description == null)
2442          this.description = new MarkdownType();
2443        this.description.setValue(value);
2444      }
2445      return this;
2446    }
2447
2448    /**
2449     * @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.)
2450     */
2451    public List<UsageContext> getUseContext() { 
2452      if (this.useContext == null)
2453        this.useContext = new ArrayList<UsageContext>();
2454      return this.useContext;
2455    }
2456
2457    /**
2458     * @return Returns a reference to <code>this</code> for easy method chaining
2459     */
2460    public GraphDefinition setUseContext(List<UsageContext> theUseContext) { 
2461      this.useContext = theUseContext;
2462      return this;
2463    }
2464
2465    public boolean hasUseContext() { 
2466      if (this.useContext == null)
2467        return false;
2468      for (UsageContext item : this.useContext)
2469        if (!item.isEmpty())
2470          return true;
2471      return false;
2472    }
2473
2474    public UsageContext addUseContext() { //3
2475      UsageContext t = new UsageContext();
2476      if (this.useContext == null)
2477        this.useContext = new ArrayList<UsageContext>();
2478      this.useContext.add(t);
2479      return t;
2480    }
2481
2482    public GraphDefinition addUseContext(UsageContext t) { //3
2483      if (t == null)
2484        return this;
2485      if (this.useContext == null)
2486        this.useContext = new ArrayList<UsageContext>();
2487      this.useContext.add(t);
2488      return this;
2489    }
2490
2491    /**
2492     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
2493     */
2494    public UsageContext getUseContextFirstRep() { 
2495      if (getUseContext().isEmpty()) {
2496        addUseContext();
2497      }
2498      return getUseContext().get(0);
2499    }
2500
2501    /**
2502     * @return {@link #jurisdiction} (A legal or geographic region in which the graph definition is intended to be used.)
2503     */
2504    public List<CodeableConcept> getJurisdiction() { 
2505      if (this.jurisdiction == null)
2506        this.jurisdiction = new ArrayList<CodeableConcept>();
2507      return this.jurisdiction;
2508    }
2509
2510    /**
2511     * @return Returns a reference to <code>this</code> for easy method chaining
2512     */
2513    public GraphDefinition setJurisdiction(List<CodeableConcept> theJurisdiction) { 
2514      this.jurisdiction = theJurisdiction;
2515      return this;
2516    }
2517
2518    public boolean hasJurisdiction() { 
2519      if (this.jurisdiction == null)
2520        return false;
2521      for (CodeableConcept item : this.jurisdiction)
2522        if (!item.isEmpty())
2523          return true;
2524      return false;
2525    }
2526
2527    public CodeableConcept addJurisdiction() { //3
2528      CodeableConcept t = new CodeableConcept();
2529      if (this.jurisdiction == null)
2530        this.jurisdiction = new ArrayList<CodeableConcept>();
2531      this.jurisdiction.add(t);
2532      return t;
2533    }
2534
2535    public GraphDefinition addJurisdiction(CodeableConcept t) { //3
2536      if (t == null)
2537        return this;
2538      if (this.jurisdiction == null)
2539        this.jurisdiction = new ArrayList<CodeableConcept>();
2540      this.jurisdiction.add(t);
2541      return this;
2542    }
2543
2544    /**
2545     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
2546     */
2547    public CodeableConcept getJurisdictionFirstRep() { 
2548      if (getJurisdiction().isEmpty()) {
2549        addJurisdiction();
2550      }
2551      return getJurisdiction().get(0);
2552    }
2553
2554    /**
2555     * @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
2556     */
2557    public MarkdownType getPurposeElement() { 
2558      if (this.purpose == null)
2559        if (Configuration.errorOnAutoCreate())
2560          throw new Error("Attempt to auto-create GraphDefinition.purpose");
2561        else if (Configuration.doAutoCreate())
2562          this.purpose = new MarkdownType(); // bb
2563      return this.purpose;
2564    }
2565
2566    public boolean hasPurposeElement() { 
2567      return this.purpose != null && !this.purpose.isEmpty();
2568    }
2569
2570    public boolean hasPurpose() { 
2571      return this.purpose != null && !this.purpose.isEmpty();
2572    }
2573
2574    /**
2575     * @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
2576     */
2577    public GraphDefinition setPurposeElement(MarkdownType value) { 
2578      this.purpose = value;
2579      return this;
2580    }
2581
2582    /**
2583     * @return Explanation of why this graph definition is needed and why it has been designed as it has.
2584     */
2585    public String getPurpose() { 
2586      return this.purpose == null ? null : this.purpose.getValue();
2587    }
2588
2589    /**
2590     * @param value Explanation of why this graph definition is needed and why it has been designed as it has.
2591     */
2592    public GraphDefinition setPurpose(String value) { 
2593      if (value == null)
2594        this.purpose = null;
2595      else {
2596        if (this.purpose == null)
2597          this.purpose = new MarkdownType();
2598        this.purpose.setValue(value);
2599      }
2600      return this;
2601    }
2602
2603    /**
2604     * @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
2605     */
2606    public CodeType getStartElement() { 
2607      if (this.start == null)
2608        if (Configuration.errorOnAutoCreate())
2609          throw new Error("Attempt to auto-create GraphDefinition.start");
2610        else if (Configuration.doAutoCreate())
2611          this.start = new CodeType(); // bb
2612      return this.start;
2613    }
2614
2615    public boolean hasStartElement() { 
2616      return this.start != null && !this.start.isEmpty();
2617    }
2618
2619    public boolean hasStart() { 
2620      return this.start != null && !this.start.isEmpty();
2621    }
2622
2623    /**
2624     * @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
2625     */
2626    public GraphDefinition setStartElement(CodeType value) { 
2627      this.start = value;
2628      return this;
2629    }
2630
2631    /**
2632     * @return The type of FHIR resource at which instances of this graph start.
2633     */
2634    public String getStart() { 
2635      return this.start == null ? null : this.start.getValue();
2636    }
2637
2638    /**
2639     * @param value The type of FHIR resource at which instances of this graph start.
2640     */
2641    public GraphDefinition setStart(String value) { 
2642        if (this.start == null)
2643          this.start = new CodeType();
2644        this.start.setValue(value);
2645      return this;
2646    }
2647
2648    /**
2649     * @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
2650     */
2651    public CanonicalType getProfileElement() { 
2652      if (this.profile == null)
2653        if (Configuration.errorOnAutoCreate())
2654          throw new Error("Attempt to auto-create GraphDefinition.profile");
2655        else if (Configuration.doAutoCreate())
2656          this.profile = new CanonicalType(); // bb
2657      return this.profile;
2658    }
2659
2660    public boolean hasProfileElement() { 
2661      return this.profile != null && !this.profile.isEmpty();
2662    }
2663
2664    public boolean hasProfile() { 
2665      return this.profile != null && !this.profile.isEmpty();
2666    }
2667
2668    /**
2669     * @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
2670     */
2671    public GraphDefinition setProfileElement(CanonicalType value) { 
2672      this.profile = value;
2673      return this;
2674    }
2675
2676    /**
2677     * @return The profile that describes the use of the base resource.
2678     */
2679    public String getProfile() { 
2680      return this.profile == null ? null : this.profile.getValue();
2681    }
2682
2683    /**
2684     * @param value The profile that describes the use of the base resource.
2685     */
2686    public GraphDefinition setProfile(String value) { 
2687      if (Utilities.noString(value))
2688        this.profile = null;
2689      else {
2690        if (this.profile == null)
2691          this.profile = new CanonicalType();
2692        this.profile.setValue(value);
2693      }
2694      return this;
2695    }
2696
2697    /**
2698     * @return {@link #link} (Links this graph makes rules about.)
2699     */
2700    public List<GraphDefinitionLinkComponent> getLink() { 
2701      if (this.link == null)
2702        this.link = new ArrayList<GraphDefinitionLinkComponent>();
2703      return this.link;
2704    }
2705
2706    /**
2707     * @return Returns a reference to <code>this</code> for easy method chaining
2708     */
2709    public GraphDefinition setLink(List<GraphDefinitionLinkComponent> theLink) { 
2710      this.link = theLink;
2711      return this;
2712    }
2713
2714    public boolean hasLink() { 
2715      if (this.link == null)
2716        return false;
2717      for (GraphDefinitionLinkComponent item : this.link)
2718        if (!item.isEmpty())
2719          return true;
2720      return false;
2721    }
2722
2723    public GraphDefinitionLinkComponent addLink() { //3
2724      GraphDefinitionLinkComponent t = new GraphDefinitionLinkComponent();
2725      if (this.link == null)
2726        this.link = new ArrayList<GraphDefinitionLinkComponent>();
2727      this.link.add(t);
2728      return t;
2729    }
2730
2731    public GraphDefinition addLink(GraphDefinitionLinkComponent t) { //3
2732      if (t == null)
2733        return this;
2734      if (this.link == null)
2735        this.link = new ArrayList<GraphDefinitionLinkComponent>();
2736      this.link.add(t);
2737      return this;
2738    }
2739
2740    /**
2741     * @return The first repetition of repeating field {@link #link}, creating it if it does not already exist {3}
2742     */
2743    public GraphDefinitionLinkComponent getLinkFirstRep() { 
2744      if (getLink().isEmpty()) {
2745        addLink();
2746      }
2747      return getLink().get(0);
2748    }
2749
2750    /**
2751     * not supported on this implementation
2752     */
2753    @Override
2754    public int getIdentifierMax() { 
2755      return 0;
2756    }
2757    /**
2758     * @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.)
2759     */
2760    public List<Identifier> getIdentifier() { 
2761      return new ArrayList<>();
2762    }
2763    /**
2764     * @return Returns a reference to <code>this</code> for easy method chaining
2765     */
2766    public GraphDefinition setIdentifier(List<Identifier> theIdentifier) { 
2767      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"identifier\""); 
2768    }
2769    public boolean hasIdentifier() { 
2770      return false;
2771    }
2772
2773    public Identifier addIdentifier() { //3
2774      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"identifier\""); 
2775    }
2776    public GraphDefinition addIdentifier(Identifier t) { //3
2777      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"identifier\""); 
2778    }
2779    /**
2780     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {2}
2781     */
2782    public Identifier getIdentifierFirstRep() { 
2783      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"identifier\""); 
2784    }
2785    /**
2786     * not supported on this implementation
2787     */
2788    @Override
2789    public int getCopyrightMax() { 
2790      return 0;
2791    }
2792    /**
2793     * @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
2794     */
2795    public MarkdownType getCopyrightElement() { 
2796      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyright\"");
2797    }
2798
2799    public boolean hasCopyrightElement() { 
2800      return false;
2801    }
2802    public boolean hasCopyright() {
2803      return false;
2804    }
2805
2806    /**
2807     * @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
2808     */
2809    public GraphDefinition setCopyrightElement(MarkdownType value) { 
2810      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyright\""); 
2811    }
2812    public String getCopyright() { 
2813      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyright\""); 
2814    }
2815    /**
2816     * @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.
2817     */
2818    public GraphDefinition setCopyright(String value) { 
2819      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyright\""); 
2820    }
2821    /**
2822     * not supported on this implementation
2823     */
2824    @Override
2825    public int getCopyrightLabelMax() { 
2826      return 0;
2827    }
2828    /**
2829     * @return {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
2830     */
2831    public StringType getCopyrightLabelElement() { 
2832      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyrightLabel\"");
2833    }
2834
2835    public boolean hasCopyrightLabelElement() { 
2836      return false;
2837    }
2838    public boolean hasCopyrightLabel() {
2839      return false;
2840    }
2841
2842    /**
2843     * @param value {@link #copyrightLabel} (A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').). This is the underlying object with id, value and extensions. The accessor "getCopyrightLabel" gives direct access to the value
2844     */
2845    public GraphDefinition setCopyrightLabelElement(StringType value) { 
2846      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyrightLabel\""); 
2847    }
2848    public String getCopyrightLabel() { 
2849      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyrightLabel\""); 
2850    }
2851    /**
2852     * @param value A short string (<50 characters), suitable for inclusion in a page footer that identifies the copyright holder, effective period, and optionally whether rights are resctricted. (e.g. 'All rights reserved', 'Some rights reserved').
2853     */
2854    public GraphDefinition setCopyrightLabel(String value) { 
2855      throw new Error("The resource type \"GraphDefinition\" does not implement the property \"copyrightLabel\""); 
2856    }
2857      protected void listChildren(List<Property> children) {
2858        super.listChildren(children);
2859        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 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));
2860        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));
2861        children.add(new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm));
2862        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));
2863        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the capability statement.", 0, 1, title));
2864        children.add(new Property("status", "code", "The status of this graph definition. Enables tracking the life-cycle of the content.", 0, 1, status));
2865        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));
2866        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));
2867        children.add(new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the graph definition.", 0, 1, publisher));
2868        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));
2869        children.add(new Property("description", "markdown", "A free text natural language description of the graph definition from a consumer's perspective.", 0, 1, description));
2870        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));
2871        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));
2872        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));
2873        children.add(new Property("start", "code", "The type of FHIR resource at which instances of this graph start.", 0, 1, start));
2874        children.add(new Property("profile", "canonical(StructureDefinition)", "The profile that describes the use of the base resource.", 0, 1, profile));
2875        children.add(new Property("link", "", "Links this graph makes rules about.", 0, java.lang.Integer.MAX_VALUE, link));
2876      }
2877
2878      @Override
2879      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2880        switch (_hash) {
2881        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 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);
2882        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);
2883        case -115699031: /*versionAlgorithm[x]*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
2884        case 1508158071: /*versionAlgorithm*/  return new Property("versionAlgorithm[x]", "string|Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
2885        case 1836908904: /*versionAlgorithmString*/  return new Property("versionAlgorithm[x]", "string", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
2886        case 1373807809: /*versionAlgorithmCoding*/  return new Property("versionAlgorithm[x]", "Coding", "Indicates the mechanism used to compare versions to determine which is more current.", 0, 1, versionAlgorithm);
2887        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);
2888        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the capability statement.", 0, 1, title);
2889        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);
2890        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);
2891        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);
2892        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual responsible for the release and ongoing maintenance of the graph definition.", 0, 1, publisher);
2893        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);
2894        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);
2895        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);
2896        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);
2897        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);
2898        case 109757538: /*start*/  return new Property("start", "code", "The type of FHIR resource at which instances of this graph start.", 0, 1, start);
2899        case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "The profile that describes the use of the base resource.", 0, 1, profile);
2900        case 3321850: /*link*/  return new Property("link", "", "Links this graph makes rules about.", 0, java.lang.Integer.MAX_VALUE, link);
2901        default: return super.getNamedProperty(_hash, _name, _checkValid);
2902        }
2903
2904      }
2905
2906      @Override
2907      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2908        switch (hash) {
2909        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
2910        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
2911        case 1508158071: /*versionAlgorithm*/ return this.versionAlgorithm == null ? new Base[0] : new Base[] {this.versionAlgorithm}; // DataType
2912        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
2913        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
2914        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
2915        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
2916        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
2917        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
2918        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
2919        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
2920        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
2921        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
2922        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
2923        case 109757538: /*start*/ return this.start == null ? new Base[0] : new Base[] {this.start}; // CodeType
2924        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
2925        case 3321850: /*link*/ return this.link == null ? new Base[0] : this.link.toArray(new Base[this.link.size()]); // GraphDefinitionLinkComponent
2926        default: return super.getProperty(hash, name, checkValid);
2927        }
2928
2929      }
2930
2931      @Override
2932      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2933        switch (hash) {
2934        case 116079: // url
2935          this.url = TypeConvertor.castToUri(value); // UriType
2936          return value;
2937        case 351608024: // version
2938          this.version = TypeConvertor.castToString(value); // StringType
2939          return value;
2940        case 1508158071: // versionAlgorithm
2941          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
2942          return value;
2943        case 3373707: // name
2944          this.name = TypeConvertor.castToString(value); // StringType
2945          return value;
2946        case 110371416: // title
2947          this.title = TypeConvertor.castToString(value); // StringType
2948          return value;
2949        case -892481550: // status
2950          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
2951          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
2952          return value;
2953        case -404562712: // experimental
2954          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
2955          return value;
2956        case 3076014: // date
2957          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
2958          return value;
2959        case 1447404028: // publisher
2960          this.publisher = TypeConvertor.castToString(value); // StringType
2961          return value;
2962        case 951526432: // contact
2963          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
2964          return value;
2965        case -1724546052: // description
2966          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
2967          return value;
2968        case -669707736: // useContext
2969          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
2970          return value;
2971        case -507075711: // jurisdiction
2972          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2973          return value;
2974        case -220463842: // purpose
2975          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
2976          return value;
2977        case 109757538: // start
2978          this.start = TypeConvertor.castToCode(value); // CodeType
2979          return value;
2980        case -309425751: // profile
2981          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
2982          return value;
2983        case 3321850: // link
2984          this.getLink().add((GraphDefinitionLinkComponent) value); // GraphDefinitionLinkComponent
2985          return value;
2986        default: return super.setProperty(hash, name, value);
2987        }
2988
2989      }
2990
2991      @Override
2992      public Base setProperty(String name, Base value) throws FHIRException {
2993        if (name.equals("url")) {
2994          this.url = TypeConvertor.castToUri(value); // UriType
2995        } else if (name.equals("version")) {
2996          this.version = TypeConvertor.castToString(value); // StringType
2997        } else if (name.equals("versionAlgorithm[x]")) {
2998          this.versionAlgorithm = TypeConvertor.castToType(value); // DataType
2999        } else if (name.equals("name")) {
3000          this.name = TypeConvertor.castToString(value); // StringType
3001        } else if (name.equals("title")) {
3002          this.title = TypeConvertor.castToString(value); // StringType
3003        } else if (name.equals("status")) {
3004          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3005          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3006        } else if (name.equals("experimental")) {
3007          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3008        } else if (name.equals("date")) {
3009          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3010        } else if (name.equals("publisher")) {
3011          this.publisher = TypeConvertor.castToString(value); // StringType
3012        } else if (name.equals("contact")) {
3013          this.getContact().add(TypeConvertor.castToContactDetail(value));
3014        } else if (name.equals("description")) {
3015          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3016        } else if (name.equals("useContext")) {
3017          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
3018        } else if (name.equals("jurisdiction")) {
3019          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
3020        } else if (name.equals("purpose")) {
3021          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3022        } else if (name.equals("start")) {
3023          this.start = TypeConvertor.castToCode(value); // CodeType
3024        } else if (name.equals("profile")) {
3025          this.profile = TypeConvertor.castToCanonical(value); // CanonicalType
3026        } else if (name.equals("link")) {
3027          this.getLink().add((GraphDefinitionLinkComponent) value);
3028        } else
3029          return super.setProperty(name, value);
3030        return value;
3031      }
3032
3033      @Override
3034      public Base makeProperty(int hash, String name) throws FHIRException {
3035        switch (hash) {
3036        case 116079:  return getUrlElement();
3037        case 351608024:  return getVersionElement();
3038        case -115699031:  return getVersionAlgorithm();
3039        case 1508158071:  return getVersionAlgorithm();
3040        case 3373707:  return getNameElement();
3041        case 110371416:  return getTitleElement();
3042        case -892481550:  return getStatusElement();
3043        case -404562712:  return getExperimentalElement();
3044        case 3076014:  return getDateElement();
3045        case 1447404028:  return getPublisherElement();
3046        case 951526432:  return addContact(); 
3047        case -1724546052:  return getDescriptionElement();
3048        case -669707736:  return addUseContext(); 
3049        case -507075711:  return addJurisdiction(); 
3050        case -220463842:  return getPurposeElement();
3051        case 109757538:  return getStartElement();
3052        case -309425751:  return getProfileElement();
3053        case 3321850:  return addLink(); 
3054        default: return super.makeProperty(hash, name);
3055        }
3056
3057      }
3058
3059      @Override
3060      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3061        switch (hash) {
3062        case 116079: /*url*/ return new String[] {"uri"};
3063        case 351608024: /*version*/ return new String[] {"string"};
3064        case 1508158071: /*versionAlgorithm*/ return new String[] {"string", "Coding"};
3065        case 3373707: /*name*/ return new String[] {"string"};
3066        case 110371416: /*title*/ return new String[] {"string"};
3067        case -892481550: /*status*/ return new String[] {"code"};
3068        case -404562712: /*experimental*/ return new String[] {"boolean"};
3069        case 3076014: /*date*/ return new String[] {"dateTime"};
3070        case 1447404028: /*publisher*/ return new String[] {"string"};
3071        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
3072        case -1724546052: /*description*/ return new String[] {"markdown"};
3073        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
3074        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
3075        case -220463842: /*purpose*/ return new String[] {"markdown"};
3076        case 109757538: /*start*/ return new String[] {"code"};
3077        case -309425751: /*profile*/ return new String[] {"canonical"};
3078        case 3321850: /*link*/ return new String[] {};
3079        default: return super.getTypesForProperty(hash, name);
3080        }
3081
3082      }
3083
3084      @Override
3085      public Base addChild(String name) throws FHIRException {
3086        if (name.equals("url")) {
3087          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.url");
3088        }
3089        else if (name.equals("version")) {
3090          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.version");
3091        }
3092        else if (name.equals("versionAlgorithmString")) {
3093          this.versionAlgorithm = new StringType();
3094          return this.versionAlgorithm;
3095        }
3096        else if (name.equals("versionAlgorithmCoding")) {
3097          this.versionAlgorithm = new Coding();
3098          return this.versionAlgorithm;
3099        }
3100        else if (name.equals("name")) {
3101          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.name");
3102        }
3103        else if (name.equals("title")) {
3104          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.title");
3105        }
3106        else if (name.equals("status")) {
3107          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.status");
3108        }
3109        else if (name.equals("experimental")) {
3110          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.experimental");
3111        }
3112        else if (name.equals("date")) {
3113          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.date");
3114        }
3115        else if (name.equals("publisher")) {
3116          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.publisher");
3117        }
3118        else if (name.equals("contact")) {
3119          return addContact();
3120        }
3121        else if (name.equals("description")) {
3122          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.description");
3123        }
3124        else if (name.equals("useContext")) {
3125          return addUseContext();
3126        }
3127        else if (name.equals("jurisdiction")) {
3128          return addJurisdiction();
3129        }
3130        else if (name.equals("purpose")) {
3131          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.purpose");
3132        }
3133        else if (name.equals("start")) {
3134          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.start");
3135        }
3136        else if (name.equals("profile")) {
3137          throw new FHIRException("Cannot call addChild on a primitive type GraphDefinition.profile");
3138        }
3139        else if (name.equals("link")) {
3140          return addLink();
3141        }
3142        else
3143          return super.addChild(name);
3144      }
3145
3146  public String fhirType() {
3147    return "GraphDefinition";
3148
3149  }
3150
3151      public GraphDefinition copy() {
3152        GraphDefinition dst = new GraphDefinition();
3153        copyValues(dst);
3154        return dst;
3155      }
3156
3157      public void copyValues(GraphDefinition dst) {
3158        super.copyValues(dst);
3159        dst.url = url == null ? null : url.copy();
3160        dst.version = version == null ? null : version.copy();
3161        dst.versionAlgorithm = versionAlgorithm == null ? null : versionAlgorithm.copy();
3162        dst.name = name == null ? null : name.copy();
3163        dst.title = title == null ? null : title.copy();
3164        dst.status = status == null ? null : status.copy();
3165        dst.experimental = experimental == null ? null : experimental.copy();
3166        dst.date = date == null ? null : date.copy();
3167        dst.publisher = publisher == null ? null : publisher.copy();
3168        if (contact != null) {
3169          dst.contact = new ArrayList<ContactDetail>();
3170          for (ContactDetail i : contact)
3171            dst.contact.add(i.copy());
3172        };
3173        dst.description = description == null ? null : description.copy();
3174        if (useContext != null) {
3175          dst.useContext = new ArrayList<UsageContext>();
3176          for (UsageContext i : useContext)
3177            dst.useContext.add(i.copy());
3178        };
3179        if (jurisdiction != null) {
3180          dst.jurisdiction = new ArrayList<CodeableConcept>();
3181          for (CodeableConcept i : jurisdiction)
3182            dst.jurisdiction.add(i.copy());
3183        };
3184        dst.purpose = purpose == null ? null : purpose.copy();
3185        dst.start = start == null ? null : start.copy();
3186        dst.profile = profile == null ? null : profile.copy();
3187        if (link != null) {
3188          dst.link = new ArrayList<GraphDefinitionLinkComponent>();
3189          for (GraphDefinitionLinkComponent i : link)
3190            dst.link.add(i.copy());
3191        };
3192      }
3193
3194      protected GraphDefinition typedCopy() {
3195        return copy();
3196      }
3197
3198      @Override
3199      public boolean equalsDeep(Base other_) {
3200        if (!super.equalsDeep(other_))
3201          return false;
3202        if (!(other_ instanceof GraphDefinition))
3203          return false;
3204        GraphDefinition o = (GraphDefinition) other_;
3205        return compareDeep(url, o.url, true) && compareDeep(version, o.version, true) && compareDeep(versionAlgorithm, o.versionAlgorithm, true)
3206           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(status, o.status, true)
3207           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
3208           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
3209           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(start, o.start, true)
3210           && compareDeep(profile, o.profile, true) && compareDeep(link, o.link, true);
3211      }
3212
3213      @Override
3214      public boolean equalsShallow(Base other_) {
3215        if (!super.equalsShallow(other_))
3216          return false;
3217        if (!(other_ instanceof GraphDefinition))
3218          return false;
3219        GraphDefinition o = (GraphDefinition) other_;
3220        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
3221           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
3222           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
3223           && compareValues(purpose, o.purpose, true) && compareValues(start, o.start, true) && compareValues(profile, o.profile, true)
3224          ;
3225      }
3226
3227      public boolean isEmpty() {
3228        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, version, versionAlgorithm
3229          , name, title, status, experimental, date, publisher, contact, description, useContext
3230          , jurisdiction, purpose, start, profile, link);
3231      }
3232
3233  @Override
3234  public ResourceType getResourceType() {
3235    return ResourceType.GraphDefinition;
3236   }
3237
3238 /**
3239   * Search parameter: <b>start</b>
3240   * <p>
3241   * Description: <b>Type of resource at which the graph starts</b><br>
3242   * Type: <b>token</b><br>
3243   * Path: <b>GraphDefinition.start</b><br>
3244   * </p>
3245   */
3246  @SearchParamDefinition(name="start", path="GraphDefinition.start", description="Type of resource at which the graph starts", type="token" )
3247  public static final String SP_START = "start";
3248 /**
3249   * <b>Fluent Client</b> search parameter constant for <b>start</b>
3250   * <p>
3251   * Description: <b>Type of resource at which the graph starts</b><br>
3252   * Type: <b>token</b><br>
3253   * Path: <b>GraphDefinition.start</b><br>
3254   * </p>
3255   */
3256  public static final ca.uhn.fhir.rest.gclient.TokenClientParam START = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_START);
3257
3258 /**
3259   * Search parameter: <b>context-quantity</b>
3260   * <p>
3261   * Description: <b>Multiple Resources: 
3262
3263* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3264* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3265* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3266* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3267* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3268* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3269* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3270* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3271* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3272* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3273* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3274* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3275* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3276* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3277</b><br>
3278   * Type: <b>quantity</b><br>
3279   * 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>
3280   * </p>
3281   */
3282  @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" )
3283  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
3284 /**
3285   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
3286   * <p>
3287   * Description: <b>Multiple Resources: 
3288
3289* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
3290* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
3291* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
3292* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
3293* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
3294* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
3295* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
3296* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
3297* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
3298* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
3299* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
3300* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
3301* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
3302* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
3303</b><br>
3304   * Type: <b>quantity</b><br>
3305   * 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>
3306   * </p>
3307   */
3308  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
3309
3310 /**
3311   * Search parameter: <b>context-type-quantity</b>
3312   * <p>
3313   * Description: <b>Multiple Resources: 
3314
3315* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3316* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3317* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3318* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3319* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3320* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3321* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3322* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3323* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3324* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3325* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3326* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3327* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3328* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3329</b><br>
3330   * Type: <b>composite</b><br>
3331   * 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>
3332   * </p>
3333   */
3334  @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"} )
3335  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
3336 /**
3337   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
3338   * <p>
3339   * Description: <b>Multiple Resources: 
3340
3341* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
3342* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
3343* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
3344* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
3345* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
3346* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
3347* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
3348* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
3349* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
3350* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
3351* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
3352* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
3353* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
3354* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
3355</b><br>
3356   * Type: <b>composite</b><br>
3357   * 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>
3358   * </p>
3359   */
3360  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);
3361
3362 /**
3363   * Search parameter: <b>context-type-value</b>
3364   * <p>
3365   * Description: <b>Multiple Resources: 
3366
3367* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3368* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3369* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3370* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3371* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3372* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3373* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3374* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3375* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3376* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3377* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3378* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3379* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3380* [ValueSet](valueset.html): A use context type and value assigned to the value set
3381</b><br>
3382   * Type: <b>composite</b><br>
3383   * 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>
3384   * </p>
3385   */
3386  @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"} )
3387  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
3388 /**
3389   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
3390   * <p>
3391   * Description: <b>Multiple Resources: 
3392
3393* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
3394* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
3395* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
3396* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
3397* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
3398* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
3399* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
3400* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
3401* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
3402* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
3403* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
3404* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
3405* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
3406* [ValueSet](valueset.html): A use context type and value assigned to the value set
3407</b><br>
3408   * Type: <b>composite</b><br>
3409   * 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>
3410   * </p>
3411   */
3412  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);
3413
3414 /**
3415   * Search parameter: <b>context-type</b>
3416   * <p>
3417   * Description: <b>Multiple Resources: 
3418
3419* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3420* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3421* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3422* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3423* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3424* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3425* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3426* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3427* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3428* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3429* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3430* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3431* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3432* [ValueSet](valueset.html): A type of use context assigned to the value set
3433</b><br>
3434   * Type: <b>token</b><br>
3435   * 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>
3436   * </p>
3437   */
3438  @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" )
3439  public static final String SP_CONTEXT_TYPE = "context-type";
3440 /**
3441   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
3442   * <p>
3443   * Description: <b>Multiple Resources: 
3444
3445* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
3446* [CodeSystem](codesystem.html): A type of use context assigned to the code system
3447* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
3448* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
3449* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
3450* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
3451* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
3452* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
3453* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
3454* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
3455* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
3456* [StructureMap](structuremap.html): A type of use context assigned to the structure map
3457* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
3458* [ValueSet](valueset.html): A type of use context assigned to the value set
3459</b><br>
3460   * Type: <b>token</b><br>
3461   * 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>
3462   * </p>
3463   */
3464  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
3465
3466 /**
3467   * Search parameter: <b>context</b>
3468   * <p>
3469   * Description: <b>Multiple Resources: 
3470
3471* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3472* [CodeSystem](codesystem.html): A use context assigned to the code system
3473* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3474* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3475* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3476* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3477* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3478* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3479* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3480* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3481* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3482* [StructureMap](structuremap.html): A use context assigned to the structure map
3483* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3484* [ValueSet](valueset.html): A use context assigned to the value set
3485</b><br>
3486   * Type: <b>token</b><br>
3487   * 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>
3488   * </p>
3489   */
3490  @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" )
3491  public static final String SP_CONTEXT = "context";
3492 /**
3493   * <b>Fluent Client</b> search parameter constant for <b>context</b>
3494   * <p>
3495   * Description: <b>Multiple Resources: 
3496
3497* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
3498* [CodeSystem](codesystem.html): A use context assigned to the code system
3499* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
3500* [ConceptMap](conceptmap.html): A use context assigned to the concept map
3501* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
3502* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
3503* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
3504* [NamingSystem](namingsystem.html): A use context assigned to the naming system
3505* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
3506* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
3507* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
3508* [StructureMap](structuremap.html): A use context assigned to the structure map
3509* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
3510* [ValueSet](valueset.html): A use context assigned to the value set
3511</b><br>
3512   * Type: <b>token</b><br>
3513   * 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>
3514   * </p>
3515   */
3516  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
3517
3518 /**
3519   * Search parameter: <b>date</b>
3520   * <p>
3521   * Description: <b>Multiple Resources: 
3522
3523* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3524* [CodeSystem](codesystem.html): The code system publication date
3525* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3526* [ConceptMap](conceptmap.html): The concept map publication date
3527* [GraphDefinition](graphdefinition.html): The graph definition publication date
3528* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3529* [MessageDefinition](messagedefinition.html): The message definition publication date
3530* [NamingSystem](namingsystem.html): The naming system publication date
3531* [OperationDefinition](operationdefinition.html): The operation definition publication date
3532* [SearchParameter](searchparameter.html): The search parameter publication date
3533* [StructureDefinition](structuredefinition.html): The structure definition publication date
3534* [StructureMap](structuremap.html): The structure map publication date
3535* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3536* [ValueSet](valueset.html): The value set publication date
3537</b><br>
3538   * Type: <b>date</b><br>
3539   * 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>
3540   * </p>
3541   */
3542  @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" )
3543  public static final String SP_DATE = "date";
3544 /**
3545   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3546   * <p>
3547   * Description: <b>Multiple Resources: 
3548
3549* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
3550* [CodeSystem](codesystem.html): The code system publication date
3551* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
3552* [ConceptMap](conceptmap.html): The concept map publication date
3553* [GraphDefinition](graphdefinition.html): The graph definition publication date
3554* [ImplementationGuide](implementationguide.html): The implementation guide publication date
3555* [MessageDefinition](messagedefinition.html): The message definition publication date
3556* [NamingSystem](namingsystem.html): The naming system publication date
3557* [OperationDefinition](operationdefinition.html): The operation definition publication date
3558* [SearchParameter](searchparameter.html): The search parameter publication date
3559* [StructureDefinition](structuredefinition.html): The structure definition publication date
3560* [StructureMap](structuremap.html): The structure map publication date
3561* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
3562* [ValueSet](valueset.html): The value set publication date
3563</b><br>
3564   * Type: <b>date</b><br>
3565   * 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>
3566   * </p>
3567   */
3568  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3569
3570 /**
3571   * Search parameter: <b>description</b>
3572   * <p>
3573   * Description: <b>Multiple Resources: 
3574
3575* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3576* [CodeSystem](codesystem.html): The description of the code system
3577* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3578* [ConceptMap](conceptmap.html): The description of the concept map
3579* [GraphDefinition](graphdefinition.html): The description of the graph definition
3580* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3581* [MessageDefinition](messagedefinition.html): The description of the message definition
3582* [NamingSystem](namingsystem.html): The description of the naming system
3583* [OperationDefinition](operationdefinition.html): The description of the operation definition
3584* [SearchParameter](searchparameter.html): The description of the search parameter
3585* [StructureDefinition](structuredefinition.html): The description of the structure definition
3586* [StructureMap](structuremap.html): The description of the structure map
3587* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3588* [ValueSet](valueset.html): The description of the value set
3589</b><br>
3590   * Type: <b>string</b><br>
3591   * 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>
3592   * </p>
3593   */
3594  @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" )
3595  public static final String SP_DESCRIPTION = "description";
3596 /**
3597   * <b>Fluent Client</b> search parameter constant for <b>description</b>
3598   * <p>
3599   * Description: <b>Multiple Resources: 
3600
3601* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
3602* [CodeSystem](codesystem.html): The description of the code system
3603* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
3604* [ConceptMap](conceptmap.html): The description of the concept map
3605* [GraphDefinition](graphdefinition.html): The description of the graph definition
3606* [ImplementationGuide](implementationguide.html): The description of the implementation guide
3607* [MessageDefinition](messagedefinition.html): The description of the message definition
3608* [NamingSystem](namingsystem.html): The description of the naming system
3609* [OperationDefinition](operationdefinition.html): The description of the operation definition
3610* [SearchParameter](searchparameter.html): The description of the search parameter
3611* [StructureDefinition](structuredefinition.html): The description of the structure definition
3612* [StructureMap](structuremap.html): The description of the structure map
3613* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
3614* [ValueSet](valueset.html): The description of the value set
3615</b><br>
3616   * Type: <b>string</b><br>
3617   * 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>
3618   * </p>
3619   */
3620  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
3621
3622 /**
3623   * Search parameter: <b>jurisdiction</b>
3624   * <p>
3625   * Description: <b>Multiple Resources: 
3626
3627* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3628* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3629* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3630* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3631* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3632* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3633* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3634* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3635* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3636* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3637* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3638* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3639* [ValueSet](valueset.html): Intended jurisdiction for the value set
3640</b><br>
3641   * Type: <b>token</b><br>
3642   * 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>
3643   * </p>
3644   */
3645  @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" )
3646  public static final String SP_JURISDICTION = "jurisdiction";
3647 /**
3648   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
3649   * <p>
3650   * Description: <b>Multiple Resources: 
3651
3652* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
3653* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
3654* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
3655* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
3656* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
3657* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
3658* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
3659* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
3660* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
3661* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
3662* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
3663* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
3664* [ValueSet](valueset.html): Intended jurisdiction for the value set
3665</b><br>
3666   * Type: <b>token</b><br>
3667   * 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>
3668   * </p>
3669   */
3670  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
3671
3672 /**
3673   * Search parameter: <b>name</b>
3674   * <p>
3675   * Description: <b>Multiple Resources: 
3676
3677* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3678* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3679* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3680* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3681* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3682* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3683* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3684* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3685* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3686* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3687* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3688* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3689* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3690* [ValueSet](valueset.html): Computationally friendly name of the value set
3691</b><br>
3692   * Type: <b>string</b><br>
3693   * 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>
3694   * </p>
3695   */
3696  @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" )
3697  public static final String SP_NAME = "name";
3698 /**
3699   * <b>Fluent Client</b> search parameter constant for <b>name</b>
3700   * <p>
3701   * Description: <b>Multiple Resources: 
3702
3703* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
3704* [CodeSystem](codesystem.html): Computationally friendly name of the code system
3705* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
3706* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
3707* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
3708* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
3709* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
3710* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
3711* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
3712* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
3713* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
3714* [StructureMap](structuremap.html): Computationally friendly name of the structure map
3715* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
3716* [ValueSet](valueset.html): Computationally friendly name of the value set
3717</b><br>
3718   * Type: <b>string</b><br>
3719   * 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>
3720   * </p>
3721   */
3722  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
3723
3724 /**
3725   * Search parameter: <b>publisher</b>
3726   * <p>
3727   * Description: <b>Multiple Resources: 
3728
3729* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3730* [CodeSystem](codesystem.html): Name of the publisher of the code system
3731* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3732* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3733* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3734* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3735* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3736* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3737* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3738* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3739* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3740* [StructureMap](structuremap.html): Name of the publisher of the structure map
3741* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3742* [ValueSet](valueset.html): Name of the publisher of the value set
3743</b><br>
3744   * Type: <b>string</b><br>
3745   * 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>
3746   * </p>
3747   */
3748  @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" )
3749  public static final String SP_PUBLISHER = "publisher";
3750 /**
3751   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
3752   * <p>
3753   * Description: <b>Multiple Resources: 
3754
3755* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
3756* [CodeSystem](codesystem.html): Name of the publisher of the code system
3757* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
3758* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
3759* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
3760* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
3761* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
3762* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
3763* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
3764* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
3765* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
3766* [StructureMap](structuremap.html): Name of the publisher of the structure map
3767* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
3768* [ValueSet](valueset.html): Name of the publisher of the value set
3769</b><br>
3770   * Type: <b>string</b><br>
3771   * 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>
3772   * </p>
3773   */
3774  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
3775
3776 /**
3777   * Search parameter: <b>status</b>
3778   * <p>
3779   * Description: <b>Multiple Resources: 
3780
3781* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3782* [CodeSystem](codesystem.html): The current status of the code system
3783* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3784* [ConceptMap](conceptmap.html): The current status of the concept map
3785* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3786* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3787* [MessageDefinition](messagedefinition.html): The current status of the message definition
3788* [NamingSystem](namingsystem.html): The current status of the naming system
3789* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3790* [SearchParameter](searchparameter.html): The current status of the search parameter
3791* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3792* [StructureMap](structuremap.html): The current status of the structure map
3793* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3794* [ValueSet](valueset.html): The current status of the value set
3795</b><br>
3796   * Type: <b>token</b><br>
3797   * 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>
3798   * </p>
3799   */
3800  @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" )
3801  public static final String SP_STATUS = "status";
3802 /**
3803   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3804   * <p>
3805   * Description: <b>Multiple Resources: 
3806
3807* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
3808* [CodeSystem](codesystem.html): The current status of the code system
3809* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
3810* [ConceptMap](conceptmap.html): The current status of the concept map
3811* [GraphDefinition](graphdefinition.html): The current status of the graph definition
3812* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
3813* [MessageDefinition](messagedefinition.html): The current status of the message definition
3814* [NamingSystem](namingsystem.html): The current status of the naming system
3815* [OperationDefinition](operationdefinition.html): The current status of the operation definition
3816* [SearchParameter](searchparameter.html): The current status of the search parameter
3817* [StructureDefinition](structuredefinition.html): The current status of the structure definition
3818* [StructureMap](structuremap.html): The current status of the structure map
3819* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
3820* [ValueSet](valueset.html): The current status of the value set
3821</b><br>
3822   * Type: <b>token</b><br>
3823   * 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>
3824   * </p>
3825   */
3826  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3827
3828 /**
3829   * Search parameter: <b>url</b>
3830   * <p>
3831   * Description: <b>Multiple Resources: 
3832
3833* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3834* [CodeSystem](codesystem.html): The uri that identifies the code system
3835* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3836* [ConceptMap](conceptmap.html): The URI that identifies the concept map
3837* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3838* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3839* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3840* [NamingSystem](namingsystem.html): The uri that identifies the naming system
3841* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3842* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3843* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3844* [StructureMap](structuremap.html): The uri that identifies the structure map
3845* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3846* [ValueSet](valueset.html): The uri that identifies the value set
3847</b><br>
3848   * Type: <b>uri</b><br>
3849   * 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>
3850   * </p>
3851   */
3852  @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" )
3853  public static final String SP_URL = "url";
3854 /**
3855   * <b>Fluent Client</b> search parameter constant for <b>url</b>
3856   * <p>
3857   * Description: <b>Multiple Resources: 
3858
3859* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
3860* [CodeSystem](codesystem.html): The uri that identifies the code system
3861* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
3862* [ConceptMap](conceptmap.html): The URI that identifies the concept map
3863* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
3864* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
3865* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
3866* [NamingSystem](namingsystem.html): The uri that identifies the naming system
3867* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
3868* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
3869* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
3870* [StructureMap](structuremap.html): The uri that identifies the structure map
3871* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
3872* [ValueSet](valueset.html): The uri that identifies the value set
3873</b><br>
3874   * Type: <b>uri</b><br>
3875   * 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>
3876   * </p>
3877   */
3878  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
3879
3880 /**
3881   * Search parameter: <b>version</b>
3882   * <p>
3883   * Description: <b>Multiple Resources: 
3884
3885* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3886* [CodeSystem](codesystem.html): The business version of the code system
3887* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3888* [ConceptMap](conceptmap.html): The business version of the concept map
3889* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3890* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3891* [MessageDefinition](messagedefinition.html): The business version of the message definition
3892* [NamingSystem](namingsystem.html): The business version of the naming system
3893* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3894* [SearchParameter](searchparameter.html): The business version of the search parameter
3895* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3896* [StructureMap](structuremap.html): The business version of the structure map
3897* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3898* [ValueSet](valueset.html): The business version of the value set
3899</b><br>
3900   * Type: <b>token</b><br>
3901   * 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>
3902   * </p>
3903   */
3904  @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" )
3905  public static final String SP_VERSION = "version";
3906 /**
3907   * <b>Fluent Client</b> search parameter constant for <b>version</b>
3908   * <p>
3909   * Description: <b>Multiple Resources: 
3910
3911* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
3912* [CodeSystem](codesystem.html): The business version of the code system
3913* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
3914* [ConceptMap](conceptmap.html): The business version of the concept map
3915* [GraphDefinition](graphdefinition.html): The business version of the graph definition
3916* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
3917* [MessageDefinition](messagedefinition.html): The business version of the message definition
3918* [NamingSystem](namingsystem.html): The business version of the naming system
3919* [OperationDefinition](operationdefinition.html): The business version of the operation definition
3920* [SearchParameter](searchparameter.html): The business version of the search parameter
3921* [StructureDefinition](structuredefinition.html): The business version of the structure definition
3922* [StructureMap](structuremap.html): The business version of the structure map
3923* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
3924* [ValueSet](valueset.html): The business version of the value set
3925</b><br>
3926   * Type: <b>token</b><br>
3927   * 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>
3928   * </p>
3929   */
3930  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
3931
3932// Manual code (from Configuration.txt):
3933  public boolean supportsCopyright() {
3934    return false;
3935  }
3936  
3937// end addition
3938
3939}
3940