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