001package org.hl7.fhir.dstu2016may.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Sun, May 8, 2016 03:05+1000 for FHIR v1.4.0
033import java.util.ArrayList;
034import java.util.Date;
035import java.util.List;
036
037import org.hl7.fhir.dstu2016may.model.Enumerations.ConformanceResourceStatus;
038import org.hl7.fhir.dstu2016may.model.Enumerations.ConformanceResourceStatusEnumFactory;
039import org.hl7.fhir.exceptions.FHIRException;
040import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
041import org.hl7.fhir.utilities.Utilities;
042
043import ca.uhn.fhir.model.api.annotation.Block;
044import ca.uhn.fhir.model.api.annotation.Child;
045import ca.uhn.fhir.model.api.annotation.Description;
046import ca.uhn.fhir.model.api.annotation.ResourceDef;
047import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
048/**
049 * Resource to define constraints on the Expansion of a FHIR ValueSet.
050 */
051@ResourceDef(name="ExpansionProfile", profile="http://hl7.org/fhir/Profile/ExpansionProfile")
052public class ExpansionProfile extends DomainResource {
053
054    @Block()
055    public static class ExpansionProfileContactComponent extends BackboneElement implements IBaseBackboneElement {
056        /**
057         * The name of an individual to contact regarding the expansion profile.
058         */
059        @Child(name = "name", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=true)
060        @Description(shortDefinition="Name of an individual to contact", formalDefinition="The name of an individual to contact regarding the expansion profile." )
061        protected StringType name;
062
063        /**
064         * Contact details for individual (if a name was provided) or the publisher.
065         */
066        @Child(name = "telecom", type = {ContactPoint.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
067        @Description(shortDefinition="Contact details for individual or publisher", formalDefinition="Contact details for individual (if a name was provided) or the publisher." )
068        protected List<ContactPoint> telecom;
069
070        private static final long serialVersionUID = -1179697803L;
071
072    /**
073     * Constructor
074     */
075      public ExpansionProfileContactComponent() {
076        super();
077      }
078
079        /**
080         * @return {@link #name} (The name of an individual to contact regarding the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
081         */
082        public StringType getNameElement() { 
083          if (this.name == null)
084            if (Configuration.errorOnAutoCreate())
085              throw new Error("Attempt to auto-create ExpansionProfileContactComponent.name");
086            else if (Configuration.doAutoCreate())
087              this.name = new StringType(); // bb
088          return this.name;
089        }
090
091        public boolean hasNameElement() { 
092          return this.name != null && !this.name.isEmpty();
093        }
094
095        public boolean hasName() { 
096          return this.name != null && !this.name.isEmpty();
097        }
098
099        /**
100         * @param value {@link #name} (The name of an individual to contact regarding the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
101         */
102        public ExpansionProfileContactComponent setNameElement(StringType value) { 
103          this.name = value;
104          return this;
105        }
106
107        /**
108         * @return The name of an individual to contact regarding the expansion profile.
109         */
110        public String getName() { 
111          return this.name == null ? null : this.name.getValue();
112        }
113
114        /**
115         * @param value The name of an individual to contact regarding the expansion profile.
116         */
117        public ExpansionProfileContactComponent setName(String value) { 
118          if (Utilities.noString(value))
119            this.name = null;
120          else {
121            if (this.name == null)
122              this.name = new StringType();
123            this.name.setValue(value);
124          }
125          return this;
126        }
127
128        /**
129         * @return {@link #telecom} (Contact details for individual (if a name was provided) or the publisher.)
130         */
131        public List<ContactPoint> getTelecom() { 
132          if (this.telecom == null)
133            this.telecom = new ArrayList<ContactPoint>();
134          return this.telecom;
135        }
136
137        public boolean hasTelecom() { 
138          if (this.telecom == null)
139            return false;
140          for (ContactPoint item : this.telecom)
141            if (!item.isEmpty())
142              return true;
143          return false;
144        }
145
146        /**
147         * @return {@link #telecom} (Contact details for individual (if a name was provided) or the publisher.)
148         */
149    // syntactic sugar
150        public ContactPoint addTelecom() { //3
151          ContactPoint t = new ContactPoint();
152          if (this.telecom == null)
153            this.telecom = new ArrayList<ContactPoint>();
154          this.telecom.add(t);
155          return t;
156        }
157
158    // syntactic sugar
159        public ExpansionProfileContactComponent addTelecom(ContactPoint t) { //3
160          if (t == null)
161            return this;
162          if (this.telecom == null)
163            this.telecom = new ArrayList<ContactPoint>();
164          this.telecom.add(t);
165          return this;
166        }
167
168        protected void listChildren(List<Property> childrenList) {
169          super.listChildren(childrenList);
170          childrenList.add(new Property("name", "string", "The name of an individual to contact regarding the expansion profile.", 0, java.lang.Integer.MAX_VALUE, name));
171          childrenList.add(new Property("telecom", "ContactPoint", "Contact details for individual (if a name was provided) or the publisher.", 0, java.lang.Integer.MAX_VALUE, telecom));
172        }
173
174      @Override
175      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
176        switch (hash) {
177        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
178        case -1429363305: /*telecom*/ return this.telecom == null ? new Base[0] : this.telecom.toArray(new Base[this.telecom.size()]); // ContactPoint
179        default: return super.getProperty(hash, name, checkValid);
180        }
181
182      }
183
184      @Override
185      public void setProperty(int hash, String name, Base value) throws FHIRException {
186        switch (hash) {
187        case 3373707: // name
188          this.name = castToString(value); // StringType
189          break;
190        case -1429363305: // telecom
191          this.getTelecom().add(castToContactPoint(value)); // ContactPoint
192          break;
193        default: super.setProperty(hash, name, value);
194        }
195
196      }
197
198      @Override
199      public void setProperty(String name, Base value) throws FHIRException {
200        if (name.equals("name"))
201          this.name = castToString(value); // StringType
202        else if (name.equals("telecom"))
203          this.getTelecom().add(castToContactPoint(value));
204        else
205          super.setProperty(name, value);
206      }
207
208      @Override
209      public Base makeProperty(int hash, String name) throws FHIRException {
210        switch (hash) {
211        case 3373707: throw new FHIRException("Cannot make property name as it is not a complex type"); // StringType
212        case -1429363305:  return addTelecom(); // ContactPoint
213        default: return super.makeProperty(hash, name);
214        }
215
216      }
217
218      @Override
219      public Base addChild(String name) throws FHIRException {
220        if (name.equals("name")) {
221          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.name");
222        }
223        else if (name.equals("telecom")) {
224          return addTelecom();
225        }
226        else
227          return super.addChild(name);
228      }
229
230      public ExpansionProfileContactComponent copy() {
231        ExpansionProfileContactComponent dst = new ExpansionProfileContactComponent();
232        copyValues(dst);
233        dst.name = name == null ? null : name.copy();
234        if (telecom != null) {
235          dst.telecom = new ArrayList<ContactPoint>();
236          for (ContactPoint i : telecom)
237            dst.telecom.add(i.copy());
238        };
239        return dst;
240      }
241
242      @Override
243      public boolean equalsDeep(Base other) {
244        if (!super.equalsDeep(other))
245          return false;
246        if (!(other instanceof ExpansionProfileContactComponent))
247          return false;
248        ExpansionProfileContactComponent o = (ExpansionProfileContactComponent) other;
249        return compareDeep(name, o.name, true) && compareDeep(telecom, o.telecom, true);
250      }
251
252      @Override
253      public boolean equalsShallow(Base other) {
254        if (!super.equalsShallow(other))
255          return false;
256        if (!(other instanceof ExpansionProfileContactComponent))
257          return false;
258        ExpansionProfileContactComponent o = (ExpansionProfileContactComponent) other;
259        return compareValues(name, o.name, true);
260      }
261
262      public boolean isEmpty() {
263        return super.isEmpty() && (name == null || name.isEmpty()) && (telecom == null || telecom.isEmpty())
264          ;
265      }
266
267  public String fhirType() {
268    return "ExpansionProfile.contact";
269
270  }
271
272  }
273
274    @Block()
275    public static class ExpansionProfileCodeSystemComponent extends BackboneElement implements IBaseBackboneElement {
276        /**
277         * Code systems to be included in value set expansions.
278         */
279        @Child(name = "include", type = {}, order=1, min=0, max=1, modifier=false, summary=true)
280        @Description(shortDefinition="Code systems to be included", formalDefinition="Code systems to be included in value set expansions." )
281        protected CodeSystemIncludeComponent include;
282
283        /**
284         * Code systems to be excluded from value set expansions.
285         */
286        @Child(name = "exclude", type = {}, order=2, min=0, max=1, modifier=false, summary=true)
287        @Description(shortDefinition="Code systems to be excluded", formalDefinition="Code systems to be excluded from value set expansions." )
288        protected CodeSystemExcludeComponent exclude;
289
290        private static final long serialVersionUID = 340558624L;
291
292    /**
293     * Constructor
294     */
295      public ExpansionProfileCodeSystemComponent() {
296        super();
297      }
298
299        /**
300         * @return {@link #include} (Code systems to be included in value set expansions.)
301         */
302        public CodeSystemIncludeComponent getInclude() { 
303          if (this.include == null)
304            if (Configuration.errorOnAutoCreate())
305              throw new Error("Attempt to auto-create ExpansionProfileCodeSystemComponent.include");
306            else if (Configuration.doAutoCreate())
307              this.include = new CodeSystemIncludeComponent(); // cc
308          return this.include;
309        }
310
311        public boolean hasInclude() { 
312          return this.include != null && !this.include.isEmpty();
313        }
314
315        /**
316         * @param value {@link #include} (Code systems to be included in value set expansions.)
317         */
318        public ExpansionProfileCodeSystemComponent setInclude(CodeSystemIncludeComponent value) { 
319          this.include = value;
320          return this;
321        }
322
323        /**
324         * @return {@link #exclude} (Code systems to be excluded from value set expansions.)
325         */
326        public CodeSystemExcludeComponent getExclude() { 
327          if (this.exclude == null)
328            if (Configuration.errorOnAutoCreate())
329              throw new Error("Attempt to auto-create ExpansionProfileCodeSystemComponent.exclude");
330            else if (Configuration.doAutoCreate())
331              this.exclude = new CodeSystemExcludeComponent(); // cc
332          return this.exclude;
333        }
334
335        public boolean hasExclude() { 
336          return this.exclude != null && !this.exclude.isEmpty();
337        }
338
339        /**
340         * @param value {@link #exclude} (Code systems to be excluded from value set expansions.)
341         */
342        public ExpansionProfileCodeSystemComponent setExclude(CodeSystemExcludeComponent value) { 
343          this.exclude = value;
344          return this;
345        }
346
347        protected void listChildren(List<Property> childrenList) {
348          super.listChildren(childrenList);
349          childrenList.add(new Property("include", "", "Code systems to be included in value set expansions.", 0, java.lang.Integer.MAX_VALUE, include));
350          childrenList.add(new Property("exclude", "", "Code systems to be excluded from value set expansions.", 0, java.lang.Integer.MAX_VALUE, exclude));
351        }
352
353      @Override
354      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
355        switch (hash) {
356        case 1942574248: /*include*/ return this.include == null ? new Base[0] : new Base[] {this.include}; // CodeSystemIncludeComponent
357        case -1321148966: /*exclude*/ return this.exclude == null ? new Base[0] : new Base[] {this.exclude}; // CodeSystemExcludeComponent
358        default: return super.getProperty(hash, name, checkValid);
359        }
360
361      }
362
363      @Override
364      public void setProperty(int hash, String name, Base value) throws FHIRException {
365        switch (hash) {
366        case 1942574248: // include
367          this.include = (CodeSystemIncludeComponent) value; // CodeSystemIncludeComponent
368          break;
369        case -1321148966: // exclude
370          this.exclude = (CodeSystemExcludeComponent) value; // CodeSystemExcludeComponent
371          break;
372        default: super.setProperty(hash, name, value);
373        }
374
375      }
376
377      @Override
378      public void setProperty(String name, Base value) throws FHIRException {
379        if (name.equals("include"))
380          this.include = (CodeSystemIncludeComponent) value; // CodeSystemIncludeComponent
381        else if (name.equals("exclude"))
382          this.exclude = (CodeSystemExcludeComponent) value; // CodeSystemExcludeComponent
383        else
384          super.setProperty(name, value);
385      }
386
387      @Override
388      public Base makeProperty(int hash, String name) throws FHIRException {
389        switch (hash) {
390        case 1942574248:  return getInclude(); // CodeSystemIncludeComponent
391        case -1321148966:  return getExclude(); // CodeSystemExcludeComponent
392        default: return super.makeProperty(hash, name);
393        }
394
395      }
396
397      @Override
398      public Base addChild(String name) throws FHIRException {
399        if (name.equals("include")) {
400          this.include = new CodeSystemIncludeComponent();
401          return this.include;
402        }
403        else if (name.equals("exclude")) {
404          this.exclude = new CodeSystemExcludeComponent();
405          return this.exclude;
406        }
407        else
408          return super.addChild(name);
409      }
410
411      public ExpansionProfileCodeSystemComponent copy() {
412        ExpansionProfileCodeSystemComponent dst = new ExpansionProfileCodeSystemComponent();
413        copyValues(dst);
414        dst.include = include == null ? null : include.copy();
415        dst.exclude = exclude == null ? null : exclude.copy();
416        return dst;
417      }
418
419      @Override
420      public boolean equalsDeep(Base other) {
421        if (!super.equalsDeep(other))
422          return false;
423        if (!(other instanceof ExpansionProfileCodeSystemComponent))
424          return false;
425        ExpansionProfileCodeSystemComponent o = (ExpansionProfileCodeSystemComponent) other;
426        return compareDeep(include, o.include, true) && compareDeep(exclude, o.exclude, true);
427      }
428
429      @Override
430      public boolean equalsShallow(Base other) {
431        if (!super.equalsShallow(other))
432          return false;
433        if (!(other instanceof ExpansionProfileCodeSystemComponent))
434          return false;
435        ExpansionProfileCodeSystemComponent o = (ExpansionProfileCodeSystemComponent) other;
436        return true;
437      }
438
439      public boolean isEmpty() {
440        return super.isEmpty() && (include == null || include.isEmpty()) && (exclude == null || exclude.isEmpty())
441          ;
442      }
443
444  public String fhirType() {
445    return "ExpansionProfile.codeSystem";
446
447  }
448
449  }
450
451    @Block()
452    public static class CodeSystemIncludeComponent extends BackboneElement implements IBaseBackboneElement {
453        /**
454         * A data group for each code system to be included.
455         */
456        @Child(name = "codeSystem", type = {}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
457        @Description(shortDefinition="The code systems to be included", formalDefinition="A data group for each code system to be included." )
458        protected List<CodeSystemIncludeCodeSystemComponent> codeSystem;
459
460        private static final long serialVersionUID = 1076909689L;
461
462    /**
463     * Constructor
464     */
465      public CodeSystemIncludeComponent() {
466        super();
467      }
468
469        /**
470         * @return {@link #codeSystem} (A data group for each code system to be included.)
471         */
472        public List<CodeSystemIncludeCodeSystemComponent> getCodeSystem() { 
473          if (this.codeSystem == null)
474            this.codeSystem = new ArrayList<CodeSystemIncludeCodeSystemComponent>();
475          return this.codeSystem;
476        }
477
478        public boolean hasCodeSystem() { 
479          if (this.codeSystem == null)
480            return false;
481          for (CodeSystemIncludeCodeSystemComponent item : this.codeSystem)
482            if (!item.isEmpty())
483              return true;
484          return false;
485        }
486
487        /**
488         * @return {@link #codeSystem} (A data group for each code system to be included.)
489         */
490    // syntactic sugar
491        public CodeSystemIncludeCodeSystemComponent addCodeSystem() { //3
492          CodeSystemIncludeCodeSystemComponent t = new CodeSystemIncludeCodeSystemComponent();
493          if (this.codeSystem == null)
494            this.codeSystem = new ArrayList<CodeSystemIncludeCodeSystemComponent>();
495          this.codeSystem.add(t);
496          return t;
497        }
498
499    // syntactic sugar
500        public CodeSystemIncludeComponent addCodeSystem(CodeSystemIncludeCodeSystemComponent t) { //3
501          if (t == null)
502            return this;
503          if (this.codeSystem == null)
504            this.codeSystem = new ArrayList<CodeSystemIncludeCodeSystemComponent>();
505          this.codeSystem.add(t);
506          return this;
507        }
508
509        protected void listChildren(List<Property> childrenList) {
510          super.listChildren(childrenList);
511          childrenList.add(new Property("codeSystem", "", "A data group for each code system to be included.", 0, java.lang.Integer.MAX_VALUE, codeSystem));
512        }
513
514      @Override
515      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
516        switch (hash) {
517        case -916511108: /*codeSystem*/ return this.codeSystem == null ? new Base[0] : this.codeSystem.toArray(new Base[this.codeSystem.size()]); // CodeSystemIncludeCodeSystemComponent
518        default: return super.getProperty(hash, name, checkValid);
519        }
520
521      }
522
523      @Override
524      public void setProperty(int hash, String name, Base value) throws FHIRException {
525        switch (hash) {
526        case -916511108: // codeSystem
527          this.getCodeSystem().add((CodeSystemIncludeCodeSystemComponent) value); // CodeSystemIncludeCodeSystemComponent
528          break;
529        default: super.setProperty(hash, name, value);
530        }
531
532      }
533
534      @Override
535      public void setProperty(String name, Base value) throws FHIRException {
536        if (name.equals("codeSystem"))
537          this.getCodeSystem().add((CodeSystemIncludeCodeSystemComponent) value);
538        else
539          super.setProperty(name, value);
540      }
541
542      @Override
543      public Base makeProperty(int hash, String name) throws FHIRException {
544        switch (hash) {
545        case -916511108:  return addCodeSystem(); // CodeSystemIncludeCodeSystemComponent
546        default: return super.makeProperty(hash, name);
547        }
548
549      }
550
551      @Override
552      public Base addChild(String name) throws FHIRException {
553        if (name.equals("codeSystem")) {
554          return addCodeSystem();
555        }
556        else
557          return super.addChild(name);
558      }
559
560      public CodeSystemIncludeComponent copy() {
561        CodeSystemIncludeComponent dst = new CodeSystemIncludeComponent();
562        copyValues(dst);
563        if (codeSystem != null) {
564          dst.codeSystem = new ArrayList<CodeSystemIncludeCodeSystemComponent>();
565          for (CodeSystemIncludeCodeSystemComponent i : codeSystem)
566            dst.codeSystem.add(i.copy());
567        };
568        return dst;
569      }
570
571      @Override
572      public boolean equalsDeep(Base other) {
573        if (!super.equalsDeep(other))
574          return false;
575        if (!(other instanceof CodeSystemIncludeComponent))
576          return false;
577        CodeSystemIncludeComponent o = (CodeSystemIncludeComponent) other;
578        return compareDeep(codeSystem, o.codeSystem, true);
579      }
580
581      @Override
582      public boolean equalsShallow(Base other) {
583        if (!super.equalsShallow(other))
584          return false;
585        if (!(other instanceof CodeSystemIncludeComponent))
586          return false;
587        CodeSystemIncludeComponent o = (CodeSystemIncludeComponent) other;
588        return true;
589      }
590
591      public boolean isEmpty() {
592        return super.isEmpty() && (codeSystem == null || codeSystem.isEmpty());
593      }
594
595  public String fhirType() {
596    return "ExpansionProfile.codeSystem.include";
597
598  }
599
600  }
601
602    @Block()
603    public static class CodeSystemIncludeCodeSystemComponent extends BackboneElement implements IBaseBackboneElement {
604        /**
605         * An absolute URI which is the code system to be included.
606         */
607        @Child(name = "system", type = {UriType.class}, order=1, min=1, max=1, modifier=false, summary=true)
608        @Description(shortDefinition="The specific code system to be included", formalDefinition="An absolute URI which is the code system to be included." )
609        protected UriType system;
610
611        /**
612         * The version of the code system from which codes in the expansion should be included.
613         */
614        @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
615        @Description(shortDefinition="Specific version of the code system referred to", formalDefinition="The version of the code system from which codes in the expansion should be included." )
616        protected StringType version;
617
618        private static final long serialVersionUID = 1145288774L;
619
620    /**
621     * Constructor
622     */
623      public CodeSystemIncludeCodeSystemComponent() {
624        super();
625      }
626
627    /**
628     * Constructor
629     */
630      public CodeSystemIncludeCodeSystemComponent(UriType system) {
631        super();
632        this.system = system;
633      }
634
635        /**
636         * @return {@link #system} (An absolute URI which is the code system to be included.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
637         */
638        public UriType getSystemElement() { 
639          if (this.system == null)
640            if (Configuration.errorOnAutoCreate())
641              throw new Error("Attempt to auto-create CodeSystemIncludeCodeSystemComponent.system");
642            else if (Configuration.doAutoCreate())
643              this.system = new UriType(); // bb
644          return this.system;
645        }
646
647        public boolean hasSystemElement() { 
648          return this.system != null && !this.system.isEmpty();
649        }
650
651        public boolean hasSystem() { 
652          return this.system != null && !this.system.isEmpty();
653        }
654
655        /**
656         * @param value {@link #system} (An absolute URI which is the code system to be included.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
657         */
658        public CodeSystemIncludeCodeSystemComponent setSystemElement(UriType value) { 
659          this.system = value;
660          return this;
661        }
662
663        /**
664         * @return An absolute URI which is the code system to be included.
665         */
666        public String getSystem() { 
667          return this.system == null ? null : this.system.getValue();
668        }
669
670        /**
671         * @param value An absolute URI which is the code system to be included.
672         */
673        public CodeSystemIncludeCodeSystemComponent setSystem(String value) { 
674            if (this.system == null)
675              this.system = new UriType();
676            this.system.setValue(value);
677          return this;
678        }
679
680        /**
681         * @return {@link #version} (The version of the code system from which codes in the expansion should be included.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
682         */
683        public StringType getVersionElement() { 
684          if (this.version == null)
685            if (Configuration.errorOnAutoCreate())
686              throw new Error("Attempt to auto-create CodeSystemIncludeCodeSystemComponent.version");
687            else if (Configuration.doAutoCreate())
688              this.version = new StringType(); // bb
689          return this.version;
690        }
691
692        public boolean hasVersionElement() { 
693          return this.version != null && !this.version.isEmpty();
694        }
695
696        public boolean hasVersion() { 
697          return this.version != null && !this.version.isEmpty();
698        }
699
700        /**
701         * @param value {@link #version} (The version of the code system from which codes in the expansion should be included.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
702         */
703        public CodeSystemIncludeCodeSystemComponent setVersionElement(StringType value) { 
704          this.version = value;
705          return this;
706        }
707
708        /**
709         * @return The version of the code system from which codes in the expansion should be included.
710         */
711        public String getVersion() { 
712          return this.version == null ? null : this.version.getValue();
713        }
714
715        /**
716         * @param value The version of the code system from which codes in the expansion should be included.
717         */
718        public CodeSystemIncludeCodeSystemComponent setVersion(String value) { 
719          if (Utilities.noString(value))
720            this.version = null;
721          else {
722            if (this.version == null)
723              this.version = new StringType();
724            this.version.setValue(value);
725          }
726          return this;
727        }
728
729        protected void listChildren(List<Property> childrenList) {
730          super.listChildren(childrenList);
731          childrenList.add(new Property("system", "uri", "An absolute URI which is the code system to be included.", 0, java.lang.Integer.MAX_VALUE, system));
732          childrenList.add(new Property("version", "string", "The version of the code system from which codes in the expansion should be included.", 0, java.lang.Integer.MAX_VALUE, version));
733        }
734
735      @Override
736      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
737        switch (hash) {
738        case -887328209: /*system*/ return this.system == null ? new Base[0] : new Base[] {this.system}; // UriType
739        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
740        default: return super.getProperty(hash, name, checkValid);
741        }
742
743      }
744
745      @Override
746      public void setProperty(int hash, String name, Base value) throws FHIRException {
747        switch (hash) {
748        case -887328209: // system
749          this.system = castToUri(value); // UriType
750          break;
751        case 351608024: // version
752          this.version = castToString(value); // StringType
753          break;
754        default: super.setProperty(hash, name, value);
755        }
756
757      }
758
759      @Override
760      public void setProperty(String name, Base value) throws FHIRException {
761        if (name.equals("system"))
762          this.system = castToUri(value); // UriType
763        else if (name.equals("version"))
764          this.version = castToString(value); // StringType
765        else
766          super.setProperty(name, value);
767      }
768
769      @Override
770      public Base makeProperty(int hash, String name) throws FHIRException {
771        switch (hash) {
772        case -887328209: throw new FHIRException("Cannot make property system as it is not a complex type"); // UriType
773        case 351608024: throw new FHIRException("Cannot make property version as it is not a complex type"); // StringType
774        default: return super.makeProperty(hash, name);
775        }
776
777      }
778
779      @Override
780      public Base addChild(String name) throws FHIRException {
781        if (name.equals("system")) {
782          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.system");
783        }
784        else if (name.equals("version")) {
785          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.version");
786        }
787        else
788          return super.addChild(name);
789      }
790
791      public CodeSystemIncludeCodeSystemComponent copy() {
792        CodeSystemIncludeCodeSystemComponent dst = new CodeSystemIncludeCodeSystemComponent();
793        copyValues(dst);
794        dst.system = system == null ? null : system.copy();
795        dst.version = version == null ? null : version.copy();
796        return dst;
797      }
798
799      @Override
800      public boolean equalsDeep(Base other) {
801        if (!super.equalsDeep(other))
802          return false;
803        if (!(other instanceof CodeSystemIncludeCodeSystemComponent))
804          return false;
805        CodeSystemIncludeCodeSystemComponent o = (CodeSystemIncludeCodeSystemComponent) other;
806        return compareDeep(system, o.system, true) && compareDeep(version, o.version, true);
807      }
808
809      @Override
810      public boolean equalsShallow(Base other) {
811        if (!super.equalsShallow(other))
812          return false;
813        if (!(other instanceof CodeSystemIncludeCodeSystemComponent))
814          return false;
815        CodeSystemIncludeCodeSystemComponent o = (CodeSystemIncludeCodeSystemComponent) other;
816        return compareValues(system, o.system, true) && compareValues(version, o.version, true);
817      }
818
819      public boolean isEmpty() {
820        return super.isEmpty() && (system == null || system.isEmpty()) && (version == null || version.isEmpty())
821          ;
822      }
823
824  public String fhirType() {
825    return "ExpansionProfile.codeSystem.include.codeSystem";
826
827  }
828
829  }
830
831    @Block()
832    public static class CodeSystemExcludeComponent extends BackboneElement implements IBaseBackboneElement {
833        /**
834         * A data group for each code system to be excluded.
835         */
836        @Child(name = "codeSystem", type = {}, order=1, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
837        @Description(shortDefinition="The code systems to be excluded", formalDefinition="A data group for each code system to be excluded." )
838        protected List<CodeSystemExcludeCodeSystemComponent> codeSystem;
839
840        private static final long serialVersionUID = 1960514347L;
841
842    /**
843     * Constructor
844     */
845      public CodeSystemExcludeComponent() {
846        super();
847      }
848
849        /**
850         * @return {@link #codeSystem} (A data group for each code system to be excluded.)
851         */
852        public List<CodeSystemExcludeCodeSystemComponent> getCodeSystem() { 
853          if (this.codeSystem == null)
854            this.codeSystem = new ArrayList<CodeSystemExcludeCodeSystemComponent>();
855          return this.codeSystem;
856        }
857
858        public boolean hasCodeSystem() { 
859          if (this.codeSystem == null)
860            return false;
861          for (CodeSystemExcludeCodeSystemComponent item : this.codeSystem)
862            if (!item.isEmpty())
863              return true;
864          return false;
865        }
866
867        /**
868         * @return {@link #codeSystem} (A data group for each code system to be excluded.)
869         */
870    // syntactic sugar
871        public CodeSystemExcludeCodeSystemComponent addCodeSystem() { //3
872          CodeSystemExcludeCodeSystemComponent t = new CodeSystemExcludeCodeSystemComponent();
873          if (this.codeSystem == null)
874            this.codeSystem = new ArrayList<CodeSystemExcludeCodeSystemComponent>();
875          this.codeSystem.add(t);
876          return t;
877        }
878
879    // syntactic sugar
880        public CodeSystemExcludeComponent addCodeSystem(CodeSystemExcludeCodeSystemComponent t) { //3
881          if (t == null)
882            return this;
883          if (this.codeSystem == null)
884            this.codeSystem = new ArrayList<CodeSystemExcludeCodeSystemComponent>();
885          this.codeSystem.add(t);
886          return this;
887        }
888
889        protected void listChildren(List<Property> childrenList) {
890          super.listChildren(childrenList);
891          childrenList.add(new Property("codeSystem", "", "A data group for each code system to be excluded.", 0, java.lang.Integer.MAX_VALUE, codeSystem));
892        }
893
894      @Override
895      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
896        switch (hash) {
897        case -916511108: /*codeSystem*/ return this.codeSystem == null ? new Base[0] : this.codeSystem.toArray(new Base[this.codeSystem.size()]); // CodeSystemExcludeCodeSystemComponent
898        default: return super.getProperty(hash, name, checkValid);
899        }
900
901      }
902
903      @Override
904      public void setProperty(int hash, String name, Base value) throws FHIRException {
905        switch (hash) {
906        case -916511108: // codeSystem
907          this.getCodeSystem().add((CodeSystemExcludeCodeSystemComponent) value); // CodeSystemExcludeCodeSystemComponent
908          break;
909        default: super.setProperty(hash, name, value);
910        }
911
912      }
913
914      @Override
915      public void setProperty(String name, Base value) throws FHIRException {
916        if (name.equals("codeSystem"))
917          this.getCodeSystem().add((CodeSystemExcludeCodeSystemComponent) value);
918        else
919          super.setProperty(name, value);
920      }
921
922      @Override
923      public Base makeProperty(int hash, String name) throws FHIRException {
924        switch (hash) {
925        case -916511108:  return addCodeSystem(); // CodeSystemExcludeCodeSystemComponent
926        default: return super.makeProperty(hash, name);
927        }
928
929      }
930
931      @Override
932      public Base addChild(String name) throws FHIRException {
933        if (name.equals("codeSystem")) {
934          return addCodeSystem();
935        }
936        else
937          return super.addChild(name);
938      }
939
940      public CodeSystemExcludeComponent copy() {
941        CodeSystemExcludeComponent dst = new CodeSystemExcludeComponent();
942        copyValues(dst);
943        if (codeSystem != null) {
944          dst.codeSystem = new ArrayList<CodeSystemExcludeCodeSystemComponent>();
945          for (CodeSystemExcludeCodeSystemComponent i : codeSystem)
946            dst.codeSystem.add(i.copy());
947        };
948        return dst;
949      }
950
951      @Override
952      public boolean equalsDeep(Base other) {
953        if (!super.equalsDeep(other))
954          return false;
955        if (!(other instanceof CodeSystemExcludeComponent))
956          return false;
957        CodeSystemExcludeComponent o = (CodeSystemExcludeComponent) other;
958        return compareDeep(codeSystem, o.codeSystem, true);
959      }
960
961      @Override
962      public boolean equalsShallow(Base other) {
963        if (!super.equalsShallow(other))
964          return false;
965        if (!(other instanceof CodeSystemExcludeComponent))
966          return false;
967        CodeSystemExcludeComponent o = (CodeSystemExcludeComponent) other;
968        return true;
969      }
970
971      public boolean isEmpty() {
972        return super.isEmpty() && (codeSystem == null || codeSystem.isEmpty());
973      }
974
975  public String fhirType() {
976    return "ExpansionProfile.codeSystem.exclude";
977
978  }
979
980  }
981
982    @Block()
983    public static class CodeSystemExcludeCodeSystemComponent extends BackboneElement implements IBaseBackboneElement {
984        /**
985         * An absolute URI which is the code system to be excluded.
986         */
987        @Child(name = "system", type = {UriType.class}, order=1, min=1, max=1, modifier=false, summary=true)
988        @Description(shortDefinition="The specific code system to be excluded", formalDefinition="An absolute URI which is the code system to be excluded." )
989        protected UriType system;
990
991        /**
992         * The version of the code system from which codes in the expansion should be excluded.
993         */
994        @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
995        @Description(shortDefinition="Specific version of the code system referred to", formalDefinition="The version of the code system from which codes in the expansion should be excluded." )
996        protected StringType version;
997
998        private static final long serialVersionUID = 1145288774L;
999
1000    /**
1001     * Constructor
1002     */
1003      public CodeSystemExcludeCodeSystemComponent() {
1004        super();
1005      }
1006
1007    /**
1008     * Constructor
1009     */
1010      public CodeSystemExcludeCodeSystemComponent(UriType system) {
1011        super();
1012        this.system = system;
1013      }
1014
1015        /**
1016         * @return {@link #system} (An absolute URI which is the code system to be excluded.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
1017         */
1018        public UriType getSystemElement() { 
1019          if (this.system == null)
1020            if (Configuration.errorOnAutoCreate())
1021              throw new Error("Attempt to auto-create CodeSystemExcludeCodeSystemComponent.system");
1022            else if (Configuration.doAutoCreate())
1023              this.system = new UriType(); // bb
1024          return this.system;
1025        }
1026
1027        public boolean hasSystemElement() { 
1028          return this.system != null && !this.system.isEmpty();
1029        }
1030
1031        public boolean hasSystem() { 
1032          return this.system != null && !this.system.isEmpty();
1033        }
1034
1035        /**
1036         * @param value {@link #system} (An absolute URI which is the code system to be excluded.). This is the underlying object with id, value and extensions. The accessor "getSystem" gives direct access to the value
1037         */
1038        public CodeSystemExcludeCodeSystemComponent setSystemElement(UriType value) { 
1039          this.system = value;
1040          return this;
1041        }
1042
1043        /**
1044         * @return An absolute URI which is the code system to be excluded.
1045         */
1046        public String getSystem() { 
1047          return this.system == null ? null : this.system.getValue();
1048        }
1049
1050        /**
1051         * @param value An absolute URI which is the code system to be excluded.
1052         */
1053        public CodeSystemExcludeCodeSystemComponent setSystem(String value) { 
1054            if (this.system == null)
1055              this.system = new UriType();
1056            this.system.setValue(value);
1057          return this;
1058        }
1059
1060        /**
1061         * @return {@link #version} (The version of the code system from which codes in the expansion should be excluded.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
1062         */
1063        public StringType getVersionElement() { 
1064          if (this.version == null)
1065            if (Configuration.errorOnAutoCreate())
1066              throw new Error("Attempt to auto-create CodeSystemExcludeCodeSystemComponent.version");
1067            else if (Configuration.doAutoCreate())
1068              this.version = new StringType(); // bb
1069          return this.version;
1070        }
1071
1072        public boolean hasVersionElement() { 
1073          return this.version != null && !this.version.isEmpty();
1074        }
1075
1076        public boolean hasVersion() { 
1077          return this.version != null && !this.version.isEmpty();
1078        }
1079
1080        /**
1081         * @param value {@link #version} (The version of the code system from which codes in the expansion should be excluded.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
1082         */
1083        public CodeSystemExcludeCodeSystemComponent setVersionElement(StringType value) { 
1084          this.version = value;
1085          return this;
1086        }
1087
1088        /**
1089         * @return The version of the code system from which codes in the expansion should be excluded.
1090         */
1091        public String getVersion() { 
1092          return this.version == null ? null : this.version.getValue();
1093        }
1094
1095        /**
1096         * @param value The version of the code system from which codes in the expansion should be excluded.
1097         */
1098        public CodeSystemExcludeCodeSystemComponent setVersion(String value) { 
1099          if (Utilities.noString(value))
1100            this.version = null;
1101          else {
1102            if (this.version == null)
1103              this.version = new StringType();
1104            this.version.setValue(value);
1105          }
1106          return this;
1107        }
1108
1109        protected void listChildren(List<Property> childrenList) {
1110          super.listChildren(childrenList);
1111          childrenList.add(new Property("system", "uri", "An absolute URI which is the code system to be excluded.", 0, java.lang.Integer.MAX_VALUE, system));
1112          childrenList.add(new Property("version", "string", "The version of the code system from which codes in the expansion should be excluded.", 0, java.lang.Integer.MAX_VALUE, version));
1113        }
1114
1115      @Override
1116      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1117        switch (hash) {
1118        case -887328209: /*system*/ return this.system == null ? new Base[0] : new Base[] {this.system}; // UriType
1119        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
1120        default: return super.getProperty(hash, name, checkValid);
1121        }
1122
1123      }
1124
1125      @Override
1126      public void setProperty(int hash, String name, Base value) throws FHIRException {
1127        switch (hash) {
1128        case -887328209: // system
1129          this.system = castToUri(value); // UriType
1130          break;
1131        case 351608024: // version
1132          this.version = castToString(value); // StringType
1133          break;
1134        default: super.setProperty(hash, name, value);
1135        }
1136
1137      }
1138
1139      @Override
1140      public void setProperty(String name, Base value) throws FHIRException {
1141        if (name.equals("system"))
1142          this.system = castToUri(value); // UriType
1143        else if (name.equals("version"))
1144          this.version = castToString(value); // StringType
1145        else
1146          super.setProperty(name, value);
1147      }
1148
1149      @Override
1150      public Base makeProperty(int hash, String name) throws FHIRException {
1151        switch (hash) {
1152        case -887328209: throw new FHIRException("Cannot make property system as it is not a complex type"); // UriType
1153        case 351608024: throw new FHIRException("Cannot make property version as it is not a complex type"); // StringType
1154        default: return super.makeProperty(hash, name);
1155        }
1156
1157      }
1158
1159      @Override
1160      public Base addChild(String name) throws FHIRException {
1161        if (name.equals("system")) {
1162          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.system");
1163        }
1164        else if (name.equals("version")) {
1165          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.version");
1166        }
1167        else
1168          return super.addChild(name);
1169      }
1170
1171      public CodeSystemExcludeCodeSystemComponent copy() {
1172        CodeSystemExcludeCodeSystemComponent dst = new CodeSystemExcludeCodeSystemComponent();
1173        copyValues(dst);
1174        dst.system = system == null ? null : system.copy();
1175        dst.version = version == null ? null : version.copy();
1176        return dst;
1177      }
1178
1179      @Override
1180      public boolean equalsDeep(Base other) {
1181        if (!super.equalsDeep(other))
1182          return false;
1183        if (!(other instanceof CodeSystemExcludeCodeSystemComponent))
1184          return false;
1185        CodeSystemExcludeCodeSystemComponent o = (CodeSystemExcludeCodeSystemComponent) other;
1186        return compareDeep(system, o.system, true) && compareDeep(version, o.version, true);
1187      }
1188
1189      @Override
1190      public boolean equalsShallow(Base other) {
1191        if (!super.equalsShallow(other))
1192          return false;
1193        if (!(other instanceof CodeSystemExcludeCodeSystemComponent))
1194          return false;
1195        CodeSystemExcludeCodeSystemComponent o = (CodeSystemExcludeCodeSystemComponent) other;
1196        return compareValues(system, o.system, true) && compareValues(version, o.version, true);
1197      }
1198
1199      public boolean isEmpty() {
1200        return super.isEmpty() && (system == null || system.isEmpty()) && (version == null || version.isEmpty())
1201          ;
1202      }
1203
1204  public String fhirType() {
1205    return "ExpansionProfile.codeSystem.exclude.codeSystem";
1206
1207  }
1208
1209  }
1210
1211    @Block()
1212    public static class ExpansionProfileDesignationComponent extends BackboneElement implements IBaseBackboneElement {
1213        /**
1214         * Designations to be included.
1215         */
1216        @Child(name = "include", type = {}, order=1, min=0, max=1, modifier=false, summary=true)
1217        @Description(shortDefinition="Designations to be included", formalDefinition="Designations to be included." )
1218        protected DesignationIncludeComponent include;
1219
1220        /**
1221         * Designations to be excluded.
1222         */
1223        @Child(name = "exclude", type = {}, order=2, min=0, max=1, modifier=false, summary=true)
1224        @Description(shortDefinition="Designations to be excluded", formalDefinition="Designations to be excluded." )
1225        protected DesignationExcludeComponent exclude;
1226
1227        private static final long serialVersionUID = -2080476436L;
1228
1229    /**
1230     * Constructor
1231     */
1232      public ExpansionProfileDesignationComponent() {
1233        super();
1234      }
1235
1236        /**
1237         * @return {@link #include} (Designations to be included.)
1238         */
1239        public DesignationIncludeComponent getInclude() { 
1240          if (this.include == null)
1241            if (Configuration.errorOnAutoCreate())
1242              throw new Error("Attempt to auto-create ExpansionProfileDesignationComponent.include");
1243            else if (Configuration.doAutoCreate())
1244              this.include = new DesignationIncludeComponent(); // cc
1245          return this.include;
1246        }
1247
1248        public boolean hasInclude() { 
1249          return this.include != null && !this.include.isEmpty();
1250        }
1251
1252        /**
1253         * @param value {@link #include} (Designations to be included.)
1254         */
1255        public ExpansionProfileDesignationComponent setInclude(DesignationIncludeComponent value) { 
1256          this.include = value;
1257          return this;
1258        }
1259
1260        /**
1261         * @return {@link #exclude} (Designations to be excluded.)
1262         */
1263        public DesignationExcludeComponent getExclude() { 
1264          if (this.exclude == null)
1265            if (Configuration.errorOnAutoCreate())
1266              throw new Error("Attempt to auto-create ExpansionProfileDesignationComponent.exclude");
1267            else if (Configuration.doAutoCreate())
1268              this.exclude = new DesignationExcludeComponent(); // cc
1269          return this.exclude;
1270        }
1271
1272        public boolean hasExclude() { 
1273          return this.exclude != null && !this.exclude.isEmpty();
1274        }
1275
1276        /**
1277         * @param value {@link #exclude} (Designations to be excluded.)
1278         */
1279        public ExpansionProfileDesignationComponent setExclude(DesignationExcludeComponent value) { 
1280          this.exclude = value;
1281          return this;
1282        }
1283
1284        protected void listChildren(List<Property> childrenList) {
1285          super.listChildren(childrenList);
1286          childrenList.add(new Property("include", "", "Designations to be included.", 0, java.lang.Integer.MAX_VALUE, include));
1287          childrenList.add(new Property("exclude", "", "Designations to be excluded.", 0, java.lang.Integer.MAX_VALUE, exclude));
1288        }
1289
1290      @Override
1291      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1292        switch (hash) {
1293        case 1942574248: /*include*/ return this.include == null ? new Base[0] : new Base[] {this.include}; // DesignationIncludeComponent
1294        case -1321148966: /*exclude*/ return this.exclude == null ? new Base[0] : new Base[] {this.exclude}; // DesignationExcludeComponent
1295        default: return super.getProperty(hash, name, checkValid);
1296        }
1297
1298      }
1299
1300      @Override
1301      public void setProperty(int hash, String name, Base value) throws FHIRException {
1302        switch (hash) {
1303        case 1942574248: // include
1304          this.include = (DesignationIncludeComponent) value; // DesignationIncludeComponent
1305          break;
1306        case -1321148966: // exclude
1307          this.exclude = (DesignationExcludeComponent) value; // DesignationExcludeComponent
1308          break;
1309        default: super.setProperty(hash, name, value);
1310        }
1311
1312      }
1313
1314      @Override
1315      public void setProperty(String name, Base value) throws FHIRException {
1316        if (name.equals("include"))
1317          this.include = (DesignationIncludeComponent) value; // DesignationIncludeComponent
1318        else if (name.equals("exclude"))
1319          this.exclude = (DesignationExcludeComponent) value; // DesignationExcludeComponent
1320        else
1321          super.setProperty(name, value);
1322      }
1323
1324      @Override
1325      public Base makeProperty(int hash, String name) throws FHIRException {
1326        switch (hash) {
1327        case 1942574248:  return getInclude(); // DesignationIncludeComponent
1328        case -1321148966:  return getExclude(); // DesignationExcludeComponent
1329        default: return super.makeProperty(hash, name);
1330        }
1331
1332      }
1333
1334      @Override
1335      public Base addChild(String name) throws FHIRException {
1336        if (name.equals("include")) {
1337          this.include = new DesignationIncludeComponent();
1338          return this.include;
1339        }
1340        else if (name.equals("exclude")) {
1341          this.exclude = new DesignationExcludeComponent();
1342          return this.exclude;
1343        }
1344        else
1345          return super.addChild(name);
1346      }
1347
1348      public ExpansionProfileDesignationComponent copy() {
1349        ExpansionProfileDesignationComponent dst = new ExpansionProfileDesignationComponent();
1350        copyValues(dst);
1351        dst.include = include == null ? null : include.copy();
1352        dst.exclude = exclude == null ? null : exclude.copy();
1353        return dst;
1354      }
1355
1356      @Override
1357      public boolean equalsDeep(Base other) {
1358        if (!super.equalsDeep(other))
1359          return false;
1360        if (!(other instanceof ExpansionProfileDesignationComponent))
1361          return false;
1362        ExpansionProfileDesignationComponent o = (ExpansionProfileDesignationComponent) other;
1363        return compareDeep(include, o.include, true) && compareDeep(exclude, o.exclude, true);
1364      }
1365
1366      @Override
1367      public boolean equalsShallow(Base other) {
1368        if (!super.equalsShallow(other))
1369          return false;
1370        if (!(other instanceof ExpansionProfileDesignationComponent))
1371          return false;
1372        ExpansionProfileDesignationComponent o = (ExpansionProfileDesignationComponent) other;
1373        return true;
1374      }
1375
1376      public boolean isEmpty() {
1377        return super.isEmpty() && (include == null || include.isEmpty()) && (exclude == null || exclude.isEmpty())
1378          ;
1379      }
1380
1381  public String fhirType() {
1382    return "ExpansionProfile.designation";
1383
1384  }
1385
1386  }
1387
1388    @Block()
1389    public static class DesignationIncludeComponent extends BackboneElement implements IBaseBackboneElement {
1390        /**
1391         * A data group for each designation to be included.
1392         */
1393        @Child(name = "designation", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1394        @Description(shortDefinition="The designation to be included", formalDefinition="A data group for each designation to be included." )
1395        protected List<DesignationIncludeDesignationComponent> designation;
1396
1397        private static final long serialVersionUID = -1989669274L;
1398
1399    /**
1400     * Constructor
1401     */
1402      public DesignationIncludeComponent() {
1403        super();
1404      }
1405
1406        /**
1407         * @return {@link #designation} (A data group for each designation to be included.)
1408         */
1409        public List<DesignationIncludeDesignationComponent> getDesignation() { 
1410          if (this.designation == null)
1411            this.designation = new ArrayList<DesignationIncludeDesignationComponent>();
1412          return this.designation;
1413        }
1414
1415        public boolean hasDesignation() { 
1416          if (this.designation == null)
1417            return false;
1418          for (DesignationIncludeDesignationComponent item : this.designation)
1419            if (!item.isEmpty())
1420              return true;
1421          return false;
1422        }
1423
1424        /**
1425         * @return {@link #designation} (A data group for each designation to be included.)
1426         */
1427    // syntactic sugar
1428        public DesignationIncludeDesignationComponent addDesignation() { //3
1429          DesignationIncludeDesignationComponent t = new DesignationIncludeDesignationComponent();
1430          if (this.designation == null)
1431            this.designation = new ArrayList<DesignationIncludeDesignationComponent>();
1432          this.designation.add(t);
1433          return t;
1434        }
1435
1436    // syntactic sugar
1437        public DesignationIncludeComponent addDesignation(DesignationIncludeDesignationComponent t) { //3
1438          if (t == null)
1439            return this;
1440          if (this.designation == null)
1441            this.designation = new ArrayList<DesignationIncludeDesignationComponent>();
1442          this.designation.add(t);
1443          return this;
1444        }
1445
1446        protected void listChildren(List<Property> childrenList) {
1447          super.listChildren(childrenList);
1448          childrenList.add(new Property("designation", "", "A data group for each designation to be included.", 0, java.lang.Integer.MAX_VALUE, designation));
1449        }
1450
1451      @Override
1452      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1453        switch (hash) {
1454        case -900931593: /*designation*/ return this.designation == null ? new Base[0] : this.designation.toArray(new Base[this.designation.size()]); // DesignationIncludeDesignationComponent
1455        default: return super.getProperty(hash, name, checkValid);
1456        }
1457
1458      }
1459
1460      @Override
1461      public void setProperty(int hash, String name, Base value) throws FHIRException {
1462        switch (hash) {
1463        case -900931593: // designation
1464          this.getDesignation().add((DesignationIncludeDesignationComponent) value); // DesignationIncludeDesignationComponent
1465          break;
1466        default: super.setProperty(hash, name, value);
1467        }
1468
1469      }
1470
1471      @Override
1472      public void setProperty(String name, Base value) throws FHIRException {
1473        if (name.equals("designation"))
1474          this.getDesignation().add((DesignationIncludeDesignationComponent) value);
1475        else
1476          super.setProperty(name, value);
1477      }
1478
1479      @Override
1480      public Base makeProperty(int hash, String name) throws FHIRException {
1481        switch (hash) {
1482        case -900931593:  return addDesignation(); // DesignationIncludeDesignationComponent
1483        default: return super.makeProperty(hash, name);
1484        }
1485
1486      }
1487
1488      @Override
1489      public Base addChild(String name) throws FHIRException {
1490        if (name.equals("designation")) {
1491          return addDesignation();
1492        }
1493        else
1494          return super.addChild(name);
1495      }
1496
1497      public DesignationIncludeComponent copy() {
1498        DesignationIncludeComponent dst = new DesignationIncludeComponent();
1499        copyValues(dst);
1500        if (designation != null) {
1501          dst.designation = new ArrayList<DesignationIncludeDesignationComponent>();
1502          for (DesignationIncludeDesignationComponent i : designation)
1503            dst.designation.add(i.copy());
1504        };
1505        return dst;
1506      }
1507
1508      @Override
1509      public boolean equalsDeep(Base other) {
1510        if (!super.equalsDeep(other))
1511          return false;
1512        if (!(other instanceof DesignationIncludeComponent))
1513          return false;
1514        DesignationIncludeComponent o = (DesignationIncludeComponent) other;
1515        return compareDeep(designation, o.designation, true);
1516      }
1517
1518      @Override
1519      public boolean equalsShallow(Base other) {
1520        if (!super.equalsShallow(other))
1521          return false;
1522        if (!(other instanceof DesignationIncludeComponent))
1523          return false;
1524        DesignationIncludeComponent o = (DesignationIncludeComponent) other;
1525        return true;
1526      }
1527
1528      public boolean isEmpty() {
1529        return super.isEmpty() && (designation == null || designation.isEmpty());
1530      }
1531
1532  public String fhirType() {
1533    return "ExpansionProfile.designation.include";
1534
1535  }
1536
1537  }
1538
1539    @Block()
1540    public static class DesignationIncludeDesignationComponent extends BackboneElement implements IBaseBackboneElement {
1541        /**
1542         * The language this designation is defined for.
1543         */
1544        @Child(name = "language", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=true)
1545        @Description(shortDefinition="Human language of the designation to be included", formalDefinition="The language this designation is defined for." )
1546        protected CodeType language;
1547
1548        /**
1549         * Designation uses for inclusion in the expansion.
1550         */
1551        @Child(name = "use", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
1552        @Description(shortDefinition="Designation use", formalDefinition="Designation uses for inclusion in the expansion." )
1553        protected Coding use;
1554
1555        private static final long serialVersionUID = 242239292L;
1556
1557    /**
1558     * Constructor
1559     */
1560      public DesignationIncludeDesignationComponent() {
1561        super();
1562      }
1563
1564        /**
1565         * @return {@link #language} (The language this designation is defined for.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value
1566         */
1567        public CodeType getLanguageElement() { 
1568          if (this.language == null)
1569            if (Configuration.errorOnAutoCreate())
1570              throw new Error("Attempt to auto-create DesignationIncludeDesignationComponent.language");
1571            else if (Configuration.doAutoCreate())
1572              this.language = new CodeType(); // bb
1573          return this.language;
1574        }
1575
1576        public boolean hasLanguageElement() { 
1577          return this.language != null && !this.language.isEmpty();
1578        }
1579
1580        public boolean hasLanguage() { 
1581          return this.language != null && !this.language.isEmpty();
1582        }
1583
1584        /**
1585         * @param value {@link #language} (The language this designation is defined for.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value
1586         */
1587        public DesignationIncludeDesignationComponent setLanguageElement(CodeType value) { 
1588          this.language = value;
1589          return this;
1590        }
1591
1592        /**
1593         * @return The language this designation is defined for.
1594         */
1595        public String getLanguage() { 
1596          return this.language == null ? null : this.language.getValue();
1597        }
1598
1599        /**
1600         * @param value The language this designation is defined for.
1601         */
1602        public DesignationIncludeDesignationComponent setLanguage(String value) { 
1603          if (Utilities.noString(value))
1604            this.language = null;
1605          else {
1606            if (this.language == null)
1607              this.language = new CodeType();
1608            this.language.setValue(value);
1609          }
1610          return this;
1611        }
1612
1613        /**
1614         * @return {@link #use} (Designation uses for inclusion in the expansion.)
1615         */
1616        public Coding getUse() { 
1617          if (this.use == null)
1618            if (Configuration.errorOnAutoCreate())
1619              throw new Error("Attempt to auto-create DesignationIncludeDesignationComponent.use");
1620            else if (Configuration.doAutoCreate())
1621              this.use = new Coding(); // cc
1622          return this.use;
1623        }
1624
1625        public boolean hasUse() { 
1626          return this.use != null && !this.use.isEmpty();
1627        }
1628
1629        /**
1630         * @param value {@link #use} (Designation uses for inclusion in the expansion.)
1631         */
1632        public DesignationIncludeDesignationComponent setUse(Coding value) { 
1633          this.use = value;
1634          return this;
1635        }
1636
1637        protected void listChildren(List<Property> childrenList) {
1638          super.listChildren(childrenList);
1639          childrenList.add(new Property("language", "code", "The language this designation is defined for.", 0, java.lang.Integer.MAX_VALUE, language));
1640          childrenList.add(new Property("use", "Coding", "Designation uses for inclusion in the expansion.", 0, java.lang.Integer.MAX_VALUE, use));
1641        }
1642
1643      @Override
1644      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1645        switch (hash) {
1646        case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // CodeType
1647        case 116103: /*use*/ return this.use == null ? new Base[0] : new Base[] {this.use}; // Coding
1648        default: return super.getProperty(hash, name, checkValid);
1649        }
1650
1651      }
1652
1653      @Override
1654      public void setProperty(int hash, String name, Base value) throws FHIRException {
1655        switch (hash) {
1656        case -1613589672: // language
1657          this.language = castToCode(value); // CodeType
1658          break;
1659        case 116103: // use
1660          this.use = castToCoding(value); // Coding
1661          break;
1662        default: super.setProperty(hash, name, value);
1663        }
1664
1665      }
1666
1667      @Override
1668      public void setProperty(String name, Base value) throws FHIRException {
1669        if (name.equals("language"))
1670          this.language = castToCode(value); // CodeType
1671        else if (name.equals("use"))
1672          this.use = castToCoding(value); // Coding
1673        else
1674          super.setProperty(name, value);
1675      }
1676
1677      @Override
1678      public Base makeProperty(int hash, String name) throws FHIRException {
1679        switch (hash) {
1680        case -1613589672: throw new FHIRException("Cannot make property language as it is not a complex type"); // CodeType
1681        case 116103:  return getUse(); // Coding
1682        default: return super.makeProperty(hash, name);
1683        }
1684
1685      }
1686
1687      @Override
1688      public Base addChild(String name) throws FHIRException {
1689        if (name.equals("language")) {
1690          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.language");
1691        }
1692        else if (name.equals("use")) {
1693          this.use = new Coding();
1694          return this.use;
1695        }
1696        else
1697          return super.addChild(name);
1698      }
1699
1700      public DesignationIncludeDesignationComponent copy() {
1701        DesignationIncludeDesignationComponent dst = new DesignationIncludeDesignationComponent();
1702        copyValues(dst);
1703        dst.language = language == null ? null : language.copy();
1704        dst.use = use == null ? null : use.copy();
1705        return dst;
1706      }
1707
1708      @Override
1709      public boolean equalsDeep(Base other) {
1710        if (!super.equalsDeep(other))
1711          return false;
1712        if (!(other instanceof DesignationIncludeDesignationComponent))
1713          return false;
1714        DesignationIncludeDesignationComponent o = (DesignationIncludeDesignationComponent) other;
1715        return compareDeep(language, o.language, true) && compareDeep(use, o.use, true);
1716      }
1717
1718      @Override
1719      public boolean equalsShallow(Base other) {
1720        if (!super.equalsShallow(other))
1721          return false;
1722        if (!(other instanceof DesignationIncludeDesignationComponent))
1723          return false;
1724        DesignationIncludeDesignationComponent o = (DesignationIncludeDesignationComponent) other;
1725        return compareValues(language, o.language, true);
1726      }
1727
1728      public boolean isEmpty() {
1729        return super.isEmpty() && (language == null || language.isEmpty()) && (use == null || use.isEmpty())
1730          ;
1731      }
1732
1733  public String fhirType() {
1734    return "ExpansionProfile.designation.include.designation";
1735
1736  }
1737
1738  }
1739
1740    @Block()
1741    public static class DesignationExcludeComponent extends BackboneElement implements IBaseBackboneElement {
1742        /**
1743         * A data group for each designation to be excluded.
1744         */
1745        @Child(name = "designation", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1746        @Description(shortDefinition="The designation to be excluded", formalDefinition="A data group for each designation to be excluded." )
1747        protected List<DesignationExcludeDesignationComponent> designation;
1748
1749        private static final long serialVersionUID = 1045849752L;
1750
1751    /**
1752     * Constructor
1753     */
1754      public DesignationExcludeComponent() {
1755        super();
1756      }
1757
1758        /**
1759         * @return {@link #designation} (A data group for each designation to be excluded.)
1760         */
1761        public List<DesignationExcludeDesignationComponent> getDesignation() { 
1762          if (this.designation == null)
1763            this.designation = new ArrayList<DesignationExcludeDesignationComponent>();
1764          return this.designation;
1765        }
1766
1767        public boolean hasDesignation() { 
1768          if (this.designation == null)
1769            return false;
1770          for (DesignationExcludeDesignationComponent item : this.designation)
1771            if (!item.isEmpty())
1772              return true;
1773          return false;
1774        }
1775
1776        /**
1777         * @return {@link #designation} (A data group for each designation to be excluded.)
1778         */
1779    // syntactic sugar
1780        public DesignationExcludeDesignationComponent addDesignation() { //3
1781          DesignationExcludeDesignationComponent t = new DesignationExcludeDesignationComponent();
1782          if (this.designation == null)
1783            this.designation = new ArrayList<DesignationExcludeDesignationComponent>();
1784          this.designation.add(t);
1785          return t;
1786        }
1787
1788    // syntactic sugar
1789        public DesignationExcludeComponent addDesignation(DesignationExcludeDesignationComponent t) { //3
1790          if (t == null)
1791            return this;
1792          if (this.designation == null)
1793            this.designation = new ArrayList<DesignationExcludeDesignationComponent>();
1794          this.designation.add(t);
1795          return this;
1796        }
1797
1798        protected void listChildren(List<Property> childrenList) {
1799          super.listChildren(childrenList);
1800          childrenList.add(new Property("designation", "", "A data group for each designation to be excluded.", 0, java.lang.Integer.MAX_VALUE, designation));
1801        }
1802
1803      @Override
1804      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1805        switch (hash) {
1806        case -900931593: /*designation*/ return this.designation == null ? new Base[0] : this.designation.toArray(new Base[this.designation.size()]); // DesignationExcludeDesignationComponent
1807        default: return super.getProperty(hash, name, checkValid);
1808        }
1809
1810      }
1811
1812      @Override
1813      public void setProperty(int hash, String name, Base value) throws FHIRException {
1814        switch (hash) {
1815        case -900931593: // designation
1816          this.getDesignation().add((DesignationExcludeDesignationComponent) value); // DesignationExcludeDesignationComponent
1817          break;
1818        default: super.setProperty(hash, name, value);
1819        }
1820
1821      }
1822
1823      @Override
1824      public void setProperty(String name, Base value) throws FHIRException {
1825        if (name.equals("designation"))
1826          this.getDesignation().add((DesignationExcludeDesignationComponent) value);
1827        else
1828          super.setProperty(name, value);
1829      }
1830
1831      @Override
1832      public Base makeProperty(int hash, String name) throws FHIRException {
1833        switch (hash) {
1834        case -900931593:  return addDesignation(); // DesignationExcludeDesignationComponent
1835        default: return super.makeProperty(hash, name);
1836        }
1837
1838      }
1839
1840      @Override
1841      public Base addChild(String name) throws FHIRException {
1842        if (name.equals("designation")) {
1843          return addDesignation();
1844        }
1845        else
1846          return super.addChild(name);
1847      }
1848
1849      public DesignationExcludeComponent copy() {
1850        DesignationExcludeComponent dst = new DesignationExcludeComponent();
1851        copyValues(dst);
1852        if (designation != null) {
1853          dst.designation = new ArrayList<DesignationExcludeDesignationComponent>();
1854          for (DesignationExcludeDesignationComponent i : designation)
1855            dst.designation.add(i.copy());
1856        };
1857        return dst;
1858      }
1859
1860      @Override
1861      public boolean equalsDeep(Base other) {
1862        if (!super.equalsDeep(other))
1863          return false;
1864        if (!(other instanceof DesignationExcludeComponent))
1865          return false;
1866        DesignationExcludeComponent o = (DesignationExcludeComponent) other;
1867        return compareDeep(designation, o.designation, true);
1868      }
1869
1870      @Override
1871      public boolean equalsShallow(Base other) {
1872        if (!super.equalsShallow(other))
1873          return false;
1874        if (!(other instanceof DesignationExcludeComponent))
1875          return false;
1876        DesignationExcludeComponent o = (DesignationExcludeComponent) other;
1877        return true;
1878      }
1879
1880      public boolean isEmpty() {
1881        return super.isEmpty() && (designation == null || designation.isEmpty());
1882      }
1883
1884  public String fhirType() {
1885    return "ExpansionProfile.designation.exclude";
1886
1887  }
1888
1889  }
1890
1891    @Block()
1892    public static class DesignationExcludeDesignationComponent extends BackboneElement implements IBaseBackboneElement {
1893        /**
1894         * The language this designation is defined for.
1895         */
1896        @Child(name = "language", type = {CodeType.class}, order=1, min=0, max=1, modifier=false, summary=true)
1897        @Description(shortDefinition="Human language of the designation to be excluded", formalDefinition="The language this designation is defined for." )
1898        protected CodeType language;
1899
1900        /**
1901         * Designation uses for exclusion in the expansion.
1902         */
1903        @Child(name = "use", type = {Coding.class}, order=2, min=0, max=1, modifier=false, summary=true)
1904        @Description(shortDefinition="Designation use", formalDefinition="Designation uses for exclusion in the expansion." )
1905        protected Coding use;
1906
1907        private static final long serialVersionUID = 242239292L;
1908
1909    /**
1910     * Constructor
1911     */
1912      public DesignationExcludeDesignationComponent() {
1913        super();
1914      }
1915
1916        /**
1917         * @return {@link #language} (The language this designation is defined for.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value
1918         */
1919        public CodeType getLanguageElement() { 
1920          if (this.language == null)
1921            if (Configuration.errorOnAutoCreate())
1922              throw new Error("Attempt to auto-create DesignationExcludeDesignationComponent.language");
1923            else if (Configuration.doAutoCreate())
1924              this.language = new CodeType(); // bb
1925          return this.language;
1926        }
1927
1928        public boolean hasLanguageElement() { 
1929          return this.language != null && !this.language.isEmpty();
1930        }
1931
1932        public boolean hasLanguage() { 
1933          return this.language != null && !this.language.isEmpty();
1934        }
1935
1936        /**
1937         * @param value {@link #language} (The language this designation is defined for.). This is the underlying object with id, value and extensions. The accessor "getLanguage" gives direct access to the value
1938         */
1939        public DesignationExcludeDesignationComponent setLanguageElement(CodeType value) { 
1940          this.language = value;
1941          return this;
1942        }
1943
1944        /**
1945         * @return The language this designation is defined for.
1946         */
1947        public String getLanguage() { 
1948          return this.language == null ? null : this.language.getValue();
1949        }
1950
1951        /**
1952         * @param value The language this designation is defined for.
1953         */
1954        public DesignationExcludeDesignationComponent setLanguage(String value) { 
1955          if (Utilities.noString(value))
1956            this.language = null;
1957          else {
1958            if (this.language == null)
1959              this.language = new CodeType();
1960            this.language.setValue(value);
1961          }
1962          return this;
1963        }
1964
1965        /**
1966         * @return {@link #use} (Designation uses for exclusion in the expansion.)
1967         */
1968        public Coding getUse() { 
1969          if (this.use == null)
1970            if (Configuration.errorOnAutoCreate())
1971              throw new Error("Attempt to auto-create DesignationExcludeDesignationComponent.use");
1972            else if (Configuration.doAutoCreate())
1973              this.use = new Coding(); // cc
1974          return this.use;
1975        }
1976
1977        public boolean hasUse() { 
1978          return this.use != null && !this.use.isEmpty();
1979        }
1980
1981        /**
1982         * @param value {@link #use} (Designation uses for exclusion in the expansion.)
1983         */
1984        public DesignationExcludeDesignationComponent setUse(Coding value) { 
1985          this.use = value;
1986          return this;
1987        }
1988
1989        protected void listChildren(List<Property> childrenList) {
1990          super.listChildren(childrenList);
1991          childrenList.add(new Property("language", "code", "The language this designation is defined for.", 0, java.lang.Integer.MAX_VALUE, language));
1992          childrenList.add(new Property("use", "Coding", "Designation uses for exclusion in the expansion.", 0, java.lang.Integer.MAX_VALUE, use));
1993        }
1994
1995      @Override
1996      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1997        switch (hash) {
1998        case -1613589672: /*language*/ return this.language == null ? new Base[0] : new Base[] {this.language}; // CodeType
1999        case 116103: /*use*/ return this.use == null ? new Base[0] : new Base[] {this.use}; // Coding
2000        default: return super.getProperty(hash, name, checkValid);
2001        }
2002
2003      }
2004
2005      @Override
2006      public void setProperty(int hash, String name, Base value) throws FHIRException {
2007        switch (hash) {
2008        case -1613589672: // language
2009          this.language = castToCode(value); // CodeType
2010          break;
2011        case 116103: // use
2012          this.use = castToCoding(value); // Coding
2013          break;
2014        default: super.setProperty(hash, name, value);
2015        }
2016
2017      }
2018
2019      @Override
2020      public void setProperty(String name, Base value) throws FHIRException {
2021        if (name.equals("language"))
2022          this.language = castToCode(value); // CodeType
2023        else if (name.equals("use"))
2024          this.use = castToCoding(value); // Coding
2025        else
2026          super.setProperty(name, value);
2027      }
2028
2029      @Override
2030      public Base makeProperty(int hash, String name) throws FHIRException {
2031        switch (hash) {
2032        case -1613589672: throw new FHIRException("Cannot make property language as it is not a complex type"); // CodeType
2033        case 116103:  return getUse(); // Coding
2034        default: return super.makeProperty(hash, name);
2035        }
2036
2037      }
2038
2039      @Override
2040      public Base addChild(String name) throws FHIRException {
2041        if (name.equals("language")) {
2042          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.language");
2043        }
2044        else if (name.equals("use")) {
2045          this.use = new Coding();
2046          return this.use;
2047        }
2048        else
2049          return super.addChild(name);
2050      }
2051
2052      public DesignationExcludeDesignationComponent copy() {
2053        DesignationExcludeDesignationComponent dst = new DesignationExcludeDesignationComponent();
2054        copyValues(dst);
2055        dst.language = language == null ? null : language.copy();
2056        dst.use = use == null ? null : use.copy();
2057        return dst;
2058      }
2059
2060      @Override
2061      public boolean equalsDeep(Base other) {
2062        if (!super.equalsDeep(other))
2063          return false;
2064        if (!(other instanceof DesignationExcludeDesignationComponent))
2065          return false;
2066        DesignationExcludeDesignationComponent o = (DesignationExcludeDesignationComponent) other;
2067        return compareDeep(language, o.language, true) && compareDeep(use, o.use, true);
2068      }
2069
2070      @Override
2071      public boolean equalsShallow(Base other) {
2072        if (!super.equalsShallow(other))
2073          return false;
2074        if (!(other instanceof DesignationExcludeDesignationComponent))
2075          return false;
2076        DesignationExcludeDesignationComponent o = (DesignationExcludeDesignationComponent) other;
2077        return compareValues(language, o.language, true);
2078      }
2079
2080      public boolean isEmpty() {
2081        return super.isEmpty() && (language == null || language.isEmpty()) && (use == null || use.isEmpty())
2082          ;
2083      }
2084
2085  public String fhirType() {
2086    return "ExpansionProfile.designation.exclude.designation";
2087
2088  }
2089
2090  }
2091
2092    /**
2093     * An absolute URL that is used to identify this expansion profile when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this expansion profile is (or will be) published.
2094     */
2095    @Child(name = "url", type = {UriType.class}, order=0, min=0, max=1, modifier=false, summary=true)
2096    @Description(shortDefinition="Globally unique logical identifier for  expansion profile", formalDefinition="An absolute URL that is used to identify this expansion profile when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this expansion profile is (or will be) published." )
2097    protected UriType url;
2098
2099    /**
2100     * Formal identifier that is used to identify this expansion profile when it is represented in other formats, or referenced in a specification, model, design or an instance.
2101     */
2102    @Child(name = "identifier", type = {Identifier.class}, order=1, min=0, max=1, modifier=false, summary=true)
2103    @Description(shortDefinition="Additional identifier for the expansion profile (e.g. an Object Identifier)", formalDefinition="Formal identifier that is used to identify this expansion profile when it is represented in other formats, or referenced in a specification, model, design or an instance." )
2104    protected Identifier identifier;
2105
2106    /**
2107     * Used to identify this version of the expansion profile when it is referenced in a specification, model, design or instance.
2108     */
2109    @Child(name = "version", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
2110    @Description(shortDefinition="Logical identifier for this version of the expansion profile", formalDefinition="Used to identify this version of the expansion profile when it is referenced in a specification, model, design or instance." )
2111    protected StringType version;
2112
2113    /**
2114     * A free text natural language name for the expansion profile.
2115     */
2116    @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
2117    @Description(shortDefinition="Informal name for this expansion profile", formalDefinition="A free text natural language name for the expansion profile." )
2118    protected StringType name;
2119
2120    /**
2121     * The status of the expansion profile.
2122     */
2123    @Child(name = "status", type = {CodeType.class}, order=4, min=1, max=1, modifier=true, summary=true)
2124    @Description(shortDefinition="draft | active | retired", formalDefinition="The status of the expansion profile." )
2125    protected Enumeration<ConformanceResourceStatus> status;
2126
2127    /**
2128     * This expansion profile was authored for testing purposes (or education/evaluation/marketing), and is not intended for genuine production usage.
2129     */
2130    @Child(name = "experimental", type = {BooleanType.class}, order=5, min=0, max=1, modifier=false, summary=true)
2131    @Description(shortDefinition="If for testing purposes, not real usage", formalDefinition="This expansion profile was authored for testing purposes (or education/evaluation/marketing), and is not intended for genuine production usage." )
2132    protected BooleanType experimental;
2133
2134    /**
2135     * The name of the individual or organization that published the expansion profile.
2136     */
2137    @Child(name = "publisher", type = {StringType.class}, order=6, min=0, max=1, modifier=false, summary=true)
2138    @Description(shortDefinition="Name of the publisher (organization or individual)", formalDefinition="The name of the individual or organization that published the expansion profile." )
2139    protected StringType publisher;
2140
2141    /**
2142     * Contacts to assist a user in finding and communicating with the publisher.
2143     */
2144    @Child(name = "contact", type = {}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2145    @Description(shortDefinition="Contact details of the publisher", formalDefinition="Contacts to assist a user in finding and communicating with the publisher." )
2146    protected List<ExpansionProfileContactComponent> contact;
2147
2148    /**
2149     * The date that the expansion profile status was last changed. The date must change when the business version changes, if it does, and it must change if the status code changes.
2150     */
2151    @Child(name = "date", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
2152    @Description(shortDefinition="Date for given status", formalDefinition="The date that the expansion profile status was last changed. The date must change when the business version changes, if it does, and it must change if the status code changes." )
2153    protected DateTimeType date;
2154
2155    /**
2156     * A free text natural language description of the use of the expansion profile - reason for definition,  conditions of use, etc. The description may include a list of expected usages for the expansion profile and can also describe the approach taken to build the expansion profile.
2157     */
2158    @Child(name = "description", type = {StringType.class}, order=9, min=0, max=1, modifier=false, summary=true)
2159    @Description(shortDefinition="Human language description of the expansion profile", formalDefinition="A free text natural language description of the use of the expansion profile - reason for definition,  conditions of use, etc. The description may include a list of expected usages for the expansion profile and can also describe the approach taken to build the expansion profile." )
2160    protected StringType description;
2161
2162    /**
2163     * A set of criteria that provide the constraints imposed on the value set expansion by including or excluding codes from specific code systems (or versions).
2164     */
2165    @Child(name = "codeSystem", type = {}, order=10, min=0, max=1, modifier=false, summary=true)
2166    @Description(shortDefinition="When the expansion profile imposes code system contraints", formalDefinition="A set of criteria that provide the constraints imposed on the value set expansion by including or excluding codes from specific code systems (or versions)." )
2167    protected ExpansionProfileCodeSystemComponent codeSystem;
2168
2169    /**
2170     * Controls whether concept designations are to be included or excluded in value set expansions.
2171     */
2172    @Child(name = "includeDesignations", type = {BooleanType.class}, order=11, min=0, max=1, modifier=false, summary=true)
2173    @Description(shortDefinition="Whether the expansion should include concept designations", formalDefinition="Controls whether concept designations are to be included or excluded in value set expansions." )
2174    protected BooleanType includeDesignations;
2175
2176    /**
2177     * A set of criteria that provide the constraints imposed on the value set expansion by including or excluding designations.
2178     */
2179    @Child(name = "designation", type = {}, order=12, min=0, max=1, modifier=false, summary=true)
2180    @Description(shortDefinition="When the expansion profile imposes designation contraints", formalDefinition="A set of criteria that provide the constraints imposed on the value set expansion by including or excluding designations." )
2181    protected ExpansionProfileDesignationComponent designation;
2182
2183    /**
2184     * Controls whether the value set definition is included or excluded in value set expansions.
2185     */
2186    @Child(name = "includeDefinition", type = {BooleanType.class}, order=13, min=0, max=1, modifier=false, summary=true)
2187    @Description(shortDefinition="Include or exclude the value set definition in the expansion", formalDefinition="Controls whether the value set definition is included or excluded in value set expansions." )
2188    protected BooleanType includeDefinition;
2189
2190    /**
2191     * Controls whether inactive concepts are included or excluded in value set expansions.
2192     */
2193    @Child(name = "includeInactive", type = {BooleanType.class}, order=14, min=0, max=1, modifier=false, summary=true)
2194    @Description(shortDefinition="Include or exclude inactive concepts in the expansion", formalDefinition="Controls whether inactive concepts are included or excluded in value set expansions." )
2195    protected BooleanType includeInactive;
2196
2197    /**
2198     * Controls whether or not the value set expansion includes nested codes (i.e. ValueSet.expansion.contains.contains).
2199     */
2200    @Child(name = "excludeNested", type = {BooleanType.class}, order=15, min=0, max=1, modifier=false, summary=true)
2201    @Description(shortDefinition="Include or exclude nested codes in the value set expansion", formalDefinition="Controls whether or not the value set expansion includes nested codes (i.e. ValueSet.expansion.contains.contains)." )
2202    protected BooleanType excludeNested;
2203
2204    /**
2205     * Controls whether or not the value set expansion includes codes which cannot be displayed in user interfaces.
2206     */
2207    @Child(name = "excludeNotForUI", type = {BooleanType.class}, order=16, min=0, max=1, modifier=false, summary=true)
2208    @Description(shortDefinition="Include or exclude codes which cannot be rendered in user interfaces in the value set expansion", formalDefinition="Controls whether or not the value set expansion includes codes which cannot be displayed in user interfaces." )
2209    protected BooleanType excludeNotForUI;
2210
2211    /**
2212     * Controls whether or not the value set expansion includes post coordinated codes.
2213     */
2214    @Child(name = "excludePostCoordinated", type = {BooleanType.class}, order=17, min=0, max=1, modifier=false, summary=true)
2215    @Description(shortDefinition="Include or exclude codes which are post coordinated expressions in the value set expansion", formalDefinition="Controls whether or not the value set expansion includes post coordinated codes." )
2216    protected BooleanType excludePostCoordinated;
2217
2218    /**
2219     * Specifies the language to be used for description in the expansions i.e. the language to be used for ValueSet.expansion.contains.display.
2220     */
2221    @Child(name = "displayLanguage", type = {CodeType.class}, order=18, min=0, max=1, modifier=false, summary=true)
2222    @Description(shortDefinition="Specify the language for the display element of codes in the value set expansion", formalDefinition="Specifies the language to be used for description in the expansions i.e. the language to be used for ValueSet.expansion.contains.display." )
2223    protected CodeType displayLanguage;
2224
2225    /**
2226     * If the value set being expanded is incomplete (because it is too big to expand), return a limited expansion (a subset) with an indicator that expansion is incomplete.
2227     */
2228    @Child(name = "limitedExpansion", type = {BooleanType.class}, order=19, min=0, max=1, modifier=false, summary=true)
2229    @Description(shortDefinition="Controls behaviour of the value set expand operation when value sets are too large to be completely expanded", formalDefinition="If the value set being expanded is incomplete (because it is too big to expand), return a limited expansion (a subset) with an indicator that expansion is incomplete." )
2230    protected BooleanType limitedExpansion;
2231
2232    private static final long serialVersionUID = -651123079L;
2233
2234  /**
2235   * Constructor
2236   */
2237    public ExpansionProfile() {
2238      super();
2239    }
2240
2241  /**
2242   * Constructor
2243   */
2244    public ExpansionProfile(Enumeration<ConformanceResourceStatus> status) {
2245      super();
2246      this.status = status;
2247    }
2248
2249    /**
2250     * @return {@link #url} (An absolute URL that is used to identify this expansion profile when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this expansion profile is (or will be) published.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2251     */
2252    public UriType getUrlElement() { 
2253      if (this.url == null)
2254        if (Configuration.errorOnAutoCreate())
2255          throw new Error("Attempt to auto-create ExpansionProfile.url");
2256        else if (Configuration.doAutoCreate())
2257          this.url = new UriType(); // bb
2258      return this.url;
2259    }
2260
2261    public boolean hasUrlElement() { 
2262      return this.url != null && !this.url.isEmpty();
2263    }
2264
2265    public boolean hasUrl() { 
2266      return this.url != null && !this.url.isEmpty();
2267    }
2268
2269    /**
2270     * @param value {@link #url} (An absolute URL that is used to identify this expansion profile when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this expansion profile is (or will be) published.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
2271     */
2272    public ExpansionProfile setUrlElement(UriType value) { 
2273      this.url = value;
2274      return this;
2275    }
2276
2277    /**
2278     * @return An absolute URL that is used to identify this expansion profile when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this expansion profile is (or will be) published.
2279     */
2280    public String getUrl() { 
2281      return this.url == null ? null : this.url.getValue();
2282    }
2283
2284    /**
2285     * @param value An absolute URL that is used to identify this expansion profile when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this expansion profile is (or will be) published.
2286     */
2287    public ExpansionProfile setUrl(String value) { 
2288      if (Utilities.noString(value))
2289        this.url = null;
2290      else {
2291        if (this.url == null)
2292          this.url = new UriType();
2293        this.url.setValue(value);
2294      }
2295      return this;
2296    }
2297
2298    /**
2299     * @return {@link #identifier} (Formal identifier that is used to identify this expansion profile when it is represented in other formats, or referenced in a specification, model, design or an instance.)
2300     */
2301    public Identifier getIdentifier() { 
2302      if (this.identifier == null)
2303        if (Configuration.errorOnAutoCreate())
2304          throw new Error("Attempt to auto-create ExpansionProfile.identifier");
2305        else if (Configuration.doAutoCreate())
2306          this.identifier = new Identifier(); // cc
2307      return this.identifier;
2308    }
2309
2310    public boolean hasIdentifier() { 
2311      return this.identifier != null && !this.identifier.isEmpty();
2312    }
2313
2314    /**
2315     * @param value {@link #identifier} (Formal identifier that is used to identify this expansion profile when it is represented in other formats, or referenced in a specification, model, design or an instance.)
2316     */
2317    public ExpansionProfile setIdentifier(Identifier value) { 
2318      this.identifier = value;
2319      return this;
2320    }
2321
2322    /**
2323     * @return {@link #version} (Used to identify this version of the expansion profile when it is referenced in a specification, model, design or instance.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
2324     */
2325    public StringType getVersionElement() { 
2326      if (this.version == null)
2327        if (Configuration.errorOnAutoCreate())
2328          throw new Error("Attempt to auto-create ExpansionProfile.version");
2329        else if (Configuration.doAutoCreate())
2330          this.version = new StringType(); // bb
2331      return this.version;
2332    }
2333
2334    public boolean hasVersionElement() { 
2335      return this.version != null && !this.version.isEmpty();
2336    }
2337
2338    public boolean hasVersion() { 
2339      return this.version != null && !this.version.isEmpty();
2340    }
2341
2342    /**
2343     * @param value {@link #version} (Used to identify this version of the expansion profile when it is referenced in a specification, model, design or instance.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
2344     */
2345    public ExpansionProfile setVersionElement(StringType value) { 
2346      this.version = value;
2347      return this;
2348    }
2349
2350    /**
2351     * @return Used to identify this version of the expansion profile when it is referenced in a specification, model, design or instance.
2352     */
2353    public String getVersion() { 
2354      return this.version == null ? null : this.version.getValue();
2355    }
2356
2357    /**
2358     * @param value Used to identify this version of the expansion profile when it is referenced in a specification, model, design or instance.
2359     */
2360    public ExpansionProfile setVersion(String value) { 
2361      if (Utilities.noString(value))
2362        this.version = null;
2363      else {
2364        if (this.version == null)
2365          this.version = new StringType();
2366        this.version.setValue(value);
2367      }
2368      return this;
2369    }
2370
2371    /**
2372     * @return {@link #name} (A free text natural language name for the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2373     */
2374    public StringType getNameElement() { 
2375      if (this.name == null)
2376        if (Configuration.errorOnAutoCreate())
2377          throw new Error("Attempt to auto-create ExpansionProfile.name");
2378        else if (Configuration.doAutoCreate())
2379          this.name = new StringType(); // bb
2380      return this.name;
2381    }
2382
2383    public boolean hasNameElement() { 
2384      return this.name != null && !this.name.isEmpty();
2385    }
2386
2387    public boolean hasName() { 
2388      return this.name != null && !this.name.isEmpty();
2389    }
2390
2391    /**
2392     * @param value {@link #name} (A free text natural language name for the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
2393     */
2394    public ExpansionProfile setNameElement(StringType value) { 
2395      this.name = value;
2396      return this;
2397    }
2398
2399    /**
2400     * @return A free text natural language name for the expansion profile.
2401     */
2402    public String getName() { 
2403      return this.name == null ? null : this.name.getValue();
2404    }
2405
2406    /**
2407     * @param value A free text natural language name for the expansion profile.
2408     */
2409    public ExpansionProfile setName(String value) { 
2410      if (Utilities.noString(value))
2411        this.name = null;
2412      else {
2413        if (this.name == null)
2414          this.name = new StringType();
2415        this.name.setValue(value);
2416      }
2417      return this;
2418    }
2419
2420    /**
2421     * @return {@link #status} (The status of the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2422     */
2423    public Enumeration<ConformanceResourceStatus> getStatusElement() { 
2424      if (this.status == null)
2425        if (Configuration.errorOnAutoCreate())
2426          throw new Error("Attempt to auto-create ExpansionProfile.status");
2427        else if (Configuration.doAutoCreate())
2428          this.status = new Enumeration<ConformanceResourceStatus>(new ConformanceResourceStatusEnumFactory()); // bb
2429      return this.status;
2430    }
2431
2432    public boolean hasStatusElement() { 
2433      return this.status != null && !this.status.isEmpty();
2434    }
2435
2436    public boolean hasStatus() { 
2437      return this.status != null && !this.status.isEmpty();
2438    }
2439
2440    /**
2441     * @param value {@link #status} (The status of the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2442     */
2443    public ExpansionProfile setStatusElement(Enumeration<ConformanceResourceStatus> value) { 
2444      this.status = value;
2445      return this;
2446    }
2447
2448    /**
2449     * @return The status of the expansion profile.
2450     */
2451    public ConformanceResourceStatus getStatus() { 
2452      return this.status == null ? null : this.status.getValue();
2453    }
2454
2455    /**
2456     * @param value The status of the expansion profile.
2457     */
2458    public ExpansionProfile setStatus(ConformanceResourceStatus value) { 
2459        if (this.status == null)
2460          this.status = new Enumeration<ConformanceResourceStatus>(new ConformanceResourceStatusEnumFactory());
2461        this.status.setValue(value);
2462      return this;
2463    }
2464
2465    /**
2466     * @return {@link #experimental} (This expansion profile was authored for testing purposes (or education/evaluation/marketing), and is not intended for genuine production usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
2467     */
2468    public BooleanType getExperimentalElement() { 
2469      if (this.experimental == null)
2470        if (Configuration.errorOnAutoCreate())
2471          throw new Error("Attempt to auto-create ExpansionProfile.experimental");
2472        else if (Configuration.doAutoCreate())
2473          this.experimental = new BooleanType(); // bb
2474      return this.experimental;
2475    }
2476
2477    public boolean hasExperimentalElement() { 
2478      return this.experimental != null && !this.experimental.isEmpty();
2479    }
2480
2481    public boolean hasExperimental() { 
2482      return this.experimental != null && !this.experimental.isEmpty();
2483    }
2484
2485    /**
2486     * @param value {@link #experimental} (This expansion profile was authored for testing purposes (or education/evaluation/marketing), and is not intended for genuine production usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
2487     */
2488    public ExpansionProfile setExperimentalElement(BooleanType value) { 
2489      this.experimental = value;
2490      return this;
2491    }
2492
2493    /**
2494     * @return This expansion profile was authored for testing purposes (or education/evaluation/marketing), and is not intended for genuine production usage.
2495     */
2496    public boolean getExperimental() { 
2497      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
2498    }
2499
2500    /**
2501     * @param value This expansion profile was authored for testing purposes (or education/evaluation/marketing), and is not intended for genuine production usage.
2502     */
2503    public ExpansionProfile setExperimental(boolean value) { 
2504        if (this.experimental == null)
2505          this.experimental = new BooleanType();
2506        this.experimental.setValue(value);
2507      return this;
2508    }
2509
2510    /**
2511     * @return {@link #publisher} (The name of the individual or organization that published the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2512     */
2513    public StringType getPublisherElement() { 
2514      if (this.publisher == null)
2515        if (Configuration.errorOnAutoCreate())
2516          throw new Error("Attempt to auto-create ExpansionProfile.publisher");
2517        else if (Configuration.doAutoCreate())
2518          this.publisher = new StringType(); // bb
2519      return this.publisher;
2520    }
2521
2522    public boolean hasPublisherElement() { 
2523      return this.publisher != null && !this.publisher.isEmpty();
2524    }
2525
2526    public boolean hasPublisher() { 
2527      return this.publisher != null && !this.publisher.isEmpty();
2528    }
2529
2530    /**
2531     * @param value {@link #publisher} (The name of the individual or organization that published the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
2532     */
2533    public ExpansionProfile setPublisherElement(StringType value) { 
2534      this.publisher = value;
2535      return this;
2536    }
2537
2538    /**
2539     * @return The name of the individual or organization that published the expansion profile.
2540     */
2541    public String getPublisher() { 
2542      return this.publisher == null ? null : this.publisher.getValue();
2543    }
2544
2545    /**
2546     * @param value The name of the individual or organization that published the expansion profile.
2547     */
2548    public ExpansionProfile setPublisher(String value) { 
2549      if (Utilities.noString(value))
2550        this.publisher = null;
2551      else {
2552        if (this.publisher == null)
2553          this.publisher = new StringType();
2554        this.publisher.setValue(value);
2555      }
2556      return this;
2557    }
2558
2559    /**
2560     * @return {@link #contact} (Contacts to assist a user in finding and communicating with the publisher.)
2561     */
2562    public List<ExpansionProfileContactComponent> getContact() { 
2563      if (this.contact == null)
2564        this.contact = new ArrayList<ExpansionProfileContactComponent>();
2565      return this.contact;
2566    }
2567
2568    public boolean hasContact() { 
2569      if (this.contact == null)
2570        return false;
2571      for (ExpansionProfileContactComponent item : this.contact)
2572        if (!item.isEmpty())
2573          return true;
2574      return false;
2575    }
2576
2577    /**
2578     * @return {@link #contact} (Contacts to assist a user in finding and communicating with the publisher.)
2579     */
2580    // syntactic sugar
2581    public ExpansionProfileContactComponent addContact() { //3
2582      ExpansionProfileContactComponent t = new ExpansionProfileContactComponent();
2583      if (this.contact == null)
2584        this.contact = new ArrayList<ExpansionProfileContactComponent>();
2585      this.contact.add(t);
2586      return t;
2587    }
2588
2589    // syntactic sugar
2590    public ExpansionProfile addContact(ExpansionProfileContactComponent t) { //3
2591      if (t == null)
2592        return this;
2593      if (this.contact == null)
2594        this.contact = new ArrayList<ExpansionProfileContactComponent>();
2595      this.contact.add(t);
2596      return this;
2597    }
2598
2599    /**
2600     * @return {@link #date} (The date that the expansion profile status was last changed. The date must change when the business version changes, if it does, and it must change if the status code changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
2601     */
2602    public DateTimeType getDateElement() { 
2603      if (this.date == null)
2604        if (Configuration.errorOnAutoCreate())
2605          throw new Error("Attempt to auto-create ExpansionProfile.date");
2606        else if (Configuration.doAutoCreate())
2607          this.date = new DateTimeType(); // bb
2608      return this.date;
2609    }
2610
2611    public boolean hasDateElement() { 
2612      return this.date != null && !this.date.isEmpty();
2613    }
2614
2615    public boolean hasDate() { 
2616      return this.date != null && !this.date.isEmpty();
2617    }
2618
2619    /**
2620     * @param value {@link #date} (The date that the expansion profile status was last changed. The date must change when the business version changes, if it does, and it must change if the status code changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
2621     */
2622    public ExpansionProfile setDateElement(DateTimeType value) { 
2623      this.date = value;
2624      return this;
2625    }
2626
2627    /**
2628     * @return The date that the expansion profile status was last changed. The date must change when the business version changes, if it does, and it must change if the status code changes.
2629     */
2630    public Date getDate() { 
2631      return this.date == null ? null : this.date.getValue();
2632    }
2633
2634    /**
2635     * @param value The date that the expansion profile status was last changed. The date must change when the business version changes, if it does, and it must change if the status code changes.
2636     */
2637    public ExpansionProfile setDate(Date value) { 
2638      if (value == null)
2639        this.date = null;
2640      else {
2641        if (this.date == null)
2642          this.date = new DateTimeType();
2643        this.date.setValue(value);
2644      }
2645      return this;
2646    }
2647
2648    /**
2649     * @return {@link #description} (A free text natural language description of the use of the expansion profile - reason for definition,  conditions of use, etc. The description may include a list of expected usages for the expansion profile and can also describe the approach taken to build the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2650     */
2651    public StringType getDescriptionElement() { 
2652      if (this.description == null)
2653        if (Configuration.errorOnAutoCreate())
2654          throw new Error("Attempt to auto-create ExpansionProfile.description");
2655        else if (Configuration.doAutoCreate())
2656          this.description = new StringType(); // bb
2657      return this.description;
2658    }
2659
2660    public boolean hasDescriptionElement() { 
2661      return this.description != null && !this.description.isEmpty();
2662    }
2663
2664    public boolean hasDescription() { 
2665      return this.description != null && !this.description.isEmpty();
2666    }
2667
2668    /**
2669     * @param value {@link #description} (A free text natural language description of the use of the expansion profile - reason for definition,  conditions of use, etc. The description may include a list of expected usages for the expansion profile and can also describe the approach taken to build the expansion profile.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
2670     */
2671    public ExpansionProfile setDescriptionElement(StringType value) { 
2672      this.description = value;
2673      return this;
2674    }
2675
2676    /**
2677     * @return A free text natural language description of the use of the expansion profile - reason for definition,  conditions of use, etc. The description may include a list of expected usages for the expansion profile and can also describe the approach taken to build the expansion profile.
2678     */
2679    public String getDescription() { 
2680      return this.description == null ? null : this.description.getValue();
2681    }
2682
2683    /**
2684     * @param value A free text natural language description of the use of the expansion profile - reason for definition,  conditions of use, etc. The description may include a list of expected usages for the expansion profile and can also describe the approach taken to build the expansion profile.
2685     */
2686    public ExpansionProfile setDescription(String value) { 
2687      if (Utilities.noString(value))
2688        this.description = null;
2689      else {
2690        if (this.description == null)
2691          this.description = new StringType();
2692        this.description.setValue(value);
2693      }
2694      return this;
2695    }
2696
2697    /**
2698     * @return {@link #codeSystem} (A set of criteria that provide the constraints imposed on the value set expansion by including or excluding codes from specific code systems (or versions).)
2699     */
2700    public ExpansionProfileCodeSystemComponent getCodeSystem() { 
2701      if (this.codeSystem == null)
2702        if (Configuration.errorOnAutoCreate())
2703          throw new Error("Attempt to auto-create ExpansionProfile.codeSystem");
2704        else if (Configuration.doAutoCreate())
2705          this.codeSystem = new ExpansionProfileCodeSystemComponent(); // cc
2706      return this.codeSystem;
2707    }
2708
2709    public boolean hasCodeSystem() { 
2710      return this.codeSystem != null && !this.codeSystem.isEmpty();
2711    }
2712
2713    /**
2714     * @param value {@link #codeSystem} (A set of criteria that provide the constraints imposed on the value set expansion by including or excluding codes from specific code systems (or versions).)
2715     */
2716    public ExpansionProfile setCodeSystem(ExpansionProfileCodeSystemComponent value) { 
2717      this.codeSystem = value;
2718      return this;
2719    }
2720
2721    /**
2722     * @return {@link #includeDesignations} (Controls whether concept designations are to be included or excluded in value set expansions.). This is the underlying object with id, value and extensions. The accessor "getIncludeDesignations" gives direct access to the value
2723     */
2724    public BooleanType getIncludeDesignationsElement() { 
2725      if (this.includeDesignations == null)
2726        if (Configuration.errorOnAutoCreate())
2727          throw new Error("Attempt to auto-create ExpansionProfile.includeDesignations");
2728        else if (Configuration.doAutoCreate())
2729          this.includeDesignations = new BooleanType(); // bb
2730      return this.includeDesignations;
2731    }
2732
2733    public boolean hasIncludeDesignationsElement() { 
2734      return this.includeDesignations != null && !this.includeDesignations.isEmpty();
2735    }
2736
2737    public boolean hasIncludeDesignations() { 
2738      return this.includeDesignations != null && !this.includeDesignations.isEmpty();
2739    }
2740
2741    /**
2742     * @param value {@link #includeDesignations} (Controls whether concept designations are to be included or excluded in value set expansions.). This is the underlying object with id, value and extensions. The accessor "getIncludeDesignations" gives direct access to the value
2743     */
2744    public ExpansionProfile setIncludeDesignationsElement(BooleanType value) { 
2745      this.includeDesignations = value;
2746      return this;
2747    }
2748
2749    /**
2750     * @return Controls whether concept designations are to be included or excluded in value set expansions.
2751     */
2752    public boolean getIncludeDesignations() { 
2753      return this.includeDesignations == null || this.includeDesignations.isEmpty() ? false : this.includeDesignations.getValue();
2754    }
2755
2756    /**
2757     * @param value Controls whether concept designations are to be included or excluded in value set expansions.
2758     */
2759    public ExpansionProfile setIncludeDesignations(boolean value) { 
2760        if (this.includeDesignations == null)
2761          this.includeDesignations = new BooleanType();
2762        this.includeDesignations.setValue(value);
2763      return this;
2764    }
2765
2766    /**
2767     * @return {@link #designation} (A set of criteria that provide the constraints imposed on the value set expansion by including or excluding designations.)
2768     */
2769    public ExpansionProfileDesignationComponent getDesignation() { 
2770      if (this.designation == null)
2771        if (Configuration.errorOnAutoCreate())
2772          throw new Error("Attempt to auto-create ExpansionProfile.designation");
2773        else if (Configuration.doAutoCreate())
2774          this.designation = new ExpansionProfileDesignationComponent(); // cc
2775      return this.designation;
2776    }
2777
2778    public boolean hasDesignation() { 
2779      return this.designation != null && !this.designation.isEmpty();
2780    }
2781
2782    /**
2783     * @param value {@link #designation} (A set of criteria that provide the constraints imposed on the value set expansion by including or excluding designations.)
2784     */
2785    public ExpansionProfile setDesignation(ExpansionProfileDesignationComponent value) { 
2786      this.designation = value;
2787      return this;
2788    }
2789
2790    /**
2791     * @return {@link #includeDefinition} (Controls whether the value set definition is included or excluded in value set expansions.). This is the underlying object with id, value and extensions. The accessor "getIncludeDefinition" gives direct access to the value
2792     */
2793    public BooleanType getIncludeDefinitionElement() { 
2794      if (this.includeDefinition == null)
2795        if (Configuration.errorOnAutoCreate())
2796          throw new Error("Attempt to auto-create ExpansionProfile.includeDefinition");
2797        else if (Configuration.doAutoCreate())
2798          this.includeDefinition = new BooleanType(); // bb
2799      return this.includeDefinition;
2800    }
2801
2802    public boolean hasIncludeDefinitionElement() { 
2803      return this.includeDefinition != null && !this.includeDefinition.isEmpty();
2804    }
2805
2806    public boolean hasIncludeDefinition() { 
2807      return this.includeDefinition != null && !this.includeDefinition.isEmpty();
2808    }
2809
2810    /**
2811     * @param value {@link #includeDefinition} (Controls whether the value set definition is included or excluded in value set expansions.). This is the underlying object with id, value and extensions. The accessor "getIncludeDefinition" gives direct access to the value
2812     */
2813    public ExpansionProfile setIncludeDefinitionElement(BooleanType value) { 
2814      this.includeDefinition = value;
2815      return this;
2816    }
2817
2818    /**
2819     * @return Controls whether the value set definition is included or excluded in value set expansions.
2820     */
2821    public boolean getIncludeDefinition() { 
2822      return this.includeDefinition == null || this.includeDefinition.isEmpty() ? false : this.includeDefinition.getValue();
2823    }
2824
2825    /**
2826     * @param value Controls whether the value set definition is included or excluded in value set expansions.
2827     */
2828    public ExpansionProfile setIncludeDefinition(boolean value) { 
2829        if (this.includeDefinition == null)
2830          this.includeDefinition = new BooleanType();
2831        this.includeDefinition.setValue(value);
2832      return this;
2833    }
2834
2835    /**
2836     * @return {@link #includeInactive} (Controls whether inactive concepts are included or excluded in value set expansions.). This is the underlying object with id, value and extensions. The accessor "getIncludeInactive" gives direct access to the value
2837     */
2838    public BooleanType getIncludeInactiveElement() { 
2839      if (this.includeInactive == null)
2840        if (Configuration.errorOnAutoCreate())
2841          throw new Error("Attempt to auto-create ExpansionProfile.includeInactive");
2842        else if (Configuration.doAutoCreate())
2843          this.includeInactive = new BooleanType(); // bb
2844      return this.includeInactive;
2845    }
2846
2847    public boolean hasIncludeInactiveElement() { 
2848      return this.includeInactive != null && !this.includeInactive.isEmpty();
2849    }
2850
2851    public boolean hasIncludeInactive() { 
2852      return this.includeInactive != null && !this.includeInactive.isEmpty();
2853    }
2854
2855    /**
2856     * @param value {@link #includeInactive} (Controls whether inactive concepts are included or excluded in value set expansions.). This is the underlying object with id, value and extensions. The accessor "getIncludeInactive" gives direct access to the value
2857     */
2858    public ExpansionProfile setIncludeInactiveElement(BooleanType value) { 
2859      this.includeInactive = value;
2860      return this;
2861    }
2862
2863    /**
2864     * @return Controls whether inactive concepts are included or excluded in value set expansions.
2865     */
2866    public boolean getIncludeInactive() { 
2867      return this.includeInactive == null || this.includeInactive.isEmpty() ? false : this.includeInactive.getValue();
2868    }
2869
2870    /**
2871     * @param value Controls whether inactive concepts are included or excluded in value set expansions.
2872     */
2873    public ExpansionProfile setIncludeInactive(boolean value) { 
2874        if (this.includeInactive == null)
2875          this.includeInactive = new BooleanType();
2876        this.includeInactive.setValue(value);
2877      return this;
2878    }
2879
2880    /**
2881     * @return {@link #excludeNested} (Controls whether or not the value set expansion includes nested codes (i.e. ValueSet.expansion.contains.contains).). This is the underlying object with id, value and extensions. The accessor "getExcludeNested" gives direct access to the value
2882     */
2883    public BooleanType getExcludeNestedElement() { 
2884      if (this.excludeNested == null)
2885        if (Configuration.errorOnAutoCreate())
2886          throw new Error("Attempt to auto-create ExpansionProfile.excludeNested");
2887        else if (Configuration.doAutoCreate())
2888          this.excludeNested = new BooleanType(); // bb
2889      return this.excludeNested;
2890    }
2891
2892    public boolean hasExcludeNestedElement() { 
2893      return this.excludeNested != null && !this.excludeNested.isEmpty();
2894    }
2895
2896    public boolean hasExcludeNested() { 
2897      return this.excludeNested != null && !this.excludeNested.isEmpty();
2898    }
2899
2900    /**
2901     * @param value {@link #excludeNested} (Controls whether or not the value set expansion includes nested codes (i.e. ValueSet.expansion.contains.contains).). This is the underlying object with id, value and extensions. The accessor "getExcludeNested" gives direct access to the value
2902     */
2903    public ExpansionProfile setExcludeNestedElement(BooleanType value) { 
2904      this.excludeNested = value;
2905      return this;
2906    }
2907
2908    /**
2909     * @return Controls whether or not the value set expansion includes nested codes (i.e. ValueSet.expansion.contains.contains).
2910     */
2911    public boolean getExcludeNested() { 
2912      return this.excludeNested == null || this.excludeNested.isEmpty() ? false : this.excludeNested.getValue();
2913    }
2914
2915    /**
2916     * @param value Controls whether or not the value set expansion includes nested codes (i.e. ValueSet.expansion.contains.contains).
2917     */
2918    public ExpansionProfile setExcludeNested(boolean value) { 
2919        if (this.excludeNested == null)
2920          this.excludeNested = new BooleanType();
2921        this.excludeNested.setValue(value);
2922      return this;
2923    }
2924
2925    /**
2926     * @return {@link #excludeNotForUI} (Controls whether or not the value set expansion includes codes which cannot be displayed in user interfaces.). This is the underlying object with id, value and extensions. The accessor "getExcludeNotForUI" gives direct access to the value
2927     */
2928    public BooleanType getExcludeNotForUIElement() { 
2929      if (this.excludeNotForUI == null)
2930        if (Configuration.errorOnAutoCreate())
2931          throw new Error("Attempt to auto-create ExpansionProfile.excludeNotForUI");
2932        else if (Configuration.doAutoCreate())
2933          this.excludeNotForUI = new BooleanType(); // bb
2934      return this.excludeNotForUI;
2935    }
2936
2937    public boolean hasExcludeNotForUIElement() { 
2938      return this.excludeNotForUI != null && !this.excludeNotForUI.isEmpty();
2939    }
2940
2941    public boolean hasExcludeNotForUI() { 
2942      return this.excludeNotForUI != null && !this.excludeNotForUI.isEmpty();
2943    }
2944
2945    /**
2946     * @param value {@link #excludeNotForUI} (Controls whether or not the value set expansion includes codes which cannot be displayed in user interfaces.). This is the underlying object with id, value and extensions. The accessor "getExcludeNotForUI" gives direct access to the value
2947     */
2948    public ExpansionProfile setExcludeNotForUIElement(BooleanType value) { 
2949      this.excludeNotForUI = value;
2950      return this;
2951    }
2952
2953    /**
2954     * @return Controls whether or not the value set expansion includes codes which cannot be displayed in user interfaces.
2955     */
2956    public boolean getExcludeNotForUI() { 
2957      return this.excludeNotForUI == null || this.excludeNotForUI.isEmpty() ? false : this.excludeNotForUI.getValue();
2958    }
2959
2960    /**
2961     * @param value Controls whether or not the value set expansion includes codes which cannot be displayed in user interfaces.
2962     */
2963    public ExpansionProfile setExcludeNotForUI(boolean value) { 
2964        if (this.excludeNotForUI == null)
2965          this.excludeNotForUI = new BooleanType();
2966        this.excludeNotForUI.setValue(value);
2967      return this;
2968    }
2969
2970    /**
2971     * @return {@link #excludePostCoordinated} (Controls whether or not the value set expansion includes post coordinated codes.). This is the underlying object with id, value and extensions. The accessor "getExcludePostCoordinated" gives direct access to the value
2972     */
2973    public BooleanType getExcludePostCoordinatedElement() { 
2974      if (this.excludePostCoordinated == null)
2975        if (Configuration.errorOnAutoCreate())
2976          throw new Error("Attempt to auto-create ExpansionProfile.excludePostCoordinated");
2977        else if (Configuration.doAutoCreate())
2978          this.excludePostCoordinated = new BooleanType(); // bb
2979      return this.excludePostCoordinated;
2980    }
2981
2982    public boolean hasExcludePostCoordinatedElement() { 
2983      return this.excludePostCoordinated != null && !this.excludePostCoordinated.isEmpty();
2984    }
2985
2986    public boolean hasExcludePostCoordinated() { 
2987      return this.excludePostCoordinated != null && !this.excludePostCoordinated.isEmpty();
2988    }
2989
2990    /**
2991     * @param value {@link #excludePostCoordinated} (Controls whether or not the value set expansion includes post coordinated codes.). This is the underlying object with id, value and extensions. The accessor "getExcludePostCoordinated" gives direct access to the value
2992     */
2993    public ExpansionProfile setExcludePostCoordinatedElement(BooleanType value) { 
2994      this.excludePostCoordinated = value;
2995      return this;
2996    }
2997
2998    /**
2999     * @return Controls whether or not the value set expansion includes post coordinated codes.
3000     */
3001    public boolean getExcludePostCoordinated() { 
3002      return this.excludePostCoordinated == null || this.excludePostCoordinated.isEmpty() ? false : this.excludePostCoordinated.getValue();
3003    }
3004
3005    /**
3006     * @param value Controls whether or not the value set expansion includes post coordinated codes.
3007     */
3008    public ExpansionProfile setExcludePostCoordinated(boolean value) { 
3009        if (this.excludePostCoordinated == null)
3010          this.excludePostCoordinated = new BooleanType();
3011        this.excludePostCoordinated.setValue(value);
3012      return this;
3013    }
3014
3015    /**
3016     * @return {@link #displayLanguage} (Specifies the language to be used for description in the expansions i.e. the language to be used for ValueSet.expansion.contains.display.). This is the underlying object with id, value and extensions. The accessor "getDisplayLanguage" gives direct access to the value
3017     */
3018    public CodeType getDisplayLanguageElement() { 
3019      if (this.displayLanguage == null)
3020        if (Configuration.errorOnAutoCreate())
3021          throw new Error("Attempt to auto-create ExpansionProfile.displayLanguage");
3022        else if (Configuration.doAutoCreate())
3023          this.displayLanguage = new CodeType(); // bb
3024      return this.displayLanguage;
3025    }
3026
3027    public boolean hasDisplayLanguageElement() { 
3028      return this.displayLanguage != null && !this.displayLanguage.isEmpty();
3029    }
3030
3031    public boolean hasDisplayLanguage() { 
3032      return this.displayLanguage != null && !this.displayLanguage.isEmpty();
3033    }
3034
3035    /**
3036     * @param value {@link #displayLanguage} (Specifies the language to be used for description in the expansions i.e. the language to be used for ValueSet.expansion.contains.display.). This is the underlying object with id, value and extensions. The accessor "getDisplayLanguage" gives direct access to the value
3037     */
3038    public ExpansionProfile setDisplayLanguageElement(CodeType value) { 
3039      this.displayLanguage = value;
3040      return this;
3041    }
3042
3043    /**
3044     * @return Specifies the language to be used for description in the expansions i.e. the language to be used for ValueSet.expansion.contains.display.
3045     */
3046    public String getDisplayLanguage() { 
3047      return this.displayLanguage == null ? null : this.displayLanguage.getValue();
3048    }
3049
3050    /**
3051     * @param value Specifies the language to be used for description in the expansions i.e. the language to be used for ValueSet.expansion.contains.display.
3052     */
3053    public ExpansionProfile setDisplayLanguage(String value) { 
3054      if (Utilities.noString(value))
3055        this.displayLanguage = null;
3056      else {
3057        if (this.displayLanguage == null)
3058          this.displayLanguage = new CodeType();
3059        this.displayLanguage.setValue(value);
3060      }
3061      return this;
3062    }
3063
3064    /**
3065     * @return {@link #limitedExpansion} (If the value set being expanded is incomplete (because it is too big to expand), return a limited expansion (a subset) with an indicator that expansion is incomplete.). This is the underlying object with id, value and extensions. The accessor "getLimitedExpansion" gives direct access to the value
3066     */
3067    public BooleanType getLimitedExpansionElement() { 
3068      if (this.limitedExpansion == null)
3069        if (Configuration.errorOnAutoCreate())
3070          throw new Error("Attempt to auto-create ExpansionProfile.limitedExpansion");
3071        else if (Configuration.doAutoCreate())
3072          this.limitedExpansion = new BooleanType(); // bb
3073      return this.limitedExpansion;
3074    }
3075
3076    public boolean hasLimitedExpansionElement() { 
3077      return this.limitedExpansion != null && !this.limitedExpansion.isEmpty();
3078    }
3079
3080    public boolean hasLimitedExpansion() { 
3081      return this.limitedExpansion != null && !this.limitedExpansion.isEmpty();
3082    }
3083
3084    /**
3085     * @param value {@link #limitedExpansion} (If the value set being expanded is incomplete (because it is too big to expand), return a limited expansion (a subset) with an indicator that expansion is incomplete.). This is the underlying object with id, value and extensions. The accessor "getLimitedExpansion" gives direct access to the value
3086     */
3087    public ExpansionProfile setLimitedExpansionElement(BooleanType value) { 
3088      this.limitedExpansion = value;
3089      return this;
3090    }
3091
3092    /**
3093     * @return If the value set being expanded is incomplete (because it is too big to expand), return a limited expansion (a subset) with an indicator that expansion is incomplete.
3094     */
3095    public boolean getLimitedExpansion() { 
3096      return this.limitedExpansion == null || this.limitedExpansion.isEmpty() ? false : this.limitedExpansion.getValue();
3097    }
3098
3099    /**
3100     * @param value If the value set being expanded is incomplete (because it is too big to expand), return a limited expansion (a subset) with an indicator that expansion is incomplete.
3101     */
3102    public ExpansionProfile setLimitedExpansion(boolean value) { 
3103        if (this.limitedExpansion == null)
3104          this.limitedExpansion = new BooleanType();
3105        this.limitedExpansion.setValue(value);
3106      return this;
3107    }
3108
3109      protected void listChildren(List<Property> childrenList) {
3110        super.listChildren(childrenList);
3111        childrenList.add(new Property("url", "uri", "An absolute URL that is used to identify this expansion profile when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this expansion profile is (or will be) published.", 0, java.lang.Integer.MAX_VALUE, url));
3112        childrenList.add(new Property("identifier", "Identifier", "Formal identifier that is used to identify this expansion profile when it is represented in other formats, or referenced in a specification, model, design or an instance.", 0, java.lang.Integer.MAX_VALUE, identifier));
3113        childrenList.add(new Property("version", "string", "Used to identify this version of the expansion profile when it is referenced in a specification, model, design or instance.", 0, java.lang.Integer.MAX_VALUE, version));
3114        childrenList.add(new Property("name", "string", "A free text natural language name for the expansion profile.", 0, java.lang.Integer.MAX_VALUE, name));
3115        childrenList.add(new Property("status", "code", "The status of the expansion profile.", 0, java.lang.Integer.MAX_VALUE, status));
3116        childrenList.add(new Property("experimental", "boolean", "This expansion profile was authored for testing purposes (or education/evaluation/marketing), and is not intended for genuine production usage.", 0, java.lang.Integer.MAX_VALUE, experimental));
3117        childrenList.add(new Property("publisher", "string", "The name of the individual or organization that published the expansion profile.", 0, java.lang.Integer.MAX_VALUE, publisher));
3118        childrenList.add(new Property("contact", "", "Contacts to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact));
3119        childrenList.add(new Property("date", "dateTime", "The date that the expansion profile status was last changed. The date must change when the business version changes, if it does, and it must change if the status code changes.", 0, java.lang.Integer.MAX_VALUE, date));
3120        childrenList.add(new Property("description", "string", "A free text natural language description of the use of the expansion profile - reason for definition,  conditions of use, etc. The description may include a list of expected usages for the expansion profile and can also describe the approach taken to build the expansion profile.", 0, java.lang.Integer.MAX_VALUE, description));
3121        childrenList.add(new Property("codeSystem", "", "A set of criteria that provide the constraints imposed on the value set expansion by including or excluding codes from specific code systems (or versions).", 0, java.lang.Integer.MAX_VALUE, codeSystem));
3122        childrenList.add(new Property("includeDesignations", "boolean", "Controls whether concept designations are to be included or excluded in value set expansions.", 0, java.lang.Integer.MAX_VALUE, includeDesignations));
3123        childrenList.add(new Property("designation", "", "A set of criteria that provide the constraints imposed on the value set expansion by including or excluding designations.", 0, java.lang.Integer.MAX_VALUE, designation));
3124        childrenList.add(new Property("includeDefinition", "boolean", "Controls whether the value set definition is included or excluded in value set expansions.", 0, java.lang.Integer.MAX_VALUE, includeDefinition));
3125        childrenList.add(new Property("includeInactive", "boolean", "Controls whether inactive concepts are included or excluded in value set expansions.", 0, java.lang.Integer.MAX_VALUE, includeInactive));
3126        childrenList.add(new Property("excludeNested", "boolean", "Controls whether or not the value set expansion includes nested codes (i.e. ValueSet.expansion.contains.contains).", 0, java.lang.Integer.MAX_VALUE, excludeNested));
3127        childrenList.add(new Property("excludeNotForUI", "boolean", "Controls whether or not the value set expansion includes codes which cannot be displayed in user interfaces.", 0, java.lang.Integer.MAX_VALUE, excludeNotForUI));
3128        childrenList.add(new Property("excludePostCoordinated", "boolean", "Controls whether or not the value set expansion includes post coordinated codes.", 0, java.lang.Integer.MAX_VALUE, excludePostCoordinated));
3129        childrenList.add(new Property("displayLanguage", "code", "Specifies the language to be used for description in the expansions i.e. the language to be used for ValueSet.expansion.contains.display.", 0, java.lang.Integer.MAX_VALUE, displayLanguage));
3130        childrenList.add(new Property("limitedExpansion", "boolean", "If the value set being expanded is incomplete (because it is too big to expand), return a limited expansion (a subset) with an indicator that expansion is incomplete.", 0, java.lang.Integer.MAX_VALUE, limitedExpansion));
3131      }
3132
3133      @Override
3134      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
3135        switch (hash) {
3136        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
3137        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : new Base[] {this.identifier}; // Identifier
3138        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
3139        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
3140        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<ConformanceResourceStatus>
3141        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
3142        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
3143        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ExpansionProfileContactComponent
3144        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
3145        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
3146        case -916511108: /*codeSystem*/ return this.codeSystem == null ? new Base[0] : new Base[] {this.codeSystem}; // ExpansionProfileCodeSystemComponent
3147        case 461507620: /*includeDesignations*/ return this.includeDesignations == null ? new Base[0] : new Base[] {this.includeDesignations}; // BooleanType
3148        case -900931593: /*designation*/ return this.designation == null ? new Base[0] : new Base[] {this.designation}; // ExpansionProfileDesignationComponent
3149        case 127972379: /*includeDefinition*/ return this.includeDefinition == null ? new Base[0] : new Base[] {this.includeDefinition}; // BooleanType
3150        case 1634790707: /*includeInactive*/ return this.includeInactive == null ? new Base[0] : new Base[] {this.includeInactive}; // BooleanType
3151        case 424992625: /*excludeNested*/ return this.excludeNested == null ? new Base[0] : new Base[] {this.excludeNested}; // BooleanType
3152        case 667582980: /*excludeNotForUI*/ return this.excludeNotForUI == null ? new Base[0] : new Base[] {this.excludeNotForUI}; // BooleanType
3153        case 563335154: /*excludePostCoordinated*/ return this.excludePostCoordinated == null ? new Base[0] : new Base[] {this.excludePostCoordinated}; // BooleanType
3154        case 1486237242: /*displayLanguage*/ return this.displayLanguage == null ? new Base[0] : new Base[] {this.displayLanguage}; // CodeType
3155        case 597771333: /*limitedExpansion*/ return this.limitedExpansion == null ? new Base[0] : new Base[] {this.limitedExpansion}; // BooleanType
3156        default: return super.getProperty(hash, name, checkValid);
3157        }
3158
3159      }
3160
3161      @Override
3162      public void setProperty(int hash, String name, Base value) throws FHIRException {
3163        switch (hash) {
3164        case 116079: // url
3165          this.url = castToUri(value); // UriType
3166          break;
3167        case -1618432855: // identifier
3168          this.identifier = castToIdentifier(value); // Identifier
3169          break;
3170        case 351608024: // version
3171          this.version = castToString(value); // StringType
3172          break;
3173        case 3373707: // name
3174          this.name = castToString(value); // StringType
3175          break;
3176        case -892481550: // status
3177          this.status = new ConformanceResourceStatusEnumFactory().fromType(value); // Enumeration<ConformanceResourceStatus>
3178          break;
3179        case -404562712: // experimental
3180          this.experimental = castToBoolean(value); // BooleanType
3181          break;
3182        case 1447404028: // publisher
3183          this.publisher = castToString(value); // StringType
3184          break;
3185        case 951526432: // contact
3186          this.getContact().add((ExpansionProfileContactComponent) value); // ExpansionProfileContactComponent
3187          break;
3188        case 3076014: // date
3189          this.date = castToDateTime(value); // DateTimeType
3190          break;
3191        case -1724546052: // description
3192          this.description = castToString(value); // StringType
3193          break;
3194        case -916511108: // codeSystem
3195          this.codeSystem = (ExpansionProfileCodeSystemComponent) value; // ExpansionProfileCodeSystemComponent
3196          break;
3197        case 461507620: // includeDesignations
3198          this.includeDesignations = castToBoolean(value); // BooleanType
3199          break;
3200        case -900931593: // designation
3201          this.designation = (ExpansionProfileDesignationComponent) value; // ExpansionProfileDesignationComponent
3202          break;
3203        case 127972379: // includeDefinition
3204          this.includeDefinition = castToBoolean(value); // BooleanType
3205          break;
3206        case 1634790707: // includeInactive
3207          this.includeInactive = castToBoolean(value); // BooleanType
3208          break;
3209        case 424992625: // excludeNested
3210          this.excludeNested = castToBoolean(value); // BooleanType
3211          break;
3212        case 667582980: // excludeNotForUI
3213          this.excludeNotForUI = castToBoolean(value); // BooleanType
3214          break;
3215        case 563335154: // excludePostCoordinated
3216          this.excludePostCoordinated = castToBoolean(value); // BooleanType
3217          break;
3218        case 1486237242: // displayLanguage
3219          this.displayLanguage = castToCode(value); // CodeType
3220          break;
3221        case 597771333: // limitedExpansion
3222          this.limitedExpansion = castToBoolean(value); // BooleanType
3223          break;
3224        default: super.setProperty(hash, name, value);
3225        }
3226
3227      }
3228
3229      @Override
3230      public void setProperty(String name, Base value) throws FHIRException {
3231        if (name.equals("url"))
3232          this.url = castToUri(value); // UriType
3233        else if (name.equals("identifier"))
3234          this.identifier = castToIdentifier(value); // Identifier
3235        else if (name.equals("version"))
3236          this.version = castToString(value); // StringType
3237        else if (name.equals("name"))
3238          this.name = castToString(value); // StringType
3239        else if (name.equals("status"))
3240          this.status = new ConformanceResourceStatusEnumFactory().fromType(value); // Enumeration<ConformanceResourceStatus>
3241        else if (name.equals("experimental"))
3242          this.experimental = castToBoolean(value); // BooleanType
3243        else if (name.equals("publisher"))
3244          this.publisher = castToString(value); // StringType
3245        else if (name.equals("contact"))
3246          this.getContact().add((ExpansionProfileContactComponent) value);
3247        else if (name.equals("date"))
3248          this.date = castToDateTime(value); // DateTimeType
3249        else if (name.equals("description"))
3250          this.description = castToString(value); // StringType
3251        else if (name.equals("codeSystem"))
3252          this.codeSystem = (ExpansionProfileCodeSystemComponent) value; // ExpansionProfileCodeSystemComponent
3253        else if (name.equals("includeDesignations"))
3254          this.includeDesignations = castToBoolean(value); // BooleanType
3255        else if (name.equals("designation"))
3256          this.designation = (ExpansionProfileDesignationComponent) value; // ExpansionProfileDesignationComponent
3257        else if (name.equals("includeDefinition"))
3258          this.includeDefinition = castToBoolean(value); // BooleanType
3259        else if (name.equals("includeInactive"))
3260          this.includeInactive = castToBoolean(value); // BooleanType
3261        else if (name.equals("excludeNested"))
3262          this.excludeNested = castToBoolean(value); // BooleanType
3263        else if (name.equals("excludeNotForUI"))
3264          this.excludeNotForUI = castToBoolean(value); // BooleanType
3265        else if (name.equals("excludePostCoordinated"))
3266          this.excludePostCoordinated = castToBoolean(value); // BooleanType
3267        else if (name.equals("displayLanguage"))
3268          this.displayLanguage = castToCode(value); // CodeType
3269        else if (name.equals("limitedExpansion"))
3270          this.limitedExpansion = castToBoolean(value); // BooleanType
3271        else
3272          super.setProperty(name, value);
3273      }
3274
3275      @Override
3276      public Base makeProperty(int hash, String name) throws FHIRException {
3277        switch (hash) {
3278        case 116079: throw new FHIRException("Cannot make property url as it is not a complex type"); // UriType
3279        case -1618432855:  return getIdentifier(); // Identifier
3280        case 351608024: throw new FHIRException("Cannot make property version as it is not a complex type"); // StringType
3281        case 3373707: throw new FHIRException("Cannot make property name as it is not a complex type"); // StringType
3282        case -892481550: throw new FHIRException("Cannot make property status as it is not a complex type"); // Enumeration<ConformanceResourceStatus>
3283        case -404562712: throw new FHIRException("Cannot make property experimental as it is not a complex type"); // BooleanType
3284        case 1447404028: throw new FHIRException("Cannot make property publisher as it is not a complex type"); // StringType
3285        case 951526432:  return addContact(); // ExpansionProfileContactComponent
3286        case 3076014: throw new FHIRException("Cannot make property date as it is not a complex type"); // DateTimeType
3287        case -1724546052: throw new FHIRException("Cannot make property description as it is not a complex type"); // StringType
3288        case -916511108:  return getCodeSystem(); // ExpansionProfileCodeSystemComponent
3289        case 461507620: throw new FHIRException("Cannot make property includeDesignations as it is not a complex type"); // BooleanType
3290        case -900931593:  return getDesignation(); // ExpansionProfileDesignationComponent
3291        case 127972379: throw new FHIRException("Cannot make property includeDefinition as it is not a complex type"); // BooleanType
3292        case 1634790707: throw new FHIRException("Cannot make property includeInactive as it is not a complex type"); // BooleanType
3293        case 424992625: throw new FHIRException("Cannot make property excludeNested as it is not a complex type"); // BooleanType
3294        case 667582980: throw new FHIRException("Cannot make property excludeNotForUI as it is not a complex type"); // BooleanType
3295        case 563335154: throw new FHIRException("Cannot make property excludePostCoordinated as it is not a complex type"); // BooleanType
3296        case 1486237242: throw new FHIRException("Cannot make property displayLanguage as it is not a complex type"); // CodeType
3297        case 597771333: throw new FHIRException("Cannot make property limitedExpansion as it is not a complex type"); // BooleanType
3298        default: return super.makeProperty(hash, name);
3299        }
3300
3301      }
3302
3303      @Override
3304      public Base addChild(String name) throws FHIRException {
3305        if (name.equals("url")) {
3306          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.url");
3307        }
3308        else if (name.equals("identifier")) {
3309          this.identifier = new Identifier();
3310          return this.identifier;
3311        }
3312        else if (name.equals("version")) {
3313          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.version");
3314        }
3315        else if (name.equals("name")) {
3316          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.name");
3317        }
3318        else if (name.equals("status")) {
3319          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.status");
3320        }
3321        else if (name.equals("experimental")) {
3322          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.experimental");
3323        }
3324        else if (name.equals("publisher")) {
3325          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.publisher");
3326        }
3327        else if (name.equals("contact")) {
3328          return addContact();
3329        }
3330        else if (name.equals("date")) {
3331          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.date");
3332        }
3333        else if (name.equals("description")) {
3334          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.description");
3335        }
3336        else if (name.equals("codeSystem")) {
3337          this.codeSystem = new ExpansionProfileCodeSystemComponent();
3338          return this.codeSystem;
3339        }
3340        else if (name.equals("includeDesignations")) {
3341          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.includeDesignations");
3342        }
3343        else if (name.equals("designation")) {
3344          this.designation = new ExpansionProfileDesignationComponent();
3345          return this.designation;
3346        }
3347        else if (name.equals("includeDefinition")) {
3348          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.includeDefinition");
3349        }
3350        else if (name.equals("includeInactive")) {
3351          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.includeInactive");
3352        }
3353        else if (name.equals("excludeNested")) {
3354          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.excludeNested");
3355        }
3356        else if (name.equals("excludeNotForUI")) {
3357          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.excludeNotForUI");
3358        }
3359        else if (name.equals("excludePostCoordinated")) {
3360          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.excludePostCoordinated");
3361        }
3362        else if (name.equals("displayLanguage")) {
3363          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.displayLanguage");
3364        }
3365        else if (name.equals("limitedExpansion")) {
3366          throw new FHIRException("Cannot call addChild on a primitive type ExpansionProfile.limitedExpansion");
3367        }
3368        else
3369          return super.addChild(name);
3370      }
3371
3372  public String fhirType() {
3373    return "ExpansionProfile";
3374
3375  }
3376
3377      public ExpansionProfile copy() {
3378        ExpansionProfile dst = new ExpansionProfile();
3379        copyValues(dst);
3380        dst.url = url == null ? null : url.copy();
3381        dst.identifier = identifier == null ? null : identifier.copy();
3382        dst.version = version == null ? null : version.copy();
3383        dst.name = name == null ? null : name.copy();
3384        dst.status = status == null ? null : status.copy();
3385        dst.experimental = experimental == null ? null : experimental.copy();
3386        dst.publisher = publisher == null ? null : publisher.copy();
3387        if (contact != null) {
3388          dst.contact = new ArrayList<ExpansionProfileContactComponent>();
3389          for (ExpansionProfileContactComponent i : contact)
3390            dst.contact.add(i.copy());
3391        };
3392        dst.date = date == null ? null : date.copy();
3393        dst.description = description == null ? null : description.copy();
3394        dst.codeSystem = codeSystem == null ? null : codeSystem.copy();
3395        dst.includeDesignations = includeDesignations == null ? null : includeDesignations.copy();
3396        dst.designation = designation == null ? null : designation.copy();
3397        dst.includeDefinition = includeDefinition == null ? null : includeDefinition.copy();
3398        dst.includeInactive = includeInactive == null ? null : includeInactive.copy();
3399        dst.excludeNested = excludeNested == null ? null : excludeNested.copy();
3400        dst.excludeNotForUI = excludeNotForUI == null ? null : excludeNotForUI.copy();
3401        dst.excludePostCoordinated = excludePostCoordinated == null ? null : excludePostCoordinated.copy();
3402        dst.displayLanguage = displayLanguage == null ? null : displayLanguage.copy();
3403        dst.limitedExpansion = limitedExpansion == null ? null : limitedExpansion.copy();
3404        return dst;
3405      }
3406
3407      protected ExpansionProfile typedCopy() {
3408        return copy();
3409      }
3410
3411      @Override
3412      public boolean equalsDeep(Base other) {
3413        if (!super.equalsDeep(other))
3414          return false;
3415        if (!(other instanceof ExpansionProfile))
3416          return false;
3417        ExpansionProfile o = (ExpansionProfile) other;
3418        return compareDeep(url, o.url, true) && compareDeep(identifier, o.identifier, true) && compareDeep(version, o.version, true)
3419           && compareDeep(name, o.name, true) && compareDeep(status, o.status, true) && compareDeep(experimental, o.experimental, true)
3420           && compareDeep(publisher, o.publisher, true) && compareDeep(contact, o.contact, true) && compareDeep(date, o.date, true)
3421           && compareDeep(description, o.description, true) && compareDeep(codeSystem, o.codeSystem, true)
3422           && compareDeep(includeDesignations, o.includeDesignations, true) && compareDeep(designation, o.designation, true)
3423           && compareDeep(includeDefinition, o.includeDefinition, true) && compareDeep(includeInactive, o.includeInactive, true)
3424           && compareDeep(excludeNested, o.excludeNested, true) && compareDeep(excludeNotForUI, o.excludeNotForUI, true)
3425           && compareDeep(excludePostCoordinated, o.excludePostCoordinated, true) && compareDeep(displayLanguage, o.displayLanguage, true)
3426           && compareDeep(limitedExpansion, o.limitedExpansion, true);
3427      }
3428
3429      @Override
3430      public boolean equalsShallow(Base other) {
3431        if (!super.equalsShallow(other))
3432          return false;
3433        if (!(other instanceof ExpansionProfile))
3434          return false;
3435        ExpansionProfile o = (ExpansionProfile) other;
3436        return compareValues(url, o.url, true) && compareValues(version, o.version, true) && compareValues(name, o.name, true)
3437           && compareValues(status, o.status, true) && compareValues(experimental, o.experimental, true) && compareValues(publisher, o.publisher, true)
3438           && compareValues(date, o.date, true) && compareValues(description, o.description, true) && compareValues(includeDesignations, o.includeDesignations, true)
3439           && compareValues(includeDefinition, o.includeDefinition, true) && compareValues(includeInactive, o.includeInactive, true)
3440           && compareValues(excludeNested, o.excludeNested, true) && compareValues(excludeNotForUI, o.excludeNotForUI, true)
3441           && compareValues(excludePostCoordinated, o.excludePostCoordinated, true) && compareValues(displayLanguage, o.displayLanguage, true)
3442           && compareValues(limitedExpansion, o.limitedExpansion, true);
3443      }
3444
3445      public boolean isEmpty() {
3446        return super.isEmpty() && (url == null || url.isEmpty()) && (identifier == null || identifier.isEmpty())
3447           && (version == null || version.isEmpty()) && (name == null || name.isEmpty()) && (status == null || status.isEmpty())
3448           && (experimental == null || experimental.isEmpty()) && (publisher == null || publisher.isEmpty())
3449           && (contact == null || contact.isEmpty()) && (date == null || date.isEmpty()) && (description == null || description.isEmpty())
3450           && (codeSystem == null || codeSystem.isEmpty()) && (includeDesignations == null || includeDesignations.isEmpty())
3451           && (designation == null || designation.isEmpty()) && (includeDefinition == null || includeDefinition.isEmpty())
3452           && (includeInactive == null || includeInactive.isEmpty()) && (excludeNested == null || excludeNested.isEmpty())
3453           && (excludeNotForUI == null || excludeNotForUI.isEmpty()) && (excludePostCoordinated == null || excludePostCoordinated.isEmpty())
3454           && (displayLanguage == null || displayLanguage.isEmpty()) && (limitedExpansion == null || limitedExpansion.isEmpty())
3455          ;
3456      }
3457
3458  @Override
3459  public ResourceType getResourceType() {
3460    return ResourceType.ExpansionProfile;
3461   }
3462
3463 /**
3464   * Search parameter: <b>status</b>
3465   * <p>
3466   * Description: <b>The status of the expansion profile</b><br>
3467   * Type: <b>token</b><br>
3468   * Path: <b>ExpansionProfile.status</b><br>
3469   * </p>
3470   */
3471  @SearchParamDefinition(name="status", path="ExpansionProfile.status", description="The status of the expansion profile", type="token" )
3472  public static final String SP_STATUS = "status";
3473 /**
3474   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3475   * <p>
3476   * Description: <b>The status of the expansion profile</b><br>
3477   * Type: <b>token</b><br>
3478   * Path: <b>ExpansionProfile.status</b><br>
3479   * </p>
3480   */
3481  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3482
3483 /**
3484   * Search parameter: <b>description</b>
3485   * <p>
3486   * Description: <b>Text search in the description of the expansion profile</b><br>
3487   * Type: <b>string</b><br>
3488   * Path: <b>ExpansionProfile.description</b><br>
3489   * </p>
3490   */
3491  @SearchParamDefinition(name="description", path="ExpansionProfile.description", description="Text search in the description of the expansion profile", type="string" )
3492  public static final String SP_DESCRIPTION = "description";
3493 /**
3494   * <b>Fluent Client</b> search parameter constant for <b>description</b>
3495   * <p>
3496   * Description: <b>Text search in the description of the expansion profile</b><br>
3497   * Type: <b>string</b><br>
3498   * Path: <b>ExpansionProfile.description</b><br>
3499   * </p>
3500   */
3501  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
3502
3503 /**
3504   * Search parameter: <b>name</b>
3505   * <p>
3506   * Description: <b>The name of the expansion profile</b><br>
3507   * Type: <b>string</b><br>
3508   * Path: <b>ExpansionProfile.name</b><br>
3509   * </p>
3510   */
3511  @SearchParamDefinition(name="name", path="ExpansionProfile.name", description="The name of the expansion profile", type="string" )
3512  public static final String SP_NAME = "name";
3513 /**
3514   * <b>Fluent Client</b> search parameter constant for <b>name</b>
3515   * <p>
3516   * Description: <b>The name of the expansion profile</b><br>
3517   * Type: <b>string</b><br>
3518   * Path: <b>ExpansionProfile.name</b><br>
3519   * </p>
3520   */
3521  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
3522
3523 /**
3524   * Search parameter: <b>date</b>
3525   * <p>
3526   * Description: <b>The expansion profile publication date</b><br>
3527   * Type: <b>date</b><br>
3528   * Path: <b>ExpansionProfile.date</b><br>
3529   * </p>
3530   */
3531  @SearchParamDefinition(name="date", path="ExpansionProfile.date", description="The expansion profile publication date", type="date" )
3532  public static final String SP_DATE = "date";
3533 /**
3534   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3535   * <p>
3536   * Description: <b>The expansion profile publication date</b><br>
3537   * Type: <b>date</b><br>
3538   * Path: <b>ExpansionProfile.date</b><br>
3539   * </p>
3540   */
3541  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3542
3543 /**
3544   * Search parameter: <b>identifier</b>
3545   * <p>
3546   * Description: <b>The identifier for the expansion profile</b><br>
3547   * Type: <b>token</b><br>
3548   * Path: <b>ExpansionProfile.identifier</b><br>
3549   * </p>
3550   */
3551  @SearchParamDefinition(name="identifier", path="ExpansionProfile.identifier", description="The identifier for the expansion profile", type="token" )
3552  public static final String SP_IDENTIFIER = "identifier";
3553 /**
3554   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3555   * <p>
3556   * Description: <b>The identifier for the expansion profile</b><br>
3557   * Type: <b>token</b><br>
3558   * Path: <b>ExpansionProfile.identifier</b><br>
3559   * </p>
3560   */
3561  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3562
3563 /**
3564   * Search parameter: <b>url</b>
3565   * <p>
3566   * Description: <b>The logical URL for the expansion profile</b><br>
3567   * Type: <b>uri</b><br>
3568   * Path: <b>ExpansionProfile.url</b><br>
3569   * </p>
3570   */
3571  @SearchParamDefinition(name="url", path="ExpansionProfile.url", description="The logical URL for the expansion profile", type="uri" )
3572  public static final String SP_URL = "url";
3573 /**
3574   * <b>Fluent Client</b> search parameter constant for <b>url</b>
3575   * <p>
3576   * Description: <b>The logical URL for the expansion profile</b><br>
3577   * Type: <b>uri</b><br>
3578   * Path: <b>ExpansionProfile.url</b><br>
3579   * </p>
3580   */
3581  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
3582
3583 /**
3584   * Search parameter: <b>publisher</b>
3585   * <p>
3586   * Description: <b>Name of the publisher of the expansion profile</b><br>
3587   * Type: <b>string</b><br>
3588   * Path: <b>ExpansionProfile.publisher</b><br>
3589   * </p>
3590   */
3591  @SearchParamDefinition(name="publisher", path="ExpansionProfile.publisher", description="Name of the publisher of the expansion profile", type="string" )
3592  public static final String SP_PUBLISHER = "publisher";
3593 /**
3594   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
3595   * <p>
3596   * Description: <b>Name of the publisher of the expansion profile</b><br>
3597   * Type: <b>string</b><br>
3598   * Path: <b>ExpansionProfile.publisher</b><br>
3599   * </p>
3600   */
3601  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
3602
3603 /**
3604   * Search parameter: <b>version</b>
3605   * <p>
3606   * Description: <b>The version identifier of the expansion profile</b><br>
3607   * Type: <b>token</b><br>
3608   * Path: <b>ExpansionProfile.version</b><br>
3609   * </p>
3610   */
3611  @SearchParamDefinition(name="version", path="ExpansionProfile.version", description="The version identifier of the expansion profile", type="token" )
3612  public static final String SP_VERSION = "version";
3613 /**
3614   * <b>Fluent Client</b> search parameter constant for <b>version</b>
3615   * <p>
3616   * Description: <b>The version identifier of the expansion profile</b><br>
3617   * Type: <b>token</b><br>
3618   * Path: <b>ExpansionProfile.version</b><br>
3619   * </p>
3620   */
3621  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
3622
3623
3624}
3625