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