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 * A record of a medication that is being consumed by a patient.   A MedicationStatement may indicate that the patient may be taking the medication now or has taken the medication in the past or will be taking the medication in the future.  The source of this information can be the patient, significant other (such as a family member or spouse), or a clinician.  A common scenario where this information is captured is during the history taking process during a patient visit or stay.   The medication information may come from sources such as the patient's memory, from a prescription bottle,  or from a list of medications the patient, clinician or other party maintains. 
052
053The primary difference between a medicationstatement and a medicationadministration is that the medication administration has complete administration information and is based on actual administration information from the person who administered the medication.  A medicationstatement is often, if not always, less specific.  There is no required date/time when the medication was administered, in fact we only know that a source has reported the patient is taking this medication, where details such as time, quantity, or rate or even medication product may be incomplete or missing or less precise.  As stated earlier, the Medication Statement information may come from the patient's memory, from a prescription bottle or from a list of medications the patient, clinician or other party maintains.  Medication administration is more formal and is not missing detailed information.
054 */
055@ResourceDef(name="MedicationStatement", profile="http://hl7.org/fhir/StructureDefinition/MedicationStatement")
056public class MedicationStatement extends DomainResource {
057
058    public enum MedicationStatementStatusCodes {
059        /**
060         * The action of recording the medication statement is finished.
061         */
062        RECORDED, 
063        /**
064         * Some of the actions that are implied by the medication usage may have occurred.  For example, the patient may have taken some of the medication.  Clinical decision support systems should take this status into account.
065         */
066        ENTEREDINERROR, 
067        /**
068         * The medication usage is draft or preliminary.
069         */
070        DRAFT, 
071        /**
072         * added to help the parsers with the generic types
073         */
074        NULL;
075        public static MedicationStatementStatusCodes fromCode(String codeString) throws FHIRException {
076            if (codeString == null || "".equals(codeString))
077                return null;
078        if ("recorded".equals(codeString))
079          return RECORDED;
080        if ("entered-in-error".equals(codeString))
081          return ENTEREDINERROR;
082        if ("draft".equals(codeString))
083          return DRAFT;
084        if (Configuration.isAcceptInvalidEnums())
085          return null;
086        else
087          throw new FHIRException("Unknown MedicationStatementStatusCodes code '"+codeString+"'");
088        }
089        public String toCode() {
090          switch (this) {
091            case RECORDED: return "recorded";
092            case ENTEREDINERROR: return "entered-in-error";
093            case DRAFT: return "draft";
094            case NULL: return null;
095            default: return "?";
096          }
097        }
098        public String getSystem() {
099          switch (this) {
100            case RECORDED: return "http://hl7.org/fhir/CodeSystem/medication-statement-status";
101            case ENTEREDINERROR: return "http://hl7.org/fhir/CodeSystem/medication-statement-status";
102            case DRAFT: return "http://hl7.org/fhir/CodeSystem/medication-statement-status";
103            case NULL: return null;
104            default: return "?";
105          }
106        }
107        public String getDefinition() {
108          switch (this) {
109            case RECORDED: return "The action of recording the medication statement is finished.";
110            case ENTEREDINERROR: return "Some of the actions that are implied by the medication usage may have occurred.  For example, the patient may have taken some of the medication.  Clinical decision support systems should take this status into account.";
111            case DRAFT: return "The medication usage is draft or preliminary.";
112            case NULL: return null;
113            default: return "?";
114          }
115        }
116        public String getDisplay() {
117          switch (this) {
118            case RECORDED: return "Recorded";
119            case ENTEREDINERROR: return "Entered in Error";
120            case DRAFT: return "Draft";
121            case NULL: return null;
122            default: return "?";
123          }
124        }
125    }
126
127  public static class MedicationStatementStatusCodesEnumFactory implements EnumFactory<MedicationStatementStatusCodes> {
128    public MedicationStatementStatusCodes fromCode(String codeString) throws IllegalArgumentException {
129      if (codeString == null || "".equals(codeString))
130            if (codeString == null || "".equals(codeString))
131                return null;
132        if ("recorded".equals(codeString))
133          return MedicationStatementStatusCodes.RECORDED;
134        if ("entered-in-error".equals(codeString))
135          return MedicationStatementStatusCodes.ENTEREDINERROR;
136        if ("draft".equals(codeString))
137          return MedicationStatementStatusCodes.DRAFT;
138        throw new IllegalArgumentException("Unknown MedicationStatementStatusCodes code '"+codeString+"'");
139        }
140        public Enumeration<MedicationStatementStatusCodes> fromType(PrimitiveType<?> code) throws FHIRException {
141          if (code == null)
142            return null;
143          if (code.isEmpty())
144            return new Enumeration<MedicationStatementStatusCodes>(this, MedicationStatementStatusCodes.NULL, code);
145          String codeString = ((PrimitiveType) code).asStringValue();
146          if (codeString == null || "".equals(codeString))
147            return new Enumeration<MedicationStatementStatusCodes>(this, MedicationStatementStatusCodes.NULL, code);
148        if ("recorded".equals(codeString))
149          return new Enumeration<MedicationStatementStatusCodes>(this, MedicationStatementStatusCodes.RECORDED, code);
150        if ("entered-in-error".equals(codeString))
151          return new Enumeration<MedicationStatementStatusCodes>(this, MedicationStatementStatusCodes.ENTEREDINERROR, code);
152        if ("draft".equals(codeString))
153          return new Enumeration<MedicationStatementStatusCodes>(this, MedicationStatementStatusCodes.DRAFT, code);
154        throw new FHIRException("Unknown MedicationStatementStatusCodes code '"+codeString+"'");
155        }
156    public String toCode(MedicationStatementStatusCodes code) {
157      if (code == MedicationStatementStatusCodes.RECORDED)
158        return "recorded";
159      if (code == MedicationStatementStatusCodes.ENTEREDINERROR)
160        return "entered-in-error";
161      if (code == MedicationStatementStatusCodes.DRAFT)
162        return "draft";
163      return "?";
164      }
165    public String toSystem(MedicationStatementStatusCodes code) {
166      return code.getSystem();
167      }
168    }
169
170    @Block()
171    public static class MedicationStatementAdherenceComponent extends BackboneElement implements IBaseBackboneElement {
172        /**
173         * Type of the adherence for the medication.
174         */
175        @Child(name = "code", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=true)
176        @Description(shortDefinition="Type of adherence", formalDefinition="Type of the adherence for the medication." )
177        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-statement-adherence")
178        protected CodeableConcept code;
179
180        /**
181         * Captures the reason for the current use or adherence of a medication.
182         */
183        @Child(name = "reason", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
184        @Description(shortDefinition="Details of the reason for the current use of the medication", formalDefinition="Captures the reason for the current use or adherence of a medication." )
185        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/reason-medication-status-codes")
186        protected CodeableConcept reason;
187
188        private static final long serialVersionUID = -1479626679L;
189
190    /**
191     * Constructor
192     */
193      public MedicationStatementAdherenceComponent() {
194        super();
195      }
196
197    /**
198     * Constructor
199     */
200      public MedicationStatementAdherenceComponent(CodeableConcept code) {
201        super();
202        this.setCode(code);
203      }
204
205        /**
206         * @return {@link #code} (Type of the adherence for the medication.)
207         */
208        public CodeableConcept getCode() { 
209          if (this.code == null)
210            if (Configuration.errorOnAutoCreate())
211              throw new Error("Attempt to auto-create MedicationStatementAdherenceComponent.code");
212            else if (Configuration.doAutoCreate())
213              this.code = new CodeableConcept(); // cc
214          return this.code;
215        }
216
217        public boolean hasCode() { 
218          return this.code != null && !this.code.isEmpty();
219        }
220
221        /**
222         * @param value {@link #code} (Type of the adherence for the medication.)
223         */
224        public MedicationStatementAdherenceComponent setCode(CodeableConcept value) { 
225          this.code = value;
226          return this;
227        }
228
229        /**
230         * @return {@link #reason} (Captures the reason for the current use or adherence of a medication.)
231         */
232        public CodeableConcept getReason() { 
233          if (this.reason == null)
234            if (Configuration.errorOnAutoCreate())
235              throw new Error("Attempt to auto-create MedicationStatementAdherenceComponent.reason");
236            else if (Configuration.doAutoCreate())
237              this.reason = new CodeableConcept(); // cc
238          return this.reason;
239        }
240
241        public boolean hasReason() { 
242          return this.reason != null && !this.reason.isEmpty();
243        }
244
245        /**
246         * @param value {@link #reason} (Captures the reason for the current use or adherence of a medication.)
247         */
248        public MedicationStatementAdherenceComponent setReason(CodeableConcept value) { 
249          this.reason = value;
250          return this;
251        }
252
253        protected void listChildren(List<Property> children) {
254          super.listChildren(children);
255          children.add(new Property("code", "CodeableConcept", "Type of the adherence for the medication.", 0, 1, code));
256          children.add(new Property("reason", "CodeableConcept", "Captures the reason for the current use or adherence of a medication.", 0, 1, reason));
257        }
258
259        @Override
260        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
261          switch (_hash) {
262          case 3059181: /*code*/  return new Property("code", "CodeableConcept", "Type of the adherence for the medication.", 0, 1, code);
263          case -934964668: /*reason*/  return new Property("reason", "CodeableConcept", "Captures the reason for the current use or adherence of a medication.", 0, 1, reason);
264          default: return super.getNamedProperty(_hash, _name, _checkValid);
265          }
266
267        }
268
269      @Override
270      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
271        switch (hash) {
272        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeableConcept
273        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : new Base[] {this.reason}; // CodeableConcept
274        default: return super.getProperty(hash, name, checkValid);
275        }
276
277      }
278
279      @Override
280      public Base setProperty(int hash, String name, Base value) throws FHIRException {
281        switch (hash) {
282        case 3059181: // code
283          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
284          return value;
285        case -934964668: // reason
286          this.reason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
287          return value;
288        default: return super.setProperty(hash, name, value);
289        }
290
291      }
292
293      @Override
294      public Base setProperty(String name, Base value) throws FHIRException {
295        if (name.equals("code")) {
296          this.code = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
297        } else if (name.equals("reason")) {
298          this.reason = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
299        } else
300          return super.setProperty(name, value);
301        return value;
302      }
303
304  @Override
305  public void removeChild(String name, Base value) throws FHIRException {
306        if (name.equals("code")) {
307          this.code = null;
308        } else if (name.equals("reason")) {
309          this.reason = null;
310        } else
311          super.removeChild(name, value);
312        
313      }
314
315      @Override
316      public Base makeProperty(int hash, String name) throws FHIRException {
317        switch (hash) {
318        case 3059181:  return getCode();
319        case -934964668:  return getReason();
320        default: return super.makeProperty(hash, name);
321        }
322
323      }
324
325      @Override
326      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
327        switch (hash) {
328        case 3059181: /*code*/ return new String[] {"CodeableConcept"};
329        case -934964668: /*reason*/ return new String[] {"CodeableConcept"};
330        default: return super.getTypesForProperty(hash, name);
331        }
332
333      }
334
335      @Override
336      public Base addChild(String name) throws FHIRException {
337        if (name.equals("code")) {
338          this.code = new CodeableConcept();
339          return this.code;
340        }
341        else if (name.equals("reason")) {
342          this.reason = new CodeableConcept();
343          return this.reason;
344        }
345        else
346          return super.addChild(name);
347      }
348
349      public MedicationStatementAdherenceComponent copy() {
350        MedicationStatementAdherenceComponent dst = new MedicationStatementAdherenceComponent();
351        copyValues(dst);
352        return dst;
353      }
354
355      public void copyValues(MedicationStatementAdherenceComponent dst) {
356        super.copyValues(dst);
357        dst.code = code == null ? null : code.copy();
358        dst.reason = reason == null ? null : reason.copy();
359      }
360
361      @Override
362      public boolean equalsDeep(Base other_) {
363        if (!super.equalsDeep(other_))
364          return false;
365        if (!(other_ instanceof MedicationStatementAdherenceComponent))
366          return false;
367        MedicationStatementAdherenceComponent o = (MedicationStatementAdherenceComponent) other_;
368        return compareDeep(code, o.code, true) && compareDeep(reason, o.reason, true);
369      }
370
371      @Override
372      public boolean equalsShallow(Base other_) {
373        if (!super.equalsShallow(other_))
374          return false;
375        if (!(other_ instanceof MedicationStatementAdherenceComponent))
376          return false;
377        MedicationStatementAdherenceComponent o = (MedicationStatementAdherenceComponent) other_;
378        return true;
379      }
380
381      public boolean isEmpty() {
382        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, reason);
383      }
384
385  public String fhirType() {
386    return "MedicationStatement.adherence";
387
388  }
389
390  }
391
392    /**
393     * Identifiers associated with this Medication Statement 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.
394     */
395    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
396    @Description(shortDefinition="External identifier", formalDefinition="Identifiers associated with this Medication Statement 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." )
397    protected List<Identifier> identifier;
398
399    /**
400     * A larger event of which this particular MedicationStatement is a component or step.
401     */
402    @Child(name = "partOf", type = {Procedure.class, MedicationStatement.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
403    @Description(shortDefinition="Part of referenced event", formalDefinition="A larger event of which this particular MedicationStatement is a component or step." )
404    protected List<Reference> partOf;
405
406    /**
407     * A code representing the status of recording the medication statement.
408     */
409    @Child(name = "status", type = {CodeType.class}, order=2, min=1, max=1, modifier=true, summary=true)
410    @Description(shortDefinition="recorded | entered-in-error | draft", formalDefinition="A code representing the status of recording the medication statement." )
411    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-statement-status")
412    protected Enumeration<MedicationStatementStatusCodes> status;
413
414    /**
415     * Type of medication statement (for example, drug classification like ATC, where meds would be administered, legal category of the medication.).
416     */
417    @Child(name = "category", type = {CodeableConcept.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
418    @Description(shortDefinition="Type of medication statement", formalDefinition="Type of medication statement (for example, drug classification like ATC, where meds would be administered, legal category of the medication.)." )
419    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medicationrequest-admin-location")
420    protected List<CodeableConcept> category;
421
422    /**
423     * Identifies the medication being 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.
424     */
425    @Child(name = "medication", type = {CodeableReference.class}, order=4, min=1, max=1, modifier=false, summary=true)
426    @Description(shortDefinition="What medication was taken", formalDefinition="Identifies the medication being 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." )
427    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/medication-codes")
428    protected CodeableReference medication;
429
430    /**
431     * The person, animal or group who is/was taking the medication.
432     */
433    @Child(name = "subject", type = {Patient.class, Group.class}, order=5, min=1, max=1, modifier=false, summary=true)
434    @Description(shortDefinition="Who is/was taking  the medication", formalDefinition="The person, animal or group who is/was taking the medication." )
435    protected Reference subject;
436
437    /**
438     * The encounter that establishes the context for this MedicationStatement.
439     */
440    @Child(name = "encounter", type = {Encounter.class}, order=6, min=0, max=1, modifier=false, summary=true)
441    @Description(shortDefinition="Encounter associated with MedicationStatement", formalDefinition="The encounter that establishes the context for this MedicationStatement." )
442    protected Reference encounter;
443
444    /**
445     * The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).
446     */
447    @Child(name = "effective", type = {DateTimeType.class, Period.class, Timing.class}, order=7, min=0, max=1, modifier=false, summary=true)
448    @Description(shortDefinition="The date/time or interval when the medication is/was/will be taken", formalDefinition="The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking)." )
449    protected DataType effective;
450
451    /**
452     * The date when the Medication Statement was asserted by the information source.
453     */
454    @Child(name = "dateAsserted", type = {DateTimeType.class}, order=8, min=0, max=1, modifier=false, summary=true)
455    @Description(shortDefinition="When the usage was asserted?", formalDefinition="The date when the Medication Statement was asserted by the information source." )
456    protected DateTimeType dateAsserted;
457
458    /**
459     * The person or organization that provided the information about the taking of this medication. Note: Use derivedFrom when a MedicationStatement is derived from other resources, e.g. Claim or MedicationRequest.
460     */
461    @Child(name = "informationSource", type = {Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class, Organization.class}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
462    @Description(shortDefinition="Person or organization that provided the information about the taking of this medication", formalDefinition="The person or organization that provided the information about the taking of this medication. Note: Use derivedFrom when a MedicationStatement is derived from other resources, e.g. Claim or MedicationRequest." )
463    protected List<Reference> informationSource;
464
465    /**
466     * Allows linking the MedicationStatement to the underlying MedicationRequest, or to other information that supports or is used to derive the MedicationStatement.
467     */
468    @Child(name = "derivedFrom", type = {Reference.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
469    @Description(shortDefinition="Link to information used to derive the MedicationStatement", formalDefinition="Allows linking the MedicationStatement to the underlying MedicationRequest, or to other information that supports or is used to derive the MedicationStatement." )
470    protected List<Reference> derivedFrom;
471
472    /**
473     * A concept, Condition or observation that supports why the medication is being/was taken.
474     */
475    @Child(name = "reason", type = {CodeableReference.class}, order=11, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
476    @Description(shortDefinition="Reason for why the medication is being/was taken", formalDefinition="A concept, Condition or observation that supports why the medication is being/was taken." )
477    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/condition-code")
478    protected List<CodeableReference> reason;
479
480    /**
481     * Provides extra information about the Medication Statement that is not conveyed by the other attributes.
482     */
483    @Child(name = "note", type = {Annotation.class}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
484    @Description(shortDefinition="Further information about the usage", formalDefinition="Provides extra information about the Medication Statement that is not conveyed by the other attributes." )
485    protected List<Annotation> note;
486
487    /**
488     * Link to information that is relevant to a medication statement, for example, illicit drug use, gestational age, etc.
489     */
490    @Child(name = "relatedClinicalInformation", type = {Observation.class, Condition.class}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
491    @Description(shortDefinition="Link to information relevant to the usage of a medication", formalDefinition="Link to information that is relevant to a medication statement, for example, illicit drug use, gestational age, etc." )
492    protected List<Reference> relatedClinicalInformation;
493
494    /**
495     * The full representation of the dose of the medication included in all dosage instructions.  To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering doses.
496     */
497    @Child(name = "renderedDosageInstruction", type = {MarkdownType.class}, order=14, min=0, max=1, modifier=false, summary=false)
498    @Description(shortDefinition="Full representation of the dosage instructions", formalDefinition="The full representation of the dose of the medication included in all dosage instructions.  To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering doses." )
499    protected MarkdownType renderedDosageInstruction;
500
501    /**
502     * Indicates how the medication is/was or should be taken by the patient.
503     */
504    @Child(name = "dosage", type = {Dosage.class}, order=15, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
505    @Description(shortDefinition="Details of how medication is/was taken or should be taken", formalDefinition="Indicates how the medication is/was or should be taken by the patient." )
506    protected List<Dosage> dosage;
507
508    /**
509     * Indicates whether the medication is or is not being consumed or administered.
510     */
511    @Child(name = "adherence", type = {}, order=16, min=0, max=1, modifier=false, summary=true)
512    @Description(shortDefinition="Indicates whether the medication is or is not being consumed or administered", formalDefinition="Indicates whether the medication is or is not being consumed or administered." )
513    protected MedicationStatementAdherenceComponent adherence;
514
515    private static final long serialVersionUID = -1043616866L;
516
517  /**
518   * Constructor
519   */
520    public MedicationStatement() {
521      super();
522    }
523
524  /**
525   * Constructor
526   */
527    public MedicationStatement(MedicationStatementStatusCodes status, CodeableReference medication, Reference subject) {
528      super();
529      this.setStatus(status);
530      this.setMedication(medication);
531      this.setSubject(subject);
532    }
533
534    /**
535     * @return {@link #identifier} (Identifiers associated with this Medication Statement 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.)
536     */
537    public List<Identifier> getIdentifier() { 
538      if (this.identifier == null)
539        this.identifier = new ArrayList<Identifier>();
540      return this.identifier;
541    }
542
543    /**
544     * @return Returns a reference to <code>this</code> for easy method chaining
545     */
546    public MedicationStatement setIdentifier(List<Identifier> theIdentifier) { 
547      this.identifier = theIdentifier;
548      return this;
549    }
550
551    public boolean hasIdentifier() { 
552      if (this.identifier == null)
553        return false;
554      for (Identifier item : this.identifier)
555        if (!item.isEmpty())
556          return true;
557      return false;
558    }
559
560    public Identifier addIdentifier() { //3
561      Identifier t = new Identifier();
562      if (this.identifier == null)
563        this.identifier = new ArrayList<Identifier>();
564      this.identifier.add(t);
565      return t;
566    }
567
568    public MedicationStatement addIdentifier(Identifier t) { //3
569      if (t == null)
570        return this;
571      if (this.identifier == null)
572        this.identifier = new ArrayList<Identifier>();
573      this.identifier.add(t);
574      return this;
575    }
576
577    /**
578     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
579     */
580    public Identifier getIdentifierFirstRep() { 
581      if (getIdentifier().isEmpty()) {
582        addIdentifier();
583      }
584      return getIdentifier().get(0);
585    }
586
587    /**
588     * @return {@link #partOf} (A larger event of which this particular MedicationStatement is a component or step.)
589     */
590    public List<Reference> getPartOf() { 
591      if (this.partOf == null)
592        this.partOf = new ArrayList<Reference>();
593      return this.partOf;
594    }
595
596    /**
597     * @return Returns a reference to <code>this</code> for easy method chaining
598     */
599    public MedicationStatement setPartOf(List<Reference> thePartOf) { 
600      this.partOf = thePartOf;
601      return this;
602    }
603
604    public boolean hasPartOf() { 
605      if (this.partOf == null)
606        return false;
607      for (Reference item : this.partOf)
608        if (!item.isEmpty())
609          return true;
610      return false;
611    }
612
613    public Reference addPartOf() { //3
614      Reference t = new Reference();
615      if (this.partOf == null)
616        this.partOf = new ArrayList<Reference>();
617      this.partOf.add(t);
618      return t;
619    }
620
621    public MedicationStatement addPartOf(Reference t) { //3
622      if (t == null)
623        return this;
624      if (this.partOf == null)
625        this.partOf = new ArrayList<Reference>();
626      this.partOf.add(t);
627      return this;
628    }
629
630    /**
631     * @return The first repetition of repeating field {@link #partOf}, creating it if it does not already exist {3}
632     */
633    public Reference getPartOfFirstRep() { 
634      if (getPartOf().isEmpty()) {
635        addPartOf();
636      }
637      return getPartOf().get(0);
638    }
639
640    /**
641     * @return {@link #status} (A code representing the status of recording the medication statement.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
642     */
643    public Enumeration<MedicationStatementStatusCodes> getStatusElement() { 
644      if (this.status == null)
645        if (Configuration.errorOnAutoCreate())
646          throw new Error("Attempt to auto-create MedicationStatement.status");
647        else if (Configuration.doAutoCreate())
648          this.status = new Enumeration<MedicationStatementStatusCodes>(new MedicationStatementStatusCodesEnumFactory()); // bb
649      return this.status;
650    }
651
652    public boolean hasStatusElement() { 
653      return this.status != null && !this.status.isEmpty();
654    }
655
656    public boolean hasStatus() { 
657      return this.status != null && !this.status.isEmpty();
658    }
659
660    /**
661     * @param value {@link #status} (A code representing the status of recording the medication statement.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
662     */
663    public MedicationStatement setStatusElement(Enumeration<MedicationStatementStatusCodes> value) { 
664      this.status = value;
665      return this;
666    }
667
668    /**
669     * @return A code representing the status of recording the medication statement.
670     */
671    public MedicationStatementStatusCodes getStatus() { 
672      return this.status == null ? null : this.status.getValue();
673    }
674
675    /**
676     * @param value A code representing the status of recording the medication statement.
677     */
678    public MedicationStatement setStatus(MedicationStatementStatusCodes value) { 
679        if (this.status == null)
680          this.status = new Enumeration<MedicationStatementStatusCodes>(new MedicationStatementStatusCodesEnumFactory());
681        this.status.setValue(value);
682      return this;
683    }
684
685    /**
686     * @return {@link #category} (Type of medication statement (for example, drug classification like ATC, where meds would be administered, legal category of the medication.).)
687     */
688    public List<CodeableConcept> getCategory() { 
689      if (this.category == null)
690        this.category = new ArrayList<CodeableConcept>();
691      return this.category;
692    }
693
694    /**
695     * @return Returns a reference to <code>this</code> for easy method chaining
696     */
697    public MedicationStatement setCategory(List<CodeableConcept> theCategory) { 
698      this.category = theCategory;
699      return this;
700    }
701
702    public boolean hasCategory() { 
703      if (this.category == null)
704        return false;
705      for (CodeableConcept item : this.category)
706        if (!item.isEmpty())
707          return true;
708      return false;
709    }
710
711    public CodeableConcept addCategory() { //3
712      CodeableConcept t = new CodeableConcept();
713      if (this.category == null)
714        this.category = new ArrayList<CodeableConcept>();
715      this.category.add(t);
716      return t;
717    }
718
719    public MedicationStatement addCategory(CodeableConcept t) { //3
720      if (t == null)
721        return this;
722      if (this.category == null)
723        this.category = new ArrayList<CodeableConcept>();
724      this.category.add(t);
725      return this;
726    }
727
728    /**
729     * @return The first repetition of repeating field {@link #category}, creating it if it does not already exist {3}
730     */
731    public CodeableConcept getCategoryFirstRep() { 
732      if (getCategory().isEmpty()) {
733        addCategory();
734      }
735      return getCategory().get(0);
736    }
737
738    /**
739     * @return {@link #medication} (Identifies the medication being 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.)
740     */
741    public CodeableReference getMedication() { 
742      if (this.medication == null)
743        if (Configuration.errorOnAutoCreate())
744          throw new Error("Attempt to auto-create MedicationStatement.medication");
745        else if (Configuration.doAutoCreate())
746          this.medication = new CodeableReference(); // cc
747      return this.medication;
748    }
749
750    public boolean hasMedication() { 
751      return this.medication != null && !this.medication.isEmpty();
752    }
753
754    /**
755     * @param value {@link #medication} (Identifies the medication being 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.)
756     */
757    public MedicationStatement setMedication(CodeableReference value) { 
758      this.medication = value;
759      return this;
760    }
761
762    /**
763     * @return {@link #subject} (The person, animal or group who is/was taking the medication.)
764     */
765    public Reference getSubject() { 
766      if (this.subject == null)
767        if (Configuration.errorOnAutoCreate())
768          throw new Error("Attempt to auto-create MedicationStatement.subject");
769        else if (Configuration.doAutoCreate())
770          this.subject = new Reference(); // cc
771      return this.subject;
772    }
773
774    public boolean hasSubject() { 
775      return this.subject != null && !this.subject.isEmpty();
776    }
777
778    /**
779     * @param value {@link #subject} (The person, animal or group who is/was taking the medication.)
780     */
781    public MedicationStatement setSubject(Reference value) { 
782      this.subject = value;
783      return this;
784    }
785
786    /**
787     * @return {@link #encounter} (The encounter that establishes the context for this MedicationStatement.)
788     */
789    public Reference getEncounter() { 
790      if (this.encounter == null)
791        if (Configuration.errorOnAutoCreate())
792          throw new Error("Attempt to auto-create MedicationStatement.encounter");
793        else if (Configuration.doAutoCreate())
794          this.encounter = new Reference(); // cc
795      return this.encounter;
796    }
797
798    public boolean hasEncounter() { 
799      return this.encounter != null && !this.encounter.isEmpty();
800    }
801
802    /**
803     * @param value {@link #encounter} (The encounter that establishes the context for this MedicationStatement.)
804     */
805    public MedicationStatement setEncounter(Reference value) { 
806      this.encounter = value;
807      return this;
808    }
809
810    /**
811     * @return {@link #effective} (The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).)
812     */
813    public DataType getEffective() { 
814      return this.effective;
815    }
816
817    /**
818     * @return {@link #effective} (The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).)
819     */
820    public DateTimeType getEffectiveDateTimeType() throws FHIRException { 
821      if (this.effective == null)
822        this.effective = new DateTimeType();
823      if (!(this.effective instanceof DateTimeType))
824        throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.effective.getClass().getName()+" was encountered");
825      return (DateTimeType) this.effective;
826    }
827
828    public boolean hasEffectiveDateTimeType() { 
829      return this != null && this.effective instanceof DateTimeType;
830    }
831
832    /**
833     * @return {@link #effective} (The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).)
834     */
835    public Period getEffectivePeriod() throws FHIRException { 
836      if (this.effective == null)
837        this.effective = new Period();
838      if (!(this.effective instanceof Period))
839        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.effective.getClass().getName()+" was encountered");
840      return (Period) this.effective;
841    }
842
843    public boolean hasEffectivePeriod() { 
844      return this != null && this.effective instanceof Period;
845    }
846
847    /**
848     * @return {@link #effective} (The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).)
849     */
850    public Timing getEffectiveTiming() throws FHIRException { 
851      if (this.effective == null)
852        this.effective = new Timing();
853      if (!(this.effective instanceof Timing))
854        throw new FHIRException("Type mismatch: the type Timing was expected, but "+this.effective.getClass().getName()+" was encountered");
855      return (Timing) this.effective;
856    }
857
858    public boolean hasEffectiveTiming() { 
859      return this != null && this.effective instanceof Timing;
860    }
861
862    public boolean hasEffective() { 
863      return this.effective != null && !this.effective.isEmpty();
864    }
865
866    /**
867     * @param value {@link #effective} (The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).)
868     */
869    public MedicationStatement setEffective(DataType value) { 
870      if (value != null && !(value instanceof DateTimeType || value instanceof Period || value instanceof Timing))
871        throw new FHIRException("Not the right type for MedicationStatement.effective[x]: "+value.fhirType());
872      this.effective = value;
873      return this;
874    }
875
876    /**
877     * @return {@link #dateAsserted} (The date when the Medication Statement was asserted by the information source.). This is the underlying object with id, value and extensions. The accessor "getDateAsserted" gives direct access to the value
878     */
879    public DateTimeType getDateAssertedElement() { 
880      if (this.dateAsserted == null)
881        if (Configuration.errorOnAutoCreate())
882          throw new Error("Attempt to auto-create MedicationStatement.dateAsserted");
883        else if (Configuration.doAutoCreate())
884          this.dateAsserted = new DateTimeType(); // bb
885      return this.dateAsserted;
886    }
887
888    public boolean hasDateAssertedElement() { 
889      return this.dateAsserted != null && !this.dateAsserted.isEmpty();
890    }
891
892    public boolean hasDateAsserted() { 
893      return this.dateAsserted != null && !this.dateAsserted.isEmpty();
894    }
895
896    /**
897     * @param value {@link #dateAsserted} (The date when the Medication Statement was asserted by the information source.). This is the underlying object with id, value and extensions. The accessor "getDateAsserted" gives direct access to the value
898     */
899    public MedicationStatement setDateAssertedElement(DateTimeType value) { 
900      this.dateAsserted = value;
901      return this;
902    }
903
904    /**
905     * @return The date when the Medication Statement was asserted by the information source.
906     */
907    public Date getDateAsserted() { 
908      return this.dateAsserted == null ? null : this.dateAsserted.getValue();
909    }
910
911    /**
912     * @param value The date when the Medication Statement was asserted by the information source.
913     */
914    public MedicationStatement setDateAsserted(Date value) { 
915      if (value == null)
916        this.dateAsserted = null;
917      else {
918        if (this.dateAsserted == null)
919          this.dateAsserted = new DateTimeType();
920        this.dateAsserted.setValue(value);
921      }
922      return this;
923    }
924
925    /**
926     * @return {@link #informationSource} (The person or organization that provided the information about the taking of this medication. Note: Use derivedFrom when a MedicationStatement is derived from other resources, e.g. Claim or MedicationRequest.)
927     */
928    public List<Reference> getInformationSource() { 
929      if (this.informationSource == null)
930        this.informationSource = new ArrayList<Reference>();
931      return this.informationSource;
932    }
933
934    /**
935     * @return Returns a reference to <code>this</code> for easy method chaining
936     */
937    public MedicationStatement setInformationSource(List<Reference> theInformationSource) { 
938      this.informationSource = theInformationSource;
939      return this;
940    }
941
942    public boolean hasInformationSource() { 
943      if (this.informationSource == null)
944        return false;
945      for (Reference item : this.informationSource)
946        if (!item.isEmpty())
947          return true;
948      return false;
949    }
950
951    public Reference addInformationSource() { //3
952      Reference t = new Reference();
953      if (this.informationSource == null)
954        this.informationSource = new ArrayList<Reference>();
955      this.informationSource.add(t);
956      return t;
957    }
958
959    public MedicationStatement addInformationSource(Reference t) { //3
960      if (t == null)
961        return this;
962      if (this.informationSource == null)
963        this.informationSource = new ArrayList<Reference>();
964      this.informationSource.add(t);
965      return this;
966    }
967
968    /**
969     * @return The first repetition of repeating field {@link #informationSource}, creating it if it does not already exist {3}
970     */
971    public Reference getInformationSourceFirstRep() { 
972      if (getInformationSource().isEmpty()) {
973        addInformationSource();
974      }
975      return getInformationSource().get(0);
976    }
977
978    /**
979     * @return {@link #derivedFrom} (Allows linking the MedicationStatement to the underlying MedicationRequest, or to other information that supports or is used to derive the MedicationStatement.)
980     */
981    public List<Reference> getDerivedFrom() { 
982      if (this.derivedFrom == null)
983        this.derivedFrom = new ArrayList<Reference>();
984      return this.derivedFrom;
985    }
986
987    /**
988     * @return Returns a reference to <code>this</code> for easy method chaining
989     */
990    public MedicationStatement setDerivedFrom(List<Reference> theDerivedFrom) { 
991      this.derivedFrom = theDerivedFrom;
992      return this;
993    }
994
995    public boolean hasDerivedFrom() { 
996      if (this.derivedFrom == null)
997        return false;
998      for (Reference item : this.derivedFrom)
999        if (!item.isEmpty())
1000          return true;
1001      return false;
1002    }
1003
1004    public Reference addDerivedFrom() { //3
1005      Reference t = new Reference();
1006      if (this.derivedFrom == null)
1007        this.derivedFrom = new ArrayList<Reference>();
1008      this.derivedFrom.add(t);
1009      return t;
1010    }
1011
1012    public MedicationStatement addDerivedFrom(Reference t) { //3
1013      if (t == null)
1014        return this;
1015      if (this.derivedFrom == null)
1016        this.derivedFrom = new ArrayList<Reference>();
1017      this.derivedFrom.add(t);
1018      return this;
1019    }
1020
1021    /**
1022     * @return The first repetition of repeating field {@link #derivedFrom}, creating it if it does not already exist {3}
1023     */
1024    public Reference getDerivedFromFirstRep() { 
1025      if (getDerivedFrom().isEmpty()) {
1026        addDerivedFrom();
1027      }
1028      return getDerivedFrom().get(0);
1029    }
1030
1031    /**
1032     * @return {@link #reason} (A concept, Condition or observation that supports why the medication is being/was taken.)
1033     */
1034    public List<CodeableReference> getReason() { 
1035      if (this.reason == null)
1036        this.reason = new ArrayList<CodeableReference>();
1037      return this.reason;
1038    }
1039
1040    /**
1041     * @return Returns a reference to <code>this</code> for easy method chaining
1042     */
1043    public MedicationStatement setReason(List<CodeableReference> theReason) { 
1044      this.reason = theReason;
1045      return this;
1046    }
1047
1048    public boolean hasReason() { 
1049      if (this.reason == null)
1050        return false;
1051      for (CodeableReference item : this.reason)
1052        if (!item.isEmpty())
1053          return true;
1054      return false;
1055    }
1056
1057    public CodeableReference addReason() { //3
1058      CodeableReference t = new CodeableReference();
1059      if (this.reason == null)
1060        this.reason = new ArrayList<CodeableReference>();
1061      this.reason.add(t);
1062      return t;
1063    }
1064
1065    public MedicationStatement addReason(CodeableReference t) { //3
1066      if (t == null)
1067        return this;
1068      if (this.reason == null)
1069        this.reason = new ArrayList<CodeableReference>();
1070      this.reason.add(t);
1071      return this;
1072    }
1073
1074    /**
1075     * @return The first repetition of repeating field {@link #reason}, creating it if it does not already exist {3}
1076     */
1077    public CodeableReference getReasonFirstRep() { 
1078      if (getReason().isEmpty()) {
1079        addReason();
1080      }
1081      return getReason().get(0);
1082    }
1083
1084    /**
1085     * @return {@link #note} (Provides extra information about the Medication Statement that is not conveyed by the other attributes.)
1086     */
1087    public List<Annotation> getNote() { 
1088      if (this.note == null)
1089        this.note = new ArrayList<Annotation>();
1090      return this.note;
1091    }
1092
1093    /**
1094     * @return Returns a reference to <code>this</code> for easy method chaining
1095     */
1096    public MedicationStatement setNote(List<Annotation> theNote) { 
1097      this.note = theNote;
1098      return this;
1099    }
1100
1101    public boolean hasNote() { 
1102      if (this.note == null)
1103        return false;
1104      for (Annotation item : this.note)
1105        if (!item.isEmpty())
1106          return true;
1107      return false;
1108    }
1109
1110    public Annotation addNote() { //3
1111      Annotation t = new Annotation();
1112      if (this.note == null)
1113        this.note = new ArrayList<Annotation>();
1114      this.note.add(t);
1115      return t;
1116    }
1117
1118    public MedicationStatement addNote(Annotation t) { //3
1119      if (t == null)
1120        return this;
1121      if (this.note == null)
1122        this.note = new ArrayList<Annotation>();
1123      this.note.add(t);
1124      return this;
1125    }
1126
1127    /**
1128     * @return The first repetition of repeating field {@link #note}, creating it if it does not already exist {3}
1129     */
1130    public Annotation getNoteFirstRep() { 
1131      if (getNote().isEmpty()) {
1132        addNote();
1133      }
1134      return getNote().get(0);
1135    }
1136
1137    /**
1138     * @return {@link #relatedClinicalInformation} (Link to information that is relevant to a medication statement, for example, illicit drug use, gestational age, etc.)
1139     */
1140    public List<Reference> getRelatedClinicalInformation() { 
1141      if (this.relatedClinicalInformation == null)
1142        this.relatedClinicalInformation = new ArrayList<Reference>();
1143      return this.relatedClinicalInformation;
1144    }
1145
1146    /**
1147     * @return Returns a reference to <code>this</code> for easy method chaining
1148     */
1149    public MedicationStatement setRelatedClinicalInformation(List<Reference> theRelatedClinicalInformation) { 
1150      this.relatedClinicalInformation = theRelatedClinicalInformation;
1151      return this;
1152    }
1153
1154    public boolean hasRelatedClinicalInformation() { 
1155      if (this.relatedClinicalInformation == null)
1156        return false;
1157      for (Reference item : this.relatedClinicalInformation)
1158        if (!item.isEmpty())
1159          return true;
1160      return false;
1161    }
1162
1163    public Reference addRelatedClinicalInformation() { //3
1164      Reference t = new Reference();
1165      if (this.relatedClinicalInformation == null)
1166        this.relatedClinicalInformation = new ArrayList<Reference>();
1167      this.relatedClinicalInformation.add(t);
1168      return t;
1169    }
1170
1171    public MedicationStatement addRelatedClinicalInformation(Reference t) { //3
1172      if (t == null)
1173        return this;
1174      if (this.relatedClinicalInformation == null)
1175        this.relatedClinicalInformation = new ArrayList<Reference>();
1176      this.relatedClinicalInformation.add(t);
1177      return this;
1178    }
1179
1180    /**
1181     * @return The first repetition of repeating field {@link #relatedClinicalInformation}, creating it if it does not already exist {3}
1182     */
1183    public Reference getRelatedClinicalInformationFirstRep() { 
1184      if (getRelatedClinicalInformation().isEmpty()) {
1185        addRelatedClinicalInformation();
1186      }
1187      return getRelatedClinicalInformation().get(0);
1188    }
1189
1190    /**
1191     * @return {@link #renderedDosageInstruction} (The full representation of the dose of the medication included in all dosage instructions.  To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering doses.). This is the underlying object with id, value and extensions. The accessor "getRenderedDosageInstruction" gives direct access to the value
1192     */
1193    public MarkdownType getRenderedDosageInstructionElement() { 
1194      if (this.renderedDosageInstruction == null)
1195        if (Configuration.errorOnAutoCreate())
1196          throw new Error("Attempt to auto-create MedicationStatement.renderedDosageInstruction");
1197        else if (Configuration.doAutoCreate())
1198          this.renderedDosageInstruction = new MarkdownType(); // bb
1199      return this.renderedDosageInstruction;
1200    }
1201
1202    public boolean hasRenderedDosageInstructionElement() { 
1203      return this.renderedDosageInstruction != null && !this.renderedDosageInstruction.isEmpty();
1204    }
1205
1206    public boolean hasRenderedDosageInstruction() { 
1207      return this.renderedDosageInstruction != null && !this.renderedDosageInstruction.isEmpty();
1208    }
1209
1210    /**
1211     * @param value {@link #renderedDosageInstruction} (The full representation of the dose of the medication included in all dosage instructions.  To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering doses.). This is the underlying object with id, value and extensions. The accessor "getRenderedDosageInstruction" gives direct access to the value
1212     */
1213    public MedicationStatement setRenderedDosageInstructionElement(MarkdownType value) { 
1214      this.renderedDosageInstruction = value;
1215      return this;
1216    }
1217
1218    /**
1219     * @return The full representation of the dose of the medication included in all dosage instructions.  To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering doses.
1220     */
1221    public String getRenderedDosageInstruction() { 
1222      return this.renderedDosageInstruction == null ? null : this.renderedDosageInstruction.getValue();
1223    }
1224
1225    /**
1226     * @param value The full representation of the dose of the medication included in all dosage instructions.  To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering doses.
1227     */
1228    public MedicationStatement setRenderedDosageInstruction(String value) { 
1229      if (Utilities.noString(value))
1230        this.renderedDosageInstruction = null;
1231      else {
1232        if (this.renderedDosageInstruction == null)
1233          this.renderedDosageInstruction = new MarkdownType();
1234        this.renderedDosageInstruction.setValue(value);
1235      }
1236      return this;
1237    }
1238
1239    /**
1240     * @return {@link #dosage} (Indicates how the medication is/was or should be taken by the patient.)
1241     */
1242    public List<Dosage> getDosage() { 
1243      if (this.dosage == null)
1244        this.dosage = new ArrayList<Dosage>();
1245      return this.dosage;
1246    }
1247
1248    /**
1249     * @return Returns a reference to <code>this</code> for easy method chaining
1250     */
1251    public MedicationStatement setDosage(List<Dosage> theDosage) { 
1252      this.dosage = theDosage;
1253      return this;
1254    }
1255
1256    public boolean hasDosage() { 
1257      if (this.dosage == null)
1258        return false;
1259      for (Dosage item : this.dosage)
1260        if (!item.isEmpty())
1261          return true;
1262      return false;
1263    }
1264
1265    public Dosage addDosage() { //3
1266      Dosage t = new Dosage();
1267      if (this.dosage == null)
1268        this.dosage = new ArrayList<Dosage>();
1269      this.dosage.add(t);
1270      return t;
1271    }
1272
1273    public MedicationStatement addDosage(Dosage t) { //3
1274      if (t == null)
1275        return this;
1276      if (this.dosage == null)
1277        this.dosage = new ArrayList<Dosage>();
1278      this.dosage.add(t);
1279      return this;
1280    }
1281
1282    /**
1283     * @return The first repetition of repeating field {@link #dosage}, creating it if it does not already exist {3}
1284     */
1285    public Dosage getDosageFirstRep() { 
1286      if (getDosage().isEmpty()) {
1287        addDosage();
1288      }
1289      return getDosage().get(0);
1290    }
1291
1292    /**
1293     * @return {@link #adherence} (Indicates whether the medication is or is not being consumed or administered.)
1294     */
1295    public MedicationStatementAdherenceComponent getAdherence() { 
1296      if (this.adherence == null)
1297        if (Configuration.errorOnAutoCreate())
1298          throw new Error("Attempt to auto-create MedicationStatement.adherence");
1299        else if (Configuration.doAutoCreate())
1300          this.adherence = new MedicationStatementAdherenceComponent(); // cc
1301      return this.adherence;
1302    }
1303
1304    public boolean hasAdherence() { 
1305      return this.adherence != null && !this.adherence.isEmpty();
1306    }
1307
1308    /**
1309     * @param value {@link #adherence} (Indicates whether the medication is or is not being consumed or administered.)
1310     */
1311    public MedicationStatement setAdherence(MedicationStatementAdherenceComponent value) { 
1312      this.adherence = value;
1313      return this;
1314    }
1315
1316      protected void listChildren(List<Property> children) {
1317        super.listChildren(children);
1318        children.add(new Property("identifier", "Identifier", "Identifiers associated with this Medication Statement 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));
1319        children.add(new Property("partOf", "Reference(Procedure|MedicationStatement)", "A larger event of which this particular MedicationStatement is a component or step.", 0, java.lang.Integer.MAX_VALUE, partOf));
1320        children.add(new Property("status", "code", "A code representing the status of recording the medication statement.", 0, 1, status));
1321        children.add(new Property("category", "CodeableConcept", "Type of medication statement (for example, drug classification like ATC, where meds would be administered, legal category of the medication.).", 0, java.lang.Integer.MAX_VALUE, category));
1322        children.add(new Property("medication", "CodeableReference(Medication)", "Identifies the medication being 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));
1323        children.add(new Property("subject", "Reference(Patient|Group)", "The person, animal or group who is/was taking the medication.", 0, 1, subject));
1324        children.add(new Property("encounter", "Reference(Encounter)", "The encounter that establishes the context for this MedicationStatement.", 0, 1, encounter));
1325        children.add(new Property("effective[x]", "dateTime|Period|Timing", "The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).", 0, 1, effective));
1326        children.add(new Property("dateAsserted", "dateTime", "The date when the Medication Statement was asserted by the information source.", 0, 1, dateAsserted));
1327        children.add(new Property("informationSource", "Reference(Patient|Practitioner|PractitionerRole|RelatedPerson|Organization)", "The person or organization that provided the information about the taking of this medication. Note: Use derivedFrom when a MedicationStatement is derived from other resources, e.g. Claim or MedicationRequest.", 0, java.lang.Integer.MAX_VALUE, informationSource));
1328        children.add(new Property("derivedFrom", "Reference(Any)", "Allows linking the MedicationStatement to the underlying MedicationRequest, or to other information that supports or is used to derive the MedicationStatement.", 0, java.lang.Integer.MAX_VALUE, derivedFrom));
1329        children.add(new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport)", "A concept, Condition or observation that supports why the medication is being/was taken.", 0, java.lang.Integer.MAX_VALUE, reason));
1330        children.add(new Property("note", "Annotation", "Provides extra information about the Medication Statement that is not conveyed by the other attributes.", 0, java.lang.Integer.MAX_VALUE, note));
1331        children.add(new Property("relatedClinicalInformation", "Reference(Observation|Condition)", "Link to information that is relevant to a medication statement, for example, illicit drug use, gestational age, etc.", 0, java.lang.Integer.MAX_VALUE, relatedClinicalInformation));
1332        children.add(new Property("renderedDosageInstruction", "markdown", "The full representation of the dose of the medication included in all dosage instructions.  To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering doses.", 0, 1, renderedDosageInstruction));
1333        children.add(new Property("dosage", "Dosage", "Indicates how the medication is/was or should be taken by the patient.", 0, java.lang.Integer.MAX_VALUE, dosage));
1334        children.add(new Property("adherence", "", "Indicates whether the medication is or is not being consumed or administered.", 0, 1, adherence));
1335      }
1336
1337      @Override
1338      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1339        switch (_hash) {
1340        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "Identifiers associated with this Medication Statement 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);
1341        case -995410646: /*partOf*/  return new Property("partOf", "Reference(Procedure|MedicationStatement)", "A larger event of which this particular MedicationStatement is a component or step.", 0, java.lang.Integer.MAX_VALUE, partOf);
1342        case -892481550: /*status*/  return new Property("status", "code", "A code representing the status of recording the medication statement.", 0, 1, status);
1343        case 50511102: /*category*/  return new Property("category", "CodeableConcept", "Type of medication statement (for example, drug classification like ATC, where meds would be administered, legal category of the medication.).", 0, java.lang.Integer.MAX_VALUE, category);
1344        case 1998965455: /*medication*/  return new Property("medication", "CodeableReference(Medication)", "Identifies the medication being 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);
1345        case -1867885268: /*subject*/  return new Property("subject", "Reference(Patient|Group)", "The person, animal or group who is/was taking the medication.", 0, 1, subject);
1346        case 1524132147: /*encounter*/  return new Property("encounter", "Reference(Encounter)", "The encounter that establishes the context for this MedicationStatement.", 0, 1, encounter);
1347        case 247104889: /*effective[x]*/  return new Property("effective[x]", "dateTime|Period|Timing", "The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).", 0, 1, effective);
1348        case -1468651097: /*effective*/  return new Property("effective[x]", "dateTime|Period|Timing", "The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).", 0, 1, effective);
1349        case -275306910: /*effectiveDateTime*/  return new Property("effective[x]", "dateTime", "The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).", 0, 1, effective);
1350        case -403934648: /*effectivePeriod*/  return new Property("effective[x]", "Period", "The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).", 0, 1, effective);
1351        case -285872943: /*effectiveTiming*/  return new Property("effective[x]", "Timing", "The interval of time during which it is being asserted that the patient is/was/will be taking the medication (or was not taking, when the MedicationStatement.adherence element is Not Taking).", 0, 1, effective);
1352        case -1980855245: /*dateAsserted*/  return new Property("dateAsserted", "dateTime", "The date when the Medication Statement was asserted by the information source.", 0, 1, dateAsserted);
1353        case -2123220889: /*informationSource*/  return new Property("informationSource", "Reference(Patient|Practitioner|PractitionerRole|RelatedPerson|Organization)", "The person or organization that provided the information about the taking of this medication. Note: Use derivedFrom when a MedicationStatement is derived from other resources, e.g. Claim or MedicationRequest.", 0, java.lang.Integer.MAX_VALUE, informationSource);
1354        case 1077922663: /*derivedFrom*/  return new Property("derivedFrom", "Reference(Any)", "Allows linking the MedicationStatement to the underlying MedicationRequest, or to other information that supports or is used to derive the MedicationStatement.", 0, java.lang.Integer.MAX_VALUE, derivedFrom);
1355        case -934964668: /*reason*/  return new Property("reason", "CodeableReference(Condition|Observation|DiagnosticReport)", "A concept, Condition or observation that supports why the medication is being/was taken.", 0, java.lang.Integer.MAX_VALUE, reason);
1356        case 3387378: /*note*/  return new Property("note", "Annotation", "Provides extra information about the Medication Statement that is not conveyed by the other attributes.", 0, java.lang.Integer.MAX_VALUE, note);
1357        case 1040787950: /*relatedClinicalInformation*/  return new Property("relatedClinicalInformation", "Reference(Observation|Condition)", "Link to information that is relevant to a medication statement, for example, illicit drug use, gestational age, etc.", 0, java.lang.Integer.MAX_VALUE, relatedClinicalInformation);
1358        case 1718902050: /*renderedDosageInstruction*/  return new Property("renderedDosageInstruction", "markdown", "The full representation of the dose of the medication included in all dosage instructions.  To be used when multiple dosage instructions are included to represent complex dosing such as increasing or tapering doses.", 0, 1, renderedDosageInstruction);
1359        case -1326018889: /*dosage*/  return new Property("dosage", "Dosage", "Indicates how the medication is/was or should be taken by the patient.", 0, java.lang.Integer.MAX_VALUE, dosage);
1360        case -231003683: /*adherence*/  return new Property("adherence", "", "Indicates whether the medication is or is not being consumed or administered.", 0, 1, adherence);
1361        default: return super.getNamedProperty(_hash, _name, _checkValid);
1362        }
1363
1364      }
1365
1366      @Override
1367      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1368        switch (hash) {
1369        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
1370        case -995410646: /*partOf*/ return this.partOf == null ? new Base[0] : this.partOf.toArray(new Base[this.partOf.size()]); // Reference
1371        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<MedicationStatementStatusCodes>
1372        case 50511102: /*category*/ return this.category == null ? new Base[0] : this.category.toArray(new Base[this.category.size()]); // CodeableConcept
1373        case 1998965455: /*medication*/ return this.medication == null ? new Base[0] : new Base[] {this.medication}; // CodeableReference
1374        case -1867885268: /*subject*/ return this.subject == null ? new Base[0] : new Base[] {this.subject}; // Reference
1375        case 1524132147: /*encounter*/ return this.encounter == null ? new Base[0] : new Base[] {this.encounter}; // Reference
1376        case -1468651097: /*effective*/ return this.effective == null ? new Base[0] : new Base[] {this.effective}; // DataType
1377        case -1980855245: /*dateAsserted*/ return this.dateAsserted == null ? new Base[0] : new Base[] {this.dateAsserted}; // DateTimeType
1378        case -2123220889: /*informationSource*/ return this.informationSource == null ? new Base[0] : this.informationSource.toArray(new Base[this.informationSource.size()]); // Reference
1379        case 1077922663: /*derivedFrom*/ return this.derivedFrom == null ? new Base[0] : this.derivedFrom.toArray(new Base[this.derivedFrom.size()]); // Reference
1380        case -934964668: /*reason*/ return this.reason == null ? new Base[0] : this.reason.toArray(new Base[this.reason.size()]); // CodeableReference
1381        case 3387378: /*note*/ return this.note == null ? new Base[0] : this.note.toArray(new Base[this.note.size()]); // Annotation
1382        case 1040787950: /*relatedClinicalInformation*/ return this.relatedClinicalInformation == null ? new Base[0] : this.relatedClinicalInformation.toArray(new Base[this.relatedClinicalInformation.size()]); // Reference
1383        case 1718902050: /*renderedDosageInstruction*/ return this.renderedDosageInstruction == null ? new Base[0] : new Base[] {this.renderedDosageInstruction}; // MarkdownType
1384        case -1326018889: /*dosage*/ return this.dosage == null ? new Base[0] : this.dosage.toArray(new Base[this.dosage.size()]); // Dosage
1385        case -231003683: /*adherence*/ return this.adherence == null ? new Base[0] : new Base[] {this.adherence}; // MedicationStatementAdherenceComponent
1386        default: return super.getProperty(hash, name, checkValid);
1387        }
1388
1389      }
1390
1391      @Override
1392      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1393        switch (hash) {
1394        case -1618432855: // identifier
1395          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
1396          return value;
1397        case -995410646: // partOf
1398          this.getPartOf().add(TypeConvertor.castToReference(value)); // Reference
1399          return value;
1400        case -892481550: // status
1401          value = new MedicationStatementStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1402          this.status = (Enumeration) value; // Enumeration<MedicationStatementStatusCodes>
1403          return value;
1404        case 50511102: // category
1405          this.getCategory().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1406          return value;
1407        case 1998965455: // medication
1408          this.medication = TypeConvertor.castToCodeableReference(value); // CodeableReference
1409          return value;
1410        case -1867885268: // subject
1411          this.subject = TypeConvertor.castToReference(value); // Reference
1412          return value;
1413        case 1524132147: // encounter
1414          this.encounter = TypeConvertor.castToReference(value); // Reference
1415          return value;
1416        case -1468651097: // effective
1417          this.effective = TypeConvertor.castToType(value); // DataType
1418          return value;
1419        case -1980855245: // dateAsserted
1420          this.dateAsserted = TypeConvertor.castToDateTime(value); // DateTimeType
1421          return value;
1422        case -2123220889: // informationSource
1423          this.getInformationSource().add(TypeConvertor.castToReference(value)); // Reference
1424          return value;
1425        case 1077922663: // derivedFrom
1426          this.getDerivedFrom().add(TypeConvertor.castToReference(value)); // Reference
1427          return value;
1428        case -934964668: // reason
1429          this.getReason().add(TypeConvertor.castToCodeableReference(value)); // CodeableReference
1430          return value;
1431        case 3387378: // note
1432          this.getNote().add(TypeConvertor.castToAnnotation(value)); // Annotation
1433          return value;
1434        case 1040787950: // relatedClinicalInformation
1435          this.getRelatedClinicalInformation().add(TypeConvertor.castToReference(value)); // Reference
1436          return value;
1437        case 1718902050: // renderedDosageInstruction
1438          this.renderedDosageInstruction = TypeConvertor.castToMarkdown(value); // MarkdownType
1439          return value;
1440        case -1326018889: // dosage
1441          this.getDosage().add(TypeConvertor.castToDosage(value)); // Dosage
1442          return value;
1443        case -231003683: // adherence
1444          this.adherence = (MedicationStatementAdherenceComponent) value; // MedicationStatementAdherenceComponent
1445          return value;
1446        default: return super.setProperty(hash, name, value);
1447        }
1448
1449      }
1450
1451      @Override
1452      public Base setProperty(String name, Base value) throws FHIRException {
1453        if (name.equals("identifier")) {
1454          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
1455        } else if (name.equals("partOf")) {
1456          this.getPartOf().add(TypeConvertor.castToReference(value));
1457        } else if (name.equals("status")) {
1458          value = new MedicationStatementStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1459          this.status = (Enumeration) value; // Enumeration<MedicationStatementStatusCodes>
1460        } else if (name.equals("category")) {
1461          this.getCategory().add(TypeConvertor.castToCodeableConcept(value));
1462        } else if (name.equals("medication")) {
1463          this.medication = TypeConvertor.castToCodeableReference(value); // CodeableReference
1464        } else if (name.equals("subject")) {
1465          this.subject = TypeConvertor.castToReference(value); // Reference
1466        } else if (name.equals("encounter")) {
1467          this.encounter = TypeConvertor.castToReference(value); // Reference
1468        } else if (name.equals("effective[x]")) {
1469          this.effective = TypeConvertor.castToType(value); // DataType
1470        } else if (name.equals("dateAsserted")) {
1471          this.dateAsserted = TypeConvertor.castToDateTime(value); // DateTimeType
1472        } else if (name.equals("informationSource")) {
1473          this.getInformationSource().add(TypeConvertor.castToReference(value));
1474        } else if (name.equals("derivedFrom")) {
1475          this.getDerivedFrom().add(TypeConvertor.castToReference(value));
1476        } else if (name.equals("reason")) {
1477          this.getReason().add(TypeConvertor.castToCodeableReference(value));
1478        } else if (name.equals("note")) {
1479          this.getNote().add(TypeConvertor.castToAnnotation(value));
1480        } else if (name.equals("relatedClinicalInformation")) {
1481          this.getRelatedClinicalInformation().add(TypeConvertor.castToReference(value));
1482        } else if (name.equals("renderedDosageInstruction")) {
1483          this.renderedDosageInstruction = TypeConvertor.castToMarkdown(value); // MarkdownType
1484        } else if (name.equals("dosage")) {
1485          this.getDosage().add(TypeConvertor.castToDosage(value));
1486        } else if (name.equals("adherence")) {
1487          this.adherence = (MedicationStatementAdherenceComponent) value; // MedicationStatementAdherenceComponent
1488        } else
1489          return super.setProperty(name, value);
1490        return value;
1491      }
1492
1493  @Override
1494  public void removeChild(String name, Base value) throws FHIRException {
1495        if (name.equals("identifier")) {
1496          this.getIdentifier().remove(value);
1497        } else if (name.equals("partOf")) {
1498          this.getPartOf().remove(value);
1499        } else if (name.equals("status")) {
1500          value = new MedicationStatementStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
1501          this.status = (Enumeration) value; // Enumeration<MedicationStatementStatusCodes>
1502        } else if (name.equals("category")) {
1503          this.getCategory().remove(value);
1504        } else if (name.equals("medication")) {
1505          this.medication = null;
1506        } else if (name.equals("subject")) {
1507          this.subject = null;
1508        } else if (name.equals("encounter")) {
1509          this.encounter = null;
1510        } else if (name.equals("effective[x]")) {
1511          this.effective = null;
1512        } else if (name.equals("dateAsserted")) {
1513          this.dateAsserted = null;
1514        } else if (name.equals("informationSource")) {
1515          this.getInformationSource().remove(value);
1516        } else if (name.equals("derivedFrom")) {
1517          this.getDerivedFrom().remove(value);
1518        } else if (name.equals("reason")) {
1519          this.getReason().remove(value);
1520        } else if (name.equals("note")) {
1521          this.getNote().remove(value);
1522        } else if (name.equals("relatedClinicalInformation")) {
1523          this.getRelatedClinicalInformation().remove(value);
1524        } else if (name.equals("renderedDosageInstruction")) {
1525          this.renderedDosageInstruction = null;
1526        } else if (name.equals("dosage")) {
1527          this.getDosage().remove(value);
1528        } else if (name.equals("adherence")) {
1529          this.adherence = (MedicationStatementAdherenceComponent) value; // MedicationStatementAdherenceComponent
1530        } else
1531          super.removeChild(name, value);
1532        
1533      }
1534
1535      @Override
1536      public Base makeProperty(int hash, String name) throws FHIRException {
1537        switch (hash) {
1538        case -1618432855:  return addIdentifier(); 
1539        case -995410646:  return addPartOf(); 
1540        case -892481550:  return getStatusElement();
1541        case 50511102:  return addCategory(); 
1542        case 1998965455:  return getMedication();
1543        case -1867885268:  return getSubject();
1544        case 1524132147:  return getEncounter();
1545        case 247104889:  return getEffective();
1546        case -1468651097:  return getEffective();
1547        case -1980855245:  return getDateAssertedElement();
1548        case -2123220889:  return addInformationSource(); 
1549        case 1077922663:  return addDerivedFrom(); 
1550        case -934964668:  return addReason(); 
1551        case 3387378:  return addNote(); 
1552        case 1040787950:  return addRelatedClinicalInformation(); 
1553        case 1718902050:  return getRenderedDosageInstructionElement();
1554        case -1326018889:  return addDosage(); 
1555        case -231003683:  return getAdherence();
1556        default: return super.makeProperty(hash, name);
1557        }
1558
1559      }
1560
1561      @Override
1562      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1563        switch (hash) {
1564        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
1565        case -995410646: /*partOf*/ return new String[] {"Reference"};
1566        case -892481550: /*status*/ return new String[] {"code"};
1567        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
1568        case 1998965455: /*medication*/ return new String[] {"CodeableReference"};
1569        case -1867885268: /*subject*/ return new String[] {"Reference"};
1570        case 1524132147: /*encounter*/ return new String[] {"Reference"};
1571        case -1468651097: /*effective*/ return new String[] {"dateTime", "Period", "Timing"};
1572        case -1980855245: /*dateAsserted*/ return new String[] {"dateTime"};
1573        case -2123220889: /*informationSource*/ return new String[] {"Reference"};
1574        case 1077922663: /*derivedFrom*/ return new String[] {"Reference"};
1575        case -934964668: /*reason*/ return new String[] {"CodeableReference"};
1576        case 3387378: /*note*/ return new String[] {"Annotation"};
1577        case 1040787950: /*relatedClinicalInformation*/ return new String[] {"Reference"};
1578        case 1718902050: /*renderedDosageInstruction*/ return new String[] {"markdown"};
1579        case -1326018889: /*dosage*/ return new String[] {"Dosage"};
1580        case -231003683: /*adherence*/ return new String[] {};
1581        default: return super.getTypesForProperty(hash, name);
1582        }
1583
1584      }
1585
1586      @Override
1587      public Base addChild(String name) throws FHIRException {
1588        if (name.equals("identifier")) {
1589          return addIdentifier();
1590        }
1591        else if (name.equals("partOf")) {
1592          return addPartOf();
1593        }
1594        else if (name.equals("status")) {
1595          throw new FHIRException("Cannot call addChild on a singleton property MedicationStatement.status");
1596        }
1597        else if (name.equals("category")) {
1598          return addCategory();
1599        }
1600        else if (name.equals("medication")) {
1601          this.medication = new CodeableReference();
1602          return this.medication;
1603        }
1604        else if (name.equals("subject")) {
1605          this.subject = new Reference();
1606          return this.subject;
1607        }
1608        else if (name.equals("encounter")) {
1609          this.encounter = new Reference();
1610          return this.encounter;
1611        }
1612        else if (name.equals("effectiveDateTime")) {
1613          this.effective = new DateTimeType();
1614          return this.effective;
1615        }
1616        else if (name.equals("effectivePeriod")) {
1617          this.effective = new Period();
1618          return this.effective;
1619        }
1620        else if (name.equals("effectiveTiming")) {
1621          this.effective = new Timing();
1622          return this.effective;
1623        }
1624        else if (name.equals("dateAsserted")) {
1625          throw new FHIRException("Cannot call addChild on a singleton property MedicationStatement.dateAsserted");
1626        }
1627        else if (name.equals("informationSource")) {
1628          return addInformationSource();
1629        }
1630        else if (name.equals("derivedFrom")) {
1631          return addDerivedFrom();
1632        }
1633        else if (name.equals("reason")) {
1634          return addReason();
1635        }
1636        else if (name.equals("note")) {
1637          return addNote();
1638        }
1639        else if (name.equals("relatedClinicalInformation")) {
1640          return addRelatedClinicalInformation();
1641        }
1642        else if (name.equals("renderedDosageInstruction")) {
1643          throw new FHIRException("Cannot call addChild on a singleton property MedicationStatement.renderedDosageInstruction");
1644        }
1645        else if (name.equals("dosage")) {
1646          return addDosage();
1647        }
1648        else if (name.equals("adherence")) {
1649          this.adherence = new MedicationStatementAdherenceComponent();
1650          return this.adherence;
1651        }
1652        else
1653          return super.addChild(name);
1654      }
1655
1656  public String fhirType() {
1657    return "MedicationStatement";
1658
1659  }
1660
1661      public MedicationStatement copy() {
1662        MedicationStatement dst = new MedicationStatement();
1663        copyValues(dst);
1664        return dst;
1665      }
1666
1667      public void copyValues(MedicationStatement dst) {
1668        super.copyValues(dst);
1669        if (identifier != null) {
1670          dst.identifier = new ArrayList<Identifier>();
1671          for (Identifier i : identifier)
1672            dst.identifier.add(i.copy());
1673        };
1674        if (partOf != null) {
1675          dst.partOf = new ArrayList<Reference>();
1676          for (Reference i : partOf)
1677            dst.partOf.add(i.copy());
1678        };
1679        dst.status = status == null ? null : status.copy();
1680        if (category != null) {
1681          dst.category = new ArrayList<CodeableConcept>();
1682          for (CodeableConcept i : category)
1683            dst.category.add(i.copy());
1684        };
1685        dst.medication = medication == null ? null : medication.copy();
1686        dst.subject = subject == null ? null : subject.copy();
1687        dst.encounter = encounter == null ? null : encounter.copy();
1688        dst.effective = effective == null ? null : effective.copy();
1689        dst.dateAsserted = dateAsserted == null ? null : dateAsserted.copy();
1690        if (informationSource != null) {
1691          dst.informationSource = new ArrayList<Reference>();
1692          for (Reference i : informationSource)
1693            dst.informationSource.add(i.copy());
1694        };
1695        if (derivedFrom != null) {
1696          dst.derivedFrom = new ArrayList<Reference>();
1697          for (Reference i : derivedFrom)
1698            dst.derivedFrom.add(i.copy());
1699        };
1700        if (reason != null) {
1701          dst.reason = new ArrayList<CodeableReference>();
1702          for (CodeableReference i : reason)
1703            dst.reason.add(i.copy());
1704        };
1705        if (note != null) {
1706          dst.note = new ArrayList<Annotation>();
1707          for (Annotation i : note)
1708            dst.note.add(i.copy());
1709        };
1710        if (relatedClinicalInformation != null) {
1711          dst.relatedClinicalInformation = new ArrayList<Reference>();
1712          for (Reference i : relatedClinicalInformation)
1713            dst.relatedClinicalInformation.add(i.copy());
1714        };
1715        dst.renderedDosageInstruction = renderedDosageInstruction == null ? null : renderedDosageInstruction.copy();
1716        if (dosage != null) {
1717          dst.dosage = new ArrayList<Dosage>();
1718          for (Dosage i : dosage)
1719            dst.dosage.add(i.copy());
1720        };
1721        dst.adherence = adherence == null ? null : adherence.copy();
1722      }
1723
1724      protected MedicationStatement typedCopy() {
1725        return copy();
1726      }
1727
1728      @Override
1729      public boolean equalsDeep(Base other_) {
1730        if (!super.equalsDeep(other_))
1731          return false;
1732        if (!(other_ instanceof MedicationStatement))
1733          return false;
1734        MedicationStatement o = (MedicationStatement) other_;
1735        return compareDeep(identifier, o.identifier, true) && compareDeep(partOf, o.partOf, true) && compareDeep(status, o.status, true)
1736           && compareDeep(category, o.category, true) && compareDeep(medication, o.medication, true) && compareDeep(subject, o.subject, true)
1737           && compareDeep(encounter, o.encounter, true) && compareDeep(effective, o.effective, true) && compareDeep(dateAsserted, o.dateAsserted, true)
1738           && compareDeep(informationSource, o.informationSource, true) && compareDeep(derivedFrom, o.derivedFrom, true)
1739           && compareDeep(reason, o.reason, true) && compareDeep(note, o.note, true) && compareDeep(relatedClinicalInformation, o.relatedClinicalInformation, true)
1740           && compareDeep(renderedDosageInstruction, o.renderedDosageInstruction, true) && compareDeep(dosage, o.dosage, true)
1741           && compareDeep(adherence, o.adherence, true);
1742      }
1743
1744      @Override
1745      public boolean equalsShallow(Base other_) {
1746        if (!super.equalsShallow(other_))
1747          return false;
1748        if (!(other_ instanceof MedicationStatement))
1749          return false;
1750        MedicationStatement o = (MedicationStatement) other_;
1751        return compareValues(status, o.status, true) && compareValues(dateAsserted, o.dateAsserted, true) && compareValues(renderedDosageInstruction, o.renderedDosageInstruction, true)
1752          ;
1753      }
1754
1755      public boolean isEmpty() {
1756        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, partOf, status
1757          , category, medication, subject, encounter, effective, dateAsserted, informationSource
1758          , derivedFrom, reason, note, relatedClinicalInformation, renderedDosageInstruction
1759          , dosage, adherence);
1760      }
1761
1762  @Override
1763  public ResourceType getResourceType() {
1764    return ResourceType.MedicationStatement;
1765   }
1766
1767 /**
1768   * Search parameter: <b>adherence</b>
1769   * <p>
1770   * Description: <b>Returns statements based on adherence or compliance</b><br>
1771   * Type: <b>token</b><br>
1772   * Path: <b>MedicationStatement.adherence.code</b><br>
1773   * </p>
1774   */
1775  @SearchParamDefinition(name="adherence", path="MedicationStatement.adherence.code", description="Returns statements based on adherence or compliance", type="token" )
1776  public static final String SP_ADHERENCE = "adherence";
1777 /**
1778   * <b>Fluent Client</b> search parameter constant for <b>adherence</b>
1779   * <p>
1780   * Description: <b>Returns statements based on adherence or compliance</b><br>
1781   * Type: <b>token</b><br>
1782   * Path: <b>MedicationStatement.adherence.code</b><br>
1783   * </p>
1784   */
1785  public static final ca.uhn.fhir.rest.gclient.TokenClientParam ADHERENCE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_ADHERENCE);
1786
1787 /**
1788   * Search parameter: <b>category</b>
1789   * <p>
1790   * Description: <b>Returns statements of this category of MedicationStatement</b><br>
1791   * Type: <b>token</b><br>
1792   * Path: <b>MedicationStatement.category</b><br>
1793   * </p>
1794   */
1795  @SearchParamDefinition(name="category", path="MedicationStatement.category", description="Returns statements of this category of MedicationStatement", type="token" )
1796  public static final String SP_CATEGORY = "category";
1797 /**
1798   * <b>Fluent Client</b> search parameter constant for <b>category</b>
1799   * <p>
1800   * Description: <b>Returns statements of this category of MedicationStatement</b><br>
1801   * Type: <b>token</b><br>
1802   * Path: <b>MedicationStatement.category</b><br>
1803   * </p>
1804   */
1805  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CATEGORY = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CATEGORY);
1806
1807 /**
1808   * Search parameter: <b>effective</b>
1809   * <p>
1810   * Description: <b>Date when patient was taking (or not taking) the medication</b><br>
1811   * Type: <b>date</b><br>
1812   * Path: <b>MedicationStatement.effective.ofType(dateTime) | MedicationStatement.effective.ofType(Period)</b><br>
1813   * </p>
1814   */
1815  @SearchParamDefinition(name="effective", path="MedicationStatement.effective.ofType(dateTime) | MedicationStatement.effective.ofType(Period)", description="Date when patient was taking (or not taking) the medication", type="date" )
1816  public static final String SP_EFFECTIVE = "effective";
1817 /**
1818   * <b>Fluent Client</b> search parameter constant for <b>effective</b>
1819   * <p>
1820   * Description: <b>Date when patient was taking (or not taking) the medication</b><br>
1821   * Type: <b>date</b><br>
1822   * Path: <b>MedicationStatement.effective.ofType(dateTime) | MedicationStatement.effective.ofType(Period)</b><br>
1823   * </p>
1824   */
1825  public static final ca.uhn.fhir.rest.gclient.DateClientParam EFFECTIVE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_EFFECTIVE);
1826
1827 /**
1828   * Search parameter: <b>source</b>
1829   * <p>
1830   * Description: <b>Who or where the information in the statement came from</b><br>
1831   * Type: <b>reference</b><br>
1832   * Path: <b>MedicationStatement.informationSource</b><br>
1833   * </p>
1834   */
1835  @SearchParamDefinition(name="source", path="MedicationStatement.informationSource", description="Who or where the information in the statement came from", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner"), @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for RelatedPerson") }, target={Organization.class, Patient.class, Practitioner.class, PractitionerRole.class, RelatedPerson.class } )
1836  public static final String SP_SOURCE = "source";
1837 /**
1838   * <b>Fluent Client</b> search parameter constant for <b>source</b>
1839   * <p>
1840   * Description: <b>Who or where the information in the statement came from</b><br>
1841   * Type: <b>reference</b><br>
1842   * Path: <b>MedicationStatement.informationSource</b><br>
1843   * </p>
1844   */
1845  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SOURCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SOURCE);
1846
1847/**
1848   * Constant for fluent queries to be used to add include statements. Specifies
1849   * the path value of "<b>MedicationStatement:source</b>".
1850   */
1851  public static final ca.uhn.fhir.model.api.Include INCLUDE_SOURCE = new ca.uhn.fhir.model.api.Include("MedicationStatement:source").toLocked();
1852
1853 /**
1854   * Search parameter: <b>subject</b>
1855   * <p>
1856   * Description: <b>The identity of a patient, animal or group to list statements for</b><br>
1857   * Type: <b>reference</b><br>
1858   * Path: <b>MedicationStatement.subject</b><br>
1859   * </p>
1860   */
1861  @SearchParamDefinition(name="subject", path="MedicationStatement.subject", description="The identity of a patient, animal or group to list statements for", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Group.class, Patient.class } )
1862  public static final String SP_SUBJECT = "subject";
1863 /**
1864   * <b>Fluent Client</b> search parameter constant for <b>subject</b>
1865   * <p>
1866   * Description: <b>The identity of a patient, animal or group to list statements for</b><br>
1867   * Type: <b>reference</b><br>
1868   * Path: <b>MedicationStatement.subject</b><br>
1869   * </p>
1870   */
1871  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam SUBJECT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_SUBJECT);
1872
1873/**
1874   * Constant for fluent queries to be used to add include statements. Specifies
1875   * the path value of "<b>MedicationStatement:subject</b>".
1876   */
1877  public static final ca.uhn.fhir.model.api.Include INCLUDE_SUBJECT = new ca.uhn.fhir.model.api.Include("MedicationStatement:subject").toLocked();
1878
1879 /**
1880   * Search parameter: <b>code</b>
1881   * <p>
1882   * Description: <b>Multiple Resources: 
1883
1884* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
1885* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
1886* [AuditEvent](auditevent.html): More specific code for the event
1887* [Basic](basic.html): Kind of Resource
1888* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
1889* [Condition](condition.html): Code for the condition
1890* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
1891* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
1892* [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
1893* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
1894* [ImagingSelection](imagingselection.html): The imaging selection status
1895* [List](list.html): What the purpose of this list is
1896* [Medication](medication.html): Returns medications for a specific code
1897* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
1898* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
1899* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
1900* [MedicationStatement](medicationstatement.html): Return statements of this medication code
1901* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
1902* [Observation](observation.html): The code of the observation type
1903* [Procedure](procedure.html): A code to identify a  procedure
1904* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
1905* [Task](task.html): Search by task code
1906</b><br>
1907   * Type: <b>token</b><br>
1908   * 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>
1909   * </p>
1910   */
1911  @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" )
1912  public static final String SP_CODE = "code";
1913 /**
1914   * <b>Fluent Client</b> search parameter constant for <b>code</b>
1915   * <p>
1916   * Description: <b>Multiple Resources: 
1917
1918* [AdverseEvent](adverseevent.html): Event or incident that occurred or was averted
1919* [AllergyIntolerance](allergyintolerance.html): Code that identifies the allergy or intolerance
1920* [AuditEvent](auditevent.html): More specific code for the event
1921* [Basic](basic.html): Kind of Resource
1922* [ChargeItem](chargeitem.html): A code that identifies the charge, like a billing code
1923* [Condition](condition.html): Code for the condition
1924* [DetectedIssue](detectedissue.html): Issue Type, e.g. drug-drug, duplicate therapy, etc.
1925* [DeviceRequest](devicerequest.html): Code for what is being requested/ordered
1926* [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
1927* [FamilyMemberHistory](familymemberhistory.html): A search by a condition code
1928* [ImagingSelection](imagingselection.html): The imaging selection status
1929* [List](list.html): What the purpose of this list is
1930* [Medication](medication.html): Returns medications for a specific code
1931* [MedicationAdministration](medicationadministration.html): Return administrations of this medication code
1932* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine code
1933* [MedicationRequest](medicationrequest.html): Return prescriptions of this medication code
1934* [MedicationStatement](medicationstatement.html): Return statements of this medication code
1935* [NutritionIntake](nutritionintake.html): Returns statements of this code of NutritionIntake
1936* [Observation](observation.html): The code of the observation type
1937* [Procedure](procedure.html): A code to identify a  procedure
1938* [RequestOrchestration](requestorchestration.html): The code of the request orchestration
1939* [Task](task.html): Search by task code
1940</b><br>
1941   * Type: <b>token</b><br>
1942   * 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>
1943   * </p>
1944   */
1945  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CODE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CODE);
1946
1947 /**
1948   * Search parameter: <b>encounter</b>
1949   * <p>
1950   * Description: <b>Multiple Resources: 
1951
1952* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
1953* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
1954* [ChargeItem](chargeitem.html): Encounter associated with event
1955* [Claim](claim.html): Encounters associated with a billed line item
1956* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
1957* [Communication](communication.html): The Encounter during which this Communication was created
1958* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
1959* [Composition](composition.html): Context of the Composition
1960* [Condition](condition.html): The Encounter during which this Condition was created
1961* [DeviceRequest](devicerequest.html): Encounter during which request was created
1962* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
1963* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
1964* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
1965* [Flag](flag.html): Alert relevant during encounter
1966* [ImagingStudy](imagingstudy.html): The context of the study
1967* [List](list.html): Context in which list created
1968* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
1969* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
1970* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
1971* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
1972* [Observation](observation.html): Encounter related to the observation
1973* [Procedure](procedure.html): The Encounter during which this Procedure was created
1974* [Provenance](provenance.html): Encounter related to the Provenance
1975* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
1976* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
1977* [RiskAssessment](riskassessment.html): Where was assessment performed?
1978* [ServiceRequest](servicerequest.html): An encounter in which this request is made
1979* [Task](task.html): Search by encounter
1980* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
1981</b><br>
1982   * Type: <b>reference</b><br>
1983   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
1984   * </p>
1985   */
1986  @SearchParamDefinition(name="encounter", path="AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter", description="Multiple Resources: \r\n\r\n* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent\r\n* [CarePlan](careplan.html): The Encounter during which this CarePlan was created\r\n* [ChargeItem](chargeitem.html): Encounter associated with event\r\n* [Claim](claim.html): Encounters associated with a billed line item\r\n* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created\r\n* [Communication](communication.html): The Encounter during which this Communication was created\r\n* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created\r\n* [Composition](composition.html): Context of the Composition\r\n* [Condition](condition.html): The Encounter during which this Condition was created\r\n* [DeviceRequest](devicerequest.html): Encounter during which request was created\r\n* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made\r\n* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values\r\n* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item\r\n* [Flag](flag.html): Alert relevant during encounter\r\n* [ImagingStudy](imagingstudy.html): The context of the study\r\n* [List](list.html): Context in which list created\r\n* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter\r\n* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier\r\n* [Observation](observation.html): Encounter related to the observation\r\n* [Procedure](procedure.html): The Encounter during which this Procedure was created\r\n* [Provenance](provenance.html): Encounter related to the Provenance\r\n* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response\r\n* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to\r\n* [RiskAssessment](riskassessment.html): Where was assessment performed?\r\n* [ServiceRequest](servicerequest.html): An encounter in which this request is made\r\n* [Task](task.html): Search by encounter\r\n* [VisionPrescription](visionprescription.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 } )
1987  public static final String SP_ENCOUNTER = "encounter";
1988 /**
1989   * <b>Fluent Client</b> search parameter constant for <b>encounter</b>
1990   * <p>
1991   * Description: <b>Multiple Resources: 
1992
1993* [AuditEvent](auditevent.html): Encounter related to the activity recorded in the AuditEvent
1994* [CarePlan](careplan.html): The Encounter during which this CarePlan was created
1995* [ChargeItem](chargeitem.html): Encounter associated with event
1996* [Claim](claim.html): Encounters associated with a billed line item
1997* [ClinicalImpression](clinicalimpression.html): The Encounter during which this ClinicalImpression was created
1998* [Communication](communication.html): The Encounter during which this Communication was created
1999* [CommunicationRequest](communicationrequest.html): The Encounter during which this CommunicationRequest was created
2000* [Composition](composition.html): Context of the Composition
2001* [Condition](condition.html): The Encounter during which this Condition was created
2002* [DeviceRequest](devicerequest.html): Encounter during which request was created
2003* [DiagnosticReport](diagnosticreport.html): The Encounter when the order was made
2004* [EncounterHistory](encounterhistory.html): The Encounter associated with this set of history values
2005* [ExplanationOfBenefit](explanationofbenefit.html): Encounters associated with a billed line item
2006* [Flag](flag.html): Alert relevant during encounter
2007* [ImagingStudy](imagingstudy.html): The context of the study
2008* [List](list.html): Context in which list created
2009* [MedicationDispense](medicationdispense.html): Returns dispenses with a specific encounter
2010* [MedicationStatement](medicationstatement.html): Returns statements for a specific encounter
2011* [NutritionIntake](nutritionintake.html): Returns statements for a specific encounter
2012* [NutritionOrder](nutritionorder.html): Return nutrition orders with this encounter identifier
2013* [Observation](observation.html): Encounter related to the observation
2014* [Procedure](procedure.html): The Encounter during which this Procedure was created
2015* [Provenance](provenance.html): Encounter related to the Provenance
2016* [QuestionnaireResponse](questionnaireresponse.html): Encounter associated with the questionnaire response
2017* [RequestOrchestration](requestorchestration.html): The encounter the request orchestration applies to
2018* [RiskAssessment](riskassessment.html): Where was assessment performed?
2019* [ServiceRequest](servicerequest.html): An encounter in which this request is made
2020* [Task](task.html): Search by encounter
2021* [VisionPrescription](visionprescription.html): Return prescriptions with this encounter identifier
2022</b><br>
2023   * Type: <b>reference</b><br>
2024   * Path: <b>AuditEvent.encounter | CarePlan.encounter | ChargeItem.encounter | Claim.item.encounter | ClinicalImpression.encounter | Communication.encounter | CommunicationRequest.encounter | Composition.encounter | Condition.encounter | DeviceRequest.encounter | DiagnosticReport.encounter | EncounterHistory.encounter | ExplanationOfBenefit.item.encounter | Flag.encounter | ImagingStudy.encounter | List.encounter | MedicationDispense.encounter | MedicationStatement.encounter | NutritionIntake.encounter | NutritionOrder.encounter | Observation.encounter | Procedure.encounter | Provenance.encounter | QuestionnaireResponse.encounter | RequestOrchestration.encounter | RiskAssessment.encounter | ServiceRequest.encounter | Task.encounter | VisionPrescription.encounter</b><br>
2025   * </p>
2026   */
2027  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENCOUNTER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENCOUNTER);
2028
2029/**
2030   * Constant for fluent queries to be used to add include statements. Specifies
2031   * the path value of "<b>MedicationStatement:encounter</b>".
2032   */
2033  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENCOUNTER = new ca.uhn.fhir.model.api.Include("MedicationStatement:encounter").toLocked();
2034
2035 /**
2036   * Search parameter: <b>identifier</b>
2037   * <p>
2038   * Description: <b>Multiple Resources: 
2039
2040* [Account](account.html): Account number
2041* [AdverseEvent](adverseevent.html): Business identifier for the event
2042* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2043* [Appointment](appointment.html): An Identifier of the Appointment
2044* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
2045* [Basic](basic.html): Business identifier
2046* [BodyStructure](bodystructure.html): Bodystructure identifier
2047* [CarePlan](careplan.html): External Ids for this plan
2048* [CareTeam](careteam.html): External Ids for this team
2049* [ChargeItem](chargeitem.html): Business Identifier for item
2050* [Claim](claim.html): The primary identifier of the financial resource
2051* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
2052* [ClinicalImpression](clinicalimpression.html): Business identifier
2053* [Communication](communication.html): Unique identifier
2054* [CommunicationRequest](communicationrequest.html): Unique identifier
2055* [Composition](composition.html): Version-independent identifier for the Composition
2056* [Condition](condition.html): A unique identifier of the condition record
2057* [Consent](consent.html): Identifier for this record (external references)
2058* [Contract](contract.html): The identity of the contract
2059* [Coverage](coverage.html): The primary identifier of the insured and the coverage
2060* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
2061* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
2062* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2063* [DeviceRequest](devicerequest.html): Business identifier for request/order
2064* [DeviceUsage](deviceusage.html): Search by identifier
2065* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2066* [DocumentReference](documentreference.html): Identifier of the attachment binary
2067* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2068* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
2069* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2070* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
2071* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2072* [Flag](flag.html): Business identifier
2073* [Goal](goal.html): External Ids for this goal
2074* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
2075* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
2076* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2077* [Immunization](immunization.html): Business identifier
2078* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
2079* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
2080* [Invoice](invoice.html): Business Identifier for item
2081* [List](list.html): Business identifier
2082* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
2083* [Medication](medication.html): Returns medications with this external identifier
2084* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2085* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2086* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2087* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2088* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
2089* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
2090* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2091* [Observation](observation.html): The unique id for a particular observation
2092* [Person](person.html): A person Identifier
2093* [Procedure](procedure.html): A unique identifier for a procedure
2094* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
2095* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
2096* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
2097* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
2098* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2099* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2100* [Specimen](specimen.html): The unique identifier associated with the specimen
2101* [SupplyDelivery](supplydelivery.html): External identifier
2102* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2103* [Task](task.html): Search for a task instance by its business identifier
2104* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2105</b><br>
2106   * Type: <b>token</b><br>
2107   * 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>
2108   * </p>
2109   */
2110  @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" )
2111  public static final String SP_IDENTIFIER = "identifier";
2112 /**
2113   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
2114   * <p>
2115   * Description: <b>Multiple Resources: 
2116
2117* [Account](account.html): Account number
2118* [AdverseEvent](adverseevent.html): Business identifier for the event
2119* [AllergyIntolerance](allergyintolerance.html): External ids for this item
2120* [Appointment](appointment.html): An Identifier of the Appointment
2121* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
2122* [Basic](basic.html): Business identifier
2123* [BodyStructure](bodystructure.html): Bodystructure identifier
2124* [CarePlan](careplan.html): External Ids for this plan
2125* [CareTeam](careteam.html): External Ids for this team
2126* [ChargeItem](chargeitem.html): Business Identifier for item
2127* [Claim](claim.html): The primary identifier of the financial resource
2128* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
2129* [ClinicalImpression](clinicalimpression.html): Business identifier
2130* [Communication](communication.html): Unique identifier
2131* [CommunicationRequest](communicationrequest.html): Unique identifier
2132* [Composition](composition.html): Version-independent identifier for the Composition
2133* [Condition](condition.html): A unique identifier of the condition record
2134* [Consent](consent.html): Identifier for this record (external references)
2135* [Contract](contract.html): The identity of the contract
2136* [Coverage](coverage.html): The primary identifier of the insured and the coverage
2137* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
2138* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
2139* [DetectedIssue](detectedissue.html): Unique id for the detected issue
2140* [DeviceRequest](devicerequest.html): Business identifier for request/order
2141* [DeviceUsage](deviceusage.html): Search by identifier
2142* [DiagnosticReport](diagnosticreport.html): An identifier for the report
2143* [DocumentReference](documentreference.html): Identifier of the attachment binary
2144* [Encounter](encounter.html): Identifier(s) by which this encounter is known
2145* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
2146* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
2147* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
2148* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
2149* [Flag](flag.html): Business identifier
2150* [Goal](goal.html): External Ids for this goal
2151* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
2152* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
2153* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
2154* [Immunization](immunization.html): Business identifier
2155* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
2156* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
2157* [Invoice](invoice.html): Business Identifier for item
2158* [List](list.html): Business identifier
2159* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
2160* [Medication](medication.html): Returns medications with this external identifier
2161* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
2162* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
2163* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
2164* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
2165* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
2166* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
2167* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
2168* [Observation](observation.html): The unique id for a particular observation
2169* [Person](person.html): A person Identifier
2170* [Procedure](procedure.html): A unique identifier for a procedure
2171* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
2172* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
2173* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
2174* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
2175* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
2176* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
2177* [Specimen](specimen.html): The unique identifier associated with the specimen
2178* [SupplyDelivery](supplydelivery.html): External identifier
2179* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
2180* [Task](task.html): Search for a task instance by its business identifier
2181* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
2182</b><br>
2183   * Type: <b>token</b><br>
2184   * 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>
2185   * </p>
2186   */
2187  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
2188
2189 /**
2190   * Search parameter: <b>patient</b>
2191   * <p>
2192   * Description: <b>Multiple Resources: 
2193
2194* [Account](account.html): The entity that caused the expenses
2195* [AdverseEvent](adverseevent.html): Subject impacted by event
2196* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2197* [Appointment](appointment.html): One of the individuals of the appointment is this patient
2198* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
2199* [AuditEvent](auditevent.html): Where the activity involved patient data
2200* [Basic](basic.html): Identifies the focus of this resource
2201* [BodyStructure](bodystructure.html): Who this is about
2202* [CarePlan](careplan.html): Who the care plan is for
2203* [CareTeam](careteam.html): Who care team is for
2204* [ChargeItem](chargeitem.html): Individual service was done for/to
2205* [Claim](claim.html): Patient receiving the products or services
2206* [ClaimResponse](claimresponse.html): The subject of care
2207* [ClinicalImpression](clinicalimpression.html): Patient assessed
2208* [Communication](communication.html): Focus of message
2209* [CommunicationRequest](communicationrequest.html): Focus of message
2210* [Composition](composition.html): Who and/or what the composition is about
2211* [Condition](condition.html): Who has the condition?
2212* [Consent](consent.html): Who the consent applies to
2213* [Contract](contract.html): The identity of the subject of the contract (if a patient)
2214* [Coverage](coverage.html): Retrieve coverages for a patient
2215* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
2216* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
2217* [DetectedIssue](detectedissue.html): Associated patient
2218* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2219* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2220* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2221* [DocumentReference](documentreference.html): Who/what is the subject of the document
2222* [Encounter](encounter.html): The patient present at the encounter
2223* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
2224* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2225* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
2226* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2227* [Flag](flag.html): The identity of a subject to list flags for
2228* [Goal](goal.html): Who this goal is intended for
2229* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
2230* [ImagingSelection](imagingselection.html): Who the study is about
2231* [ImagingStudy](imagingstudy.html): Who the study is about
2232* [Immunization](immunization.html): The patient for the vaccination record
2233* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
2234* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
2235* [Invoice](invoice.html): Recipient(s) of goods and services
2236* [List](list.html): If all resources have the same subject
2237* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
2238* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2239* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2240* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2241* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2242* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
2243* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
2244* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2245* [Observation](observation.html): The subject that the observation is about (if patient)
2246* [Person](person.html): The Person links to this Patient
2247* [Procedure](procedure.html): Search by subject - a patient
2248* [Provenance](provenance.html): Where the activity involved patient data
2249* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
2250* [RelatedPerson](relatedperson.html): The patient this related person is related to
2251* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
2252* [ResearchSubject](researchsubject.html): Who or what is part of study
2253* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2254* [ServiceRequest](servicerequest.html): Search by subject - a patient
2255* [Specimen](specimen.html): The patient the specimen comes from
2256* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2257* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
2258* [Task](task.html): Search by patient
2259* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2260</b><br>
2261   * Type: <b>reference</b><br>
2262   * 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>
2263   * </p>
2264   */
2265  @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", target={Patient.class } )
2266  public static final String SP_PATIENT = "patient";
2267 /**
2268   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
2269   * <p>
2270   * Description: <b>Multiple Resources: 
2271
2272* [Account](account.html): The entity that caused the expenses
2273* [AdverseEvent](adverseevent.html): Subject impacted by event
2274* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
2275* [Appointment](appointment.html): One of the individuals of the appointment is this patient
2276* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
2277* [AuditEvent](auditevent.html): Where the activity involved patient data
2278* [Basic](basic.html): Identifies the focus of this resource
2279* [BodyStructure](bodystructure.html): Who this is about
2280* [CarePlan](careplan.html): Who the care plan is for
2281* [CareTeam](careteam.html): Who care team is for
2282* [ChargeItem](chargeitem.html): Individual service was done for/to
2283* [Claim](claim.html): Patient receiving the products or services
2284* [ClaimResponse](claimresponse.html): The subject of care
2285* [ClinicalImpression](clinicalimpression.html): Patient assessed
2286* [Communication](communication.html): Focus of message
2287* [CommunicationRequest](communicationrequest.html): Focus of message
2288* [Composition](composition.html): Who and/or what the composition is about
2289* [Condition](condition.html): Who has the condition?
2290* [Consent](consent.html): Who the consent applies to
2291* [Contract](contract.html): The identity of the subject of the contract (if a patient)
2292* [Coverage](coverage.html): Retrieve coverages for a patient
2293* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
2294* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
2295* [DetectedIssue](detectedissue.html): Associated patient
2296* [DeviceRequest](devicerequest.html): Individual the service is ordered for
2297* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
2298* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
2299* [DocumentReference](documentreference.html): Who/what is the subject of the document
2300* [Encounter](encounter.html): The patient present at the encounter
2301* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
2302* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
2303* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
2304* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
2305* [Flag](flag.html): The identity of a subject to list flags for
2306* [Goal](goal.html): Who this goal is intended for
2307* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
2308* [ImagingSelection](imagingselection.html): Who the study is about
2309* [ImagingStudy](imagingstudy.html): Who the study is about
2310* [Immunization](immunization.html): The patient for the vaccination record
2311* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
2312* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
2313* [Invoice](invoice.html): Recipient(s) of goods and services
2314* [List](list.html): If all resources have the same subject
2315* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
2316* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
2317* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
2318* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
2319* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
2320* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
2321* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
2322* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
2323* [Observation](observation.html): The subject that the observation is about (if patient)
2324* [Person](person.html): The Person links to this Patient
2325* [Procedure](procedure.html): Search by subject - a patient
2326* [Provenance](provenance.html): Where the activity involved patient data
2327* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
2328* [RelatedPerson](relatedperson.html): The patient this related person is related to
2329* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
2330* [ResearchSubject](researchsubject.html): Who or what is part of study
2331* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
2332* [ServiceRequest](servicerequest.html): Search by subject - a patient
2333* [Specimen](specimen.html): The patient the specimen comes from
2334* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
2335* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
2336* [Task](task.html): Search by patient
2337* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
2338</b><br>
2339   * Type: <b>reference</b><br>
2340   * 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>
2341   * </p>
2342   */
2343  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
2344
2345/**
2346   * Constant for fluent queries to be used to add include statements. Specifies
2347   * the path value of "<b>MedicationStatement:patient</b>".
2348   */
2349  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("MedicationStatement:patient").toLocked();
2350
2351 /**
2352   * Search parameter: <b>medication</b>
2353   * <p>
2354   * Description: <b>Multiple Resources: 
2355
2356* [MedicationAdministration](medicationadministration.html): Return administrations of this medication reference
2357* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine resource
2358* [MedicationRequest](medicationrequest.html): Return prescriptions for this medication reference
2359* [MedicationStatement](medicationstatement.html): Return statements of this medication reference
2360</b><br>
2361   * Type: <b>reference</b><br>
2362   * Path: <b>MedicationAdministration.medication.reference | MedicationDispense.medication.reference | MedicationRequest.medication.reference | MedicationStatement.medication.reference</b><br>
2363   * </p>
2364   */
2365  @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 } )
2366  public static final String SP_MEDICATION = "medication";
2367 /**
2368   * <b>Fluent Client</b> search parameter constant for <b>medication</b>
2369   * <p>
2370   * Description: <b>Multiple Resources: 
2371
2372* [MedicationAdministration](medicationadministration.html): Return administrations of this medication reference
2373* [MedicationDispense](medicationdispense.html): Returns dispenses of this medicine resource
2374* [MedicationRequest](medicationrequest.html): Return prescriptions for this medication reference
2375* [MedicationStatement](medicationstatement.html): Return statements of this medication reference
2376</b><br>
2377   * Type: <b>reference</b><br>
2378   * Path: <b>MedicationAdministration.medication.reference | MedicationDispense.medication.reference | MedicationRequest.medication.reference | MedicationStatement.medication.reference</b><br>
2379   * </p>
2380   */
2381  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam MEDICATION = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_MEDICATION);
2382
2383/**
2384   * Constant for fluent queries to be used to add include statements. Specifies
2385   * the path value of "<b>MedicationStatement:medication</b>".
2386   */
2387  public static final ca.uhn.fhir.model.api.Include INCLUDE_MEDICATION = new ca.uhn.fhir.model.api.Include("MedicationStatement:medication").toLocked();
2388
2389 /**
2390   * Search parameter: <b>status</b>
2391   * <p>
2392   * Description: <b>Multiple Resources: 
2393
2394* [MedicationAdministration](medicationadministration.html): MedicationAdministration event status (for example one of active/paused/completed/nullified)
2395* [MedicationDispense](medicationdispense.html): Returns dispenses with a specified dispense status
2396* [MedicationRequest](medicationrequest.html): Status of the prescription
2397* [MedicationStatement](medicationstatement.html): Return statements that match the given status
2398</b><br>
2399   * Type: <b>token</b><br>
2400   * Path: <b>MedicationAdministration.status | MedicationDispense.status | MedicationRequest.status | MedicationStatement.status</b><br>
2401   * </p>
2402   */
2403  @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" )
2404  public static final String SP_STATUS = "status";
2405 /**
2406   * <b>Fluent Client</b> search parameter constant for <b>status</b>
2407   * <p>
2408   * Description: <b>Multiple Resources: 
2409
2410* [MedicationAdministration](medicationadministration.html): MedicationAdministration event status (for example one of active/paused/completed/nullified)
2411* [MedicationDispense](medicationdispense.html): Returns dispenses with a specified dispense status
2412* [MedicationRequest](medicationrequest.html): Status of the prescription
2413* [MedicationStatement](medicationstatement.html): Return statements that match the given status
2414</b><br>
2415   * Type: <b>token</b><br>
2416   * Path: <b>MedicationAdministration.status | MedicationDispense.status | MedicationRequest.status | MedicationStatement.status</b><br>
2417   * </p>
2418   */
2419  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
2420
2421
2422}
2423