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 * Describes the event of a patient consuming or otherwise being administered a medication.  This may be as simple as swallowing a tablet or it may be a long running infusion. Related resources tie this event to the authorizing prescription, and the specific encounter between patient and health care practitioner. This event can also be used to record waste using a status of not-done and the appropriate statusReason.
052 */
053@ResourceDef(name="MedicationAdministration", profile="http://hl7.org/fhir/StructureDefinition/MedicationAdministration")
054public class MedicationAdministration extends DomainResource {
055
056    public enum MedicationAdministrationStatusCodes {
057        /**
058         * The administration has started but has not yet completed.
059         */
060        INPROGRESS, 
061        /**
062         * The administration was terminated prior to any impact on the subject (though preparatory actions may have been taken)
063         */
064        NOTDONE, 
065        /**
066         * Actions implied by the administration have been temporarily halted, but are expected to continue later. May also be called 'suspended'.
067         */
068        ONHOLD, 
069        /**
070         * All actions that are implied by the administration have occurred.
071         */
072        COMPLETED, 
073        /**
074         * The administration was entered in error and therefore nullified.
075         */
076        ENTEREDINERROR, 
077        /**
078         * Actions implied by the administration have been permanently halted, before all of them occurred.
079         */
080        STOPPED, 
081        /**
082         * The authoring system does not know which of the status values currently applies for this request. Note: This concept is not to be used for 'other' - one of the listed statuses is presumed to apply, it's just not known which one.
083         */
084        UNKNOWN, 
085        /**
086         * added to help the parsers with the generic types
087         */
088        NULL;
089        public static MedicationAdministrationStatusCodes fromCode(String codeString) throws FHIRException {
090            if (codeString == null || "".equals(codeString))
091                return null;
092        if ("in-progress".equals(codeString))
093          return INPROGRESS;
094        if ("not-done".equals(codeString))
095          return NOTDONE;
096        if ("on-hold".equals(codeString))
097          return ONHOLD;
098        if ("completed".equals(codeString))
099          return COMPLETED;
100        if ("entered-in-error".equals(codeString))
101          return ENTEREDINERROR;
102        if ("stopped".equals(codeString))
103          return STOPPED;
104        if ("unknown".equals(codeString))
105          return UNKNOWN;
106        if (Configuration.isAcceptInvalidEnums())
107          return null;
108        else
109          throw new FHIRException("Unknown MedicationAdministrationStatusCodes code '"+codeString+"'");
110        }
111        public String toCode() {
112          switch (this) {
113            case INPROGRESS: return "in-progress";
114            case NOTDONE: return "not-done";
115            case ONHOLD: return "on-hold";
116            case COMPLETED: return "completed";
117            case ENTEREDINERROR: return "entered-in-error";
118            case STOPPED: return "stopped";
119            case UNKNOWN: return "unknown";
120            case NULL: return null;
121            default: return "?";
122          }
123        }
124        public String getSystem() {
125          switch (this) {
126            case INPROGRESS: return "http://hl7.org/fhir/CodeSystem/medication-admin-status";
127            case NOTDONE: return "http://hl7.org/fhir/CodeSystem/medication-admin-status";
128            case ONHOLD: return "http://hl7.org/fhir/CodeSystem/medication-admin-status";
129            case COMPLETED: return "http://hl7.org/fhir/CodeSystem/medication-admin-status";
130            case ENTEREDINERROR: return "http://hl7.org/fhir/CodeSystem/medication-admin-status";
131            case STOPPED: return "http://hl7.org/fhir/CodeSystem/medication-admin-status";
132            case UNKNOWN: return "http://hl7.org/fhir/CodeSystem/medication-admin-status";
133            case NULL: return null;
134            default: return "?";
135          }
136        }
137        public String getDefinition() {
138          switch (this) {
139            case INPROGRESS: return "The administration has started but has not yet completed.";
140            case NOTDONE: return "The administration was terminated prior to any impact on the subject (though preparatory actions may have been taken)";
141            case ONHOLD: return "Actions implied by the administration have been temporarily halted, but are expected to continue later. May also be called 'suspended'.";
142            case COMPLETED: return "All actions that are implied by the administration have occurred.";
143            case ENTEREDINERROR: return "The administration was entered in error and therefore nullified.";
144            case STOPPED: return "Actions implied by the administration have been permanently halted, before all of them occurred.";
145            case UNKNOWN: return "The authoring system does not know which of the status values currently applies for this request. Note: This concept is not to be used for 'other' - one of the listed statuses is presumed to apply, it's just not known which one.";
146            case NULL: return null;
147            default: return "?";
148          }
149        }
150        public String getDisplay() {
151          switch (this) {
152            case INPROGRESS: return "In Progress";
153            case NOTDONE: return "Not Done";
154            case ONHOLD: return "On Hold";
155            case COMPLETED: return "Completed";
156            case ENTEREDINERROR: return "Entered in Error";
157            case STOPPED: return "Stopped";
158            case UNKNOWN: return "Unknown";
159            case NULL: return null;
160            default: return "?";
161          }
162        }
163    }
164
165  public static class MedicationAdministrationStatusCodesEnumFactory implements EnumFactory<MedicationAdministrationStatusCodes> {
166    public MedicationAdministrationStatusCodes fromCode(String codeString) throws IllegalArgumentException {
167      if (codeString == null || "".equals(codeString))
168            if (codeString == null || "".equals(codeString))
169                return null;
170        if ("in-progress".equals(codeString))
171          return MedicationAdministrationStatusCodes.INPROGRESS;
172        if ("not-done".equals(codeString))
173          return MedicationAdministrationStatusCodes.NOTDONE;
174        if ("on-hold".equals(codeString))
175          return MedicationAdministrationStatusCodes.ONHOLD;
176        if ("completed".equals(codeString))
177          return MedicationAdministrationStatusCodes.COMPLETED;
178        if ("entered-in-error".equals(codeString))
179          return MedicationAdministrationStatusCodes.ENTEREDINERROR;
180        if ("stopped".equals(codeString))
181          return MedicationAdministrationStatusCodes.STOPPED;
182        if ("unknown".equals(codeString))
183          return MedicationAdministrationStatusCodes.UNKNOWN;
184        throw new IllegalArgumentException("Unknown MedicationAdministrationStatusCodes code '"+codeString+"'");
185        }
186        public Enumeration<MedicationAdministrationStatusCodes> fromType(PrimitiveType<?> code) throws FHIRException {
187          if (code == null)
188            return null;
189          if (code.isEmpty())
190            return new Enumeration<MedicationAdministrationStatusCodes>(this, MedicationAdministrationStatusCodes.NULL, code);
191          String codeString = ((PrimitiveType) code).asStringValue();
192          if (codeString == null || "".equals(codeString))
193            return new Enumeration<MedicationAdministrationStatusCodes>(this, MedicationAdministrationStatusCodes.NULL, code);
194        if ("in-progress".equals(codeString))
195          return new Enumeration<MedicationAdministrationStatusCodes>(this, MedicationAdministrationStatusCodes.INPROGRESS, code);
196        if ("not-done".equals(codeString))
197          return new Enumeration<MedicationAdministrationStatusCodes>(this, MedicationAdministrationStatusCodes.NOTDONE, code);
198        if ("on-hold".equals(codeString))
199          return new Enumeration<MedicationAdministrationStatusCodes>(this, MedicationAdministrationStatusCodes.ONHOLD, code);
200        if ("completed".equals(codeString))
201          return new Enumeration<MedicationAdministrationStatusCodes>(this, MedicationAdministrationStatusCodes.COMPLETED, code);
202        if ("entered-in-error".equals(codeString))
203          return new Enumeration<MedicationAdministrationStatusCodes>(this, MedicationAdministrationStatusCodes.ENTEREDINERROR, code);
204        if ("stopped".equals(codeString))
205          return new Enumeration<MedicationAdministrationStatusCodes>(this, MedicationAdministrationStatusCodes.STOPPED, code);
206        if ("unknown".equals(codeString))
207          return new Enumeration<MedicationAdministrationStatusCodes>(this, MedicationAdministrationStatusCodes.UNKNOWN, code);
208        throw new FHIRException("Unknown MedicationAdministrationStatusCodes code '"+codeString+"'");
209        }
210    public String toCode(MedicationAdministrationStatusCodes code) {
211      if (code == MedicationAdministrationStatusCodes.INPROGRESS)
212        return "in-progress";
213      if (code == MedicationAdministrationStatusCodes.NOTDONE)
214        return "not-done";
215      if (code == MedicationAdministrationStatusCodes.ONHOLD)
216        return "on-hold";
217      if (code == MedicationAdministrationStatusCodes.COMPLETED)
218        return "completed";
219      if (code == MedicationAdministrationStatusCodes.ENTEREDINERROR)
220        return "entered-in-error";
221      if (code == MedicationAdministrationStatusCodes.STOPPED)
222        return "stopped";
223      if (code == MedicationAdministrationStatusCodes.UNKNOWN)
224        return "unknown";
225      return "?";
226      }
227    public String toSystem(MedicationAdministrationStatusCodes code) {
228      return code.getSystem();
229      }
230    }
231
232    @Block()
233    public static class MedicationAdministrationPerformerComponent extends BackboneElement implements IBaseBackboneElement {
234        /**
235         * Distinguishes the type of involvement of the performer in the medication administration.
236         */
237        @Child(name = "function", type = {CodeableConcept.class}, order=1, min=0, max=1, modifier=false, summary=false)
238        @Description(shortDefinition="Type of performance", formalDefinition="Distinguishes the type of involvement of the performer in the medication administration." )
239        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/med-admin-perform-function")
240        protected CodeableConcept function;
241
242        /**
243         * Indicates who or what performed the medication administration.
244         */
245        @Child(name = "actor", type = {CodeableReference.class}, order=2, min=1, max=1, modifier=false, summary=true)
246        @Description(shortDefinition="Who or what performed the medication administration", formalDefinition="Indicates who or what performed the medication administration." )
247        protected CodeableReference actor;
248
249        private static final long serialVersionUID = -1725418144L;
250
251    /**
252     * Constructor
253     */
254      public MedicationAdministrationPerformerComponent() {
255        super();
256      }
257
258    /**
259     * Constructor
260     */
261      public MedicationAdministrationPerformerComponent(CodeableReference actor) {
262        super();
263        this.setActor(actor);
264      }
265
266        /**
267         * @return {@link #function} (Distinguishes the type of involvement of the performer in the medication administration.)
268         */
269        public CodeableConcept getFunction() { 
270          if (this.function == null)
271            if (Configuration.errorOnAutoCreate())
272              throw new Error("Attempt to auto-create MedicationAdministrationPerformerComponent.function");
273            else if (Configuration.doAutoCreate())
274              this.function = new CodeableConcept(); // cc
275          return this.function;
276        }
277
278        public boolean hasFunction() { 
279          return this.function != null && !this.function.isEmpty();
280        }
281
282        /**
283         * @param value {@link #function} (Distinguishes the type of involvement of the performer in the medication administration.)
284         */
285        public MedicationAdministrationPerformerComponent setFunction(CodeableConcept value) { 
286          this.function = value;
287          return this;
288        }
289
290        /**
291         * @return {@link #actor} (Indicates who or what performed the medication administration.)
292         */
293        public CodeableReference getActor() { 
294          if (this.actor == null)
295            if (Configuration.errorOnAutoCreate())
296              throw new Error("Attempt to auto-create MedicationAdministrationPerformerComponent.actor");
297            else if (Configuration.doAutoCreate())
298              this.actor = new CodeableReference(); // cc
299          return this.actor;
300        }
301
302        public boolean hasActor() { 
303          return this.actor != null && !this.actor.isEmpty();
304        }
305
306        /**
307         * @param value {@link #actor} (Indicates who or what performed the medication administration.)
308         */
309        public MedicationAdministrationPerformerComponent setActor(CodeableReference value) { 
310          this.actor = value;
311          return this;
312        }
313
314        protected void listChildren(List<Property> children) {
315          super.listChildren(children);
316          children.add(new Property("function", "CodeableConcept", "Distinguishes the type of involvement of the performer in the medication administration.", 0, 1, function));
317          children.add(new Property("actor", "CodeableReference(Practitioner|PractitionerRole|Patient|RelatedPerson|Device)", "Indicates who or what performed the medication administration.", 0, 1, actor));
318        }
319
320        @Override
321        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
322          switch (_hash) {
323          case 1380938712: /*function*/  return new Property("function", "CodeableConcept", "Distinguishes the type of involvement of the performer in the medication administration.", 0, 1, function);
324          case 92645877: /*actor*/  return new Property("actor", "CodeableReference(Practitioner|PractitionerRole|Patient|RelatedPerson|Device)", "Indicates who or what performed the medication administration.", 0, 1, actor);
325          default: return super.getNamedProperty(_hash, _name, _checkValid);
326          }
327
328        }
329
330      @Override
331      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
332        switch (hash) {
333        case 1380938712: /*function*/ return this.function == null ? new Base[0] : new Base[] {this.function}; // CodeableConcept
334        case 92645877: /*actor*/ return this.actor == null ? new Base[0] : new Base[] {this.actor}; // CodeableReference
335        default: return super.getProperty(hash, name, checkValid);
336        }
337
338      }
339
340      @Override
341      public Base setProperty(int hash, String name, Base value) throws FHIRException {
342        switch (hash) {
343        case 1380938712: // function
344          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
345          return value;
346        case 92645877: // actor
347          this.actor = TypeConvertor.castToCodeableReference(value); // CodeableReference
348          return value;
349        default: return super.setProperty(hash, name, value);
350        }
351
352      }
353
354      @Override
355      public Base setProperty(String name, Base value) throws FHIRException {
356        if (name.equals("function")) {
357          this.function = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
358        } else if (name.equals("actor")) {
359          this.actor = TypeConvertor.castToCodeableReference(value); // CodeableReference
360        } else
361          return super.setProperty(name, value);
362        return value;
363      }
364
365  @Override
366  public void removeChild(String name, Base value) throws FHIRException {
367        if (name.equals("function")) {
368          this.function = null;
369        } else if (name.equals("actor")) {
370          this.actor = null;
371        } else
372          super.removeChild(name, value);
373        
374      }
375
376      @Override
377      public Base makeProperty(int hash, String name) throws FHIRException {
378        switch (hash) {
379        case 1380938712:  return getFunction();
380        case 92645877:  return getActor();
381        default: return super.makeProperty(hash, name);
382        }
383
384      }
385
386      @Override
387      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
388        switch (hash) {
389        case 1380938712: /*function*/ return new String[] {"CodeableConcept"};
390        case 92645877: /*actor*/ return new String[] {"CodeableReference"};
391        default: return super.getTypesForProperty(hash, name);
392        }
393
394      }
395
396      @Override
397      public Base addChild(String name) throws FHIRException {
398        if (name.equals("function")) {
399          this.function = new CodeableConcept();
400          return this.function;
401        }
402        else if (name.equals("actor")) {
403          this.actor = new CodeableReference();
404          return this.actor;
405        }
406        else
407          return super.addChild(name);
408      }
409
410      public MedicationAdministrationPerformerComponent copy() {
411        MedicationAdministrationPerformerComponent dst = new MedicationAdministrationPerformerComponent();
412        copyValues(dst);
413        return dst;
414      }
415
416      public void copyValues(MedicationAdministrationPerformerComponent dst) {
417        super.copyValues(dst);
418        dst.function = function == null ? null : function.copy();
419        dst.actor = actor == null ? null : actor.copy();
420      }
421
422      @Override
423      public boolean equalsDeep(Base other_) {
424        if (!super.equalsDeep(other_))
425          return false;
426        if (!(other_ instanceof MedicationAdministrationPerformerComponent))
427          return false;
428        MedicationAdministrationPerformerComponent o = (MedicationAdministrationPerformerComponent) other_;
429        return compareDeep(function, o.function, true) && compareDeep(actor, o.actor, true);
430      }
431
432      @Override
433      public boolean equalsShallow(Base other_) {
434        if (!super.equalsShallow(other_))
435          return false;
436        if (!(other_ instanceof MedicationAdministrationPerformerComponent))
437          return false;
438        MedicationAdministrationPerformerComponent o = (MedicationAdministrationPerformerComponent) other_;
439        return true;
440      }
441
442      public boolean isEmpty() {
443        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(function, actor);
444      }
445
446  public String fhirType() {
447    return "MedicationAdministration.performer";
448
449  }
450
451  }
452
453    @Block()
454    public static class MedicationAdministrationDosageComponent extends BackboneElement implements IBaseBackboneElement {
455        /**
456         * Free text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans.
457
458The dosage instructions should reflect the dosage of the medication that was administered.
459         */
460        @Child(name = "text", type = {StringType.class}, order=1, min=0, max=1, modifier=false, summary=false)
461        @Description(shortDefinition="Free text dosage instructions e.g. SIG", formalDefinition="Free text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans.\r\rThe dosage instructions should reflect the dosage of the medication that was administered." )
462        protected StringType text;
463
464        /**
465         * A coded specification of the anatomic site where the medication first entered the body.  For example, "left arm".
466         */
467        @Child(name = "site", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
468        @Description(shortDefinition="Body site administered to", formalDefinition="A coded specification of the anatomic site where the medication first entered the body.  For example, \"left arm\"." )
469        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/approach-site-codes")
470        protected CodeableConcept site;
471
472        /**
473         * A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient.  For example, topical, intravenous, etc.
474         */
475        @Child(name = "route", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
476        @Description(shortDefinition="Path of substance into body", formalDefinition="A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient.  For example, topical, intravenous, etc." )
477        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/route-codes")
478        protected CodeableConcept route;
479
480        /**
481         * A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV.
482         */
483        @Child(name = "method", type = {CodeableConcept.class}, order=4, min=0, max=1, modifier=false, summary=false)
484        @Description(shortDefinition="How drug was administered", formalDefinition="A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV." )
485        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/administration-method-codes")
486        protected CodeableConcept method;
487
488        /**
489         * The amount of the medication given at one administration event.   Use this value when the administration is essentially an instantaneous event such as a swallowing a tablet or giving an injection.
490         */
491        @Child(name = "dose", type = {Quantity.class}, order=5, min=0, max=1, modifier=false, summary=false)
492        @Description(shortDefinition="Amount of medication per dose", formalDefinition="The amount of the medication given at one administration event.   Use this value when the administration is essentially an instantaneous event such as a swallowing a tablet or giving an injection." )
493        protected Quantity dose;
494
495        /**
496         * Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.
497         */
498        @Child(name = "rate", type = {Ratio.class, Quantity.class}, order=6, min=0, max=1, modifier=false, summary=false)
499        @Description(shortDefinition="Dose quantity per unit of time", formalDefinition="Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours." )
500        protected DataType rate;
501
502        private static final long serialVersionUID = -484090956L;
503
504    /**
505     * Constructor
506     */
507      public MedicationAdministrationDosageComponent() {
508        super();
509      }
510
511        /**
512         * @return {@link #text} (Free text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans.
513
514The dosage instructions should reflect the dosage of the medication that was administered.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
515         */
516        public StringType getTextElement() { 
517          if (this.text == null)
518            if (Configuration.errorOnAutoCreate())
519              throw new Error("Attempt to auto-create MedicationAdministrationDosageComponent.text");
520            else if (Configuration.doAutoCreate())
521              this.text = new StringType(); // bb
522          return this.text;
523        }
524
525        public boolean hasTextElement() { 
526          return this.text != null && !this.text.isEmpty();
527        }
528
529        public boolean hasText() { 
530          return this.text != null && !this.text.isEmpty();
531        }
532
533        /**
534         * @param value {@link #text} (Free text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans.
535
536The dosage instructions should reflect the dosage of the medication that was administered.). This is the underlying object with id, value and extensions. The accessor "getText" gives direct access to the value
537         */
538        public MedicationAdministrationDosageComponent setTextElement(StringType value) { 
539          this.text = value;
540          return this;
541        }
542
543        /**
544         * @return Free text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans.
545
546The dosage instructions should reflect the dosage of the medication that was administered.
547         */
548        public String getText() { 
549          return this.text == null ? null : this.text.getValue();
550        }
551
552        /**
553         * @param value Free text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans.
554
555The dosage instructions should reflect the dosage of the medication that was administered.
556         */
557        public MedicationAdministrationDosageComponent setText(String value) { 
558          if (Utilities.noString(value))
559            this.text = null;
560          else {
561            if (this.text == null)
562              this.text = new StringType();
563            this.text.setValue(value);
564          }
565          return this;
566        }
567
568        /**
569         * @return {@link #site} (A coded specification of the anatomic site where the medication first entered the body.  For example, "left arm".)
570         */
571        public CodeableConcept getSite() { 
572          if (this.site == null)
573            if (Configuration.errorOnAutoCreate())
574              throw new Error("Attempt to auto-create MedicationAdministrationDosageComponent.site");
575            else if (Configuration.doAutoCreate())
576              this.site = new CodeableConcept(); // cc
577          return this.site;
578        }
579
580        public boolean hasSite() { 
581          return this.site != null && !this.site.isEmpty();
582        }
583
584        /**
585         * @param value {@link #site} (A coded specification of the anatomic site where the medication first entered the body.  For example, "left arm".)
586         */
587        public MedicationAdministrationDosageComponent setSite(CodeableConcept value) { 
588          this.site = value;
589          return this;
590        }
591
592        /**
593         * @return {@link #route} (A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient.  For example, topical, intravenous, etc.)
594         */
595        public CodeableConcept getRoute() { 
596          if (this.route == null)
597            if (Configuration.errorOnAutoCreate())
598              throw new Error("Attempt to auto-create MedicationAdministrationDosageComponent.route");
599            else if (Configuration.doAutoCreate())
600              this.route = new CodeableConcept(); // cc
601          return this.route;
602        }
603
604        public boolean hasRoute() { 
605          return this.route != null && !this.route.isEmpty();
606        }
607
608        /**
609         * @param value {@link #route} (A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient.  For example, topical, intravenous, etc.)
610         */
611        public MedicationAdministrationDosageComponent setRoute(CodeableConcept value) { 
612          this.route = value;
613          return this;
614        }
615
616        /**
617         * @return {@link #method} (A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV.)
618         */
619        public CodeableConcept getMethod() { 
620          if (this.method == null)
621            if (Configuration.errorOnAutoCreate())
622              throw new Error("Attempt to auto-create MedicationAdministrationDosageComponent.method");
623            else if (Configuration.doAutoCreate())
624              this.method = new CodeableConcept(); // cc
625          return this.method;
626        }
627
628        public boolean hasMethod() { 
629          return this.method != null && !this.method.isEmpty();
630        }
631
632        /**
633         * @param value {@link #method} (A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV.)
634         */
635        public MedicationAdministrationDosageComponent setMethod(CodeableConcept value) { 
636          this.method = value;
637          return this;
638        }
639
640        /**
641         * @return {@link #dose} (The amount of the medication given at one administration event.   Use this value when the administration is essentially an instantaneous event such as a swallowing a tablet or giving an injection.)
642         */
643        public Quantity getDose() { 
644          if (this.dose == null)
645            if (Configuration.errorOnAutoCreate())
646              throw new Error("Attempt to auto-create MedicationAdministrationDosageComponent.dose");
647            else if (Configuration.doAutoCreate())
648              this.dose = new Quantity(); // cc
649          return this.dose;
650        }
651
652        public boolean hasDose() { 
653          return this.dose != null && !this.dose.isEmpty();
654        }
655
656        /**
657         * @param value {@link #dose} (The amount of the medication given at one administration event.   Use this value when the administration is essentially an instantaneous event such as a swallowing a tablet or giving an injection.)
658         */
659        public MedicationAdministrationDosageComponent setDose(Quantity value) { 
660          this.dose = value;
661          return this;
662        }
663
664        /**
665         * @return {@link #rate} (Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.)
666         */
667        public DataType getRate() { 
668          return this.rate;
669        }
670
671        /**
672         * @return {@link #rate} (Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.)
673         */
674        public Ratio getRateRatio() throws FHIRException { 
675          if (this.rate == null)
676            this.rate = new Ratio();
677          if (!(this.rate instanceof Ratio))
678            throw new FHIRException("Type mismatch: the type Ratio was expected, but "+this.rate.getClass().getName()+" was encountered");
679          return (Ratio) this.rate;
680        }
681
682        public boolean hasRateRatio() { 
683          return this != null && this.rate instanceof Ratio;
684        }
685
686        /**
687         * @return {@link #rate} (Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.)
688         */
689        public Quantity getRateQuantity() throws FHIRException { 
690          if (this.rate == null)
691            this.rate = new Quantity();
692          if (!(this.rate instanceof Quantity))
693            throw new FHIRException("Type mismatch: the type Quantity was expected, but "+this.rate.getClass().getName()+" was encountered");
694          return (Quantity) this.rate;
695        }
696
697        public boolean hasRateQuantity() { 
698          return this != null && this.rate instanceof Quantity;
699        }
700
701        public boolean hasRate() { 
702          return this.rate != null && !this.rate.isEmpty();
703        }
704
705        /**
706         * @param value {@link #rate} (Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.)
707         */
708        public MedicationAdministrationDosageComponent setRate(DataType value) { 
709          if (value != null && !(value instanceof Ratio || value instanceof Quantity))
710            throw new FHIRException("Not the right type for MedicationAdministration.dosage.rate[x]: "+value.fhirType());
711          this.rate = value;
712          return this;
713        }
714
715        protected void listChildren(List<Property> children) {
716          super.listChildren(children);
717          children.add(new Property("text", "string", "Free text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans.\r\rThe dosage instructions should reflect the dosage of the medication that was administered.", 0, 1, text));
718          children.add(new Property("site", "CodeableConcept", "A coded specification of the anatomic site where the medication first entered the body.  For example, \"left arm\".", 0, 1, site));
719          children.add(new Property("route", "CodeableConcept", "A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient.  For example, topical, intravenous, etc.", 0, 1, route));
720          children.add(new Property("method", "CodeableConcept", "A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV.", 0, 1, method));
721          children.add(new Property("dose", "Quantity", "The amount of the medication given at one administration event.   Use this value when the administration is essentially an instantaneous event such as a swallowing a tablet or giving an injection.", 0, 1, dose));
722          children.add(new Property("rate[x]", "Ratio|Quantity", "Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.", 0, 1, rate));
723        }
724
725        @Override
726        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
727          switch (_hash) {
728          case 3556653: /*text*/  return new Property("text", "string", "Free text dosage can be used for cases where the dosage administered is too complex to code. When coded dosage is present, the free text dosage may still be present for display to humans.\r\rThe dosage instructions should reflect the dosage of the medication that was administered.", 0, 1, text);
729          case 3530567: /*site*/  return new Property("site", "CodeableConcept", "A coded specification of the anatomic site where the medication first entered the body.  For example, \"left arm\".", 0, 1, site);
730          case 108704329: /*route*/  return new Property("route", "CodeableConcept", "A code specifying the route or physiological path of administration of a therapeutic agent into or onto the patient.  For example, topical, intravenous, etc.", 0, 1, route);
731          case -1077554975: /*method*/  return new Property("method", "CodeableConcept", "A coded value indicating the method by which the medication is intended to be or was introduced into or on the body.  This attribute will most often NOT be populated.  It is most commonly used for injections.  For example, Slow Push, Deep IV.", 0, 1, method);
732          case 3089437: /*dose*/  return new Property("dose", "Quantity", "The amount of the medication given at one administration event.   Use this value when the administration is essentially an instantaneous event such as a swallowing a tablet or giving an injection.", 0, 1, dose);
733          case 983460768: /*rate[x]*/  return new Property("rate[x]", "Ratio|Quantity", "Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.", 0, 1, rate);
734          case 3493088: /*rate*/  return new Property("rate[x]", "Ratio|Quantity", "Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.", 0, 1, rate);
735          case 204021515: /*rateRatio*/  return new Property("rate[x]", "Ratio", "Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.", 0, 1, rate);
736          case -1085459061: /*rateQuantity*/  return new Property("rate[x]", "Quantity", "Identifies the speed with which the medication was or will be introduced into the patient.  Typically, the rate for an infusion e.g. 100 ml per 1 hour or 100 ml/hr.  May also be expressed as a rate per unit of time, e.g. 500 ml per 2 hours.  Other examples:  200 mcg/min or 200 mcg/1 minute; 1 liter/8 hours.", 0, 1, rate);
737          default: return super.getNamedProperty(_hash, _name, _checkValid);
738          }
739
740        }
741
742      @Override
743      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
744        switch (hash) {
745        case 3556653: /*text*/ return this.text == null ? new Base[0] : new Base[] {this.text}; // StringType
746        case 3530567: /*site*/ return this.site == null ? new Base[0] : new Base[] {this.site}; // CodeableConcept
747        case 108704329: /*route*/ return this.route == null ? new Base[0] : new Base[] {this.route}; // CodeableConcept
748        case -1077554975: /*method*/ return this.method == null ? new Base[0] : new Base[] {this.method}; // CodeableConcept
749        case 3089437: /*dose*/ return this.dose == null ? new Base[0] : new Base[] {this.dose}; // Quantity
750        case 3493088: /*rate*/ return this.rate == null ? new Base[0] : new Base[] {this.rate}; // DataType
751        default: return super.getProperty(hash, name, checkValid);
752        }
753
754      }
755
756      @Override
757      public Base setProperty(int hash, String name, Base value) throws FHIRException {
758        switch (hash) {
759        case 3556653: // text
760          this.text = TypeConvertor.castToString(value); // StringType
761          return value;
762        case 3530567: // site
763          this.site = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
764          return value;
765        case 108704329: // route
766          this.route = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
767          return value;
768        case -1077554975: // method
769          this.method = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
770          return value;
771        case 3089437: // dose
772          this.dose = TypeConvertor.castToQuantity(value); // Quantity
773          return value;
774        case 3493088: // rate
775          this.rate = TypeConvertor.castToType(value); // DataType
776          return value;
777        default: return super.setProperty(hash, name, value);
778        }
779
780      }
781
782      @Override
783      public Base setProperty(String name, Base value) throws FHIRException {
784        if (name.equals("text")) {
785          this.text = TypeConvertor.castToString(value); // StringType
786        } else if (name.equals("site")) {
787          this.site = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
788        } else if (name.equals("route")) {
789          this.route = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
790        } else if (name.equals("method")) {
791          this.method = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
792        } else if (name.equals("dose")) {
793          this.dose = TypeConvertor.castToQuantity(value); // Quantity
794        } else if (name.equals("rate[x]")) {
795          this.rate = TypeConvertor.castToType(value); // DataType
796        } else
797          return super.setProperty(name, value);
798        return value;
799      }
800
801  @Override
802  public void removeChild(String name, Base value) throws FHIRException {
803        if (name.equals("text")) {
804          this.text = null;
805        } else if (name.equals("site")) {
806          this.site = null;
807        } else if (name.equals("route")) {
808          this.route = null;
809        } else if (name.equals("method")) {
810          this.method = null;
811        } else if (name.equals("dose")) {
812          this.dose = null;
813        } else if (name.equals("rate[x]")) {
814          this.rate = null;
815        } else
816          super.removeChild(name, value);
817        
818      }
819
820      @Override
821      public Base makeProperty(int hash, String name) throws FHIRException {
822        switch (hash) {
823        case 3556653:  return getTextElement();
824        case 3530567:  return getSite();
825        case 108704329:  return getRoute();
826        case -1077554975:  return getMethod();
827        case 3089437:  return getDose();
828        case 983460768:  return getRate();
829        case 3493088:  return getRate();
830        default: return super.makeProperty(hash, name);
831        }
832
833      }
834
835      @Override
836      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
837        switch (hash) {
838        case 3556653: /*text*/ return new String[] {"string"};
839        case 3530567: /*site*/ return new String[] {"CodeableConcept"};
840        case 108704329: /*route*/ return new String[] {"CodeableConcept"};
841        case -1077554975: /*method*/ return new String[] {"CodeableConcept"};
842        case 3089437: /*dose*/ return new String[] {"Quantity"};
843        case 3493088: /*rate*/ return new String[] {"Ratio", "Quantity"};
844        default: return super.getTypesForProperty(hash, name);
845        }
846
847      }
848
849      @Override
850      public Base addChild(String name) throws FHIRException {
851        if (name.equals("text")) {
852          throw new FHIRException("Cannot call addChild on a singleton property MedicationAdministration.dosage.text");
853        }
854        else if (name.equals("site")) {
855          this.site = new CodeableConcept();
856          return this.site;
857        }
858        else if (name.equals("route")) {
859          this.route = new CodeableConcept();
860          return this.route;
861        }
862        else if (name.equals("method")) {
863          this.method = new CodeableConcept();
864          return this.method;
865        }
866        else if (name.equals("dose")) {
867          this.dose = new Quantity();
868          return this.dose;
869        }
870        else if (name.equals("rateRatio")) {
871          this.rate = new Ratio();
872          return this.rate;
873        }
874        else if (name.equals("rateQuantity")) {
875          this.rate = new Quantity();
876          return this.rate;
877        }
878        else
879          return super.addChild(name);
880      }
881
882      public MedicationAdministrationDosageComponent copy() {
883        MedicationAdministrationDosageComponent dst = new MedicationAdministrationDosageComponent();
884        copyValues(dst);
885        return dst;
886      }
887
888      public void copyValues(MedicationAdministrationDosageComponent dst) {
889        super.copyValues(dst);
890        dst.text = text == null ? null : text.copy();
891        dst.site = site == null ? null : site.copy();
892        dst.route = route == null ? null : route.copy();
893        dst.method = method == null ? null : method.copy();
894        dst.dose = dose == null ? null : dose.copy();
895        dst.rate = rate == null ? null : rate.copy();
896      }
897
898      @Override
899      public boolean equalsDeep(Base other_) {
900        if (!super.equalsDeep(other_))
901          return false;
902        if (!(other_ instanceof MedicationAdministrationDosageComponent))
903          return false;
904        MedicationAdministrationDosageComponent o = (MedicationAdministrationDosageComponent) other_;
905        return compareDeep(text, o.text, true) && compareDeep(site, o.site, true) && compareDeep(route, o.route, true)
906           && compareDeep(method, o.method, true) && compareDeep(dose, o.dose, true) && compareDeep(rate, o.rate, true)
907          ;
908      }
909
910      @Override
911      public boolean equalsShallow(Base other_) {
912        if (!super.equalsShallow(other_))
913          return false;
914        if (!(other_ instanceof MedicationAdministrationDosageComponent))
915          return false;
916        MedicationAdministrationDosageComponent o = (MedicationAdministrationDosageComponent) other_;
917        return compareValues(text, o.text, true);
918      }
919
920      public boolean isEmpty() {
921        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(text, site, route, method
922          , dose, rate);
923      }
924
925  public String fhirType() {
926    return "MedicationAdministration.dosage";
927
928  }
929
930  }
931
932    /**
933     * Identifiers associated with this Medication Administration that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to server.
934     */
935    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
936    @Description(shortDefinition="External identifier", formalDefinition="Identifiers associated with this Medication Administration that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to server." )
937    protected List<Identifier> identifier;
938
939    /**
940     * A plan that is fulfilled in whole or in part by this MedicationAdministration.
941     */
942    @Child(name = "basedOn", type = {CarePlan.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
943    @Description(shortDefinition="Plan this is fulfilled by this administration", formalDefinition="A plan that is fulfilled in whole or in part by this MedicationAdministration." )
944    protected List<Reference> basedOn;
945
946    /**
947     * A larger event of which this particular event is a component or step.
948     */
949    @Child(name = "partOf", type = {MedicationAdministration.class, Procedure.class, MedicationDispense.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
950    @Description(shortDefinition="Part of referenced event", formalDefinition="A larger event of which this particular event is a component or step." )
951    protected List<Reference> partOf;
952
953    /**
954     * Will generally be set to show that the administration has been completed.  For some long running administrations such as infusions, it is possible for an administration to be started but not completed or it may be paused while some other process is under way.
955     */
956    @Child(name = "status", type = {CodeType.class}, order=3, min=1, max=1, modifier=true, summary=true)
957    @Description(shortDefinition="in-progress | not-done | on-hold | completed | entered-in-error | stopped | unknown", formalDefinition="Will generally be set to show that the administration has been completed.  For some long running administrations such as infusions, it is possible for an administration to be started but not completed or it may be paused while some other process is under way." )
958    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-admin-status")
959    protected Enumeration<MedicationAdministrationStatusCodes> status;
960
961    /**
962     * A code indicating why the administration was not performed.
963     */
964    @Child(name = "statusReason", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
965    @Description(shortDefinition="Reason administration not performed", formalDefinition="A code indicating why the administration was not performed." )
966    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/reason-medication-not-given-codes")
967    protected List<CodeableConcept> statusReason;
968
969    /**
970     * The type of medication administration (for example, drug classification like ATC, where meds would be administered, legal category of the medication).
971     */
972    @Child(name = "category", type = {CodeableConcept.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
973    @Description(shortDefinition="Type of medication administration", formalDefinition="The type of medication administration (for example, drug classification like ATC, where meds would be administered, legal category of the medication)." )
974    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-admin-location")
975    protected List<CodeableConcept> category;
976
977    /**
978     * Identifies the medication that was administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.
979     */
980    @Child(name = "medication", type = {CodeableReference.class}, order=6, min=1, max=1, modifier=false, summary=true)
981    @Description(shortDefinition="What was administered", formalDefinition="Identifies the medication that was administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications." )
982    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-codes")
983    protected CodeableReference medication;
984
985    /**
986     * The person or animal or group receiving the medication.
987     */
988    @Child(name = "subject", type = {Patient.class, Group.class}, order=7, min=1, max=1, modifier=false, summary=true)
989    @Description(shortDefinition="Who received medication", formalDefinition="The person or animal or group receiving the medication." )
990    protected Reference subject;
991
992    /**
993     * The visit, admission, or other contact between patient and health care provider during which the medication administration was performed.
994     */
995    @Child(name = "encounter", type = {Encounter.class}, order=8, min=0, max=1, modifier=false, summary=false)
996    @Description(shortDefinition="Encounter administered as part of", formalDefinition="The visit, admission, or other contact between patient and health care provider during which the medication administration was performed." )
997    protected Reference encounter;
998
999    /**
1000     * Additional information (for example, patient height and weight) that supports the administration of the medication.  This attribute can be used to provide documentation of specific characteristics of the patient present at the time of administration.  For example, if the dose says "give "x" if the heartrate exceeds "y"", then the heart rate can be included using this attribute.
1001     */
1002    @Child(name = "supportingInformation", type = {Reference.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1003    @Description(shortDefinition="Additional information to support administration", formalDefinition="Additional information (for example, patient height and weight) that supports the administration of the medication.  This attribute can be used to provide documentation of specific characteristics of the patient present at the time of administration.  For example, if the dose says \"give \"x\" if the heartrate exceeds \"y\"\", then the heart rate can be included using this attribute." )
1004    protected List<Reference> supportingInformation;
1005
1006    /**
1007     * A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.
1008     */
1009    @Child(name = "occurence", type = {DateTimeType.class, Period.class, Timing.class}, order=10, min=1, max=1, modifier=false, summary=true)
1010    @Description(shortDefinition="Specific date/time or interval of time during which the administration took place (or did not take place)", formalDefinition="A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate." )
1011    protected DataType occurence;
1012
1013    /**
1014     * The date the occurrence of the  MedicationAdministration was first captured in the record - potentially significantly after the occurrence of the event.
1015     */
1016    @Child(name = "recorded", type = {DateTimeType.class}, order=11, min=0, max=1, modifier=false, summary=true)
1017    @Description(shortDefinition="When the MedicationAdministration was first captured in the subject's record", formalDefinition="The date the occurrence of the  MedicationAdministration was first captured in the record - potentially significantly after the occurrence of the event." )
1018    protected DateTimeType recorded;
1019
1020    /**
1021     * An indication that the full dose was not administered.
1022     */
1023    @Child(name = "isSubPotent", type = {BooleanType.class}, order=12, min=0, max=1, modifier=false, summary=false)
1024    @Description(shortDefinition="Full dose was not administered", formalDefinition="An indication that the full dose was not administered." )
1025    protected BooleanType isSubPotent;
1026
1027    /**
1028     * The reason or reasons why the full dose was not administered.
1029     */
1030    @Child(name = "subPotentReason", type = {CodeableConcept.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1031    @Description(shortDefinition="Reason full dose was not administered", formalDefinition="The reason or reasons why the full dose was not administered." )
1032    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/administration-subpotent-reason")
1033    protected List<CodeableConcept> subPotentReason;
1034
1035    /**
1036     * The performer of the medication treatment.  For devices this is the device that performed the administration of the medication.  An IV Pump would be an example of a device that is performing the administration. Both the IV Pump and the practitioner that set the rate or bolus on the pump can be listed as performers.
1037     */
1038    @Child(name = "performer", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
1039    @Description(shortDefinition="Who or what performed the medication administration and what type of performance they did", formalDefinition="The performer of the medication treatment.  For devices this is the device that performed the administration of the medication.  An IV Pump would be an example of a device that is performing the administration. Both the IV Pump and the practitioner that set the rate or bolus on the pump can be listed as performers." )
1040    protected List<MedicationAdministrationPerformerComponent> performer;
1041
1042    /**
1043     * A code, Condition or observation that supports why the medication was administered.
1044     */
1045    @Child(name = "reason", type = {CodeableReference.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1046    @Description(shortDefinition="Concept, condition or observation that supports why the medication was administered", formalDefinition="A code, Condition or observation that supports why the medication was administered." )
1047    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/reason-medication-given-codes")
1048    protected List<CodeableReference> reason;
1049
1050    /**
1051     * The original request, instruction or authority to perform the administration.
1052     */
1053    @Child(name = "request", type = {MedicationRequest.class}, order=16, min=0, max=1, modifier=false, summary=false)
1054    @Description(shortDefinition="Request administration performed against", formalDefinition="The original request, instruction or authority to perform the administration." )
1055    protected Reference request;
1056
1057    /**
1058     * The device that is to be used for the administration of the medication (for example, PCA Pump).
1059     */
1060    @Child(name = "device", type = {CodeableReference.class}, order=17, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1061    @Description(shortDefinition="Device used to administer", formalDefinition="The device that is to be used for the administration of the medication (for example, PCA Pump)." )
1062    protected List<CodeableReference> device;
1063
1064    /**
1065     * Extra information about the medication administration that is not conveyed by the other attributes.
1066     */
1067    @Child(name = "note", type = {Annotation.class}, order=18, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1068    @Description(shortDefinition="Information about the administration", formalDefinition="Extra information about the medication administration that is not conveyed by the other attributes." )
1069    protected List<Annotation> note;
1070
1071    /**
1072     * Describes the medication dosage information details e.g. dose, rate, site, route, etc.
1073     */
1074    @Child(name = "dosage", type = {}, order=19, min=0, max=1, modifier=false, summary=false)
1075    @Description(shortDefinition="Details of how medication was taken", formalDefinition="Describes the medication dosage information details e.g. dose, rate, site, route, etc." )
1076    protected MedicationAdministrationDosageComponent dosage;
1077
1078    /**
1079     * A summary of the events of interest that have occurred, such as when the administration was verified.
1080     */
1081    @Child(name = "eventHistory", type = {Provenance.class}, order=20, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1082    @Description(shortDefinition="A list of events of interest in the lifecycle", formalDefinition="A summary of the events of interest that have occurred, such as when the administration was verified." )
1083    protected List<Reference> eventHistory;
1084
1085    private static final long serialVersionUID = 296165909L;
1086
1087  /**
1088   * Constructor
1089   */
1090    public MedicationAdministration() {
1091      super();
1092    }
1093
1094  /**
1095   * Constructor
1096   */
1097    public MedicationAdministration(MedicationAdministrationStatusCodes status, CodeableReference medication, Reference subject, DataType occurence) {
1098      super();
1099      this.setStatus(status);
1100      this.setMedication(medication);
1101      this.setSubject(subject);
1102      this.setOccurence(occurence);
1103    }
1104
1105    /**
1106     * @return {@link #identifier} (Identifiers associated with this Medication Administration that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to server.)
1107     */
1108    public List<Identifier> getIdentifier() { 
1109      if (this.identifier == null)
1110        this.identifier = new ArrayList<Identifier>();
1111      return this.identifier;
1112    }
1113
1114    /**
1115     * @return Returns a reference to <code>this</code> for easy method chaining
1116     */
1117    public MedicationAdministration setIdentifier(List<Identifier> theIdentifier) { 
1118      this.identifier = theIdentifier;
1119      return this;
1120    }
1121
1122    public boolean hasIdentifier() { 
1123      if (this.identifier == null)
1124        return false;
1125      for (Identifier item : this.identifier)
1126        if (!item.isEmpty())
1127          return true;
1128      return false;
1129    }
1130
1131    public Identifier addIdentifier() { //3
1132      Identifier t = new Identifier();
1133      if (this.identifier == null)
1134        this.identifier = new ArrayList<Identifier>();
1135      this.identifier.add(t);
1136      return t;
1137    }
1138
1139    public MedicationAdministration addIdentifier(Identifier t) { //3
1140      if (t == null)
1141        return this;
1142      if (this.identifier == null)
1143        this.identifier = new ArrayList<Identifier>();
1144      this.identifier.add(t);
1145      return this;
1146    }
1147
1148    /**
1149     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
1150     */
1151    public Identifier getIdentifierFirstRep() { 
1152      if (getIdentifier().isEmpty()) {
1153        addIdentifier();
1154      }
1155      return getIdentifier().get(0);
1156    }
1157
1158    /**
1159     * @return {@link #basedOn} (A plan that is fulfilled in whole or in part by this MedicationAdministration.)
1160     */
1161    public List<Reference> getBasedOn() { 
1162      if (this.basedOn == null)
1163        this.basedOn = new ArrayList<Reference>();
1164      return this.basedOn;
1165    }
1166
1167    /**
1168     * @return Returns a reference to <code>this</code> for easy method chaining
1169     */
1170    public MedicationAdministration setBasedOn(List<Reference> theBasedOn) { 
1171      this.basedOn = theBasedOn;
1172      return this;
1173    }
1174
1175    public boolean hasBasedOn() { 
1176      if (this.basedOn == null)
1177        return false;
1178      for (Reference item : this.basedOn)
1179        if (!item.isEmpty())
1180          return true;
1181      return false;
1182    }
1183
1184    public Reference addBasedOn() { //3
1185      Reference t = new Reference();
1186      if (this.basedOn == null)
1187        this.basedOn = new ArrayList<Reference>();
1188      this.basedOn.add(t);
1189      return t;
1190    }
1191
1192    public MedicationAdministration addBasedOn(Reference t) { //3
1193      if (t == null)
1194        return this;
1195      if (this.basedOn == null)
1196        this.basedOn = new ArrayList<Reference>();
1197      this.basedOn.add(t);
1198      return this;
1199    }
1200
1201    /**
1202     * @return The first repetition of repeating field {@link #basedOn}, creating it if it does not already exist {3}
1203     */
1204    public Reference getBasedOnFirstRep() { 
1205      if (getBasedOn().isEmpty()) {
1206        addBasedOn();
1207      }
1208      return getBasedOn().get(0);
1209    }
1210
1211    /**
1212     * @return {@link #partOf} (A larger event of which this particular event is a component or step.)
1213     */
1214    public List<Reference> getPartOf() { 
1215      if (this.partOf == null)
1216        this.partOf = new ArrayList<Reference>();
1217      return this.partOf;
1218    }
1219
1220    /**
1221     * @return Returns a reference to <code>this</code> for easy method chaining
1222     */
1223    public MedicationAdministration setPartOf(List<Reference> thePartOf) { 
1224      this.partOf = thePartOf;
1225      return this;
1226    }
1227
1228    public boolean hasPartOf() { 
1229      if (this.partOf == null)
1230        return false;
1231      for (Reference item : this.partOf)
1232        if (!item.isEmpty())
1233          return true;
1234      return false;
1235    }
1236
1237    public Reference addPartOf() { //3
1238      Reference t = new Reference();
1239      if (this.partOf == null)
1240        this.partOf = new ArrayList<Reference>();
1241      this.partOf.add(t);
1242      return t;
1243    }
1244
1245    public MedicationAdministration addPartOf(Reference t) { //3
1246      if (t == null)
1247        return this;
1248      if (this.partOf == null)
1249        this.partOf = new ArrayList<Reference>();
1250      this.partOf.add(t);
1251      return this;
1252    }
1253
1254    /**
1255     * @return The first repetition of repeating field {@link #partOf}, creating it if it does not already exist {3}
1256     */
1257    public Reference getPartOfFirstRep() { 
1258      if (getPartOf().isEmpty()) {
1259        addPartOf();
1260      }
1261      return getPartOf().get(0);
1262    }
1263
1264    /**
1265     * @return {@link #status} (Will generally be set to show that the administration has been completed.  For some long running administrations such as infusions, it is possible for an administration to be started but not completed or it may be paused while some other process is under way.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1266     */
1267    public Enumeration<MedicationAdministrationStatusCodes> getStatusElement() { 
1268      if (this.status == null)
1269        if (Configuration.errorOnAutoCreate())
1270          throw new Error("Attempt to auto-create MedicationAdministration.status");
1271        else if (Configuration.doAutoCreate())
1272          this.status = new Enumeration<MedicationAdministrationStatusCodes>(new MedicationAdministrationStatusCodesEnumFactory()); // bb
1273      return this.status;
1274    }
1275
1276    public boolean hasStatusElement() { 
1277      return this.status != null && !this.status.isEmpty();
1278    }
1279
1280    public boolean hasStatus() { 
1281      return this.status != null && !this.status.isEmpty();
1282    }
1283
1284    /**
1285     * @param value {@link #status} (Will generally be set to show that the administration has been completed.  For some long running administrations such as infusions, it is possible for an administration to be started but not completed or it may be paused while some other process is under way.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
1286     */
1287    public MedicationAdministration setStatusElement(Enumeration<MedicationAdministrationStatusCodes> value) { 
1288      this.status = value;
1289      return this;
1290    }
1291
1292    /**
1293     * @return Will generally be set to show that the administration has been completed.  For some long running administrations such as infusions, it is possible for an administration to be started but not completed or it may be paused while some other process is under way.
1294     */
1295    public MedicationAdministrationStatusCodes getStatus() { 
1296      return this.status == null ? null : this.status.getValue();
1297    }
1298
1299    /**
1300     * @param value Will generally be set to show that the administration has been completed.  For some long running administrations such as infusions, it is possible for an administration to be started but not completed or it may be paused while some other process is under way.
1301     */
1302    public MedicationAdministration setStatus(MedicationAdministrationStatusCodes value) { 
1303        if (this.status == null)
1304          this.status = new Enumeration<MedicationAdministrationStatusCodes>(new MedicationAdministrationStatusCodesEnumFactory());
1305        this.status.setValue(value);
1306      return this;
1307    }
1308
1309    /**
1310     * @return {@link #statusReason} (A code indicating why the administration was not performed.)
1311     */
1312    public List<CodeableConcept> getStatusReason() { 
1313      if (this.statusReason == null)
1314        this.statusReason = new ArrayList<CodeableConcept>();
1315      return this.statusReason;
1316    }
1317
1318    /**
1319     * @return Returns a reference to <code>this</code> for easy method chaining
1320     */
1321    public MedicationAdministration setStatusReason(List<CodeableConcept> theStatusReason) { 
1322      this.statusReason = theStatusReason;
1323      return this;
1324    }
1325
1326    public boolean hasStatusReason() { 
1327      if (this.statusReason == null)
1328        return false;
1329      for (CodeableConcept item : this.statusReason)
1330        if (!item.isEmpty())
1331          return true;
1332      return false;
1333    }
1334
1335    public CodeableConcept addStatusReason() { //3
1336      CodeableConcept t = new CodeableConcept();
1337      if (this.statusReason == null)
1338        this.statusReason = new ArrayList<CodeableConcept>();
1339      this.statusReason.add(t);
1340      return t;
1341    }
1342
1343    public MedicationAdministration addStatusReason(CodeableConcept t) { //3
1344      if (t == null)
1345        return this;
1346      if (this.statusReason == null)
1347        this.statusReason = new ArrayList<CodeableConcept>();
1348      this.statusReason.add(t);
1349      return this;
1350    }
1351
1352    /**
1353     * @return The first repetition of repeating field {@link #statusReason}, creating it if it does not already exist {3}
1354     */
1355    public CodeableConcept getStatusReasonFirstRep() { 
1356      if (getStatusReason().isEmpty()) {
1357        addStatusReason();
1358      }
1359      return getStatusReason().get(0);
1360    }
1361
1362    /**
1363     * @return {@link #category} (The type of medication administration (for example, drug classification like ATC, where meds would be administered, legal category of the medication).)
1364     */
1365    public List<CodeableConcept> getCategory() { 
1366      if (this.category == null)
1367        this.category = new ArrayList<CodeableConcept>();
1368      return this.category;
1369    }
1370
1371    /**
1372     * @return Returns a reference to <code>this</code> for easy method chaining
1373     */
1374    public MedicationAdministration setCategory(List<CodeableConcept> theCategory) { 
1375      this.category = theCategory;
1376      return this;
1377    }
1378
1379    public boolean hasCategory() { 
1380      if (this.category == null)
1381        return false;
1382      for (CodeableConcept item : this.category)
1383        if (!item.isEmpty())
1384          return true;
1385      return false;
1386    }
1387
1388    public CodeableConcept addCategory() { //3
1389      CodeableConcept t = new CodeableConcept();
1390      if (this.category == null)
1391        this.category = new ArrayList<CodeableConcept>();
1392      this.category.add(t);
1393      return t;
1394    }
1395
1396    public MedicationAdministration addCategory(CodeableConcept t) { //3
1397      if (t == null)
1398        return this;
1399      if (this.category == null)
1400        this.category = new ArrayList<CodeableConcept>();
1401      this.category.add(t);
1402      return this;
1403    }
1404
1405    /**
1406     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
1407     */
1408    public CodeableConcept getCategoryFirstRep() { 
1409      if (getCategory().isEmpty()) {
1410        addCategory();
1411      }
1412      return getCategory().get(0);
1413    }
1414
1415    /**
1416     * @return {@link #medication} (Identifies the medication that was administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.)
1417     */
1418    public CodeableReference getMedication() { 
1419      if (this.medication == null)
1420        if (Configuration.errorOnAutoCreate())
1421          throw new Error("Attempt to auto-create MedicationAdministration.medication");
1422        else if (Configuration.doAutoCreate())
1423          this.medication = new CodeableReference(); // cc
1424      return this.medication;
1425    }
1426
1427    public boolean hasMedication() { 
1428      return this.medication != null && !this.medication.isEmpty();
1429    }
1430
1431    /**
1432     * @param value {@link #medication} (Identifies the medication that was administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.)
1433     */
1434    public MedicationAdministration setMedication(CodeableReference value) { 
1435      this.medication = value;
1436      return this;
1437    }
1438
1439    /**
1440     * @return {@link #subject} (The person or animal or group receiving the medication.)
1441     */
1442    public Reference getSubject() { 
1443      if (this.subject == null)
1444        if (Configuration.errorOnAutoCreate())
1445          throw new Error("Attempt to auto-create MedicationAdministration.subject");
1446        else if (Configuration.doAutoCreate())
1447          this.subject = new Reference(); // cc
1448      return this.subject;
1449    }
1450
1451    public boolean hasSubject() { 
1452      return this.subject != null && !this.subject.isEmpty();
1453    }
1454
1455    /**
1456     * @param value {@link #subject} (The person or animal or group receiving the medication.)
1457     */
1458    public MedicationAdministration setSubject(Reference value) { 
1459      this.subject = value;
1460      return this;
1461    }
1462
1463    /**
1464     * @return {@link #encounter} (The visit, admission, or other contact between patient and health care provider during which the medication administration was performed.)
1465     */
1466    public Reference getEncounter() { 
1467      if (this.encounter == null)
1468        if (Configuration.errorOnAutoCreate())
1469          throw new Error("Attempt to auto-create MedicationAdministration.encounter");
1470        else if (Configuration.doAutoCreate())
1471          this.encounter = new Reference(); // cc
1472      return this.encounter;
1473    }
1474
1475    public boolean hasEncounter() { 
1476      return this.encounter != null && !this.encounter.isEmpty();
1477    }
1478
1479    /**
1480     * @param value {@link #encounter} (The visit, admission, or other contact between patient and health care provider during which the medication administration was performed.)
1481     */
1482    public MedicationAdministration setEncounter(Reference value) { 
1483      this.encounter = value;
1484      return this;
1485    }
1486
1487    /**
1488     * @return {@link #supportingInformation} (Additional information (for example, patient height and weight) that supports the administration of the medication.  This attribute can be used to provide documentation of specific characteristics of the patient present at the time of administration.  For example, if the dose says "give "x" if the heartrate exceeds "y"", then the heart rate can be included using this attribute.)
1489     */
1490    public List<Reference> getSupportingInformation() { 
1491      if (this.supportingInformation == null)
1492        this.supportingInformation = new ArrayList<Reference>();
1493      return this.supportingInformation;
1494    }
1495
1496    /**
1497     * @return Returns a reference to <code>this</code> for easy method chaining
1498     */
1499    public MedicationAdministration setSupportingInformation(List<Reference> theSupportingInformation) { 
1500      this.supportingInformation = theSupportingInformation;
1501      return this;
1502    }
1503
1504    public boolean hasSupportingInformation() { 
1505      if (this.supportingInformation == null)
1506        return false;
1507      for (Reference item : this.supportingInformation)
1508        if (!item.isEmpty())
1509          return true;
1510      return false;
1511    }
1512
1513    public Reference addSupportingInformation() { //3
1514      Reference t = new Reference();
1515      if (this.supportingInformation == null)
1516        this.supportingInformation = new ArrayList<Reference>();
1517      this.supportingInformation.add(t);
1518      return t;
1519    }
1520
1521    public MedicationAdministration addSupportingInformation(Reference t) { //3
1522      if (t == null)
1523        return this;
1524      if (this.supportingInformation == null)
1525        this.supportingInformation = new ArrayList<Reference>();
1526      this.supportingInformation.add(t);
1527      return this;
1528    }
1529
1530    /**
1531     * @return The first repetition of repeating field {@link #supportingInformation}, creating it if it does not already exist {3}
1532     */
1533    public Reference getSupportingInformationFirstRep() { 
1534      if (getSupportingInformation().isEmpty()) {
1535        addSupportingInformation();
1536      }
1537      return getSupportingInformation().get(0);
1538    }
1539
1540    /**
1541     * @return {@link #occurence} (A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.)
1542     */
1543    public DataType getOccurence() { 
1544      return this.occurence;
1545    }
1546
1547    /**
1548     * @return {@link #occurence} (A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.)
1549     */
1550    public DateTimeType getOccurenceDateTimeType() throws FHIRException { 
1551      if (this.occurence == null)
1552        this.occurence = new DateTimeType();
1553      if (!(this.occurence instanceof DateTimeType))
1554        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.occurence.getClass().getName()+" was encountered");
1555      return (DateTimeType) this.occurence;
1556    }
1557
1558    public boolean hasOccurenceDateTimeType() { 
1559      return this != null && this.occurence instanceof DateTimeType;
1560    }
1561
1562    /**
1563     * @return {@link #occurence} (A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.)
1564     */
1565    public Period getOccurencePeriod() throws FHIRException { 
1566      if (this.occurence == null)
1567        this.occurence = new Period();
1568      if (!(this.occurence instanceof Period))
1569        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.occurence.getClass().getName()+" was encountered");
1570      return (Period) this.occurence;
1571    }
1572
1573    public boolean hasOccurencePeriod() { 
1574      return this != null && this.occurence instanceof Period;
1575    }
1576
1577    /**
1578     * @return {@link #occurence} (A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.)
1579     */
1580    public Timing getOccurenceTiming() throws FHIRException { 
1581      if (this.occurence == null)
1582        this.occurence = new Timing();
1583      if (!(this.occurence instanceof Timing))
1584        throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.occurence.getClass().getName()+" was encountered");
1585      return (Timing) this.occurence;
1586    }
1587
1588    public boolean hasOccurenceTiming() { 
1589      return this != null && this.occurence instanceof Timing;
1590    }
1591
1592    public boolean hasOccurence() { 
1593      return this.occurence != null && !this.occurence.isEmpty();
1594    }
1595
1596    /**
1597     * @param value {@link #occurence} (A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.)
1598     */
1599    public MedicationAdministration setOccurence(DataType value) { 
1600      if (value != null && !(value instanceof DateTimeType || value instanceof Period || value instanceof Timing))
1601        throw new FHIRException("Not the right type for MedicationAdministration.occurence[x]: "+value.fhirType());
1602      this.occurence = value;
1603      return this;
1604    }
1605
1606    /**
1607     * @return {@link #recorded} (The date the occurrence of the  MedicationAdministration was first captured in the record - potentially significantly after the occurrence of the event.). This is the underlying object with id, value and extensions. The accessor "getRecorded" gives direct access to the value
1608     */
1609    public DateTimeType getRecordedElement() { 
1610      if (this.recorded == null)
1611        if (Configuration.errorOnAutoCreate())
1612          throw new Error("Attempt to auto-create MedicationAdministration.recorded");
1613        else if (Configuration.doAutoCreate())
1614          this.recorded = new DateTimeType(); // bb
1615      return this.recorded;
1616    }
1617
1618    public boolean hasRecordedElement() { 
1619      return this.recorded != null && !this.recorded.isEmpty();
1620    }
1621
1622    public boolean hasRecorded() { 
1623      return this.recorded != null && !this.recorded.isEmpty();
1624    }
1625
1626    /**
1627     * @param value {@link #recorded} (The date the occurrence of the  MedicationAdministration was first captured in the record - potentially significantly after the occurrence of the event.). This is the underlying object with id, value and extensions. The accessor "getRecorded" gives direct access to the value
1628     */
1629    public MedicationAdministration setRecordedElement(DateTimeType value) { 
1630      this.recorded = value;
1631      return this;
1632    }
1633
1634    /**
1635     * @return The date the occurrence of the  MedicationAdministration was first captured in the record - potentially significantly after the occurrence of the event.
1636     */
1637    public Date getRecorded() { 
1638      return this.recorded == null ? null : this.recorded.getValue();
1639    }
1640
1641    /**
1642     * @param value The date the occurrence of the  MedicationAdministration was first captured in the record - potentially significantly after the occurrence of the event.
1643     */
1644    public MedicationAdministration setRecorded(Date value) { 
1645      if (value == null)
1646        this.recorded = null;
1647      else {
1648        if (this.recorded == null)
1649          this.recorded = new DateTimeType();
1650        this.recorded.setValue(value);
1651      }
1652      return this;
1653    }
1654
1655    /**
1656     * @return {@link #isSubPotent} (An indication that the full dose was not administered.). This is the underlying object with id, value and extensions. The accessor "getIsSubPotent" gives direct access to the value
1657     */
1658    public BooleanType getIsSubPotentElement() { 
1659      if (this.isSubPotent == null)
1660        if (Configuration.errorOnAutoCreate())
1661          throw new Error("Attempt to auto-create MedicationAdministration.isSubPotent");
1662        else if (Configuration.doAutoCreate())
1663          this.isSubPotent = new BooleanType(); // bb
1664      return this.isSubPotent;
1665    }
1666
1667    public boolean hasIsSubPotentElement() { 
1668      return this.isSubPotent != null && !this.isSubPotent.isEmpty();
1669    }
1670
1671    public boolean hasIsSubPotent() { 
1672      return this.isSubPotent != null && !this.isSubPotent.isEmpty();
1673    }
1674
1675    /**
1676     * @param value {@link #isSubPotent} (An indication that the full dose was not administered.). This is the underlying object with id, value and extensions. The accessor "getIsSubPotent" gives direct access to the value
1677     */
1678    public MedicationAdministration setIsSubPotentElement(BooleanType value) { 
1679      this.isSubPotent = value;
1680      return this;
1681    }
1682
1683    /**
1684     * @return An indication that the full dose was not administered.
1685     */
1686    public boolean getIsSubPotent() { 
1687      return this.isSubPotent == null || this.isSubPotent.isEmpty() ? false : this.isSubPotent.getValue();
1688    }
1689
1690    /**
1691     * @param value An indication that the full dose was not administered.
1692     */
1693    public MedicationAdministration setIsSubPotent(boolean value) { 
1694        if (this.isSubPotent == null)
1695          this.isSubPotent = new BooleanType();
1696        this.isSubPotent.setValue(value);
1697      return this;
1698    }
1699
1700    /**
1701     * @return {@link #subPotentReason} (The reason or reasons why the full dose was not administered.)
1702     */
1703    public List<CodeableConcept> getSubPotentReason() { 
1704      if (this.subPotentReason == null)
1705        this.subPotentReason = new ArrayList<CodeableConcept>();
1706      return this.subPotentReason;
1707    }
1708
1709    /**
1710     * @return Returns a reference to <code>this</code> for easy method chaining
1711     */
1712    public MedicationAdministration setSubPotentReason(List<CodeableConcept> theSubPotentReason) { 
1713      this.subPotentReason = theSubPotentReason;
1714      return this;
1715    }
1716
1717    public boolean hasSubPotentReason() { 
1718      if (this.subPotentReason == null)
1719        return false;
1720      for (CodeableConcept item : this.subPotentReason)
1721        if (!item.isEmpty())
1722          return true;
1723      return false;
1724    }
1725
1726    public CodeableConcept addSubPotentReason() { //3
1727      CodeableConcept t = new CodeableConcept();
1728      if (this.subPotentReason == null)
1729        this.subPotentReason = new ArrayList<CodeableConcept>();
1730      this.subPotentReason.add(t);
1731      return t;
1732    }
1733
1734    public MedicationAdministration addSubPotentReason(CodeableConcept t) { //3
1735      if (t == null)
1736        return this;
1737      if (this.subPotentReason == null)
1738        this.subPotentReason = new ArrayList<CodeableConcept>();
1739      this.subPotentReason.add(t);
1740      return this;
1741    }
1742
1743    /**
1744     * @return The first repetition of repeating field {@link #subPotentReason}, creating it if it does not already exist {3}
1745     */
1746    public CodeableConcept getSubPotentReasonFirstRep() { 
1747      if (getSubPotentReason().isEmpty()) {
1748        addSubPotentReason();
1749      }
1750      return getSubPotentReason().get(0);
1751    }
1752
1753    /**
1754     * @return {@link #performer} (The performer of the medication treatment.  For devices this is the device that performed the administration of the medication.  An IV Pump would be an example of a device that is performing the administration. Both the IV Pump and the practitioner that set the rate or bolus on the pump can be listed as performers.)
1755     */
1756    public List<MedicationAdministrationPerformerComponent> getPerformer() { 
1757      if (this.performer == null)
1758        this.performer = new ArrayList<MedicationAdministrationPerformerComponent>();
1759      return this.performer;
1760    }
1761
1762    /**
1763     * @return Returns a reference to <code>this</code> for easy method chaining
1764     */
1765    public MedicationAdministration setPerformer(List<MedicationAdministrationPerformerComponent> thePerformer) { 
1766      this.performer = thePerformer;
1767      return this;
1768    }
1769
1770    public boolean hasPerformer() { 
1771      if (this.performer == null)
1772        return false;
1773      for (MedicationAdministrationPerformerComponent item : this.performer)
1774        if (!item.isEmpty())
1775          return true;
1776      return false;
1777    }
1778
1779    public MedicationAdministrationPerformerComponent addPerformer() { //3
1780      MedicationAdministrationPerformerComponent t = new MedicationAdministrationPerformerComponent();
1781      if (this.performer == null)
1782        this.performer = new ArrayList<MedicationAdministrationPerformerComponent>();
1783      this.performer.add(t);
1784      return t;
1785    }
1786
1787    public MedicationAdministration addPerformer(MedicationAdministrationPerformerComponent t) { //3
1788      if (t == null)
1789        return this;
1790      if (this.performer == null)
1791        this.performer = new ArrayList<MedicationAdministrationPerformerComponent>();
1792      this.performer.add(t);
1793      return this;
1794    }
1795
1796    /**
1797     * @return The first repetition of repeating field {@link #performer}, creating it if it does not already exist {3}
1798     */
1799    public MedicationAdministrationPerformerComponent getPerformerFirstRep() { 
1800      if (getPerformer().isEmpty()) {
1801        addPerformer();
1802      }
1803      return getPerformer().get(0);
1804    }
1805
1806    /**
1807     * @return {@link #reason} (A code, Condition or observation that supports why the medication was administered.)
1808     */
1809    public List<CodeableReference> getReason() { 
1810      if (this.reason == null)
1811        this.reason = new ArrayList<CodeableReference>();
1812      return this.reason;
1813    }
1814
1815    /**
1816     * @return Returns a reference to <code>this</code> for easy method chaining
1817     */
1818    public MedicationAdministration setReason(List<CodeableReference> theReason) { 
1819      this.reason = theReason;
1820      return this;
1821    }
1822
1823    public boolean hasReason() { 
1824      if (this.reason == null)
1825        return false;
1826      for (CodeableReference item : this.reason)
1827        if (!item.isEmpty())
1828          return true;
1829      return false;
1830    }
1831
1832    public CodeableReference addReason() { //3
1833      CodeableReference t = new CodeableReference();
1834      if (this.reason == null)
1835        this.reason = new ArrayList<CodeableReference>();
1836      this.reason.add(t);
1837      return t;
1838    }
1839
1840    public MedicationAdministration addReason(CodeableReference t) { //3
1841      if (t == null)
1842        return this;
1843      if (this.reason == null)
1844        this.reason = new ArrayList<CodeableReference>();
1845      this.reason.add(t);
1846      return this;
1847    }
1848
1849    /**
1850     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
1851     */
1852    public CodeableReference getReasonFirstRep() { 
1853      if (getReason().isEmpty()) {
1854        addReason();
1855      }
1856      return getReason().get(0);
1857    }
1858
1859    /**
1860     * @return {@link #request} (The original request, instruction or authority to perform the administration.)
1861     */
1862    public Reference getRequest() { 
1863      if (this.request == null)
1864        if (Configuration.errorOnAutoCreate())
1865          throw new Error("Attempt to auto-create MedicationAdministration.request");
1866        else if (Configuration.doAutoCreate())
1867          this.request = new Reference(); // cc
1868      return this.request;
1869    }
1870
1871    public boolean hasRequest() { 
1872      return this.request != null && !this.request.isEmpty();
1873    }
1874
1875    /**
1876     * @param value {@link #request} (The original request, instruction or authority to perform the administration.)
1877     */
1878    public MedicationAdministration setRequest(Reference value) { 
1879      this.request = value;
1880      return this;
1881    }
1882
1883    /**
1884     * @return {@link #device} (The device that is to be used for the administration of the medication (for example, PCA Pump).)
1885     */
1886    public List<CodeableReference> getDevice() { 
1887      if (this.device == null)
1888        this.device = new ArrayList<CodeableReference>();
1889      return this.device;
1890    }
1891
1892    /**
1893     * @return Returns a reference to <code>this</code> for easy method chaining
1894     */
1895    public MedicationAdministration setDevice(List<CodeableReference> theDevice) { 
1896      this.device = theDevice;
1897      return this;
1898    }
1899
1900    public boolean hasDevice() { 
1901      if (this.device == null)
1902        return false;
1903      for (CodeableReference item : this.device)
1904        if (!item.isEmpty())
1905          return true;
1906      return false;
1907    }
1908
1909    public CodeableReference addDevice() { //3
1910      CodeableReference t = new CodeableReference();
1911      if (this.device == null)
1912        this.device = new ArrayList<CodeableReference>();
1913      this.device.add(t);
1914      return t;
1915    }
1916
1917    public MedicationAdministration addDevice(CodeableReference t) { //3
1918      if (t == null)
1919        return this;
1920      if (this.device == null)
1921        this.device = new ArrayList<CodeableReference>();
1922      this.device.add(t);
1923      return this;
1924    }
1925
1926    /**
1927     * @return The first repetition of repeating field {@link #device}, creating it if it does not already exist {3}
1928     */
1929    public CodeableReference getDeviceFirstRep() { 
1930      if (getDevice().isEmpty()) {
1931        addDevice();
1932      }
1933      return getDevice().get(0);
1934    }
1935
1936    /**
1937     * @return {@link #note} (Extra information about the medication administration that is not conveyed by the other attributes.)
1938     */
1939    public List<Annotation> getNote() { 
1940      if (this.note == null)
1941        this.note = new ArrayList<Annotation>();
1942      return this.note;
1943    }
1944
1945    /**
1946     * @return Returns a reference to <code>this</code> for easy method chaining
1947     */
1948    public MedicationAdministration setNote(List<Annotation> theNote) { 
1949      this.note = theNote;
1950      return this;
1951    }
1952
1953    public boolean hasNote() { 
1954      if (this.note == null)
1955        return false;
1956      for (Annotation item : this.note)
1957        if (!item.isEmpty())
1958          return true;
1959      return false;
1960    }
1961
1962    public Annotation addNote() { //3
1963      Annotation t = new Annotation();
1964      if (this.note == null)
1965        this.note = new ArrayList<Annotation>();
1966      this.note.add(t);
1967      return t;
1968    }
1969
1970    public MedicationAdministration addNote(Annotation t) { //3
1971      if (t == null)
1972        return this;
1973      if (this.note == null)
1974        this.note = new ArrayList<Annotation>();
1975      this.note.add(t);
1976      return this;
1977    }
1978
1979    /**
1980     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1981     */
1982    public Annotation getNoteFirstRep() { 
1983      if (getNote().isEmpty()) {
1984        addNote();
1985      }
1986      return getNote().get(0);
1987    }
1988
1989    /**
1990     * @return {@link #dosage} (Describes the medication dosage information details e.g. dose, rate, site, route, etc.)
1991     */
1992    public MedicationAdministrationDosageComponent getDosage() { 
1993      if (this.dosage == null)
1994        if (Configuration.errorOnAutoCreate())
1995          throw new Error("Attempt to auto-create MedicationAdministration.dosage");
1996        else if (Configuration.doAutoCreate())
1997          this.dosage = new MedicationAdministrationDosageComponent(); // cc
1998      return this.dosage;
1999    }
2000
2001    public boolean hasDosage() { 
2002      return this.dosage != null && !this.dosage.isEmpty();
2003    }
2004
2005    /**
2006     * @param value {@link #dosage} (Describes the medication dosage information details e.g. dose, rate, site, route, etc.)
2007     */
2008    public MedicationAdministration setDosage(MedicationAdministrationDosageComponent value) { 
2009      this.dosage = value;
2010      return this;
2011    }
2012
2013    /**
2014     * @return {@link #eventHistory} (A summary of the events of interest that have occurred, such as when the administration was verified.)
2015     */
2016    public List<Reference> getEventHistory() { 
2017      if (this.eventHistory == null)
2018        this.eventHistory = new ArrayList<Reference>();
2019      return this.eventHistory;
2020    }
2021
2022    /**
2023     * @return Returns a reference to <code>this</code> for easy method chaining
2024     */
2025    public MedicationAdministration setEventHistory(List<Reference> theEventHistory) { 
2026      this.eventHistory = theEventHistory;
2027      return this;
2028    }
2029
2030    public boolean hasEventHistory() { 
2031      if (this.eventHistory == null)
2032        return false;
2033      for (Reference item : this.eventHistory)
2034        if (!item.isEmpty())
2035          return true;
2036      return false;
2037    }
2038
2039    public Reference addEventHistory() { //3
2040      Reference t = new Reference();
2041      if (this.eventHistory == null)
2042        this.eventHistory = new ArrayList<Reference>();
2043      this.eventHistory.add(t);
2044      return t;
2045    }
2046
2047    public MedicationAdministration addEventHistory(Reference t) { //3
2048      if (t == null)
2049        return this;
2050      if (this.eventHistory == null)
2051        this.eventHistory = new ArrayList<Reference>();
2052      this.eventHistory.add(t);
2053      return this;
2054    }
2055
2056    /**
2057     * @return The first repetition of repeating field {@link #eventHistory}, creating it if it does not already exist {3}
2058     */
2059    public Reference getEventHistoryFirstRep() { 
2060      if (getEventHistory().isEmpty()) {
2061        addEventHistory();
2062      }
2063      return getEventHistory().get(0);
2064    }
2065
2066      protected void listChildren(List<Property> children) {
2067        super.listChildren(children);
2068        children.add(new Property("identifier", "Identifier", "Identifiers associated with this Medication Administration that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier));
2069        children.add(new Property("basedOn", "Reference(CarePlan)", "A plan that is fulfilled in whole or in part by this MedicationAdministration.", 0, java.lang.Integer.MAX_VALUE, basedOn));
2070        children.add(new Property("partOf", "Reference(MedicationAdministration|Procedure|MedicationDispense)", "A larger event of which this particular event is a component or step.", 0, java.lang.Integer.MAX_VALUE, partOf));
2071        children.add(new Property("status", "code", "Will generally be set to show that the administration has been completed.  For some long running administrations such as infusions, it is possible for an administration to be started but not completed or it may be paused while some other process is under way.", 0, 1, status));
2072        children.add(new Property("statusReason", "CodeableConcept", "A code indicating why the administration was not performed.", 0, java.lang.Integer.MAX_VALUE, statusReason));
2073        children.add(new Property("category", "CodeableConcept", "The type of medication administration (for example, drug classification like ATC, where meds would be administered, legal category of the medication).", 0, java.lang.Integer.MAX_VALUE, category));
2074        children.add(new Property("medication", "CodeableReference(Medication)", "Identifies the medication that was administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.", 0, 1, medication));
2075        children.add(new Property("subject", "Reference(Patient|Group)", "The person or animal or group receiving the medication.", 0, 1, subject));
2076        children.add(new Property("encounter", "Reference(Encounter)", "The visit, admission, or other contact between patient and health care provider during which the medication administration was performed.", 0, 1, encounter));
2077        children.add(new Property("supportingInformation", "Reference(Any)", "Additional information (for example, patient height and weight) that supports the administration of the medication.  This attribute can be used to provide documentation of specific characteristics of the patient present at the time of administration.  For example, if the dose says \"give \"x\" if the heartrate exceeds \"y\"\", then the heart rate can be included using this attribute.", 0, java.lang.Integer.MAX_VALUE, supportingInformation));
2078        children.add(new Property("occurence[x]", "dateTime|Period|Timing", "A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.", 0, 1, occurence));
2079        children.add(new Property("recorded", "dateTime", "The date the occurrence of the  MedicationAdministration was first captured in the record - potentially significantly after the occurrence of the event.", 0, 1, recorded));
2080        children.add(new Property("isSubPotent", "boolean", "An indication that the full dose was not administered.", 0, 1, isSubPotent));
2081        children.add(new Property("subPotentReason", "CodeableConcept", "The reason or reasons why the full dose was not administered.", 0, java.lang.Integer.MAX_VALUE, subPotentReason));
2082        children.add(new Property("performer", "", "The performer of the medication treatment.  For devices this is the device that performed the administration of the medication.  An IV Pump would be an example of a device that is performing the administration. Both the IV Pump and the practitioner that set the rate or bolus on the pump can be listed as performers.", 0, java.lang.Integer.MAX_VALUE, performer));
2083        children.add(new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport)", "A code, Condition or observation that supports why the medication was administered.", 0, java.lang.Integer.MAX_VALUE, reason));
2084        children.add(new Property("request", "Reference(MedicationRequest)", "The original request, instruction or authority to perform the administration.", 0, 1, request));
2085        children.add(new Property("device", "CodeableReference(Device)", "The device that is to be used for the administration of the medication (for example, PCA Pump).", 0, java.lang.Integer.MAX_VALUE, device));
2086        children.add(new Property("note", "Annotation", "Extra information about the medication administration that is not conveyed by the other attributes.", 0, java.lang.Integer.MAX_VALUE, note));
2087        children.add(new Property("dosage", "", "Describes the medication dosage information details e.g. dose, rate, site, route, etc.", 0, 1, dosage));
2088        children.add(new Property("eventHistory", "Reference(Provenance)", "A summary of the events of interest that have occurred, such as when the administration was verified.", 0, java.lang.Integer.MAX_VALUE, eventHistory));
2089      }
2090
2091      @Override
2092      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2093        switch (_hash) {
2094        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifiers associated with this Medication Administration that are defined by business processes and/or used to refer to it when a direct URL reference to the resource itself is not appropriate. They are business identifiers assigned to this resource by the performer or other systems and remain constant as the resource is updated and propagates from server to server.", 0, java.lang.Integer.MAX_VALUE, identifier);
2095        case -332612366: /*basedOn*/  return new Property("basedOn", "Reference(CarePlan)", "A plan that is fulfilled in whole or in part by this MedicationAdministration.", 0, java.lang.Integer.MAX_VALUE, basedOn);
2096        case -995410646: /*partOf*/  return new Property("partOf", "Reference(MedicationAdministration|Procedure|MedicationDispense)", "A larger event of which this particular event is a component or step.", 0, java.lang.Integer.MAX_VALUE, partOf);
2097        case -892481550: /*status*/  return new Property("status", "code", "Will generally be set to show that the administration has been completed.  For some long running administrations such as infusions, it is possible for an administration to be started but not completed or it may be paused while some other process is under way.", 0, 1, status);
2098        case 2051346646: /*statusReason*/  return new Property("statusReason", "CodeableConcept", "A code indicating why the administration was not performed.", 0, java.lang.Integer.MAX_VALUE, statusReason);
2099        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "The type of medication administration (for example, drug classification like ATC, where meds would be administered, legal category of the medication).", 0, java.lang.Integer.MAX_VALUE, category);
2100        case 1998965455: /*medication*/  return new Property("medication", "CodeableReference(Medication)", "Identifies the medication that was administered. This is either a link to a resource representing the details of the medication or a simple attribute carrying a code that identifies the medication from a known list of medications.", 0, 1, medication);
2101        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The person or animal or group receiving the medication.", 0, 1, subject);
2102        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The visit, admission, or other contact between patient and health care provider during which the medication administration was performed.", 0, 1, encounter);
2103        case -1248768647: /*supportingInformation*/  return new Property("supportingInformation", "Reference(Any)", "Additional information (for example, patient height and weight) that supports the administration of the medication.  This attribute can be used to provide documentation of specific characteristics of the patient present at the time of administration.  For example, if the dose says \"give \"x\" if the heartrate exceeds \"y\"\", then the heart rate can be included using this attribute.", 0, java.lang.Integer.MAX_VALUE, supportingInformation);
2104        case 144188521: /*occurence[x]*/  return new Property("occurence[x]", "dateTime|Period|Timing", "A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.", 0, 1, occurence);
2105        case -1192857417: /*occurence*/  return new Property("occurence[x]", "dateTime|Period|Timing", "A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.", 0, 1, occurence);
2106        case -820552334: /*occurenceDateTime*/  return new Property("occurence[x]", "dateTime", "A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.", 0, 1, occurence);
2107        case 221195608: /*occurencePeriod*/  return new Property("occurence[x]", "Period", "A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.", 0, 1, occurence);
2108        case 339257313: /*occurenceTiming*/  return new Property("occurence[x]", "Timing", "A specific date/time or interval of time during which the administration took place (or did not take place). For many administrations, such as swallowing a tablet the use of dateTime is more appropriate.", 0, 1, occurence);
2109        case -799233872: /*recorded*/  return new Property("recorded", "dateTime", "The date the occurrence of the  MedicationAdministration was first captured in the record - potentially significantly after the occurrence of the event.", 0, 1, recorded);
2110        case 702379724: /*isSubPotent*/  return new Property("isSubPotent", "boolean", "An indication that the full dose was not administered.", 0, 1, isSubPotent);
2111        case 969489082: /*subPotentReason*/  return new Property("subPotentReason", "CodeableConcept", "The reason or reasons why the full dose was not administered.", 0, java.lang.Integer.MAX_VALUE, subPotentReason);
2112        case 481140686: /*performer*/  return new Property("performer", "", "The performer of the medication treatment.  For devices this is the device that performed the administration of the medication.  An IV Pump would be an example of a device that is performing the administration. Both the IV Pump and the practitioner that set the rate or bolus on the pump can be listed as performers.", 0, java.lang.Integer.MAX_VALUE, performer);
2113        case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport)", "A code, Condition or observation that supports why the medication was administered.", 0, java.lang.Integer.MAX_VALUE, reason);
2114        case 1095692943: /*request*/  return new Property("request", "Reference(MedicationRequest)", "The original request, instruction or authority to perform the administration.", 0, 1, request);
2115        case -1335157162: /*device*/  return new Property("device", "CodeableReference(Device)", "The device that is to be used for the administration of the medication (for example, PCA Pump).", 0, java.lang.Integer.MAX_VALUE, device);
2116        case 3387378: /*note*/  return new Property("note", "Annotation", "Extra information about the medication administration that is not conveyed by the other attributes.", 0, java.lang.Integer.MAX_VALUE, note);
2117        case -1326018889: /*dosage*/  return new Property("dosage", "", "Describes the medication dosage information details e.g. dose, rate, site, route, etc.", 0, 1, dosage);
2118        case 1835190426: /*eventHistory*/  return new Property("eventHistory", "Reference(Provenance)", "A summary of the events of interest that have occurred, such as when the administration was verified.", 0, java.lang.Integer.MAX_VALUE, eventHistory);
2119        default: return super.getNamedProperty(_hash, _name, _checkValid);
2120        }
2121
2122      }
2123
2124      @Override
2125      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2126        switch (hash) {
2127        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2128        case -332612366: /*basedOn*/ return this.basedOn == null ? new Base[0] : this.basedOn.toArray(new Base[this.basedOn.size()]); // Reference
2129        case -995410646: /*partOf*/ return this.partOf == null ? new Base[0] : this.partOf.toArray(new Base[this.partOf.size()]); // Reference
2130        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<MedicationAdministrationStatusCodes>
2131        case 2051346646: /*statusReason*/ return this.statusReason == null ? new Base[0] : this.statusReason.toArray(new Base[this.statusReason.size()]); // CodeableConcept
2132        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
2133        case 1998965455: /*medication*/ return this.medication == null ? new Base[0] : new Base[] {this.medication}; // CodeableReference
2134        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
2135        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
2136        case -1248768647: /*supportingInformation*/ return this.supportingInformation == null ? new Base[0] : this.supportingInformation.toArray(new Base[this.supportingInformation.size()]); // Reference
2137        case -1192857417: /*occurence*/ return this.occurence == null ? new Base[0] : new Base[] {this.occurence}; // DataType
2138        case -799233872: /*recorded*/ return this.recorded == null ? new Base[0] : new Base[] {this.recorded}; // DateTimeType
2139        case 702379724: /*isSubPotent*/ return this.isSubPotent == null ? new Base[0] : new Base[] {this.isSubPotent}; // BooleanType
2140        case 969489082: /*subPotentReason*/ return this.subPotentReason == null ? new Base[0] : this.subPotentReason.toArray(new Base[this.subPotentReason.size()]); // CodeableConcept
2141        case 481140686: /*performer*/ return this.performer == null ? new Base[0] : this.performer.toArray(new Base[this.performer.size()]); // MedicationAdministrationPerformerComponent
2142        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
2143        case 1095692943: /*request*/ return this.request == null ? new Base[0] : new Base[] {this.request}; // Reference
2144        case -1335157162: /*device*/ return this.device == null ? new Base[0] : this.device.toArray(new Base[this.device.size()]); // CodeableReference
2145        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
2146        case -1326018889: /*dosage*/ return this.dosage == null ? new Base[0] : new Base[] {this.dosage}; // MedicationAdministrationDosageComponent
2147        case 1835190426: /*eventHistory*/ return this.eventHistory == null ? new Base[0] : this.eventHistory.toArray(new Base[this.eventHistory.size()]); // Reference
2148        default: return super.getProperty(hash, name, checkValid);
2149        }
2150
2151      }
2152
2153      @Override
2154      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2155        switch (hash) {
2156        case -1618432855: // identifier
2157          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2158          return value;
2159        case -332612366: // basedOn
2160          this.getBasedOn().add(TypeConvertor.castToReference(value)); // Reference
2161          return value;
2162        case -995410646: // partOf
2163          this.getPartOf().add(TypeConvertor.castToReference(value)); // Reference
2164          return value;
2165        case -892481550: // status
2166          value = new MedicationAdministrationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2167          this.status = (Enumeration) value; // Enumeration<MedicationAdministrationStatusCodes>
2168          return value;
2169        case 2051346646: // statusReason
2170          this.getStatusReason().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2171          return value;
2172        case 50511102: // category
2173          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2174          return value;
2175        case 1998965455: // medication
2176          this.medication = TypeConvertor.castToCodeableReference(value); // CodeableReference
2177          return value;
2178        case -1867885268: // subject
2179          this.subject = TypeConvertor.castToReference(value); // Reference
2180          return value;
2181        case 1524132147: // encounter
2182          this.encounter = TypeConvertor.castToReference(value); // Reference
2183          return value;
2184        case -1248768647: // supportingInformation
2185          this.getSupportingInformation().add(TypeConvertor.castToReference(value)); // Reference
2186          return value;
2187        case -1192857417: // occurence
2188          this.occurence = TypeConvertor.castToType(value); // DataType
2189          return value;
2190        case -799233872: // recorded
2191          this.recorded = TypeConvertor.castToDateTime(value); // DateTimeType
2192          return value;
2193        case 702379724: // isSubPotent
2194          this.isSubPotent = TypeConvertor.castToBoolean(value); // BooleanType
2195          return value;
2196        case 969489082: // subPotentReason
2197          this.getSubPotentReason().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
2198          return value;
2199        case 481140686: // performer
2200          this.getPerformer().add((MedicationAdministrationPerformerComponent) value); // MedicationAdministrationPerformerComponent
2201          return value;
2202        case -934964668: // reason
2203          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2204          return value;
2205        case 1095692943: // request
2206          this.request = TypeConvertor.castToReference(value); // Reference
2207          return value;
2208        case -1335157162: // device
2209          this.getDevice().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
2210          return value;
2211        case 3387378: // note
2212          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
2213          return value;
2214        case -1326018889: // dosage
2215          this.dosage = (MedicationAdministrationDosageComponent) value; // MedicationAdministrationDosageComponent
2216          return value;
2217        case 1835190426: // eventHistory
2218          this.getEventHistory().add(TypeConvertor.castToReference(value)); // Reference
2219          return value;
2220        default: return super.setProperty(hash, name, value);
2221        }
2222
2223      }
2224
2225      @Override
2226      public Base setProperty(String name, Base value) throws FHIRException {
2227        if (name.equals("identifier")) {
2228          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2229        } else if (name.equals("basedOn")) {
2230          this.getBasedOn().add(TypeConvertor.castToReference(value));
2231        } else if (name.equals("partOf")) {
2232          this.getPartOf().add(TypeConvertor.castToReference(value));
2233        } else if (name.equals("status")) {
2234          value = new MedicationAdministrationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2235          this.status = (Enumeration) value; // Enumeration<MedicationAdministrationStatusCodes>
2236        } else if (name.equals("statusReason")) {
2237          this.getStatusReason().add(TypeConvertor.castToCodeableConcept(value));
2238        } else if (name.equals("category")) {
2239          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
2240        } else if (name.equals("medication")) {
2241          this.medication = TypeConvertor.castToCodeableReference(value); // CodeableReference
2242        } else if (name.equals("subject")) {
2243          this.subject = TypeConvertor.castToReference(value); // Reference
2244        } else if (name.equals("encounter")) {
2245          this.encounter = TypeConvertor.castToReference(value); // Reference
2246        } else if (name.equals("supportingInformation")) {
2247          this.getSupportingInformation().add(TypeConvertor.castToReference(value));
2248        } else if (name.equals("occurence[x]")) {
2249          this.occurence = TypeConvertor.castToType(value); // DataType
2250        } else if (name.equals("recorded")) {
2251          this.recorded = TypeConvertor.castToDateTime(value); // DateTimeType
2252        } else if (name.equals("isSubPotent")) {
2253          this.isSubPotent = TypeConvertor.castToBoolean(value); // BooleanType
2254        } else if (name.equals("subPotentReason")) {
2255          this.getSubPotentReason().add(TypeConvertor.castToCodeableConcept(value));
2256        } else if (name.equals("performer")) {
2257          this.getPerformer().add((MedicationAdministrationPerformerComponent) value);
2258        } else if (name.equals("reason")) {
2259          this.getReason().add(TypeConvertor.castToCodeableReference(value));
2260        } else if (name.equals("request")) {
2261          this.request = TypeConvertor.castToReference(value); // Reference
2262        } else if (name.equals("device")) {
2263          this.getDevice().add(TypeConvertor.castToCodeableReference(value));
2264        } else if (name.equals("note")) {
2265          this.getNote().add(TypeConvertor.castToAnnotation(value));
2266        } else if (name.equals("dosage")) {
2267          this.dosage = (MedicationAdministrationDosageComponent) value; // MedicationAdministrationDosageComponent
2268        } else if (name.equals("eventHistory")) {
2269          this.getEventHistory().add(TypeConvertor.castToReference(value));
2270        } else
2271          return super.setProperty(name, value);
2272        return value;
2273      }
2274
2275  @Override
2276  public void removeChild(String name, Base value) throws FHIRException {
2277        if (name.equals("identifier")) {
2278          this.getIdentifier().remove(value);
2279        } else if (name.equals("basedOn")) {
2280          this.getBasedOn().remove(value);
2281        } else if (name.equals("partOf")) {
2282          this.getPartOf().remove(value);
2283        } else if (name.equals("status")) {
2284          value = new MedicationAdministrationStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2285          this.status = (Enumeration) value; // Enumeration<MedicationAdministrationStatusCodes>
2286        } else if (name.equals("statusReason")) {
2287          this.getStatusReason().remove(value);
2288        } else if (name.equals("category")) {
2289          this.getCategory().remove(value);
2290        } else if (name.equals("medication")) {
2291          this.medication = null;
2292        } else if (name.equals("subject")) {
2293          this.subject = null;
2294        } else if (name.equals("encounter")) {
2295          this.encounter = null;
2296        } else if (name.equals("supportingInformation")) {
2297          this.getSupportingInformation().remove(value);
2298        } else if (name.equals("occurence[x]")) {
2299          this.occurence = null;
2300        } else if (name.equals("recorded")) {
2301          this.recorded = null;
2302        } else if (name.equals("isSubPotent")) {
2303          this.isSubPotent = null;
2304        } else if (name.equals("subPotentReason")) {
2305          this.getSubPotentReason().remove(value);
2306        } else if (name.equals("performer")) {
2307          this.getPerformer().remove((MedicationAdministrationPerformerComponent) value);
2308        } else if (name.equals("reason")) {
2309          this.getReason().remove(value);
2310        } else if (name.equals("request")) {
2311          this.request = null;
2312        } else if (name.equals("device")) {
2313          this.getDevice().remove(value);
2314        } else if (name.equals("note")) {
2315          this.getNote().remove(value);
2316        } else if (name.equals("dosage")) {
2317          this.dosage = (MedicationAdministrationDosageComponent) value; // MedicationAdministrationDosageComponent
2318        } else if (name.equals("eventHistory")) {
2319          this.getEventHistory().remove(value);
2320        } else
2321          super.removeChild(name, value);
2322        
2323      }
2324
2325      @Override
2326      public Base makeProperty(int hash, String name) throws FHIRException {
2327        switch (hash) {
2328        case -1618432855:  return addIdentifier(); 
2329        case -332612366:  return addBasedOn(); 
2330        case -995410646:  return addPartOf(); 
2331        case -892481550:  return getStatusElement();
2332        case 2051346646:  return addStatusReason(); 
2333        case 50511102:  return addCategory(); 
2334        case 1998965455:  return getMedication();
2335        case -1867885268:  return getSubject();
2336        case 1524132147:  return getEncounter();
2337        case -1248768647:  return addSupportingInformation(); 
2338        case 144188521:  return getOccurence();
2339        case -1192857417:  return getOccurence();
2340        case -799233872:  return getRecordedElement();
2341        case 702379724:  return getIsSubPotentElement();
2342        case 969489082:  return addSubPotentReason(); 
2343        case 481140686:  return addPerformer(); 
2344        case -934964668:  return addReason(); 
2345        case 1095692943:  return getRequest();
2346        case -1335157162:  return addDevice(); 
2347        case 3387378:  return addNote(); 
2348        case -1326018889:  return getDosage();
2349        case 1835190426:  return addEventHistory(); 
2350        default: return super.makeProperty(hash, name);
2351        }
2352
2353      }
2354
2355      @Override
2356      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2357        switch (hash) {
2358        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2359        case -332612366: /*basedOn*/ return new String[] {"Reference"};
2360        case -995410646: /*partOf*/ return new String[] {"Reference"};
2361        case -892481550: /*status*/ return new String[] {"code"};
2362        case 2051346646: /*statusReason*/ return new String[] {"CodeableConcept"};
2363        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
2364        case 1998965455: /*medication*/ return new String[] {"CodeableReference"};
2365        case -1867885268: /*subject*/ return new String[] {"Reference"};
2366        case 1524132147: /*encounter*/ return new String[] {"Reference"};
2367        case -1248768647: /*supportingInformation*/ return new String[] {"Reference"};
2368        case -1192857417: /*occurence*/ return new String[] {"dateTime", "Period", "Timing"};
2369        case -799233872: /*recorded*/ return new String[] {"dateTime"};
2370        case 702379724: /*isSubPotent*/ return new String[] {"boolean"};
2371        case 969489082: /*subPotentReason*/ return new String[] {"CodeableConcept"};
2372        case 481140686: /*performer*/ return new String[] {};
2373        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
2374        case 1095692943: /*request*/ return new String[] {"Reference"};
2375        case -1335157162: /*device*/ return new String[] {"CodeableReference"};
2376        case 3387378: /*note*/ return new String[] {"Annotation"};
2377        case -1326018889: /*dosage*/ return new String[] {};
2378        case 1835190426: /*eventHistory*/ return new String[] {"Reference"};
2379        default: return super.getTypesForProperty(hash, name);
2380        }
2381
2382      }
2383
2384      @Override
2385      public Base addChild(String name) throws FHIRException {
2386        if (name.equals("identifier")) {
2387          return addIdentifier();
2388        }
2389        else if (name.equals("basedOn")) {
2390          return addBasedOn();
2391        }
2392        else if (name.equals("partOf")) {
2393          return addPartOf();
2394        }
2395        else if (name.equals("status")) {
2396          throw new FHIRException("Cannot call addChild on a singleton property MedicationAdministration.status");
2397        }
2398        else if (name.equals("statusReason")) {
2399          return addStatusReason();
2400        }
2401        else if (name.equals("category")) {
2402          return addCategory();
2403        }
2404        else if (name.equals("medication")) {
2405          this.medication = new CodeableReference();
2406          return this.medication;
2407        }
2408        else if (name.equals("subject")) {
2409          this.subject = new Reference();
2410          return this.subject;
2411        }
2412        else if (name.equals("encounter")) {
2413          this.encounter = new Reference();
2414          return this.encounter;
2415        }
2416        else if (name.equals("supportingInformation")) {
2417          return addSupportingInformation();
2418        }
2419        else if (name.equals("occurenceDateTime")) {
2420          this.occurence = new DateTimeType();
2421          return this.occurence;
2422        }
2423        else if (name.equals("occurencePeriod")) {
2424          this.occurence = new Period();
2425          return this.occurence;
2426        }
2427        else if (name.equals("occurenceTiming")) {
2428          this.occurence = new Timing();
2429          return this.occurence;
2430        }
2431        else if (name.equals("recorded")) {
2432          throw new FHIRException("Cannot call addChild on a singleton property MedicationAdministration.recorded");
2433        }
2434        else if (name.equals("isSubPotent")) {
2435          throw new FHIRException("Cannot call addChild on a singleton property MedicationAdministration.isSubPotent");
2436        }
2437        else if (name.equals("subPotentReason")) {
2438          return addSubPotentReason();
2439        }
2440        else if (name.equals("performer")) {
2441          return addPerformer();
2442        }
2443        else if (name.equals("reason")) {
2444          return addReason();
2445        }
2446        else if (name.equals("request")) {
2447          this.request = new Reference();
2448          return this.request;
2449        }
2450        else if (name.equals("device")) {
2451          return addDevice();
2452        }
2453        else if (name.equals("note")) {
2454          return addNote();
2455        }
2456        else if (name.equals("dosage")) {
2457          this.dosage = new MedicationAdministrationDosageComponent();
2458          return this.dosage;
2459        }
2460        else if (name.equals("eventHistory")) {
2461          return addEventHistory();
2462        }
2463        else
2464          return super.addChild(name);
2465      }
2466
2467  public String fhirType() {
2468    return "MedicationAdministration";
2469
2470  }
2471
2472      public MedicationAdministration copy() {
2473        MedicationAdministration dst = new MedicationAdministration();
2474        copyValues(dst);
2475        return dst;
2476      }
2477
2478      public void copyValues(MedicationAdministration dst) {
2479        super.copyValues(dst);
2480        if (identifier != null) {
2481          dst.identifier = new ArrayList<Identifier>();
2482          for (Identifier i : identifier)
2483            dst.identifier.add(i.copy());
2484        };
2485        if (basedOn != null) {
2486          dst.basedOn = new ArrayList<Reference>();
2487          for (Reference i : basedOn)
2488            dst.basedOn.add(i.copy());
2489        };
2490        if (partOf != null) {
2491          dst.partOf = new ArrayList<Reference>();
2492          for (Reference i : partOf)
2493            dst.partOf.add(i.copy());
2494        };
2495        dst.status = status == null ? null : status.copy();
2496        if (statusReason != null) {
2497          dst.statusReason = new ArrayList<CodeableConcept>();
2498          for (CodeableConcept i : statusReason)
2499            dst.statusReason.add(i.copy());
2500        };
2501        if (category != null) {
2502          dst.category = new ArrayList<CodeableConcept>();
2503          for (CodeableConcept i : category)
2504            dst.category.add(i.copy());
2505        };
2506        dst.medication = medication == null ? null : medication.copy();
2507        dst.subject = subject == null ? null : subject.copy();
2508        dst.encounter = encounter == null ? null : encounter.copy();
2509        if (supportingInformation != null) {
2510          dst.supportingInformation = new ArrayList<Reference>();
2511          for (Reference i : supportingInformation)
2512            dst.supportingInformation.add(i.copy());
2513        };
2514        dst.occurence = occurence == null ? null : occurence.copy();
2515        dst.recorded = recorded == null ? null : recorded.copy();
2516        dst.isSubPotent = isSubPotent == null ? null : isSubPotent.copy();
2517        if (subPotentReason != null) {
2518          dst.subPotentReason = new ArrayList<CodeableConcept>();
2519          for (CodeableConcept i : subPotentReason)
2520            dst.subPotentReason.add(i.copy());
2521        };
2522        if (performer != null) {
2523          dst.performer = new ArrayList<MedicationAdministrationPerformerComponent>();
2524          for (MedicationAdministrationPerformerComponent i : performer)
2525            dst.performer.add(i.copy());
2526        };
2527        if (reason != null) {
2528          dst.reason = new ArrayList<CodeableReference>();
2529          for (CodeableReference i : reason)
2530            dst.reason.add(i.copy());
2531        };
2532        dst.request = request == null ? null : request.copy();
2533        if (device != null) {
2534          dst.device = new ArrayList<CodeableReference>();
2535          for (CodeableReference i : device)
2536            dst.device.add(i.copy());
2537        };
2538        if (note != null) {
2539          dst.note = new ArrayList<Annotation>();
2540          for (Annotation i : note)
2541            dst.note.add(i.copy());
2542        };
2543        dst.dosage = dosage == null ? null : dosage.copy();
2544        if (eventHistory != null) {
2545          dst.eventHistory = new ArrayList<Reference>();
2546          for (Reference i : eventHistory)
2547            dst.eventHistory.add(i.copy());
2548        };
2549      }
2550
2551      protected MedicationAdministration typedCopy() {
2552        return copy();
2553      }
2554
2555      @Override
2556      public boolean equalsDeep(Base other_) {
2557        if (!super.equalsDeep(other_))
2558          return false;
2559        if (!(other_ instanceof MedicationAdministration))
2560          return false;
2561        MedicationAdministration o = (MedicationAdministration) other_;
2562        return compareDeep(identifier, o.identifier, true) && compareDeep(basedOn, o.basedOn, true) && compareDeep(partOf, o.partOf, true)
2563           && compareDeep(status, o.status, true) && compareDeep(statusReason, o.statusReason, true) && compareDeep(category, o.category, true)
2564           && compareDeep(medication, o.medication, true) && compareDeep(subject, o.subject, true) && compareDeep(encounter, o.encounter, true)
2565           && compareDeep(supportingInformation, o.supportingInformation, true) && compareDeep(occurence, o.occurence, true)
2566           && compareDeep(recorded, o.recorded, true) && compareDeep(isSubPotent, o.isSubPotent, true) && compareDeep(subPotentReason, o.subPotentReason, true)
2567           && compareDeep(performer, o.performer, true) && compareDeep(reason, o.reason, true) && compareDeep(request, o.request, true)
2568           && compareDeep(device, o.device, true) && compareDeep(note, o.note, true) && compareDeep(dosage, o.dosage, true)
2569           && compareDeep(eventHistory, o.eventHistory, true);
2570      }
2571
2572      @Override
2573      public boolean equalsShallow(Base other_) {
2574        if (!super.equalsShallow(other_))
2575          return false;
2576        if (!(other_ instanceof MedicationAdministration))
2577          return false;
2578        MedicationAdministration o = (MedicationAdministration) other_;
2579        return compareValues(status, o.status, true) && compareValues(recorded, o.recorded, true) && compareValues(isSubPotent, o.isSubPotent, true)
2580          ;
2581      }
2582
2583      public boolean isEmpty() {
2584        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, basedOn, partOf
2585          , status, statusReason, category, medication, subject, encounter, supportingInformation
2586          , occurence, recorded, isSubPotent, subPotentReason, performer, reason, request
2587          , device, note, dosage, eventHistory);
2588      }
2589
2590  @Override
2591  public ResourceType getResourceType() {
2592    return ResourceType.MedicationAdministration;
2593   }
2594
2595 /**
2596   * Search parameter: <b>device</b>
2597   * <p>
2598   * Description: <b>Return administrations with this administration device identity</b><br>
2599   * Type: <b>reference</b><br>
2600   * Path: <b>MedicationAdministration.device.reference</b><br>
2601   * </p>
2602   */
2603  @SearchParamDefinition(name="device", path="MedicationAdministration.device.reference", description="Return administrations with this administration device identity", type="reference", target={Device.class } )
2604  public static final String SP_DEVICE = "device";
2605 /**
2606   * <b>Fluent Client</b> search parameter constant for <b>device</b>
2607   * <p>
2608   * Description: <b>Return administrations with this administration device identity</b><br>
2609   * Type: <b>reference</b><br>
2610   * Path: <b>MedicationAdministration.device.reference</b><br>
2611   * </p>
2612   */
2613  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEVICE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEVICE);
2614
2615/**
2616   * Constant for fluent queries to be used to add include statements. Specifies
2617   * the path value of "<b>MedicationAdministration:device</b>".
2618   */
2619  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEVICE = new ca.uhn.fhir.model.api.Include("MedicationAdministration:device").toLocked();
2620
2621 /**
2622   * Search parameter: <b>performer-device-code</b>
2623   * <p>
2624   * Description: <b>The identity of the individual who administered the medication</b><br>
2625   * Type: <b>token</b><br>
2626   * Path: <b>MedicationAdministration.performer.actor.concept</b><br>
2627   * </p>
2628   */
2629  @SearchParamDefinition(name="performer-device-code", path="MedicationAdministration.performer.actor.concept", description="The identity of the individual who administered the medication", type="token" )
2630  public static final String SP_PERFORMER_DEVICE_CODE = "performer-device-code";
2631 /**
2632   * <b>Fluent Client</b> search parameter constant for <b>performer-device-code</b>
2633   * <p>
2634   * Description: <b>The identity of the individual who administered the medication</b><br>
2635   * Type: <b>token</b><br>
2636   * Path: <b>MedicationAdministration.performer.actor.concept</b><br>
2637   * </p>
2638   */
2639  public static final ca.uhn.fhir.rest.gclient.TokenClientParam PERFORMER_DEVICE_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_PERFORMER_DEVICE_CODE);
2640
2641 /**
2642   * Search parameter: <b>performer</b>
2643   * <p>
2644   * Description: <b>The identity of the individual who administered the medication</b><br>
2645   * Type: <b>reference</b><br>
2646   * Path: <b>MedicationAdministration.performer.actor.reference</b><br>
2647   * </p>
2648   */
2649  @SearchParamDefinition(name="performer", path="MedicationAdministration.performer.actor.reference", description="The identity of the individual who administered the medication", type="reference", target={Device.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
2650  public static final String SP_PERFORMER = "performer";
2651 /**
2652   * <b>Fluent Client</b> search parameter constant for <b>performer</b>
2653   * <p>
2654   * Description: <b>The identity of the individual who administered the medication</b><br>
2655   * Type: <b>reference</b><br>
2656   * Path: <b>MedicationAdministration.performer.actor.reference</b><br>
2657   * </p>
2658   */
2659  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PERFORMER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PERFORMER);
2660
2661/**
2662   * Constant for fluent queries to be used to add include statements. Specifies
2663   * the path value of "<b>MedicationAdministration:performer</b>".
2664   */
2665  public static final ca.uhn.fhir.model.api.Include INCLUDE_PERFORMER = new ca.uhn.fhir.model.api.Include("MedicationAdministration:performer").toLocked();
2666
2667 /**
2668   * Search parameter: <b>reason-given-code</b>
2669   * <p>
2670   * Description: <b>Reasons for administering the medication</b><br>
2671   * Type: <b>token</b><br>
2672   * Path: <b>MedicationAdministration.reason.concept</b><br>
2673   * </p>
2674   */
2675  @SearchParamDefinition(name="reason-given-code", path="MedicationAdministration.reason.concept", description="Reasons for administering the medication", type="token" )
2676  public static final String SP_REASON_GIVEN_CODE = "reason-given-code";
2677 /**
2678   * <b>Fluent Client</b> search parameter constant for <b>reason-given-code</b>
2679   * <p>
2680   * Description: <b>Reasons for administering the medication</b><br>
2681   * Type: <b>token</b><br>
2682   * Path: <b>MedicationAdministration.reason.concept</b><br>
2683   * </p>
2684   */
2685  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REASON_GIVEN_CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REASON_GIVEN_CODE);
2686
2687 /**
2688   * Search parameter: <b>reason-given</b>
2689   * <p>
2690   * Description: <b>Reference to a resource (by instance)</b><br>
2691   * Type: <b>reference</b><br>
2692   * Path: <b>MedicationAdministration.reason.reference</b><br>
2693   * </p>
2694   */
2695  @SearchParamDefinition(name="reason-given", path="MedicationAdministration.reason.reference", description="Reference to a resource (by instance)", type="reference", target={Condition.class, DiagnosticReport.class, Observation.class } )
2696  public static final String SP_REASON_GIVEN = "reason-given";
2697 /**
2698   * <b>Fluent Client</b> search parameter constant for <b>reason-given</b>
2699   * <p>
2700   * Description: <b>Reference to a resource (by instance)</b><br>
2701   * Type: <b>reference</b><br>
2702   * Path: <b>MedicationAdministration.reason.reference</b><br>
2703   * </p>
2704   */
2705  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REASON_GIVEN = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REASON_GIVEN);
2706
2707/**
2708   * Constant for fluent queries to be used to add include statements. Specifies
2709   * the path value of "<b>MedicationAdministration:reason-given</b>".
2710   */
2711  public static final ca.uhn.fhir.model.api.Include INCLUDE_REASON_GIVEN = new ca.uhn.fhir.model.api.Include("MedicationAdministration:reason-given").toLocked();
2712
2713 /**
2714   * Search parameter: <b>reason-not-given</b>
2715   * <p>
2716   * Description: <b>Reasons for not administering the medication</b><br>
2717   * Type: <b>token</b><br>
2718   * Path: <b>MedicationAdministration.statusReason</b><br>
2719   * </p>
2720   */
2721  @SearchParamDefinition(name="reason-not-given", path="MedicationAdministration.statusReason", description="Reasons for not administering the medication", type="token" )
2722  public static final String SP_REASON_NOT_GIVEN = "reason-not-given";
2723 /**
2724   * <b>Fluent Client</b> search parameter constant for <b>reason-not-given</b>
2725   * <p>
2726   * Description: <b>Reasons for not administering the medication</b><br>
2727   * Type: <b>token</b><br>
2728   * Path: <b>MedicationAdministration.statusReason</b><br>
2729   * </p>
2730   */
2731  public static final ca.uhn.fhir.rest.gclient.TokenClientParam REASON_NOT_GIVEN = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_REASON_NOT_GIVEN);
2732
2733 /**
2734   * Search parameter: <b>request</b>
2735   * <p>
2736   * Description: <b>The identity of a request to list administrations from</b><br>
2737   * Type: <b>reference</b><br>
2738   * Path: <b>MedicationAdministration.request</b><br>
2739   * </p>
2740   */
2741  @SearchParamDefinition(name="request", path="MedicationAdministration.request", description="The identity of a request to list administrations from", type="reference", target={MedicationRequest.class } )
2742  public static final String SP_REQUEST = "request";
2743 /**
2744   * <b>Fluent Client</b> search parameter constant for <b>request</b>
2745   * <p>
2746   * Description: <b>The identity of a request to list administrations from</b><br>
2747   * Type: <b>reference</b><br>
2748   * Path: <b>MedicationAdministration.request</b><br>
2749   * </p>
2750   */
2751  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam REQUEST = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_REQUEST);
2752
2753/**
2754   * Constant for fluent queries to be used to add include statements. Specifies
2755   * the path value of "<b>MedicationAdministration:request</b>".
2756   */
2757  public static final ca.uhn.fhir.model.api.Include INCLUDE_REQUEST = new ca.uhn.fhir.model.api.Include("MedicationAdministration:request").toLocked();
2758
2759 /**
2760   * Search parameter: <b>subject</b>
2761   * <p>
2762   * Description: <b>The identity of the individual or group to list administrations for</b><br>
2763   * Type: <b>reference</b><br>
2764   * Path: <b>MedicationAdministration.subject</b><br>
2765   * </p>
2766   */
2767  @SearchParamDefinition(name="subject", path="MedicationAdministration.subject", description="The identity of the individual or group to list administrations for", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Group.class, Patient.class } )
2768  public static final String SP_SUBJECT = "subject";
2769 /**
2770   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
2771   * <p>
2772   * Description: <b>The identity of the individual or group to list administrations for</b><br>
2773   * Type: <b>reference</b><br>
2774   * Path: <b>MedicationAdministration.subject</b><br>
2775   * </p>
2776   */
2777  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
2778
2779/**
2780   * Constant for fluent queries to be used to add include statements. Specifies
2781   * the path value of "<b>MedicationAdministration:subject</b>".
2782   */
2783  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("MedicationAdministration:subject").toLocked();
2784
2785 /**
2786   * Search parameter: <b>code</b>
2787   * <p>
2788   * Description: <b>Multiple Resources: 
2789
2790* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
2791* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2792* [AuditEvent](auditevent.html): More specific code for the event
2793* [Basic](basic.html): Kind of Resource
2794* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
2795* [Condition](condition.html): Code for the condition
2796* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
2797* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2798* [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
2799* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2800* [ImagingSelection](imagingselection.html): The imaging selection status
2801* [List](list.html): What the purpose of this list is
2802* [Medication](medication.html): Returns medications for a specific code
2803* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2804* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2805* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2806* [MedicationStatement](medicationstatement.html): Return statements of this medication code
2807* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
2808* [Observation](observation.html): The code of the observation type
2809* [Procedure](procedure.html): A code to identify a  procedure
2810* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
2811* [Task](task.html): Search by task code
2812</b><br>
2813   * Type: <b>token</b><br>
2814   * 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>
2815   * </p>
2816   */
2817  @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" )
2818  public static final String SP_CODE = "code";
2819 /**
2820   * <b>Fluent Client</b> search parameter constant for <b>code</b>
2821   * <p>
2822   * Description: <b>Multiple Resources: 
2823
2824* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
2825* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
2826* [AuditEvent](auditevent.html): More specific code for the event
2827* [Basic](basic.html): Kind of Resource
2828* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
2829* [Condition](condition.html): Code for the condition
2830* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
2831* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
2832* [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
2833* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
2834* [ImagingSelection](imagingselection.html): The imaging selection status
2835* [List](list.html): What the purpose of this list is
2836* [Medication](medication.html): Returns medications for a specific code
2837* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
2838* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
2839* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
2840* [MedicationStatement](medicationstatement.html): Return statements of this medication code
2841* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
2842* [Observation](observation.html): The code of the observation type
2843* [Procedure](procedure.html): A code to identify a  procedure
2844* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
2845* [Task](task.html): Search by task code
2846</b><br>
2847   * Type: <b>token</b><br>
2848   * 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>
2849   * </p>
2850   */
2851  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
2852
2853 /**
2854   * Search parameter: <b>identifier</b>
2855   * <p>
2856   * Description: <b>Multiple Resources: 
2857
2858* [Account](account.html): Account number
2859* [AdverseEvent](adverseevent.html): Business identifier for the event
2860* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2861* [Appointment](appointment.html): An Identifier of the Appointment
2862* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
2863* [Basic](basic.html): Business identifier
2864* [BodyStructure](bodystructure.html): Bodystructure identifier
2865* [CarePlan](careplan.html): External Ids for this plan
2866* [CareTeam](careteam.html): External Ids for this team
2867* [ChargeItem](chargeitem.html): Business Identifier for item
2868* [Claim](claim.html): The primary identifier of the financial resource
2869* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
2870* [ClinicalImpression](clinicalimpression.html): Business identifier
2871* [Communication](communication.html): Unique identifier
2872* [CommunicationRequest](communicationrequest.html): Unique identifier
2873* [Composition](composition.html): Version-independent identifier for the Composition
2874* [Condition](condition.html): A unique identifier of the condition record
2875* [Consent](consent.html): Identifier for this record (external references)
2876* [Contract](contract.html): The identity of the contract
2877* [Coverage](coverage.html): The primary identifier of the insured and the coverage
2878* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
2879* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
2880* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2881* [DeviceRequest](devicerequest.html): Business identifier for request/order
2882* [DeviceUsage](deviceusage.html): Search by identifier
2883* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2884* [DocumentReference](documentreference.html): Identifier of the attachment binary
2885* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2886* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
2887* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2888* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
2889* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2890* [Flag](flag.html): Business identifier
2891* [Goal](goal.html): External Ids for this goal
2892* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
2893* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
2894* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2895* [Immunization](immunization.html): Business identifier
2896* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
2897* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
2898* [Invoice](invoice.html): Business Identifier for item
2899* [List](list.html): Business identifier
2900* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
2901* [Medication](medication.html): Returns medications with this external identifier
2902* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2903* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2904* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2905* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2906* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
2907* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
2908* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2909* [Observation](observation.html): The unique id for a particular observation
2910* [Person](person.html): A person Identifier
2911* [Procedure](procedure.html): A unique identifier for a procedure
2912* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
2913* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
2914* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
2915* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
2916* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2917* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2918* [Specimen](specimen.html): The unique identifier associated with the specimen
2919* [SupplyDelivery](supplydelivery.html): External identifier
2920* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2921* [Task](task.html): Search for a task instance by its business identifier
2922* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2923</b><br>
2924   * Type: <b>token</b><br>
2925   * 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>
2926   * </p>
2927   */
2928  @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" )
2929  public static final String SP_IDENTIFIER = "identifier";
2930 /**
2931   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2932   * <p>
2933   * Description: <b>Multiple Resources: 
2934
2935* [Account](account.html): Account number
2936* [AdverseEvent](adverseevent.html): Business identifier for the event
2937* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2938* [Appointment](appointment.html): An Identifier of the Appointment
2939* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
2940* [Basic](basic.html): Business identifier
2941* [BodyStructure](bodystructure.html): Bodystructure identifier
2942* [CarePlan](careplan.html): External Ids for this plan
2943* [CareTeam](careteam.html): External Ids for this team
2944* [ChargeItem](chargeitem.html): Business Identifier for item
2945* [Claim](claim.html): The primary identifier of the financial resource
2946* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
2947* [ClinicalImpression](clinicalimpression.html): Business identifier
2948* [Communication](communication.html): Unique identifier
2949* [CommunicationRequest](communicationrequest.html): Unique identifier
2950* [Composition](composition.html): Version-independent identifier for the Composition
2951* [Condition](condition.html): A unique identifier of the condition record
2952* [Consent](consent.html): Identifier for this record (external references)
2953* [Contract](contract.html): The identity of the contract
2954* [Coverage](coverage.html): The primary identifier of the insured and the coverage
2955* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
2956* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
2957* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2958* [DeviceRequest](devicerequest.html): Business identifier for request/order
2959* [DeviceUsage](deviceusage.html): Search by identifier
2960* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2961* [DocumentReference](documentreference.html): Identifier of the attachment binary
2962* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2963* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
2964* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2965* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
2966* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2967* [Flag](flag.html): Business identifier
2968* [Goal](goal.html): External Ids for this goal
2969* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
2970* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
2971* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2972* [Immunization](immunization.html): Business identifier
2973* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
2974* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
2975* [Invoice](invoice.html): Business Identifier for item
2976* [List](list.html): Business identifier
2977* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
2978* [Medication](medication.html): Returns medications with this external identifier
2979* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2980* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2981* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2982* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2983* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
2984* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
2985* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2986* [Observation](observation.html): The unique id for a particular observation
2987* [Person](person.html): A person Identifier
2988* [Procedure](procedure.html): A unique identifier for a procedure
2989* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
2990* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
2991* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
2992* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
2993* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2994* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2995* [Specimen](specimen.html): The unique identifier associated with the specimen
2996* [SupplyDelivery](supplydelivery.html): External identifier
2997* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2998* [Task](task.html): Search for a task instance by its business identifier
2999* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3000</b><br>
3001   * Type: <b>token</b><br>
3002   * 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>
3003   * </p>
3004   */
3005  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3006
3007 /**
3008   * Search parameter: <b>patient</b>
3009   * <p>
3010   * Description: <b>Multiple Resources: 
3011
3012* [Account](account.html): The entity that caused the expenses
3013* [AdverseEvent](adverseevent.html): Subject impacted by event
3014* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3015* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3016* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3017* [AuditEvent](auditevent.html): Where the activity involved patient data
3018* [Basic](basic.html): Identifies the focus of this resource
3019* [BodyStructure](bodystructure.html): Who this is about
3020* [CarePlan](careplan.html): Who the care plan is for
3021* [CareTeam](careteam.html): Who care team is for
3022* [ChargeItem](chargeitem.html): Individual service was done for/to
3023* [Claim](claim.html): Patient receiving the products or services
3024* [ClaimResponse](claimresponse.html): The subject of care
3025* [ClinicalImpression](clinicalimpression.html): Patient assessed
3026* [Communication](communication.html): Focus of message
3027* [CommunicationRequest](communicationrequest.html): Focus of message
3028* [Composition](composition.html): Who and/or what the composition is about
3029* [Condition](condition.html): Who has the condition?
3030* [Consent](consent.html): Who the consent applies to
3031* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3032* [Coverage](coverage.html): Retrieve coverages for a patient
3033* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3034* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3035* [DetectedIssue](detectedissue.html): Associated patient
3036* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3037* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3038* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3039* [DocumentReference](documentreference.html): Who/what is the subject of the document
3040* [Encounter](encounter.html): The patient present at the encounter
3041* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3042* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3043* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3044* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3045* [Flag](flag.html): The identity of a subject to list flags for
3046* [Goal](goal.html): Who this goal is intended for
3047* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3048* [ImagingSelection](imagingselection.html): Who the study is about
3049* [ImagingStudy](imagingstudy.html): Who the study is about
3050* [Immunization](immunization.html): The patient for the vaccination record
3051* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3052* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3053* [Invoice](invoice.html): Recipient(s) of goods and services
3054* [List](list.html): If all resources have the same subject
3055* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3056* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3057* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3058* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3059* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3060* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3061* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3062* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3063* [Observation](observation.html): The subject that the observation is about (if patient)
3064* [Person](person.html): The Person links to this Patient
3065* [Procedure](procedure.html): Search by subject - a patient
3066* [Provenance](provenance.html): Where the activity involved patient data
3067* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3068* [RelatedPerson](relatedperson.html): The patient this related person is related to
3069* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3070* [ResearchSubject](researchsubject.html): Who or what is part of study
3071* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3072* [ServiceRequest](servicerequest.html): Search by subject - a patient
3073* [Specimen](specimen.html): The patient the specimen comes from
3074* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3075* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3076* [Task](task.html): Search by patient
3077* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3078</b><br>
3079   * Type: <b>reference</b><br>
3080   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
3081   * </p>
3082   */
3083  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class } )
3084  public static final String SP_PATIENT = "patient";
3085 /**
3086   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
3087   * <p>
3088   * Description: <b>Multiple Resources: 
3089
3090* [Account](account.html): The entity that caused the expenses
3091* [AdverseEvent](adverseevent.html): Subject impacted by event
3092* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3093* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3094* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3095* [AuditEvent](auditevent.html): Where the activity involved patient data
3096* [Basic](basic.html): Identifies the focus of this resource
3097* [BodyStructure](bodystructure.html): Who this is about
3098* [CarePlan](careplan.html): Who the care plan is for
3099* [CareTeam](careteam.html): Who care team is for
3100* [ChargeItem](chargeitem.html): Individual service was done for/to
3101* [Claim](claim.html): Patient receiving the products or services
3102* [ClaimResponse](claimresponse.html): The subject of care
3103* [ClinicalImpression](clinicalimpression.html): Patient assessed
3104* [Communication](communication.html): Focus of message
3105* [CommunicationRequest](communicationrequest.html): Focus of message
3106* [Composition](composition.html): Who and/or what the composition is about
3107* [Condition](condition.html): Who has the condition?
3108* [Consent](consent.html): Who the consent applies to
3109* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3110* [Coverage](coverage.html): Retrieve coverages for a patient
3111* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3112* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3113* [DetectedIssue](detectedissue.html): Associated patient
3114* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3115* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3116* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3117* [DocumentReference](documentreference.html): Who/what is the subject of the document
3118* [Encounter](encounter.html): The patient present at the encounter
3119* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3120* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3121* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3122* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3123* [Flag](flag.html): The identity of a subject to list flags for
3124* [Goal](goal.html): Who this goal is intended for
3125* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3126* [ImagingSelection](imagingselection.html): Who the study is about
3127* [ImagingStudy](imagingstudy.html): Who the study is about
3128* [Immunization](immunization.html): The patient for the vaccination record
3129* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3130* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3131* [Invoice](invoice.html): Recipient(s) of goods and services
3132* [List](list.html): If all resources have the same subject
3133* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3134* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3135* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3136* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3137* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3138* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3139* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3140* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3141* [Observation](observation.html): The subject that the observation is about (if patient)
3142* [Person](person.html): The Person links to this Patient
3143* [Procedure](procedure.html): Search by subject - a patient
3144* [Provenance](provenance.html): Where the activity involved patient data
3145* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3146* [RelatedPerson](relatedperson.html): The patient this related person is related to
3147* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3148* [ResearchSubject](researchsubject.html): Who or what is part of study
3149* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3150* [ServiceRequest](servicerequest.html): Search by subject - a patient
3151* [Specimen](specimen.html): The patient the specimen comes from
3152* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3153* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3154* [Task](task.html): Search by patient
3155* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3156</b><br>
3157   * Type: <b>reference</b><br>
3158   * Path: <b>Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient</b><br>
3159   * </p>
3160   */
3161  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
3162
3163/**
3164   * Constant for fluent queries to be used to add include statements. Specifies
3165   * the path value of "<b>MedicationAdministration:patient</b>".
3166   */
3167  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("MedicationAdministration:patient").toLocked();
3168
3169 /**
3170   * Search parameter: <b>date</b>
3171   * <p>
3172   * Description: <b>Multiple Resources: 
3173
3174* [MedicationAdministration](medicationadministration.html): Date administration happened (or did not happen)
3175</b><br>
3176   * Type: <b>date</b><br>
3177   * Path: <b>MedicationAdministration.occurence.ofType(dateTime) | MedicationAdministration.occurence.ofType(Period)</b><br>
3178   * </p>
3179   */
3180  @SearchParamDefinition(name="date", path="MedicationAdministration.occurence.ofType(dateTime) | MedicationAdministration.occurence.ofType(Period)", description="Multiple Resources: \r\n\r\n* [MedicationAdministration](medicationadministration.html): Date administration happened (or did not happen)\r\n", type="date" )
3181  public static final String SP_DATE = "date";
3182 /**
3183   * <b>Fluent Client</b> search parameter constant for <b>date</b>
3184   * <p>
3185   * Description: <b>Multiple Resources: 
3186
3187* [MedicationAdministration](medicationadministration.html): Date administration happened (or did not happen)
3188</b><br>
3189   * Type: <b>date</b><br>
3190   * Path: <b>MedicationAdministration.occurence.ofType(dateTime) | MedicationAdministration.occurence.ofType(Period)</b><br>
3191   * </p>
3192   */
3193  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
3194
3195 /**
3196   * Search parameter: <b>encounter</b>
3197   * <p>
3198   * Description: <b>Multiple Resources: 
3199
3200* [MedicationAdministration](medicationadministration.html): Return administrations that share this encounter
3201* [MedicationRequest](medicationrequest.html): Return prescriptions with this encounter identifier
3202</b><br>
3203   * Type: <b>reference</b><br>
3204   * Path: <b>MedicationAdministration.encounter | MedicationRequest.encounter</b><br>
3205   * </p>
3206   */
3207  @SearchParamDefinition(name="encounter", path="MedicationAdministration.encounter | MedicationRequest.encounter", description="Multiple Resources: \r\n\r\n* [MedicationAdministration](medicationadministration.html): Return administrations that share this encounter\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions with this encounter identifier\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Encounter") }, target={Encounter.class } )
3208  public static final String SP_ENCOUNTER = "encounter";
3209 /**
3210   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
3211   * <p>
3212   * Description: <b>Multiple Resources: 
3213
3214* [MedicationAdministration](medicationadministration.html): Return administrations that share this encounter
3215* [MedicationRequest](medicationrequest.html): Return prescriptions with this encounter identifier
3216</b><br>
3217   * Type: <b>reference</b><br>
3218   * Path: <b>MedicationAdministration.encounter | MedicationRequest.encounter</b><br>
3219   * </p>
3220   */
3221  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
3222
3223/**
3224   * Constant for fluent queries to be used to add include statements. Specifies
3225   * the path value of "<b>MedicationAdministration:encounter</b>".
3226   */
3227  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("MedicationAdministration:encounter").toLocked();
3228
3229 /**
3230   * Search parameter: <b>medication</b>
3231   * <p>
3232   * Description: <b>Multiple Resources: 
3233
3234* [MedicationAdministration](medicationadministration.html): Return administrations of this medication reference
3235* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine resource
3236* [MedicationRequest](medicationrequest.html): Return prescriptions for this medication reference
3237* [MedicationStatement](medicationstatement.html): Return statements of this medication reference
3238</b><br>
3239   * Type: <b>reference</b><br>
3240   * Path: <b>MedicationAdministration.medication.reference | MedicationDispense.medication.reference | MedicationRequest.medication.reference | MedicationStatement.medication.reference</b><br>
3241   * </p>
3242   */
3243  @SearchParamDefinition(name="medication", path="MedicationAdministration.medication.reference | MedicationDispense.medication.reference | MedicationRequest.medication.reference | MedicationStatement.medication.reference", description="Multiple Resources: \r\n\r\n* [MedicationAdministration](medicationadministration.html): Return administrations of this medication reference\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine resource\r\n* [MedicationRequest](medicationrequest.html): Return prescriptions for this medication reference\r\n* [MedicationStatement](medicationstatement.html): Return statements of this medication reference\r\n", type="reference", target={Medication.class } )
3244  public static final String SP_MEDICATION = "medication";
3245 /**
3246   * <b>Fluent Client</b> search parameter constant for <b>medication</b>
3247   * <p>
3248   * Description: <b>Multiple Resources: 
3249
3250* [MedicationAdministration](medicationadministration.html): Return administrations of this medication reference
3251* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine resource
3252* [MedicationRequest](medicationrequest.html): Return prescriptions for this medication reference
3253* [MedicationStatement](medicationstatement.html): Return statements of this medication reference
3254</b><br>
3255   * Type: <b>reference</b><br>
3256   * Path: <b>MedicationAdministration.medication.reference | MedicationDispense.medication.reference | MedicationRequest.medication.reference | MedicationStatement.medication.reference</b><br>
3257   * </p>
3258   */
3259  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam MEDICATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_MEDICATION);
3260
3261/**
3262   * Constant for fluent queries to be used to add include statements. Specifies
3263   * the path value of "<b>MedicationAdministration:medication</b>".
3264   */
3265  public static final ca.uhn.fhir.model.api.Include INCLUDE_MEDICATION = new ca.uhn.fhir.model.api.Include("MedicationAdministration:medication").toLocked();
3266
3267 /**
3268   * Search parameter: <b>status</b>
3269   * <p>
3270   * Description: <b>Multiple Resources: 
3271
3272* [MedicationAdministration](medicationadministration.html): MedicationAdministration event status (for example one of active/paused/completed/nullified)
3273* [MedicationDispense](medicationdispense.html): Returns dispenses with a specified dispense status
3274* [MedicationRequest](medicationrequest.html): Status of the prescription
3275* [MedicationStatement](medicationstatement.html): Return statements that match the given status
3276</b><br>
3277   * Type: <b>token</b><br>
3278   * Path: <b>MedicationAdministration.status | MedicationDispense.status | MedicationRequest.status | MedicationStatement.status</b><br>
3279   * </p>
3280   */
3281  @SearchParamDefinition(name="status", path="MedicationAdministration.status | MedicationDispense.status | MedicationRequest.status | MedicationStatement.status", description="Multiple Resources: \r\n\r\n* [MedicationAdministration](medicationadministration.html): MedicationAdministration event status (for example one of active/paused/completed/nullified)\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with a specified dispense status\r\n* [MedicationRequest](medicationrequest.html): Status of the prescription\r\n* [MedicationStatement](medicationstatement.html): Return statements that match the given status\r\n", type="token" )
3282  public static final String SP_STATUS = "status";
3283 /**
3284   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3285   * <p>
3286   * Description: <b>Multiple Resources: 
3287
3288* [MedicationAdministration](medicationadministration.html): MedicationAdministration event status (for example one of active/paused/completed/nullified)
3289* [MedicationDispense](medicationdispense.html): Returns dispenses with a specified dispense status
3290* [MedicationRequest](medicationrequest.html): Status of the prescription
3291* [MedicationStatement](medicationstatement.html): Return statements that match the given status
3292</b><br>
3293   * Type: <b>token</b><br>
3294   * Path: <b>MedicationAdministration.status | MedicationDispense.status | MedicationRequest.status | MedicationStatement.status</b><br>
3295   * </p>
3296   */
3297  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3298
3299
3300}
3301