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