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