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 statement of relationships from one set of concepts to one or more other concepts - either concepts in code systems, or data element/data element concepts, or classes in class models.
052 */
053@ResourceDef(name="ConceptMap", profile="http://hl7.org/fhir/StructureDefinition/ConceptMap")
054public class ConceptMap extends CanonicalResource {
055
056    public enum ConceptMapEquivalence {
057        /**
058         * The concepts are related to each other, and have at least some overlap in meaning, but the exact relationship is not known.
059         */
060        RELATEDTO, 
061        /**
062         * The definitions of the concepts mean the same thing (including when structural implications of meaning are considered) (i.e. extensionally identical).
063         */
064        EQUIVALENT, 
065        /**
066         * The definitions of the concepts are exactly the same (i.e. only grammatical differences) and structural implications of meaning are identical or irrelevant (i.e. intentionally identical).
067         */
068        EQUAL, 
069        /**
070         * The target mapping is wider in meaning than the source concept.
071         */
072        WIDER, 
073        /**
074         * The target mapping subsumes the meaning of the source concept (e.g. the source is-a target).
075         */
076        SUBSUMES, 
077        /**
078         * The target mapping is narrower in meaning than the source concept. The sense in which the mapping is narrower SHALL be described in the comments in this case, and applications should be careful when attempting to use these mappings operationally.
079         */
080        NARROWER, 
081        /**
082         * The target mapping specializes the meaning of the source concept (e.g. the target is-a source).
083         */
084        SPECIALIZES, 
085        /**
086         * The target mapping overlaps with the source concept, but both source and target cover additional meaning, or the definitions are imprecise and it is uncertain whether they have the same boundaries to their meaning. The sense in which the mapping is inexact SHALL be described in the comments in this case, and applications should be careful when attempting to use these mappings operationally.
087         */
088        INEXACT, 
089        /**
090         * There is no match for this concept in the target code system.
091         */
092        UNMATCHED, 
093        /**
094         * This is an explicit assertion that there is no mapping between the source and target concept.
095         */
096        DISJOINT, 
097        /**
098         * added to help the parsers with the generic types
099         */
100        NULL;
101        public static ConceptMapEquivalence fromCode(String codeString) throws FHIRException {
102            if (codeString == null || "".equals(codeString))
103                return null;
104        if ("relatedto".equals(codeString))
105          return RELATEDTO;
106        if ("equivalent".equals(codeString))
107          return EQUIVALENT;
108        if ("equal".equals(codeString))
109          return EQUAL;
110        if ("wider".equals(codeString))
111          return WIDER;
112        if ("subsumes".equals(codeString))
113          return SUBSUMES;
114        if ("narrower".equals(codeString))
115          return NARROWER;
116        if ("specializes".equals(codeString))
117          return SPECIALIZES;
118        if ("inexact".equals(codeString))
119          return INEXACT;
120        if ("unmatched".equals(codeString))
121          return UNMATCHED;
122        if ("disjoint".equals(codeString))
123          return DISJOINT;
124        if (Configuration.isAcceptInvalidEnums())
125          return null;
126        else
127          throw new FHIRException("Unknown ConceptMapEquivalence code '"+codeString+"'");
128        }
129        public String toCode() {
130          switch (this) {
131            case RELATEDTO: return "relatedto";
132            case EQUIVALENT: return "equivalent";
133            case EQUAL: return "equal";
134            case WIDER: return "wider";
135            case SUBSUMES: return "subsumes";
136            case NARROWER: return "narrower";
137            case SPECIALIZES: return "specializes";
138            case INEXACT: return "inexact";
139            case UNMATCHED: return "unmatched";
140            case DISJOINT: return "disjoint";
141            case NULL: return null;
142            default: return "?";
143          }
144        }
145        public String getSystem() {
146          switch (this) {
147            case RELATEDTO: return "http://hl7.org/fhir/concept-map-equivalence";
148            case EQUIVALENT: return "http://hl7.org/fhir/concept-map-equivalence";
149            case EQUAL: return "http://hl7.org/fhir/concept-map-equivalence";
150            case WIDER: return "http://hl7.org/fhir/concept-map-equivalence";
151            case SUBSUMES: return "http://hl7.org/fhir/concept-map-equivalence";
152            case NARROWER: return "http://hl7.org/fhir/concept-map-equivalence";
153            case SPECIALIZES: return "http://hl7.org/fhir/concept-map-equivalence";
154            case INEXACT: return "http://hl7.org/fhir/concept-map-equivalence";
155            case UNMATCHED: return "http://hl7.org/fhir/concept-map-equivalence";
156            case DISJOINT: return "http://hl7.org/fhir/concept-map-equivalence";
157            case NULL: return null;
158            default: return "?";
159          }
160        }
161        public String getDefinition() {
162          switch (this) {
163            case RELATEDTO: return "The concepts are related to each other, and have at least some overlap in meaning, but the exact relationship is not known.";
164            case EQUIVALENT: return "The definitions of the concepts mean the same thing (including when structural implications of meaning are considered) (i.e. extensionally identical).";
165            case EQUAL: return "The definitions of the concepts are exactly the same (i.e. only grammatical differences) and structural implications of meaning are identical or irrelevant (i.e. intentionally identical).";
166            case WIDER: return "The target mapping is wider in meaning than the source concept.";
167            case SUBSUMES: return "The target mapping subsumes the meaning of the source concept (e.g. the source is-a target).";
168            case NARROWER: return "The target mapping is narrower in meaning than the source concept. The sense in which the mapping is narrower SHALL be described in the comments in this case, and applications should be careful when attempting to use these mappings operationally.";
169            case SPECIALIZES: return "The target mapping specializes the meaning of the source concept (e.g. the target is-a source).";
170            case INEXACT: return "The target mapping overlaps with the source concept, but both source and target cover additional meaning, or the definitions are imprecise and it is uncertain whether they have the same boundaries to their meaning. The sense in which the mapping is inexact SHALL be described in the comments in this case, and applications should be careful when attempting to use these mappings operationally.";
171            case UNMATCHED: return "There is no match for this concept in the target code system.";
172            case DISJOINT: return "This is an explicit assertion that there is no mapping between the source and target concept.";
173            case NULL: return null;
174            default: return "?";
175          }
176        }
177        public String getDisplay() {
178          switch (this) {
179            case RELATEDTO: return "Related To";
180            case EQUIVALENT: return "Equivalent";
181            case EQUAL: return "Equal";
182            case WIDER: return "Wider";
183            case SUBSUMES: return "Subsumes";
184            case NARROWER: return "Narrower";
185            case SPECIALIZES: return "Specializes";
186            case INEXACT: return "Inexact";
187            case UNMATCHED: return "Unmatched";
188            case DISJOINT: return "Disjoint";
189            case NULL: return null;
190            default: return "?";
191          }
192        }
193    }
194
195  public static class ConceptMapEquivalenceEnumFactory implements EnumFactory<ConceptMapEquivalence> {
196    public ConceptMapEquivalence fromCode(String codeString) throws IllegalArgumentException {
197      if (codeString == null || "".equals(codeString))
198            if (codeString == null || "".equals(codeString))
199                return null;
200        if ("relatedto".equals(codeString))
201          return ConceptMapEquivalence.RELATEDTO;
202        if ("equivalent".equals(codeString))
203          return ConceptMapEquivalence.EQUIVALENT;
204        if ("equal".equals(codeString))
205          return ConceptMapEquivalence.EQUAL;
206        if ("wider".equals(codeString))
207          return ConceptMapEquivalence.WIDER;
208        if ("subsumes".equals(codeString))
209          return ConceptMapEquivalence.SUBSUMES;
210        if ("narrower".equals(codeString))
211          return ConceptMapEquivalence.NARROWER;
212        if ("specializes".equals(codeString))
213          return ConceptMapEquivalence.SPECIALIZES;
214        if ("inexact".equals(codeString))
215          return ConceptMapEquivalence.INEXACT;
216        if ("unmatched".equals(codeString))
217          return ConceptMapEquivalence.UNMATCHED;
218        if ("disjoint".equals(codeString))
219          return ConceptMapEquivalence.DISJOINT;
220        throw new IllegalArgumentException("Unknown ConceptMapEquivalence code '"+codeString+"'");
221        }
222        public Enumeration<ConceptMapEquivalence> fromType(Base code) throws FHIRException {
223          if (code == null)
224            return null;
225          if (code.isEmpty())
226            return new Enumeration<ConceptMapEquivalence>(this);
227          String codeString = ((PrimitiveType) code).asStringValue();
228          if (codeString == null || "".equals(codeString))
229            return null;
230        if ("relatedto".equals(codeString))
231          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.RELATEDTO);
232        if ("equivalent".equals(codeString))
233          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.EQUIVALENT);
234        if ("equal".equals(codeString))
235          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.EQUAL);
236        if ("wider".equals(codeString))
237          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.WIDER);
238        if ("subsumes".equals(codeString))
239          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.SUBSUMES);
240        if ("narrower".equals(codeString))
241          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.NARROWER);
242        if ("specializes".equals(codeString))
243          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.SPECIALIZES);
244        if ("inexact".equals(codeString))
245          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.INEXACT);
246        if ("unmatched".equals(codeString))
247          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.UNMATCHED);
248        if ("disjoint".equals(codeString))
249          return new Enumeration<ConceptMapEquivalence>(this, ConceptMapEquivalence.DISJOINT);
250        throw new FHIRException("Unknown ConceptMapEquivalence code '"+codeString+"'");
251        }
252    public String toCode(ConceptMapEquivalence code) {
253      if (code == ConceptMapEquivalence.RELATEDTO)
254        return "relatedto";
255      if (code == ConceptMapEquivalence.EQUIVALENT)
256        return "equivalent";
257      if (code == ConceptMapEquivalence.EQUAL)
258        return "equal";
259      if (code == ConceptMapEquivalence.WIDER)
260        return "wider";
261      if (code == ConceptMapEquivalence.SUBSUMES)
262        return "subsumes";
263      if (code == ConceptMapEquivalence.NARROWER)
264        return "narrower";
265      if (code == ConceptMapEquivalence.SPECIALIZES)
266        return "specializes";
267      if (code == ConceptMapEquivalence.INEXACT)
268        return "inexact";
269      if (code == ConceptMapEquivalence.UNMATCHED)
270        return "unmatched";
271      if (code == ConceptMapEquivalence.DISJOINT)
272        return "disjoint";
273      return "?";
274      }
275    public String toSystem(ConceptMapEquivalence code) {
276      return code.getSystem();
277      }
278    }
279
280    public enum ConceptMapGroupUnmappedMode {
281        /**
282         * Use the code as provided in the $translate request.
283         */
284        PROVIDED, 
285        /**
286         * Use the code explicitly provided in the group.unmapped.
287         */
288        FIXED, 
289        /**
290         * Use the map identified by the canonical URL in the url element.
291         */
292        OTHERMAP, 
293        /**
294         * added to help the parsers with the generic types
295         */
296        NULL;
297        public static ConceptMapGroupUnmappedMode fromCode(String codeString) throws FHIRException {
298            if (codeString == null || "".equals(codeString))
299                return null;
300        if ("provided".equals(codeString))
301          return PROVIDED;
302        if ("fixed".equals(codeString))
303          return FIXED;
304        if ("other-map".equals(codeString))
305          return OTHERMAP;
306        if (Configuration.isAcceptInvalidEnums())
307          return null;
308        else
309          throw new FHIRException("Unknown ConceptMapGroupUnmappedMode code '"+codeString+"'");
310        }
311        public String toCode() {
312          switch (this) {
313            case PROVIDED: return "provided";
314            case FIXED: return "fixed";
315            case OTHERMAP: return "other-map";
316            case NULL: return null;
317            default: return "?";
318          }
319        }
320        public String getSystem() {
321          switch (this) {
322            case PROVIDED: return "http://hl7.org/fhir/conceptmap-unmapped-mode";
323            case FIXED: return "http://hl7.org/fhir/conceptmap-unmapped-mode";
324            case OTHERMAP: return "http://hl7.org/fhir/conceptmap-unmapped-mode";
325            case NULL: return null;
326            default: return "?";
327          }
328        }
329        public String getDefinition() {
330          switch (this) {
331            case PROVIDED: return "Use the code as provided in the $translate request.";
332            case FIXED: return "Use the code explicitly provided in the group.unmapped.";
333            case OTHERMAP: return "Use the map identified by the canonical URL in the url element.";
334            case NULL: return null;
335            default: return "?";
336          }
337        }
338        public String getDisplay() {
339          switch (this) {
340            case PROVIDED: return "Provided Code";
341            case FIXED: return "Fixed Code";
342            case OTHERMAP: return "Other Map";
343            case NULL: return null;
344            default: return "?";
345          }
346        }
347    }
348
349  public static class ConceptMapGroupUnmappedModeEnumFactory implements EnumFactory<ConceptMapGroupUnmappedMode> {
350    public ConceptMapGroupUnmappedMode fromCode(String codeString) throws IllegalArgumentException {
351      if (codeString == null || "".equals(codeString))
352            if (codeString == null || "".equals(codeString))
353                return null;
354        if ("provided".equals(codeString))
355          return ConceptMapGroupUnmappedMode.PROVIDED;
356        if ("fixed".equals(codeString))
357          return ConceptMapGroupUnmappedMode.FIXED;
358        if ("other-map".equals(codeString))
359          return ConceptMapGroupUnmappedMode.OTHERMAP;
360        throw new IllegalArgumentException("Unknown ConceptMapGroupUnmappedMode code '"+codeString+"'");
361        }
362        public Enumeration<ConceptMapGroupUnmappedMode> fromType(Base code) throws FHIRException {
363          if (code == null)
364            return null;
365          if (code.isEmpty())
366            return new Enumeration<ConceptMapGroupUnmappedMode>(this);
367          String codeString = ((PrimitiveType) code).asStringValue();
368          if (codeString == null || "".equals(codeString))
369            return null;
370        if ("provided".equals(codeString))
371          return new Enumeration<ConceptMapGroupUnmappedMode>(this, ConceptMapGroupUnmappedMode.PROVIDED);
372        if ("fixed".equals(codeString))
373          return new Enumeration<ConceptMapGroupUnmappedMode>(this, ConceptMapGroupUnmappedMode.FIXED);
374        if ("other-map".equals(codeString))
375          return new Enumeration<ConceptMapGroupUnmappedMode>(this, ConceptMapGroupUnmappedMode.OTHERMAP);
376        throw new FHIRException("Unknown ConceptMapGroupUnmappedMode code '"+codeString+"'");
377        }
378    public String toCode(ConceptMapGroupUnmappedMode code) {
379      if (code == ConceptMapGroupUnmappedMode.PROVIDED)
380        return "provided";
381      if (code == ConceptMapGroupUnmappedMode.FIXED)
382        return "fixed";
383      if (code == ConceptMapGroupUnmappedMode.OTHERMAP)
384        return "other-map";
385      return "?";
386      }
387    public String toSystem(ConceptMapGroupUnmappedMode code) {
388      return code.getSystem();
389      }
390    }
391
392    @Block()
393    public static class ConceptMapGroupComponent extends BackboneElement implements IBaseBackboneElement {
394        /**
395         * An absolute URI that identifies the source system where the concepts to be mapped are defined.
396         */
397        @Child(name = "source", type = {UriType.class}, order=1, min=0, max=1, modifier=false, summary=false)
398        @Description(shortDefinition="Source system where concepts to be mapped are defined", formalDefinition="An absolute URI that identifies the source system where the concepts to be mapped are defined." )
399        protected UriType source;
400
401        /**
402         * The specific version of the code system, as determined by the code system authority.
403         */
404        @Child(name = "sourceVersion", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
405        @Description(shortDefinition="Specific version of the  code system", formalDefinition="The specific version of the code system, as determined by the code system authority." )
406        protected StringType sourceVersion;
407
408        /**
409         * An absolute URI that identifies the target system that the concepts will be mapped to.
410         */
411        @Child(name = "target", type = {UriType.class}, order=3, min=0, max=1, modifier=false, summary=false)
412        @Description(shortDefinition="Target system that the concepts are to be mapped to", formalDefinition="An absolute URI that identifies the target system that the concepts will be mapped to." )
413        protected UriType target;
414
415        /**
416         * The specific version of the code system, as determined by the code system authority.
417         */
418        @Child(name = "targetVersion", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
419        @Description(shortDefinition="Specific version of the  code system", formalDefinition="The specific version of the code system, as determined by the code system authority." )
420        protected StringType targetVersion;
421
422        /**
423         * Mappings for an individual concept in the source to one or more concepts in the target.
424         */
425        @Child(name = "element", type = {}, order=5, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
426        @Description(shortDefinition="Mappings for a concept from the source set", formalDefinition="Mappings for an individual concept in the source to one or more concepts in the target." )
427        protected List<SourceElementComponent> element;
428
429        /**
430         * What to do when there is no mapping for the source concept. "Unmapped" does not include codes that are unmatched, and the unmapped element is ignored in a code is specified to have equivalence = unmatched.
431         */
432        @Child(name = "unmapped", type = {}, order=6, min=0, max=1, modifier=false, summary=false)
433        @Description(shortDefinition="What to do when there is no mapping for the source concept", formalDefinition="What to do when there is no mapping for the source concept. \"Unmapped\" does not include codes that are unmatched, and the unmapped element is ignored in a code is specified to have equivalence = unmatched." )
434        protected ConceptMapGroupUnmappedComponent unmapped;
435
436        private static final long serialVersionUID = 1606357508L;
437
438    /**
439     * Constructor
440     */
441      public ConceptMapGroupComponent() {
442        super();
443      }
444
445    /**
446     * Constructor
447     */
448      public ConceptMapGroupComponent(SourceElementComponent element) {
449        super();
450        this.addElement(element);
451      }
452
453        /**
454         * @return {@link #source} (An absolute URI that identifies the source system where the concepts to be mapped are defined.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value
455         */
456        public UriType getSourceElement() { 
457          if (this.source == null)
458            if (Configuration.errorOnAutoCreate())
459              throw new Error("Attempt to auto-create ConceptMapGroupComponent.source");
460            else if (Configuration.doAutoCreate())
461              this.source = new UriType(); // bb
462          return this.source;
463        }
464
465        public boolean hasSourceElement() { 
466          return this.source != null && !this.source.isEmpty();
467        }
468
469        public boolean hasSource() { 
470          return this.source != null && !this.source.isEmpty();
471        }
472
473        /**
474         * @param value {@link #source} (An absolute URI that identifies the source system where the concepts to be mapped are defined.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value
475         */
476        public ConceptMapGroupComponent setSourceElement(UriType value) { 
477          this.source = value;
478          return this;
479        }
480
481        /**
482         * @return An absolute URI that identifies the source system where the concepts to be mapped are defined.
483         */
484        public String getSource() { 
485          return this.source == null ? null : this.source.getValue();
486        }
487
488        /**
489         * @param value An absolute URI that identifies the source system where the concepts to be mapped are defined.
490         */
491        public ConceptMapGroupComponent setSource(String value) { 
492          if (Utilities.noString(value))
493            this.source = null;
494          else {
495            if (this.source == null)
496              this.source = new UriType();
497            this.source.setValue(value);
498          }
499          return this;
500        }
501
502        /**
503         * @return {@link #sourceVersion} (The specific version of the code system, as determined by the code system authority.). This is the underlying object with id, value and extensions. The accessor "getSourceVersion" gives direct access to the value
504         */
505        public StringType getSourceVersionElement() { 
506          if (this.sourceVersion == null)
507            if (Configuration.errorOnAutoCreate())
508              throw new Error("Attempt to auto-create ConceptMapGroupComponent.sourceVersion");
509            else if (Configuration.doAutoCreate())
510              this.sourceVersion = new StringType(); // bb
511          return this.sourceVersion;
512        }
513
514        public boolean hasSourceVersionElement() { 
515          return this.sourceVersion != null && !this.sourceVersion.isEmpty();
516        }
517
518        public boolean hasSourceVersion() { 
519          return this.sourceVersion != null && !this.sourceVersion.isEmpty();
520        }
521
522        /**
523         * @param value {@link #sourceVersion} (The specific version of the code system, as determined by the code system authority.). This is the underlying object with id, value and extensions. The accessor "getSourceVersion" gives direct access to the value
524         */
525        public ConceptMapGroupComponent setSourceVersionElement(StringType value) { 
526          this.sourceVersion = value;
527          return this;
528        }
529
530        /**
531         * @return The specific version of the code system, as determined by the code system authority.
532         */
533        public String getSourceVersion() { 
534          return this.sourceVersion == null ? null : this.sourceVersion.getValue();
535        }
536
537        /**
538         * @param value The specific version of the code system, as determined by the code system authority.
539         */
540        public ConceptMapGroupComponent setSourceVersion(String value) { 
541          if (Utilities.noString(value))
542            this.sourceVersion = null;
543          else {
544            if (this.sourceVersion == null)
545              this.sourceVersion = new StringType();
546            this.sourceVersion.setValue(value);
547          }
548          return this;
549        }
550
551        /**
552         * @return {@link #target} (An absolute URI that identifies the target system that the concepts will be mapped to.). This is the underlying object with id, value and extensions. The accessor "getTarget" gives direct access to the value
553         */
554        public UriType getTargetElement() { 
555          if (this.target == null)
556            if (Configuration.errorOnAutoCreate())
557              throw new Error("Attempt to auto-create ConceptMapGroupComponent.target");
558            else if (Configuration.doAutoCreate())
559              this.target = new UriType(); // bb
560          return this.target;
561        }
562
563        public boolean hasTargetElement() { 
564          return this.target != null && !this.target.isEmpty();
565        }
566
567        public boolean hasTarget() { 
568          return this.target != null && !this.target.isEmpty();
569        }
570
571        /**
572         * @param value {@link #target} (An absolute URI that identifies the target system that the concepts will be mapped to.). This is the underlying object with id, value and extensions. The accessor "getTarget" gives direct access to the value
573         */
574        public ConceptMapGroupComponent setTargetElement(UriType value) { 
575          this.target = value;
576          return this;
577        }
578
579        /**
580         * @return An absolute URI that identifies the target system that the concepts will be mapped to.
581         */
582        public String getTarget() { 
583          return this.target == null ? null : this.target.getValue();
584        }
585
586        /**
587         * @param value An absolute URI that identifies the target system that the concepts will be mapped to.
588         */
589        public ConceptMapGroupComponent setTarget(String value) { 
590          if (Utilities.noString(value))
591            this.target = null;
592          else {
593            if (this.target == null)
594              this.target = new UriType();
595            this.target.setValue(value);
596          }
597          return this;
598        }
599
600        /**
601         * @return {@link #targetVersion} (The specific version of the code system, as determined by the code system authority.). This is the underlying object with id, value and extensions. The accessor "getTargetVersion" gives direct access to the value
602         */
603        public StringType getTargetVersionElement() { 
604          if (this.targetVersion == null)
605            if (Configuration.errorOnAutoCreate())
606              throw new Error("Attempt to auto-create ConceptMapGroupComponent.targetVersion");
607            else if (Configuration.doAutoCreate())
608              this.targetVersion = new StringType(); // bb
609          return this.targetVersion;
610        }
611
612        public boolean hasTargetVersionElement() { 
613          return this.targetVersion != null && !this.targetVersion.isEmpty();
614        }
615
616        public boolean hasTargetVersion() { 
617          return this.targetVersion != null && !this.targetVersion.isEmpty();
618        }
619
620        /**
621         * @param value {@link #targetVersion} (The specific version of the code system, as determined by the code system authority.). This is the underlying object with id, value and extensions. The accessor "getTargetVersion" gives direct access to the value
622         */
623        public ConceptMapGroupComponent setTargetVersionElement(StringType value) { 
624          this.targetVersion = value;
625          return this;
626        }
627
628        /**
629         * @return The specific version of the code system, as determined by the code system authority.
630         */
631        public String getTargetVersion() { 
632          return this.targetVersion == null ? null : this.targetVersion.getValue();
633        }
634
635        /**
636         * @param value The specific version of the code system, as determined by the code system authority.
637         */
638        public ConceptMapGroupComponent setTargetVersion(String value) { 
639          if (Utilities.noString(value))
640            this.targetVersion = null;
641          else {
642            if (this.targetVersion == null)
643              this.targetVersion = new StringType();
644            this.targetVersion.setValue(value);
645          }
646          return this;
647        }
648
649        /**
650         * @return {@link #element} (Mappings for an individual concept in the source to one or more concepts in the target.)
651         */
652        public List<SourceElementComponent> getElement() { 
653          if (this.element == null)
654            this.element = new ArrayList<SourceElementComponent>();
655          return this.element;
656        }
657
658        /**
659         * @return Returns a reference to <code>this</code> for easy method chaining
660         */
661        public ConceptMapGroupComponent setElement(List<SourceElementComponent> theElement) { 
662          this.element = theElement;
663          return this;
664        }
665
666        public boolean hasElement() { 
667          if (this.element == null)
668            return false;
669          for (SourceElementComponent item : this.element)
670            if (!item.isEmpty())
671              return true;
672          return false;
673        }
674
675        public SourceElementComponent addElement() { //3
676          SourceElementComponent t = new SourceElementComponent();
677          if (this.element == null)
678            this.element = new ArrayList<SourceElementComponent>();
679          this.element.add(t);
680          return t;
681        }
682
683        public ConceptMapGroupComponent addElement(SourceElementComponent t) { //3
684          if (t == null)
685            return this;
686          if (this.element == null)
687            this.element = new ArrayList<SourceElementComponent>();
688          this.element.add(t);
689          return this;
690        }
691
692        /**
693         * @return The first repetition of repeating field {@link #element}, creating it if it does not already exist {3}
694         */
695        public SourceElementComponent getElementFirstRep() { 
696          if (getElement().isEmpty()) {
697            addElement();
698          }
699          return getElement().get(0);
700        }
701
702        /**
703         * @return {@link #unmapped} (What to do when there is no mapping for the source concept. "Unmapped" does not include codes that are unmatched, and the unmapped element is ignored in a code is specified to have equivalence = unmatched.)
704         */
705        public ConceptMapGroupUnmappedComponent getUnmapped() { 
706          if (this.unmapped == null)
707            if (Configuration.errorOnAutoCreate())
708              throw new Error("Attempt to auto-create ConceptMapGroupComponent.unmapped");
709            else if (Configuration.doAutoCreate())
710              this.unmapped = new ConceptMapGroupUnmappedComponent(); // cc
711          return this.unmapped;
712        }
713
714        public boolean hasUnmapped() { 
715          return this.unmapped != null && !this.unmapped.isEmpty();
716        }
717
718        /**
719         * @param value {@link #unmapped} (What to do when there is no mapping for the source concept. "Unmapped" does not include codes that are unmatched, and the unmapped element is ignored in a code is specified to have equivalence = unmatched.)
720         */
721        public ConceptMapGroupComponent setUnmapped(ConceptMapGroupUnmappedComponent value) { 
722          this.unmapped = value;
723          return this;
724        }
725
726        protected void listChildren(List<Property> children) {
727          super.listChildren(children);
728          children.add(new Property("source", "uri", "An absolute URI that identifies the source system where the concepts to be mapped are defined.", 0, 1, source));
729          children.add(new Property("sourceVersion", "string", "The specific version of the code system, as determined by the code system authority.", 0, 1, sourceVersion));
730          children.add(new Property("target", "uri", "An absolute URI that identifies the target system that the concepts will be mapped to.", 0, 1, target));
731          children.add(new Property("targetVersion", "string", "The specific version of the code system, as determined by the code system authority.", 0, 1, targetVersion));
732          children.add(new Property("element", "", "Mappings for an individual concept in the source to one or more concepts in the target.", 0, java.lang.Integer.MAX_VALUE, element));
733          children.add(new Property("unmapped", "", "What to do when there is no mapping for the source concept. \"Unmapped\" does not include codes that are unmatched, and the unmapped element is ignored in a code is specified to have equivalence = unmatched.", 0, 1, unmapped));
734        }
735
736        @Override
737        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
738          switch (_hash) {
739          case -896505829: /*source*/  return new Property("source", "uri", "An absolute URI that identifies the source system where the concepts to be mapped are defined.", 0, 1, source);
740          case 446171197: /*sourceVersion*/  return new Property("sourceVersion", "string", "The specific version of the code system, as determined by the code system authority.", 0, 1, sourceVersion);
741          case -880905839: /*target*/  return new Property("target", "uri", "An absolute URI that identifies the target system that the concepts will be mapped to.", 0, 1, target);
742          case -1639412217: /*targetVersion*/  return new Property("targetVersion", "string", "The specific version of the code system, as determined by the code system authority.", 0, 1, targetVersion);
743          case -1662836996: /*element*/  return new Property("element", "", "Mappings for an individual concept in the source to one or more concepts in the target.", 0, java.lang.Integer.MAX_VALUE, element);
744          case -194857460: /*unmapped*/  return new Property("unmapped", "", "What to do when there is no mapping for the source concept. \"Unmapped\" does not include codes that are unmatched, and the unmapped element is ignored in a code is specified to have equivalence = unmatched.", 0, 1, unmapped);
745          default: return super.getNamedProperty(_hash, _name, _checkValid);
746          }
747
748        }
749
750      @Override
751      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
752        switch (hash) {
753        case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // UriType
754        case 446171197: /*sourceVersion*/ return this.sourceVersion == null ? new Base[0] : new Base[] {this.sourceVersion}; // StringType
755        case -880905839: /*target*/ return this.target == null ? new Base[0] : new Base[] {this.target}; // UriType
756        case -1639412217: /*targetVersion*/ return this.targetVersion == null ? new Base[0] : new Base[] {this.targetVersion}; // StringType
757        case -1662836996: /*element*/ return this.element == null ? new Base[0] : this.element.toArray(new Base[this.element.size()]); // SourceElementComponent
758        case -194857460: /*unmapped*/ return this.unmapped == null ? new Base[0] : new Base[] {this.unmapped}; // ConceptMapGroupUnmappedComponent
759        default: return super.getProperty(hash, name, checkValid);
760        }
761
762      }
763
764      @Override
765      public Base setProperty(int hash, String name, Base value) throws FHIRException {
766        switch (hash) {
767        case -896505829: // source
768          this.source = TypeConvertor.castToUri(value); // UriType
769          return value;
770        case 446171197: // sourceVersion
771          this.sourceVersion = TypeConvertor.castToString(value); // StringType
772          return value;
773        case -880905839: // target
774          this.target = TypeConvertor.castToUri(value); // UriType
775          return value;
776        case -1639412217: // targetVersion
777          this.targetVersion = TypeConvertor.castToString(value); // StringType
778          return value;
779        case -1662836996: // element
780          this.getElement().add((SourceElementComponent) value); // SourceElementComponent
781          return value;
782        case -194857460: // unmapped
783          this.unmapped = (ConceptMapGroupUnmappedComponent) value; // ConceptMapGroupUnmappedComponent
784          return value;
785        default: return super.setProperty(hash, name, value);
786        }
787
788      }
789
790      @Override
791      public Base setProperty(String name, Base value) throws FHIRException {
792        if (name.equals("source")) {
793          this.source = TypeConvertor.castToUri(value); // UriType
794        } else if (name.equals("sourceVersion")) {
795          this.sourceVersion = TypeConvertor.castToString(value); // StringType
796        } else if (name.equals("target")) {
797          this.target = TypeConvertor.castToUri(value); // UriType
798        } else if (name.equals("targetVersion")) {
799          this.targetVersion = TypeConvertor.castToString(value); // StringType
800        } else if (name.equals("element")) {
801          this.getElement().add((SourceElementComponent) value);
802        } else if (name.equals("unmapped")) {
803          this.unmapped = (ConceptMapGroupUnmappedComponent) value; // ConceptMapGroupUnmappedComponent
804        } else
805          return super.setProperty(name, value);
806        return value;
807      }
808
809      @Override
810      public Base makeProperty(int hash, String name) throws FHIRException {
811        switch (hash) {
812        case -896505829:  return getSourceElement();
813        case 446171197:  return getSourceVersionElement();
814        case -880905839:  return getTargetElement();
815        case -1639412217:  return getTargetVersionElement();
816        case -1662836996:  return addElement(); 
817        case -194857460:  return getUnmapped();
818        default: return super.makeProperty(hash, name);
819        }
820
821      }
822
823      @Override
824      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
825        switch (hash) {
826        case -896505829: /*source*/ return new String[] {"uri"};
827        case 446171197: /*sourceVersion*/ return new String[] {"string"};
828        case -880905839: /*target*/ return new String[] {"uri"};
829        case -1639412217: /*targetVersion*/ return new String[] {"string"};
830        case -1662836996: /*element*/ return new String[] {};
831        case -194857460: /*unmapped*/ return new String[] {};
832        default: return super.getTypesForProperty(hash, name);
833        }
834
835      }
836
837      @Override
838      public Base addChild(String name) throws FHIRException {
839        if (name.equals("source")) {
840          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.source");
841        }
842        else if (name.equals("sourceVersion")) {
843          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.sourceVersion");
844        }
845        else if (name.equals("target")) {
846          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.target");
847        }
848        else if (name.equals("targetVersion")) {
849          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.targetVersion");
850        }
851        else if (name.equals("element")) {
852          return addElement();
853        }
854        else if (name.equals("unmapped")) {
855          this.unmapped = new ConceptMapGroupUnmappedComponent();
856          return this.unmapped;
857        }
858        else
859          return super.addChild(name);
860      }
861
862      public ConceptMapGroupComponent copy() {
863        ConceptMapGroupComponent dst = new ConceptMapGroupComponent();
864        copyValues(dst);
865        return dst;
866      }
867
868      public void copyValues(ConceptMapGroupComponent dst) {
869        super.copyValues(dst);
870        dst.source = source == null ? null : source.copy();
871        dst.sourceVersion = sourceVersion == null ? null : sourceVersion.copy();
872        dst.target = target == null ? null : target.copy();
873        dst.targetVersion = targetVersion == null ? null : targetVersion.copy();
874        if (element != null) {
875          dst.element = new ArrayList<SourceElementComponent>();
876          for (SourceElementComponent i : element)
877            dst.element.add(i.copy());
878        };
879        dst.unmapped = unmapped == null ? null : unmapped.copy();
880      }
881
882      @Override
883      public boolean equalsDeep(Base other_) {
884        if (!super.equalsDeep(other_))
885          return false;
886        if (!(other_ instanceof ConceptMapGroupComponent))
887          return false;
888        ConceptMapGroupComponent o = (ConceptMapGroupComponent) other_;
889        return compareDeep(source, o.source, true) && compareDeep(sourceVersion, o.sourceVersion, true)
890           && compareDeep(target, o.target, true) && compareDeep(targetVersion, o.targetVersion, true) && compareDeep(element, o.element, true)
891           && compareDeep(unmapped, o.unmapped, true);
892      }
893
894      @Override
895      public boolean equalsShallow(Base other_) {
896        if (!super.equalsShallow(other_))
897          return false;
898        if (!(other_ instanceof ConceptMapGroupComponent))
899          return false;
900        ConceptMapGroupComponent o = (ConceptMapGroupComponent) other_;
901        return compareValues(source, o.source, true) && compareValues(sourceVersion, o.sourceVersion, true)
902           && compareValues(target, o.target, true) && compareValues(targetVersion, o.targetVersion, true);
903      }
904
905      public boolean isEmpty() {
906        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(source, sourceVersion, target
907          , targetVersion, element, unmapped);
908      }
909
910  public String fhirType() {
911    return "ConceptMap.group";
912
913  }
914
915  }
916
917    @Block()
918    public static class SourceElementComponent extends BackboneElement implements IBaseBackboneElement {
919        /**
920         * Identity (code or path) or the element/item being mapped.
921         */
922        @Child(name = "code", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
923        @Description(shortDefinition="Identifies element being mapped", formalDefinition="Identity (code or path) or the element/item being mapped." )
924        protected CodeType code;
925
926        /**
927         * The display for the code. The display is only provided to help editors when editing the concept map.
928         */
929        @Child(name = "display", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
930        @Description(shortDefinition="Display for the code", formalDefinition="The display for the code. The display is only provided to help editors when editing the concept map." )
931        protected StringType display;
932
933        /**
934         * A concept from the target value set that this concept maps to.
935         */
936        @Child(name = "target", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
937        @Description(shortDefinition="Concept in target system for element", formalDefinition="A concept from the target value set that this concept maps to." )
938        protected List<TargetElementComponent> target;
939
940        private static final long serialVersionUID = -1115258852L;
941
942    /**
943     * Constructor
944     */
945      public SourceElementComponent() {
946        super();
947      }
948
949        /**
950         * @return {@link #code} (Identity (code or path) or the element/item being mapped.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
951         */
952        public CodeType getCodeElement() { 
953          if (this.code == null)
954            if (Configuration.errorOnAutoCreate())
955              throw new Error("Attempt to auto-create SourceElementComponent.code");
956            else if (Configuration.doAutoCreate())
957              this.code = new CodeType(); // bb
958          return this.code;
959        }
960
961        public boolean hasCodeElement() { 
962          return this.code != null && !this.code.isEmpty();
963        }
964
965        public boolean hasCode() { 
966          return this.code != null && !this.code.isEmpty();
967        }
968
969        /**
970         * @param value {@link #code} (Identity (code or path) or the element/item being mapped.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
971         */
972        public SourceElementComponent setCodeElement(CodeType value) { 
973          this.code = value;
974          return this;
975        }
976
977        /**
978         * @return Identity (code or path) or the element/item being mapped.
979         */
980        public String getCode() { 
981          return this.code == null ? null : this.code.getValue();
982        }
983
984        /**
985         * @param value Identity (code or path) or the element/item being mapped.
986         */
987        public SourceElementComponent setCode(String value) { 
988          if (Utilities.noString(value))
989            this.code = null;
990          else {
991            if (this.code == null)
992              this.code = new CodeType();
993            this.code.setValue(value);
994          }
995          return this;
996        }
997
998        /**
999         * @return {@link #display} (The display for the code. The display is only provided to help editors when editing the concept map.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
1000         */
1001        public StringType getDisplayElement() { 
1002          if (this.display == null)
1003            if (Configuration.errorOnAutoCreate())
1004              throw new Error("Attempt to auto-create SourceElementComponent.display");
1005            else if (Configuration.doAutoCreate())
1006              this.display = new StringType(); // bb
1007          return this.display;
1008        }
1009
1010        public boolean hasDisplayElement() { 
1011          return this.display != null && !this.display.isEmpty();
1012        }
1013
1014        public boolean hasDisplay() { 
1015          return this.display != null && !this.display.isEmpty();
1016        }
1017
1018        /**
1019         * @param value {@link #display} (The display for the code. The display is only provided to help editors when editing the concept map.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
1020         */
1021        public SourceElementComponent setDisplayElement(StringType value) { 
1022          this.display = value;
1023          return this;
1024        }
1025
1026        /**
1027         * @return The display for the code. The display is only provided to help editors when editing the concept map.
1028         */
1029        public String getDisplay() { 
1030          return this.display == null ? null : this.display.getValue();
1031        }
1032
1033        /**
1034         * @param value The display for the code. The display is only provided to help editors when editing the concept map.
1035         */
1036        public SourceElementComponent setDisplay(String value) { 
1037          if (Utilities.noString(value))
1038            this.display = null;
1039          else {
1040            if (this.display == null)
1041              this.display = new StringType();
1042            this.display.setValue(value);
1043          }
1044          return this;
1045        }
1046
1047        /**
1048         * @return {@link #target} (A concept from the target value set that this concept maps to.)
1049         */
1050        public List<TargetElementComponent> getTarget() { 
1051          if (this.target == null)
1052            this.target = new ArrayList<TargetElementComponent>();
1053          return this.target;
1054        }
1055
1056        /**
1057         * @return Returns a reference to <code>this</code> for easy method chaining
1058         */
1059        public SourceElementComponent setTarget(List<TargetElementComponent> theTarget) { 
1060          this.target = theTarget;
1061          return this;
1062        }
1063
1064        public boolean hasTarget() { 
1065          if (this.target == null)
1066            return false;
1067          for (TargetElementComponent item : this.target)
1068            if (!item.isEmpty())
1069              return true;
1070          return false;
1071        }
1072
1073        public TargetElementComponent addTarget() { //3
1074          TargetElementComponent t = new TargetElementComponent();
1075          if (this.target == null)
1076            this.target = new ArrayList<TargetElementComponent>();
1077          this.target.add(t);
1078          return t;
1079        }
1080
1081        public SourceElementComponent addTarget(TargetElementComponent t) { //3
1082          if (t == null)
1083            return this;
1084          if (this.target == null)
1085            this.target = new ArrayList<TargetElementComponent>();
1086          this.target.add(t);
1087          return this;
1088        }
1089
1090        /**
1091         * @return The first repetition of repeating field {@link #target}, creating it if it does not already exist {3}
1092         */
1093        public TargetElementComponent getTargetFirstRep() { 
1094          if (getTarget().isEmpty()) {
1095            addTarget();
1096          }
1097          return getTarget().get(0);
1098        }
1099
1100        protected void listChildren(List<Property> children) {
1101          super.listChildren(children);
1102          children.add(new Property("code", "code", "Identity (code or path) or the element/item being mapped.", 0, 1, code));
1103          children.add(new Property("display", "string", "The display for the code. The display is only provided to help editors when editing the concept map.", 0, 1, display));
1104          children.add(new Property("target", "", "A concept from the target value set that this concept maps to.", 0, java.lang.Integer.MAX_VALUE, target));
1105        }
1106
1107        @Override
1108        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1109          switch (_hash) {
1110          case 3059181: /*code*/  return new Property("code", "code", "Identity (code or path) or the element/item being mapped.", 0, 1, code);
1111          case 1671764162: /*display*/  return new Property("display", "string", "The display for the code. The display is only provided to help editors when editing the concept map.", 0, 1, display);
1112          case -880905839: /*target*/  return new Property("target", "", "A concept from the target value set that this concept maps to.", 0, java.lang.Integer.MAX_VALUE, target);
1113          default: return super.getNamedProperty(_hash, _name, _checkValid);
1114          }
1115
1116        }
1117
1118      @Override
1119      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1120        switch (hash) {
1121        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
1122        case 1671764162: /*display*/ return this.display == null ? new Base[0] : new Base[] {this.display}; // StringType
1123        case -880905839: /*target*/ return this.target == null ? new Base[0] : this.target.toArray(new Base[this.target.size()]); // TargetElementComponent
1124        default: return super.getProperty(hash, name, checkValid);
1125        }
1126
1127      }
1128
1129      @Override
1130      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1131        switch (hash) {
1132        case 3059181: // code
1133          this.code = TypeConvertor.castToCode(value); // CodeType
1134          return value;
1135        case 1671764162: // display
1136          this.display = TypeConvertor.castToString(value); // StringType
1137          return value;
1138        case -880905839: // target
1139          this.getTarget().add((TargetElementComponent) value); // TargetElementComponent
1140          return value;
1141        default: return super.setProperty(hash, name, value);
1142        }
1143
1144      }
1145
1146      @Override
1147      public Base setProperty(String name, Base value) throws FHIRException {
1148        if (name.equals("code")) {
1149          this.code = TypeConvertor.castToCode(value); // CodeType
1150        } else if (name.equals("display")) {
1151          this.display = TypeConvertor.castToString(value); // StringType
1152        } else if (name.equals("target")) {
1153          this.getTarget().add((TargetElementComponent) value);
1154        } else
1155          return super.setProperty(name, value);
1156        return value;
1157      }
1158
1159      @Override
1160      public Base makeProperty(int hash, String name) throws FHIRException {
1161        switch (hash) {
1162        case 3059181:  return getCodeElement();
1163        case 1671764162:  return getDisplayElement();
1164        case -880905839:  return addTarget(); 
1165        default: return super.makeProperty(hash, name);
1166        }
1167
1168      }
1169
1170      @Override
1171      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1172        switch (hash) {
1173        case 3059181: /*code*/ return new String[] {"code"};
1174        case 1671764162: /*display*/ return new String[] {"string"};
1175        case -880905839: /*target*/ return new String[] {};
1176        default: return super.getTypesForProperty(hash, name);
1177        }
1178
1179      }
1180
1181      @Override
1182      public Base addChild(String name) throws FHIRException {
1183        if (name.equals("code")) {
1184          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.code");
1185        }
1186        else if (name.equals("display")) {
1187          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.display");
1188        }
1189        else if (name.equals("target")) {
1190          return addTarget();
1191        }
1192        else
1193          return super.addChild(name);
1194      }
1195
1196      public SourceElementComponent copy() {
1197        SourceElementComponent dst = new SourceElementComponent();
1198        copyValues(dst);
1199        return dst;
1200      }
1201
1202      public void copyValues(SourceElementComponent dst) {
1203        super.copyValues(dst);
1204        dst.code = code == null ? null : code.copy();
1205        dst.display = display == null ? null : display.copy();
1206        if (target != null) {
1207          dst.target = new ArrayList<TargetElementComponent>();
1208          for (TargetElementComponent i : target)
1209            dst.target.add(i.copy());
1210        };
1211      }
1212
1213      @Override
1214      public boolean equalsDeep(Base other_) {
1215        if (!super.equalsDeep(other_))
1216          return false;
1217        if (!(other_ instanceof SourceElementComponent))
1218          return false;
1219        SourceElementComponent o = (SourceElementComponent) other_;
1220        return compareDeep(code, o.code, true) && compareDeep(display, o.display, true) && compareDeep(target, o.target, true)
1221          ;
1222      }
1223
1224      @Override
1225      public boolean equalsShallow(Base other_) {
1226        if (!super.equalsShallow(other_))
1227          return false;
1228        if (!(other_ instanceof SourceElementComponent))
1229          return false;
1230        SourceElementComponent o = (SourceElementComponent) other_;
1231        return compareValues(code, o.code, true) && compareValues(display, o.display, true);
1232      }
1233
1234      public boolean isEmpty() {
1235        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, display, target);
1236      }
1237
1238  public String fhirType() {
1239    return "ConceptMap.group.element";
1240
1241  }
1242
1243  }
1244
1245    @Block()
1246    public static class TargetElementComponent extends BackboneElement implements IBaseBackboneElement {
1247        /**
1248         * Identity (code or path) or the element/item that the map refers to.
1249         */
1250        @Child(name = "code", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=false)
1251        @Description(shortDefinition="Code that identifies the target element", formalDefinition="Identity (code or path) or the element/item that the map refers to." )
1252        protected CodeType code;
1253
1254        /**
1255         * The display for the code. The display is only provided to help editors when editing the concept map.
1256         */
1257        @Child(name = "display", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1258        @Description(shortDefinition="Display for the code", formalDefinition="The display for the code. The display is only provided to help editors when editing the concept map." )
1259        protected StringType display;
1260
1261        /**
1262         * The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source).
1263         */
1264        @Child(name = "equivalence", type = {CodeType.class}, order=3, min=1, max=1, modifier=true, summary=false)
1265        @Description(shortDefinition="relatedto | equivalent | equal | wider | subsumes | narrower | specializes | inexact | unmatched | disjoint", formalDefinition="The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source)." )
1266        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/concept-map-equivalence")
1267        protected Enumeration<ConceptMapEquivalence> equivalence;
1268
1269        /**
1270         * A description of status/issues in mapping that conveys additional information not represented in  the structured data.
1271         */
1272        @Child(name = "comment", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
1273        @Description(shortDefinition="Description of status/issues in mapping", formalDefinition="A description of status/issues in mapping that conveys additional information not represented in  the structured data." )
1274        protected StringType comment;
1275
1276        /**
1277         * A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value.
1278         */
1279        @Child(name = "dependsOn", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1280        @Description(shortDefinition="Other elements required for this mapping (from context)", formalDefinition="A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value." )
1281        protected List<OtherElementComponent> dependsOn;
1282
1283        /**
1284         * A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on.
1285         */
1286        @Child(name = "product", type = {OtherElementComponent.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1287        @Description(shortDefinition="Other concepts that this mapping also produces", formalDefinition="A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on." )
1288        protected List<OtherElementComponent> product;
1289
1290        private static final long serialVersionUID = -2008997477L;
1291
1292    /**
1293     * Constructor
1294     */
1295      public TargetElementComponent() {
1296        super();
1297      }
1298
1299    /**
1300     * Constructor
1301     */
1302      public TargetElementComponent(ConceptMapEquivalence equivalence) {
1303        super();
1304        this.setEquivalence(equivalence);
1305      }
1306
1307        /**
1308         * @return {@link #code} (Identity (code or path) or the element/item that the map refers to.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1309         */
1310        public CodeType getCodeElement() { 
1311          if (this.code == null)
1312            if (Configuration.errorOnAutoCreate())
1313              throw new Error("Attempt to auto-create TargetElementComponent.code");
1314            else if (Configuration.doAutoCreate())
1315              this.code = new CodeType(); // bb
1316          return this.code;
1317        }
1318
1319        public boolean hasCodeElement() { 
1320          return this.code != null && !this.code.isEmpty();
1321        }
1322
1323        public boolean hasCode() { 
1324          return this.code != null && !this.code.isEmpty();
1325        }
1326
1327        /**
1328         * @param value {@link #code} (Identity (code or path) or the element/item that the map refers to.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
1329         */
1330        public TargetElementComponent setCodeElement(CodeType value) { 
1331          this.code = value;
1332          return this;
1333        }
1334
1335        /**
1336         * @return Identity (code or path) or the element/item that the map refers to.
1337         */
1338        public String getCode() { 
1339          return this.code == null ? null : this.code.getValue();
1340        }
1341
1342        /**
1343         * @param value Identity (code or path) or the element/item that the map refers to.
1344         */
1345        public TargetElementComponent setCode(String value) { 
1346          if (Utilities.noString(value))
1347            this.code = null;
1348          else {
1349            if (this.code == null)
1350              this.code = new CodeType();
1351            this.code.setValue(value);
1352          }
1353          return this;
1354        }
1355
1356        /**
1357         * @return {@link #display} (The display for the code. The display is only provided to help editors when editing the concept map.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
1358         */
1359        public StringType getDisplayElement() { 
1360          if (this.display == null)
1361            if (Configuration.errorOnAutoCreate())
1362              throw new Error("Attempt to auto-create TargetElementComponent.display");
1363            else if (Configuration.doAutoCreate())
1364              this.display = new StringType(); // bb
1365          return this.display;
1366        }
1367
1368        public boolean hasDisplayElement() { 
1369          return this.display != null && !this.display.isEmpty();
1370        }
1371
1372        public boolean hasDisplay() { 
1373          return this.display != null && !this.display.isEmpty();
1374        }
1375
1376        /**
1377         * @param value {@link #display} (The display for the code. The display is only provided to help editors when editing the concept map.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
1378         */
1379        public TargetElementComponent setDisplayElement(StringType value) { 
1380          this.display = value;
1381          return this;
1382        }
1383
1384        /**
1385         * @return The display for the code. The display is only provided to help editors when editing the concept map.
1386         */
1387        public String getDisplay() { 
1388          return this.display == null ? null : this.display.getValue();
1389        }
1390
1391        /**
1392         * @param value The display for the code. The display is only provided to help editors when editing the concept map.
1393         */
1394        public TargetElementComponent setDisplay(String value) { 
1395          if (Utilities.noString(value))
1396            this.display = null;
1397          else {
1398            if (this.display == null)
1399              this.display = new StringType();
1400            this.display.setValue(value);
1401          }
1402          return this;
1403        }
1404
1405        /**
1406         * @return {@link #equivalence} (The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source).). This is the underlying object with id, value and extensions. The accessor "getEquivalence" gives direct access to the value
1407         */
1408        public Enumeration<ConceptMapEquivalence> getEquivalenceElement() { 
1409          if (this.equivalence == null)
1410            if (Configuration.errorOnAutoCreate())
1411              throw new Error("Attempt to auto-create TargetElementComponent.equivalence");
1412            else if (Configuration.doAutoCreate())
1413              this.equivalence = new Enumeration<ConceptMapEquivalence>(new ConceptMapEquivalenceEnumFactory()); // bb
1414          return this.equivalence;
1415        }
1416
1417        public boolean hasEquivalenceElement() { 
1418          return this.equivalence != null && !this.equivalence.isEmpty();
1419        }
1420
1421        public boolean hasEquivalence() { 
1422          return this.equivalence != null && !this.equivalence.isEmpty();
1423        }
1424
1425        /**
1426         * @param value {@link #equivalence} (The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source).). This is the underlying object with id, value and extensions. The accessor "getEquivalence" gives direct access to the value
1427         */
1428        public TargetElementComponent setEquivalenceElement(Enumeration<ConceptMapEquivalence> value) { 
1429          this.equivalence = value;
1430          return this;
1431        }
1432
1433        /**
1434         * @return The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source).
1435         */
1436        public ConceptMapEquivalence getEquivalence() { 
1437          return this.equivalence == null ? null : this.equivalence.getValue();
1438        }
1439
1440        /**
1441         * @param value The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source).
1442         */
1443        public TargetElementComponent setEquivalence(ConceptMapEquivalence value) { 
1444            if (this.equivalence == null)
1445              this.equivalence = new Enumeration<ConceptMapEquivalence>(new ConceptMapEquivalenceEnumFactory());
1446            this.equivalence.setValue(value);
1447          return this;
1448        }
1449
1450        /**
1451         * @return {@link #comment} (A description of status/issues in mapping that conveys additional information not represented in  the structured data.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
1452         */
1453        public StringType getCommentElement() { 
1454          if (this.comment == null)
1455            if (Configuration.errorOnAutoCreate())
1456              throw new Error("Attempt to auto-create TargetElementComponent.comment");
1457            else if (Configuration.doAutoCreate())
1458              this.comment = new StringType(); // bb
1459          return this.comment;
1460        }
1461
1462        public boolean hasCommentElement() { 
1463          return this.comment != null && !this.comment.isEmpty();
1464        }
1465
1466        public boolean hasComment() { 
1467          return this.comment != null && !this.comment.isEmpty();
1468        }
1469
1470        /**
1471         * @param value {@link #comment} (A description of status/issues in mapping that conveys additional information not represented in  the structured data.). This is the underlying object with id, value and extensions. The accessor "getComment" gives direct access to the value
1472         */
1473        public TargetElementComponent setCommentElement(StringType value) { 
1474          this.comment = value;
1475          return this;
1476        }
1477
1478        /**
1479         * @return A description of status/issues in mapping that conveys additional information not represented in  the structured data.
1480         */
1481        public String getComment() { 
1482          return this.comment == null ? null : this.comment.getValue();
1483        }
1484
1485        /**
1486         * @param value A description of status/issues in mapping that conveys additional information not represented in  the structured data.
1487         */
1488        public TargetElementComponent setComment(String value) { 
1489          if (Utilities.noString(value))
1490            this.comment = null;
1491          else {
1492            if (this.comment == null)
1493              this.comment = new StringType();
1494            this.comment.setValue(value);
1495          }
1496          return this;
1497        }
1498
1499        /**
1500         * @return {@link #dependsOn} (A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value.)
1501         */
1502        public List<OtherElementComponent> getDependsOn() { 
1503          if (this.dependsOn == null)
1504            this.dependsOn = new ArrayList<OtherElementComponent>();
1505          return this.dependsOn;
1506        }
1507
1508        /**
1509         * @return Returns a reference to <code>this</code> for easy method chaining
1510         */
1511        public TargetElementComponent setDependsOn(List<OtherElementComponent> theDependsOn) { 
1512          this.dependsOn = theDependsOn;
1513          return this;
1514        }
1515
1516        public boolean hasDependsOn() { 
1517          if (this.dependsOn == null)
1518            return false;
1519          for (OtherElementComponent item : this.dependsOn)
1520            if (!item.isEmpty())
1521              return true;
1522          return false;
1523        }
1524
1525        public OtherElementComponent addDependsOn() { //3
1526          OtherElementComponent t = new OtherElementComponent();
1527          if (this.dependsOn == null)
1528            this.dependsOn = new ArrayList<OtherElementComponent>();
1529          this.dependsOn.add(t);
1530          return t;
1531        }
1532
1533        public TargetElementComponent addDependsOn(OtherElementComponent t) { //3
1534          if (t == null)
1535            return this;
1536          if (this.dependsOn == null)
1537            this.dependsOn = new ArrayList<OtherElementComponent>();
1538          this.dependsOn.add(t);
1539          return this;
1540        }
1541
1542        /**
1543         * @return The first repetition of repeating field {@link #dependsOn}, creating it if it does not already exist {3}
1544         */
1545        public OtherElementComponent getDependsOnFirstRep() { 
1546          if (getDependsOn().isEmpty()) {
1547            addDependsOn();
1548          }
1549          return getDependsOn().get(0);
1550        }
1551
1552        /**
1553         * @return {@link #product} (A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on.)
1554         */
1555        public List<OtherElementComponent> getProduct() { 
1556          if (this.product == null)
1557            this.product = new ArrayList<OtherElementComponent>();
1558          return this.product;
1559        }
1560
1561        /**
1562         * @return Returns a reference to <code>this</code> for easy method chaining
1563         */
1564        public TargetElementComponent setProduct(List<OtherElementComponent> theProduct) { 
1565          this.product = theProduct;
1566          return this;
1567        }
1568
1569        public boolean hasProduct() { 
1570          if (this.product == null)
1571            return false;
1572          for (OtherElementComponent item : this.product)
1573            if (!item.isEmpty())
1574              return true;
1575          return false;
1576        }
1577
1578        public OtherElementComponent addProduct() { //3
1579          OtherElementComponent t = new OtherElementComponent();
1580          if (this.product == null)
1581            this.product = new ArrayList<OtherElementComponent>();
1582          this.product.add(t);
1583          return t;
1584        }
1585
1586        public TargetElementComponent addProduct(OtherElementComponent t) { //3
1587          if (t == null)
1588            return this;
1589          if (this.product == null)
1590            this.product = new ArrayList<OtherElementComponent>();
1591          this.product.add(t);
1592          return this;
1593        }
1594
1595        /**
1596         * @return The first repetition of repeating field {@link #product}, creating it if it does not already exist {3}
1597         */
1598        public OtherElementComponent getProductFirstRep() { 
1599          if (getProduct().isEmpty()) {
1600            addProduct();
1601          }
1602          return getProduct().get(0);
1603        }
1604
1605        protected void listChildren(List<Property> children) {
1606          super.listChildren(children);
1607          children.add(new Property("code", "code", "Identity (code or path) or the element/item that the map refers to.", 0, 1, code));
1608          children.add(new Property("display", "string", "The display for the code. The display is only provided to help editors when editing the concept map.", 0, 1, display));
1609          children.add(new Property("equivalence", "code", "The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source).", 0, 1, equivalence));
1610          children.add(new Property("comment", "string", "A description of status/issues in mapping that conveys additional information not represented in  the structured data.", 0, 1, comment));
1611          children.add(new Property("dependsOn", "", "A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value.", 0, java.lang.Integer.MAX_VALUE, dependsOn));
1612          children.add(new Property("product", "@ConceptMap.group.element.target.dependsOn", "A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on.", 0, java.lang.Integer.MAX_VALUE, product));
1613        }
1614
1615        @Override
1616        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1617          switch (_hash) {
1618          case 3059181: /*code*/  return new Property("code", "code", "Identity (code or path) or the element/item that the map refers to.", 0, 1, code);
1619          case 1671764162: /*display*/  return new Property("display", "string", "The display for the code. The display is only provided to help editors when editing the concept map.", 0, 1, display);
1620          case -15828692: /*equivalence*/  return new Property("equivalence", "code", "The equivalence between the source and target concepts (counting for the dependencies and products). The equivalence is read from target to source (e.g. the target is 'wider' than the source).", 0, 1, equivalence);
1621          case 950398559: /*comment*/  return new Property("comment", "string", "A description of status/issues in mapping that conveys additional information not represented in  the structured data.", 0, 1, comment);
1622          case -1109214266: /*dependsOn*/  return new Property("dependsOn", "", "A set of additional dependencies for this mapping to hold. This mapping is only applicable if the specified element can be resolved, and it has the specified value.", 0, java.lang.Integer.MAX_VALUE, dependsOn);
1623          case -309474065: /*product*/  return new Property("product", "@ConceptMap.group.element.target.dependsOn", "A set of additional outcomes from this mapping to other elements. To properly execute this mapping, the specified element must be mapped to some data element or source that is in context. The mapping may still be useful without a place for the additional data elements, but the equivalence cannot be relied on.", 0, java.lang.Integer.MAX_VALUE, product);
1624          default: return super.getNamedProperty(_hash, _name, _checkValid);
1625          }
1626
1627        }
1628
1629      @Override
1630      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1631        switch (hash) {
1632        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
1633        case 1671764162: /*display*/ return this.display == null ? new Base[0] : new Base[] {this.display}; // StringType
1634        case -15828692: /*equivalence*/ return this.equivalence == null ? new Base[0] : new Base[] {this.equivalence}; // Enumeration<ConceptMapEquivalence>
1635        case 950398559: /*comment*/ return this.comment == null ? new Base[0] : new Base[] {this.comment}; // StringType
1636        case -1109214266: /*dependsOn*/ return this.dependsOn == null ? new Base[0] : this.dependsOn.toArray(new Base[this.dependsOn.size()]); // OtherElementComponent
1637        case -309474065: /*product*/ return this.product == null ? new Base[0] : this.product.toArray(new Base[this.product.size()]); // OtherElementComponent
1638        default: return super.getProperty(hash, name, checkValid);
1639        }
1640
1641      }
1642
1643      @Override
1644      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1645        switch (hash) {
1646        case 3059181: // code
1647          this.code = TypeConvertor.castToCode(value); // CodeType
1648          return value;
1649        case 1671764162: // display
1650          this.display = TypeConvertor.castToString(value); // StringType
1651          return value;
1652        case -15828692: // equivalence
1653          value = new ConceptMapEquivalenceEnumFactory().fromType(TypeConvertor.castToCode(value));
1654          this.equivalence = (Enumeration) value; // Enumeration<ConceptMapEquivalence>
1655          return value;
1656        case 950398559: // comment
1657          this.comment = TypeConvertor.castToString(value); // StringType
1658          return value;
1659        case -1109214266: // dependsOn
1660          this.getDependsOn().add((OtherElementComponent) value); // OtherElementComponent
1661          return value;
1662        case -309474065: // product
1663          this.getProduct().add((OtherElementComponent) value); // OtherElementComponent
1664          return value;
1665        default: return super.setProperty(hash, name, value);
1666        }
1667
1668      }
1669
1670      @Override
1671      public Base setProperty(String name, Base value) throws FHIRException {
1672        if (name.equals("code")) {
1673          this.code = TypeConvertor.castToCode(value); // CodeType
1674        } else if (name.equals("display")) {
1675          this.display = TypeConvertor.castToString(value); // StringType
1676        } else if (name.equals("equivalence")) {
1677          value = new ConceptMapEquivalenceEnumFactory().fromType(TypeConvertor.castToCode(value));
1678          this.equivalence = (Enumeration) value; // Enumeration<ConceptMapEquivalence>
1679        } else if (name.equals("comment")) {
1680          this.comment = TypeConvertor.castToString(value); // StringType
1681        } else if (name.equals("dependsOn")) {
1682          this.getDependsOn().add((OtherElementComponent) value);
1683        } else if (name.equals("product")) {
1684          this.getProduct().add((OtherElementComponent) value);
1685        } else
1686          return super.setProperty(name, value);
1687        return value;
1688      }
1689
1690      @Override
1691      public Base makeProperty(int hash, String name) throws FHIRException {
1692        switch (hash) {
1693        case 3059181:  return getCodeElement();
1694        case 1671764162:  return getDisplayElement();
1695        case -15828692:  return getEquivalenceElement();
1696        case 950398559:  return getCommentElement();
1697        case -1109214266:  return addDependsOn(); 
1698        case -309474065:  return addProduct(); 
1699        default: return super.makeProperty(hash, name);
1700        }
1701
1702      }
1703
1704      @Override
1705      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1706        switch (hash) {
1707        case 3059181: /*code*/ return new String[] {"code"};
1708        case 1671764162: /*display*/ return new String[] {"string"};
1709        case -15828692: /*equivalence*/ return new String[] {"code"};
1710        case 950398559: /*comment*/ return new String[] {"string"};
1711        case -1109214266: /*dependsOn*/ return new String[] {};
1712        case -309474065: /*product*/ return new String[] {"@ConceptMap.group.element.target.dependsOn"};
1713        default: return super.getTypesForProperty(hash, name);
1714        }
1715
1716      }
1717
1718      @Override
1719      public Base addChild(String name) throws FHIRException {
1720        if (name.equals("code")) {
1721          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.target.code");
1722        }
1723        else if (name.equals("display")) {
1724          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.target.display");
1725        }
1726        else if (name.equals("equivalence")) {
1727          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.target.equivalence");
1728        }
1729        else if (name.equals("comment")) {
1730          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.target.comment");
1731        }
1732        else if (name.equals("dependsOn")) {
1733          return addDependsOn();
1734        }
1735        else if (name.equals("product")) {
1736          return addProduct();
1737        }
1738        else
1739          return super.addChild(name);
1740      }
1741
1742      public TargetElementComponent copy() {
1743        TargetElementComponent dst = new TargetElementComponent();
1744        copyValues(dst);
1745        return dst;
1746      }
1747
1748      public void copyValues(TargetElementComponent dst) {
1749        super.copyValues(dst);
1750        dst.code = code == null ? null : code.copy();
1751        dst.display = display == null ? null : display.copy();
1752        dst.equivalence = equivalence == null ? null : equivalence.copy();
1753        dst.comment = comment == null ? null : comment.copy();
1754        if (dependsOn != null) {
1755          dst.dependsOn = new ArrayList<OtherElementComponent>();
1756          for (OtherElementComponent i : dependsOn)
1757            dst.dependsOn.add(i.copy());
1758        };
1759        if (product != null) {
1760          dst.product = new ArrayList<OtherElementComponent>();
1761          for (OtherElementComponent i : product)
1762            dst.product.add(i.copy());
1763        };
1764      }
1765
1766      @Override
1767      public boolean equalsDeep(Base other_) {
1768        if (!super.equalsDeep(other_))
1769          return false;
1770        if (!(other_ instanceof TargetElementComponent))
1771          return false;
1772        TargetElementComponent o = (TargetElementComponent) other_;
1773        return compareDeep(code, o.code, true) && compareDeep(display, o.display, true) && compareDeep(equivalence, o.equivalence, true)
1774           && compareDeep(comment, o.comment, true) && compareDeep(dependsOn, o.dependsOn, true) && compareDeep(product, o.product, true)
1775          ;
1776      }
1777
1778      @Override
1779      public boolean equalsShallow(Base other_) {
1780        if (!super.equalsShallow(other_))
1781          return false;
1782        if (!(other_ instanceof TargetElementComponent))
1783          return false;
1784        TargetElementComponent o = (TargetElementComponent) other_;
1785        return compareValues(code, o.code, true) && compareValues(display, o.display, true) && compareValues(equivalence, o.equivalence, true)
1786           && compareValues(comment, o.comment, true);
1787      }
1788
1789      public boolean isEmpty() {
1790        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, display, equivalence
1791          , comment, dependsOn, product);
1792      }
1793
1794  public String fhirType() {
1795    return "ConceptMap.group.element.target";
1796
1797  }
1798
1799  }
1800
1801    @Block()
1802    public static class OtherElementComponent extends BackboneElement implements IBaseBackboneElement {
1803        /**
1804         * A reference to an element that holds a coded value that corresponds to a code system property. The idea is that the information model carries an element somewhere that is labeled to correspond with a code system property.
1805         */
1806        @Child(name = "property", type = {UriType.class}, order=1, min=1, max=1, modifier=false, summary=false)
1807        @Description(shortDefinition="Reference to property mapping depends on", formalDefinition="A reference to an element that holds a coded value that corresponds to a code system property. The idea is that the information model carries an element somewhere that is labeled to correspond with a code system property." )
1808        protected UriType property;
1809
1810        /**
1811         * An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems).
1812         */
1813        @Child(name = "system", type = {CanonicalType.class}, order=2, min=0, max=1, modifier=false, summary=false)
1814        @Description(shortDefinition="Code System (if necessary)", formalDefinition="An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems)." )
1815        protected CanonicalType system;
1816
1817        /**
1818         * Identity (code or path) or the element/item/ValueSet/text that the map depends on / refers to.
1819         */
1820        @Child(name = "value", type = {StringType.class}, order=3, min=1, max=1, modifier=false, summary=false)
1821        @Description(shortDefinition="Value of the referenced element", formalDefinition="Identity (code or path) or the element/item/ValueSet/text that the map depends on / refers to." )
1822        protected StringType value;
1823
1824        /**
1825         * The display for the code. The display is only provided to help editors when editing the concept map.
1826         */
1827        @Child(name = "display", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
1828        @Description(shortDefinition="Display for the code (if value is a code)", formalDefinition="The display for the code. The display is only provided to help editors when editing the concept map." )
1829        protected StringType display;
1830
1831        private static final long serialVersionUID = -1836341923L;
1832
1833    /**
1834     * Constructor
1835     */
1836      public OtherElementComponent() {
1837        super();
1838      }
1839
1840    /**
1841     * Constructor
1842     */
1843      public OtherElementComponent(String property, String value) {
1844        super();
1845        this.setProperty(property);
1846        this.setValue(value);
1847      }
1848
1849        /**
1850         * @return {@link #property} (A reference to an element that holds a coded value that corresponds to a code system property. The idea is that the information model carries an element somewhere that is labeled to correspond with a code system property.). This is the underlying object with id, value and extensions. The accessor "getProperty" gives direct access to the value
1851         */
1852        public UriType getPropertyElement() { 
1853          if (this.property == null)
1854            if (Configuration.errorOnAutoCreate())
1855              throw new Error("Attempt to auto-create OtherElementComponent.property");
1856            else if (Configuration.doAutoCreate())
1857              this.property = new UriType(); // bb
1858          return this.property;
1859        }
1860
1861        public boolean hasPropertyElement() { 
1862          return this.property != null && !this.property.isEmpty();
1863        }
1864
1865        public boolean hasProperty() { 
1866          return this.property != null && !this.property.isEmpty();
1867        }
1868
1869        /**
1870         * @param value {@link #property} (A reference to an element that holds a coded value that corresponds to a code system property. The idea is that the information model carries an element somewhere that is labeled to correspond with a code system property.). This is the underlying object with id, value and extensions. The accessor "getProperty" gives direct access to the value
1871         */
1872        public OtherElementComponent setPropertyElement(UriType value) { 
1873          this.property = value;
1874          return this;
1875        }
1876
1877        /**
1878         * @return A reference to an element that holds a coded value that corresponds to a code system property. The idea is that the information model carries an element somewhere that is labeled to correspond with a code system property.
1879         */
1880        public String getProperty() { 
1881          return this.property == null ? null : this.property.getValue();
1882        }
1883
1884        /**
1885         * @param value A reference to an element that holds a coded value that corresponds to a code system property. The idea is that the information model carries an element somewhere that is labeled to correspond with a code system property.
1886         */
1887        public OtherElementComponent setProperty(String value) { 
1888            if (this.property == null)
1889              this.property = new UriType();
1890            this.property.setValue(value);
1891          return this;
1892        }
1893
1894        /**
1895         * @return {@link #system} (An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems).). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
1896         */
1897        public CanonicalType getSystemElement() { 
1898          if (this.system == null)
1899            if (Configuration.errorOnAutoCreate())
1900              throw new Error("Attempt to auto-create OtherElementComponent.system");
1901            else if (Configuration.doAutoCreate())
1902              this.system = new CanonicalType(); // bb
1903          return this.system;
1904        }
1905
1906        public boolean hasSystemElement() { 
1907          return this.system != null && !this.system.isEmpty();
1908        }
1909
1910        public boolean hasSystem() { 
1911          return this.system != null && !this.system.isEmpty();
1912        }
1913
1914        /**
1915         * @param value {@link #system} (An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems).). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
1916         */
1917        public OtherElementComponent setSystemElement(CanonicalType value) { 
1918          this.system = value;
1919          return this;
1920        }
1921
1922        /**
1923         * @return An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems).
1924         */
1925        public String getSystem() { 
1926          return this.system == null ? null : this.system.getValue();
1927        }
1928
1929        /**
1930         * @param value An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems).
1931         */
1932        public OtherElementComponent setSystem(String value) { 
1933          if (Utilities.noString(value))
1934            this.system = null;
1935          else {
1936            if (this.system == null)
1937              this.system = new CanonicalType();
1938            this.system.setValue(value);
1939          }
1940          return this;
1941        }
1942
1943        /**
1944         * @return {@link #value} (Identity (code or path) or the element/item/ValueSet/text that the map depends on / refers to.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
1945         */
1946        public StringType getValueElement() { 
1947          if (this.value == null)
1948            if (Configuration.errorOnAutoCreate())
1949              throw new Error("Attempt to auto-create OtherElementComponent.value");
1950            else if (Configuration.doAutoCreate())
1951              this.value = new StringType(); // bb
1952          return this.value;
1953        }
1954
1955        public boolean hasValueElement() { 
1956          return this.value != null && !this.value.isEmpty();
1957        }
1958
1959        public boolean hasValue() { 
1960          return this.value != null && !this.value.isEmpty();
1961        }
1962
1963        /**
1964         * @param value {@link #value} (Identity (code or path) or the element/item/ValueSet/text that the map depends on / refers to.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
1965         */
1966        public OtherElementComponent setValueElement(StringType value) { 
1967          this.value = value;
1968          return this;
1969        }
1970
1971        /**
1972         * @return Identity (code or path) or the element/item/ValueSet/text that the map depends on / refers to.
1973         */
1974        public String getValue() { 
1975          return this.value == null ? null : this.value.getValue();
1976        }
1977
1978        /**
1979         * @param value Identity (code or path) or the element/item/ValueSet/text that the map depends on / refers to.
1980         */
1981        public OtherElementComponent setValue(String value) { 
1982            if (this.value == null)
1983              this.value = new StringType();
1984            this.value.setValue(value);
1985          return this;
1986        }
1987
1988        /**
1989         * @return {@link #display} (The display for the code. The display is only provided to help editors when editing the concept map.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
1990         */
1991        public StringType getDisplayElement() { 
1992          if (this.display == null)
1993            if (Configuration.errorOnAutoCreate())
1994              throw new Error("Attempt to auto-create OtherElementComponent.display");
1995            else if (Configuration.doAutoCreate())
1996              this.display = new StringType(); // bb
1997          return this.display;
1998        }
1999
2000        public boolean hasDisplayElement() { 
2001          return this.display != null && !this.display.isEmpty();
2002        }
2003
2004        public boolean hasDisplay() { 
2005          return this.display != null && !this.display.isEmpty();
2006        }
2007
2008        /**
2009         * @param value {@link #display} (The display for the code. The display is only provided to help editors when editing the concept map.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
2010         */
2011        public OtherElementComponent setDisplayElement(StringType value) { 
2012          this.display = value;
2013          return this;
2014        }
2015
2016        /**
2017         * @return The display for the code. The display is only provided to help editors when editing the concept map.
2018         */
2019        public String getDisplay() { 
2020          return this.display == null ? null : this.display.getValue();
2021        }
2022
2023        /**
2024         * @param value The display for the code. The display is only provided to help editors when editing the concept map.
2025         */
2026        public OtherElementComponent setDisplay(String value) { 
2027          if (Utilities.noString(value))
2028            this.display = null;
2029          else {
2030            if (this.display == null)
2031              this.display = new StringType();
2032            this.display.setValue(value);
2033          }
2034          return this;
2035        }
2036
2037        protected void listChildren(List<Property> children) {
2038          super.listChildren(children);
2039          children.add(new Property("property", "uri", "A reference to an element that holds a coded value that corresponds to a code system property. The idea is that the information model carries an element somewhere that is labeled to correspond with a code system property.", 0, 1, property));
2040          children.add(new Property("system", "canonical(CodeSystem)", "An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems).", 0, 1, system));
2041          children.add(new Property("value", "string", "Identity (code or path) or the element/item/ValueSet/text that the map depends on / refers to.", 0, 1, value));
2042          children.add(new Property("display", "string", "The display for the code. The display is only provided to help editors when editing the concept map.", 0, 1, display));
2043        }
2044
2045        @Override
2046        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2047          switch (_hash) {
2048          case -993141291: /*property*/  return new Property("property", "uri", "A reference to an element that holds a coded value that corresponds to a code system property. The idea is that the information model carries an element somewhere that is labeled to correspond with a code system property.", 0, 1, property);
2049          case -887328209: /*system*/  return new Property("system", "canonical(CodeSystem)", "An absolute URI that identifies the code system of the dependency code (if the source/dependency is a value set that crosses code systems).", 0, 1, system);
2050          case 111972721: /*value*/  return new Property("value", "string", "Identity (code or path) or the element/item/ValueSet/text that the map depends on / refers to.", 0, 1, value);
2051          case 1671764162: /*display*/  return new Property("display", "string", "The display for the code. The display is only provided to help editors when editing the concept map.", 0, 1, display);
2052          default: return super.getNamedProperty(_hash, _name, _checkValid);
2053          }
2054
2055        }
2056
2057      @Override
2058      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2059        switch (hash) {
2060        case -993141291: /*property*/ return this.property == null ? new Base[0] : new Base[] {this.property}; // UriType
2061        case -887328209: /*system*/ return this.system == null ? new Base[0] : new Base[] {this.system}; // CanonicalType
2062        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
2063        case 1671764162: /*display*/ return this.display == null ? new Base[0] : new Base[] {this.display}; // StringType
2064        default: return super.getProperty(hash, name, checkValid);
2065        }
2066
2067      }
2068
2069      @Override
2070      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2071        switch (hash) {
2072        case -993141291: // property
2073          this.property = TypeConvertor.castToUri(value); // UriType
2074          return value;
2075        case -887328209: // system
2076          this.system = TypeConvertor.castToCanonical(value); // CanonicalType
2077          return value;
2078        case 111972721: // value
2079          this.value = TypeConvertor.castToString(value); // StringType
2080          return value;
2081        case 1671764162: // display
2082          this.display = TypeConvertor.castToString(value); // StringType
2083          return value;
2084        default: return super.setProperty(hash, name, value);
2085        }
2086
2087      }
2088
2089      @Override
2090      public Base setProperty(String name, Base value) throws FHIRException {
2091        if (name.equals("property")) {
2092          this.property = TypeConvertor.castToUri(value); // UriType
2093        } else if (name.equals("system")) {
2094          this.system = TypeConvertor.castToCanonical(value); // CanonicalType
2095        } else if (name.equals("value")) {
2096          this.value = TypeConvertor.castToString(value); // StringType
2097        } else if (name.equals("display")) {
2098          this.display = TypeConvertor.castToString(value); // StringType
2099        } else
2100          return super.setProperty(name, value);
2101        return value;
2102      }
2103
2104      @Override
2105      public Base makeProperty(int hash, String name) throws FHIRException {
2106        switch (hash) {
2107        case -993141291:  return getPropertyElement();
2108        case -887328209:  return getSystemElement();
2109        case 111972721:  return getValueElement();
2110        case 1671764162:  return getDisplayElement();
2111        default: return super.makeProperty(hash, name);
2112        }
2113
2114      }
2115
2116      @Override
2117      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2118        switch (hash) {
2119        case -993141291: /*property*/ return new String[] {"uri"};
2120        case -887328209: /*system*/ return new String[] {"canonical"};
2121        case 111972721: /*value*/ return new String[] {"string"};
2122        case 1671764162: /*display*/ return new String[] {"string"};
2123        default: return super.getTypesForProperty(hash, name);
2124        }
2125
2126      }
2127
2128      @Override
2129      public Base addChild(String name) throws FHIRException {
2130        if (name.equals("property")) {
2131          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.target.dependsOn.property");
2132        }
2133        else if (name.equals("system")) {
2134          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.target.dependsOn.system");
2135        }
2136        else if (name.equals("value")) {
2137          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.target.dependsOn.value");
2138        }
2139        else if (name.equals("display")) {
2140          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.element.target.dependsOn.display");
2141        }
2142        else
2143          return super.addChild(name);
2144      }
2145
2146      public OtherElementComponent copy() {
2147        OtherElementComponent dst = new OtherElementComponent();
2148        copyValues(dst);
2149        return dst;
2150      }
2151
2152      public void copyValues(OtherElementComponent dst) {
2153        super.copyValues(dst);
2154        dst.property = property == null ? null : property.copy();
2155        dst.system = system == null ? null : system.copy();
2156        dst.value = value == null ? null : value.copy();
2157        dst.display = display == null ? null : display.copy();
2158      }
2159
2160      @Override
2161      public boolean equalsDeep(Base other_) {
2162        if (!super.equalsDeep(other_))
2163          return false;
2164        if (!(other_ instanceof OtherElementComponent))
2165          return false;
2166        OtherElementComponent o = (OtherElementComponent) other_;
2167        return compareDeep(property, o.property, true) && compareDeep(system, o.system, true) && compareDeep(value, o.value, true)
2168           && compareDeep(display, o.display, true);
2169      }
2170
2171      @Override
2172      public boolean equalsShallow(Base other_) {
2173        if (!super.equalsShallow(other_))
2174          return false;
2175        if (!(other_ instanceof OtherElementComponent))
2176          return false;
2177        OtherElementComponent o = (OtherElementComponent) other_;
2178        return compareValues(property, o.property, true) && compareValues(system, o.system, true) && compareValues(value, o.value, true)
2179           && compareValues(display, o.display, true);
2180      }
2181
2182      public boolean isEmpty() {
2183        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(property, system, value
2184          , display);
2185      }
2186
2187  public String fhirType() {
2188    return "ConceptMap.group.element.target.dependsOn";
2189
2190  }
2191
2192  }
2193
2194    @Block()
2195    public static class ConceptMapGroupUnmappedComponent extends BackboneElement implements IBaseBackboneElement {
2196        /**
2197         * Defines which action to take if there is no match for the source concept in the target system designated for the group. One of 3 actions are possible: use the unmapped code (this is useful when doing a mapping between versions, and only a few codes have changed), use a fixed code (a default code), or alternatively, a reference to a different concept map can be provided (by canonical URL).
2198         */
2199        @Child(name = "mode", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
2200        @Description(shortDefinition="provided | fixed | other-map", formalDefinition="Defines which action to take if there is no match for the source concept in the target system designated for the group. One of 3 actions are possible: use the unmapped code (this is useful when doing a mapping between versions, and only a few codes have changed), use a fixed code (a default code), or alternatively, a reference to a different concept map can be provided (by canonical URL)." )
2201        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/conceptmap-unmapped-mode")
2202        protected Enumeration<ConceptMapGroupUnmappedMode> mode;
2203
2204        /**
2205         * The fixed code to use when the mode = 'fixed'  - all unmapped codes are mapped to a single fixed code.
2206         */
2207        @Child(name = "code", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
2208        @Description(shortDefinition="Fixed code when mode = fixed", formalDefinition="The fixed code to use when the mode = 'fixed'  - all unmapped codes are mapped to a single fixed code." )
2209        protected CodeType code;
2210
2211        /**
2212         * The display for the code. The display is only provided to help editors when editing the concept map.
2213         */
2214        @Child(name = "display", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
2215        @Description(shortDefinition="Display for the code", formalDefinition="The display for the code. The display is only provided to help editors when editing the concept map." )
2216        protected StringType display;
2217
2218        /**
2219         * The canonical reference to an additional ConceptMap resource instance to use for mapping if this ConceptMap resource contains no matching mapping for the source concept.
2220         */
2221        @Child(name = "url", type = {CanonicalType.class}, order=4, min=0, max=1, modifier=false, summary=false)
2222        @Description(shortDefinition="canonical reference to an additional ConceptMap to use for mapping if the source concept is unmapped", formalDefinition="The canonical reference to an additional ConceptMap resource instance to use for mapping if this ConceptMap resource contains no matching mapping for the source concept." )
2223        protected CanonicalType url;
2224
2225        private static final long serialVersionUID = 1261364354L;
2226
2227    /**
2228     * Constructor
2229     */
2230      public ConceptMapGroupUnmappedComponent() {
2231        super();
2232      }
2233
2234    /**
2235     * Constructor
2236     */
2237      public ConceptMapGroupUnmappedComponent(ConceptMapGroupUnmappedMode mode) {
2238        super();
2239        this.setMode(mode);
2240      }
2241
2242        /**
2243         * @return {@link #mode} (Defines which action to take if there is no match for the source concept in the target system designated for the group. One of 3 actions are possible: use the unmapped code (this is useful when doing a mapping between versions, and only a few codes have changed), use a fixed code (a default code), or alternatively, a reference to a different concept map can be provided (by canonical URL).). This is the underlying object with id, value and extensions. The accessor "getMode" gives direct access to the value
2244         */
2245        public Enumeration<ConceptMapGroupUnmappedMode> getModeElement() { 
2246          if (this.mode == null)
2247            if (Configuration.errorOnAutoCreate())
2248              throw new Error("Attempt to auto-create ConceptMapGroupUnmappedComponent.mode");
2249            else if (Configuration.doAutoCreate())
2250              this.mode = new Enumeration<ConceptMapGroupUnmappedMode>(new ConceptMapGroupUnmappedModeEnumFactory()); // bb
2251          return this.mode;
2252        }
2253
2254        public boolean hasModeElement() { 
2255          return this.mode != null && !this.mode.isEmpty();
2256        }
2257
2258        public boolean hasMode() { 
2259          return this.mode != null && !this.mode.isEmpty();
2260        }
2261
2262        /**
2263         * @param value {@link #mode} (Defines which action to take if there is no match for the source concept in the target system designated for the group. One of 3 actions are possible: use the unmapped code (this is useful when doing a mapping between versions, and only a few codes have changed), use a fixed code (a default code), or alternatively, a reference to a different concept map can be provided (by canonical URL).). This is the underlying object with id, value and extensions. The accessor "getMode" gives direct access to the value
2264         */
2265        public ConceptMapGroupUnmappedComponent setModeElement(Enumeration<ConceptMapGroupUnmappedMode> value) { 
2266          this.mode = value;
2267          return this;
2268        }
2269
2270        /**
2271         * @return Defines which action to take if there is no match for the source concept in the target system designated for the group. One of 3 actions are possible: use the unmapped code (this is useful when doing a mapping between versions, and only a few codes have changed), use a fixed code (a default code), or alternatively, a reference to a different concept map can be provided (by canonical URL).
2272         */
2273        public ConceptMapGroupUnmappedMode getMode() { 
2274          return this.mode == null ? null : this.mode.getValue();
2275        }
2276
2277        /**
2278         * @param value Defines which action to take if there is no match for the source concept in the target system designated for the group. One of 3 actions are possible: use the unmapped code (this is useful when doing a mapping between versions, and only a few codes have changed), use a fixed code (a default code), or alternatively, a reference to a different concept map can be provided (by canonical URL).
2279         */
2280        public ConceptMapGroupUnmappedComponent setMode(ConceptMapGroupUnmappedMode value) { 
2281            if (this.mode == null)
2282              this.mode = new Enumeration<ConceptMapGroupUnmappedMode>(new ConceptMapGroupUnmappedModeEnumFactory());
2283            this.mode.setValue(value);
2284          return this;
2285        }
2286
2287        /**
2288         * @return {@link #code} (The fixed code to use when the mode = 'fixed'  - all unmapped codes are mapped to a single fixed code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
2289         */
2290        public CodeType getCodeElement() { 
2291          if (this.code == null)
2292            if (Configuration.errorOnAutoCreate())
2293              throw new Error("Attempt to auto-create ConceptMapGroupUnmappedComponent.code");
2294            else if (Configuration.doAutoCreate())
2295              this.code = new CodeType(); // bb
2296          return this.code;
2297        }
2298
2299        public boolean hasCodeElement() { 
2300          return this.code != null && !this.code.isEmpty();
2301        }
2302
2303        public boolean hasCode() { 
2304          return this.code != null && !this.code.isEmpty();
2305        }
2306
2307        /**
2308         * @param value {@link #code} (The fixed code to use when the mode = 'fixed'  - all unmapped codes are mapped to a single fixed code.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
2309         */
2310        public ConceptMapGroupUnmappedComponent setCodeElement(CodeType value) { 
2311          this.code = value;
2312          return this;
2313        }
2314
2315        /**
2316         * @return The fixed code to use when the mode = 'fixed'  - all unmapped codes are mapped to a single fixed code.
2317         */
2318        public String getCode() { 
2319          return this.code == null ? null : this.code.getValue();
2320        }
2321
2322        /**
2323         * @param value The fixed code to use when the mode = 'fixed'  - all unmapped codes are mapped to a single fixed code.
2324         */
2325        public ConceptMapGroupUnmappedComponent setCode(String value) { 
2326          if (Utilities.noString(value))
2327            this.code = null;
2328          else {
2329            if (this.code == null)
2330              this.code = new CodeType();
2331            this.code.setValue(value);
2332          }
2333          return this;
2334        }
2335
2336        /**
2337         * @return {@link #display} (The display for the code. The display is only provided to help editors when editing the concept map.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
2338         */
2339        public StringType getDisplayElement() { 
2340          if (this.display == null)
2341            if (Configuration.errorOnAutoCreate())
2342              throw new Error("Attempt to auto-create ConceptMapGroupUnmappedComponent.display");
2343            else if (Configuration.doAutoCreate())
2344              this.display = new StringType(); // bb
2345          return this.display;
2346        }
2347
2348        public boolean hasDisplayElement() { 
2349          return this.display != null && !this.display.isEmpty();
2350        }
2351
2352        public boolean hasDisplay() { 
2353          return this.display != null && !this.display.isEmpty();
2354        }
2355
2356        /**
2357         * @param value {@link #display} (The display for the code. The display is only provided to help editors when editing the concept map.). This is the underlying object with id, value and extensions. The accessor "getDisplay" gives direct access to the value
2358         */
2359        public ConceptMapGroupUnmappedComponent setDisplayElement(StringType value) { 
2360          this.display = value;
2361          return this;
2362        }
2363
2364        /**
2365         * @return The display for the code. The display is only provided to help editors when editing the concept map.
2366         */
2367        public String getDisplay() { 
2368          return this.display == null ? null : this.display.getValue();
2369        }
2370
2371        /**
2372         * @param value The display for the code. The display is only provided to help editors when editing the concept map.
2373         */
2374        public ConceptMapGroupUnmappedComponent setDisplay(String value) { 
2375          if (Utilities.noString(value))
2376            this.display = null;
2377          else {
2378            if (this.display == null)
2379              this.display = new StringType();
2380            this.display.setValue(value);
2381          }
2382          return this;
2383        }
2384
2385        /**
2386         * @return {@link #url} (The canonical reference to an additional ConceptMap resource instance to use for mapping if this ConceptMap resource contains no matching mapping for the source concept.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2387         */
2388        public CanonicalType getUrlElement() { 
2389          if (this.url == null)
2390            if (Configuration.errorOnAutoCreate())
2391              throw new Error("Attempt to auto-create ConceptMapGroupUnmappedComponent.url");
2392            else if (Configuration.doAutoCreate())
2393              this.url = new CanonicalType(); // bb
2394          return this.url;
2395        }
2396
2397        public boolean hasUrlElement() { 
2398          return this.url != null && !this.url.isEmpty();
2399        }
2400
2401        public boolean hasUrl() { 
2402          return this.url != null && !this.url.isEmpty();
2403        }
2404
2405        /**
2406         * @param value {@link #url} (The canonical reference to an additional ConceptMap resource instance to use for mapping if this ConceptMap resource contains no matching mapping for the source concept.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2407         */
2408        public ConceptMapGroupUnmappedComponent setUrlElement(CanonicalType value) { 
2409          this.url = value;
2410          return this;
2411        }
2412
2413        /**
2414         * @return The canonical reference to an additional ConceptMap resource instance to use for mapping if this ConceptMap resource contains no matching mapping for the source concept.
2415         */
2416        public String getUrl() { 
2417          return this.url == null ? null : this.url.getValue();
2418        }
2419
2420        /**
2421         * @param value The canonical reference to an additional ConceptMap resource instance to use for mapping if this ConceptMap resource contains no matching mapping for the source concept.
2422         */
2423        public ConceptMapGroupUnmappedComponent setUrl(String value) { 
2424          if (Utilities.noString(value))
2425            this.url = null;
2426          else {
2427            if (this.url == null)
2428              this.url = new CanonicalType();
2429            this.url.setValue(value);
2430          }
2431          return this;
2432        }
2433
2434        protected void listChildren(List<Property> children) {
2435          super.listChildren(children);
2436          children.add(new Property("mode", "code", "Defines which action to take if there is no match for the source concept in the target system designated for the group. One of 3 actions are possible: use the unmapped code (this is useful when doing a mapping between versions, and only a few codes have changed), use a fixed code (a default code), or alternatively, a reference to a different concept map can be provided (by canonical URL).", 0, 1, mode));
2437          children.add(new Property("code", "code", "The fixed code to use when the mode = 'fixed'  - all unmapped codes are mapped to a single fixed code.", 0, 1, code));
2438          children.add(new Property("display", "string", "The display for the code. The display is only provided to help editors when editing the concept map.", 0, 1, display));
2439          children.add(new Property("url", "canonical(ConceptMap)", "The canonical reference to an additional ConceptMap resource instance to use for mapping if this ConceptMap resource contains no matching mapping for the source concept.", 0, 1, url));
2440        }
2441
2442        @Override
2443        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2444          switch (_hash) {
2445          case 3357091: /*mode*/  return new Property("mode", "code", "Defines which action to take if there is no match for the source concept in the target system designated for the group. One of 3 actions are possible: use the unmapped code (this is useful when doing a mapping between versions, and only a few codes have changed), use a fixed code (a default code), or alternatively, a reference to a different concept map can be provided (by canonical URL).", 0, 1, mode);
2446          case 3059181: /*code*/  return new Property("code", "code", "The fixed code to use when the mode = 'fixed'  - all unmapped codes are mapped to a single fixed code.", 0, 1, code);
2447          case 1671764162: /*display*/  return new Property("display", "string", "The display for the code. The display is only provided to help editors when editing the concept map.", 0, 1, display);
2448          case 116079: /*url*/  return new Property("url", "canonical(ConceptMap)", "The canonical reference to an additional ConceptMap resource instance to use for mapping if this ConceptMap resource contains no matching mapping for the source concept.", 0, 1, url);
2449          default: return super.getNamedProperty(_hash, _name, _checkValid);
2450          }
2451
2452        }
2453
2454      @Override
2455      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2456        switch (hash) {
2457        case 3357091: /*mode*/ return this.mode == null ? new Base[0] : new Base[] {this.mode}; // Enumeration<ConceptMapGroupUnmappedMode>
2458        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
2459        case 1671764162: /*display*/ return this.display == null ? new Base[0] : new Base[] {this.display}; // StringType
2460        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // CanonicalType
2461        default: return super.getProperty(hash, name, checkValid);
2462        }
2463
2464      }
2465
2466      @Override
2467      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2468        switch (hash) {
2469        case 3357091: // mode
2470          value = new ConceptMapGroupUnmappedModeEnumFactory().fromType(TypeConvertor.castToCode(value));
2471          this.mode = (Enumeration) value; // Enumeration<ConceptMapGroupUnmappedMode>
2472          return value;
2473        case 3059181: // code
2474          this.code = TypeConvertor.castToCode(value); // CodeType
2475          return value;
2476        case 1671764162: // display
2477          this.display = TypeConvertor.castToString(value); // StringType
2478          return value;
2479        case 116079: // url
2480          this.url = TypeConvertor.castToCanonical(value); // CanonicalType
2481          return value;
2482        default: return super.setProperty(hash, name, value);
2483        }
2484
2485      }
2486
2487      @Override
2488      public Base setProperty(String name, Base value) throws FHIRException {
2489        if (name.equals("mode")) {
2490          value = new ConceptMapGroupUnmappedModeEnumFactory().fromType(TypeConvertor.castToCode(value));
2491          this.mode = (Enumeration) value; // Enumeration<ConceptMapGroupUnmappedMode>
2492        } else if (name.equals("code")) {
2493          this.code = TypeConvertor.castToCode(value); // CodeType
2494        } else if (name.equals("display")) {
2495          this.display = TypeConvertor.castToString(value); // StringType
2496        } else if (name.equals("url")) {
2497          this.url = TypeConvertor.castToCanonical(value); // CanonicalType
2498        } else
2499          return super.setProperty(name, value);
2500        return value;
2501      }
2502
2503      @Override
2504      public Base makeProperty(int hash, String name) throws FHIRException {
2505        switch (hash) {
2506        case 3357091:  return getModeElement();
2507        case 3059181:  return getCodeElement();
2508        case 1671764162:  return getDisplayElement();
2509        case 116079:  return getUrlElement();
2510        default: return super.makeProperty(hash, name);
2511        }
2512
2513      }
2514
2515      @Override
2516      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2517        switch (hash) {
2518        case 3357091: /*mode*/ return new String[] {"code"};
2519        case 3059181: /*code*/ return new String[] {"code"};
2520        case 1671764162: /*display*/ return new String[] {"string"};
2521        case 116079: /*url*/ return new String[] {"canonical"};
2522        default: return super.getTypesForProperty(hash, name);
2523        }
2524
2525      }
2526
2527      @Override
2528      public Base addChild(String name) throws FHIRException {
2529        if (name.equals("mode")) {
2530          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.unmapped.mode");
2531        }
2532        else if (name.equals("code")) {
2533          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.unmapped.code");
2534        }
2535        else if (name.equals("display")) {
2536          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.unmapped.display");
2537        }
2538        else if (name.equals("url")) {
2539          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.group.unmapped.url");
2540        }
2541        else
2542          return super.addChild(name);
2543      }
2544
2545      public ConceptMapGroupUnmappedComponent copy() {
2546        ConceptMapGroupUnmappedComponent dst = new ConceptMapGroupUnmappedComponent();
2547        copyValues(dst);
2548        return dst;
2549      }
2550
2551      public void copyValues(ConceptMapGroupUnmappedComponent dst) {
2552        super.copyValues(dst);
2553        dst.mode = mode == null ? null : mode.copy();
2554        dst.code = code == null ? null : code.copy();
2555        dst.display = display == null ? null : display.copy();
2556        dst.url = url == null ? null : url.copy();
2557      }
2558
2559      @Override
2560      public boolean equalsDeep(Base other_) {
2561        if (!super.equalsDeep(other_))
2562          return false;
2563        if (!(other_ instanceof ConceptMapGroupUnmappedComponent))
2564          return false;
2565        ConceptMapGroupUnmappedComponent o = (ConceptMapGroupUnmappedComponent) other_;
2566        return compareDeep(mode, o.mode, true) && compareDeep(code, o.code, true) && compareDeep(display, o.display, true)
2567           && compareDeep(url, o.url, true);
2568      }
2569
2570      @Override
2571      public boolean equalsShallow(Base other_) {
2572        if (!super.equalsShallow(other_))
2573          return false;
2574        if (!(other_ instanceof ConceptMapGroupUnmappedComponent))
2575          return false;
2576        ConceptMapGroupUnmappedComponent o = (ConceptMapGroupUnmappedComponent) other_;
2577        return compareValues(mode, o.mode, true) && compareValues(code, o.code, true) && compareValues(display, o.display, true)
2578           && compareValues(url, o.url, true);
2579      }
2580
2581      public boolean isEmpty() {
2582        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(mode, code, display, url
2583          );
2584      }
2585
2586  public String fhirType() {
2587    return "ConceptMap.group.unmapped";
2588
2589  }
2590
2591  }
2592
2593    /**
2594     * An absolute URI that is used to identify this concept map 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 concept map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the concept map is stored on different servers.
2595     */
2596    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
2597    @Description(shortDefinition="Canonical identifier for this concept map, represented as a URI (globally unique)", formalDefinition="An absolute URI that is used to identify this concept map 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 concept map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the concept map is stored on different servers." )
2598    protected UriType url;
2599
2600    /**
2601     * A formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance.
2602     */
2603    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
2604    @Description(shortDefinition="Additional identifier for the concept map", formalDefinition="A formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance." )
2605    protected Identifier identifier;
2606
2607    /**
2608     * The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the concept map 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.
2609     */
2610    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
2611    @Description(shortDefinition="Business version of the concept map", formalDefinition="The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the concept map 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." )
2612    protected StringType version;
2613
2614    /**
2615     * A natural language name identifying the concept map. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2616     */
2617    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
2618    @Description(shortDefinition="Name for this concept map (computer friendly)", formalDefinition="A natural language name identifying the concept map. This name should be usable as an identifier for the module by machine processing applications such as code generation." )
2619    protected StringType name;
2620
2621    /**
2622     * A short, descriptive, user-friendly title for the concept map.
2623     */
2624    @Child(name = "title", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=true)
2625    @Description(shortDefinition="Name for this concept map (human friendly)", formalDefinition="A short, descriptive, user-friendly title for the concept map." )
2626    protected StringType title;
2627
2628    /**
2629     * The status of this concept map. Enables tracking the life-cycle of the content.
2630     */
2631    @Child(name = "status", type = {CodeType.class}, order=5, min=1, max=1, modifier=true, summary=true)
2632    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this concept map. Enables tracking the life-cycle of the content." )
2633    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
2634    protected Enumeration<PublicationStatus> status;
2635
2636    /**
2637     * A Boolean value to indicate that this concept map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
2638     */
2639    @Child(name = "experimental", type = {BooleanType.class}, order=6, min=0, max=1, modifier=false, summary=true)
2640    @Description(shortDefinition="For testing purposes, not real usage", formalDefinition="A Boolean value to indicate that this concept map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage." )
2641    protected BooleanType experimental;
2642
2643    /**
2644     * The date  (and optionally time) when the concept map 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 concept map changes.
2645     */
2646    @Child(name = "date", type = {DateTimeType.class}, order=7, min=0, max=1, modifier=false, summary=true)
2647    @Description(shortDefinition="Date last changed", formalDefinition="The date  (and optionally time) when the concept map 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 concept map changes." )
2648    protected DateTimeType date;
2649
2650    /**
2651     * The name of the organization or individual that published the concept map.
2652     */
2653    @Child(name = "publisher", type = {StringType.class}, order=8, min=0, max=1, modifier=false, summary=true)
2654    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the organization or individual that published the concept map." )
2655    protected StringType publisher;
2656
2657    /**
2658     * Contact details to assist a user in finding and communicating with the publisher.
2659     */
2660    @Child(name = "contact", type = {ContactDetail.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2661    @Description(shortDefinition="Contact details for the publisher", formalDefinition="Contact details to assist a user in finding and communicating with the publisher." )
2662    protected List<ContactDetail> contact;
2663
2664    /**
2665     * A free text natural language description of the concept map from a consumer's perspective.
2666     */
2667    @Child(name = "description", type = {MarkdownType.class}, order=10, min=0, max=1, modifier=false, summary=false)
2668    @Description(shortDefinition="Natural language description of the concept map", formalDefinition="A free text natural language description of the concept map from a consumer's perspective." )
2669    protected MarkdownType description;
2670
2671    /**
2672     * 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 concept map instances.
2673     */
2674    @Child(name = "useContext", type = {UsageContext.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2675    @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 concept map instances." )
2676    protected List<UsageContext> useContext;
2677
2678    /**
2679     * A legal or geographic region in which the concept map is intended to be used.
2680     */
2681    @Child(name = "jurisdiction", type = {CodeableConcept.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2682    @Description(shortDefinition="Intended jurisdiction for concept map (if applicable)", formalDefinition="A legal or geographic region in which the concept map is intended to be used." )
2683    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/jurisdiction")
2684    protected List<CodeableConcept> jurisdiction;
2685
2686    /**
2687     * Explanation of why this concept map is needed and why it has been designed as it has.
2688     */
2689    @Child(name = "purpose", type = {MarkdownType.class}, order=13, min=0, max=1, modifier=false, summary=false)
2690    @Description(shortDefinition="Why this concept map is defined", formalDefinition="Explanation of why this concept map is needed and why it has been designed as it has." )
2691    protected MarkdownType purpose;
2692
2693    /**
2694     * A copyright statement relating to the concept map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the concept map.
2695     */
2696    @Child(name = "copyright", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
2697    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the concept map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the concept map." )
2698    protected MarkdownType copyright;
2699
2700    /**
2701     * Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.
2702     */
2703    @Child(name = "source", type = {UriType.class, CanonicalType.class}, order=15, min=0, max=1, modifier=false, summary=true)
2704    @Description(shortDefinition="The source value set that contains the concepts that are being mapped", formalDefinition="Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings." )
2705    protected DataType source;
2706
2707    /**
2708     * The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.
2709     */
2710    @Child(name = "target", type = {UriType.class, CanonicalType.class}, order=16, min=0, max=1, modifier=false, summary=true)
2711    @Description(shortDefinition="The target value set which provides context for the mappings", formalDefinition="The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made." )
2712    protected DataType target;
2713
2714    /**
2715     * A group of mappings that all have the same source and target system.
2716     */
2717    @Child(name = "group", type = {}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2718    @Description(shortDefinition="Same source and target systems", formalDefinition="A group of mappings that all have the same source and target system." )
2719    protected List<ConceptMapGroupComponent> group;
2720
2721    private static final long serialVersionUID = 1735271896L;
2722
2723  /**
2724   * Constructor
2725   */
2726    public ConceptMap() {
2727      super();
2728    }
2729
2730  /**
2731   * Constructor
2732   */
2733    public ConceptMap(PublicationStatus status) {
2734      super();
2735      this.setStatus(status);
2736    }
2737
2738    /**
2739     * @return {@link #url} (An absolute URI that is used to identify this concept map 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 concept map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the concept map is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2740     */
2741    public UriType getUrlElement() { 
2742      if (this.url == null)
2743        if (Configuration.errorOnAutoCreate())
2744          throw new Error("Attempt to auto-create ConceptMap.url");
2745        else if (Configuration.doAutoCreate())
2746          this.url = new UriType(); // bb
2747      return this.url;
2748    }
2749
2750    public boolean hasUrlElement() { 
2751      return this.url != null && !this.url.isEmpty();
2752    }
2753
2754    public boolean hasUrl() { 
2755      return this.url != null && !this.url.isEmpty();
2756    }
2757
2758    /**
2759     * @param value {@link #url} (An absolute URI that is used to identify this concept map 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 concept map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the concept map is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2760     */
2761    public ConceptMap setUrlElement(UriType value) { 
2762      this.url = value;
2763      return this;
2764    }
2765
2766    /**
2767     * @return An absolute URI that is used to identify this concept map 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 concept map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the concept map is stored on different servers.
2768     */
2769    public String getUrl() { 
2770      return this.url == null ? null : this.url.getValue();
2771    }
2772
2773    /**
2774     * @param value An absolute URI that is used to identify this concept map 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 concept map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the concept map is stored on different servers.
2775     */
2776    public ConceptMap setUrl(String value) { 
2777      if (Utilities.noString(value))
2778        this.url = null;
2779      else {
2780        if (this.url == null)
2781          this.url = new UriType();
2782        this.url.setValue(value);
2783      }
2784      return this;
2785    }
2786
2787    /**
2788     * @return {@link #identifier} (A formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance.)
2789     */
2790    public List<Identifier> getIdentifier() { 
2791      if (this.identifier == null)
2792        if (Configuration.errorOnAutoCreate())
2793          throw new Error("Attempt to auto-create ConceptMap.identifier");
2794        else if (Configuration.doAutoCreate())
2795          this.identifier = new Identifier(); // cc
2796      List<Identifier> result = new ArrayList<>();
2797      result.add(this.identifier);
2798      return result;
2799    }
2800
2801    public boolean hasIdentifier() { 
2802      return this.identifier != null && !this.identifier.isEmpty();
2803    }
2804
2805    /**
2806     * @param value {@link #identifier} (A formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance.)
2807     */
2808    public ConceptMap setIdentifier(Identifier value) { 
2809      this.identifier = value;
2810      return this;
2811    }
2812
2813    /**
2814     * @return {@link #version} (The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the concept map 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
2815     */
2816    public StringType getVersionElement() { 
2817      if (this.version == null)
2818        if (Configuration.errorOnAutoCreate())
2819          throw new Error("Attempt to auto-create ConceptMap.version");
2820        else if (Configuration.doAutoCreate())
2821          this.version = new StringType(); // bb
2822      return this.version;
2823    }
2824
2825    public boolean hasVersionElement() { 
2826      return this.version != null && !this.version.isEmpty();
2827    }
2828
2829    public boolean hasVersion() { 
2830      return this.version != null && !this.version.isEmpty();
2831    }
2832
2833    /**
2834     * @param value {@link #version} (The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the concept map 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
2835     */
2836    public ConceptMap setVersionElement(StringType value) { 
2837      this.version = value;
2838      return this;
2839    }
2840
2841    /**
2842     * @return The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the concept map 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.
2843     */
2844    public String getVersion() { 
2845      return this.version == null ? null : this.version.getValue();
2846    }
2847
2848    /**
2849     * @param value The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the concept map 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.
2850     */
2851    public ConceptMap setVersion(String value) { 
2852      if (Utilities.noString(value))
2853        this.version = null;
2854      else {
2855        if (this.version == null)
2856          this.version = new StringType();
2857        this.version.setValue(value);
2858      }
2859      return this;
2860    }
2861
2862    /**
2863     * @return {@link #name} (A natural language name identifying the concept map. 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
2864     */
2865    public StringType getNameElement() { 
2866      if (this.name == null)
2867        if (Configuration.errorOnAutoCreate())
2868          throw new Error("Attempt to auto-create ConceptMap.name");
2869        else if (Configuration.doAutoCreate())
2870          this.name = new StringType(); // bb
2871      return this.name;
2872    }
2873
2874    public boolean hasNameElement() { 
2875      return this.name != null && !this.name.isEmpty();
2876    }
2877
2878    public boolean hasName() { 
2879      return this.name != null && !this.name.isEmpty();
2880    }
2881
2882    /**
2883     * @param value {@link #name} (A natural language name identifying the concept map. 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
2884     */
2885    public ConceptMap setNameElement(StringType value) { 
2886      this.name = value;
2887      return this;
2888    }
2889
2890    /**
2891     * @return A natural language name identifying the concept map. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2892     */
2893    public String getName() { 
2894      return this.name == null ? null : this.name.getValue();
2895    }
2896
2897    /**
2898     * @param value A natural language name identifying the concept map. This name should be usable as an identifier for the module by machine processing applications such as code generation.
2899     */
2900    public ConceptMap setName(String value) { 
2901      if (Utilities.noString(value))
2902        this.name = null;
2903      else {
2904        if (this.name == null)
2905          this.name = new StringType();
2906        this.name.setValue(value);
2907      }
2908      return this;
2909    }
2910
2911    /**
2912     * @return {@link #title} (A short, descriptive, user-friendly title for the concept map.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2913     */
2914    public StringType getTitleElement() { 
2915      if (this.title == null)
2916        if (Configuration.errorOnAutoCreate())
2917          throw new Error("Attempt to auto-create ConceptMap.title");
2918        else if (Configuration.doAutoCreate())
2919          this.title = new StringType(); // bb
2920      return this.title;
2921    }
2922
2923    public boolean hasTitleElement() { 
2924      return this.title != null && !this.title.isEmpty();
2925    }
2926
2927    public boolean hasTitle() { 
2928      return this.title != null && !this.title.isEmpty();
2929    }
2930
2931    /**
2932     * @param value {@link #title} (A short, descriptive, user-friendly title for the concept map.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
2933     */
2934    public ConceptMap setTitleElement(StringType value) { 
2935      this.title = value;
2936      return this;
2937    }
2938
2939    /**
2940     * @return A short, descriptive, user-friendly title for the concept map.
2941     */
2942    public String getTitle() { 
2943      return this.title == null ? null : this.title.getValue();
2944    }
2945
2946    /**
2947     * @param value A short, descriptive, user-friendly title for the concept map.
2948     */
2949    public ConceptMap setTitle(String value) { 
2950      if (Utilities.noString(value))
2951        this.title = null;
2952      else {
2953        if (this.title == null)
2954          this.title = new StringType();
2955        this.title.setValue(value);
2956      }
2957      return this;
2958    }
2959
2960    /**
2961     * @return {@link #status} (The status of this concept map. 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
2962     */
2963    public Enumeration<PublicationStatus> getStatusElement() { 
2964      if (this.status == null)
2965        if (Configuration.errorOnAutoCreate())
2966          throw new Error("Attempt to auto-create ConceptMap.status");
2967        else if (Configuration.doAutoCreate())
2968          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
2969      return this.status;
2970    }
2971
2972    public boolean hasStatusElement() { 
2973      return this.status != null && !this.status.isEmpty();
2974    }
2975
2976    public boolean hasStatus() { 
2977      return this.status != null && !this.status.isEmpty();
2978    }
2979
2980    /**
2981     * @param value {@link #status} (The status of this concept map. 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
2982     */
2983    public ConceptMap setStatusElement(Enumeration<PublicationStatus> value) { 
2984      this.status = value;
2985      return this;
2986    }
2987
2988    /**
2989     * @return The status of this concept map. Enables tracking the life-cycle of the content.
2990     */
2991    public PublicationStatus getStatus() { 
2992      return this.status == null ? null : this.status.getValue();
2993    }
2994
2995    /**
2996     * @param value The status of this concept map. Enables tracking the life-cycle of the content.
2997     */
2998    public ConceptMap setStatus(PublicationStatus value) { 
2999        if (this.status == null)
3000          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
3001        this.status.setValue(value);
3002      return this;
3003    }
3004
3005    /**
3006     * @return {@link #experimental} (A Boolean value to indicate that this concept map 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
3007     */
3008    public BooleanType getExperimentalElement() { 
3009      if (this.experimental == null)
3010        if (Configuration.errorOnAutoCreate())
3011          throw new Error("Attempt to auto-create ConceptMap.experimental");
3012        else if (Configuration.doAutoCreate())
3013          this.experimental = new BooleanType(); // bb
3014      return this.experimental;
3015    }
3016
3017    public boolean hasExperimentalElement() { 
3018      return this.experimental != null && !this.experimental.isEmpty();
3019    }
3020
3021    public boolean hasExperimental() { 
3022      return this.experimental != null && !this.experimental.isEmpty();
3023    }
3024
3025    /**
3026     * @param value {@link #experimental} (A Boolean value to indicate that this concept map 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
3027     */
3028    public ConceptMap setExperimentalElement(BooleanType value) { 
3029      this.experimental = value;
3030      return this;
3031    }
3032
3033    /**
3034     * @return A Boolean value to indicate that this concept map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3035     */
3036    public boolean getExperimental() { 
3037      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
3038    }
3039
3040    /**
3041     * @param value A Boolean value to indicate that this concept map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
3042     */
3043    public ConceptMap setExperimental(boolean value) { 
3044        if (this.experimental == null)
3045          this.experimental = new BooleanType();
3046        this.experimental.setValue(value);
3047      return this;
3048    }
3049
3050    /**
3051     * @return {@link #date} (The date  (and optionally time) when the concept map 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 concept map changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
3052     */
3053    public DateTimeType getDateElement() { 
3054      if (this.date == null)
3055        if (Configuration.errorOnAutoCreate())
3056          throw new Error("Attempt to auto-create ConceptMap.date");
3057        else if (Configuration.doAutoCreate())
3058          this.date = new DateTimeType(); // bb
3059      return this.date;
3060    }
3061
3062    public boolean hasDateElement() { 
3063      return this.date != null && !this.date.isEmpty();
3064    }
3065
3066    public boolean hasDate() { 
3067      return this.date != null && !this.date.isEmpty();
3068    }
3069
3070    /**
3071     * @param value {@link #date} (The date  (and optionally time) when the concept map 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 concept map changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
3072     */
3073    public ConceptMap setDateElement(DateTimeType value) { 
3074      this.date = value;
3075      return this;
3076    }
3077
3078    /**
3079     * @return The date  (and optionally time) when the concept map 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 concept map changes.
3080     */
3081    public Date getDate() { 
3082      return this.date == null ? null : this.date.getValue();
3083    }
3084
3085    /**
3086     * @param value The date  (and optionally time) when the concept map 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 concept map changes.
3087     */
3088    public ConceptMap setDate(Date value) { 
3089      if (value == null)
3090        this.date = null;
3091      else {
3092        if (this.date == null)
3093          this.date = new DateTimeType();
3094        this.date.setValue(value);
3095      }
3096      return this;
3097    }
3098
3099    /**
3100     * @return {@link #publisher} (The name of the organization or individual that published the concept map.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
3101     */
3102    public StringType getPublisherElement() { 
3103      if (this.publisher == null)
3104        if (Configuration.errorOnAutoCreate())
3105          throw new Error("Attempt to auto-create ConceptMap.publisher");
3106        else if (Configuration.doAutoCreate())
3107          this.publisher = new StringType(); // bb
3108      return this.publisher;
3109    }
3110
3111    public boolean hasPublisherElement() { 
3112      return this.publisher != null && !this.publisher.isEmpty();
3113    }
3114
3115    public boolean hasPublisher() { 
3116      return this.publisher != null && !this.publisher.isEmpty();
3117    }
3118
3119    /**
3120     * @param value {@link #publisher} (The name of the organization or individual that published the concept map.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
3121     */
3122    public ConceptMap setPublisherElement(StringType value) { 
3123      this.publisher = value;
3124      return this;
3125    }
3126
3127    /**
3128     * @return The name of the organization or individual that published the concept map.
3129     */
3130    public String getPublisher() { 
3131      return this.publisher == null ? null : this.publisher.getValue();
3132    }
3133
3134    /**
3135     * @param value The name of the organization or individual that published the concept map.
3136     */
3137    public ConceptMap setPublisher(String value) { 
3138      if (Utilities.noString(value))
3139        this.publisher = null;
3140      else {
3141        if (this.publisher == null)
3142          this.publisher = new StringType();
3143        this.publisher.setValue(value);
3144      }
3145      return this;
3146    }
3147
3148    /**
3149     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
3150     */
3151    public List<ContactDetail> getContact() { 
3152      if (this.contact == null)
3153        this.contact = new ArrayList<ContactDetail>();
3154      return this.contact;
3155    }
3156
3157    /**
3158     * @return Returns a reference to <code>this</code> for easy method chaining
3159     */
3160    public ConceptMap setContact(List<ContactDetail> theContact) { 
3161      this.contact = theContact;
3162      return this;
3163    }
3164
3165    public boolean hasContact() { 
3166      if (this.contact == null)
3167        return false;
3168      for (ContactDetail item : this.contact)
3169        if (!item.isEmpty())
3170          return true;
3171      return false;
3172    }
3173
3174    public ContactDetail addContact() { //3
3175      ContactDetail t = new ContactDetail();
3176      if (this.contact == null)
3177        this.contact = new ArrayList<ContactDetail>();
3178      this.contact.add(t);
3179      return t;
3180    }
3181
3182    public ConceptMap addContact(ContactDetail t) { //3
3183      if (t == null)
3184        return this;
3185      if (this.contact == null)
3186        this.contact = new ArrayList<ContactDetail>();
3187      this.contact.add(t);
3188      return this;
3189    }
3190
3191    /**
3192     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist {3}
3193     */
3194    public ContactDetail getContactFirstRep() { 
3195      if (getContact().isEmpty()) {
3196        addContact();
3197      }
3198      return getContact().get(0);
3199    }
3200
3201    /**
3202     * @return {@link #description} (A free text natural language description of the concept map from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3203     */
3204    public MarkdownType getDescriptionElement() { 
3205      if (this.description == null)
3206        if (Configuration.errorOnAutoCreate())
3207          throw new Error("Attempt to auto-create ConceptMap.description");
3208        else if (Configuration.doAutoCreate())
3209          this.description = new MarkdownType(); // bb
3210      return this.description;
3211    }
3212
3213    public boolean hasDescriptionElement() { 
3214      return this.description != null && !this.description.isEmpty();
3215    }
3216
3217    public boolean hasDescription() { 
3218      return this.description != null && !this.description.isEmpty();
3219    }
3220
3221    /**
3222     * @param value {@link #description} (A free text natural language description of the concept map from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
3223     */
3224    public ConceptMap setDescriptionElement(MarkdownType value) { 
3225      this.description = value;
3226      return this;
3227    }
3228
3229    /**
3230     * @return A free text natural language description of the concept map from a consumer's perspective.
3231     */
3232    public String getDescription() { 
3233      return this.description == null ? null : this.description.getValue();
3234    }
3235
3236    /**
3237     * @param value A free text natural language description of the concept map from a consumer's perspective.
3238     */
3239    public ConceptMap setDescription(String value) { 
3240      if (value == null)
3241        this.description = null;
3242      else {
3243        if (this.description == null)
3244          this.description = new MarkdownType();
3245        this.description.setValue(value);
3246      }
3247      return this;
3248    }
3249
3250    /**
3251     * @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 concept map instances.)
3252     */
3253    public List<UsageContext> getUseContext() { 
3254      if (this.useContext == null)
3255        this.useContext = new ArrayList<UsageContext>();
3256      return this.useContext;
3257    }
3258
3259    /**
3260     * @return Returns a reference to <code>this</code> for easy method chaining
3261     */
3262    public ConceptMap setUseContext(List<UsageContext> theUseContext) { 
3263      this.useContext = theUseContext;
3264      return this;
3265    }
3266
3267    public boolean hasUseContext() { 
3268      if (this.useContext == null)
3269        return false;
3270      for (UsageContext item : this.useContext)
3271        if (!item.isEmpty())
3272          return true;
3273      return false;
3274    }
3275
3276    public UsageContext addUseContext() { //3
3277      UsageContext t = new UsageContext();
3278      if (this.useContext == null)
3279        this.useContext = new ArrayList<UsageContext>();
3280      this.useContext.add(t);
3281      return t;
3282    }
3283
3284    public ConceptMap addUseContext(UsageContext t) { //3
3285      if (t == null)
3286        return this;
3287      if (this.useContext == null)
3288        this.useContext = new ArrayList<UsageContext>();
3289      this.useContext.add(t);
3290      return this;
3291    }
3292
3293    /**
3294     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist {3}
3295     */
3296    public UsageContext getUseContextFirstRep() { 
3297      if (getUseContext().isEmpty()) {
3298        addUseContext();
3299      }
3300      return getUseContext().get(0);
3301    }
3302
3303    /**
3304     * @return {@link #jurisdiction} (A legal or geographic region in which the concept map is intended to be used.)
3305     */
3306    public List<CodeableConcept> getJurisdiction() { 
3307      if (this.jurisdiction == null)
3308        this.jurisdiction = new ArrayList<CodeableConcept>();
3309      return this.jurisdiction;
3310    }
3311
3312    /**
3313     * @return Returns a reference to <code>this</code> for easy method chaining
3314     */
3315    public ConceptMap setJurisdiction(List<CodeableConcept> theJurisdiction) { 
3316      this.jurisdiction = theJurisdiction;
3317      return this;
3318    }
3319
3320    public boolean hasJurisdiction() { 
3321      if (this.jurisdiction == null)
3322        return false;
3323      for (CodeableConcept item : this.jurisdiction)
3324        if (!item.isEmpty())
3325          return true;
3326      return false;
3327    }
3328
3329    public CodeableConcept addJurisdiction() { //3
3330      CodeableConcept t = new CodeableConcept();
3331      if (this.jurisdiction == null)
3332        this.jurisdiction = new ArrayList<CodeableConcept>();
3333      this.jurisdiction.add(t);
3334      return t;
3335    }
3336
3337    public ConceptMap addJurisdiction(CodeableConcept t) { //3
3338      if (t == null)
3339        return this;
3340      if (this.jurisdiction == null)
3341        this.jurisdiction = new ArrayList<CodeableConcept>();
3342      this.jurisdiction.add(t);
3343      return this;
3344    }
3345
3346    /**
3347     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist {3}
3348     */
3349    public CodeableConcept getJurisdictionFirstRep() { 
3350      if (getJurisdiction().isEmpty()) {
3351        addJurisdiction();
3352      }
3353      return getJurisdiction().get(0);
3354    }
3355
3356    /**
3357     * @return {@link #purpose} (Explanation of why this concept map 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
3358     */
3359    public MarkdownType getPurposeElement() { 
3360      if (this.purpose == null)
3361        if (Configuration.errorOnAutoCreate())
3362          throw new Error("Attempt to auto-create ConceptMap.purpose");
3363        else if (Configuration.doAutoCreate())
3364          this.purpose = new MarkdownType(); // bb
3365      return this.purpose;
3366    }
3367
3368    public boolean hasPurposeElement() { 
3369      return this.purpose != null && !this.purpose.isEmpty();
3370    }
3371
3372    public boolean hasPurpose() { 
3373      return this.purpose != null && !this.purpose.isEmpty();
3374    }
3375
3376    /**
3377     * @param value {@link #purpose} (Explanation of why this concept map 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
3378     */
3379    public ConceptMap setPurposeElement(MarkdownType value) { 
3380      this.purpose = value;
3381      return this;
3382    }
3383
3384    /**
3385     * @return Explanation of why this concept map is needed and why it has been designed as it has.
3386     */
3387    public String getPurpose() { 
3388      return this.purpose == null ? null : this.purpose.getValue();
3389    }
3390
3391    /**
3392     * @param value Explanation of why this concept map is needed and why it has been designed as it has.
3393     */
3394    public ConceptMap setPurpose(String value) { 
3395      if (value == null)
3396        this.purpose = null;
3397      else {
3398        if (this.purpose == null)
3399          this.purpose = new MarkdownType();
3400        this.purpose.setValue(value);
3401      }
3402      return this;
3403    }
3404
3405    /**
3406     * @return {@link #copyright} (A copyright statement relating to the concept map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the concept map.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3407     */
3408    public MarkdownType getCopyrightElement() { 
3409      if (this.copyright == null)
3410        if (Configuration.errorOnAutoCreate())
3411          throw new Error("Attempt to auto-create ConceptMap.copyright");
3412        else if (Configuration.doAutoCreate())
3413          this.copyright = new MarkdownType(); // bb
3414      return this.copyright;
3415    }
3416
3417    public boolean hasCopyrightElement() { 
3418      return this.copyright != null && !this.copyright.isEmpty();
3419    }
3420
3421    public boolean hasCopyright() { 
3422      return this.copyright != null && !this.copyright.isEmpty();
3423    }
3424
3425    /**
3426     * @param value {@link #copyright} (A copyright statement relating to the concept map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the concept map.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
3427     */
3428    public ConceptMap setCopyrightElement(MarkdownType value) { 
3429      this.copyright = value;
3430      return this;
3431    }
3432
3433    /**
3434     * @return A copyright statement relating to the concept map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the concept map.
3435     */
3436    public String getCopyright() { 
3437      return this.copyright == null ? null : this.copyright.getValue();
3438    }
3439
3440    /**
3441     * @param value A copyright statement relating to the concept map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the concept map.
3442     */
3443    public ConceptMap setCopyright(String value) { 
3444      if (value == null)
3445        this.copyright = null;
3446      else {
3447        if (this.copyright == null)
3448          this.copyright = new MarkdownType();
3449        this.copyright.setValue(value);
3450      }
3451      return this;
3452    }
3453
3454    /**
3455     * @return {@link #source} (Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.)
3456     */
3457    public DataType getSource() { 
3458      return this.source;
3459    }
3460
3461    /**
3462     * @return {@link #source} (Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.)
3463     */
3464    public UriType getSourceUriType() throws FHIRException { 
3465      if (this.source == null)
3466        this.source = new UriType();
3467      if (!(this.source instanceof UriType))
3468        throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.source.getClass().getName()+" was encountered");
3469      return (UriType) this.source;
3470    }
3471
3472    public boolean hasSourceUriType() { 
3473      return this != null && this.source instanceof UriType;
3474    }
3475
3476    /**
3477     * @return {@link #source} (Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.)
3478     */
3479    public CanonicalType getSourceCanonicalType() throws FHIRException { 
3480      if (this.source == null)
3481        this.source = new CanonicalType();
3482      if (!(this.source instanceof CanonicalType))
3483        throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.source.getClass().getName()+" was encountered");
3484      return (CanonicalType) this.source;
3485    }
3486
3487    public boolean hasSourceCanonicalType() { 
3488      return this != null && this.source instanceof CanonicalType;
3489    }
3490
3491    public boolean hasSource() { 
3492      return this.source != null && !this.source.isEmpty();
3493    }
3494
3495    /**
3496     * @param value {@link #source} (Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.)
3497     */
3498    public ConceptMap setSource(DataType value) { 
3499      if (value != null && !(value instanceof UriType || value instanceof CanonicalType))
3500        throw new Error("Not the right type for ConceptMap.source[x]: "+value.fhirType());
3501      this.source = value;
3502      return this;
3503    }
3504
3505    /**
3506     * @return {@link #target} (The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.)
3507     */
3508    public DataType getTarget() { 
3509      return this.target;
3510    }
3511
3512    /**
3513     * @return {@link #target} (The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.)
3514     */
3515    public UriType getTargetUriType() throws FHIRException { 
3516      if (this.target == null)
3517        this.target = new UriType();
3518      if (!(this.target instanceof UriType))
3519        throw new FHIRException("Type mismatch: the type UriType was expected, but "+this.target.getClass().getName()+" was encountered");
3520      return (UriType) this.target;
3521    }
3522
3523    public boolean hasTargetUriType() { 
3524      return this != null && this.target instanceof UriType;
3525    }
3526
3527    /**
3528     * @return {@link #target} (The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.)
3529     */
3530    public CanonicalType getTargetCanonicalType() throws FHIRException { 
3531      if (this.target == null)
3532        this.target = new CanonicalType();
3533      if (!(this.target instanceof CanonicalType))
3534        throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.target.getClass().getName()+" was encountered");
3535      return (CanonicalType) this.target;
3536    }
3537
3538    public boolean hasTargetCanonicalType() { 
3539      return this != null && this.target instanceof CanonicalType;
3540    }
3541
3542    public boolean hasTarget() { 
3543      return this.target != null && !this.target.isEmpty();
3544    }
3545
3546    /**
3547     * @param value {@link #target} (The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.)
3548     */
3549    public ConceptMap setTarget(DataType value) { 
3550      if (value != null && !(value instanceof UriType || value instanceof CanonicalType))
3551        throw new Error("Not the right type for ConceptMap.target[x]: "+value.fhirType());
3552      this.target = value;
3553      return this;
3554    }
3555
3556    /**
3557     * @return {@link #group} (A group of mappings that all have the same source and target system.)
3558     */
3559    public List<ConceptMapGroupComponent> getGroup() { 
3560      if (this.group == null)
3561        this.group = new ArrayList<ConceptMapGroupComponent>();
3562      return this.group;
3563    }
3564
3565    /**
3566     * @return Returns a reference to <code>this</code> for easy method chaining
3567     */
3568    public ConceptMap setGroup(List<ConceptMapGroupComponent> theGroup) { 
3569      this.group = theGroup;
3570      return this;
3571    }
3572
3573    public boolean hasGroup() { 
3574      if (this.group == null)
3575        return false;
3576      for (ConceptMapGroupComponent item : this.group)
3577        if (!item.isEmpty())
3578          return true;
3579      return false;
3580    }
3581
3582    public ConceptMapGroupComponent addGroup() { //3
3583      ConceptMapGroupComponent t = new ConceptMapGroupComponent();
3584      if (this.group == null)
3585        this.group = new ArrayList<ConceptMapGroupComponent>();
3586      this.group.add(t);
3587      return t;
3588    }
3589
3590    public ConceptMap addGroup(ConceptMapGroupComponent t) { //3
3591      if (t == null)
3592        return this;
3593      if (this.group == null)
3594        this.group = new ArrayList<ConceptMapGroupComponent>();
3595      this.group.add(t);
3596      return this;
3597    }
3598
3599    /**
3600     * @return The first repetition of repeating field {@link #group}, creating it if it does not already exist {3}
3601     */
3602    public ConceptMapGroupComponent getGroupFirstRep() { 
3603      if (getGroup().isEmpty()) {
3604        addGroup();
3605      }
3606      return getGroup().get(0);
3607    }
3608
3609      protected void listChildren(List<Property> children) {
3610        super.listChildren(children);
3611        children.add(new Property("url", "uri", "An absolute URI that is used to identify this concept map 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 concept map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the concept map is stored on different servers.", 0, 1, url));
3612        children.add(new Property("identifier", "Identifier", "A formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, 1, identifier));
3613        children.add(new Property("version", "string", "The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the concept map 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));
3614        children.add(new Property("name", "string", "A natural language name identifying the concept map. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
3615        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the concept map.", 0, 1, title));
3616        children.add(new Property("status", "code", "The status of this concept map. Enables tracking the life-cycle of the content.", 0, 1, status));
3617        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this concept map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
3618        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the concept map 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 concept map changes.", 0, 1, date));
3619        children.add(new Property("publisher", "string", "The name of the organization or individual that published the concept map.", 0, 1, publisher));
3620        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));
3621        children.add(new Property("description", "markdown", "A free text natural language description of the concept map from a consumer's perspective.", 0, 1, description));
3622        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 concept map instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
3623        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the concept map is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
3624        children.add(new Property("purpose", "markdown", "Explanation of why this concept map is needed and why it has been designed as it has.", 0, 1, purpose));
3625        children.add(new Property("copyright", "markdown", "A copyright statement relating to the concept map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the concept map.", 0, 1, copyright));
3626        children.add(new Property("source[x]", "uri|canonical(ValueSet)", "Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.", 0, 1, source));
3627        children.add(new Property("target[x]", "uri|canonical(ValueSet)", "The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.", 0, 1, target));
3628        children.add(new Property("group", "", "A group of mappings that all have the same source and target system.", 0, java.lang.Integer.MAX_VALUE, group));
3629      }
3630
3631      @Override
3632      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
3633        switch (_hash) {
3634        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this concept map 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 concept map is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the concept map is stored on different servers.", 0, 1, url);
3635        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A formal identifier that is used to identify this concept map when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, 1, identifier);
3636        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the concept map when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the concept map 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);
3637        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the concept map. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
3638        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the concept map.", 0, 1, title);
3639        case -892481550: /*status*/  return new Property("status", "code", "The status of this concept map. Enables tracking the life-cycle of the content.", 0, 1, status);
3640        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this concept map is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
3641        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the concept map 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 concept map changes.", 0, 1, date);
3642        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the concept map.", 0, 1, publisher);
3643        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);
3644        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the concept map from a consumer's perspective.", 0, 1, description);
3645        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 concept map instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
3646        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the concept map is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
3647        case -220463842: /*purpose*/  return new Property("purpose", "markdown", "Explanation of why this concept map is needed and why it has been designed as it has.", 0, 1, purpose);
3648        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the concept map and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the concept map.", 0, 1, copyright);
3649        case -1698413947: /*source[x]*/  return new Property("source[x]", "uri|canonical(ValueSet)", "Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.", 0, 1, source);
3650        case -896505829: /*source*/  return new Property("source[x]", "uri|canonical(ValueSet)", "Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.", 0, 1, source);
3651        case -1698419887: /*sourceUri*/  return new Property("source[x]", "uri", "Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.", 0, 1, source);
3652        case 1509247769: /*sourceCanonical*/  return new Property("source[x]", "canonical(ValueSet)", "Identifier for the source value set that contains the concepts that are being mapped and provides context for the mappings.", 0, 1, source);
3653        case -815579825: /*target[x]*/  return new Property("target[x]", "uri|canonical(ValueSet)", "The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.", 0, 1, target);
3654        case -880905839: /*target*/  return new Property("target[x]", "uri|canonical(ValueSet)", "The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.", 0, 1, target);
3655        case -815585765: /*targetUri*/  return new Property("target[x]", "uri", "The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.", 0, 1, target);
3656        case -1281653149: /*targetCanonical*/  return new Property("target[x]", "canonical(ValueSet)", "The target value set provides context for the mappings. Note that the mapping is made between concepts, not between value sets, but the value set provides important context about how the concept mapping choices are made.", 0, 1, target);
3657        case 98629247: /*group*/  return new Property("group", "", "A group of mappings that all have the same source and target system.", 0, java.lang.Integer.MAX_VALUE, group);
3658        default: return super.getNamedProperty(_hash, _name, _checkValid);
3659        }
3660
3661      }
3662
3663      @Override
3664      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3665        switch (hash) {
3666        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
3667        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
3668        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
3669        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3670        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
3671        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
3672        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
3673        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
3674        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
3675        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
3676        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
3677        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
3678        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
3679        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : new Base[] {this.purpose}; // MarkdownType
3680        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
3681        case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // DataType
3682        case -880905839: /*target*/ return this.target == null ? new Base[0] : new Base[] {this.target}; // DataType
3683        case 98629247: /*group*/ return this.group == null ? new Base[0] : this.group.toArray(new Base[this.group.size()]); // ConceptMapGroupComponent
3684        default: return super.getProperty(hash, name, checkValid);
3685        }
3686
3687      }
3688
3689      @Override
3690      public Base setProperty(int hash, String name, Base value) throws FHIRException {
3691        switch (hash) {
3692        case 116079: // url
3693          this.url = TypeConvertor.castToUri(value); // UriType
3694          return value;
3695        case -1618432855: // identifier
3696          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
3697          return value;
3698        case 351608024: // version
3699          this.version = TypeConvertor.castToString(value); // StringType
3700          return value;
3701        case 3373707: // name
3702          this.name = TypeConvertor.castToString(value); // StringType
3703          return value;
3704        case 110371416: // title
3705          this.title = TypeConvertor.castToString(value); // StringType
3706          return value;
3707        case -892481550: // status
3708          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3709          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3710          return value;
3711        case -404562712: // experimental
3712          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3713          return value;
3714        case 3076014: // date
3715          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3716          return value;
3717        case 1447404028: // publisher
3718          this.publisher = TypeConvertor.castToString(value); // StringType
3719          return value;
3720        case 951526432: // contact
3721          this.getContact().add(TypeConvertor.castToContactDetail(value)); // ContactDetail
3722          return value;
3723        case -1724546052: // description
3724          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3725          return value;
3726        case -669707736: // useContext
3727          this.getUseContext().add(TypeConvertor.castToUsageContext(value)); // UsageContext
3728          return value;
3729        case -507075711: // jurisdiction
3730          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
3731          return value;
3732        case -220463842: // purpose
3733          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3734          return value;
3735        case 1522889671: // copyright
3736          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
3737          return value;
3738        case -896505829: // source
3739          this.source = TypeConvertor.castToType(value); // DataType
3740          return value;
3741        case -880905839: // target
3742          this.target = TypeConvertor.castToType(value); // DataType
3743          return value;
3744        case 98629247: // group
3745          this.getGroup().add((ConceptMapGroupComponent) value); // ConceptMapGroupComponent
3746          return value;
3747        default: return super.setProperty(hash, name, value);
3748        }
3749
3750      }
3751
3752      @Override
3753      public Base setProperty(String name, Base value) throws FHIRException {
3754        if (name.equals("url")) {
3755          this.url = TypeConvertor.castToUri(value); // UriType
3756        } else if (name.equals("identifier")) {
3757          this.identifier = TypeConvertor.castToIdentifier(value); // Identifier
3758        } else if (name.equals("version")) {
3759          this.version = TypeConvertor.castToString(value); // StringType
3760        } else if (name.equals("name")) {
3761          this.name = TypeConvertor.castToString(value); // StringType
3762        } else if (name.equals("title")) {
3763          this.title = TypeConvertor.castToString(value); // StringType
3764        } else if (name.equals("status")) {
3765          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
3766          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
3767        } else if (name.equals("experimental")) {
3768          this.experimental = TypeConvertor.castToBoolean(value); // BooleanType
3769        } else if (name.equals("date")) {
3770          this.date = TypeConvertor.castToDateTime(value); // DateTimeType
3771        } else if (name.equals("publisher")) {
3772          this.publisher = TypeConvertor.castToString(value); // StringType
3773        } else if (name.equals("contact")) {
3774          this.getContact().add(TypeConvertor.castToContactDetail(value));
3775        } else if (name.equals("description")) {
3776          this.description = TypeConvertor.castToMarkdown(value); // MarkdownType
3777        } else if (name.equals("useContext")) {
3778          this.getUseContext().add(TypeConvertor.castToUsageContext(value));
3779        } else if (name.equals("jurisdiction")) {
3780          this.getJurisdiction().add(TypeConvertor.castToCodeableConcept(value));
3781        } else if (name.equals("purpose")) {
3782          this.purpose = TypeConvertor.castToMarkdown(value); // MarkdownType
3783        } else if (name.equals("copyright")) {
3784          this.copyright = TypeConvertor.castToMarkdown(value); // MarkdownType
3785        } else if (name.equals("source[x]")) {
3786          this.source = TypeConvertor.castToType(value); // DataType
3787        } else if (name.equals("target[x]")) {
3788          this.target = TypeConvertor.castToType(value); // DataType
3789        } else if (name.equals("group")) {
3790          this.getGroup().add((ConceptMapGroupComponent) value);
3791        } else
3792          return super.setProperty(name, value);
3793        return value;
3794      }
3795
3796      @Override
3797      public Base makeProperty(int hash, String name) throws FHIRException {
3798        switch (hash) {
3799        case 116079:  return getUrlElement();
3800        case -1618432855:  return getIdentifier().get(0);
3801        case 351608024:  return getVersionElement();
3802        case 3373707:  return getNameElement();
3803        case 110371416:  return getTitleElement();
3804        case -892481550:  return getStatusElement();
3805        case -404562712:  return getExperimentalElement();
3806        case 3076014:  return getDateElement();
3807        case 1447404028:  return getPublisherElement();
3808        case 951526432:  return addContact(); 
3809        case -1724546052:  return getDescriptionElement();
3810        case -669707736:  return addUseContext(); 
3811        case -507075711:  return addJurisdiction(); 
3812        case -220463842:  return getPurposeElement();
3813        case 1522889671:  return getCopyrightElement();
3814        case -1698413947:  return getSource();
3815        case -896505829:  return getSource();
3816        case -815579825:  return getTarget();
3817        case -880905839:  return getTarget();
3818        case 98629247:  return addGroup(); 
3819        default: return super.makeProperty(hash, name);
3820        }
3821
3822      }
3823
3824      @Override
3825      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
3826        switch (hash) {
3827        case 116079: /*url*/ return new String[] {"uri"};
3828        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
3829        case 351608024: /*version*/ return new String[] {"string"};
3830        case 3373707: /*name*/ return new String[] {"string"};
3831        case 110371416: /*title*/ return new String[] {"string"};
3832        case -892481550: /*status*/ return new String[] {"code"};
3833        case -404562712: /*experimental*/ return new String[] {"boolean"};
3834        case 3076014: /*date*/ return new String[] {"dateTime"};
3835        case 1447404028: /*publisher*/ return new String[] {"string"};
3836        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
3837        case -1724546052: /*description*/ return new String[] {"markdown"};
3838        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
3839        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
3840        case -220463842: /*purpose*/ return new String[] {"markdown"};
3841        case 1522889671: /*copyright*/ return new String[] {"markdown"};
3842        case -896505829: /*source*/ return new String[] {"uri", "canonical"};
3843        case -880905839: /*target*/ return new String[] {"uri", "canonical"};
3844        case 98629247: /*group*/ return new String[] {};
3845        default: return super.getTypesForProperty(hash, name);
3846        }
3847
3848      }
3849
3850      @Override
3851      public Base addChild(String name) throws FHIRException {
3852        if (name.equals("url")) {
3853          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.url");
3854        }
3855        else if (name.equals("identifier")) {
3856          this.identifier = new Identifier();
3857          return this.identifier;
3858        }
3859        else if (name.equals("version")) {
3860          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.version");
3861        }
3862        else if (name.equals("name")) {
3863          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.name");
3864        }
3865        else if (name.equals("title")) {
3866          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.title");
3867        }
3868        else if (name.equals("status")) {
3869          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.status");
3870        }
3871        else if (name.equals("experimental")) {
3872          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.experimental");
3873        }
3874        else if (name.equals("date")) {
3875          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.date");
3876        }
3877        else if (name.equals("publisher")) {
3878          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.publisher");
3879        }
3880        else if (name.equals("contact")) {
3881          return addContact();
3882        }
3883        else if (name.equals("description")) {
3884          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.description");
3885        }
3886        else if (name.equals("useContext")) {
3887          return addUseContext();
3888        }
3889        else if (name.equals("jurisdiction")) {
3890          return addJurisdiction();
3891        }
3892        else if (name.equals("purpose")) {
3893          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.purpose");
3894        }
3895        else if (name.equals("copyright")) {
3896          throw new FHIRException("Cannot call addChild on a primitive type ConceptMap.copyright");
3897        }
3898        else if (name.equals("sourceUri")) {
3899          this.source = new UriType();
3900          return this.source;
3901        }
3902        else if (name.equals("sourceCanonical")) {
3903          this.source = new CanonicalType();
3904          return this.source;
3905        }
3906        else if (name.equals("targetUri")) {
3907          this.target = new UriType();
3908          return this.target;
3909        }
3910        else if (name.equals("targetCanonical")) {
3911          this.target = new CanonicalType();
3912          return this.target;
3913        }
3914        else if (name.equals("group")) {
3915          return addGroup();
3916        }
3917        else
3918          return super.addChild(name);
3919      }
3920
3921  public String fhirType() {
3922    return "ConceptMap";
3923
3924  }
3925
3926      public ConceptMap copy() {
3927        ConceptMap dst = new ConceptMap();
3928        copyValues(dst);
3929        return dst;
3930      }
3931
3932      public void copyValues(ConceptMap dst) {
3933        super.copyValues(dst);
3934        dst.url = url == null ? null : url.copy();
3935        dst.identifier = identifier == null ? null : identifier.copy();
3936        dst.version = version == null ? null : version.copy();
3937        dst.name = name == null ? null : name.copy();
3938        dst.title = title == null ? null : title.copy();
3939        dst.status = status == null ? null : status.copy();
3940        dst.experimental = experimental == null ? null : experimental.copy();
3941        dst.date = date == null ? null : date.copy();
3942        dst.publisher = publisher == null ? null : publisher.copy();
3943        if (contact != null) {
3944          dst.contact = new ArrayList<ContactDetail>();
3945          for (ContactDetail i : contact)
3946            dst.contact.add(i.copy());
3947        };
3948        dst.description = description == null ? null : description.copy();
3949        if (useContext != null) {
3950          dst.useContext = new ArrayList<UsageContext>();
3951          for (UsageContext i : useContext)
3952            dst.useContext.add(i.copy());
3953        };
3954        if (jurisdiction != null) {
3955          dst.jurisdiction = new ArrayList<CodeableConcept>();
3956          for (CodeableConcept i : jurisdiction)
3957            dst.jurisdiction.add(i.copy());
3958        };
3959        dst.purpose = purpose == null ? null : purpose.copy();
3960        dst.copyright = copyright == null ? null : copyright.copy();
3961        dst.source = source == null ? null : source.copy();
3962        dst.target = target == null ? null : target.copy();
3963        if (group != null) {
3964          dst.group = new ArrayList<ConceptMapGroupComponent>();
3965          for (ConceptMapGroupComponent i : group)
3966            dst.group.add(i.copy());
3967        };
3968      }
3969
3970      protected ConceptMap typedCopy() {
3971        return copy();
3972      }
3973
3974      @Override
3975      public boolean equalsDeep(Base other_) {
3976        if (!super.equalsDeep(other_))
3977          return false;
3978        if (!(other_ instanceof ConceptMap))
3979          return false;
3980        ConceptMap o = (ConceptMap) other_;
3981        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
3982           && compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(status, o.status, true)
3983           && compareDeep(experimental, o.experimental, true) && compareDeep(date, o.date, true) && compareDeep(publisher, o.publisher, true)
3984           && compareDeep(contact, o.contact, true) && compareDeep(description, o.description, true) && compareDeep(useContext, o.useContext, true)
3985           && compareDeep(jurisdiction, o.jurisdiction, true) && compareDeep(purpose, o.purpose, true) && compareDeep(copyright, o.copyright, true)
3986           && compareDeep(source, o.source, true) && compareDeep(target, o.target, true) && compareDeep(group, o.group, true)
3987          ;
3988      }
3989
3990      @Override
3991      public boolean equalsShallow(Base other_) {
3992        if (!super.equalsShallow(other_))
3993          return false;
3994        if (!(other_ instanceof ConceptMap))
3995          return false;
3996        ConceptMap o = (ConceptMap) other_;
3997        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
3998           && compareValues(title, o.title, true) && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true)
3999           && compareValues(date, o.date, true) && compareValues(publisher, o.publisher, true) && compareValues(description, o.description, true)
4000           && compareValues(purpose, o.purpose, true) && compareValues(copyright, o.copyright, true);
4001      }
4002
4003      public boolean isEmpty() {
4004        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(url, identifier, version
4005          , name, title, status, experimental, date, publisher, contact, description, useContext
4006          , jurisdiction, purpose, copyright, source, target, group);
4007      }
4008
4009  @Override
4010  public ResourceType getResourceType() {
4011    return ResourceType.ConceptMap;
4012   }
4013
4014  @Override
4015  public CanonicalResource setIdentifier(List<Identifier> theIdentifier) {
4016    if (theIdentifier.size() == 0) {
4017      this.identifier = null;
4018    } else {
4019      this.identifier = theIdentifier.get(0);
4020    }
4021    return this;
4022  }
4023
4024  @Override
4025  public Identifier addIdentifier() {
4026    return getIdentifierFirstRep();
4027  }
4028
4029  @Override
4030  public CanonicalResource addIdentifier(Identifier t) {
4031    this.identifier = t;
4032    return this;
4033  }
4034
4035  @Override
4036  public Identifier getIdentifierFirstRep() {
4037    return getIdentifier().get(0);
4038  }
4039
4040 /**
4041   * Search parameter: <b>dependson</b>
4042   * <p>
4043   * Description: <b>Reference to property mapping depends on</b><br>
4044   * Type: <b>uri</b><br>
4045   * Path: <b>ConceptMap.group.element.target.dependsOn.property</b><br>
4046   * </p>
4047   */
4048  @SearchParamDefinition(name="dependson", path="ConceptMap.group.element.target.dependsOn.property", description="Reference to property mapping depends on", type="uri" )
4049  public static final String SP_DEPENDSON = "dependson";
4050 /**
4051   * <b>Fluent Client</b> search parameter constant for <b>dependson</b>
4052   * <p>
4053   * Description: <b>Reference to property mapping depends on</b><br>
4054   * Type: <b>uri</b><br>
4055   * Path: <b>ConceptMap.group.element.target.dependsOn.property</b><br>
4056   * </p>
4057   */
4058  public static final ca.uhn.fhir.rest.gclient.UriClientParam DEPENDSON = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_DEPENDSON);
4059
4060 /**
4061   * Search parameter: <b>other</b>
4062   * <p>
4063   * Description: <b>canonical reference to an additional ConceptMap to use for mapping if the source concept is unmapped</b><br>
4064   * Type: <b>reference</b><br>
4065   * Path: <b>ConceptMap.group.unmapped.url</b><br>
4066   * </p>
4067   */
4068  @SearchParamDefinition(name="other", path="ConceptMap.group.unmapped.url", description="canonical reference to an additional ConceptMap to use for mapping if the source concept is unmapped", type="reference", target={ConceptMap.class } )
4069  public static final String SP_OTHER = "other";
4070 /**
4071   * <b>Fluent Client</b> search parameter constant for <b>other</b>
4072   * <p>
4073   * Description: <b>canonical reference to an additional ConceptMap to use for mapping if the source concept is unmapped</b><br>
4074   * Type: <b>reference</b><br>
4075   * Path: <b>ConceptMap.group.unmapped.url</b><br>
4076   * </p>
4077   */
4078  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam OTHER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_OTHER);
4079
4080/**
4081   * Constant for fluent queries to be used to add include statements. Specifies
4082   * the path value of "<b>ConceptMap:other</b>".
4083   */
4084  public static final ca.uhn.fhir.model.api.Include INCLUDE_OTHER = new ca.uhn.fhir.model.api.Include("ConceptMap:other").toLocked();
4085
4086 /**
4087   * Search parameter: <b>product</b>
4088   * <p>
4089   * Description: <b>Reference to property mapping depends on</b><br>
4090   * Type: <b>uri</b><br>
4091   * Path: <b>ConceptMap.group.element.target.product.property</b><br>
4092   * </p>
4093   */
4094  @SearchParamDefinition(name="product", path="ConceptMap.group.element.target.product.property", description="Reference to property mapping depends on", type="uri" )
4095  public static final String SP_PRODUCT = "product";
4096 /**
4097   * <b>Fluent Client</b> search parameter constant for <b>product</b>
4098   * <p>
4099   * Description: <b>Reference to property mapping depends on</b><br>
4100   * Type: <b>uri</b><br>
4101   * Path: <b>ConceptMap.group.element.target.product.property</b><br>
4102   * </p>
4103   */
4104  public static final ca.uhn.fhir.rest.gclient.UriClientParam PRODUCT = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_PRODUCT);
4105
4106 /**
4107   * Search parameter: <b>source-code</b>
4108   * <p>
4109   * Description: <b>Identifies element being mapped</b><br>
4110   * Type: <b>token</b><br>
4111   * Path: <b>ConceptMap.group.element.code</b><br>
4112   * </p>
4113   */
4114  @SearchParamDefinition(name="source-code", path="ConceptMap.group.element.code", description="Identifies element being mapped", type="token" )
4115  public static final String SP_SOURCE_CODE = "source-code";
4116 /**
4117   * <b>Fluent Client</b> search parameter constant for <b>source-code</b>
4118   * <p>
4119   * Description: <b>Identifies element being mapped</b><br>
4120   * Type: <b>token</b><br>
4121   * Path: <b>ConceptMap.group.element.code</b><br>
4122   * </p>
4123   */
4124  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SOURCE_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SOURCE_CODE);
4125
4126 /**
4127   * Search parameter: <b>source-system</b>
4128   * <p>
4129   * Description: <b>Source system where concepts to be mapped are defined</b><br>
4130   * Type: <b>uri</b><br>
4131   * Path: <b>ConceptMap.group.source</b><br>
4132   * </p>
4133   */
4134  @SearchParamDefinition(name="source-system", path="ConceptMap.group.source", description="Source system where concepts to be mapped are defined", type="uri" )
4135  public static final String SP_SOURCE_SYSTEM = "source-system";
4136 /**
4137   * <b>Fluent Client</b> search parameter constant for <b>source-system</b>
4138   * <p>
4139   * Description: <b>Source system where concepts to be mapped are defined</b><br>
4140   * Type: <b>uri</b><br>
4141   * Path: <b>ConceptMap.group.source</b><br>
4142   * </p>
4143   */
4144  public static final ca.uhn.fhir.rest.gclient.UriClientParam SOURCE_SYSTEM = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_SOURCE_SYSTEM);
4145
4146 /**
4147   * Search parameter: <b>source-uri</b>
4148   * <p>
4149   * Description: <b>The source value set that contains the concepts that are being mapped</b><br>
4150   * Type: <b>reference</b><br>
4151   * Path: <b>(ConceptMap.source as uri)</b><br>
4152   * </p>
4153   */
4154  @SearchParamDefinition(name="source-uri", path="(ConceptMap.source as uri)", description="The source value set that contains the concepts that are being mapped", type="reference", target={ValueSet.class } )
4155  public static final String SP_SOURCE_URI = "source-uri";
4156 /**
4157   * <b>Fluent Client</b> search parameter constant for <b>source-uri</b>
4158   * <p>
4159   * Description: <b>The source value set that contains the concepts that are being mapped</b><br>
4160   * Type: <b>reference</b><br>
4161   * Path: <b>(ConceptMap.source as uri)</b><br>
4162   * </p>
4163   */
4164  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SOURCE_URI = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SOURCE_URI);
4165
4166/**
4167   * Constant for fluent queries to be used to add include statements. Specifies
4168   * the path value of "<b>ConceptMap:source-uri</b>".
4169   */
4170  public static final ca.uhn.fhir.model.api.Include INCLUDE_SOURCE_URI = new ca.uhn.fhir.model.api.Include("ConceptMap:source-uri").toLocked();
4171
4172 /**
4173   * Search parameter: <b>source</b>
4174   * <p>
4175   * Description: <b>The source value set that contains the concepts that are being mapped</b><br>
4176   * Type: <b>reference</b><br>
4177   * Path: <b>(ConceptMap.source as canonical)</b><br>
4178   * </p>
4179   */
4180  @SearchParamDefinition(name="source", path="(ConceptMap.source as canonical)", description="The source value set that contains the concepts that are being mapped", type="reference", target={ValueSet.class } )
4181  public static final String SP_SOURCE = "source";
4182 /**
4183   * <b>Fluent Client</b> search parameter constant for <b>source</b>
4184   * <p>
4185   * Description: <b>The source value set that contains the concepts that are being mapped</b><br>
4186   * Type: <b>reference</b><br>
4187   * Path: <b>(ConceptMap.source as canonical)</b><br>
4188   * </p>
4189   */
4190  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SOURCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SOURCE);
4191
4192/**
4193   * Constant for fluent queries to be used to add include statements. Specifies
4194   * the path value of "<b>ConceptMap:source</b>".
4195   */
4196  public static final ca.uhn.fhir.model.api.Include INCLUDE_SOURCE = new ca.uhn.fhir.model.api.Include("ConceptMap:source").toLocked();
4197
4198 /**
4199   * Search parameter: <b>target-code</b>
4200   * <p>
4201   * Description: <b>Code that identifies the target element</b><br>
4202   * Type: <b>token</b><br>
4203   * Path: <b>ConceptMap.group.element.target.code</b><br>
4204   * </p>
4205   */
4206  @SearchParamDefinition(name="target-code", path="ConceptMap.group.element.target.code", description="Code that identifies the target element", type="token" )
4207  public static final String SP_TARGET_CODE = "target-code";
4208 /**
4209   * <b>Fluent Client</b> search parameter constant for <b>target-code</b>
4210   * <p>
4211   * Description: <b>Code that identifies the target element</b><br>
4212   * Type: <b>token</b><br>
4213   * Path: <b>ConceptMap.group.element.target.code</b><br>
4214   * </p>
4215   */
4216  public static final ca.uhn.fhir.rest.gclient.TokenClientParam TARGET_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_TARGET_CODE);
4217
4218 /**
4219   * Search parameter: <b>target-system</b>
4220   * <p>
4221   * Description: <b>Target system that the concepts are to be mapped to</b><br>
4222   * Type: <b>uri</b><br>
4223   * Path: <b>ConceptMap.group.target</b><br>
4224   * </p>
4225   */
4226  @SearchParamDefinition(name="target-system", path="ConceptMap.group.target", description="Target system that the concepts are to be mapped to", type="uri" )
4227  public static final String SP_TARGET_SYSTEM = "target-system";
4228 /**
4229   * <b>Fluent Client</b> search parameter constant for <b>target-system</b>
4230   * <p>
4231   * Description: <b>Target system that the concepts are to be mapped to</b><br>
4232   * Type: <b>uri</b><br>
4233   * Path: <b>ConceptMap.group.target</b><br>
4234   * </p>
4235   */
4236  public static final ca.uhn.fhir.rest.gclient.UriClientParam TARGET_SYSTEM = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_TARGET_SYSTEM);
4237
4238 /**
4239   * Search parameter: <b>target-uri</b>
4240   * <p>
4241   * Description: <b>The target value set which provides context for the mappings</b><br>
4242   * Type: <b>reference</b><br>
4243   * Path: <b>(ConceptMap.target as uri)</b><br>
4244   * </p>
4245   */
4246  @SearchParamDefinition(name="target-uri", path="(ConceptMap.target as uri)", description="The target value set which provides context for the mappings", type="reference", target={ValueSet.class } )
4247  public static final String SP_TARGET_URI = "target-uri";
4248 /**
4249   * <b>Fluent Client</b> search parameter constant for <b>target-uri</b>
4250   * <p>
4251   * Description: <b>The target value set which provides context for the mappings</b><br>
4252   * Type: <b>reference</b><br>
4253   * Path: <b>(ConceptMap.target as uri)</b><br>
4254   * </p>
4255   */
4256  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam TARGET_URI = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_TARGET_URI);
4257
4258/**
4259   * Constant for fluent queries to be used to add include statements. Specifies
4260   * the path value of "<b>ConceptMap:target-uri</b>".
4261   */
4262  public static final ca.uhn.fhir.model.api.Include INCLUDE_TARGET_URI = new ca.uhn.fhir.model.api.Include("ConceptMap:target-uri").toLocked();
4263
4264 /**
4265   * Search parameter: <b>target</b>
4266   * <p>
4267   * Description: <b>The target value set which provides context for the mappings</b><br>
4268   * Type: <b>reference</b><br>
4269   * Path: <b>(ConceptMap.target as canonical)</b><br>
4270   * </p>
4271   */
4272  @SearchParamDefinition(name="target", path="(ConceptMap.target as canonical)", description="The target value set which provides context for the mappings", type="reference", target={ValueSet.class } )
4273  public static final String SP_TARGET = "target";
4274 /**
4275   * <b>Fluent Client</b> search parameter constant for <b>target</b>
4276   * <p>
4277   * Description: <b>The target value set which provides context for the mappings</b><br>
4278   * Type: <b>reference</b><br>
4279   * Path: <b>(ConceptMap.target as canonical)</b><br>
4280   * </p>
4281   */
4282  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam TARGET = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_TARGET);
4283
4284/**
4285   * Constant for fluent queries to be used to add include statements. Specifies
4286   * the path value of "<b>ConceptMap:target</b>".
4287   */
4288  public static final ca.uhn.fhir.model.api.Include INCLUDE_TARGET = new ca.uhn.fhir.model.api.Include("ConceptMap:target").toLocked();
4289
4290 /**
4291   * Search parameter: <b>context-quantity</b>
4292   * <p>
4293   * Description: <b>Multiple Resources: 
4294
4295* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
4296* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
4297* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
4298* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
4299* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
4300* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
4301* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
4302* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
4303* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
4304* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
4305* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
4306* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
4307* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
4308* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
4309</b><br>
4310   * Type: <b>quantity</b><br>
4311   * 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>
4312   * </p>
4313   */
4314  @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" )
4315  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
4316 /**
4317   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
4318   * <p>
4319   * Description: <b>Multiple Resources: 
4320
4321* [CapabilityStatement](capabilitystatement.html): A quantity- or range-valued use context assigned to the capability statement
4322* [CodeSystem](codesystem.html): A quantity- or range-valued use context assigned to the code system
4323* [CompartmentDefinition](compartmentdefinition.html): A quantity- or range-valued use context assigned to the compartment definition
4324* [ConceptMap](conceptmap.html): A quantity- or range-valued use context assigned to the concept map
4325* [GraphDefinition](graphdefinition.html): A quantity- or range-valued use context assigned to the graph definition
4326* [ImplementationGuide](implementationguide.html): A quantity- or range-valued use context assigned to the implementation guide
4327* [MessageDefinition](messagedefinition.html): A quantity- or range-valued use context assigned to the message definition
4328* [NamingSystem](namingsystem.html): A quantity- or range-valued use context assigned to the naming system
4329* [OperationDefinition](operationdefinition.html): A quantity- or range-valued use context assigned to the operation definition
4330* [SearchParameter](searchparameter.html): A quantity- or range-valued use context assigned to the search parameter
4331* [StructureDefinition](structuredefinition.html): A quantity- or range-valued use context assigned to the structure definition
4332* [StructureMap](structuremap.html): A quantity- or range-valued use context assigned to the structure map
4333* [TerminologyCapabilities](terminologycapabilities.html): A quantity- or range-valued use context assigned to the terminology capabilities
4334* [ValueSet](valueset.html): A quantity- or range-valued use context assigned to the value set
4335</b><br>
4336   * Type: <b>quantity</b><br>
4337   * 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>
4338   * </p>
4339   */
4340  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
4341
4342 /**
4343   * Search parameter: <b>context-type-quantity</b>
4344   * <p>
4345   * Description: <b>Multiple Resources: 
4346
4347* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
4348* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
4349* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
4350* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
4351* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
4352* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
4353* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
4354* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
4355* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
4356* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
4357* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
4358* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
4359* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
4360* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
4361</b><br>
4362   * Type: <b>composite</b><br>
4363   * 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>
4364   * </p>
4365   */
4366  @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"} )
4367  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
4368 /**
4369   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
4370   * <p>
4371   * Description: <b>Multiple Resources: 
4372
4373* [CapabilityStatement](capabilitystatement.html): A use context type and quantity- or range-based value assigned to the capability statement
4374* [CodeSystem](codesystem.html): A use context type and quantity- or range-based value assigned to the code system
4375* [CompartmentDefinition](compartmentdefinition.html): A use context type and quantity- or range-based value assigned to the compartment definition
4376* [ConceptMap](conceptmap.html): A use context type and quantity- or range-based value assigned to the concept map
4377* [GraphDefinition](graphdefinition.html): A use context type and quantity- or range-based value assigned to the graph definition
4378* [ImplementationGuide](implementationguide.html): A use context type and quantity- or range-based value assigned to the implementation guide
4379* [MessageDefinition](messagedefinition.html): A use context type and quantity- or range-based value assigned to the message definition
4380* [NamingSystem](namingsystem.html): A use context type and quantity- or range-based value assigned to the naming system
4381* [OperationDefinition](operationdefinition.html): A use context type and quantity- or range-based value assigned to the operation definition
4382* [SearchParameter](searchparameter.html): A use context type and quantity- or range-based value assigned to the search parameter
4383* [StructureDefinition](structuredefinition.html): A use context type and quantity- or range-based value assigned to the structure definition
4384* [StructureMap](structuremap.html): A use context type and quantity- or range-based value assigned to the structure map
4385* [TerminologyCapabilities](terminologycapabilities.html): A use context type and quantity- or range-based value assigned to the terminology capabilities
4386* [ValueSet](valueset.html): A use context type and quantity- or range-based value assigned to the value set
4387</b><br>
4388   * Type: <b>composite</b><br>
4389   * 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>
4390   * </p>
4391   */
4392  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);
4393
4394 /**
4395   * Search parameter: <b>context-type-value</b>
4396   * <p>
4397   * Description: <b>Multiple Resources: 
4398
4399* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4400* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4401* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4402* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4403* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4404* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4405* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4406* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4407* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4408* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4409* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4410* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4411* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4412* [ValueSet](valueset.html): A use context type and value assigned to the value set
4413</b><br>
4414   * Type: <b>composite</b><br>
4415   * 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>
4416   * </p>
4417   */
4418  @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"} )
4419  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
4420 /**
4421   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
4422   * <p>
4423   * Description: <b>Multiple Resources: 
4424
4425* [CapabilityStatement](capabilitystatement.html): A use context type and value assigned to the capability statement
4426* [CodeSystem](codesystem.html): A use context type and value assigned to the code system
4427* [CompartmentDefinition](compartmentdefinition.html): A use context type and value assigned to the compartment definition
4428* [ConceptMap](conceptmap.html): A use context type and value assigned to the concept map
4429* [GraphDefinition](graphdefinition.html): A use context type and value assigned to the graph definition
4430* [ImplementationGuide](implementationguide.html): A use context type and value assigned to the implementation guide
4431* [MessageDefinition](messagedefinition.html): A use context type and value assigned to the message definition
4432* [NamingSystem](namingsystem.html): A use context type and value assigned to the naming system
4433* [OperationDefinition](operationdefinition.html): A use context type and value assigned to the operation definition
4434* [SearchParameter](searchparameter.html): A use context type and value assigned to the search parameter
4435* [StructureDefinition](structuredefinition.html): A use context type and value assigned to the structure definition
4436* [StructureMap](structuremap.html): A use context type and value assigned to the structure map
4437* [TerminologyCapabilities](terminologycapabilities.html): A use context type and value assigned to the terminology capabilities
4438* [ValueSet](valueset.html): A use context type and value assigned to the value set
4439</b><br>
4440   * Type: <b>composite</b><br>
4441   * 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>
4442   * </p>
4443   */
4444  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);
4445
4446 /**
4447   * Search parameter: <b>context-type</b>
4448   * <p>
4449   * Description: <b>Multiple Resources: 
4450
4451* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4452* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4453* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4454* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4455* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4456* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4457* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4458* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4459* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4460* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4461* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4462* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4463* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4464* [ValueSet](valueset.html): A type of use context assigned to the value set
4465</b><br>
4466   * Type: <b>token</b><br>
4467   * 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>
4468   * </p>
4469   */
4470  @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" )
4471  public static final String SP_CONTEXT_TYPE = "context-type";
4472 /**
4473   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
4474   * <p>
4475   * Description: <b>Multiple Resources: 
4476
4477* [CapabilityStatement](capabilitystatement.html): A type of use context assigned to the capability statement
4478* [CodeSystem](codesystem.html): A type of use context assigned to the code system
4479* [CompartmentDefinition](compartmentdefinition.html): A type of use context assigned to the compartment definition
4480* [ConceptMap](conceptmap.html): A type of use context assigned to the concept map
4481* [GraphDefinition](graphdefinition.html): A type of use context assigned to the graph definition
4482* [ImplementationGuide](implementationguide.html): A type of use context assigned to the implementation guide
4483* [MessageDefinition](messagedefinition.html): A type of use context assigned to the message definition
4484* [NamingSystem](namingsystem.html): A type of use context assigned to the naming system
4485* [OperationDefinition](operationdefinition.html): A type of use context assigned to the operation definition
4486* [SearchParameter](searchparameter.html): A type of use context assigned to the search parameter
4487* [StructureDefinition](structuredefinition.html): A type of use context assigned to the structure definition
4488* [StructureMap](structuremap.html): A type of use context assigned to the structure map
4489* [TerminologyCapabilities](terminologycapabilities.html): A type of use context assigned to the terminology capabilities
4490* [ValueSet](valueset.html): A type of use context assigned to the value set
4491</b><br>
4492   * Type: <b>token</b><br>
4493   * 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>
4494   * </p>
4495   */
4496  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
4497
4498 /**
4499   * Search parameter: <b>context</b>
4500   * <p>
4501   * Description: <b>Multiple Resources: 
4502
4503* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4504* [CodeSystem](codesystem.html): A use context assigned to the code system
4505* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4506* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4507* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4508* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4509* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4510* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4511* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4512* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4513* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4514* [StructureMap](structuremap.html): A use context assigned to the structure map
4515* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4516* [ValueSet](valueset.html): A use context assigned to the value set
4517</b><br>
4518   * Type: <b>token</b><br>
4519   * 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>
4520   * </p>
4521   */
4522  @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" )
4523  public static final String SP_CONTEXT = "context";
4524 /**
4525   * <b>Fluent Client</b> search parameter constant for <b>context</b>
4526   * <p>
4527   * Description: <b>Multiple Resources: 
4528
4529* [CapabilityStatement](capabilitystatement.html): A use context assigned to the capability statement
4530* [CodeSystem](codesystem.html): A use context assigned to the code system
4531* [CompartmentDefinition](compartmentdefinition.html): A use context assigned to the compartment definition
4532* [ConceptMap](conceptmap.html): A use context assigned to the concept map
4533* [GraphDefinition](graphdefinition.html): A use context assigned to the graph definition
4534* [ImplementationGuide](implementationguide.html): A use context assigned to the implementation guide
4535* [MessageDefinition](messagedefinition.html): A use context assigned to the message definition
4536* [NamingSystem](namingsystem.html): A use context assigned to the naming system
4537* [OperationDefinition](operationdefinition.html): A use context assigned to the operation definition
4538* [SearchParameter](searchparameter.html): A use context assigned to the search parameter
4539* [StructureDefinition](structuredefinition.html): A use context assigned to the structure definition
4540* [StructureMap](structuremap.html): A use context assigned to the structure map
4541* [TerminologyCapabilities](terminologycapabilities.html): A use context assigned to the terminology capabilities
4542* [ValueSet](valueset.html): A use context assigned to the value set
4543</b><br>
4544   * Type: <b>token</b><br>
4545   * 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>
4546   * </p>
4547   */
4548  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
4549
4550 /**
4551   * Search parameter: <b>date</b>
4552   * <p>
4553   * Description: <b>Multiple Resources: 
4554
4555* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4556* [CodeSystem](codesystem.html): The code system publication date
4557* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4558* [ConceptMap](conceptmap.html): The concept map publication date
4559* [GraphDefinition](graphdefinition.html): The graph definition publication date
4560* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4561* [MessageDefinition](messagedefinition.html): The message definition publication date
4562* [NamingSystem](namingsystem.html): The naming system publication date
4563* [OperationDefinition](operationdefinition.html): The operation definition publication date
4564* [SearchParameter](searchparameter.html): The search parameter publication date
4565* [StructureDefinition](structuredefinition.html): The structure definition publication date
4566* [StructureMap](structuremap.html): The structure map publication date
4567* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4568* [ValueSet](valueset.html): The value set publication date
4569</b><br>
4570   * Type: <b>date</b><br>
4571   * 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>
4572   * </p>
4573   */
4574  @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" )
4575  public static final String SP_DATE = "date";
4576 /**
4577   * <b>Fluent Client</b> search parameter constant for <b>date</b>
4578   * <p>
4579   * Description: <b>Multiple Resources: 
4580
4581* [CapabilityStatement](capabilitystatement.html): The capability statement publication date
4582* [CodeSystem](codesystem.html): The code system publication date
4583* [CompartmentDefinition](compartmentdefinition.html): The compartment definition publication date
4584* [ConceptMap](conceptmap.html): The concept map publication date
4585* [GraphDefinition](graphdefinition.html): The graph definition publication date
4586* [ImplementationGuide](implementationguide.html): The implementation guide publication date
4587* [MessageDefinition](messagedefinition.html): The message definition publication date
4588* [NamingSystem](namingsystem.html): The naming system publication date
4589* [OperationDefinition](operationdefinition.html): The operation definition publication date
4590* [SearchParameter](searchparameter.html): The search parameter publication date
4591* [StructureDefinition](structuredefinition.html): The structure definition publication date
4592* [StructureMap](structuremap.html): The structure map publication date
4593* [TerminologyCapabilities](terminologycapabilities.html): The terminology capabilities publication date
4594* [ValueSet](valueset.html): The value set publication date
4595</b><br>
4596   * Type: <b>date</b><br>
4597   * 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>
4598   * </p>
4599   */
4600  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
4601
4602 /**
4603   * Search parameter: <b>description</b>
4604   * <p>
4605   * Description: <b>Multiple Resources: 
4606
4607* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4608* [CodeSystem](codesystem.html): The description of the code system
4609* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4610* [ConceptMap](conceptmap.html): The description of the concept map
4611* [GraphDefinition](graphdefinition.html): The description of the graph definition
4612* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4613* [MessageDefinition](messagedefinition.html): The description of the message definition
4614* [NamingSystem](namingsystem.html): The description of the naming system
4615* [OperationDefinition](operationdefinition.html): The description of the operation definition
4616* [SearchParameter](searchparameter.html): The description of the search parameter
4617* [StructureDefinition](structuredefinition.html): The description of the structure definition
4618* [StructureMap](structuremap.html): The description of the structure map
4619* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4620* [ValueSet](valueset.html): The description of the value set
4621</b><br>
4622   * Type: <b>string</b><br>
4623   * 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>
4624   * </p>
4625   */
4626  @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" )
4627  public static final String SP_DESCRIPTION = "description";
4628 /**
4629   * <b>Fluent Client</b> search parameter constant for <b>description</b>
4630   * <p>
4631   * Description: <b>Multiple Resources: 
4632
4633* [CapabilityStatement](capabilitystatement.html): The description of the capability statement
4634* [CodeSystem](codesystem.html): The description of the code system
4635* [CompartmentDefinition](compartmentdefinition.html): The description of the compartment definition
4636* [ConceptMap](conceptmap.html): The description of the concept map
4637* [GraphDefinition](graphdefinition.html): The description of the graph definition
4638* [ImplementationGuide](implementationguide.html): The description of the implementation guide
4639* [MessageDefinition](messagedefinition.html): The description of the message definition
4640* [NamingSystem](namingsystem.html): The description of the naming system
4641* [OperationDefinition](operationdefinition.html): The description of the operation definition
4642* [SearchParameter](searchparameter.html): The description of the search parameter
4643* [StructureDefinition](structuredefinition.html): The description of the structure definition
4644* [StructureMap](structuremap.html): The description of the structure map
4645* [TerminologyCapabilities](terminologycapabilities.html): The description of the terminology capabilities
4646* [ValueSet](valueset.html): The description of the value set
4647</b><br>
4648   * Type: <b>string</b><br>
4649   * 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>
4650   * </p>
4651   */
4652  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
4653
4654 /**
4655   * Search parameter: <b>identifier</b>
4656   * <p>
4657   * Description: <b>Multiple Resources: 
4658
4659* [CodeSystem](codesystem.html): External identifier for the code system
4660* [ConceptMap](conceptmap.html): External identifier for the concept map
4661* [MessageDefinition](messagedefinition.html): External identifier for the message definition
4662* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
4663* [StructureMap](structuremap.html): External identifier for the structure map
4664* [ValueSet](valueset.html): External identifier for the value set
4665</b><br>
4666   * Type: <b>token</b><br>
4667   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | ValueSet.identifier</b><br>
4668   * </p>
4669   */
4670  @SearchParamDefinition(name="identifier", path="CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | ValueSet.identifier", description="Multiple Resources: \r\n\r\n* [CodeSystem](codesystem.html): External identifier for the code system\r\n* [ConceptMap](conceptmap.html): External identifier for the concept map\r\n* [MessageDefinition](messagedefinition.html): External identifier for the message definition\r\n* [StructureDefinition](structuredefinition.html): External identifier for the structure definition\r\n* [StructureMap](structuremap.html): External identifier for the structure map\r\n* [ValueSet](valueset.html): External identifier for the value set\r\n", type="token" )
4671  public static final String SP_IDENTIFIER = "identifier";
4672 /**
4673   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
4674   * <p>
4675   * Description: <b>Multiple Resources: 
4676
4677* [CodeSystem](codesystem.html): External identifier for the code system
4678* [ConceptMap](conceptmap.html): External identifier for the concept map
4679* [MessageDefinition](messagedefinition.html): External identifier for the message definition
4680* [StructureDefinition](structuredefinition.html): External identifier for the structure definition
4681* [StructureMap](structuremap.html): External identifier for the structure map
4682* [ValueSet](valueset.html): External identifier for the value set
4683</b><br>
4684   * Type: <b>token</b><br>
4685   * Path: <b>CodeSystem.identifier | ConceptMap.identifier | MessageDefinition.identifier | StructureDefinition.identifier | StructureMap.identifier | ValueSet.identifier</b><br>
4686   * </p>
4687   */
4688  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
4689
4690 /**
4691   * Search parameter: <b>jurisdiction</b>
4692   * <p>
4693   * Description: <b>Multiple Resources: 
4694
4695* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4696* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4697* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4698* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4699* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4700* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4701* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4702* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4703* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4704* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4705* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4706* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4707* [ValueSet](valueset.html): Intended jurisdiction for the value set
4708</b><br>
4709   * Type: <b>token</b><br>
4710   * 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>
4711   * </p>
4712   */
4713  @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" )
4714  public static final String SP_JURISDICTION = "jurisdiction";
4715 /**
4716   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
4717   * <p>
4718   * Description: <b>Multiple Resources: 
4719
4720* [CapabilityStatement](capabilitystatement.html): Intended jurisdiction for the capability statement
4721* [CodeSystem](codesystem.html): Intended jurisdiction for the code system
4722* [ConceptMap](conceptmap.html): Intended jurisdiction for the concept map
4723* [GraphDefinition](graphdefinition.html): Intended jurisdiction for the graph definition
4724* [ImplementationGuide](implementationguide.html): Intended jurisdiction for the implementation guide
4725* [MessageDefinition](messagedefinition.html): Intended jurisdiction for the message definition
4726* [NamingSystem](namingsystem.html): Intended jurisdiction for the naming system
4727* [OperationDefinition](operationdefinition.html): Intended jurisdiction for the operation definition
4728* [SearchParameter](searchparameter.html): Intended jurisdiction for the search parameter
4729* [StructureDefinition](structuredefinition.html): Intended jurisdiction for the structure definition
4730* [StructureMap](structuremap.html): Intended jurisdiction for the structure map
4731* [TerminologyCapabilities](terminologycapabilities.html): Intended jurisdiction for the terminology capabilities
4732* [ValueSet](valueset.html): Intended jurisdiction for the value set
4733</b><br>
4734   * Type: <b>token</b><br>
4735   * 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>
4736   * </p>
4737   */
4738  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
4739
4740 /**
4741   * Search parameter: <b>name</b>
4742   * <p>
4743   * Description: <b>Multiple Resources: 
4744
4745* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4746* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4747* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4748* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4749* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4750* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4751* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4752* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4753* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4754* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4755* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4756* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4757* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4758* [ValueSet](valueset.html): Computationally friendly name of the value set
4759</b><br>
4760   * Type: <b>string</b><br>
4761   * 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>
4762   * </p>
4763   */
4764  @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" )
4765  public static final String SP_NAME = "name";
4766 /**
4767   * <b>Fluent Client</b> search parameter constant for <b>name</b>
4768   * <p>
4769   * Description: <b>Multiple Resources: 
4770
4771* [CapabilityStatement](capabilitystatement.html): Computationally friendly name of the capability statement
4772* [CodeSystem](codesystem.html): Computationally friendly name of the code system
4773* [CompartmentDefinition](compartmentdefinition.html): Computationally friendly name of the compartment definition
4774* [ConceptMap](conceptmap.html): Computationally friendly name of the concept map
4775* [GraphDefinition](graphdefinition.html): Computationally friendly name of the graph definition
4776* [ImplementationGuide](implementationguide.html): Computationally friendly name of the implementation guide
4777* [MessageDefinition](messagedefinition.html): Computationally friendly name of the message definition
4778* [NamingSystem](namingsystem.html): Computationally friendly name of the naming system
4779* [OperationDefinition](operationdefinition.html): Computationally friendly name of the operation definition
4780* [SearchParameter](searchparameter.html): Computationally friendly name of the search parameter
4781* [StructureDefinition](structuredefinition.html): Computationally friendly name of the structure definition
4782* [StructureMap](structuremap.html): Computationally friendly name of the structure map
4783* [TerminologyCapabilities](terminologycapabilities.html): Computationally friendly name of the terminology capabilities
4784* [ValueSet](valueset.html): Computationally friendly name of the value set
4785</b><br>
4786   * Type: <b>string</b><br>
4787   * 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>
4788   * </p>
4789   */
4790  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
4791
4792 /**
4793   * Search parameter: <b>publisher</b>
4794   * <p>
4795   * Description: <b>Multiple Resources: 
4796
4797* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4798* [CodeSystem](codesystem.html): Name of the publisher of the code system
4799* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4800* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4801* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4802* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4803* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4804* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4805* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4806* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4807* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4808* [StructureMap](structuremap.html): Name of the publisher of the structure map
4809* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4810* [ValueSet](valueset.html): Name of the publisher of the value set
4811</b><br>
4812   * Type: <b>string</b><br>
4813   * 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>
4814   * </p>
4815   */
4816  @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" )
4817  public static final String SP_PUBLISHER = "publisher";
4818 /**
4819   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
4820   * <p>
4821   * Description: <b>Multiple Resources: 
4822
4823* [CapabilityStatement](capabilitystatement.html): Name of the publisher of the capability statement
4824* [CodeSystem](codesystem.html): Name of the publisher of the code system
4825* [CompartmentDefinition](compartmentdefinition.html): Name of the publisher of the compartment definition
4826* [ConceptMap](conceptmap.html): Name of the publisher of the concept map
4827* [GraphDefinition](graphdefinition.html): Name of the publisher of the graph definition
4828* [ImplementationGuide](implementationguide.html): Name of the publisher of the implementation guide
4829* [MessageDefinition](messagedefinition.html): Name of the publisher of the message definition
4830* [NamingSystem](namingsystem.html): Name of the publisher of the naming system
4831* [OperationDefinition](operationdefinition.html): Name of the publisher of the operation definition
4832* [SearchParameter](searchparameter.html): Name of the publisher of the search parameter
4833* [StructureDefinition](structuredefinition.html): Name of the publisher of the structure definition
4834* [StructureMap](structuremap.html): Name of the publisher of the structure map
4835* [TerminologyCapabilities](terminologycapabilities.html): Name of the publisher of the terminology capabilities
4836* [ValueSet](valueset.html): Name of the publisher of the value set
4837</b><br>
4838   * Type: <b>string</b><br>
4839   * 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>
4840   * </p>
4841   */
4842  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
4843
4844 /**
4845   * Search parameter: <b>status</b>
4846   * <p>
4847   * Description: <b>Multiple Resources: 
4848
4849* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4850* [CodeSystem](codesystem.html): The current status of the code system
4851* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4852* [ConceptMap](conceptmap.html): The current status of the concept map
4853* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4854* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4855* [MessageDefinition](messagedefinition.html): The current status of the message definition
4856* [NamingSystem](namingsystem.html): The current status of the naming system
4857* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4858* [SearchParameter](searchparameter.html): The current status of the search parameter
4859* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4860* [StructureMap](structuremap.html): The current status of the structure map
4861* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4862* [ValueSet](valueset.html): The current status of the value set
4863</b><br>
4864   * Type: <b>token</b><br>
4865   * 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>
4866   * </p>
4867   */
4868  @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" )
4869  public static final String SP_STATUS = "status";
4870 /**
4871   * <b>Fluent Client</b> search parameter constant for <b>status</b>
4872   * <p>
4873   * Description: <b>Multiple Resources: 
4874
4875* [CapabilityStatement](capabilitystatement.html): The current status of the capability statement
4876* [CodeSystem](codesystem.html): The current status of the code system
4877* [CompartmentDefinition](compartmentdefinition.html): The current status of the compartment definition
4878* [ConceptMap](conceptmap.html): The current status of the concept map
4879* [GraphDefinition](graphdefinition.html): The current status of the graph definition
4880* [ImplementationGuide](implementationguide.html): The current status of the implementation guide
4881* [MessageDefinition](messagedefinition.html): The current status of the message definition
4882* [NamingSystem](namingsystem.html): The current status of the naming system
4883* [OperationDefinition](operationdefinition.html): The current status of the operation definition
4884* [SearchParameter](searchparameter.html): The current status of the search parameter
4885* [StructureDefinition](structuredefinition.html): The current status of the structure definition
4886* [StructureMap](structuremap.html): The current status of the structure map
4887* [TerminologyCapabilities](terminologycapabilities.html): The current status of the terminology capabilities
4888* [ValueSet](valueset.html): The current status of the value set
4889</b><br>
4890   * Type: <b>token</b><br>
4891   * 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>
4892   * </p>
4893   */
4894  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
4895
4896 /**
4897   * Search parameter: <b>title</b>
4898   * <p>
4899   * Description: <b>Multiple Resources: 
4900
4901* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4902* [CodeSystem](codesystem.html): The human-friendly name of the code system
4903* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4904* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4905* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4906* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4907* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4908* [StructureMap](structuremap.html): The human-friendly name of the structure map
4909* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4910* [ValueSet](valueset.html): The human-friendly name of the value set
4911</b><br>
4912   * Type: <b>string</b><br>
4913   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4914   * </p>
4915   */
4916  @SearchParamDefinition(name="title", path="CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title", description="Multiple Resources: \r\n\r\n* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement\r\n* [CodeSystem](codesystem.html): The human-friendly name of the code system\r\n* [ConceptMap](conceptmap.html): The human-friendly name of the concept map\r\n* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide\r\n* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition\r\n* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition\r\n* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition\r\n* [StructureMap](structuremap.html): The human-friendly name of the structure map\r\n* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities\r\n* [ValueSet](valueset.html): The human-friendly name of the value set\r\n", type="string" )
4917  public static final String SP_TITLE = "title";
4918 /**
4919   * <b>Fluent Client</b> search parameter constant for <b>title</b>
4920   * <p>
4921   * Description: <b>Multiple Resources: 
4922
4923* [CapabilityStatement](capabilitystatement.html): The human-friendly name of the capability statement
4924* [CodeSystem](codesystem.html): The human-friendly name of the code system
4925* [ConceptMap](conceptmap.html): The human-friendly name of the concept map
4926* [ImplementationGuide](implementationguide.html): The human-friendly name of the implementation guide
4927* [MessageDefinition](messagedefinition.html): The human-friendly name of the message definition
4928* [OperationDefinition](operationdefinition.html): The human-friendly name of the operation definition
4929* [StructureDefinition](structuredefinition.html): The human-friendly name of the structure definition
4930* [StructureMap](structuremap.html): The human-friendly name of the structure map
4931* [TerminologyCapabilities](terminologycapabilities.html): The human-friendly name of the terminology capabilities
4932* [ValueSet](valueset.html): The human-friendly name of the value set
4933</b><br>
4934   * Type: <b>string</b><br>
4935   * Path: <b>CapabilityStatement.title | CodeSystem.title | ConceptMap.title | ImplementationGuide.title | MessageDefinition.title | OperationDefinition.title | StructureDefinition.title | StructureMap.title | TerminologyCapabilities.title | ValueSet.title</b><br>
4936   * </p>
4937   */
4938  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
4939
4940 /**
4941   * Search parameter: <b>url</b>
4942   * <p>
4943   * Description: <b>Multiple Resources: 
4944
4945* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4946* [CodeSystem](codesystem.html): The uri that identifies the code system
4947* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4948* [ConceptMap](conceptmap.html): The uri that identifies the concept map
4949* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4950* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4951* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4952* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4953* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4954* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4955* [StructureMap](structuremap.html): The uri that identifies the structure map
4956* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4957* [ValueSet](valueset.html): The uri that identifies the value set
4958</b><br>
4959   * Type: <b>uri</b><br>
4960   * 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>
4961   * </p>
4962   */
4963  @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" )
4964  public static final String SP_URL = "url";
4965 /**
4966   * <b>Fluent Client</b> search parameter constant for <b>url</b>
4967   * <p>
4968   * Description: <b>Multiple Resources: 
4969
4970* [CapabilityStatement](capabilitystatement.html): The uri that identifies the capability statement
4971* [CodeSystem](codesystem.html): The uri that identifies the code system
4972* [CompartmentDefinition](compartmentdefinition.html): The uri that identifies the compartment definition
4973* [ConceptMap](conceptmap.html): The uri that identifies the concept map
4974* [GraphDefinition](graphdefinition.html): The uri that identifies the graph definition
4975* [ImplementationGuide](implementationguide.html): The uri that identifies the implementation guide
4976* [MessageDefinition](messagedefinition.html): The uri that identifies the message definition
4977* [OperationDefinition](operationdefinition.html): The uri that identifies the operation definition
4978* [SearchParameter](searchparameter.html): The uri that identifies the search parameter
4979* [StructureDefinition](structuredefinition.html): The uri that identifies the structure definition
4980* [StructureMap](structuremap.html): The uri that identifies the structure map
4981* [TerminologyCapabilities](terminologycapabilities.html): The uri that identifies the terminology capabilities
4982* [ValueSet](valueset.html): The uri that identifies the value set
4983</b><br>
4984   * Type: <b>uri</b><br>
4985   * 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>
4986   * </p>
4987   */
4988  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
4989
4990 /**
4991   * Search parameter: <b>version</b>
4992   * <p>
4993   * Description: <b>Multiple Resources: 
4994
4995* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
4996* [CodeSystem](codesystem.html): The business version of the code system
4997* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
4998* [ConceptMap](conceptmap.html): The business version of the concept map
4999* [GraphDefinition](graphdefinition.html): The business version of the graph definition
5000* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
5001* [MessageDefinition](messagedefinition.html): The business version of the message definition
5002* [OperationDefinition](operationdefinition.html): The business version of the operation definition
5003* [SearchParameter](searchparameter.html): The business version of the search parameter
5004* [StructureDefinition](structuredefinition.html): The business version of the structure definition
5005* [StructureMap](structuremap.html): The business version of the structure map
5006* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
5007* [ValueSet](valueset.html): The business version of the value set
5008</b><br>
5009   * Type: <b>token</b><br>
5010   * 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>
5011   * </p>
5012   */
5013  @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" )
5014  public static final String SP_VERSION = "version";
5015 /**
5016   * <b>Fluent Client</b> search parameter constant for <b>version</b>
5017   * <p>
5018   * Description: <b>Multiple Resources: 
5019
5020* [CapabilityStatement](capabilitystatement.html): The business version of the capability statement
5021* [CodeSystem](codesystem.html): The business version of the code system
5022* [CompartmentDefinition](compartmentdefinition.html): The business version of the compartment definition
5023* [ConceptMap](conceptmap.html): The business version of the concept map
5024* [GraphDefinition](graphdefinition.html): The business version of the graph definition
5025* [ImplementationGuide](implementationguide.html): The business version of the implementation guide
5026* [MessageDefinition](messagedefinition.html): The business version of the message definition
5027* [OperationDefinition](operationdefinition.html): The business version of the operation definition
5028* [SearchParameter](searchparameter.html): The business version of the search parameter
5029* [StructureDefinition](structuredefinition.html): The business version of the structure definition
5030* [StructureMap](structuremap.html): The business version of the structure map
5031* [TerminologyCapabilities](terminologycapabilities.html): The business version of the terminology capabilities
5032* [ValueSet](valueset.html): The business version of the value set
5033</b><br>
5034   * Type: <b>token</b><br>
5035   * 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>
5036   * </p>
5037   */
5038  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
5039
5040}
5041