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 Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
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 * This resource is primarily used for the identification and definition of a medication, including ingredients, for the purposes of prescribing, dispensing, and administering a medication as well as for making statements about medication use.
052 */
053@ResourceDef(name="Medication", profile="http://hl7.org/fhir/StructureDefinition/Medication")
054public class Medication extends DomainResource {
055
056    public enum MedicationStatusCodes {
057        /**
058         * The medication record is current and is appropriate for reference in new instances.
059         */
060        ACTIVE, 
061        /**
062         * The medication record is not current and is not is appropriate for reference in new instances.
063         */
064        INACTIVE, 
065        /**
066         * The medication record was created erroneously and is not appropriated for reference in new instances.
067         */
068        ENTEREDINERROR, 
069        /**
070         * added to help the parsers with the generic types
071         */
072        NULL;
073        public static MedicationStatusCodes fromCode(String codeString) throws FHIRException {
074            if (codeString == null || "".equals(codeString))
075                return null;
076        if ("active".equals(codeString))
077          return ACTIVE;
078        if ("inactive".equals(codeString))
079          return INACTIVE;
080        if ("entered-in-error".equals(codeString))
081          return ENTEREDINERROR;
082        if (Configuration.isAcceptInvalidEnums())
083          return null;
084        else
085          throw new FHIRException("Unknown MedicationStatusCodes code '"+codeString+"'");
086        }
087        public String toCode() {
088          switch (this) {
089            case ACTIVE: return "active";
090            case INACTIVE: return "inactive";
091            case ENTEREDINERROR: return "entered-in-error";
092            case NULL: return null;
093            default: return "?";
094          }
095        }
096        public String getSystem() {
097          switch (this) {
098            case ACTIVE: return "http://hl7.org/fhir/CodeSystem/medication-status";
099            case INACTIVE: return "http://hl7.org/fhir/CodeSystem/medication-status";
100            case ENTEREDINERROR: return "http://hl7.org/fhir/CodeSystem/medication-status";
101            case NULL: return null;
102            default: return "?";
103          }
104        }
105        public String getDefinition() {
106          switch (this) {
107            case ACTIVE: return "The medication record is current and is appropriate for reference in new instances.";
108            case INACTIVE: return "The medication record is not current and is not is appropriate for reference in new instances.";
109            case ENTEREDINERROR: return "The medication record was created erroneously and is not appropriated for reference in new instances.";
110            case NULL: return null;
111            default: return "?";
112          }
113        }
114        public String getDisplay() {
115          switch (this) {
116            case ACTIVE: return "Active";
117            case INACTIVE: return "Inactive";
118            case ENTEREDINERROR: return "Entered in Error";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123    }
124
125  public static class MedicationStatusCodesEnumFactory implements EnumFactory<MedicationStatusCodes> {
126    public MedicationStatusCodes fromCode(String codeString) throws IllegalArgumentException {
127      if (codeString == null || "".equals(codeString))
128            if (codeString == null || "".equals(codeString))
129                return null;
130        if ("active".equals(codeString))
131          return MedicationStatusCodes.ACTIVE;
132        if ("inactive".equals(codeString))
133          return MedicationStatusCodes.INACTIVE;
134        if ("entered-in-error".equals(codeString))
135          return MedicationStatusCodes.ENTEREDINERROR;
136        throw new IllegalArgumentException("Unknown MedicationStatusCodes code '"+codeString+"'");
137        }
138        public Enumeration<MedicationStatusCodes> fromType(PrimitiveType<?> code) throws FHIRException {
139          if (code == null)
140            return null;
141          if (code.isEmpty())
142            return new Enumeration<MedicationStatusCodes>(this, MedicationStatusCodes.NULL, code);
143          String codeString = ((PrimitiveType) code).asStringValue();
144          if (codeString == null || "".equals(codeString))
145            return new Enumeration<MedicationStatusCodes>(this, MedicationStatusCodes.NULL, code);
146        if ("active".equals(codeString))
147          return new Enumeration<MedicationStatusCodes>(this, MedicationStatusCodes.ACTIVE, code);
148        if ("inactive".equals(codeString))
149          return new Enumeration<MedicationStatusCodes>(this, MedicationStatusCodes.INACTIVE, code);
150        if ("entered-in-error".equals(codeString))
151          return new Enumeration<MedicationStatusCodes>(this, MedicationStatusCodes.ENTEREDINERROR, code);
152        throw new FHIRException("Unknown MedicationStatusCodes code '"+codeString+"'");
153        }
154    public String toCode(MedicationStatusCodes code) {
155      if (code == MedicationStatusCodes.ACTIVE)
156        return "active";
157      if (code == MedicationStatusCodes.INACTIVE)
158        return "inactive";
159      if (code == MedicationStatusCodes.ENTEREDINERROR)
160        return "entered-in-error";
161      return "?";
162      }
163    public String toSystem(MedicationStatusCodes code) {
164      return code.getSystem();
165      }
166    }
167
168    @Block()
169    public static class MedicationIngredientComponent extends BackboneElement implements IBaseBackboneElement {
170        /**
171         * The ingredient (substance or medication) that the ingredient.strength relates to.  This is represented as a concept from a code system or described in another resource (Substance or Medication).
172         */
173        @Child(name = "item", type = {CodeableReference.class}, order=1, min=1, max=1, modifier=false, summary=false)
174        @Description(shortDefinition="The ingredient (substance or medication) that the ingredient.strength relates to", formalDefinition="The ingredient (substance or medication) that the ingredient.strength relates to.  This is represented as a concept from a code system or described in another resource (Substance or Medication)." )
175        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-codes")
176        protected CodeableReference item;
177
178        /**
179         * Indication of whether this ingredient affects the therapeutic action of the drug.
180         */
181        @Child(name = "isActive", type = {BooleanType.class}, order=2, min=0, max=1, modifier=false, summary=false)
182        @Description(shortDefinition="Active ingredient indicator", formalDefinition="Indication of whether this ingredient affects the therapeutic action of the drug." )
183        protected BooleanType isActive;
184
185        /**
186         * Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.
187         */
188        @Child(name = "strength", type = {Ratio.class, CodeableConcept.class, Quantity.class}, order=3, min=0, max=1, modifier=false, summary=false)
189        @Description(shortDefinition="Quantity of ingredient present", formalDefinition="Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet." )
190        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-ingredientstrength")
191        protected DataType strength;
192
193        private static final long serialVersionUID = -979760018L;
194
195    /**
196     * Constructor
197     */
198      public MedicationIngredientComponent() {
199        super();
200      }
201
202    /**
203     * Constructor
204     */
205      public MedicationIngredientComponent(CodeableReference item) {
206        super();
207        this.setItem(item);
208      }
209
210        /**
211         * @return {@link #item} (The ingredient (substance or medication) that the ingredient.strength relates to.  This is represented as a concept from a code system or described in another resource (Substance or Medication).)
212         */
213        public CodeableReference getItem() { 
214          if (this.item == null)
215            if (Configuration.errorOnAutoCreate())
216              throw new Error("Attempt to auto-create MedicationIngredientComponent.item");
217            else if (Configuration.doAutoCreate())
218              this.item = new CodeableReference(); // cc
219          return this.item;
220        }
221
222        public boolean hasItem() { 
223          return this.item != null && !this.item.isEmpty();
224        }
225
226        /**
227         * @param value {@link #item} (The ingredient (substance or medication) that the ingredient.strength relates to.  This is represented as a concept from a code system or described in another resource (Substance or Medication).)
228         */
229        public MedicationIngredientComponent setItem(CodeableReference value) { 
230          this.item = value;
231          return this;
232        }
233
234        /**
235         * @return {@link #isActive} (Indication of whether this ingredient affects the therapeutic action of the drug.). This is the underlying object with id, value and extensions. The accessor "getIsActive" gives direct access to the value
236         */
237        public BooleanType getIsActiveElement() { 
238          if (this.isActive == null)
239            if (Configuration.errorOnAutoCreate())
240              throw new Error("Attempt to auto-create MedicationIngredientComponent.isActive");
241            else if (Configuration.doAutoCreate())
242              this.isActive = new BooleanType(); // bb
243          return this.isActive;
244        }
245
246        public boolean hasIsActiveElement() { 
247          return this.isActive != null && !this.isActive.isEmpty();
248        }
249
250        public boolean hasIsActive() { 
251          return this.isActive != null && !this.isActive.isEmpty();
252        }
253
254        /**
255         * @param value {@link #isActive} (Indication of whether this ingredient affects the therapeutic action of the drug.). This is the underlying object with id, value and extensions. The accessor "getIsActive" gives direct access to the value
256         */
257        public MedicationIngredientComponent setIsActiveElement(BooleanType value) { 
258          this.isActive = value;
259          return this;
260        }
261
262        /**
263         * @return Indication of whether this ingredient affects the therapeutic action of the drug.
264         */
265        public boolean getIsActive() { 
266          return this.isActive == null || this.isActive.isEmpty() ? false : this.isActive.getValue();
267        }
268
269        /**
270         * @param value Indication of whether this ingredient affects the therapeutic action of the drug.
271         */
272        public MedicationIngredientComponent setIsActive(boolean value) { 
273            if (this.isActive == null)
274              this.isActive = new BooleanType();
275            this.isActive.setValue(value);
276          return this;
277        }
278
279        /**
280         * @return {@link #strength} (Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.)
281         */
282        public DataType getStrength() { 
283          return this.strength;
284        }
285
286        /**
287         * @return {@link #strength} (Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.)
288         */
289        public Ratio getStrengthRatio() throws FHIRException { 
290          if (this.strength == null)
291            this.strength = new Ratio();
292          if (!(this.strength instanceof Ratio))
293            throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.strength.getClass().getName()+" was encountered");
294          return (Ratio) this.strength;
295        }
296
297        public boolean hasStrengthRatio() { 
298          return this != null && this.strength instanceof Ratio;
299        }
300
301        /**
302         * @return {@link #strength} (Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.)
303         */
304        public CodeableConcept getStrengthCodeableConcept() throws FHIRException { 
305          if (this.strength == null)
306            this.strength = new CodeableConcept();
307          if (!(this.strength instanceof CodeableConcept))
308            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.strength.getClass().getName()+" was encountered");
309          return (CodeableConcept) this.strength;
310        }
311
312        public boolean hasStrengthCodeableConcept() { 
313          return this != null && this.strength instanceof CodeableConcept;
314        }
315
316        /**
317         * @return {@link #strength} (Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.)
318         */
319        public Quantity getStrengthQuantity() throws FHIRException { 
320          if (this.strength == null)
321            this.strength = new Quantity();
322          if (!(this.strength instanceof Quantity))
323            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.strength.getClass().getName()+" was encountered");
324          return (Quantity) this.strength;
325        }
326
327        public boolean hasStrengthQuantity() { 
328          return this != null && this.strength instanceof Quantity;
329        }
330
331        public boolean hasStrength() { 
332          return this.strength != null && !this.strength.isEmpty();
333        }
334
335        /**
336         * @param value {@link #strength} (Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.)
337         */
338        public MedicationIngredientComponent setStrength(DataType value) { 
339          if (value != null && !(value instanceof Ratio || value instanceof CodeableConcept || value instanceof Quantity))
340            throw new FHIRException("Not the right type for Medication.ingredient.strength[x]: "+value.fhirType());
341          this.strength = value;
342          return this;
343        }
344
345        protected void listChildren(List<Property> children) {
346          super.listChildren(children);
347          children.add(new Property("item", "CodeableReference(Substance|Medication)", "The ingredient (substance or medication) that the ingredient.strength relates to.  This is represented as a concept from a code system or described in another resource (Substance or Medication).", 0, 1, item));
348          children.add(new Property("isActive", "boolean", "Indication of whether this ingredient affects the therapeutic action of the drug.", 0, 1, isActive));
349          children.add(new Property("strength[x]", "Ratio|CodeableConcept|Quantity", "Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.", 0, 1, strength));
350        }
351
352        @Override
353        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
354          switch (_hash) {
355          case 3242771: /*item*/  return new Property("item", "CodeableReference(Substance|Medication)", "The ingredient (substance or medication) that the ingredient.strength relates to.  This is represented as a concept from a code system or described in another resource (Substance or Medication).", 0, 1, item);
356          case -748916528: /*isActive*/  return new Property("isActive", "boolean", "Indication of whether this ingredient affects the therapeutic action of the drug.", 0, 1, isActive);
357          case 127377567: /*strength[x]*/  return new Property("strength[x]", "Ratio|CodeableConcept|Quantity", "Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.", 0, 1, strength);
358          case 1791316033: /*strength*/  return new Property("strength[x]", "Ratio|CodeableConcept|Quantity", "Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.", 0, 1, strength);
359          case 2141786186: /*strengthRatio*/  return new Property("strength[x]", "Ratio", "Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.", 0, 1, strength);
360          case -1455903456: /*strengthCodeableConcept*/  return new Property("strength[x]", "CodeableConcept", "Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.", 0, 1, strength);
361          case -1793570836: /*strengthQuantity*/  return new Property("strength[x]", "Quantity", "Specifies how many (or how much) of the items there are in this Medication.  For example, 250 mg per tablet.  This is expressed as a ratio where the numerator is 250mg and the denominator is 1 tablet but can also be expressed a quantity when the denominator is assumed to be 1 tablet.", 0, 1, strength);
362          default: return super.getNamedProperty(_hash, _name, _checkValid);
363          }
364
365        }
366
367      @Override
368      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
369        switch (hash) {
370        case 3242771: /*item*/ return this.item == null ? new Base[0] : new Base[] {this.item}; // CodeableReference
371        case -748916528: /*isActive*/ return this.isActive == null ? new Base[0] : new Base[] {this.isActive}; // BooleanType
372        case 1791316033: /*strength*/ return this.strength == null ? new Base[0] : new Base[] {this.strength}; // DataType
373        default: return super.getProperty(hash, name, checkValid);
374        }
375
376      }
377
378      @Override
379      public Base setProperty(int hash, String name, Base value) throws FHIRException {
380        switch (hash) {
381        case 3242771: // item
382          this.item = TypeConvertor.castToCodeableReference(value); // CodeableReference
383          return value;
384        case -748916528: // isActive
385          this.isActive = TypeConvertor.castToBoolean(value); // BooleanType
386          return value;
387        case 1791316033: // strength
388          this.strength = TypeConvertor.castToType(value); // DataType
389          return value;
390        default: return super.setProperty(hash, name, value);
391        }
392
393      }
394
395      @Override
396      public Base setProperty(String name, Base value) throws FHIRException {
397        if (name.equals("item")) {
398          this.item = TypeConvertor.castToCodeableReference(value); // CodeableReference
399        } else if (name.equals("isActive")) {
400          this.isActive = TypeConvertor.castToBoolean(value); // BooleanType
401        } else if (name.equals("strength[x]")) {
402          this.strength = TypeConvertor.castToType(value); // DataType
403        } else
404          return super.setProperty(name, value);
405        return value;
406      }
407
408  @Override
409  public void removeChild(String name, Base value) throws FHIRException {
410        if (name.equals("item")) {
411          this.item = null;
412        } else if (name.equals("isActive")) {
413          this.isActive = null;
414        } else if (name.equals("strength[x]")) {
415          this.strength = null;
416        } else
417          super.removeChild(name, value);
418        
419      }
420
421      @Override
422      public Base makeProperty(int hash, String name) throws FHIRException {
423        switch (hash) {
424        case 3242771:  return getItem();
425        case -748916528:  return getIsActiveElement();
426        case 127377567:  return getStrength();
427        case 1791316033:  return getStrength();
428        default: return super.makeProperty(hash, name);
429        }
430
431      }
432
433      @Override
434      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
435        switch (hash) {
436        case 3242771: /*item*/ return new String[] {"CodeableReference"};
437        case -748916528: /*isActive*/ return new String[] {"boolean"};
438        case 1791316033: /*strength*/ return new String[] {"Ratio", "CodeableConcept", "Quantity"};
439        default: return super.getTypesForProperty(hash, name);
440        }
441
442      }
443
444      @Override
445      public Base addChild(String name) throws FHIRException {
446        if (name.equals("item")) {
447          this.item = new CodeableReference();
448          return this.item;
449        }
450        else if (name.equals("isActive")) {
451          throw new FHIRException("Cannot call addChild on a singleton property Medication.ingredient.isActive");
452        }
453        else if (name.equals("strengthRatio")) {
454          this.strength = new Ratio();
455          return this.strength;
456        }
457        else if (name.equals("strengthCodeableConcept")) {
458          this.strength = new CodeableConcept();
459          return this.strength;
460        }
461        else if (name.equals("strengthQuantity")) {
462          this.strength = new Quantity();
463          return this.strength;
464        }
465        else
466          return super.addChild(name);
467      }
468
469      public MedicationIngredientComponent copy() {
470        MedicationIngredientComponent dst = new MedicationIngredientComponent();
471        copyValues(dst);
472        return dst;
473      }
474
475      public void copyValues(MedicationIngredientComponent dst) {
476        super.copyValues(dst);
477        dst.item = item == null ? null : item.copy();
478        dst.isActive = isActive == null ? null : isActive.copy();
479        dst.strength = strength == null ? null : strength.copy();
480      }
481
482      @Override
483      public boolean equalsDeep(Base other_) {
484        if (!super.equalsDeep(other_))
485          return false;
486        if (!(other_ instanceof MedicationIngredientComponent))
487          return false;
488        MedicationIngredientComponent o = (MedicationIngredientComponent) other_;
489        return compareDeep(item, o.item, true) && compareDeep(isActive, o.isActive, true) && compareDeep(strength, o.strength, true)
490          ;
491      }
492
493      @Override
494      public boolean equalsShallow(Base other_) {
495        if (!super.equalsShallow(other_))
496          return false;
497        if (!(other_ instanceof MedicationIngredientComponent))
498          return false;
499        MedicationIngredientComponent o = (MedicationIngredientComponent) other_;
500        return compareValues(isActive, o.isActive, true);
501      }
502
503      public boolean isEmpty() {
504        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(item, isActive, strength
505          );
506      }
507
508  public String fhirType() {
509    return "Medication.ingredient";
510
511  }
512
513  }
514
515    @Block()
516    public static class MedicationBatchComponent extends BackboneElement implements IBaseBackboneElement {
517        /**
518         * The assigned lot number of a batch of the specified product.
519         */
520        @Child(name = "lotNumber", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
521        @Description(shortDefinition="Identifier assigned to batch", formalDefinition="The assigned lot number of a batch of the specified product." )
522        protected StringType lotNumber;
523
524        /**
525         * When this specific batch of product will expire.
526         */
527        @Child(name = "expirationDate", type = {DateTimeType.class}, order=2, min=0, max=1, modifier=false, summary=false)
528        @Description(shortDefinition="When batch will expire", formalDefinition="When this specific batch of product will expire." )
529        protected DateTimeType expirationDate;
530
531        private static final long serialVersionUID = 1982738755L;
532
533    /**
534     * Constructor
535     */
536      public MedicationBatchComponent() {
537        super();
538      }
539
540        /**
541         * @return {@link #lotNumber} (The assigned lot number of a batch of the specified product.). This is the underlying object with id, value and extensions. The accessor "getLotNumber" gives direct access to the value
542         */
543        public StringType getLotNumberElement() { 
544          if (this.lotNumber == null)
545            if (Configuration.errorOnAutoCreate())
546              throw new Error("Attempt to auto-create MedicationBatchComponent.lotNumber");
547            else if (Configuration.doAutoCreate())
548              this.lotNumber = new StringType(); // bb
549          return this.lotNumber;
550        }
551
552        public boolean hasLotNumberElement() { 
553          return this.lotNumber != null && !this.lotNumber.isEmpty();
554        }
555
556        public boolean hasLotNumber() { 
557          return this.lotNumber != null && !this.lotNumber.isEmpty();
558        }
559
560        /**
561         * @param value {@link #lotNumber} (The assigned lot number of a batch of the specified product.). This is the underlying object with id, value and extensions. The accessor "getLotNumber" gives direct access to the value
562         */
563        public MedicationBatchComponent setLotNumberElement(StringType value) { 
564          this.lotNumber = value;
565          return this;
566        }
567
568        /**
569         * @return The assigned lot number of a batch of the specified product.
570         */
571        public String getLotNumber() { 
572          return this.lotNumber == null ? null : this.lotNumber.getValue();
573        }
574
575        /**
576         * @param value The assigned lot number of a batch of the specified product.
577         */
578        public MedicationBatchComponent setLotNumber(String value) { 
579          if (Utilities.noString(value))
580            this.lotNumber = null;
581          else {
582            if (this.lotNumber == null)
583              this.lotNumber = new StringType();
584            this.lotNumber.setValue(value);
585          }
586          return this;
587        }
588
589        /**
590         * @return {@link #expirationDate} (When this specific batch of product will expire.). This is the underlying object with id, value and extensions. The accessor "getExpirationDate" gives direct access to the value
591         */
592        public DateTimeType getExpirationDateElement() { 
593          if (this.expirationDate == null)
594            if (Configuration.errorOnAutoCreate())
595              throw new Error("Attempt to auto-create MedicationBatchComponent.expirationDate");
596            else if (Configuration.doAutoCreate())
597              this.expirationDate = new DateTimeType(); // bb
598          return this.expirationDate;
599        }
600
601        public boolean hasExpirationDateElement() { 
602          return this.expirationDate != null && !this.expirationDate.isEmpty();
603        }
604
605        public boolean hasExpirationDate() { 
606          return this.expirationDate != null && !this.expirationDate.isEmpty();
607        }
608
609        /**
610         * @param value {@link #expirationDate} (When this specific batch of product will expire.). This is the underlying object with id, value and extensions. The accessor "getExpirationDate" gives direct access to the value
611         */
612        public MedicationBatchComponent setExpirationDateElement(DateTimeType value) { 
613          this.expirationDate = value;
614          return this;
615        }
616
617        /**
618         * @return When this specific batch of product will expire.
619         */
620        public Date getExpirationDate() { 
621          return this.expirationDate == null ? null : this.expirationDate.getValue();
622        }
623
624        /**
625         * @param value When this specific batch of product will expire.
626         */
627        public MedicationBatchComponent setExpirationDate(Date value) { 
628          if (value == null)
629            this.expirationDate = null;
630          else {
631            if (this.expirationDate == null)
632              this.expirationDate = new DateTimeType();
633            this.expirationDate.setValue(value);
634          }
635          return this;
636        }
637
638        protected void listChildren(List<Property> children) {
639          super.listChildren(children);
640          children.add(new Property("lotNumber", "string", "The assigned lot number of a batch of the specified product.", 0, 1, lotNumber));
641          children.add(new Property("expirationDate", "dateTime", "When this specific batch of product will expire.", 0, 1, expirationDate));
642        }
643
644        @Override
645        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
646          switch (_hash) {
647          case 462547450: /*lotNumber*/  return new Property("lotNumber", "string", "The assigned lot number of a batch of the specified product.", 0, 1, lotNumber);
648          case -668811523: /*expirationDate*/  return new Property("expirationDate", "dateTime", "When this specific batch of product will expire.", 0, 1, expirationDate);
649          default: return super.getNamedProperty(_hash, _name, _checkValid);
650          }
651
652        }
653
654      @Override
655      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
656        switch (hash) {
657        case 462547450: /*lotNumber*/ return this.lotNumber == null ? new Base[0] : new Base[] {this.lotNumber}; // StringType
658        case -668811523: /*expirationDate*/ return this.expirationDate == null ? new Base[0] : new Base[] {this.expirationDate}; // DateTimeType
659        default: return super.getProperty(hash, name, checkValid);
660        }
661
662      }
663
664      @Override
665      public Base setProperty(int hash, String name, Base value) throws FHIRException {
666        switch (hash) {
667        case 462547450: // lotNumber
668          this.lotNumber = TypeConvertor.castToString(value); // StringType
669          return value;
670        case -668811523: // expirationDate
671          this.expirationDate = TypeConvertor.castToDateTime(value); // DateTimeType
672          return value;
673        default: return super.setProperty(hash, name, value);
674        }
675
676      }
677
678      @Override
679      public Base setProperty(String name, Base value) throws FHIRException {
680        if (name.equals("lotNumber")) {
681          this.lotNumber = TypeConvertor.castToString(value); // StringType
682        } else if (name.equals("expirationDate")) {
683          this.expirationDate = TypeConvertor.castToDateTime(value); // DateTimeType
684        } else
685          return super.setProperty(name, value);
686        return value;
687      }
688
689  @Override
690  public void removeChild(String name, Base value) throws FHIRException {
691        if (name.equals("lotNumber")) {
692          this.lotNumber = null;
693        } else if (name.equals("expirationDate")) {
694          this.expirationDate = null;
695        } else
696          super.removeChild(name, value);
697        
698      }
699
700      @Override
701      public Base makeProperty(int hash, String name) throws FHIRException {
702        switch (hash) {
703        case 462547450:  return getLotNumberElement();
704        case -668811523:  return getExpirationDateElement();
705        default: return super.makeProperty(hash, name);
706        }
707
708      }
709
710      @Override
711      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
712        switch (hash) {
713        case 462547450: /*lotNumber*/ return new String[] {"string"};
714        case -668811523: /*expirationDate*/ return new String[] {"dateTime"};
715        default: return super.getTypesForProperty(hash, name);
716        }
717
718      }
719
720      @Override
721      public Base addChild(String name) throws FHIRException {
722        if (name.equals("lotNumber")) {
723          throw new FHIRException("Cannot call addChild on a singleton property Medication.batch.lotNumber");
724        }
725        else if (name.equals("expirationDate")) {
726          throw new FHIRException("Cannot call addChild on a singleton property Medication.batch.expirationDate");
727        }
728        else
729          return super.addChild(name);
730      }
731
732      public MedicationBatchComponent copy() {
733        MedicationBatchComponent dst = new MedicationBatchComponent();
734        copyValues(dst);
735        return dst;
736      }
737
738      public void copyValues(MedicationBatchComponent dst) {
739        super.copyValues(dst);
740        dst.lotNumber = lotNumber == null ? null : lotNumber.copy();
741        dst.expirationDate = expirationDate == null ? null : expirationDate.copy();
742      }
743
744      @Override
745      public boolean equalsDeep(Base other_) {
746        if (!super.equalsDeep(other_))
747          return false;
748        if (!(other_ instanceof MedicationBatchComponent))
749          return false;
750        MedicationBatchComponent o = (MedicationBatchComponent) other_;
751        return compareDeep(lotNumber, o.lotNumber, true) && compareDeep(expirationDate, o.expirationDate, true)
752          ;
753      }
754
755      @Override
756      public boolean equalsShallow(Base other_) {
757        if (!super.equalsShallow(other_))
758          return false;
759        if (!(other_ instanceof MedicationBatchComponent))
760          return false;
761        MedicationBatchComponent o = (MedicationBatchComponent) other_;
762        return compareValues(lotNumber, o.lotNumber, true) && compareValues(expirationDate, o.expirationDate, true)
763          ;
764      }
765
766      public boolean isEmpty() {
767        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(lotNumber, expirationDate
768          );
769      }
770
771  public String fhirType() {
772    return "Medication.batch";
773
774  }
775
776  }
777
778    /**
779     * Business identifier for this medication.
780     */
781    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
782    @Description(shortDefinition="Business identifier for this medication", formalDefinition="Business identifier for this medication." )
783    protected List<Identifier> identifier;
784
785    /**
786     * A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems.
787     */
788    @Child(name = "code", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=true)
789    @Description(shortDefinition="Codes that identify this medication", formalDefinition="A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems." )
790    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-codes")
791    protected CodeableConcept code;
792
793    /**
794     * A code to indicate if the medication is in active use.
795     */
796    @Child(name = "status", type = {CodeType.class}, order=2, min=0, max=1, modifier=true, summary=true)
797    @Description(shortDefinition="active | inactive | entered-in-error", formalDefinition="A code to indicate if the medication is in active use." )
798    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-status")
799    protected Enumeration<MedicationStatusCodes> status;
800
801    /**
802     * The company or other legal entity that has authorization, from the appropriate drug regulatory authority,  to market a medicine in one or more jurisdictions.  Typically abbreviated MAH.Note:  The MAH may manufacture the product and may also contract the manufacturing of the product to one or more companies (organizations).
803     */
804    @Child(name = "marketingAuthorizationHolder", type = {Organization.class}, order=3, min=0, max=1, modifier=false, summary=true)
805    @Description(shortDefinition="Organization that has authorization to market medication", formalDefinition="The company or other legal entity that has authorization, from the appropriate drug regulatory authority,  to market a medicine in one or more jurisdictions.  Typically abbreviated MAH.Note:  The MAH may manufacture the product and may also contract the manufacturing of the product to one or more companies (organizations)." )
806    protected Reference marketingAuthorizationHolder;
807
808    /**
809     * Describes the form of the item.  Powder; tablets; capsule.
810     */
811    @Child(name = "doseForm", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
812    @Description(shortDefinition="powder | tablets | capsule +", formalDefinition="Describes the form of the item.  Powder; tablets; capsule." )
813    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-form-codes")
814    protected CodeableConcept doseForm;
815
816    /**
817     * When the specified product code does not infer a package size, this is the specific amount of drug in the product.  For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.).
818     */
819    @Child(name = "totalVolume", type = {Quantity.class}, order=5, min=0, max=1, modifier=false, summary=true)
820    @Description(shortDefinition="When the specified product code does not infer a package size, this is the specific amount of drug in the product", formalDefinition="When the specified product code does not infer a package size, this is the specific amount of drug in the product.  For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.)." )
821    protected Quantity totalVolume;
822
823    /**
824     * Identifies a particular constituent of interest in the product.
825     */
826    @Child(name = "ingredient", type = {}, order=6, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
827    @Description(shortDefinition="Active or inactive ingredient", formalDefinition="Identifies a particular constituent of interest in the product." )
828    protected List<MedicationIngredientComponent> ingredient;
829
830    /**
831     * Information that only applies to packages (not products).
832     */
833    @Child(name = "batch", type = {}, order=7, min=0, max=1, modifier=false, summary=false)
834    @Description(shortDefinition="Details about packaged medications", formalDefinition="Information that only applies to packages (not products)." )
835    protected MedicationBatchComponent batch;
836
837    /**
838     * A reference to a knowledge resource that provides more information about this medication.
839     */
840    @Child(name = "definition", type = {MedicationKnowledge.class}, order=8, min=0, max=1, modifier=false, summary=false)
841    @Description(shortDefinition="Knowledge about this medication", formalDefinition="A reference to a knowledge resource that provides more information about this medication." )
842    protected Reference definition;
843
844    private static final long serialVersionUID = 603813239L;
845
846  /**
847   * Constructor
848   */
849    public Medication() {
850      super();
851    }
852
853    /**
854     * @return {@link #identifier} (Business identifier for this medication.)
855     */
856    public List<Identifier> getIdentifier() { 
857      if (this.identifier == null)
858        this.identifier = new ArrayList<Identifier>();
859      return this.identifier;
860    }
861
862    /**
863     * @return Returns a reference to <code>this</code> for easy method chaining
864     */
865    public Medication setIdentifier(List<Identifier> theIdentifier) { 
866      this.identifier = theIdentifier;
867      return this;
868    }
869
870    public boolean hasIdentifier() { 
871      if (this.identifier == null)
872        return false;
873      for (Identifier item : this.identifier)
874        if (!item.isEmpty())
875          return true;
876      return false;
877    }
878
879    public Identifier addIdentifier() { //3
880      Identifier t = new Identifier();
881      if (this.identifier == null)
882        this.identifier = new ArrayList<Identifier>();
883      this.identifier.add(t);
884      return t;
885    }
886
887    public Medication addIdentifier(Identifier t) { //3
888      if (t == null)
889        return this;
890      if (this.identifier == null)
891        this.identifier = new ArrayList<Identifier>();
892      this.identifier.add(t);
893      return this;
894    }
895
896    /**
897     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
898     */
899    public Identifier getIdentifierFirstRep() { 
900      if (getIdentifier().isEmpty()) {
901        addIdentifier();
902      }
903      return getIdentifier().get(0);
904    }
905
906    /**
907     * @return {@link #code} (A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems.)
908     */
909    public CodeableConcept getCode() { 
910      if (this.code == null)
911        if (Configuration.errorOnAutoCreate())
912          throw new Error("Attempt to auto-create Medication.code");
913        else if (Configuration.doAutoCreate())
914          this.code = new CodeableConcept(); // cc
915      return this.code;
916    }
917
918    public boolean hasCode() { 
919      return this.code != null && !this.code.isEmpty();
920    }
921
922    /**
923     * @param value {@link #code} (A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems.)
924     */
925    public Medication setCode(CodeableConcept value) { 
926      this.code = value;
927      return this;
928    }
929
930    /**
931     * @return {@link #status} (A code to indicate if the medication is in active use.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
932     */
933    public Enumeration<MedicationStatusCodes> getStatusElement() { 
934      if (this.status == null)
935        if (Configuration.errorOnAutoCreate())
936          throw new Error("Attempt to auto-create Medication.status");
937        else if (Configuration.doAutoCreate())
938          this.status = new Enumeration<MedicationStatusCodes>(new MedicationStatusCodesEnumFactory()); // bb
939      return this.status;
940    }
941
942    public boolean hasStatusElement() { 
943      return this.status != null && !this.status.isEmpty();
944    }
945
946    public boolean hasStatus() { 
947      return this.status != null && !this.status.isEmpty();
948    }
949
950    /**
951     * @param value {@link #status} (A code to indicate if the medication is in active use.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
952     */
953    public Medication setStatusElement(Enumeration<MedicationStatusCodes> value) { 
954      this.status = value;
955      return this;
956    }
957
958    /**
959     * @return A code to indicate if the medication is in active use.
960     */
961    public MedicationStatusCodes getStatus() { 
962      return this.status == null ? null : this.status.getValue();
963    }
964
965    /**
966     * @param value A code to indicate if the medication is in active use.
967     */
968    public Medication setStatus(MedicationStatusCodes value) { 
969      if (value == null)
970        this.status = null;
971      else {
972        if (this.status == null)
973          this.status = new Enumeration<MedicationStatusCodes>(new MedicationStatusCodesEnumFactory());
974        this.status.setValue(value);
975      }
976      return this;
977    }
978
979    /**
980     * @return {@link #marketingAuthorizationHolder} (The company or other legal entity that has authorization, from the appropriate drug regulatory authority,  to market a medicine in one or more jurisdictions.  Typically abbreviated MAH.Note:  The MAH may manufacture the product and may also contract the manufacturing of the product to one or more companies (organizations).)
981     */
982    public Reference getMarketingAuthorizationHolder() { 
983      if (this.marketingAuthorizationHolder == null)
984        if (Configuration.errorOnAutoCreate())
985          throw new Error("Attempt to auto-create Medication.marketingAuthorizationHolder");
986        else if (Configuration.doAutoCreate())
987          this.marketingAuthorizationHolder = new Reference(); // cc
988      return this.marketingAuthorizationHolder;
989    }
990
991    public boolean hasMarketingAuthorizationHolder() { 
992      return this.marketingAuthorizationHolder != null && !this.marketingAuthorizationHolder.isEmpty();
993    }
994
995    /**
996     * @param value {@link #marketingAuthorizationHolder} (The company or other legal entity that has authorization, from the appropriate drug regulatory authority,  to market a medicine in one or more jurisdictions.  Typically abbreviated MAH.Note:  The MAH may manufacture the product and may also contract the manufacturing of the product to one or more companies (organizations).)
997     */
998    public Medication setMarketingAuthorizationHolder(Reference value) { 
999      this.marketingAuthorizationHolder = value;
1000      return this;
1001    }
1002
1003    /**
1004     * @return {@link #doseForm} (Describes the form of the item.  Powder; tablets; capsule.)
1005     */
1006    public CodeableConcept getDoseForm() { 
1007      if (this.doseForm == null)
1008        if (Configuration.errorOnAutoCreate())
1009          throw new Error("Attempt to auto-create Medication.doseForm");
1010        else if (Configuration.doAutoCreate())
1011          this.doseForm = new CodeableConcept(); // cc
1012      return this.doseForm;
1013    }
1014
1015    public boolean hasDoseForm() { 
1016      return this.doseForm != null && !this.doseForm.isEmpty();
1017    }
1018
1019    /**
1020     * @param value {@link #doseForm} (Describes the form of the item.  Powder; tablets; capsule.)
1021     */
1022    public Medication setDoseForm(CodeableConcept value) { 
1023      this.doseForm = value;
1024      return this;
1025    }
1026
1027    /**
1028     * @return {@link #totalVolume} (When the specified product code does not infer a package size, this is the specific amount of drug in the product.  For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.).)
1029     */
1030    public Quantity getTotalVolume() { 
1031      if (this.totalVolume == null)
1032        if (Configuration.errorOnAutoCreate())
1033          throw new Error("Attempt to auto-create Medication.totalVolume");
1034        else if (Configuration.doAutoCreate())
1035          this.totalVolume = new Quantity(); // cc
1036      return this.totalVolume;
1037    }
1038
1039    public boolean hasTotalVolume() { 
1040      return this.totalVolume != null && !this.totalVolume.isEmpty();
1041    }
1042
1043    /**
1044     * @param value {@link #totalVolume} (When the specified product code does not infer a package size, this is the specific amount of drug in the product.  For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.).)
1045     */
1046    public Medication setTotalVolume(Quantity value) { 
1047      this.totalVolume = value;
1048      return this;
1049    }
1050
1051    /**
1052     * @return {@link #ingredient} (Identifies a particular constituent of interest in the product.)
1053     */
1054    public List<MedicationIngredientComponent> getIngredient() { 
1055      if (this.ingredient == null)
1056        this.ingredient = new ArrayList<MedicationIngredientComponent>();
1057      return this.ingredient;
1058    }
1059
1060    /**
1061     * @return Returns a reference to <code>this</code> for easy method chaining
1062     */
1063    public Medication setIngredient(List<MedicationIngredientComponent> theIngredient) { 
1064      this.ingredient = theIngredient;
1065      return this;
1066    }
1067
1068    public boolean hasIngredient() { 
1069      if (this.ingredient == null)
1070        return false;
1071      for (MedicationIngredientComponent item : this.ingredient)
1072        if (!item.isEmpty())
1073          return true;
1074      return false;
1075    }
1076
1077    public MedicationIngredientComponent addIngredient() { //3
1078      MedicationIngredientComponent t = new MedicationIngredientComponent();
1079      if (this.ingredient == null)
1080        this.ingredient = new ArrayList<MedicationIngredientComponent>();
1081      this.ingredient.add(t);
1082      return t;
1083    }
1084
1085    public Medication addIngredient(MedicationIngredientComponent t) { //3
1086      if (t == null)
1087        return this;
1088      if (this.ingredient == null)
1089        this.ingredient = new ArrayList<MedicationIngredientComponent>();
1090      this.ingredient.add(t);
1091      return this;
1092    }
1093
1094    /**
1095     * @return The first repetition of repeating field {@link #ingredient}, creating it if it does not already exist {3}
1096     */
1097    public MedicationIngredientComponent getIngredientFirstRep() { 
1098      if (getIngredient().isEmpty()) {
1099        addIngredient();
1100      }
1101      return getIngredient().get(0);
1102    }
1103
1104    /**
1105     * @return {@link #batch} (Information that only applies to packages (not products).)
1106     */
1107    public MedicationBatchComponent getBatch() { 
1108      if (this.batch == null)
1109        if (Configuration.errorOnAutoCreate())
1110          throw new Error("Attempt to auto-create Medication.batch");
1111        else if (Configuration.doAutoCreate())
1112          this.batch = new MedicationBatchComponent(); // cc
1113      return this.batch;
1114    }
1115
1116    public boolean hasBatch() { 
1117      return this.batch != null && !this.batch.isEmpty();
1118    }
1119
1120    /**
1121     * @param value {@link #batch} (Information that only applies to packages (not products).)
1122     */
1123    public Medication setBatch(MedicationBatchComponent value) { 
1124      this.batch = value;
1125      return this;
1126    }
1127
1128    /**
1129     * @return {@link #definition} (A reference to a knowledge resource that provides more information about this medication.)
1130     */
1131    public Reference getDefinition() { 
1132      if (this.definition == null)
1133        if (Configuration.errorOnAutoCreate())
1134          throw new Error("Attempt to auto-create Medication.definition");
1135        else if (Configuration.doAutoCreate())
1136          this.definition = new Reference(); // cc
1137      return this.definition;
1138    }
1139
1140    public boolean hasDefinition() { 
1141      return this.definition != null && !this.definition.isEmpty();
1142    }
1143
1144    /**
1145     * @param value {@link #definition} (A reference to a knowledge resource that provides more information about this medication.)
1146     */
1147    public Medication setDefinition(Reference value) { 
1148      this.definition = value;
1149      return this;
1150    }
1151
1152      protected void listChildren(List<Property> children) {
1153        super.listChildren(children);
1154        children.add(new Property("identifier", "Identifier", "Business identifier for this medication.", 0, java.lang.Integer.MAX_VALUE, identifier));
1155        children.add(new Property("code", "CodeableConcept", "A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems.", 0, 1, code));
1156        children.add(new Property("status", "code", "A code to indicate if the medication is in active use.", 0, 1, status));
1157        children.add(new Property("marketingAuthorizationHolder", "Reference(Organization)", "The company or other legal entity that has authorization, from the appropriate drug regulatory authority,  to market a medicine in one or more jurisdictions.  Typically abbreviated MAH.Note:  The MAH may manufacture the product and may also contract the manufacturing of the product to one or more companies (organizations).", 0, 1, marketingAuthorizationHolder));
1158        children.add(new Property("doseForm", "CodeableConcept", "Describes the form of the item.  Powder; tablets; capsule.", 0, 1, doseForm));
1159        children.add(new Property("totalVolume", "Quantity", "When the specified product code does not infer a package size, this is the specific amount of drug in the product.  For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.).", 0, 1, totalVolume));
1160        children.add(new Property("ingredient", "", "Identifies a particular constituent of interest in the product.", 0, java.lang.Integer.MAX_VALUE, ingredient));
1161        children.add(new Property("batch", "", "Information that only applies to packages (not products).", 0, 1, batch));
1162        children.add(new Property("definition", "Reference(MedicationKnowledge)", "A reference to a knowledge resource that provides more information about this medication.", 0, 1, definition));
1163      }
1164
1165      @Override
1166      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1167        switch (_hash) {
1168        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Business identifier for this medication.", 0, java.lang.Integer.MAX_VALUE, identifier);
1169        case 3059181: /*code*/  return new Property("code", "CodeableConcept", "A code (or set of codes) that specify this medication, or a textual description if no code is available. Usage note: This could be a standard medication code such as a code from RxNorm, SNOMED CT, IDMP etc. It could also be a national or local formulary code, optionally with translations to other code systems.", 0, 1, code);
1170        case -892481550: /*status*/  return new Property("status", "code", "A code to indicate if the medication is in active use.", 0, 1, status);
1171        case -1565971585: /*marketingAuthorizationHolder*/  return new Property("marketingAuthorizationHolder", "Reference(Organization)", "The company or other legal entity that has authorization, from the appropriate drug regulatory authority,  to market a medicine in one or more jurisdictions.  Typically abbreviated MAH.Note:  The MAH may manufacture the product and may also contract the manufacturing of the product to one or more companies (organizations).", 0, 1, marketingAuthorizationHolder);
1172        case 1303858817: /*doseForm*/  return new Property("doseForm", "CodeableConcept", "Describes the form of the item.  Powder; tablets; capsule.", 0, 1, doseForm);
1173        case -654431362: /*totalVolume*/  return new Property("totalVolume", "Quantity", "When the specified product code does not infer a package size, this is the specific amount of drug in the product.  For example, when specifying a product that has the same strength (For example, Insulin glargine 100 unit per mL solution for injection), this attribute provides additional clarification of the package amount (For example, 3 mL, 10mL, etc.).", 0, 1, totalVolume);
1174        case -206409263: /*ingredient*/  return new Property("ingredient", "", "Identifies a particular constituent of interest in the product.", 0, java.lang.Integer.MAX_VALUE, ingredient);
1175        case 93509434: /*batch*/  return new Property("batch", "", "Information that only applies to packages (not products).", 0, 1, batch);
1176        case -1014418093: /*definition*/  return new Property("definition", "Reference(MedicationKnowledge)", "A reference to a knowledge resource that provides more information about this medication.", 0, 1, definition);
1177        default: return super.getNamedProperty(_hash, _name, _checkValid);
1178        }
1179
1180      }
1181
1182      @Override
1183      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1184        switch (hash) {
1185        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1186        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
1187        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<MedicationStatusCodes>
1188        case -1565971585: /*marketingAuthorizationHolder*/ return this.marketingAuthorizationHolder == null ? new Base[0] : new Base[] {this.marketingAuthorizationHolder}; // Reference
1189        case 1303858817: /*doseForm*/ return this.doseForm == null ? new Base[0] : new Base[] {this.doseForm}; // CodeableConcept
1190        case -654431362: /*totalVolume*/ return this.totalVolume == null ? new Base[0] : new Base[] {this.totalVolume}; // Quantity
1191        case -206409263: /*ingredient*/ return this.ingredient == null ? new Base[0] : this.ingredient.toArray(new Base[this.ingredient.size()]); // MedicationIngredientComponent
1192        case 93509434: /*batch*/ return this.batch == null ? new Base[0] : new Base[] {this.batch}; // MedicationBatchComponent
1193        case -1014418093: /*definition*/ return this.definition == null ? new Base[0] : new Base[] {this.definition}; // Reference
1194        default: return super.getProperty(hash, name, checkValid);
1195        }
1196
1197      }
1198
1199      @Override
1200      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1201        switch (hash) {
1202        case -1618432855: // identifier
1203          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1204          return value;
1205        case 3059181: // code
1206          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1207          return value;
1208        case -892481550: // status
1209          value = new MedicationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1210          this.status = (Enumeration) value; // Enumeration<MedicationStatusCodes>
1211          return value;
1212        case -1565971585: // marketingAuthorizationHolder
1213          this.marketingAuthorizationHolder = TypeConvertor.castToReference(value); // Reference
1214          return value;
1215        case 1303858817: // doseForm
1216          this.doseForm = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1217          return value;
1218        case -654431362: // totalVolume
1219          this.totalVolume = TypeConvertor.castToQuantity(value); // Quantity
1220          return value;
1221        case -206409263: // ingredient
1222          this.getIngredient().add((MedicationIngredientComponent) value); // MedicationIngredientComponent
1223          return value;
1224        case 93509434: // batch
1225          this.batch = (MedicationBatchComponent) value; // MedicationBatchComponent
1226          return value;
1227        case -1014418093: // definition
1228          this.definition = TypeConvertor.castToReference(value); // Reference
1229          return value;
1230        default: return super.setProperty(hash, name, value);
1231        }
1232
1233      }
1234
1235      @Override
1236      public Base setProperty(String name, Base value) throws FHIRException {
1237        if (name.equals("identifier")) {
1238          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1239        } else if (name.equals("code")) {
1240          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1241        } else if (name.equals("status")) {
1242          value = new MedicationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1243          this.status = (Enumeration) value; // Enumeration<MedicationStatusCodes>
1244        } else if (name.equals("marketingAuthorizationHolder")) {
1245          this.marketingAuthorizationHolder = TypeConvertor.castToReference(value); // Reference
1246        } else if (name.equals("doseForm")) {
1247          this.doseForm = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1248        } else if (name.equals("totalVolume")) {
1249          this.totalVolume = TypeConvertor.castToQuantity(value); // Quantity
1250        } else if (name.equals("ingredient")) {
1251          this.getIngredient().add((MedicationIngredientComponent) value);
1252        } else if (name.equals("batch")) {
1253          this.batch = (MedicationBatchComponent) value; // MedicationBatchComponent
1254        } else if (name.equals("definition")) {
1255          this.definition = TypeConvertor.castToReference(value); // Reference
1256        } else
1257          return super.setProperty(name, value);
1258        return value;
1259      }
1260
1261  @Override
1262  public void removeChild(String name, Base value) throws FHIRException {
1263        if (name.equals("identifier")) {
1264          this.getIdentifier().remove(value);
1265        } else if (name.equals("code")) {
1266          this.code = null;
1267        } else if (name.equals("status")) {
1268          value = new MedicationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1269          this.status = (Enumeration) value; // Enumeration<MedicationStatusCodes>
1270        } else if (name.equals("marketingAuthorizationHolder")) {
1271          this.marketingAuthorizationHolder = null;
1272        } else if (name.equals("doseForm")) {
1273          this.doseForm = null;
1274        } else if (name.equals("totalVolume")) {
1275          this.totalVolume = null;
1276        } else if (name.equals("ingredient")) {
1277          this.getIngredient().remove((MedicationIngredientComponent) value);
1278        } else if (name.equals("batch")) {
1279          this.batch = (MedicationBatchComponent) value; // MedicationBatchComponent
1280        } else if (name.equals("definition")) {
1281          this.definition = null;
1282        } else
1283          super.removeChild(name, value);
1284        
1285      }
1286
1287      @Override
1288      public Base makeProperty(int hash, String name) throws FHIRException {
1289        switch (hash) {
1290        case -1618432855:  return addIdentifier(); 
1291        case 3059181:  return getCode();
1292        case -892481550:  return getStatusElement();
1293        case -1565971585:  return getMarketingAuthorizationHolder();
1294        case 1303858817:  return getDoseForm();
1295        case -654431362:  return getTotalVolume();
1296        case -206409263:  return addIngredient(); 
1297        case 93509434:  return getBatch();
1298        case -1014418093:  return getDefinition();
1299        default: return super.makeProperty(hash, name);
1300        }
1301
1302      }
1303
1304      @Override
1305      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1306        switch (hash) {
1307        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1308        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
1309        case -892481550: /*status*/ return new String[] {"code"};
1310        case -1565971585: /*marketingAuthorizationHolder*/ return new String[] {"Reference"};
1311        case 1303858817: /*doseForm*/ return new String[] {"CodeableConcept"};
1312        case -654431362: /*totalVolume*/ return new String[] {"Quantity"};
1313        case -206409263: /*ingredient*/ return new String[] {};
1314        case 93509434: /*batch*/ return new String[] {};
1315        case -1014418093: /*definition*/ return new String[] {"Reference"};
1316        default: return super.getTypesForProperty(hash, name);
1317        }
1318
1319      }
1320
1321      @Override
1322      public Base addChild(String name) throws FHIRException {
1323        if (name.equals("identifier")) {
1324          return addIdentifier();
1325        }
1326        else if (name.equals("code")) {
1327          this.code = new CodeableConcept();
1328          return this.code;
1329        }
1330        else if (name.equals("status")) {
1331          throw new FHIRException("Cannot call addChild on a singleton property Medication.status");
1332        }
1333        else if (name.equals("marketingAuthorizationHolder")) {
1334          this.marketingAuthorizationHolder = new Reference();
1335          return this.marketingAuthorizationHolder;
1336        }
1337        else if (name.equals("doseForm")) {
1338          this.doseForm = new CodeableConcept();
1339          return this.doseForm;
1340        }
1341        else if (name.equals("totalVolume")) {
1342          this.totalVolume = new Quantity();
1343          return this.totalVolume;
1344        }
1345        else if (name.equals("ingredient")) {
1346          return addIngredient();
1347        }
1348        else if (name.equals("batch")) {
1349          this.batch = new MedicationBatchComponent();
1350          return this.batch;
1351        }
1352        else if (name.equals("definition")) {
1353          this.definition = new Reference();
1354          return this.definition;
1355        }
1356        else
1357          return super.addChild(name);
1358      }
1359
1360  public String fhirType() {
1361    return "Medication";
1362
1363  }
1364
1365      public Medication copy() {
1366        Medication dst = new Medication();
1367        copyValues(dst);
1368        return dst;
1369      }
1370
1371      public void copyValues(Medication dst) {
1372        super.copyValues(dst);
1373        if (identifier != null) {
1374          dst.identifier = new ArrayList<Identifier>();
1375          for (Identifier i : identifier)
1376            dst.identifier.add(i.copy());
1377        };
1378        dst.code = code == null ? null : code.copy();
1379        dst.status = status == null ? null : status.copy();
1380        dst.marketingAuthorizationHolder = marketingAuthorizationHolder == null ? null : marketingAuthorizationHolder.copy();
1381        dst.doseForm = doseForm == null ? null : doseForm.copy();
1382        dst.totalVolume = totalVolume == null ? null : totalVolume.copy();
1383        if (ingredient != null) {
1384          dst.ingredient = new ArrayList<MedicationIngredientComponent>();
1385          for (MedicationIngredientComponent i : ingredient)
1386            dst.ingredient.add(i.copy());
1387        };
1388        dst.batch = batch == null ? null : batch.copy();
1389        dst.definition = definition == null ? null : definition.copy();
1390      }
1391
1392      protected Medication typedCopy() {
1393        return copy();
1394      }
1395
1396      @Override
1397      public boolean equalsDeep(Base other_) {
1398        if (!super.equalsDeep(other_))
1399          return false;
1400        if (!(other_ instanceof Medication))
1401          return false;
1402        Medication o = (Medication) other_;
1403        return compareDeep(identifier, o.identifier, true) && compareDeep(code, o.code, true) && compareDeep(status, o.status, true)
1404           && compareDeep(marketingAuthorizationHolder, o.marketingAuthorizationHolder, true) && compareDeep(doseForm, o.doseForm, true)
1405           && compareDeep(totalVolume, o.totalVolume, true) && compareDeep(ingredient, o.ingredient, true)
1406           && compareDeep(batch, o.batch, true) && compareDeep(definition, o.definition, true);
1407      }
1408
1409      @Override
1410      public boolean equalsShallow(Base other_) {
1411        if (!super.equalsShallow(other_))
1412          return false;
1413        if (!(other_ instanceof Medication))
1414          return false;
1415        Medication o = (Medication) other_;
1416        return compareValues(status, o.status, true);
1417      }
1418
1419      public boolean isEmpty() {
1420        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, code, status
1421          , marketingAuthorizationHolder, doseForm, totalVolume, ingredient, batch, definition
1422          );
1423      }
1424
1425  @Override
1426  public ResourceType getResourceType() {
1427    return ResourceType.Medication;
1428   }
1429
1430 /**
1431   * Search parameter: <b>expiration-date</b>
1432   * <p>
1433   * Description: <b>Returns medications in a batch with this expiration date</b><br>
1434   * Type: <b>date</b><br>
1435   * Path: <b>Medication.batch.expirationDate</b><br>
1436   * </p>
1437   */
1438  @SearchParamDefinition(name="expiration-date", path="Medication.batch.expirationDate", description="Returns medications in a batch with this expiration date", type="date" )
1439  public static final String SP_EXPIRATION_DATE = "expiration-date";
1440 /**
1441   * <b>Fluent Client</b> search parameter constant for <b>expiration-date</b>
1442   * <p>
1443   * Description: <b>Returns medications in a batch with this expiration date</b><br>
1444   * Type: <b>date</b><br>
1445   * Path: <b>Medication.batch.expirationDate</b><br>
1446   * </p>
1447   */
1448  public static final ca.uhn.fhir.rest.gclient.DateClientParam EXPIRATION_DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EXPIRATION_DATE);
1449
1450 /**
1451   * Search parameter: <b>form</b>
1452   * <p>
1453   * Description: <b>Returns medications for a specific dose form</b><br>
1454   * Type: <b>token</b><br>
1455   * Path: <b>null</b><br>
1456   * </p>
1457   */
1458  @SearchParamDefinition(name="form", path="", description="Returns medications for a specific dose form", type="token" )
1459  public static final String SP_FORM = "form";
1460 /**
1461   * <b>Fluent Client</b> search parameter constant for <b>form</b>
1462   * <p>
1463   * Description: <b>Returns medications for a specific dose form</b><br>
1464   * Type: <b>token</b><br>
1465   * Path: <b>null</b><br>
1466   * </p>
1467   */
1468  public static final ca.uhn.fhir.rest.gclient.TokenClientParam FORM = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_FORM);
1469
1470 /**
1471   * Search parameter: <b>ingredient-code</b>
1472   * <p>
1473   * Description: <b>Returns medications for this ingredient code</b><br>
1474   * Type: <b>token</b><br>
1475   * Path: <b>Medication.ingredient.item.concept</b><br>
1476   * </p>
1477   */
1478  @SearchParamDefinition(name="ingredient-code", path="Medication.ingredient.item.concept", description="Returns medications for this ingredient code", type="token" )
1479  public static final String SP_INGREDIENT_CODE = "ingredient-code";
1480 /**
1481   * <b>Fluent Client</b> search parameter constant for <b>ingredient-code</b>
1482   * <p>
1483   * Description: <b>Returns medications for this ingredient code</b><br>
1484   * Type: <b>token</b><br>
1485   * Path: <b>Medication.ingredient.item.concept</b><br>
1486   * </p>
1487   */
1488  public static final ca.uhn.fhir.rest.gclient.TokenClientParam INGREDIENT_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_INGREDIENT_CODE);
1489
1490 /**
1491   * Search parameter: <b>ingredient</b>
1492   * <p>
1493   * Description: <b>Returns medications for this ingredient reference</b><br>
1494   * Type: <b>reference</b><br>
1495   * Path: <b>Medication.ingredient.item.reference</b><br>
1496   * </p>
1497   */
1498  @SearchParamDefinition(name="ingredient", path="Medication.ingredient.item.reference", description="Returns medications for this ingredient reference", type="reference", target={Medication.class, Substance.class } )
1499  public static final String SP_INGREDIENT = "ingredient";
1500 /**
1501   * <b>Fluent Client</b> search parameter constant for <b>ingredient</b>
1502   * <p>
1503   * Description: <b>Returns medications for this ingredient reference</b><br>
1504   * Type: <b>reference</b><br>
1505   * Path: <b>Medication.ingredient.item.reference</b><br>
1506   * </p>
1507   */
1508  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam INGREDIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_INGREDIENT);
1509
1510/**
1511   * Constant for fluent queries to be used to add include statements. Specifies
1512   * the path value of "<b>Medication:ingredient</b>".
1513   */
1514  public static final ca.uhn.fhir.model.api.Include INCLUDE_INGREDIENT = new ca.uhn.fhir.model.api.Include("Medication:ingredient").toLocked();
1515
1516 /**
1517   * Search parameter: <b>lot-number</b>
1518   * <p>
1519   * Description: <b>Returns medications in a batch with this lot number</b><br>
1520   * Type: <b>token</b><br>
1521   * Path: <b>Medication.batch.lotNumber</b><br>
1522   * </p>
1523   */
1524  @SearchParamDefinition(name="lot-number", path="Medication.batch.lotNumber", description="Returns medications in a batch with this lot number", type="token" )
1525  public static final String SP_LOT_NUMBER = "lot-number";
1526 /**
1527   * <b>Fluent Client</b> search parameter constant for <b>lot-number</b>
1528   * <p>
1529   * Description: <b>Returns medications in a batch with this lot number</b><br>
1530   * Type: <b>token</b><br>
1531   * Path: <b>Medication.batch.lotNumber</b><br>
1532   * </p>
1533   */
1534  public static final ca.uhn.fhir.rest.gclient.TokenClientParam LOT_NUMBER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_LOT_NUMBER);
1535
1536 /**
1537   * Search parameter: <b>marketingauthorizationholder</b>
1538   * <p>
1539   * Description: <b>Returns medications made or sold for this marketing authorization holder</b><br>
1540   * Type: <b>reference</b><br>
1541   * Path: <b>Medication.marketingAuthorizationHolder</b><br>
1542   * </p>
1543   */
1544  @SearchParamDefinition(name="marketingauthorizationholder", path="Medication.marketingAuthorizationHolder", description="Returns medications made or sold for this marketing authorization holder", type="reference", target={Organization.class } )
1545  public static final String SP_MARKETINGAUTHORIZATIONHOLDER = "marketingauthorizationholder";
1546 /**
1547   * <b>Fluent Client</b> search parameter constant for <b>marketingauthorizationholder</b>
1548   * <p>
1549   * Description: <b>Returns medications made or sold for this marketing authorization holder</b><br>
1550   * Type: <b>reference</b><br>
1551   * Path: <b>Medication.marketingAuthorizationHolder</b><br>
1552   * </p>
1553   */
1554  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam MARKETINGAUTHORIZATIONHOLDER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_MARKETINGAUTHORIZATIONHOLDER);
1555
1556/**
1557   * Constant for fluent queries to be used to add include statements. Specifies
1558   * the path value of "<b>Medication:marketingauthorizationholder</b>".
1559   */
1560  public static final ca.uhn.fhir.model.api.Include INCLUDE_MARKETINGAUTHORIZATIONHOLDER = new ca.uhn.fhir.model.api.Include("Medication:marketingauthorizationholder").toLocked();
1561
1562 /**
1563   * Search parameter: <b>serial-number</b>
1564   * <p>
1565   * Description: <b>Returns medications in a batch with this lot number</b><br>
1566   * Type: <b>token</b><br>
1567   * Path: <b>Medication.identifier</b><br>
1568   * </p>
1569   */
1570  @SearchParamDefinition(name="serial-number", path="Medication.identifier", description="Returns medications in a batch with this lot number", type="token" )
1571  public static final String SP_SERIAL_NUMBER = "serial-number";
1572 /**
1573   * <b>Fluent Client</b> search parameter constant for <b>serial-number</b>
1574   * <p>
1575   * Description: <b>Returns medications in a batch with this lot number</b><br>
1576   * Type: <b>token</b><br>
1577   * Path: <b>Medication.identifier</b><br>
1578   * </p>
1579   */
1580  public static final ca.uhn.fhir.rest.gclient.TokenClientParam SERIAL_NUMBER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_SERIAL_NUMBER);
1581
1582 /**
1583   * Search parameter: <b>status</b>
1584   * <p>
1585   * Description: <b>Returns medications for this status</b><br>
1586   * Type: <b>token</b><br>
1587   * Path: <b>Medication.status</b><br>
1588   * </p>
1589   */
1590  @SearchParamDefinition(name="status", path="Medication.status", description="Returns medications for this status", type="token" )
1591  public static final String SP_STATUS = "status";
1592 /**
1593   * <b>Fluent Client</b> search parameter constant for <b>status</b>
1594   * <p>
1595   * Description: <b>Returns medications for this status</b><br>
1596   * Type: <b>token</b><br>
1597   * Path: <b>Medication.status</b><br>
1598   * </p>
1599   */
1600  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
1601
1602 /**
1603   * Search parameter: <b>code</b>
1604   * <p>
1605   * Description: <b>Multiple Resources: 
1606
1607* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
1608* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
1609* [AuditEvent](auditevent.html): More specific code for the event
1610* [Basic](basic.html): Kind of Resource
1611* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
1612* [Condition](condition.html): Code for the condition
1613* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
1614* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
1615* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
1616* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
1617* [ImagingSelection](imagingselection.html): The imaging selection status
1618* [List](list.html): What the purpose of this list is
1619* [Medication](medication.html): Returns medications for a specific code
1620* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
1621* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
1622* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
1623* [MedicationStatement](medicationstatement.html): Return statements of this medication code
1624* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
1625* [Observation](observation.html): The code of the observation type
1626* [Procedure](procedure.html): A code to identify a  procedure
1627* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
1628* [Task](task.html): Search by task code
1629</b><br>
1630   * Type: <b>token</b><br>
1631   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
1632   * </p>
1633   */
1634  @SearchParamDefinition(name="code", path="AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code", description="Multiple Resources: \r\n\r\n* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted\r\n* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance\r\n* [AuditEvent](auditevent.html): More specific code for the event\r\n* [Basic](basic.html): Kind of Resource\r\n* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code\r\n* [Condition](condition.html): Code for the condition\r\n* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.\r\n* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered\r\n* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code\r\n* [ImagingSelection](imagingselection.html): The imaging selection status\r\n* [List](list.html): What the purpose of this list is\r\n* [Medication](medication.html): Returns medications for a specific code\r\n* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code\r\n* [MedicationStatement](medicationstatement.html): Return statements of this medication code\r\n* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake\r\n* [Observation](observation.html): The code of the observation type\r\n* [Procedure](procedure.html): A code to identify a  procedure\r\n* [RequestOrchestration](requestorchestration.html): The code of the request orchestration\r\n* [Task](task.html): Search by task code\r\n", type="token" )
1635  public static final String SP_CODE = "code";
1636 /**
1637   * <b>Fluent Client</b> search parameter constant for <b>code</b>
1638   * <p>
1639   * Description: <b>Multiple Resources: 
1640
1641* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
1642* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
1643* [AuditEvent](auditevent.html): More specific code for the event
1644* [Basic](basic.html): Kind of Resource
1645* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
1646* [Condition](condition.html): Code for the condition
1647* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
1648* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
1649* [DiagnosticReport](diagnosticreport.html): The code for the report, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result
1650* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
1651* [ImagingSelection](imagingselection.html): The imaging selection status
1652* [List](list.html): What the purpose of this list is
1653* [Medication](medication.html): Returns medications for a specific code
1654* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
1655* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
1656* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
1657* [MedicationStatement](medicationstatement.html): Return statements of this medication code
1658* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
1659* [Observation](observation.html): The code of the observation type
1660* [Procedure](procedure.html): A code to identify a  procedure
1661* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
1662* [Task](task.html): Search by task code
1663</b><br>
1664   * Type: <b>token</b><br>
1665   * Path: <b>AdverseEvent.code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | AuditEvent.code | Basic.code | ChargeItem.code | Condition.code | DetectedIssue.code | DeviceRequest.code.concept | DiagnosticReport.code | FamilyMemberHistory.condition.code | ImagingSelection.status | List.code | Medication.code | MedicationAdministration.medication.concept | MedicationDispense.medication.concept | MedicationRequest.medication.concept | MedicationStatement.medication.concept | NutritionIntake.code | Observation.code | Procedure.code | RequestOrchestration.code | Task.code</b><br>
1666   * </p>
1667   */
1668  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
1669
1670 /**
1671   * Search parameter: <b>identifier</b>
1672   * <p>
1673   * Description: <b>Multiple Resources: 
1674
1675* [Account](account.html): Account number
1676* [AdverseEvent](adverseevent.html): Business identifier for the event
1677* [AllergyIntolerance](allergyintolerance.html): External ids for this item
1678* [Appointment](appointment.html): An Identifier of the Appointment
1679* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
1680* [Basic](basic.html): Business identifier
1681* [BodyStructure](bodystructure.html): Bodystructure identifier
1682* [CarePlan](careplan.html): External Ids for this plan
1683* [CareTeam](careteam.html): External Ids for this team
1684* [ChargeItem](chargeitem.html): Business Identifier for item
1685* [Claim](claim.html): The primary identifier of the financial resource
1686* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
1687* [ClinicalImpression](clinicalimpression.html): Business identifier
1688* [Communication](communication.html): Unique identifier
1689* [CommunicationRequest](communicationrequest.html): Unique identifier
1690* [Composition](composition.html): Version-independent identifier for the Composition
1691* [Condition](condition.html): A unique identifier of the condition record
1692* [Consent](consent.html): Identifier for this record (external references)
1693* [Contract](contract.html): The identity of the contract
1694* [Coverage](coverage.html): The primary identifier of the insured and the coverage
1695* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
1696* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
1697* [DetectedIssue](detectedissue.html): Unique id for the detected issue
1698* [DeviceRequest](devicerequest.html): Business identifier for request/order
1699* [DeviceUsage](deviceusage.html): Search by identifier
1700* [DiagnosticReport](diagnosticreport.html): An identifier for the report
1701* [DocumentReference](documentreference.html): Identifier of the attachment binary
1702* [Encounter](encounter.html): Identifier(s) by which this encounter is known
1703* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
1704* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
1705* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
1706* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
1707* [Flag](flag.html): Business identifier
1708* [Goal](goal.html): External Ids for this goal
1709* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
1710* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
1711* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
1712* [Immunization](immunization.html): Business identifier
1713* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
1714* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
1715* [Invoice](invoice.html): Business Identifier for item
1716* [List](list.html): Business identifier
1717* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
1718* [Medication](medication.html): Returns medications with this external identifier
1719* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
1720* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
1721* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
1722* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
1723* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
1724* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
1725* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
1726* [Observation](observation.html): The unique id for a particular observation
1727* [Person](person.html): A person Identifier
1728* [Procedure](procedure.html): A unique identifier for a procedure
1729* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
1730* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
1731* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
1732* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
1733* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
1734* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
1735* [Specimen](specimen.html): The unique identifier associated with the specimen
1736* [SupplyDelivery](supplydelivery.html): External identifier
1737* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
1738* [Task](task.html): Search for a task instance by its business identifier
1739* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
1740</b><br>
1741   * Type: <b>token</b><br>
1742   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
1743   * </p>
1744   */
1745  @SearchParamDefinition(name="identifier", path="Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier", description="Multiple Resources: \r\n\r\n* [Account](account.html): Account number\r\n* [AdverseEvent](adverseevent.html): Business identifier for the event\r\n* [AllergyIntolerance](allergyintolerance.html): External ids for this item\r\n* [Appointment](appointment.html): An Identifier of the Appointment\r\n* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response\r\n* [Basic](basic.html): Business identifier\r\n* [BodyStructure](bodystructure.html): Bodystructure identifier\r\n* [CarePlan](careplan.html): External Ids for this plan\r\n* [CareTeam](careteam.html): External Ids for this team\r\n* [ChargeItem](chargeitem.html): Business Identifier for item\r\n* [Claim](claim.html): The primary identifier of the financial resource\r\n* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse\r\n* [ClinicalImpression](clinicalimpression.html): Business identifier\r\n* [Communication](communication.html): Unique identifier\r\n* [CommunicationRequest](communicationrequest.html): Unique identifier\r\n* [Composition](composition.html): Version-independent identifier for the Composition\r\n* [Condition](condition.html): A unique identifier of the condition record\r\n* [Consent](consent.html): Identifier for this record (external references)\r\n* [Contract](contract.html): The identity of the contract\r\n* [Coverage](coverage.html): The primary identifier of the insured and the coverage\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier\r\n* [DetectedIssue](detectedissue.html): Unique id for the detected issue\r\n* [DeviceRequest](devicerequest.html): Business identifier for request/order\r\n* [DeviceUsage](deviceusage.html): Search by identifier\r\n* [DiagnosticReport](diagnosticreport.html): An identifier for the report\r\n* [DocumentReference](documentreference.html): Identifier of the attachment binary\r\n* [Encounter](encounter.html): Identifier(s) by which this encounter is known\r\n* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment\r\n* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit\r\n* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier\r\n* [Flag](flag.html): Business identifier\r\n* [Goal](goal.html): External Ids for this goal\r\n* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response\r\n* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection\r\n* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID\r\n* [Immunization](immunization.html): Business identifier\r\n* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier\r\n* [Invoice](invoice.html): Business Identifier for item\r\n* [List](list.html): Business identifier\r\n* [MeasureReport](measurereport.html): External identifier of the measure report to be returned\r\n* [Medication](medication.html): Returns medications with this external identifier\r\n* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier\r\n* [MedicationStatement](medicationstatement.html): Return statements with this external identifier\r\n* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence\r\n* [NutritionIntake](nutritionintake.html): Return statements with this external identifier\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier\r\n* [Observation](observation.html): The unique id for a particular observation\r\n* [Person](person.html): A person Identifier\r\n* [Procedure](procedure.html): A unique identifier for a procedure\r\n* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response\r\n* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson\r\n* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration\r\n* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study\r\n* [RiskAssessment](riskassessment.html): Unique identifier for the assessment\r\n* [ServiceRequest](servicerequest.html): Identifiers assigned to this order\r\n* [Specimen](specimen.html): The unique identifier associated with the specimen\r\n* [SupplyDelivery](supplydelivery.html): External identifier\r\n* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest\r\n* [Task](task.html): Search for a task instance by its business identifier\r\n* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier\r\n", type="token" )
1746  public static final String SP_IDENTIFIER = "identifier";
1747 /**
1748   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
1749   * <p>
1750   * Description: <b>Multiple Resources: 
1751
1752* [Account](account.html): Account number
1753* [AdverseEvent](adverseevent.html): Business identifier for the event
1754* [AllergyIntolerance](allergyintolerance.html): External ids for this item
1755* [Appointment](appointment.html): An Identifier of the Appointment
1756* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
1757* [Basic](basic.html): Business identifier
1758* [BodyStructure](bodystructure.html): Bodystructure identifier
1759* [CarePlan](careplan.html): External Ids for this plan
1760* [CareTeam](careteam.html): External Ids for this team
1761* [ChargeItem](chargeitem.html): Business Identifier for item
1762* [Claim](claim.html): The primary identifier of the financial resource
1763* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
1764* [ClinicalImpression](clinicalimpression.html): Business identifier
1765* [Communication](communication.html): Unique identifier
1766* [CommunicationRequest](communicationrequest.html): Unique identifier
1767* [Composition](composition.html): Version-independent identifier for the Composition
1768* [Condition](condition.html): A unique identifier of the condition record
1769* [Consent](consent.html): Identifier for this record (external references)
1770* [Contract](contract.html): The identity of the contract
1771* [Coverage](coverage.html): The primary identifier of the insured and the coverage
1772* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
1773* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
1774* [DetectedIssue](detectedissue.html): Unique id for the detected issue
1775* [DeviceRequest](devicerequest.html): Business identifier for request/order
1776* [DeviceUsage](deviceusage.html): Search by identifier
1777* [DiagnosticReport](diagnosticreport.html): An identifier for the report
1778* [DocumentReference](documentreference.html): Identifier of the attachment binary
1779* [Encounter](encounter.html): Identifier(s) by which this encounter is known
1780* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
1781* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
1782* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
1783* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
1784* [Flag](flag.html): Business identifier
1785* [Goal](goal.html): External Ids for this goal
1786* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
1787* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
1788* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
1789* [Immunization](immunization.html): Business identifier
1790* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
1791* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
1792* [Invoice](invoice.html): Business Identifier for item
1793* [List](list.html): Business identifier
1794* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
1795* [Medication](medication.html): Returns medications with this external identifier
1796* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
1797* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
1798* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
1799* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
1800* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
1801* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
1802* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
1803* [Observation](observation.html): The unique id for a particular observation
1804* [Person](person.html): A person Identifier
1805* [Procedure](procedure.html): A unique identifier for a procedure
1806* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
1807* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
1808* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
1809* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
1810* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
1811* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
1812* [Specimen](specimen.html): The unique identifier associated with the specimen
1813* [SupplyDelivery](supplydelivery.html): External identifier
1814* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
1815* [Task](task.html): Search for a task instance by its business identifier
1816* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
1817</b><br>
1818   * Type: <b>token</b><br>
1819   * Path: <b>Account.identifier | AdverseEvent.identifier | AllergyIntolerance.identifier | Appointment.identifier | AppointmentResponse.identifier | Basic.identifier | BodyStructure.identifier | CarePlan.identifier | CareTeam.identifier | ChargeItem.identifier | Claim.identifier | ClaimResponse.identifier | ClinicalImpression.identifier | Communication.identifier | CommunicationRequest.identifier | Composition.identifier | Condition.identifier | Consent.identifier | Contract.identifier | Coverage.identifier | CoverageEligibilityRequest.identifier | CoverageEligibilityResponse.identifier | DetectedIssue.identifier | DeviceRequest.identifier | DeviceUsage.identifier | DiagnosticReport.identifier | DocumentReference.identifier | Encounter.identifier | EnrollmentRequest.identifier | EpisodeOfCare.identifier | ExplanationOfBenefit.identifier | FamilyMemberHistory.identifier | Flag.identifier | Goal.identifier | GuidanceResponse.identifier | ImagingSelection.identifier | ImagingStudy.identifier | Immunization.identifier | ImmunizationEvaluation.identifier | ImmunizationRecommendation.identifier | Invoice.identifier | List.identifier | MeasureReport.identifier | Medication.identifier | MedicationAdministration.identifier | MedicationDispense.identifier | MedicationRequest.identifier | MedicationStatement.identifier | MolecularSequence.identifier | NutritionIntake.identifier | NutritionOrder.identifier | Observation.identifier | Person.identifier | Procedure.identifier | QuestionnaireResponse.identifier | RelatedPerson.identifier | RequestOrchestration.identifier | ResearchSubject.identifier | RiskAssessment.identifier | ServiceRequest.identifier | Specimen.identifier | SupplyDelivery.identifier | SupplyRequest.identifier | Task.identifier | VisionPrescription.identifier</b><br>
1820   * </p>
1821   */
1822  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
1823
1824
1825}
1826