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