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