001package org.hl7.fhir.r5.model;
002
003
004/*
005  Copyright (c) 2011+, HL7, Inc.
006  All rights reserved.
007  
008  Redistribution and use in source and binary forms, with or without modification, \
009  are permitted provided that the following conditions are met:
010  
011   * Redistributions of source code must retain the above copyright notice, this \
012     list of conditions and the following disclaimer.
013   * Redistributions in binary form must reproduce the above copyright notice, \
014     this list of conditions and the following disclaimer in the documentation \
015     and/or other materials provided with the distribution.
016   * Neither the name of HL7 nor the names of its contributors may be used to 
017     endorse or promote products derived from this software without specific 
018     prior written permission.
019  
020  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
021  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
022  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
023  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
024  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
025  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
026  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
027  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
029  POSSIBILITY OF SUCH DAMAGE.
030  */
031
032// Generated on Sat, Nov 5, 2022 10:47+1100 for FHIR v5.0.0-ballot
033
034import java.util.ArrayList;
035import java.util.Date;
036import java.util.List;
037import org.hl7.fhir.utilities.Utilities;
038import org.hl7.fhir.r5.model.Enumerations.*;
039import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
040import org.hl7.fhir.exceptions.FHIRException;
041import org.hl7.fhir.instance.model.api.ICompositeType;
042import ca.uhn.fhir.model.api.annotation.ResourceDef;
043import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
044import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
045import ca.uhn.fhir.model.api.annotation.Child;
046import ca.uhn.fhir.model.api.annotation.ChildOrder;
047import ca.uhn.fhir.model.api.annotation.Description;
048import ca.uhn.fhir.model.api.annotation.Block;
049
050/**
051 * The definition and characteristics of a medicinal manufactured item, such as a tablet or capsule, as contained in a packaged medicinal product.
052 */
053@ResourceDef(name="ManufacturedItemDefinition", profile="http://hl7.org/fhir/StructureDefinition/ManufacturedItemDefinition")
054public class ManufacturedItemDefinition extends DomainResource {
055
056    @Block()
057    public static class ManufacturedItemDefinitionPropertyComponent extends BackboneElement implements IBaseBackboneElement {
058        /**
059         * A code expressing the type of characteristic.
060         */
061        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=true)
062        @Description(shortDefinition="A code expressing the type of characteristic", formalDefinition="A code expressing the type of characteristic." )
063        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/product-characteristic-codes")
064        protected CodeableConcept type;
065
066        /**
067         * A value for the characteristic.
068         */
069        @Child(name = "value", type = {CodeableConcept.class, Quantity.class, DateType.class, BooleanType.class, Attachment.class}, order=2, min=0, max=1, modifier=false, summary=true)
070        @Description(shortDefinition="A value for the characteristic", formalDefinition="A value for the characteristic." )
071        protected DataType value;
072
073        private static final long serialVersionUID = -1659186716L;
074
075    /**
076     * Constructor
077     */
078      public ManufacturedItemDefinitionPropertyComponent() {
079        super();
080      }
081
082    /**
083     * Constructor
084     */
085      public ManufacturedItemDefinitionPropertyComponent(CodeableConcept type) {
086        super();
087        this.setType(type);
088      }
089
090        /**
091         * @return {@link #type} (A code expressing the type of characteristic.)
092         */
093        public CodeableConcept getType() { 
094          if (this.type == null)
095            if (Configuration.errorOnAutoCreate())
096              throw new Error("Attempt to auto-create ManufacturedItemDefinitionPropertyComponent.type");
097            else if (Configuration.doAutoCreate())
098              this.type = new CodeableConcept(); // cc
099          return this.type;
100        }
101
102        public boolean hasType() { 
103          return this.type != null && !this.type.isEmpty();
104        }
105
106        /**
107         * @param value {@link #type} (A code expressing the type of characteristic.)
108         */
109        public ManufacturedItemDefinitionPropertyComponent setType(CodeableConcept value) { 
110          this.type = value;
111          return this;
112        }
113
114        /**
115         * @return {@link #value} (A value for the characteristic.)
116         */
117        public DataType getValue() { 
118          return this.value;
119        }
120
121        /**
122         * @return {@link #value} (A value for the characteristic.)
123         */
124        public CodeableConcept getValueCodeableConcept() throws FHIRException { 
125          if (this.value == null)
126            this.value = new CodeableConcept();
127          if (!(this.value instanceof CodeableConcept))
128            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.value.getClass().getName()+" was encountered");
129          return (CodeableConcept) this.value;
130        }
131
132        public boolean hasValueCodeableConcept() { 
133          return this != null && this.value instanceof CodeableConcept;
134        }
135
136        /**
137         * @return {@link #value} (A value for the characteristic.)
138         */
139        public Quantity getValueQuantity() throws FHIRException { 
140          if (this.value == null)
141            this.value = new Quantity();
142          if (!(this.value instanceof Quantity))
143            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.value.getClass().getName()+" was encountered");
144          return (Quantity) this.value;
145        }
146
147        public boolean hasValueQuantity() { 
148          return this != null && this.value instanceof Quantity;
149        }
150
151        /**
152         * @return {@link #value} (A value for the characteristic.)
153         */
154        public DateType getValueDateType() throws FHIRException { 
155          if (this.value == null)
156            this.value = new DateType();
157          if (!(this.value instanceof DateType))
158            throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.value.getClass().getName()+" was encountered");
159          return (DateType) this.value;
160        }
161
162        public boolean hasValueDateType() { 
163          return this != null && this.value instanceof DateType;
164        }
165
166        /**
167         * @return {@link #value} (A value for the characteristic.)
168         */
169        public BooleanType getValueBooleanType() throws FHIRException { 
170          if (this.value == null)
171            this.value = new BooleanType();
172          if (!(this.value instanceof BooleanType))
173            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.value.getClass().getName()+" was encountered");
174          return (BooleanType) this.value;
175        }
176
177        public boolean hasValueBooleanType() { 
178          return this != null && this.value instanceof BooleanType;
179        }
180
181        /**
182         * @return {@link #value} (A value for the characteristic.)
183         */
184        public Attachment getValueAttachment() throws FHIRException { 
185          if (this.value == null)
186            this.value = new Attachment();
187          if (!(this.value instanceof Attachment))
188            throw new FHIRException("Type mismatch: the type Attachment was expected, but "+this.value.getClass().getName()+" was encountered");
189          return (Attachment) this.value;
190        }
191
192        public boolean hasValueAttachment() { 
193          return this != null && this.value instanceof Attachment;
194        }
195
196        public boolean hasValue() { 
197          return this.value != null && !this.value.isEmpty();
198        }
199
200        /**
201         * @param value {@link #value} (A value for the characteristic.)
202         */
203        public ManufacturedItemDefinitionPropertyComponent setValue(DataType value) { 
204          if (value != null && !(value instanceof CodeableConcept || value instanceof Quantity || value instanceof DateType || value instanceof BooleanType || value instanceof Attachment))
205            throw new Error("Not the right type for ManufacturedItemDefinition.property.value[x]: "+value.fhirType());
206          this.value = value;
207          return this;
208        }
209
210        protected void listChildren(List<Property> children) {
211          super.listChildren(children);
212          children.add(new Property("type", "CodeableConcept", "A code expressing the type of characteristic.", 0, 1, type));
213          children.add(new Property("value[x]", "CodeableConcept|Quantity|date|boolean|Attachment", "A value for the characteristic.", 0, 1, value));
214        }
215
216        @Override
217        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
218          switch (_hash) {
219          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "A code expressing the type of characteristic.", 0, 1, type);
220          case -1410166417: /*value[x]*/  return new Property("value[x]", "CodeableConcept|Quantity|date|boolean|Attachment", "A value for the characteristic.", 0, 1, value);
221          case 111972721: /*value*/  return new Property("value[x]", "CodeableConcept|Quantity|date|boolean|Attachment", "A value for the characteristic.", 0, 1, value);
222          case 924902896: /*valueCodeableConcept*/  return new Property("value[x]", "CodeableConcept", "A value for the characteristic.", 0, 1, value);
223          case -2029823716: /*valueQuantity*/  return new Property("value[x]", "Quantity", "A value for the characteristic.", 0, 1, value);
224          case -766192449: /*valueDate*/  return new Property("value[x]", "date", "A value for the characteristic.", 0, 1, value);
225          case 733421943: /*valueBoolean*/  return new Property("value[x]", "boolean", "A value for the characteristic.", 0, 1, value);
226          case -475566732: /*valueAttachment*/  return new Property("value[x]", "Attachment", "A value for the characteristic.", 0, 1, value);
227          default: return super.getNamedProperty(_hash, _name, _checkValid);
228          }
229
230        }
231
232      @Override
233      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
234        switch (hash) {
235        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
236        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // DataType
237        default: return super.getProperty(hash, name, checkValid);
238        }
239
240      }
241
242      @Override
243      public Base setProperty(int hash, String name, Base value) throws FHIRException {
244        switch (hash) {
245        case 3575610: // type
246          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
247          return value;
248        case 111972721: // value
249          this.value = TypeConvertor.castToType(value); // DataType
250          return value;
251        default: return super.setProperty(hash, name, value);
252        }
253
254      }
255
256      @Override
257      public Base setProperty(String name, Base value) throws FHIRException {
258        if (name.equals("type")) {
259          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
260        } else if (name.equals("value[x]")) {
261          this.value = TypeConvertor.castToType(value); // DataType
262        } else
263          return super.setProperty(name, value);
264        return value;
265      }
266
267      @Override
268      public Base makeProperty(int hash, String name) throws FHIRException {
269        switch (hash) {
270        case 3575610:  return getType();
271        case -1410166417:  return getValue();
272        case 111972721:  return getValue();
273        default: return super.makeProperty(hash, name);
274        }
275
276      }
277
278      @Override
279      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
280        switch (hash) {
281        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
282        case 111972721: /*value*/ return new String[] {"CodeableConcept", "Quantity", "date", "boolean", "Attachment"};
283        default: return super.getTypesForProperty(hash, name);
284        }
285
286      }
287
288      @Override
289      public Base addChild(String name) throws FHIRException {
290        if (name.equals("type")) {
291          this.type = new CodeableConcept();
292          return this.type;
293        }
294        else if (name.equals("valueCodeableConcept")) {
295          this.value = new CodeableConcept();
296          return this.value;
297        }
298        else if (name.equals("valueQuantity")) {
299          this.value = new Quantity();
300          return this.value;
301        }
302        else if (name.equals("valueDate")) {
303          this.value = new DateType();
304          return this.value;
305        }
306        else if (name.equals("valueBoolean")) {
307          this.value = new BooleanType();
308          return this.value;
309        }
310        else if (name.equals("valueAttachment")) {
311          this.value = new Attachment();
312          return this.value;
313        }
314        else
315          return super.addChild(name);
316      }
317
318      public ManufacturedItemDefinitionPropertyComponent copy() {
319        ManufacturedItemDefinitionPropertyComponent dst = new ManufacturedItemDefinitionPropertyComponent();
320        copyValues(dst);
321        return dst;
322      }
323
324      public void copyValues(ManufacturedItemDefinitionPropertyComponent dst) {
325        super.copyValues(dst);
326        dst.type = type == null ? null : type.copy();
327        dst.value = value == null ? null : value.copy();
328      }
329
330      @Override
331      public boolean equalsDeep(Base other_) {
332        if (!super.equalsDeep(other_))
333          return false;
334        if (!(other_ instanceof ManufacturedItemDefinitionPropertyComponent))
335          return false;
336        ManufacturedItemDefinitionPropertyComponent o = (ManufacturedItemDefinitionPropertyComponent) other_;
337        return compareDeep(type, o.type, true) && compareDeep(value, o.value, true);
338      }
339
340      @Override
341      public boolean equalsShallow(Base other_) {
342        if (!super.equalsShallow(other_))
343          return false;
344        if (!(other_ instanceof ManufacturedItemDefinitionPropertyComponent))
345          return false;
346        ManufacturedItemDefinitionPropertyComponent o = (ManufacturedItemDefinitionPropertyComponent) other_;
347        return true;
348      }
349
350      public boolean isEmpty() {
351        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, value);
352      }
353
354  public String fhirType() {
355    return "ManufacturedItemDefinition.property";
356
357  }
358
359  }
360
361    @Block()
362    public static class ManufacturedItemDefinitionComponentComponent extends BackboneElement implements IBaseBackboneElement {
363        /**
364         * Defining type of the component e.g. shell, layer, ink.
365         */
366        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=true)
367        @Description(shortDefinition="Defining type of the component e.g. shell, layer, ink", formalDefinition="Defining type of the component e.g. shell, layer, ink." )
368        protected CodeableConcept type;
369
370        /**
371         * The function of this component within the item e.g. delivers active ingredient, masks taste.
372         */
373        @Child(name = "function", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
374        @Description(shortDefinition="The function of this component within the item e.g. delivers active ingredient, masks taste", formalDefinition="The function of this component within the item e.g. delivers active ingredient, masks taste." )
375        protected List<CodeableConcept> function;
376
377        /**
378         * The measurable amount of substance in this component, expressable in different ways (e.g. by mass or volume).
379         */
380        @Child(name = "amount", type = {Quantity.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
381        @Description(shortDefinition="The measurable amount of substance in this component, expressable in different ways (e.g. by mass or volume)", formalDefinition="The measurable amount of substance in this component, expressable in different ways (e.g. by mass or volume)." )
382        protected List<Quantity> amount;
383
384        /**
385         * A reference to an constituent of the manufactured item as a whole, linked here so that its component location within the item can be indicated. This not where the item's ingredient are primarily stated (for which see Ingredient.for or ManufacturedItemDefinition.ingredient).
386         */
387        @Child(name = "constituent", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
388        @Description(shortDefinition="A reference to an constituent of the manufactured item as a whole, linked here so that its component location within the item can be indicated. This not where the item's ingredient are primarily stated (for which see Ingredient.for or ManufacturedItemDefinition.ingredient)", formalDefinition="A reference to an constituent of the manufactured item as a whole, linked here so that its component location within the item can be indicated. This not where the item's ingredient are primarily stated (for which see Ingredient.for or ManufacturedItemDefinition.ingredient)." )
389        protected List<ManufacturedItemDefinitionComponentConstituentComponent> constituent;
390
391        /**
392         * General characteristics of this component.
393         */
394        @Child(name = "property", type = {ManufacturedItemDefinitionPropertyComponent.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
395        @Description(shortDefinition="General characteristics of this component", formalDefinition="General characteristics of this component." )
396        protected List<ManufacturedItemDefinitionPropertyComponent> property;
397
398        /**
399         * A component that this component contains or is made from.
400         */
401        @Child(name = "component", type = {ManufacturedItemDefinitionComponentComponent.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
402        @Description(shortDefinition="A component that this component contains or is made from", formalDefinition="A component that this component contains or is made from." )
403        protected List<ManufacturedItemDefinitionComponentComponent> component;
404
405        private static final long serialVersionUID = 537950590L;
406
407    /**
408     * Constructor
409     */
410      public ManufacturedItemDefinitionComponentComponent() {
411        super();
412      }
413
414    /**
415     * Constructor
416     */
417      public ManufacturedItemDefinitionComponentComponent(CodeableConcept type) {
418        super();
419        this.setType(type);
420      }
421
422        /**
423         * @return {@link #type} (Defining type of the component e.g. shell, layer, ink.)
424         */
425        public CodeableConcept getType() { 
426          if (this.type == null)
427            if (Configuration.errorOnAutoCreate())
428              throw new Error("Attempt to auto-create ManufacturedItemDefinitionComponentComponent.type");
429            else if (Configuration.doAutoCreate())
430              this.type = new CodeableConcept(); // cc
431          return this.type;
432        }
433
434        public boolean hasType() { 
435          return this.type != null && !this.type.isEmpty();
436        }
437
438        /**
439         * @param value {@link #type} (Defining type of the component e.g. shell, layer, ink.)
440         */
441        public ManufacturedItemDefinitionComponentComponent setType(CodeableConcept value) { 
442          this.type = value;
443          return this;
444        }
445
446        /**
447         * @return {@link #function} (The function of this component within the item e.g. delivers active ingredient, masks taste.)
448         */
449        public List<CodeableConcept> getFunction() { 
450          if (this.function == null)
451            this.function = new ArrayList<CodeableConcept>();
452          return this.function;
453        }
454
455        /**
456         * @return Returns a reference to <code>this</code> for easy method chaining
457         */
458        public ManufacturedItemDefinitionComponentComponent setFunction(List<CodeableConcept> theFunction) { 
459          this.function = theFunction;
460          return this;
461        }
462
463        public boolean hasFunction() { 
464          if (this.function == null)
465            return false;
466          for (CodeableConcept item : this.function)
467            if (!item.isEmpty())
468              return true;
469          return false;
470        }
471
472        public CodeableConcept addFunction() { //3
473          CodeableConcept t = new CodeableConcept();
474          if (this.function == null)
475            this.function = new ArrayList<CodeableConcept>();
476          this.function.add(t);
477          return t;
478        }
479
480        public ManufacturedItemDefinitionComponentComponent addFunction(CodeableConcept t) { //3
481          if (t == null)
482            return this;
483          if (this.function == null)
484            this.function = new ArrayList<CodeableConcept>();
485          this.function.add(t);
486          return this;
487        }
488
489        /**
490         * @return The first repetition of repeating field {@link #function}, creating it if it does not already exist {3}
491         */
492        public CodeableConcept getFunctionFirstRep() { 
493          if (getFunction().isEmpty()) {
494            addFunction();
495          }
496          return getFunction().get(0);
497        }
498
499        /**
500         * @return {@link #amount} (The measurable amount of substance in this component, expressable in different ways (e.g. by mass or volume).)
501         */
502        public List<Quantity> getAmount() { 
503          if (this.amount == null)
504            this.amount = new ArrayList<Quantity>();
505          return this.amount;
506        }
507
508        /**
509         * @return Returns a reference to <code>this</code> for easy method chaining
510         */
511        public ManufacturedItemDefinitionComponentComponent setAmount(List<Quantity> theAmount) { 
512          this.amount = theAmount;
513          return this;
514        }
515
516        public boolean hasAmount() { 
517          if (this.amount == null)
518            return false;
519          for (Quantity item : this.amount)
520            if (!item.isEmpty())
521              return true;
522          return false;
523        }
524
525        public Quantity addAmount() { //3
526          Quantity t = new Quantity();
527          if (this.amount == null)
528            this.amount = new ArrayList<Quantity>();
529          this.amount.add(t);
530          return t;
531        }
532
533        public ManufacturedItemDefinitionComponentComponent addAmount(Quantity t) { //3
534          if (t == null)
535            return this;
536          if (this.amount == null)
537            this.amount = new ArrayList<Quantity>();
538          this.amount.add(t);
539          return this;
540        }
541
542        /**
543         * @return The first repetition of repeating field {@link #amount}, creating it if it does not already exist {3}
544         */
545        public Quantity getAmountFirstRep() { 
546          if (getAmount().isEmpty()) {
547            addAmount();
548          }
549          return getAmount().get(0);
550        }
551
552        /**
553         * @return {@link #constituent} (A reference to an constituent of the manufactured item as a whole, linked here so that its component location within the item can be indicated. This not where the item's ingredient are primarily stated (for which see Ingredient.for or ManufacturedItemDefinition.ingredient).)
554         */
555        public List<ManufacturedItemDefinitionComponentConstituentComponent> getConstituent() { 
556          if (this.constituent == null)
557            this.constituent = new ArrayList<ManufacturedItemDefinitionComponentConstituentComponent>();
558          return this.constituent;
559        }
560
561        /**
562         * @return Returns a reference to <code>this</code> for easy method chaining
563         */
564        public ManufacturedItemDefinitionComponentComponent setConstituent(List<ManufacturedItemDefinitionComponentConstituentComponent> theConstituent) { 
565          this.constituent = theConstituent;
566          return this;
567        }
568
569        public boolean hasConstituent() { 
570          if (this.constituent == null)
571            return false;
572          for (ManufacturedItemDefinitionComponentConstituentComponent item : this.constituent)
573            if (!item.isEmpty())
574              return true;
575          return false;
576        }
577
578        public ManufacturedItemDefinitionComponentConstituentComponent addConstituent() { //3
579          ManufacturedItemDefinitionComponentConstituentComponent t = new ManufacturedItemDefinitionComponentConstituentComponent();
580          if (this.constituent == null)
581            this.constituent = new ArrayList<ManufacturedItemDefinitionComponentConstituentComponent>();
582          this.constituent.add(t);
583          return t;
584        }
585
586        public ManufacturedItemDefinitionComponentComponent addConstituent(ManufacturedItemDefinitionComponentConstituentComponent t) { //3
587          if (t == null)
588            return this;
589          if (this.constituent == null)
590            this.constituent = new ArrayList<ManufacturedItemDefinitionComponentConstituentComponent>();
591          this.constituent.add(t);
592          return this;
593        }
594
595        /**
596         * @return The first repetition of repeating field {@link #constituent}, creating it if it does not already exist {3}
597         */
598        public ManufacturedItemDefinitionComponentConstituentComponent getConstituentFirstRep() { 
599          if (getConstituent().isEmpty()) {
600            addConstituent();
601          }
602          return getConstituent().get(0);
603        }
604
605        /**
606         * @return {@link #property} (General characteristics of this component.)
607         */
608        public List<ManufacturedItemDefinitionPropertyComponent> getProperty() { 
609          if (this.property == null)
610            this.property = new ArrayList<ManufacturedItemDefinitionPropertyComponent>();
611          return this.property;
612        }
613
614        /**
615         * @return Returns a reference to <code>this</code> for easy method chaining
616         */
617        public ManufacturedItemDefinitionComponentComponent setProperty(List<ManufacturedItemDefinitionPropertyComponent> theProperty) { 
618          this.property = theProperty;
619          return this;
620        }
621
622        public boolean hasProperty() { 
623          if (this.property == null)
624            return false;
625          for (ManufacturedItemDefinitionPropertyComponent item : this.property)
626            if (!item.isEmpty())
627              return true;
628          return false;
629        }
630
631        public ManufacturedItemDefinitionPropertyComponent addProperty() { //3
632          ManufacturedItemDefinitionPropertyComponent t = new ManufacturedItemDefinitionPropertyComponent();
633          if (this.property == null)
634            this.property = new ArrayList<ManufacturedItemDefinitionPropertyComponent>();
635          this.property.add(t);
636          return t;
637        }
638
639        public ManufacturedItemDefinitionComponentComponent addProperty(ManufacturedItemDefinitionPropertyComponent t) { //3
640          if (t == null)
641            return this;
642          if (this.property == null)
643            this.property = new ArrayList<ManufacturedItemDefinitionPropertyComponent>();
644          this.property.add(t);
645          return this;
646        }
647
648        /**
649         * @return The first repetition of repeating field {@link #property}, creating it if it does not already exist {3}
650         */
651        public ManufacturedItemDefinitionPropertyComponent getPropertyFirstRep() { 
652          if (getProperty().isEmpty()) {
653            addProperty();
654          }
655          return getProperty().get(0);
656        }
657
658        /**
659         * @return {@link #component} (A component that this component contains or is made from.)
660         */
661        public List<ManufacturedItemDefinitionComponentComponent> getComponent() { 
662          if (this.component == null)
663            this.component = new ArrayList<ManufacturedItemDefinitionComponentComponent>();
664          return this.component;
665        }
666
667        /**
668         * @return Returns a reference to <code>this</code> for easy method chaining
669         */
670        public ManufacturedItemDefinitionComponentComponent setComponent(List<ManufacturedItemDefinitionComponentComponent> theComponent) { 
671          this.component = theComponent;
672          return this;
673        }
674
675        public boolean hasComponent() { 
676          if (this.component == null)
677            return false;
678          for (ManufacturedItemDefinitionComponentComponent item : this.component)
679            if (!item.isEmpty())
680              return true;
681          return false;
682        }
683
684        public ManufacturedItemDefinitionComponentComponent addComponent() { //3
685          ManufacturedItemDefinitionComponentComponent t = new ManufacturedItemDefinitionComponentComponent();
686          if (this.component == null)
687            this.component = new ArrayList<ManufacturedItemDefinitionComponentComponent>();
688          this.component.add(t);
689          return t;
690        }
691
692        public ManufacturedItemDefinitionComponentComponent addComponent(ManufacturedItemDefinitionComponentComponent t) { //3
693          if (t == null)
694            return this;
695          if (this.component == null)
696            this.component = new ArrayList<ManufacturedItemDefinitionComponentComponent>();
697          this.component.add(t);
698          return this;
699        }
700
701        /**
702         * @return The first repetition of repeating field {@link #component}, creating it if it does not already exist {3}
703         */
704        public ManufacturedItemDefinitionComponentComponent getComponentFirstRep() { 
705          if (getComponent().isEmpty()) {
706            addComponent();
707          }
708          return getComponent().get(0);
709        }
710
711        protected void listChildren(List<Property> children) {
712          super.listChildren(children);
713          children.add(new Property("type", "CodeableConcept", "Defining type of the component e.g. shell, layer, ink.", 0, 1, type));
714          children.add(new Property("function", "CodeableConcept", "The function of this component within the item e.g. delivers active ingredient, masks taste.", 0, java.lang.Integer.MAX_VALUE, function));
715          children.add(new Property("amount", "Quantity", "The measurable amount of substance in this component, expressable in different ways (e.g. by mass or volume).", 0, java.lang.Integer.MAX_VALUE, amount));
716          children.add(new Property("constituent", "", "A reference to an constituent of the manufactured item as a whole, linked here so that its component location within the item can be indicated. This not where the item's ingredient are primarily stated (for which see Ingredient.for or ManufacturedItemDefinition.ingredient).", 0, java.lang.Integer.MAX_VALUE, constituent));
717          children.add(new Property("property", "@ManufacturedItemDefinition.property", "General characteristics of this component.", 0, java.lang.Integer.MAX_VALUE, property));
718          children.add(new Property("component", "@ManufacturedItemDefinition.component", "A component that this component contains or is made from.", 0, java.lang.Integer.MAX_VALUE, component));
719        }
720
721        @Override
722        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
723          switch (_hash) {
724          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "Defining type of the component e.g. shell, layer, ink.", 0, 1, type);
725          case 1380938712: /*function*/  return new Property("function", "CodeableConcept", "The function of this component within the item e.g. delivers active ingredient, masks taste.", 0, java.lang.Integer.MAX_VALUE, function);
726          case -1413853096: /*amount*/  return new Property("amount", "Quantity", "The measurable amount of substance in this component, expressable in different ways (e.g. by mass or volume).", 0, java.lang.Integer.MAX_VALUE, amount);
727          case -1846470364: /*constituent*/  return new Property("constituent", "", "A reference to an constituent of the manufactured item as a whole, linked here so that its component location within the item can be indicated. This not where the item's ingredient are primarily stated (for which see Ingredient.for or ManufacturedItemDefinition.ingredient).", 0, java.lang.Integer.MAX_VALUE, constituent);
728          case -993141291: /*property*/  return new Property("property", "@ManufacturedItemDefinition.property", "General characteristics of this component.", 0, java.lang.Integer.MAX_VALUE, property);
729          case -1399907075: /*component*/  return new Property("component", "@ManufacturedItemDefinition.component", "A component that this component contains or is made from.", 0, java.lang.Integer.MAX_VALUE, component);
730          default: return super.getNamedProperty(_hash, _name, _checkValid);
731          }
732
733        }
734
735      @Override
736      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
737        switch (hash) {
738        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
739        case 1380938712: /*function*/ return this.function == null ? new Base[0] : this.function.toArray(new Base[this.function.size()]); // CodeableConcept
740        case -1413853096: /*amount*/ return this.amount == null ? new Base[0] : this.amount.toArray(new Base[this.amount.size()]); // Quantity
741        case -1846470364: /*constituent*/ return this.constituent == null ? new Base[0] : this.constituent.toArray(new Base[this.constituent.size()]); // ManufacturedItemDefinitionComponentConstituentComponent
742        case -993141291: /*property*/ return this.property == null ? new Base[0] : this.property.toArray(new Base[this.property.size()]); // ManufacturedItemDefinitionPropertyComponent
743        case -1399907075: /*component*/ return this.component == null ? new Base[0] : this.component.toArray(new Base[this.component.size()]); // ManufacturedItemDefinitionComponentComponent
744        default: return super.getProperty(hash, name, checkValid);
745        }
746
747      }
748
749      @Override
750      public Base setProperty(int hash, String name, Base value) throws FHIRException {
751        switch (hash) {
752        case 3575610: // type
753          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
754          return value;
755        case 1380938712: // function
756          this.getFunction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
757          return value;
758        case -1413853096: // amount
759          this.getAmount().add(TypeConvertor.castToQuantity(value)); // Quantity
760          return value;
761        case -1846470364: // constituent
762          this.getConstituent().add((ManufacturedItemDefinitionComponentConstituentComponent) value); // ManufacturedItemDefinitionComponentConstituentComponent
763          return value;
764        case -993141291: // property
765          this.getProperty().add((ManufacturedItemDefinitionPropertyComponent) value); // ManufacturedItemDefinitionPropertyComponent
766          return value;
767        case -1399907075: // component
768          this.getComponent().add((ManufacturedItemDefinitionComponentComponent) value); // ManufacturedItemDefinitionComponentComponent
769          return value;
770        default: return super.setProperty(hash, name, value);
771        }
772
773      }
774
775      @Override
776      public Base setProperty(String name, Base value) throws FHIRException {
777        if (name.equals("type")) {
778          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
779        } else if (name.equals("function")) {
780          this.getFunction().add(TypeConvertor.castToCodeableConcept(value));
781        } else if (name.equals("amount")) {
782          this.getAmount().add(TypeConvertor.castToQuantity(value));
783        } else if (name.equals("constituent")) {
784          this.getConstituent().add((ManufacturedItemDefinitionComponentConstituentComponent) value);
785        } else if (name.equals("property")) {
786          this.getProperty().add((ManufacturedItemDefinitionPropertyComponent) value);
787        } else if (name.equals("component")) {
788          this.getComponent().add((ManufacturedItemDefinitionComponentComponent) value);
789        } else
790          return super.setProperty(name, value);
791        return value;
792      }
793
794      @Override
795      public Base makeProperty(int hash, String name) throws FHIRException {
796        switch (hash) {
797        case 3575610:  return getType();
798        case 1380938712:  return addFunction(); 
799        case -1413853096:  return addAmount(); 
800        case -1846470364:  return addConstituent(); 
801        case -993141291:  return addProperty(); 
802        case -1399907075:  return addComponent(); 
803        default: return super.makeProperty(hash, name);
804        }
805
806      }
807
808      @Override
809      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
810        switch (hash) {
811        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
812        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
813        case -1413853096: /*amount*/ return new String[] {"Quantity"};
814        case -1846470364: /*constituent*/ return new String[] {};
815        case -993141291: /*property*/ return new String[] {"@ManufacturedItemDefinition.property"};
816        case -1399907075: /*component*/ return new String[] {"@ManufacturedItemDefinition.component"};
817        default: return super.getTypesForProperty(hash, name);
818        }
819
820      }
821
822      @Override
823      public Base addChild(String name) throws FHIRException {
824        if (name.equals("type")) {
825          this.type = new CodeableConcept();
826          return this.type;
827        }
828        else if (name.equals("function")) {
829          return addFunction();
830        }
831        else if (name.equals("amount")) {
832          return addAmount();
833        }
834        else if (name.equals("constituent")) {
835          return addConstituent();
836        }
837        else if (name.equals("property")) {
838          return addProperty();
839        }
840        else if (name.equals("component")) {
841          return addComponent();
842        }
843        else
844          return super.addChild(name);
845      }
846
847      public ManufacturedItemDefinitionComponentComponent copy() {
848        ManufacturedItemDefinitionComponentComponent dst = new ManufacturedItemDefinitionComponentComponent();
849        copyValues(dst);
850        return dst;
851      }
852
853      public void copyValues(ManufacturedItemDefinitionComponentComponent dst) {
854        super.copyValues(dst);
855        dst.type = type == null ? null : type.copy();
856        if (function != null) {
857          dst.function = new ArrayList<CodeableConcept>();
858          for (CodeableConcept i : function)
859            dst.function.add(i.copy());
860        };
861        if (amount != null) {
862          dst.amount = new ArrayList<Quantity>();
863          for (Quantity i : amount)
864            dst.amount.add(i.copy());
865        };
866        if (constituent != null) {
867          dst.constituent = new ArrayList<ManufacturedItemDefinitionComponentConstituentComponent>();
868          for (ManufacturedItemDefinitionComponentConstituentComponent i : constituent)
869            dst.constituent.add(i.copy());
870        };
871        if (property != null) {
872          dst.property = new ArrayList<ManufacturedItemDefinitionPropertyComponent>();
873          for (ManufacturedItemDefinitionPropertyComponent i : property)
874            dst.property.add(i.copy());
875        };
876        if (component != null) {
877          dst.component = new ArrayList<ManufacturedItemDefinitionComponentComponent>();
878          for (ManufacturedItemDefinitionComponentComponent i : component)
879            dst.component.add(i.copy());
880        };
881      }
882
883      @Override
884      public boolean equalsDeep(Base other_) {
885        if (!super.equalsDeep(other_))
886          return false;
887        if (!(other_ instanceof ManufacturedItemDefinitionComponentComponent))
888          return false;
889        ManufacturedItemDefinitionComponentComponent o = (ManufacturedItemDefinitionComponentComponent) other_;
890        return compareDeep(type, o.type, true) && compareDeep(function, o.function, true) && compareDeep(amount, o.amount, true)
891           && compareDeep(constituent, o.constituent, true) && compareDeep(property, o.property, true) && compareDeep(component, o.component, true)
892          ;
893      }
894
895      @Override
896      public boolean equalsShallow(Base other_) {
897        if (!super.equalsShallow(other_))
898          return false;
899        if (!(other_ instanceof ManufacturedItemDefinitionComponentComponent))
900          return false;
901        ManufacturedItemDefinitionComponentComponent o = (ManufacturedItemDefinitionComponentComponent) other_;
902        return true;
903      }
904
905      public boolean isEmpty() {
906        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, function, amount, constituent
907          , property, component);
908      }
909
910  public String fhirType() {
911    return "ManufacturedItemDefinition.component";
912
913  }
914
915  }
916
917    @Block()
918    public static class ManufacturedItemDefinitionComponentConstituentComponent extends BackboneElement implements IBaseBackboneElement {
919        /**
920         * The measurable amount of this constituent in this component, expressable in different ways (e.g. by mass or volume).
921         */
922        @Child(name = "amount", type = {Quantity.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
923        @Description(shortDefinition="The measurable amount of this constituent in this component, expressable in different ways (e.g. by mass or volume)", formalDefinition="The measurable amount of this constituent in this component, expressable in different ways (e.g. by mass or volume)." )
924        protected List<Quantity> amount;
925
926        /**
927         * The type of location of the constituent within this component e.g. intragranular, blend.
928         */
929        @Child(name = "location", type = {CodeableConcept.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
930        @Description(shortDefinition="The type of location of the constituent within this component e.g. intragranular, blend", formalDefinition="The type of location of the constituent within this component e.g. intragranular, blend." )
931        protected List<CodeableConcept> location;
932
933        /**
934         * The function of this constituent within the component e.g. binder.
935         */
936        @Child(name = "function", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
937        @Description(shortDefinition="The function of this constituent within the component e.g. binder", formalDefinition="The function of this constituent within the component e.g. binder." )
938        protected List<CodeableConcept> function;
939
940        /**
941         * An ingredient that this component is the location for in this manufactured item. The component is physically made of this ingredient (and possibly others), rather than just being a container for it.
942         */
943        @Child(name = "locationForIngredient", type = {CodeableReference.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
944        @Description(shortDefinition="An ingredient that this component is the location of in this manufactured item. The component is physically made of this ingredient (and possibly others), rather than just being a container for it", formalDefinition="An ingredient that this component is the location for in this manufactured item. The component is physically made of this ingredient (and possibly others), rather than just being a container for it." )
945        protected List<CodeableReference> locationForIngredient;
946
947        private static final long serialVersionUID = -33501583L;
948
949    /**
950     * Constructor
951     */
952      public ManufacturedItemDefinitionComponentConstituentComponent() {
953        super();
954      }
955
956        /**
957         * @return {@link #amount} (The measurable amount of this constituent in this component, expressable in different ways (e.g. by mass or volume).)
958         */
959        public List<Quantity> getAmount() { 
960          if (this.amount == null)
961            this.amount = new ArrayList<Quantity>();
962          return this.amount;
963        }
964
965        /**
966         * @return Returns a reference to <code>this</code> for easy method chaining
967         */
968        public ManufacturedItemDefinitionComponentConstituentComponent setAmount(List<Quantity> theAmount) { 
969          this.amount = theAmount;
970          return this;
971        }
972
973        public boolean hasAmount() { 
974          if (this.amount == null)
975            return false;
976          for (Quantity item : this.amount)
977            if (!item.isEmpty())
978              return true;
979          return false;
980        }
981
982        public Quantity addAmount() { //3
983          Quantity t = new Quantity();
984          if (this.amount == null)
985            this.amount = new ArrayList<Quantity>();
986          this.amount.add(t);
987          return t;
988        }
989
990        public ManufacturedItemDefinitionComponentConstituentComponent addAmount(Quantity t) { //3
991          if (t == null)
992            return this;
993          if (this.amount == null)
994            this.amount = new ArrayList<Quantity>();
995          this.amount.add(t);
996          return this;
997        }
998
999        /**
1000         * @return The first repetition of repeating field {@link #amount}, creating it if it does not already exist {3}
1001         */
1002        public Quantity getAmountFirstRep() { 
1003          if (getAmount().isEmpty()) {
1004            addAmount();
1005          }
1006          return getAmount().get(0);
1007        }
1008
1009        /**
1010         * @return {@link #location} (The type of location of the constituent within this component e.g. intragranular, blend.)
1011         */
1012        public List<CodeableConcept> getLocation() { 
1013          if (this.location == null)
1014            this.location = new ArrayList<CodeableConcept>();
1015          return this.location;
1016        }
1017
1018        /**
1019         * @return Returns a reference to <code>this</code> for easy method chaining
1020         */
1021        public ManufacturedItemDefinitionComponentConstituentComponent setLocation(List<CodeableConcept> theLocation) { 
1022          this.location = theLocation;
1023          return this;
1024        }
1025
1026        public boolean hasLocation() { 
1027          if (this.location == null)
1028            return false;
1029          for (CodeableConcept item : this.location)
1030            if (!item.isEmpty())
1031              return true;
1032          return false;
1033        }
1034
1035        public CodeableConcept addLocation() { //3
1036          CodeableConcept t = new CodeableConcept();
1037          if (this.location == null)
1038            this.location = new ArrayList<CodeableConcept>();
1039          this.location.add(t);
1040          return t;
1041        }
1042
1043        public ManufacturedItemDefinitionComponentConstituentComponent addLocation(CodeableConcept t) { //3
1044          if (t == null)
1045            return this;
1046          if (this.location == null)
1047            this.location = new ArrayList<CodeableConcept>();
1048          this.location.add(t);
1049          return this;
1050        }
1051
1052        /**
1053         * @return The first repetition of repeating field {@link #location}, creating it if it does not already exist {3}
1054         */
1055        public CodeableConcept getLocationFirstRep() { 
1056          if (getLocation().isEmpty()) {
1057            addLocation();
1058          }
1059          return getLocation().get(0);
1060        }
1061
1062        /**
1063         * @return {@link #function} (The function of this constituent within the component e.g. binder.)
1064         */
1065        public List<CodeableConcept> getFunction() { 
1066          if (this.function == null)
1067            this.function = new ArrayList<CodeableConcept>();
1068          return this.function;
1069        }
1070
1071        /**
1072         * @return Returns a reference to <code>this</code> for easy method chaining
1073         */
1074        public ManufacturedItemDefinitionComponentConstituentComponent setFunction(List<CodeableConcept> theFunction) { 
1075          this.function = theFunction;
1076          return this;
1077        }
1078
1079        public boolean hasFunction() { 
1080          if (this.function == null)
1081            return false;
1082          for (CodeableConcept item : this.function)
1083            if (!item.isEmpty())
1084              return true;
1085          return false;
1086        }
1087
1088        public CodeableConcept addFunction() { //3
1089          CodeableConcept t = new CodeableConcept();
1090          if (this.function == null)
1091            this.function = new ArrayList<CodeableConcept>();
1092          this.function.add(t);
1093          return t;
1094        }
1095
1096        public ManufacturedItemDefinitionComponentConstituentComponent addFunction(CodeableConcept t) { //3
1097          if (t == null)
1098            return this;
1099          if (this.function == null)
1100            this.function = new ArrayList<CodeableConcept>();
1101          this.function.add(t);
1102          return this;
1103        }
1104
1105        /**
1106         * @return The first repetition of repeating field {@link #function}, creating it if it does not already exist {3}
1107         */
1108        public CodeableConcept getFunctionFirstRep() { 
1109          if (getFunction().isEmpty()) {
1110            addFunction();
1111          }
1112          return getFunction().get(0);
1113        }
1114
1115        /**
1116         * @return {@link #locationForIngredient} (An ingredient that this component is the location for in this manufactured item. The component is physically made of this ingredient (and possibly others), rather than just being a container for it.)
1117         */
1118        public List<CodeableReference> getLocationForIngredient() { 
1119          if (this.locationForIngredient == null)
1120            this.locationForIngredient = new ArrayList<CodeableReference>();
1121          return this.locationForIngredient;
1122        }
1123
1124        /**
1125         * @return Returns a reference to <code>this</code> for easy method chaining
1126         */
1127        public ManufacturedItemDefinitionComponentConstituentComponent setLocationForIngredient(List<CodeableReference> theLocationForIngredient) { 
1128          this.locationForIngredient = theLocationForIngredient;
1129          return this;
1130        }
1131
1132        public boolean hasLocationForIngredient() { 
1133          if (this.locationForIngredient == null)
1134            return false;
1135          for (CodeableReference item : this.locationForIngredient)
1136            if (!item.isEmpty())
1137              return true;
1138          return false;
1139        }
1140
1141        public CodeableReference addLocationForIngredient() { //3
1142          CodeableReference t = new CodeableReference();
1143          if (this.locationForIngredient == null)
1144            this.locationForIngredient = new ArrayList<CodeableReference>();
1145          this.locationForIngredient.add(t);
1146          return t;
1147        }
1148
1149        public ManufacturedItemDefinitionComponentConstituentComponent addLocationForIngredient(CodeableReference t) { //3
1150          if (t == null)
1151            return this;
1152          if (this.locationForIngredient == null)
1153            this.locationForIngredient = new ArrayList<CodeableReference>();
1154          this.locationForIngredient.add(t);
1155          return this;
1156        }
1157
1158        /**
1159         * @return The first repetition of repeating field {@link #locationForIngredient}, creating it if it does not already exist {3}
1160         */
1161        public CodeableReference getLocationForIngredientFirstRep() { 
1162          if (getLocationForIngredient().isEmpty()) {
1163            addLocationForIngredient();
1164          }
1165          return getLocationForIngredient().get(0);
1166        }
1167
1168        protected void listChildren(List<Property> children) {
1169          super.listChildren(children);
1170          children.add(new Property("amount", "Quantity", "The measurable amount of this constituent in this component, expressable in different ways (e.g. by mass or volume).", 0, java.lang.Integer.MAX_VALUE, amount));
1171          children.add(new Property("location", "CodeableConcept", "The type of location of the constituent within this component e.g. intragranular, blend.", 0, java.lang.Integer.MAX_VALUE, location));
1172          children.add(new Property("function", "CodeableConcept", "The function of this constituent within the component e.g. binder.", 0, java.lang.Integer.MAX_VALUE, function));
1173          children.add(new Property("locationForIngredient", "CodeableReference(Ingredient)", "An ingredient that this component is the location for in this manufactured item. The component is physically made of this ingredient (and possibly others), rather than just being a container for it.", 0, java.lang.Integer.MAX_VALUE, locationForIngredient));
1174        }
1175
1176        @Override
1177        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1178          switch (_hash) {
1179          case -1413853096: /*amount*/  return new Property("amount", "Quantity", "The measurable amount of this constituent in this component, expressable in different ways (e.g. by mass or volume).", 0, java.lang.Integer.MAX_VALUE, amount);
1180          case 1901043637: /*location*/  return new Property("location", "CodeableConcept", "The type of location of the constituent within this component e.g. intragranular, blend.", 0, java.lang.Integer.MAX_VALUE, location);
1181          case 1380938712: /*function*/  return new Property("function", "CodeableConcept", "The function of this constituent within the component e.g. binder.", 0, java.lang.Integer.MAX_VALUE, function);
1182          case 525382085: /*locationForIngredient*/  return new Property("locationForIngredient", "CodeableReference(Ingredient)", "An ingredient that this component is the location for in this manufactured item. The component is physically made of this ingredient (and possibly others), rather than just being a container for it.", 0, java.lang.Integer.MAX_VALUE, locationForIngredient);
1183          default: return super.getNamedProperty(_hash, _name, _checkValid);
1184          }
1185
1186        }
1187
1188      @Override
1189      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1190        switch (hash) {
1191        case -1413853096: /*amount*/ return this.amount == null ? new Base[0] : this.amount.toArray(new Base[this.amount.size()]); // Quantity
1192        case 1901043637: /*location*/ return this.location == null ? new Base[0] : this.location.toArray(new Base[this.location.size()]); // CodeableConcept
1193        case 1380938712: /*function*/ return this.function == null ? new Base[0] : this.function.toArray(new Base[this.function.size()]); // CodeableConcept
1194        case 525382085: /*locationForIngredient*/ return this.locationForIngredient == null ? new Base[0] : this.locationForIngredient.toArray(new Base[this.locationForIngredient.size()]); // CodeableReference
1195        default: return super.getProperty(hash, name, checkValid);
1196        }
1197
1198      }
1199
1200      @Override
1201      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1202        switch (hash) {
1203        case -1413853096: // amount
1204          this.getAmount().add(TypeConvertor.castToQuantity(value)); // Quantity
1205          return value;
1206        case 1901043637: // location
1207          this.getLocation().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1208          return value;
1209        case 1380938712: // function
1210          this.getFunction().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1211          return value;
1212        case 525382085: // locationForIngredient
1213          this.getLocationForIngredient().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
1214          return value;
1215        default: return super.setProperty(hash, name, value);
1216        }
1217
1218      }
1219
1220      @Override
1221      public Base setProperty(String name, Base value) throws FHIRException {
1222        if (name.equals("amount")) {
1223          this.getAmount().add(TypeConvertor.castToQuantity(value));
1224        } else if (name.equals("location")) {
1225          this.getLocation().add(TypeConvertor.castToCodeableConcept(value));
1226        } else if (name.equals("function")) {
1227          this.getFunction().add(TypeConvertor.castToCodeableConcept(value));
1228        } else if (name.equals("locationForIngredient")) {
1229          this.getLocationForIngredient().add(TypeConvertor.castToCodeableReference(value));
1230        } else
1231          return super.setProperty(name, value);
1232        return value;
1233      }
1234
1235      @Override
1236      public Base makeProperty(int hash, String name) throws FHIRException {
1237        switch (hash) {
1238        case -1413853096:  return addAmount(); 
1239        case 1901043637:  return addLocation(); 
1240        case 1380938712:  return addFunction(); 
1241        case 525382085:  return addLocationForIngredient(); 
1242        default: return super.makeProperty(hash, name);
1243        }
1244
1245      }
1246
1247      @Override
1248      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1249        switch (hash) {
1250        case -1413853096: /*amount*/ return new String[] {"Quantity"};
1251        case 1901043637: /*location*/ return new String[] {"CodeableConcept"};
1252        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
1253        case 525382085: /*locationForIngredient*/ return new String[] {"CodeableReference"};
1254        default: return super.getTypesForProperty(hash, name);
1255        }
1256
1257      }
1258
1259      @Override
1260      public Base addChild(String name) throws FHIRException {
1261        if (name.equals("amount")) {
1262          return addAmount();
1263        }
1264        else if (name.equals("location")) {
1265          return addLocation();
1266        }
1267        else if (name.equals("function")) {
1268          return addFunction();
1269        }
1270        else if (name.equals("locationForIngredient")) {
1271          return addLocationForIngredient();
1272        }
1273        else
1274          return super.addChild(name);
1275      }
1276
1277      public ManufacturedItemDefinitionComponentConstituentComponent copy() {
1278        ManufacturedItemDefinitionComponentConstituentComponent dst = new ManufacturedItemDefinitionComponentConstituentComponent();
1279        copyValues(dst);
1280        return dst;
1281      }
1282
1283      public void copyValues(ManufacturedItemDefinitionComponentConstituentComponent dst) {
1284        super.copyValues(dst);
1285        if (amount != null) {
1286          dst.amount = new ArrayList<Quantity>();
1287          for (Quantity i : amount)
1288            dst.amount.add(i.copy());
1289        };
1290        if (location != null) {
1291          dst.location = new ArrayList<CodeableConcept>();
1292          for (CodeableConcept i : location)
1293            dst.location.add(i.copy());
1294        };
1295        if (function != null) {
1296          dst.function = new ArrayList<CodeableConcept>();
1297          for (CodeableConcept i : function)
1298            dst.function.add(i.copy());
1299        };
1300        if (locationForIngredient != null) {
1301          dst.locationForIngredient = new ArrayList<CodeableReference>();
1302          for (CodeableReference i : locationForIngredient)
1303            dst.locationForIngredient.add(i.copy());
1304        };
1305      }
1306
1307      @Override
1308      public boolean equalsDeep(Base other_) {
1309        if (!super.equalsDeep(other_))
1310          return false;
1311        if (!(other_ instanceof ManufacturedItemDefinitionComponentConstituentComponent))
1312          return false;
1313        ManufacturedItemDefinitionComponentConstituentComponent o = (ManufacturedItemDefinitionComponentConstituentComponent) other_;
1314        return compareDeep(amount, o.amount, true) && compareDeep(location, o.location, true) && compareDeep(function, o.function, true)
1315           && compareDeep(locationForIngredient, o.locationForIngredient, true);
1316      }
1317
1318      @Override
1319      public boolean equalsShallow(Base other_) {
1320        if (!super.equalsShallow(other_))
1321          return false;
1322        if (!(other_ instanceof ManufacturedItemDefinitionComponentConstituentComponent))
1323          return false;
1324        ManufacturedItemDefinitionComponentConstituentComponent o = (ManufacturedItemDefinitionComponentConstituentComponent) other_;
1325        return true;
1326      }
1327
1328      public boolean isEmpty() {
1329        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(amount, location, function
1330          , locationForIngredient);
1331      }
1332
1333  public String fhirType() {
1334    return "ManufacturedItemDefinition.component.constituent";
1335
1336  }
1337
1338  }
1339
1340    /**
1341     * Unique identifier.
1342     */
1343    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1344    @Description(shortDefinition="Unique identifier", formalDefinition="Unique identifier." )
1345    protected List<Identifier> identifier;
1346
1347    /**
1348     * The status of this item. Enables tracking the life-cycle of the content.
1349     */
1350    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
1351    @Description(shortDefinition="draft | active | retired | unknown", formalDefinition="The status of this item. Enables tracking the life-cycle of the content." )
1352    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/publication-status")
1353    protected Enumeration<PublicationStatus> status;
1354
1355    /**
1356     * A descriptive name applied to this item.
1357     */
1358    @Child(name = "name", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=true)
1359    @Description(shortDefinition="A descriptive name applied to this item", formalDefinition="A descriptive name applied to this item." )
1360    protected StringType name;
1361
1362    /**
1363     * Dose form as manufactured and before any transformation into the pharmaceutical product.
1364     */
1365    @Child(name = "manufacturedDoseForm", type = {CodeableConcept.class}, order=3, min=1, max=1, modifier=false, summary=true)
1366    @Description(shortDefinition="Dose form as manufactured (before any necessary transformation)", formalDefinition="Dose form as manufactured and before any transformation into the pharmaceutical product." )
1367    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/manufactured-dose-form")
1368    protected CodeableConcept manufacturedDoseForm;
1369
1370    /**
1371     * The ?real world? units in which the quantity of the manufactured item is described.
1372     */
1373    @Child(name = "unitOfPresentation", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=true)
1374    @Description(shortDefinition="The ?real world? units in which the quantity of the item is described", formalDefinition="The ?real world? units in which the quantity of the manufactured item is described." )
1375    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/unit-of-presentation")
1376    protected CodeableConcept unitOfPresentation;
1377
1378    /**
1379     * Manufacturer of the item, one of several possible.
1380     */
1381    @Child(name = "manufacturer", type = {Organization.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1382    @Description(shortDefinition="Manufacturer of the item, one of several possible", formalDefinition="Manufacturer of the item, one of several possible." )
1383    protected List<Reference> manufacturer;
1384
1385    /**
1386     * Allows specifying that an item is on the market for sale, or that it is not available, and the dates and locations associated.
1387     */
1388    @Child(name = "marketingStatus", type = {MarketingStatus.class}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1389    @Description(shortDefinition="Allows specifying that an item is on the market for sale, or that it is not available, and the dates and locations associated", formalDefinition="Allows specifying that an item is on the market for sale, or that it is not available, and the dates and locations associated." )
1390    protected List<MarketingStatus> marketingStatus;
1391
1392    /**
1393     * The ingredients of this manufactured item. This is only needed if the ingredients are not specified by incoming references from the Ingredient resource.
1394     */
1395    @Child(name = "ingredient", type = {CodeableConcept.class}, order=7, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1396    @Description(shortDefinition="The ingredients of this manufactured item. Only needed if these are not specified by incoming references from the Ingredient resource", formalDefinition="The ingredients of this manufactured item. This is only needed if the ingredients are not specified by incoming references from the Ingredient resource." )
1397    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/substance-codes")
1398    protected List<CodeableConcept> ingredient;
1399
1400    /**
1401     * General characteristics of this item.
1402     */
1403    @Child(name = "property", type = {}, order=8, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1404    @Description(shortDefinition="General characteristics of this item", formalDefinition="General characteristics of this item." )
1405    protected List<ManufacturedItemDefinitionPropertyComponent> property;
1406
1407    /**
1408     * Physical parts of the manufactured item, that it is intrisically made from. This is distinct from the ingredients that are part of its chemical makeup.
1409     */
1410    @Child(name = "component", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1411    @Description(shortDefinition="Physical parts of the manufactured item, that it is intrisically made from. This is distinct from the ingredients that are part of its chemical makeup", formalDefinition="Physical parts of the manufactured item, that it is intrisically made from. This is distinct from the ingredients that are part of its chemical makeup." )
1412    protected List<ManufacturedItemDefinitionComponentComponent> component;
1413
1414    private static final long serialVersionUID = 516510494L;
1415
1416  /**
1417   * Constructor
1418   */
1419    public ManufacturedItemDefinition() {
1420      super();
1421    }
1422
1423  /**
1424   * Constructor
1425   */
1426    public ManufacturedItemDefinition(PublicationStatus status, CodeableConcept manufacturedDoseForm) {
1427      super();
1428      this.setStatus(status);
1429      this.setManufacturedDoseForm(manufacturedDoseForm);
1430    }
1431
1432    /**
1433     * @return {@link #identifier} (Unique identifier.)
1434     */
1435    public List<Identifier> getIdentifier() { 
1436      if (this.identifier == null)
1437        this.identifier = new ArrayList<Identifier>();
1438      return this.identifier;
1439    }
1440
1441    /**
1442     * @return Returns a reference to <code>this</code> for easy method chaining
1443     */
1444    public ManufacturedItemDefinition setIdentifier(List<Identifier> theIdentifier) { 
1445      this.identifier = theIdentifier;
1446      return this;
1447    }
1448
1449    public boolean hasIdentifier() { 
1450      if (this.identifier == null)
1451        return false;
1452      for (Identifier item : this.identifier)
1453        if (!item.isEmpty())
1454          return true;
1455      return false;
1456    }
1457
1458    public Identifier addIdentifier() { //3
1459      Identifier t = new Identifier();
1460      if (this.identifier == null)
1461        this.identifier = new ArrayList<Identifier>();
1462      this.identifier.add(t);
1463      return t;
1464    }
1465
1466    public ManufacturedItemDefinition addIdentifier(Identifier t) { //3
1467      if (t == null)
1468        return this;
1469      if (this.identifier == null)
1470        this.identifier = new ArrayList<Identifier>();
1471      this.identifier.add(t);
1472      return this;
1473    }
1474
1475    /**
1476     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1477     */
1478    public Identifier getIdentifierFirstRep() { 
1479      if (getIdentifier().isEmpty()) {
1480        addIdentifier();
1481      }
1482      return getIdentifier().get(0);
1483    }
1484
1485    /**
1486     * @return {@link #status} (The status of this item. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1487     */
1488    public Enumeration<PublicationStatus> getStatusElement() { 
1489      if (this.status == null)
1490        if (Configuration.errorOnAutoCreate())
1491          throw new Error("Attempt to auto-create ManufacturedItemDefinition.status");
1492        else if (Configuration.doAutoCreate())
1493          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
1494      return this.status;
1495    }
1496
1497    public boolean hasStatusElement() { 
1498      return this.status != null && !this.status.isEmpty();
1499    }
1500
1501    public boolean hasStatus() { 
1502      return this.status != null && !this.status.isEmpty();
1503    }
1504
1505    /**
1506     * @param value {@link #status} (The status of this item. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1507     */
1508    public ManufacturedItemDefinition setStatusElement(Enumeration<PublicationStatus> value) { 
1509      this.status = value;
1510      return this;
1511    }
1512
1513    /**
1514     * @return The status of this item. Enables tracking the life-cycle of the content.
1515     */
1516    public PublicationStatus getStatus() { 
1517      return this.status == null ? null : this.status.getValue();
1518    }
1519
1520    /**
1521     * @param value The status of this item. Enables tracking the life-cycle of the content.
1522     */
1523    public ManufacturedItemDefinition setStatus(PublicationStatus value) { 
1524        if (this.status == null)
1525          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
1526        this.status.setValue(value);
1527      return this;
1528    }
1529
1530    /**
1531     * @return {@link #name} (A descriptive name applied to this item.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1532     */
1533    public StringType getNameElement() { 
1534      if (this.name == null)
1535        if (Configuration.errorOnAutoCreate())
1536          throw new Error("Attempt to auto-create ManufacturedItemDefinition.name");
1537        else if (Configuration.doAutoCreate())
1538          this.name = new StringType(); // bb
1539      return this.name;
1540    }
1541
1542    public boolean hasNameElement() { 
1543      return this.name != null && !this.name.isEmpty();
1544    }
1545
1546    public boolean hasName() { 
1547      return this.name != null && !this.name.isEmpty();
1548    }
1549
1550    /**
1551     * @param value {@link #name} (A descriptive name applied to this item.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
1552     */
1553    public ManufacturedItemDefinition setNameElement(StringType value) { 
1554      this.name = value;
1555      return this;
1556    }
1557
1558    /**
1559     * @return A descriptive name applied to this item.
1560     */
1561    public String getName() { 
1562      return this.name == null ? null : this.name.getValue();
1563    }
1564
1565    /**
1566     * @param value A descriptive name applied to this item.
1567     */
1568    public ManufacturedItemDefinition setName(String value) { 
1569      if (Utilities.noString(value))
1570        this.name = null;
1571      else {
1572        if (this.name == null)
1573          this.name = new StringType();
1574        this.name.setValue(value);
1575      }
1576      return this;
1577    }
1578
1579    /**
1580     * @return {@link #manufacturedDoseForm} (Dose form as manufactured and before any transformation into the pharmaceutical product.)
1581     */
1582    public CodeableConcept getManufacturedDoseForm() { 
1583      if (this.manufacturedDoseForm == null)
1584        if (Configuration.errorOnAutoCreate())
1585          throw new Error("Attempt to auto-create ManufacturedItemDefinition.manufacturedDoseForm");
1586        else if (Configuration.doAutoCreate())
1587          this.manufacturedDoseForm = new CodeableConcept(); // cc
1588      return this.manufacturedDoseForm;
1589    }
1590
1591    public boolean hasManufacturedDoseForm() { 
1592      return this.manufacturedDoseForm != null && !this.manufacturedDoseForm.isEmpty();
1593    }
1594
1595    /**
1596     * @param value {@link #manufacturedDoseForm} (Dose form as manufactured and before any transformation into the pharmaceutical product.)
1597     */
1598    public ManufacturedItemDefinition setManufacturedDoseForm(CodeableConcept value) { 
1599      this.manufacturedDoseForm = value;
1600      return this;
1601    }
1602
1603    /**
1604     * @return {@link #unitOfPresentation} (The ?real world? units in which the quantity of the manufactured item is described.)
1605     */
1606    public CodeableConcept getUnitOfPresentation() { 
1607      if (this.unitOfPresentation == null)
1608        if (Configuration.errorOnAutoCreate())
1609          throw new Error("Attempt to auto-create ManufacturedItemDefinition.unitOfPresentation");
1610        else if (Configuration.doAutoCreate())
1611          this.unitOfPresentation = new CodeableConcept(); // cc
1612      return this.unitOfPresentation;
1613    }
1614
1615    public boolean hasUnitOfPresentation() { 
1616      return this.unitOfPresentation != null && !this.unitOfPresentation.isEmpty();
1617    }
1618
1619    /**
1620     * @param value {@link #unitOfPresentation} (The ?real world? units in which the quantity of the manufactured item is described.)
1621     */
1622    public ManufacturedItemDefinition setUnitOfPresentation(CodeableConcept value) { 
1623      this.unitOfPresentation = value;
1624      return this;
1625    }
1626
1627    /**
1628     * @return {@link #manufacturer} (Manufacturer of the item, one of several possible.)
1629     */
1630    public List<Reference> getManufacturer() { 
1631      if (this.manufacturer == null)
1632        this.manufacturer = new ArrayList<Reference>();
1633      return this.manufacturer;
1634    }
1635
1636    /**
1637     * @return Returns a reference to <code>this</code> for easy method chaining
1638     */
1639    public ManufacturedItemDefinition setManufacturer(List<Reference> theManufacturer) { 
1640      this.manufacturer = theManufacturer;
1641      return this;
1642    }
1643
1644    public boolean hasManufacturer() { 
1645      if (this.manufacturer == null)
1646        return false;
1647      for (Reference item : this.manufacturer)
1648        if (!item.isEmpty())
1649          return true;
1650      return false;
1651    }
1652
1653    public Reference addManufacturer() { //3
1654      Reference t = new Reference();
1655      if (this.manufacturer == null)
1656        this.manufacturer = new ArrayList<Reference>();
1657      this.manufacturer.add(t);
1658      return t;
1659    }
1660
1661    public ManufacturedItemDefinition addManufacturer(Reference t) { //3
1662      if (t == null)
1663        return this;
1664      if (this.manufacturer == null)
1665        this.manufacturer = new ArrayList<Reference>();
1666      this.manufacturer.add(t);
1667      return this;
1668    }
1669
1670    /**
1671     * @return The first repetition of repeating field {@link #manufacturer}, creating it if it does not already exist {3}
1672     */
1673    public Reference getManufacturerFirstRep() { 
1674      if (getManufacturer().isEmpty()) {
1675        addManufacturer();
1676      }
1677      return getManufacturer().get(0);
1678    }
1679
1680    /**
1681     * @return {@link #marketingStatus} (Allows specifying that an item is on the market for sale, or that it is not available, and the dates and locations associated.)
1682     */
1683    public List<MarketingStatus> getMarketingStatus() { 
1684      if (this.marketingStatus == null)
1685        this.marketingStatus = new ArrayList<MarketingStatus>();
1686      return this.marketingStatus;
1687    }
1688
1689    /**
1690     * @return Returns a reference to <code>this</code> for easy method chaining
1691     */
1692    public ManufacturedItemDefinition setMarketingStatus(List<MarketingStatus> theMarketingStatus) { 
1693      this.marketingStatus = theMarketingStatus;
1694      return this;
1695    }
1696
1697    public boolean hasMarketingStatus() { 
1698      if (this.marketingStatus == null)
1699        return false;
1700      for (MarketingStatus item : this.marketingStatus)
1701        if (!item.isEmpty())
1702          return true;
1703      return false;
1704    }
1705
1706    public MarketingStatus addMarketingStatus() { //3
1707      MarketingStatus t = new MarketingStatus();
1708      if (this.marketingStatus == null)
1709        this.marketingStatus = new ArrayList<MarketingStatus>();
1710      this.marketingStatus.add(t);
1711      return t;
1712    }
1713
1714    public ManufacturedItemDefinition addMarketingStatus(MarketingStatus t) { //3
1715      if (t == null)
1716        return this;
1717      if (this.marketingStatus == null)
1718        this.marketingStatus = new ArrayList<MarketingStatus>();
1719      this.marketingStatus.add(t);
1720      return this;
1721    }
1722
1723    /**
1724     * @return The first repetition of repeating field {@link #marketingStatus}, creating it if it does not already exist {3}
1725     */
1726    public MarketingStatus getMarketingStatusFirstRep() { 
1727      if (getMarketingStatus().isEmpty()) {
1728        addMarketingStatus();
1729      }
1730      return getMarketingStatus().get(0);
1731    }
1732
1733    /**
1734     * @return {@link #ingredient} (The ingredients of this manufactured item. This is only needed if the ingredients are not specified by incoming references from the Ingredient resource.)
1735     */
1736    public List<CodeableConcept> getIngredient() { 
1737      if (this.ingredient == null)
1738        this.ingredient = new ArrayList<CodeableConcept>();
1739      return this.ingredient;
1740    }
1741
1742    /**
1743     * @return Returns a reference to <code>this</code> for easy method chaining
1744     */
1745    public ManufacturedItemDefinition setIngredient(List<CodeableConcept> theIngredient) { 
1746      this.ingredient = theIngredient;
1747      return this;
1748    }
1749
1750    public boolean hasIngredient() { 
1751      if (this.ingredient == null)
1752        return false;
1753      for (CodeableConcept item : this.ingredient)
1754        if (!item.isEmpty())
1755          return true;
1756      return false;
1757    }
1758
1759    public CodeableConcept addIngredient() { //3
1760      CodeableConcept t = new CodeableConcept();
1761      if (this.ingredient == null)
1762        this.ingredient = new ArrayList<CodeableConcept>();
1763      this.ingredient.add(t);
1764      return t;
1765    }
1766
1767    public ManufacturedItemDefinition addIngredient(CodeableConcept t) { //3
1768      if (t == null)
1769        return this;
1770      if (this.ingredient == null)
1771        this.ingredient = new ArrayList<CodeableConcept>();
1772      this.ingredient.add(t);
1773      return this;
1774    }
1775
1776    /**
1777     * @return The first repetition of repeating field {@link #ingredient}, creating it if it does not already exist {3}
1778     */
1779    public CodeableConcept getIngredientFirstRep() { 
1780      if (getIngredient().isEmpty()) {
1781        addIngredient();
1782      }
1783      return getIngredient().get(0);
1784    }
1785
1786    /**
1787     * @return {@link #property} (General characteristics of this item.)
1788     */
1789    public List<ManufacturedItemDefinitionPropertyComponent> getProperty() { 
1790      if (this.property == null)
1791        this.property = new ArrayList<ManufacturedItemDefinitionPropertyComponent>();
1792      return this.property;
1793    }
1794
1795    /**
1796     * @return Returns a reference to <code>this</code> for easy method chaining
1797     */
1798    public ManufacturedItemDefinition setProperty(List<ManufacturedItemDefinitionPropertyComponent> theProperty) { 
1799      this.property = theProperty;
1800      return this;
1801    }
1802
1803    public boolean hasProperty() { 
1804      if (this.property == null)
1805        return false;
1806      for (ManufacturedItemDefinitionPropertyComponent item : this.property)
1807        if (!item.isEmpty())
1808          return true;
1809      return false;
1810    }
1811
1812    public ManufacturedItemDefinitionPropertyComponent addProperty() { //3
1813      ManufacturedItemDefinitionPropertyComponent t = new ManufacturedItemDefinitionPropertyComponent();
1814      if (this.property == null)
1815        this.property = new ArrayList<ManufacturedItemDefinitionPropertyComponent>();
1816      this.property.add(t);
1817      return t;
1818    }
1819
1820    public ManufacturedItemDefinition addProperty(ManufacturedItemDefinitionPropertyComponent t) { //3
1821      if (t == null)
1822        return this;
1823      if (this.property == null)
1824        this.property = new ArrayList<ManufacturedItemDefinitionPropertyComponent>();
1825      this.property.add(t);
1826      return this;
1827    }
1828
1829    /**
1830     * @return The first repetition of repeating field {@link #property}, creating it if it does not already exist {3}
1831     */
1832    public ManufacturedItemDefinitionPropertyComponent getPropertyFirstRep() { 
1833      if (getProperty().isEmpty()) {
1834        addProperty();
1835      }
1836      return getProperty().get(0);
1837    }
1838
1839    /**
1840     * @return {@link #component} (Physical parts of the manufactured item, that it is intrisically made from. This is distinct from the ingredients that are part of its chemical makeup.)
1841     */
1842    public List<ManufacturedItemDefinitionComponentComponent> getComponent() { 
1843      if (this.component == null)
1844        this.component = new ArrayList<ManufacturedItemDefinitionComponentComponent>();
1845      return this.component;
1846    }
1847
1848    /**
1849     * @return Returns a reference to <code>this</code> for easy method chaining
1850     */
1851    public ManufacturedItemDefinition setComponent(List<ManufacturedItemDefinitionComponentComponent> theComponent) { 
1852      this.component = theComponent;
1853      return this;
1854    }
1855
1856    public boolean hasComponent() { 
1857      if (this.component == null)
1858        return false;
1859      for (ManufacturedItemDefinitionComponentComponent item : this.component)
1860        if (!item.isEmpty())
1861          return true;
1862      return false;
1863    }
1864
1865    public ManufacturedItemDefinitionComponentComponent addComponent() { //3
1866      ManufacturedItemDefinitionComponentComponent t = new ManufacturedItemDefinitionComponentComponent();
1867      if (this.component == null)
1868        this.component = new ArrayList<ManufacturedItemDefinitionComponentComponent>();
1869      this.component.add(t);
1870      return t;
1871    }
1872
1873    public ManufacturedItemDefinition addComponent(ManufacturedItemDefinitionComponentComponent t) { //3
1874      if (t == null)
1875        return this;
1876      if (this.component == null)
1877        this.component = new ArrayList<ManufacturedItemDefinitionComponentComponent>();
1878      this.component.add(t);
1879      return this;
1880    }
1881
1882    /**
1883     * @return The first repetition of repeating field {@link #component}, creating it if it does not already exist {3}
1884     */
1885    public ManufacturedItemDefinitionComponentComponent getComponentFirstRep() { 
1886      if (getComponent().isEmpty()) {
1887        addComponent();
1888      }
1889      return getComponent().get(0);
1890    }
1891
1892      protected void listChildren(List<Property> children) {
1893        super.listChildren(children);
1894        children.add(new Property("identifier", "Identifier", "Unique identifier.", 0, java.lang.Integer.MAX_VALUE, identifier));
1895        children.add(new Property("status", "code", "The status of this item. Enables tracking the life-cycle of the content.", 0, 1, status));
1896        children.add(new Property("name", "string", "A descriptive name applied to this item.", 0, 1, name));
1897        children.add(new Property("manufacturedDoseForm", "CodeableConcept", "Dose form as manufactured and before any transformation into the pharmaceutical product.", 0, 1, manufacturedDoseForm));
1898        children.add(new Property("unitOfPresentation", "CodeableConcept", "The ?real world? units in which the quantity of the manufactured item is described.", 0, 1, unitOfPresentation));
1899        children.add(new Property("manufacturer", "Reference(Organization)", "Manufacturer of the item, one of several possible.", 0, java.lang.Integer.MAX_VALUE, manufacturer));
1900        children.add(new Property("marketingStatus", "MarketingStatus", "Allows specifying that an item is on the market for sale, or that it is not available, and the dates and locations associated.", 0, java.lang.Integer.MAX_VALUE, marketingStatus));
1901        children.add(new Property("ingredient", "CodeableConcept", "The ingredients of this manufactured item. This is only needed if the ingredients are not specified by incoming references from the Ingredient resource.", 0, java.lang.Integer.MAX_VALUE, ingredient));
1902        children.add(new Property("property", "", "General characteristics of this item.", 0, java.lang.Integer.MAX_VALUE, property));
1903        children.add(new Property("component", "", "Physical parts of the manufactured item, that it is intrisically made from. This is distinct from the ingredients that are part of its chemical makeup.", 0, java.lang.Integer.MAX_VALUE, component));
1904      }
1905
1906      @Override
1907      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1908        switch (_hash) {
1909        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Unique identifier.", 0, java.lang.Integer.MAX_VALUE, identifier);
1910        case -892481550: /*status*/  return new Property("status", "code", "The status of this item. Enables tracking the life-cycle of the content.", 0, 1, status);
1911        case 3373707: /*name*/  return new Property("name", "string", "A descriptive name applied to this item.", 0, 1, name);
1912        case -1451400348: /*manufacturedDoseForm*/  return new Property("manufacturedDoseForm", "CodeableConcept", "Dose form as manufactured and before any transformation into the pharmaceutical product.", 0, 1, manufacturedDoseForm);
1913        case -1427765963: /*unitOfPresentation*/  return new Property("unitOfPresentation", "CodeableConcept", "The ?real world? units in which the quantity of the manufactured item is described.", 0, 1, unitOfPresentation);
1914        case -1969347631: /*manufacturer*/  return new Property("manufacturer", "Reference(Organization)", "Manufacturer of the item, one of several possible.", 0, java.lang.Integer.MAX_VALUE, manufacturer);
1915        case 70767032: /*marketingStatus*/  return new Property("marketingStatus", "MarketingStatus", "Allows specifying that an item is on the market for sale, or that it is not available, and the dates and locations associated.", 0, java.lang.Integer.MAX_VALUE, marketingStatus);
1916        case -206409263: /*ingredient*/  return new Property("ingredient", "CodeableConcept", "The ingredients of this manufactured item. This is only needed if the ingredients are not specified by incoming references from the Ingredient resource.", 0, java.lang.Integer.MAX_VALUE, ingredient);
1917        case -993141291: /*property*/  return new Property("property", "", "General characteristics of this item.", 0, java.lang.Integer.MAX_VALUE, property);
1918        case -1399907075: /*component*/  return new Property("component", "", "Physical parts of the manufactured item, that it is intrisically made from. This is distinct from the ingredients that are part of its chemical makeup.", 0, java.lang.Integer.MAX_VALUE, component);
1919        default: return super.getNamedProperty(_hash, _name, _checkValid);
1920        }
1921
1922      }
1923
1924      @Override
1925      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1926        switch (hash) {
1927        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1928        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
1929        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
1930        case -1451400348: /*manufacturedDoseForm*/ return this.manufacturedDoseForm == null ? new Base[0] : new Base[] {this.manufacturedDoseForm}; // CodeableConcept
1931        case -1427765963: /*unitOfPresentation*/ return this.unitOfPresentation == null ? new Base[0] : new Base[] {this.unitOfPresentation}; // CodeableConcept
1932        case -1969347631: /*manufacturer*/ return this.manufacturer == null ? new Base[0] : this.manufacturer.toArray(new Base[this.manufacturer.size()]); // Reference
1933        case 70767032: /*marketingStatus*/ return this.marketingStatus == null ? new Base[0] : this.marketingStatus.toArray(new Base[this.marketingStatus.size()]); // MarketingStatus
1934        case -206409263: /*ingredient*/ return this.ingredient == null ? new Base[0] : this.ingredient.toArray(new Base[this.ingredient.size()]); // CodeableConcept
1935        case -993141291: /*property*/ return this.property == null ? new Base[0] : this.property.toArray(new Base[this.property.size()]); // ManufacturedItemDefinitionPropertyComponent
1936        case -1399907075: /*component*/ return this.component == null ? new Base[0] : this.component.toArray(new Base[this.component.size()]); // ManufacturedItemDefinitionComponentComponent
1937        default: return super.getProperty(hash, name, checkValid);
1938        }
1939
1940      }
1941
1942      @Override
1943      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1944        switch (hash) {
1945        case -1618432855: // identifier
1946          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1947          return value;
1948        case -892481550: // status
1949          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1950          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1951          return value;
1952        case 3373707: // name
1953          this.name = TypeConvertor.castToString(value); // StringType
1954          return value;
1955        case -1451400348: // manufacturedDoseForm
1956          this.manufacturedDoseForm = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1957          return value;
1958        case -1427765963: // unitOfPresentation
1959          this.unitOfPresentation = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1960          return value;
1961        case -1969347631: // manufacturer
1962          this.getManufacturer().add(TypeConvertor.castToReference(value)); // Reference
1963          return value;
1964        case 70767032: // marketingStatus
1965          this.getMarketingStatus().add(TypeConvertor.castToMarketingStatus(value)); // MarketingStatus
1966          return value;
1967        case -206409263: // ingredient
1968          this.getIngredient().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1969          return value;
1970        case -993141291: // property
1971          this.getProperty().add((ManufacturedItemDefinitionPropertyComponent) value); // ManufacturedItemDefinitionPropertyComponent
1972          return value;
1973        case -1399907075: // component
1974          this.getComponent().add((ManufacturedItemDefinitionComponentComponent) value); // ManufacturedItemDefinitionComponentComponent
1975          return value;
1976        default: return super.setProperty(hash, name, value);
1977        }
1978
1979      }
1980
1981      @Override
1982      public Base setProperty(String name, Base value) throws FHIRException {
1983        if (name.equals("identifier")) {
1984          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1985        } else if (name.equals("status")) {
1986          value = new PublicationStatusEnumFactory().fromType(TypeConvertor.castToCode(value));
1987          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
1988        } else if (name.equals("name")) {
1989          this.name = TypeConvertor.castToString(value); // StringType
1990        } else if (name.equals("manufacturedDoseForm")) {
1991          this.manufacturedDoseForm = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1992        } else if (name.equals("unitOfPresentation")) {
1993          this.unitOfPresentation = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1994        } else if (name.equals("manufacturer")) {
1995          this.getManufacturer().add(TypeConvertor.castToReference(value));
1996        } else if (name.equals("marketingStatus")) {
1997          this.getMarketingStatus().add(TypeConvertor.castToMarketingStatus(value));
1998        } else if (name.equals("ingredient")) {
1999          this.getIngredient().add(TypeConvertor.castToCodeableConcept(value));
2000        } else if (name.equals("property")) {
2001          this.getProperty().add((ManufacturedItemDefinitionPropertyComponent) value);
2002        } else if (name.equals("component")) {
2003          this.getComponent().add((ManufacturedItemDefinitionComponentComponent) value);
2004        } else
2005          return super.setProperty(name, value);
2006        return value;
2007      }
2008
2009      @Override
2010      public Base makeProperty(int hash, String name) throws FHIRException {
2011        switch (hash) {
2012        case -1618432855:  return addIdentifier(); 
2013        case -892481550:  return getStatusElement();
2014        case 3373707:  return getNameElement();
2015        case -1451400348:  return getManufacturedDoseForm();
2016        case -1427765963:  return getUnitOfPresentation();
2017        case -1969347631:  return addManufacturer(); 
2018        case 70767032:  return addMarketingStatus(); 
2019        case -206409263:  return addIngredient(); 
2020        case -993141291:  return addProperty(); 
2021        case -1399907075:  return addComponent(); 
2022        default: return super.makeProperty(hash, name);
2023        }
2024
2025      }
2026
2027      @Override
2028      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2029        switch (hash) {
2030        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2031        case -892481550: /*status*/ return new String[] {"code"};
2032        case 3373707: /*name*/ return new String[] {"string"};
2033        case -1451400348: /*manufacturedDoseForm*/ return new String[] {"CodeableConcept"};
2034        case -1427765963: /*unitOfPresentation*/ return new String[] {"CodeableConcept"};
2035        case -1969347631: /*manufacturer*/ return new String[] {"Reference"};
2036        case 70767032: /*marketingStatus*/ return new String[] {"MarketingStatus"};
2037        case -206409263: /*ingredient*/ return new String[] {"CodeableConcept"};
2038        case -993141291: /*property*/ return new String[] {};
2039        case -1399907075: /*component*/ return new String[] {};
2040        default: return super.getTypesForProperty(hash, name);
2041        }
2042
2043      }
2044
2045      @Override
2046      public Base addChild(String name) throws FHIRException {
2047        if (name.equals("identifier")) {
2048          return addIdentifier();
2049        }
2050        else if (name.equals("status")) {
2051          throw new FHIRException("Cannot call addChild on a primitive type ManufacturedItemDefinition.status");
2052        }
2053        else if (name.equals("name")) {
2054          throw new FHIRException("Cannot call addChild on a primitive type ManufacturedItemDefinition.name");
2055        }
2056        else if (name.equals("manufacturedDoseForm")) {
2057          this.manufacturedDoseForm = new CodeableConcept();
2058          return this.manufacturedDoseForm;
2059        }
2060        else if (name.equals("unitOfPresentation")) {
2061          this.unitOfPresentation = new CodeableConcept();
2062          return this.unitOfPresentation;
2063        }
2064        else if (name.equals("manufacturer")) {
2065          return addManufacturer();
2066        }
2067        else if (name.equals("marketingStatus")) {
2068          return addMarketingStatus();
2069        }
2070        else if (name.equals("ingredient")) {
2071          return addIngredient();
2072        }
2073        else if (name.equals("property")) {
2074          return addProperty();
2075        }
2076        else if (name.equals("component")) {
2077          return addComponent();
2078        }
2079        else
2080          return super.addChild(name);
2081      }
2082
2083  public String fhirType() {
2084    return "ManufacturedItemDefinition";
2085
2086  }
2087
2088      public ManufacturedItemDefinition copy() {
2089        ManufacturedItemDefinition dst = new ManufacturedItemDefinition();
2090        copyValues(dst);
2091        return dst;
2092      }
2093
2094      public void copyValues(ManufacturedItemDefinition dst) {
2095        super.copyValues(dst);
2096        if (identifier != null) {
2097          dst.identifier = new ArrayList<Identifier>();
2098          for (Identifier i : identifier)
2099            dst.identifier.add(i.copy());
2100        };
2101        dst.status = status == null ? null : status.copy();
2102        dst.name = name == null ? null : name.copy();
2103        dst.manufacturedDoseForm = manufacturedDoseForm == null ? null : manufacturedDoseForm.copy();
2104        dst.unitOfPresentation = unitOfPresentation == null ? null : unitOfPresentation.copy();
2105        if (manufacturer != null) {
2106          dst.manufacturer = new ArrayList<Reference>();
2107          for (Reference i : manufacturer)
2108            dst.manufacturer.add(i.copy());
2109        };
2110        if (marketingStatus != null) {
2111          dst.marketingStatus = new ArrayList<MarketingStatus>();
2112          for (MarketingStatus i : marketingStatus)
2113            dst.marketingStatus.add(i.copy());
2114        };
2115        if (ingredient != null) {
2116          dst.ingredient = new ArrayList<CodeableConcept>();
2117          for (CodeableConcept i : ingredient)
2118            dst.ingredient.add(i.copy());
2119        };
2120        if (property != null) {
2121          dst.property = new ArrayList<ManufacturedItemDefinitionPropertyComponent>();
2122          for (ManufacturedItemDefinitionPropertyComponent i : property)
2123            dst.property.add(i.copy());
2124        };
2125        if (component != null) {
2126          dst.component = new ArrayList<ManufacturedItemDefinitionComponentComponent>();
2127          for (ManufacturedItemDefinitionComponentComponent i : component)
2128            dst.component.add(i.copy());
2129        };
2130      }
2131
2132      protected ManufacturedItemDefinition typedCopy() {
2133        return copy();
2134      }
2135
2136      @Override
2137      public boolean equalsDeep(Base other_) {
2138        if (!super.equalsDeep(other_))
2139          return false;
2140        if (!(other_ instanceof ManufacturedItemDefinition))
2141          return false;
2142        ManufacturedItemDefinition o = (ManufacturedItemDefinition) other_;
2143        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(name, o.name, true)
2144           && compareDeep(manufacturedDoseForm, o.manufacturedDoseForm, true) && compareDeep(unitOfPresentation, o.unitOfPresentation, true)
2145           && compareDeep(manufacturer, o.manufacturer, true) && compareDeep(marketingStatus, o.marketingStatus, true)
2146           && compareDeep(ingredient, o.ingredient, true) && compareDeep(property, o.property, true) && compareDeep(component, o.component, true)
2147          ;
2148      }
2149
2150      @Override
2151      public boolean equalsShallow(Base other_) {
2152        if (!super.equalsShallow(other_))
2153          return false;
2154        if (!(other_ instanceof ManufacturedItemDefinition))
2155          return false;
2156        ManufacturedItemDefinition o = (ManufacturedItemDefinition) other_;
2157        return compareValues(status, o.status, true) && compareValues(name, o.name, true);
2158      }
2159
2160      public boolean isEmpty() {
2161        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, name
2162          , manufacturedDoseForm, unitOfPresentation, manufacturer, marketingStatus, ingredient
2163          , property, component);
2164      }
2165
2166  @Override
2167  public ResourceType getResourceType() {
2168    return ResourceType.ManufacturedItemDefinition;
2169   }
2170
2171 /**
2172   * Search parameter: <b>dose-form</b>
2173   * <p>
2174   * Description: <b>Dose form as manufactured and before any transformation into the pharmaceutical product</b><br>
2175   * Type: <b>token</b><br>
2176   * Path: <b>ManufacturedItemDefinition.manufacturedDoseForm</b><br>
2177   * </p>
2178   */
2179  @SearchParamDefinition(name="dose-form", path="ManufacturedItemDefinition.manufacturedDoseForm", description="Dose form as manufactured and before any transformation into the pharmaceutical product", type="token" )
2180  public static final String SP_DOSE_FORM = "dose-form";
2181 /**
2182   * <b>Fluent Client</b> search parameter constant for <b>dose-form</b>
2183   * <p>
2184   * Description: <b>Dose form as manufactured and before any transformation into the pharmaceutical product</b><br>
2185   * Type: <b>token</b><br>
2186   * Path: <b>ManufacturedItemDefinition.manufacturedDoseForm</b><br>
2187   * </p>
2188   */
2189  public static final ca.uhn.fhir.rest.gclient.TokenClientParam DOSE_FORM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_DOSE_FORM);
2190
2191 /**
2192   * Search parameter: <b>identifier</b>
2193   * <p>
2194   * Description: <b>Unique identifier</b><br>
2195   * Type: <b>token</b><br>
2196   * Path: <b>ManufacturedItemDefinition.identifier</b><br>
2197   * </p>
2198   */
2199  @SearchParamDefinition(name="identifier", path="ManufacturedItemDefinition.identifier", description="Unique identifier", type="token" )
2200  public static final String SP_IDENTIFIER = "identifier";
2201 /**
2202   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2203   * <p>
2204   * Description: <b>Unique identifier</b><br>
2205   * Type: <b>token</b><br>
2206   * Path: <b>ManufacturedItemDefinition.identifier</b><br>
2207   * </p>
2208   */
2209  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2210
2211 /**
2212   * Search parameter: <b>ingredient</b>
2213   * <p>
2214   * Description: <b>An ingredient of this item</b><br>
2215   * Type: <b>token</b><br>
2216   * Path: <b>ManufacturedItemDefinition.ingredient</b><br>
2217   * </p>
2218   */
2219  @SearchParamDefinition(name="ingredient", path="ManufacturedItemDefinition.ingredient", description="An ingredient of this item", type="token" )
2220  public static final String SP_INGREDIENT = "ingredient";
2221 /**
2222   * <b>Fluent Client</b> search parameter constant for <b>ingredient</b>
2223   * <p>
2224   * Description: <b>An ingredient of this item</b><br>
2225   * Type: <b>token</b><br>
2226   * Path: <b>ManufacturedItemDefinition.ingredient</b><br>
2227   * </p>
2228   */
2229  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INGREDIENT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INGREDIENT);
2230
2231 /**
2232   * Search parameter: <b>name</b>
2233   * <p>
2234   * Description: <b>A descriptive name applied to this item</b><br>
2235   * Type: <b>token</b><br>
2236   * Path: <b>ManufacturedItemDefinition.name</b><br>
2237   * </p>
2238   */
2239  @SearchParamDefinition(name="name", path="ManufacturedItemDefinition.name", description="A descriptive name applied to this item", type="token" )
2240  public static final String SP_NAME = "name";
2241 /**
2242   * <b>Fluent Client</b> search parameter constant for <b>name</b>
2243   * <p>
2244   * Description: <b>A descriptive name applied to this item</b><br>
2245   * Type: <b>token</b><br>
2246   * Path: <b>ManufacturedItemDefinition.name</b><br>
2247   * </p>
2248   */
2249  public static final ca.uhn.fhir.rest.gclient.TokenClientParam NAME = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_NAME);
2250
2251 /**
2252   * Search parameter: <b>status</b>
2253   * <p>
2254   * Description: <b>The status of this item. Enables tracking the life-cycle of the content.</b><br>
2255   * Type: <b>token</b><br>
2256   * Path: <b>ManufacturedItemDefinition.status</b><br>
2257   * </p>
2258   */
2259  @SearchParamDefinition(name="status", path="ManufacturedItemDefinition.status", description="The status of this item. Enables tracking the life-cycle of the content.", type="token" )
2260  public static final String SP_STATUS = "status";
2261 /**
2262   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2263   * <p>
2264   * Description: <b>The status of this item. Enables tracking the life-cycle of the content.</b><br>
2265   * Type: <b>token</b><br>
2266   * Path: <b>ManufacturedItemDefinition.status</b><br>
2267   * </p>
2268   */
2269  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2270
2271
2272}
2273