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