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