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 CoverageEligibilityRequest provides patient and insurance coverage information to an insurer for them to respond, in the form of an CoverageEligibilityResponse, with information regarding whether the stated coverage is valid and in-force and optionally to provide the insurance details of the policy.
052 */
053@ResourceDef(name="CoverageEligibilityRequest", profile="http://hl7.org/fhir/StructureDefinition/CoverageEligibilityRequest")
054public class CoverageEligibilityRequest extends DomainResource {
055
056    public enum EligibilityRequestPurpose {
057        /**
058         * The prior authorization requirements for the listed, or discovered if specified, converages for the categories of service and/or specifed biling codes are requested.
059         */
060        AUTHREQUIREMENTS, 
061        /**
062         * The plan benefits and optionally benefits consumed  for the listed, or discovered if specified, converages are requested.
063         */
064        BENEFITS, 
065        /**
066         * The insurer is requested to report on any coverages which they are aware of in addition to any specifed.
067         */
068        DISCOVERY, 
069        /**
070         * A check that the specified coverages are in-force is requested.
071         */
072        VALIDATION, 
073        /**
074         * added to help the parsers with the generic types
075         */
076        NULL;
077        public static EligibilityRequestPurpose fromCode(String codeString) throws FHIRException {
078            if (codeString == null || "".equals(codeString))
079                return null;
080        if ("auth-requirements".equals(codeString))
081          return AUTHREQUIREMENTS;
082        if ("benefits".equals(codeString))
083          return BENEFITS;
084        if ("discovery".equals(codeString))
085          return DISCOVERY;
086        if ("validation".equals(codeString))
087          return VALIDATION;
088        if (Configuration.isAcceptInvalidEnums())
089          return null;
090        else
091          throw new FHIRException("Unknown EligibilityRequestPurpose code '"+codeString+"'");
092        }
093        public String toCode() {
094          switch (this) {
095            case AUTHREQUIREMENTS: return "auth-requirements";
096            case BENEFITS: return "benefits";
097            case DISCOVERY: return "discovery";
098            case VALIDATION: return "validation";
099            case NULL: return null;
100            default: return "?";
101          }
102        }
103        public String getSystem() {
104          switch (this) {
105            case AUTHREQUIREMENTS: return "http://hl7.org/fhir/eligibilityrequest-purpose";
106            case BENEFITS: return "http://hl7.org/fhir/eligibilityrequest-purpose";
107            case DISCOVERY: return "http://hl7.org/fhir/eligibilityrequest-purpose";
108            case VALIDATION: return "http://hl7.org/fhir/eligibilityrequest-purpose";
109            case NULL: return null;
110            default: return "?";
111          }
112        }
113        public String getDefinition() {
114          switch (this) {
115            case AUTHREQUIREMENTS: return "The prior authorization requirements for the listed, or discovered if specified, converages for the categories of service and/or specifed biling codes are requested.";
116            case BENEFITS: return "The plan benefits and optionally benefits consumed  for the listed, or discovered if specified, converages are requested.";
117            case DISCOVERY: return "The insurer is requested to report on any coverages which they are aware of in addition to any specifed.";
118            case VALIDATION: return "A check that the specified coverages are in-force is requested.";
119            case NULL: return null;
120            default: return "?";
121          }
122        }
123        public String getDisplay() {
124          switch (this) {
125            case AUTHREQUIREMENTS: return "Coverage auth-requirements";
126            case BENEFITS: return "Coverage benefits";
127            case DISCOVERY: return "Coverage Discovery";
128            case VALIDATION: return "Coverage Validation";
129            case NULL: return null;
130            default: return "?";
131          }
132        }
133    }
134
135  public static class EligibilityRequestPurposeEnumFactory implements EnumFactory<EligibilityRequestPurpose> {
136    public EligibilityRequestPurpose fromCode(String codeString) throws IllegalArgumentException {
137      if (codeString == null || "".equals(codeString))
138            if (codeString == null || "".equals(codeString))
139                return null;
140        if ("auth-requirements".equals(codeString))
141          return EligibilityRequestPurpose.AUTHREQUIREMENTS;
142        if ("benefits".equals(codeString))
143          return EligibilityRequestPurpose.BENEFITS;
144        if ("discovery".equals(codeString))
145          return EligibilityRequestPurpose.DISCOVERY;
146        if ("validation".equals(codeString))
147          return EligibilityRequestPurpose.VALIDATION;
148        throw new IllegalArgumentException("Unknown EligibilityRequestPurpose code '"+codeString+"'");
149        }
150        public Enumeration<EligibilityRequestPurpose> fromType(PrimitiveType<?> code) throws FHIRException {
151          if (code == null)
152            return null;
153          if (code.isEmpty())
154            return new Enumeration<EligibilityRequestPurpose>(this, EligibilityRequestPurpose.NULL, code);
155          String codeString = ((PrimitiveType) code).asStringValue();
156          if (codeString == null || "".equals(codeString))
157            return new Enumeration<EligibilityRequestPurpose>(this, EligibilityRequestPurpose.NULL, code);
158        if ("auth-requirements".equals(codeString))
159          return new Enumeration<EligibilityRequestPurpose>(this, EligibilityRequestPurpose.AUTHREQUIREMENTS, code);
160        if ("benefits".equals(codeString))
161          return new Enumeration<EligibilityRequestPurpose>(this, EligibilityRequestPurpose.BENEFITS, code);
162        if ("discovery".equals(codeString))
163          return new Enumeration<EligibilityRequestPurpose>(this, EligibilityRequestPurpose.DISCOVERY, code);
164        if ("validation".equals(codeString))
165          return new Enumeration<EligibilityRequestPurpose>(this, EligibilityRequestPurpose.VALIDATION, code);
166        throw new FHIRException("Unknown EligibilityRequestPurpose code '"+codeString+"'");
167        }
168    public String toCode(EligibilityRequestPurpose code) {
169      if (code == EligibilityRequestPurpose.AUTHREQUIREMENTS)
170        return "auth-requirements";
171      if (code == EligibilityRequestPurpose.BENEFITS)
172        return "benefits";
173      if (code == EligibilityRequestPurpose.DISCOVERY)
174        return "discovery";
175      if (code == EligibilityRequestPurpose.VALIDATION)
176        return "validation";
177      return "?";
178      }
179    public String toSystem(EligibilityRequestPurpose code) {
180      return code.getSystem();
181      }
182    }
183
184    @Block()
185    public static class CoverageEligibilityRequestEventComponent extends BackboneElement implements IBaseBackboneElement {
186        /**
187         * A coded event such as when a service is expected or a card printed.
188         */
189        @Child(name = "type", type = {CodeableConcept.class}, order=1, min=1, max=1, modifier=false, summary=false)
190        @Description(shortDefinition="Specific event", formalDefinition="A coded event such as when a service is expected or a card printed." )
191        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/datestype")
192        protected CodeableConcept type;
193
194        /**
195         * A date or period in the past or future indicating when the event occurred or is expectd to occur.
196         */
197        @Child(name = "when", type = {DateTimeType.class, Period.class}, order=2, min=1, max=1, modifier=false, summary=false)
198        @Description(shortDefinition="Occurance date or period", formalDefinition="A date or period in the past or future indicating when the event occurred or is expectd to occur." )
199        protected DataType when;
200
201        private static final long serialVersionUID = -634897375L;
202
203    /**
204     * Constructor
205     */
206      public CoverageEligibilityRequestEventComponent() {
207        super();
208      }
209
210    /**
211     * Constructor
212     */
213      public CoverageEligibilityRequestEventComponent(CodeableConcept type, DataType when) {
214        super();
215        this.setType(type);
216        this.setWhen(when);
217      }
218
219        /**
220         * @return {@link #type} (A coded event such as when a service is expected or a card printed.)
221         */
222        public CodeableConcept getType() { 
223          if (this.type == null)
224            if (Configuration.errorOnAutoCreate())
225              throw new Error("Attempt to auto-create CoverageEligibilityRequestEventComponent.type");
226            else if (Configuration.doAutoCreate())
227              this.type = new CodeableConcept(); // cc
228          return this.type;
229        }
230
231        public boolean hasType() { 
232          return this.type != null && !this.type.isEmpty();
233        }
234
235        /**
236         * @param value {@link #type} (A coded event such as when a service is expected or a card printed.)
237         */
238        public CoverageEligibilityRequestEventComponent setType(CodeableConcept value) { 
239          this.type = value;
240          return this;
241        }
242
243        /**
244         * @return {@link #when} (A date or period in the past or future indicating when the event occurred or is expectd to occur.)
245         */
246        public DataType getWhen() { 
247          return this.when;
248        }
249
250        /**
251         * @return {@link #when} (A date or period in the past or future indicating when the event occurred or is expectd to occur.)
252         */
253        public DateTimeType getWhenDateTimeType() throws FHIRException { 
254          if (this.when == null)
255            this.when = new DateTimeType();
256          if (!(this.when instanceof DateTimeType))
257            throw new FHIRException("Type mismatch: the type DateTimeType was expected, but "+this.when.getClass().getName()+" was encountered");
258          return (DateTimeType) this.when;
259        }
260
261        public boolean hasWhenDateTimeType() { 
262          return this != null && this.when instanceof DateTimeType;
263        }
264
265        /**
266         * @return {@link #when} (A date or period in the past or future indicating when the event occurred or is expectd to occur.)
267         */
268        public Period getWhenPeriod() throws FHIRException { 
269          if (this.when == null)
270            this.when = new Period();
271          if (!(this.when instanceof Period))
272            throw new FHIRException("Type mismatch: the type Period was expected, but "+this.when.getClass().getName()+" was encountered");
273          return (Period) this.when;
274        }
275
276        public boolean hasWhenPeriod() { 
277          return this != null && this.when instanceof Period;
278        }
279
280        public boolean hasWhen() { 
281          return this.when != null && !this.when.isEmpty();
282        }
283
284        /**
285         * @param value {@link #when} (A date or period in the past or future indicating when the event occurred or is expectd to occur.)
286         */
287        public CoverageEligibilityRequestEventComponent setWhen(DataType value) { 
288          if (value != null && !(value instanceof DateTimeType || value instanceof Period))
289            throw new FHIRException("Not the right type for CoverageEligibilityRequest.event.when[x]: "+value.fhirType());
290          this.when = value;
291          return this;
292        }
293
294        protected void listChildren(List<Property> children) {
295          super.listChildren(children);
296          children.add(new Property("type", "CodeableConcept", "A coded event such as when a service is expected or a card printed.", 0, 1, type));
297          children.add(new Property("when[x]", "dateTime|Period", "A date or period in the past or future indicating when the event occurred or is expectd to occur.", 0, 1, when));
298        }
299
300        @Override
301        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
302          switch (_hash) {
303          case 3575610: /*type*/  return new Property("type", "CodeableConcept", "A coded event such as when a service is expected or a card printed.", 0, 1, type);
304          case 1312831238: /*when[x]*/  return new Property("when[x]", "dateTime|Period", "A date or period in the past or future indicating when the event occurred or is expectd to occur.", 0, 1, when);
305          case 3648314: /*when*/  return new Property("when[x]", "dateTime|Period", "A date or period in the past or future indicating when the event occurred or is expectd to occur.", 0, 1, when);
306          case -1785502475: /*whenDateTime*/  return new Property("when[x]", "dateTime", "A date or period in the past or future indicating when the event occurred or is expectd to occur.", 0, 1, when);
307          case 251476379: /*whenPeriod*/  return new Property("when[x]", "Period", "A date or period in the past or future indicating when the event occurred or is expectd to occur.", 0, 1, when);
308          default: return super.getNamedProperty(_hash, _name, _checkValid);
309          }
310
311        }
312
313      @Override
314      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
315        switch (hash) {
316        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeableConcept
317        case 3648314: /*when*/ return this.when == null ? new Base[0] : new Base[] {this.when}; // DataType
318        default: return super.getProperty(hash, name, checkValid);
319        }
320
321      }
322
323      @Override
324      public Base setProperty(int hash, String name, Base value) throws FHIRException {
325        switch (hash) {
326        case 3575610: // type
327          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
328          return value;
329        case 3648314: // when
330          this.when = TypeConvertor.castToType(value); // DataType
331          return value;
332        default: return super.setProperty(hash, name, value);
333        }
334
335      }
336
337      @Override
338      public Base setProperty(String name, Base value) throws FHIRException {
339        if (name.equals("type")) {
340          this.type = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
341        } else if (name.equals("when[x]")) {
342          this.when = TypeConvertor.castToType(value); // DataType
343        } else
344          return super.setProperty(name, value);
345        return value;
346      }
347
348  @Override
349  public void removeChild(String name, Base value) throws FHIRException {
350        if (name.equals("type")) {
351          this.type = null;
352        } else if (name.equals("when[x]")) {
353          this.when = null;
354        } else
355          super.removeChild(name, value);
356        
357      }
358
359      @Override
360      public Base makeProperty(int hash, String name) throws FHIRException {
361        switch (hash) {
362        case 3575610:  return getType();
363        case 1312831238:  return getWhen();
364        case 3648314:  return getWhen();
365        default: return super.makeProperty(hash, name);
366        }
367
368      }
369
370      @Override
371      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
372        switch (hash) {
373        case 3575610: /*type*/ return new String[] {"CodeableConcept"};
374        case 3648314: /*when*/ return new String[] {"dateTime", "Period"};
375        default: return super.getTypesForProperty(hash, name);
376        }
377
378      }
379
380      @Override
381      public Base addChild(String name) throws FHIRException {
382        if (name.equals("type")) {
383          this.type = new CodeableConcept();
384          return this.type;
385        }
386        else if (name.equals("whenDateTime")) {
387          this.when = new DateTimeType();
388          return this.when;
389        }
390        else if (name.equals("whenPeriod")) {
391          this.when = new Period();
392          return this.when;
393        }
394        else
395          return super.addChild(name);
396      }
397
398      public CoverageEligibilityRequestEventComponent copy() {
399        CoverageEligibilityRequestEventComponent dst = new CoverageEligibilityRequestEventComponent();
400        copyValues(dst);
401        return dst;
402      }
403
404      public void copyValues(CoverageEligibilityRequestEventComponent dst) {
405        super.copyValues(dst);
406        dst.type = type == null ? null : type.copy();
407        dst.when = when == null ? null : when.copy();
408      }
409
410      @Override
411      public boolean equalsDeep(Base other_) {
412        if (!super.equalsDeep(other_))
413          return false;
414        if (!(other_ instanceof CoverageEligibilityRequestEventComponent))
415          return false;
416        CoverageEligibilityRequestEventComponent o = (CoverageEligibilityRequestEventComponent) other_;
417        return compareDeep(type, o.type, true) && compareDeep(when, o.when, true);
418      }
419
420      @Override
421      public boolean equalsShallow(Base other_) {
422        if (!super.equalsShallow(other_))
423          return false;
424        if (!(other_ instanceof CoverageEligibilityRequestEventComponent))
425          return false;
426        CoverageEligibilityRequestEventComponent o = (CoverageEligibilityRequestEventComponent) other_;
427        return true;
428      }
429
430      public boolean isEmpty() {
431        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, when);
432      }
433
434  public String fhirType() {
435    return "CoverageEligibilityRequest.event";
436
437  }
438
439  }
440
441    @Block()
442    public static class SupportingInformationComponent extends BackboneElement implements IBaseBackboneElement {
443        /**
444         * A number to uniquely identify supporting information entries.
445         */
446        @Child(name = "sequence", type = {PositiveIntType.class}, order=1, min=1, max=1, modifier=false, summary=false)
447        @Description(shortDefinition="Information instance identifier", formalDefinition="A number to uniquely identify supporting information entries." )
448        protected PositiveIntType sequence;
449
450        /**
451         * Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.
452         */
453        @Child(name = "information", type = {Reference.class}, order=2, min=1, max=1, modifier=false, summary=false)
454        @Description(shortDefinition="Data to be provided", formalDefinition="Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data." )
455        protected Reference information;
456
457        /**
458         * The supporting materials are applicable for all detail items, product/servce categories and specific billing codes.
459         */
460        @Child(name = "appliesToAll", type = {BooleanType.class}, order=3, min=0, max=1, modifier=false, summary=false)
461        @Description(shortDefinition="Applies to all items", formalDefinition="The supporting materials are applicable for all detail items, product/servce categories and specific billing codes." )
462        protected BooleanType appliesToAll;
463
464        private static final long serialVersionUID = -1430960090L;
465
466    /**
467     * Constructor
468     */
469      public SupportingInformationComponent() {
470        super();
471      }
472
473    /**
474     * Constructor
475     */
476      public SupportingInformationComponent(int sequence, Reference information) {
477        super();
478        this.setSequence(sequence);
479        this.setInformation(information);
480      }
481
482        /**
483         * @return {@link #sequence} (A number to uniquely identify supporting information entries.). This is the underlying object with id, value and extensions. The accessor "getSequence" gives direct access to the value
484         */
485        public PositiveIntType getSequenceElement() { 
486          if (this.sequence == null)
487            if (Configuration.errorOnAutoCreate())
488              throw new Error("Attempt to auto-create SupportingInformationComponent.sequence");
489            else if (Configuration.doAutoCreate())
490              this.sequence = new PositiveIntType(); // bb
491          return this.sequence;
492        }
493
494        public boolean hasSequenceElement() { 
495          return this.sequence != null && !this.sequence.isEmpty();
496        }
497
498        public boolean hasSequence() { 
499          return this.sequence != null && !this.sequence.isEmpty();
500        }
501
502        /**
503         * @param value {@link #sequence} (A number to uniquely identify supporting information entries.). This is the underlying object with id, value and extensions. The accessor "getSequence" gives direct access to the value
504         */
505        public SupportingInformationComponent setSequenceElement(PositiveIntType value) { 
506          this.sequence = value;
507          return this;
508        }
509
510        /**
511         * @return A number to uniquely identify supporting information entries.
512         */
513        public int getSequence() { 
514          return this.sequence == null || this.sequence.isEmpty() ? 0 : this.sequence.getValue();
515        }
516
517        /**
518         * @param value A number to uniquely identify supporting information entries.
519         */
520        public SupportingInformationComponent setSequence(int value) { 
521            if (this.sequence == null)
522              this.sequence = new PositiveIntType();
523            this.sequence.setValue(value);
524          return this;
525        }
526
527        /**
528         * @return {@link #information} (Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.)
529         */
530        public Reference getInformation() { 
531          if (this.information == null)
532            if (Configuration.errorOnAutoCreate())
533              throw new Error("Attempt to auto-create SupportingInformationComponent.information");
534            else if (Configuration.doAutoCreate())
535              this.information = new Reference(); // cc
536          return this.information;
537        }
538
539        public boolean hasInformation() { 
540          return this.information != null && !this.information.isEmpty();
541        }
542
543        /**
544         * @param value {@link #information} (Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.)
545         */
546        public SupportingInformationComponent setInformation(Reference value) { 
547          this.information = value;
548          return this;
549        }
550
551        /**
552         * @return {@link #appliesToAll} (The supporting materials are applicable for all detail items, product/servce categories and specific billing codes.). This is the underlying object with id, value and extensions. The accessor "getAppliesToAll" gives direct access to the value
553         */
554        public BooleanType getAppliesToAllElement() { 
555          if (this.appliesToAll == null)
556            if (Configuration.errorOnAutoCreate())
557              throw new Error("Attempt to auto-create SupportingInformationComponent.appliesToAll");
558            else if (Configuration.doAutoCreate())
559              this.appliesToAll = new BooleanType(); // bb
560          return this.appliesToAll;
561        }
562
563        public boolean hasAppliesToAllElement() { 
564          return this.appliesToAll != null && !this.appliesToAll.isEmpty();
565        }
566
567        public boolean hasAppliesToAll() { 
568          return this.appliesToAll != null && !this.appliesToAll.isEmpty();
569        }
570
571        /**
572         * @param value {@link #appliesToAll} (The supporting materials are applicable for all detail items, product/servce categories and specific billing codes.). This is the underlying object with id, value and extensions. The accessor "getAppliesToAll" gives direct access to the value
573         */
574        public SupportingInformationComponent setAppliesToAllElement(BooleanType value) { 
575          this.appliesToAll = value;
576          return this;
577        }
578
579        /**
580         * @return The supporting materials are applicable for all detail items, product/servce categories and specific billing codes.
581         */
582        public boolean getAppliesToAll() { 
583          return this.appliesToAll == null || this.appliesToAll.isEmpty() ? false : this.appliesToAll.getValue();
584        }
585
586        /**
587         * @param value The supporting materials are applicable for all detail items, product/servce categories and specific billing codes.
588         */
589        public SupportingInformationComponent setAppliesToAll(boolean value) { 
590            if (this.appliesToAll == null)
591              this.appliesToAll = new BooleanType();
592            this.appliesToAll.setValue(value);
593          return this;
594        }
595
596        protected void listChildren(List<Property> children) {
597          super.listChildren(children);
598          children.add(new Property("sequence", "positiveInt", "A number to uniquely identify supporting information entries.", 0, 1, sequence));
599          children.add(new Property("information", "Reference(Any)", "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 0, 1, information));
600          children.add(new Property("appliesToAll", "boolean", "The supporting materials are applicable for all detail items, product/servce categories and specific billing codes.", 0, 1, appliesToAll));
601        }
602
603        @Override
604        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
605          switch (_hash) {
606          case 1349547969: /*sequence*/  return new Property("sequence", "positiveInt", "A number to uniquely identify supporting information entries.", 0, 1, sequence);
607          case 1968600364: /*information*/  return new Property("information", "Reference(Any)", "Additional data or information such as resources, documents, images etc. including references to the data or the actual inclusion of the data.", 0, 1, information);
608          case -1096846342: /*appliesToAll*/  return new Property("appliesToAll", "boolean", "The supporting materials are applicable for all detail items, product/servce categories and specific billing codes.", 0, 1, appliesToAll);
609          default: return super.getNamedProperty(_hash, _name, _checkValid);
610          }
611
612        }
613
614      @Override
615      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
616        switch (hash) {
617        case 1349547969: /*sequence*/ return this.sequence == null ? new Base[0] : new Base[] {this.sequence}; // PositiveIntType
618        case 1968600364: /*information*/ return this.information == null ? new Base[0] : new Base[] {this.information}; // Reference
619        case -1096846342: /*appliesToAll*/ return this.appliesToAll == null ? new Base[0] : new Base[] {this.appliesToAll}; // BooleanType
620        default: return super.getProperty(hash, name, checkValid);
621        }
622
623      }
624
625      @Override
626      public Base setProperty(int hash, String name, Base value) throws FHIRException {
627        switch (hash) {
628        case 1349547969: // sequence
629          this.sequence = TypeConvertor.castToPositiveInt(value); // PositiveIntType
630          return value;
631        case 1968600364: // information
632          this.information = TypeConvertor.castToReference(value); // Reference
633          return value;
634        case -1096846342: // appliesToAll
635          this.appliesToAll = TypeConvertor.castToBoolean(value); // BooleanType
636          return value;
637        default: return super.setProperty(hash, name, value);
638        }
639
640      }
641
642      @Override
643      public Base setProperty(String name, Base value) throws FHIRException {
644        if (name.equals("sequence")) {
645          this.sequence = TypeConvertor.castToPositiveInt(value); // PositiveIntType
646        } else if (name.equals("information")) {
647          this.information = TypeConvertor.castToReference(value); // Reference
648        } else if (name.equals("appliesToAll")) {
649          this.appliesToAll = TypeConvertor.castToBoolean(value); // BooleanType
650        } else
651          return super.setProperty(name, value);
652        return value;
653      }
654
655  @Override
656  public void removeChild(String name, Base value) throws FHIRException {
657        if (name.equals("sequence")) {
658          this.sequence = null;
659        } else if (name.equals("information")) {
660          this.information = null;
661        } else if (name.equals("appliesToAll")) {
662          this.appliesToAll = null;
663        } else
664          super.removeChild(name, value);
665        
666      }
667
668      @Override
669      public Base makeProperty(int hash, String name) throws FHIRException {
670        switch (hash) {
671        case 1349547969:  return getSequenceElement();
672        case 1968600364:  return getInformation();
673        case -1096846342:  return getAppliesToAllElement();
674        default: return super.makeProperty(hash, name);
675        }
676
677      }
678
679      @Override
680      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
681        switch (hash) {
682        case 1349547969: /*sequence*/ return new String[] {"positiveInt"};
683        case 1968600364: /*information*/ return new String[] {"Reference"};
684        case -1096846342: /*appliesToAll*/ return new String[] {"boolean"};
685        default: return super.getTypesForProperty(hash, name);
686        }
687
688      }
689
690      @Override
691      public Base addChild(String name) throws FHIRException {
692        if (name.equals("sequence")) {
693          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityRequest.supportingInfo.sequence");
694        }
695        else if (name.equals("information")) {
696          this.information = new Reference();
697          return this.information;
698        }
699        else if (name.equals("appliesToAll")) {
700          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityRequest.supportingInfo.appliesToAll");
701        }
702        else
703          return super.addChild(name);
704      }
705
706      public SupportingInformationComponent copy() {
707        SupportingInformationComponent dst = new SupportingInformationComponent();
708        copyValues(dst);
709        return dst;
710      }
711
712      public void copyValues(SupportingInformationComponent dst) {
713        super.copyValues(dst);
714        dst.sequence = sequence == null ? null : sequence.copy();
715        dst.information = information == null ? null : information.copy();
716        dst.appliesToAll = appliesToAll == null ? null : appliesToAll.copy();
717      }
718
719      @Override
720      public boolean equalsDeep(Base other_) {
721        if (!super.equalsDeep(other_))
722          return false;
723        if (!(other_ instanceof SupportingInformationComponent))
724          return false;
725        SupportingInformationComponent o = (SupportingInformationComponent) other_;
726        return compareDeep(sequence, o.sequence, true) && compareDeep(information, o.information, true)
727           && compareDeep(appliesToAll, o.appliesToAll, true);
728      }
729
730      @Override
731      public boolean equalsShallow(Base other_) {
732        if (!super.equalsShallow(other_))
733          return false;
734        if (!(other_ instanceof SupportingInformationComponent))
735          return false;
736        SupportingInformationComponent o = (SupportingInformationComponent) other_;
737        return compareValues(sequence, o.sequence, true) && compareValues(appliesToAll, o.appliesToAll, true)
738          ;
739      }
740
741      public boolean isEmpty() {
742        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(sequence, information, appliesToAll
743          );
744      }
745
746  public String fhirType() {
747    return "CoverageEligibilityRequest.supportingInfo";
748
749  }
750
751  }
752
753    @Block()
754    public static class InsuranceComponent extends BackboneElement implements IBaseBackboneElement {
755        /**
756         * A flag to indicate that this Coverage is to be used for evaluation of this request when set to true.
757         */
758        @Child(name = "focal", type = {BooleanType.class}, order=1, min=0, max=1, modifier=false, summary=false)
759        @Description(shortDefinition="Applicable coverage", formalDefinition="A flag to indicate that this Coverage is to be used for evaluation of this request when set to true." )
760        protected BooleanType focal;
761
762        /**
763         * Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system.
764         */
765        @Child(name = "coverage", type = {Coverage.class}, order=2, min=1, max=1, modifier=false, summary=false)
766        @Description(shortDefinition="Insurance information", formalDefinition="Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system." )
767        protected Reference coverage;
768
769        /**
770         * A business agreement number established between the provider and the insurer for special business processing purposes.
771         */
772        @Child(name = "businessArrangement", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
773        @Description(shortDefinition="Additional provider contract number", formalDefinition="A business agreement number established between the provider and the insurer for special business processing purposes." )
774        protected StringType businessArrangement;
775
776        private static final long serialVersionUID = -1656150261L;
777
778    /**
779     * Constructor
780     */
781      public InsuranceComponent() {
782        super();
783      }
784
785    /**
786     * Constructor
787     */
788      public InsuranceComponent(Reference coverage) {
789        super();
790        this.setCoverage(coverage);
791      }
792
793        /**
794         * @return {@link #focal} (A flag to indicate that this Coverage is to be used for evaluation of this request when set to true.). This is the underlying object with id, value and extensions. The accessor "getFocal" gives direct access to the value
795         */
796        public BooleanType getFocalElement() { 
797          if (this.focal == null)
798            if (Configuration.errorOnAutoCreate())
799              throw new Error("Attempt to auto-create InsuranceComponent.focal");
800            else if (Configuration.doAutoCreate())
801              this.focal = new BooleanType(); // bb
802          return this.focal;
803        }
804
805        public boolean hasFocalElement() { 
806          return this.focal != null && !this.focal.isEmpty();
807        }
808
809        public boolean hasFocal() { 
810          return this.focal != null && !this.focal.isEmpty();
811        }
812
813        /**
814         * @param value {@link #focal} (A flag to indicate that this Coverage is to be used for evaluation of this request when set to true.). This is the underlying object with id, value and extensions. The accessor "getFocal" gives direct access to the value
815         */
816        public InsuranceComponent setFocalElement(BooleanType value) { 
817          this.focal = value;
818          return this;
819        }
820
821        /**
822         * @return A flag to indicate that this Coverage is to be used for evaluation of this request when set to true.
823         */
824        public boolean getFocal() { 
825          return this.focal == null || this.focal.isEmpty() ? false : this.focal.getValue();
826        }
827
828        /**
829         * @param value A flag to indicate that this Coverage is to be used for evaluation of this request when set to true.
830         */
831        public InsuranceComponent setFocal(boolean value) { 
832            if (this.focal == null)
833              this.focal = new BooleanType();
834            this.focal.setValue(value);
835          return this;
836        }
837
838        /**
839         * @return {@link #coverage} (Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system.)
840         */
841        public Reference getCoverage() { 
842          if (this.coverage == null)
843            if (Configuration.errorOnAutoCreate())
844              throw new Error("Attempt to auto-create InsuranceComponent.coverage");
845            else if (Configuration.doAutoCreate())
846              this.coverage = new Reference(); // cc
847          return this.coverage;
848        }
849
850        public boolean hasCoverage() { 
851          return this.coverage != null && !this.coverage.isEmpty();
852        }
853
854        /**
855         * @param value {@link #coverage} (Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system.)
856         */
857        public InsuranceComponent setCoverage(Reference value) { 
858          this.coverage = value;
859          return this;
860        }
861
862        /**
863         * @return {@link #businessArrangement} (A business agreement number established between the provider and the insurer for special business processing purposes.). This is the underlying object with id, value and extensions. The accessor "getBusinessArrangement" gives direct access to the value
864         */
865        public StringType getBusinessArrangementElement() { 
866          if (this.businessArrangement == null)
867            if (Configuration.errorOnAutoCreate())
868              throw new Error("Attempt to auto-create InsuranceComponent.businessArrangement");
869            else if (Configuration.doAutoCreate())
870              this.businessArrangement = new StringType(); // bb
871          return this.businessArrangement;
872        }
873
874        public boolean hasBusinessArrangementElement() { 
875          return this.businessArrangement != null && !this.businessArrangement.isEmpty();
876        }
877
878        public boolean hasBusinessArrangement() { 
879          return this.businessArrangement != null && !this.businessArrangement.isEmpty();
880        }
881
882        /**
883         * @param value {@link #businessArrangement} (A business agreement number established between the provider and the insurer for special business processing purposes.). This is the underlying object with id, value and extensions. The accessor "getBusinessArrangement" gives direct access to the value
884         */
885        public InsuranceComponent setBusinessArrangementElement(StringType value) { 
886          this.businessArrangement = value;
887          return this;
888        }
889
890        /**
891         * @return A business agreement number established between the provider and the insurer for special business processing purposes.
892         */
893        public String getBusinessArrangement() { 
894          return this.businessArrangement == null ? null : this.businessArrangement.getValue();
895        }
896
897        /**
898         * @param value A business agreement number established between the provider and the insurer for special business processing purposes.
899         */
900        public InsuranceComponent setBusinessArrangement(String value) { 
901          if (Utilities.noString(value))
902            this.businessArrangement = null;
903          else {
904            if (this.businessArrangement == null)
905              this.businessArrangement = new StringType();
906            this.businessArrangement.setValue(value);
907          }
908          return this;
909        }
910
911        protected void listChildren(List<Property> children) {
912          super.listChildren(children);
913          children.add(new Property("focal", "boolean", "A flag to indicate that this Coverage is to be used for evaluation of this request when set to true.", 0, 1, focal));
914          children.add(new Property("coverage", "Reference(Coverage)", "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system.", 0, 1, coverage));
915          children.add(new Property("businessArrangement", "string", "A business agreement number established between the provider and the insurer for special business processing purposes.", 0, 1, businessArrangement));
916        }
917
918        @Override
919        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
920          switch (_hash) {
921          case 97604197: /*focal*/  return new Property("focal", "boolean", "A flag to indicate that this Coverage is to be used for evaluation of this request when set to true.", 0, 1, focal);
922          case -351767064: /*coverage*/  return new Property("coverage", "Reference(Coverage)", "Reference to the insurance card level information contained in the Coverage resource. The coverage issuing insurer will use these details to locate the patient's actual coverage within the insurer's information system.", 0, 1, coverage);
923          case 259920682: /*businessArrangement*/  return new Property("businessArrangement", "string", "A business agreement number established between the provider and the insurer for special business processing purposes.", 0, 1, businessArrangement);
924          default: return super.getNamedProperty(_hash, _name, _checkValid);
925          }
926
927        }
928
929      @Override
930      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
931        switch (hash) {
932        case 97604197: /*focal*/ return this.focal == null ? new Base[0] : new Base[] {this.focal}; // BooleanType
933        case -351767064: /*coverage*/ return this.coverage == null ? new Base[0] : new Base[] {this.coverage}; // Reference
934        case 259920682: /*businessArrangement*/ return this.businessArrangement == null ? new Base[0] : new Base[] {this.businessArrangement}; // StringType
935        default: return super.getProperty(hash, name, checkValid);
936        }
937
938      }
939
940      @Override
941      public Base setProperty(int hash, String name, Base value) throws FHIRException {
942        switch (hash) {
943        case 97604197: // focal
944          this.focal = TypeConvertor.castToBoolean(value); // BooleanType
945          return value;
946        case -351767064: // coverage
947          this.coverage = TypeConvertor.castToReference(value); // Reference
948          return value;
949        case 259920682: // businessArrangement
950          this.businessArrangement = TypeConvertor.castToString(value); // StringType
951          return value;
952        default: return super.setProperty(hash, name, value);
953        }
954
955      }
956
957      @Override
958      public Base setProperty(String name, Base value) throws FHIRException {
959        if (name.equals("focal")) {
960          this.focal = TypeConvertor.castToBoolean(value); // BooleanType
961        } else if (name.equals("coverage")) {
962          this.coverage = TypeConvertor.castToReference(value); // Reference
963        } else if (name.equals("businessArrangement")) {
964          this.businessArrangement = TypeConvertor.castToString(value); // StringType
965        } else
966          return super.setProperty(name, value);
967        return value;
968      }
969
970  @Override
971  public void removeChild(String name, Base value) throws FHIRException {
972        if (name.equals("focal")) {
973          this.focal = null;
974        } else if (name.equals("coverage")) {
975          this.coverage = null;
976        } else if (name.equals("businessArrangement")) {
977          this.businessArrangement = null;
978        } else
979          super.removeChild(name, value);
980        
981      }
982
983      @Override
984      public Base makeProperty(int hash, String name) throws FHIRException {
985        switch (hash) {
986        case 97604197:  return getFocalElement();
987        case -351767064:  return getCoverage();
988        case 259920682:  return getBusinessArrangementElement();
989        default: return super.makeProperty(hash, name);
990        }
991
992      }
993
994      @Override
995      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
996        switch (hash) {
997        case 97604197: /*focal*/ return new String[] {"boolean"};
998        case -351767064: /*coverage*/ return new String[] {"Reference"};
999        case 259920682: /*businessArrangement*/ return new String[] {"string"};
1000        default: return super.getTypesForProperty(hash, name);
1001        }
1002
1003      }
1004
1005      @Override
1006      public Base addChild(String name) throws FHIRException {
1007        if (name.equals("focal")) {
1008          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityRequest.insurance.focal");
1009        }
1010        else if (name.equals("coverage")) {
1011          this.coverage = new Reference();
1012          return this.coverage;
1013        }
1014        else if (name.equals("businessArrangement")) {
1015          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityRequest.insurance.businessArrangement");
1016        }
1017        else
1018          return super.addChild(name);
1019      }
1020
1021      public InsuranceComponent copy() {
1022        InsuranceComponent dst = new InsuranceComponent();
1023        copyValues(dst);
1024        return dst;
1025      }
1026
1027      public void copyValues(InsuranceComponent dst) {
1028        super.copyValues(dst);
1029        dst.focal = focal == null ? null : focal.copy();
1030        dst.coverage = coverage == null ? null : coverage.copy();
1031        dst.businessArrangement = businessArrangement == null ? null : businessArrangement.copy();
1032      }
1033
1034      @Override
1035      public boolean equalsDeep(Base other_) {
1036        if (!super.equalsDeep(other_))
1037          return false;
1038        if (!(other_ instanceof InsuranceComponent))
1039          return false;
1040        InsuranceComponent o = (InsuranceComponent) other_;
1041        return compareDeep(focal, o.focal, true) && compareDeep(coverage, o.coverage, true) && compareDeep(businessArrangement, o.businessArrangement, true)
1042          ;
1043      }
1044
1045      @Override
1046      public boolean equalsShallow(Base other_) {
1047        if (!super.equalsShallow(other_))
1048          return false;
1049        if (!(other_ instanceof InsuranceComponent))
1050          return false;
1051        InsuranceComponent o = (InsuranceComponent) other_;
1052        return compareValues(focal, o.focal, true) && compareValues(businessArrangement, o.businessArrangement, true)
1053          ;
1054      }
1055
1056      public boolean isEmpty() {
1057        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(focal, coverage, businessArrangement
1058          );
1059      }
1060
1061  public String fhirType() {
1062    return "CoverageEligibilityRequest.insurance";
1063
1064  }
1065
1066  }
1067
1068    @Block()
1069    public static class DetailsComponent extends BackboneElement implements IBaseBackboneElement {
1070        /**
1071         * Exceptions, special conditions and supporting information applicable for this service or product line.
1072         */
1073        @Child(name = "supportingInfoSequence", type = {PositiveIntType.class}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1074        @Description(shortDefinition="Applicable exception or supporting information", formalDefinition="Exceptions, special conditions and supporting information applicable for this service or product line." )
1075        protected List<PositiveIntType> supportingInfoSequence;
1076
1077        /**
1078         * Code to identify the general type of benefits under which products and services are provided.
1079         */
1080        @Child(name = "category", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
1081        @Description(shortDefinition="Benefit classification", formalDefinition="Code to identify the general type of benefits under which products and services are provided." )
1082        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/ex-benefitcategory")
1083        protected CodeableConcept category;
1084
1085        /**
1086         * This contains the product, service, drug or other billing code for the item.
1087         */
1088        @Child(name = "productOrService", type = {CodeableConcept.class}, order=3, min=0, max=1, modifier=false, summary=false)
1089        @Description(shortDefinition="Billing, service, product, or drug code", formalDefinition="This contains the product, service, drug or other billing code for the item." )
1090        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/service-uscls")
1091        protected CodeableConcept productOrService;
1092
1093        /**
1094         * Item typification or modifiers codes to convey additional context for the product or service.
1095         */
1096        @Child(name = "modifier", type = {CodeableConcept.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1097        @Description(shortDefinition="Product or service billing modifiers", formalDefinition="Item typification or modifiers codes to convey additional context for the product or service." )
1098        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/claim-modifiers")
1099        protected List<CodeableConcept> modifier;
1100
1101        /**
1102         * The practitioner who is responsible for the product or service to be rendered to the patient.
1103         */
1104        @Child(name = "provider", type = {Practitioner.class, PractitionerRole.class}, order=5, min=0, max=1, modifier=false, summary=false)
1105        @Description(shortDefinition="Perfoming practitioner", formalDefinition="The practitioner who is responsible for the product or service to be rendered to the patient." )
1106        protected Reference provider;
1107
1108        /**
1109         * The number of repetitions of a service or product.
1110         */
1111        @Child(name = "quantity", type = {Quantity.class}, order=6, min=0, max=1, modifier=false, summary=false)
1112        @Description(shortDefinition="Count of products or services", formalDefinition="The number of repetitions of a service or product." )
1113        protected Quantity quantity;
1114
1115        /**
1116         * The amount charged to the patient by the provider for a single unit.
1117         */
1118        @Child(name = "unitPrice", type = {Money.class}, order=7, min=0, max=1, modifier=false, summary=false)
1119        @Description(shortDefinition="Fee, charge or cost per item", formalDefinition="The amount charged to the patient by the provider for a single unit." )
1120        protected Money unitPrice;
1121
1122        /**
1123         * Facility where the services will be provided.
1124         */
1125        @Child(name = "facility", type = {Location.class, Organization.class}, order=8, min=0, max=1, modifier=false, summary=false)
1126        @Description(shortDefinition="Servicing facility", formalDefinition="Facility where the services will be provided." )
1127        protected Reference facility;
1128
1129        /**
1130         * Patient diagnosis for which care is sought.
1131         */
1132        @Child(name = "diagnosis", type = {}, order=9, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1133        @Description(shortDefinition="Applicable diagnosis", formalDefinition="Patient diagnosis for which care is sought." )
1134        protected List<DiagnosisComponent> diagnosis;
1135
1136        /**
1137         * The plan/proposal/order describing the proposed service in detail.
1138         */
1139        @Child(name = "detail", type = {Reference.class}, order=10, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
1140        @Description(shortDefinition="Product or service details", formalDefinition="The plan/proposal/order describing the proposed service in detail." )
1141        protected List<Reference> detail;
1142
1143        private static final long serialVersionUID = 1615052611L;
1144
1145    /**
1146     * Constructor
1147     */
1148      public DetailsComponent() {
1149        super();
1150      }
1151
1152        /**
1153         * @return {@link #supportingInfoSequence} (Exceptions, special conditions and supporting information applicable for this service or product line.)
1154         */
1155        public List<PositiveIntType> getSupportingInfoSequence() { 
1156          if (this.supportingInfoSequence == null)
1157            this.supportingInfoSequence = new ArrayList<PositiveIntType>();
1158          return this.supportingInfoSequence;
1159        }
1160
1161        /**
1162         * @return Returns a reference to <code>this</code> for easy method chaining
1163         */
1164        public DetailsComponent setSupportingInfoSequence(List<PositiveIntType> theSupportingInfoSequence) { 
1165          this.supportingInfoSequence = theSupportingInfoSequence;
1166          return this;
1167        }
1168
1169        public boolean hasSupportingInfoSequence() { 
1170          if (this.supportingInfoSequence == null)
1171            return false;
1172          for (PositiveIntType item : this.supportingInfoSequence)
1173            if (!item.isEmpty())
1174              return true;
1175          return false;
1176        }
1177
1178        /**
1179         * @return {@link #supportingInfoSequence} (Exceptions, special conditions and supporting information applicable for this service or product line.)
1180         */
1181        public PositiveIntType addSupportingInfoSequenceElement() {//2 
1182          PositiveIntType t = new PositiveIntType();
1183          if (this.supportingInfoSequence == null)
1184            this.supportingInfoSequence = new ArrayList<PositiveIntType>();
1185          this.supportingInfoSequence.add(t);
1186          return t;
1187        }
1188
1189        /**
1190         * @param value {@link #supportingInfoSequence} (Exceptions, special conditions and supporting information applicable for this service or product line.)
1191         */
1192        public DetailsComponent addSupportingInfoSequence(int value) { //1
1193          PositiveIntType t = new PositiveIntType();
1194          t.setValue(value);
1195          if (this.supportingInfoSequence == null)
1196            this.supportingInfoSequence = new ArrayList<PositiveIntType>();
1197          this.supportingInfoSequence.add(t);
1198          return this;
1199        }
1200
1201        /**
1202         * @param value {@link #supportingInfoSequence} (Exceptions, special conditions and supporting information applicable for this service or product line.)
1203         */
1204        public boolean hasSupportingInfoSequence(int value) { 
1205          if (this.supportingInfoSequence == null)
1206            return false;
1207          for (PositiveIntType v : this.supportingInfoSequence)
1208            if (v.getValue().equals(value)) // positiveInt
1209              return true;
1210          return false;
1211        }
1212
1213        /**
1214         * @return {@link #category} (Code to identify the general type of benefits under which products and services are provided.)
1215         */
1216        public CodeableConcept getCategory() { 
1217          if (this.category == null)
1218            if (Configuration.errorOnAutoCreate())
1219              throw new Error("Attempt to auto-create DetailsComponent.category");
1220            else if (Configuration.doAutoCreate())
1221              this.category = new CodeableConcept(); // cc
1222          return this.category;
1223        }
1224
1225        public boolean hasCategory() { 
1226          return this.category != null && !this.category.isEmpty();
1227        }
1228
1229        /**
1230         * @param value {@link #category} (Code to identify the general type of benefits under which products and services are provided.)
1231         */
1232        public DetailsComponent setCategory(CodeableConcept value) { 
1233          this.category = value;
1234          return this;
1235        }
1236
1237        /**
1238         * @return {@link #productOrService} (This contains the product, service, drug or other billing code for the item.)
1239         */
1240        public CodeableConcept getProductOrService() { 
1241          if (this.productOrService == null)
1242            if (Configuration.errorOnAutoCreate())
1243              throw new Error("Attempt to auto-create DetailsComponent.productOrService");
1244            else if (Configuration.doAutoCreate())
1245              this.productOrService = new CodeableConcept(); // cc
1246          return this.productOrService;
1247        }
1248
1249        public boolean hasProductOrService() { 
1250          return this.productOrService != null && !this.productOrService.isEmpty();
1251        }
1252
1253        /**
1254         * @param value {@link #productOrService} (This contains the product, service, drug or other billing code for the item.)
1255         */
1256        public DetailsComponent setProductOrService(CodeableConcept value) { 
1257          this.productOrService = value;
1258          return this;
1259        }
1260
1261        /**
1262         * @return {@link #modifier} (Item typification or modifiers codes to convey additional context for the product or service.)
1263         */
1264        public List<CodeableConcept> getModifier() { 
1265          if (this.modifier == null)
1266            this.modifier = new ArrayList<CodeableConcept>();
1267          return this.modifier;
1268        }
1269
1270        /**
1271         * @return Returns a reference to <code>this</code> for easy method chaining
1272         */
1273        public DetailsComponent setModifier(List<CodeableConcept> theModifier) { 
1274          this.modifier = theModifier;
1275          return this;
1276        }
1277
1278        public boolean hasModifier() { 
1279          if (this.modifier == null)
1280            return false;
1281          for (CodeableConcept item : this.modifier)
1282            if (!item.isEmpty())
1283              return true;
1284          return false;
1285        }
1286
1287        public CodeableConcept addModifier() { //3
1288          CodeableConcept t = new CodeableConcept();
1289          if (this.modifier == null)
1290            this.modifier = new ArrayList<CodeableConcept>();
1291          this.modifier.add(t);
1292          return t;
1293        }
1294
1295        public DetailsComponent addModifier(CodeableConcept t) { //3
1296          if (t == null)
1297            return this;
1298          if (this.modifier == null)
1299            this.modifier = new ArrayList<CodeableConcept>();
1300          this.modifier.add(t);
1301          return this;
1302        }
1303
1304        /**
1305         * @return The first repetition of repeating field {@link #modifier}, creating it if it does not already exist {3}
1306         */
1307        public CodeableConcept getModifierFirstRep() { 
1308          if (getModifier().isEmpty()) {
1309            addModifier();
1310          }
1311          return getModifier().get(0);
1312        }
1313
1314        /**
1315         * @return {@link #provider} (The practitioner who is responsible for the product or service to be rendered to the patient.)
1316         */
1317        public Reference getProvider() { 
1318          if (this.provider == null)
1319            if (Configuration.errorOnAutoCreate())
1320              throw new Error("Attempt to auto-create DetailsComponent.provider");
1321            else if (Configuration.doAutoCreate())
1322              this.provider = new Reference(); // cc
1323          return this.provider;
1324        }
1325
1326        public boolean hasProvider() { 
1327          return this.provider != null && !this.provider.isEmpty();
1328        }
1329
1330        /**
1331         * @param value {@link #provider} (The practitioner who is responsible for the product or service to be rendered to the patient.)
1332         */
1333        public DetailsComponent setProvider(Reference value) { 
1334          this.provider = value;
1335          return this;
1336        }
1337
1338        /**
1339         * @return {@link #quantity} (The number of repetitions of a service or product.)
1340         */
1341        public Quantity getQuantity() { 
1342          if (this.quantity == null)
1343            if (Configuration.errorOnAutoCreate())
1344              throw new Error("Attempt to auto-create DetailsComponent.quantity");
1345            else if (Configuration.doAutoCreate())
1346              this.quantity = new Quantity(); // cc
1347          return this.quantity;
1348        }
1349
1350        public boolean hasQuantity() { 
1351          return this.quantity != null && !this.quantity.isEmpty();
1352        }
1353
1354        /**
1355         * @param value {@link #quantity} (The number of repetitions of a service or product.)
1356         */
1357        public DetailsComponent setQuantity(Quantity value) { 
1358          this.quantity = value;
1359          return this;
1360        }
1361
1362        /**
1363         * @return {@link #unitPrice} (The amount charged to the patient by the provider for a single unit.)
1364         */
1365        public Money getUnitPrice() { 
1366          if (this.unitPrice == null)
1367            if (Configuration.errorOnAutoCreate())
1368              throw new Error("Attempt to auto-create DetailsComponent.unitPrice");
1369            else if (Configuration.doAutoCreate())
1370              this.unitPrice = new Money(); // cc
1371          return this.unitPrice;
1372        }
1373
1374        public boolean hasUnitPrice() { 
1375          return this.unitPrice != null && !this.unitPrice.isEmpty();
1376        }
1377
1378        /**
1379         * @param value {@link #unitPrice} (The amount charged to the patient by the provider for a single unit.)
1380         */
1381        public DetailsComponent setUnitPrice(Money value) { 
1382          this.unitPrice = value;
1383          return this;
1384        }
1385
1386        /**
1387         * @return {@link #facility} (Facility where the services will be provided.)
1388         */
1389        public Reference getFacility() { 
1390          if (this.facility == null)
1391            if (Configuration.errorOnAutoCreate())
1392              throw new Error("Attempt to auto-create DetailsComponent.facility");
1393            else if (Configuration.doAutoCreate())
1394              this.facility = new Reference(); // cc
1395          return this.facility;
1396        }
1397
1398        public boolean hasFacility() { 
1399          return this.facility != null && !this.facility.isEmpty();
1400        }
1401
1402        /**
1403         * @param value {@link #facility} (Facility where the services will be provided.)
1404         */
1405        public DetailsComponent setFacility(Reference value) { 
1406          this.facility = value;
1407          return this;
1408        }
1409
1410        /**
1411         * @return {@link #diagnosis} (Patient diagnosis for which care is sought.)
1412         */
1413        public List<DiagnosisComponent> getDiagnosis() { 
1414          if (this.diagnosis == null)
1415            this.diagnosis = new ArrayList<DiagnosisComponent>();
1416          return this.diagnosis;
1417        }
1418
1419        /**
1420         * @return Returns a reference to <code>this</code> for easy method chaining
1421         */
1422        public DetailsComponent setDiagnosis(List<DiagnosisComponent> theDiagnosis) { 
1423          this.diagnosis = theDiagnosis;
1424          return this;
1425        }
1426
1427        public boolean hasDiagnosis() { 
1428          if (this.diagnosis == null)
1429            return false;
1430          for (DiagnosisComponent item : this.diagnosis)
1431            if (!item.isEmpty())
1432              return true;
1433          return false;
1434        }
1435
1436        public DiagnosisComponent addDiagnosis() { //3
1437          DiagnosisComponent t = new DiagnosisComponent();
1438          if (this.diagnosis == null)
1439            this.diagnosis = new ArrayList<DiagnosisComponent>();
1440          this.diagnosis.add(t);
1441          return t;
1442        }
1443
1444        public DetailsComponent addDiagnosis(DiagnosisComponent t) { //3
1445          if (t == null)
1446            return this;
1447          if (this.diagnosis == null)
1448            this.diagnosis = new ArrayList<DiagnosisComponent>();
1449          this.diagnosis.add(t);
1450          return this;
1451        }
1452
1453        /**
1454         * @return The first repetition of repeating field {@link #diagnosis}, creating it if it does not already exist {3}
1455         */
1456        public DiagnosisComponent getDiagnosisFirstRep() { 
1457          if (getDiagnosis().isEmpty()) {
1458            addDiagnosis();
1459          }
1460          return getDiagnosis().get(0);
1461        }
1462
1463        /**
1464         * @return {@link #detail} (The plan/proposal/order describing the proposed service in detail.)
1465         */
1466        public List<Reference> getDetail() { 
1467          if (this.detail == null)
1468            this.detail = new ArrayList<Reference>();
1469          return this.detail;
1470        }
1471
1472        /**
1473         * @return Returns a reference to <code>this</code> for easy method chaining
1474         */
1475        public DetailsComponent setDetail(List<Reference> theDetail) { 
1476          this.detail = theDetail;
1477          return this;
1478        }
1479
1480        public boolean hasDetail() { 
1481          if (this.detail == null)
1482            return false;
1483          for (Reference item : this.detail)
1484            if (!item.isEmpty())
1485              return true;
1486          return false;
1487        }
1488
1489        public Reference addDetail() { //3
1490          Reference t = new Reference();
1491          if (this.detail == null)
1492            this.detail = new ArrayList<Reference>();
1493          this.detail.add(t);
1494          return t;
1495        }
1496
1497        public DetailsComponent addDetail(Reference t) { //3
1498          if (t == null)
1499            return this;
1500          if (this.detail == null)
1501            this.detail = new ArrayList<Reference>();
1502          this.detail.add(t);
1503          return this;
1504        }
1505
1506        /**
1507         * @return The first repetition of repeating field {@link #detail}, creating it if it does not already exist {3}
1508         */
1509        public Reference getDetailFirstRep() { 
1510          if (getDetail().isEmpty()) {
1511            addDetail();
1512          }
1513          return getDetail().get(0);
1514        }
1515
1516        protected void listChildren(List<Property> children) {
1517          super.listChildren(children);
1518          children.add(new Property("supportingInfoSequence", "positiveInt", "Exceptions, special conditions and supporting information applicable for this service or product line.", 0, java.lang.Integer.MAX_VALUE, supportingInfoSequence));
1519          children.add(new Property("category", "CodeableConcept", "Code to identify the general type of benefits under which products and services are provided.", 0, 1, category));
1520          children.add(new Property("productOrService", "CodeableConcept", "This contains the product, service, drug or other billing code for the item.", 0, 1, productOrService));
1521          children.add(new Property("modifier", "CodeableConcept", "Item typification or modifiers codes to convey additional context for the product or service.", 0, java.lang.Integer.MAX_VALUE, modifier));
1522          children.add(new Property("provider", "Reference(Practitioner|PractitionerRole)", "The practitioner who is responsible for the product or service to be rendered to the patient.", 0, 1, provider));
1523          children.add(new Property("quantity", "Quantity", "The number of repetitions of a service or product.", 0, 1, quantity));
1524          children.add(new Property("unitPrice", "Money", "The amount charged to the patient by the provider for a single unit.", 0, 1, unitPrice));
1525          children.add(new Property("facility", "Reference(Location|Organization)", "Facility where the services will be provided.", 0, 1, facility));
1526          children.add(new Property("diagnosis", "", "Patient diagnosis for which care is sought.", 0, java.lang.Integer.MAX_VALUE, diagnosis));
1527          children.add(new Property("detail", "Reference(Any)", "The plan/proposal/order describing the proposed service in detail.", 0, java.lang.Integer.MAX_VALUE, detail));
1528        }
1529
1530        @Override
1531        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1532          switch (_hash) {
1533          case -595860510: /*supportingInfoSequence*/  return new Property("supportingInfoSequence", "positiveInt", "Exceptions, special conditions and supporting information applicable for this service or product line.", 0, java.lang.Integer.MAX_VALUE, supportingInfoSequence);
1534          case 50511102: /*category*/  return new Property("category", "CodeableConcept", "Code to identify the general type of benefits under which products and services are provided.", 0, 1, category);
1535          case 1957227299: /*productOrService*/  return new Property("productOrService", "CodeableConcept", "This contains the product, service, drug or other billing code for the item.", 0, 1, productOrService);
1536          case -615513385: /*modifier*/  return new Property("modifier", "CodeableConcept", "Item typification or modifiers codes to convey additional context for the product or service.", 0, java.lang.Integer.MAX_VALUE, modifier);
1537          case -987494927: /*provider*/  return new Property("provider", "Reference(Practitioner|PractitionerRole)", "The practitioner who is responsible for the product or service to be rendered to the patient.", 0, 1, provider);
1538          case -1285004149: /*quantity*/  return new Property("quantity", "Quantity", "The number of repetitions of a service or product.", 0, 1, quantity);
1539          case -486196699: /*unitPrice*/  return new Property("unitPrice", "Money", "The amount charged to the patient by the provider for a single unit.", 0, 1, unitPrice);
1540          case 501116579: /*facility*/  return new Property("facility", "Reference(Location|Organization)", "Facility where the services will be provided.", 0, 1, facility);
1541          case 1196993265: /*diagnosis*/  return new Property("diagnosis", "", "Patient diagnosis for which care is sought.", 0, java.lang.Integer.MAX_VALUE, diagnosis);
1542          case -1335224239: /*detail*/  return new Property("detail", "Reference(Any)", "The plan/proposal/order describing the proposed service in detail.", 0, java.lang.Integer.MAX_VALUE, detail);
1543          default: return super.getNamedProperty(_hash, _name, _checkValid);
1544          }
1545
1546        }
1547
1548      @Override
1549      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1550        switch (hash) {
1551        case -595860510: /*supportingInfoSequence*/ return this.supportingInfoSequence == null ? new Base[0] : this.supportingInfoSequence.toArray(new Base[this.supportingInfoSequence.size()]); // PositiveIntType
1552        case 50511102: /*category*/ return this.category == null ? new Base[0] : new Base[] {this.category}; // CodeableConcept
1553        case 1957227299: /*productOrService*/ return this.productOrService == null ? new Base[0] : new Base[] {this.productOrService}; // CodeableConcept
1554        case -615513385: /*modifier*/ return this.modifier == null ? new Base[0] : this.modifier.toArray(new Base[this.modifier.size()]); // CodeableConcept
1555        case -987494927: /*provider*/ return this.provider == null ? new Base[0] : new Base[] {this.provider}; // Reference
1556        case -1285004149: /*quantity*/ return this.quantity == null ? new Base[0] : new Base[] {this.quantity}; // Quantity
1557        case -486196699: /*unitPrice*/ return this.unitPrice == null ? new Base[0] : new Base[] {this.unitPrice}; // Money
1558        case 501116579: /*facility*/ return this.facility == null ? new Base[0] : new Base[] {this.facility}; // Reference
1559        case 1196993265: /*diagnosis*/ return this.diagnosis == null ? new Base[0] : this.diagnosis.toArray(new Base[this.diagnosis.size()]); // DiagnosisComponent
1560        case -1335224239: /*detail*/ return this.detail == null ? new Base[0] : this.detail.toArray(new Base[this.detail.size()]); // Reference
1561        default: return super.getProperty(hash, name, checkValid);
1562        }
1563
1564      }
1565
1566      @Override
1567      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1568        switch (hash) {
1569        case -595860510: // supportingInfoSequence
1570          this.getSupportingInfoSequence().add(TypeConvertor.castToPositiveInt(value)); // PositiveIntType
1571          return value;
1572        case 50511102: // category
1573          this.category = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1574          return value;
1575        case 1957227299: // productOrService
1576          this.productOrService = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1577          return value;
1578        case -615513385: // modifier
1579          this.getModifier().add(TypeConvertor.castToCodeableConcept(value)); // CodeableConcept
1580          return value;
1581        case -987494927: // provider
1582          this.provider = TypeConvertor.castToReference(value); // Reference
1583          return value;
1584        case -1285004149: // quantity
1585          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
1586          return value;
1587        case -486196699: // unitPrice
1588          this.unitPrice = TypeConvertor.castToMoney(value); // Money
1589          return value;
1590        case 501116579: // facility
1591          this.facility = TypeConvertor.castToReference(value); // Reference
1592          return value;
1593        case 1196993265: // diagnosis
1594          this.getDiagnosis().add((DiagnosisComponent) value); // DiagnosisComponent
1595          return value;
1596        case -1335224239: // detail
1597          this.getDetail().add(TypeConvertor.castToReference(value)); // Reference
1598          return value;
1599        default: return super.setProperty(hash, name, value);
1600        }
1601
1602      }
1603
1604      @Override
1605      public Base setProperty(String name, Base value) throws FHIRException {
1606        if (name.equals("supportingInfoSequence")) {
1607          this.getSupportingInfoSequence().add(TypeConvertor.castToPositiveInt(value));
1608        } else if (name.equals("category")) {
1609          this.category = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1610        } else if (name.equals("productOrService")) {
1611          this.productOrService = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
1612        } else if (name.equals("modifier")) {
1613          this.getModifier().add(TypeConvertor.castToCodeableConcept(value));
1614        } else if (name.equals("provider")) {
1615          this.provider = TypeConvertor.castToReference(value); // Reference
1616        } else if (name.equals("quantity")) {
1617          this.quantity = TypeConvertor.castToQuantity(value); // Quantity
1618        } else if (name.equals("unitPrice")) {
1619          this.unitPrice = TypeConvertor.castToMoney(value); // Money
1620        } else if (name.equals("facility")) {
1621          this.facility = TypeConvertor.castToReference(value); // Reference
1622        } else if (name.equals("diagnosis")) {
1623          this.getDiagnosis().add((DiagnosisComponent) value);
1624        } else if (name.equals("detail")) {
1625          this.getDetail().add(TypeConvertor.castToReference(value));
1626        } else
1627          return super.setProperty(name, value);
1628        return value;
1629      }
1630
1631  @Override
1632  public void removeChild(String name, Base value) throws FHIRException {
1633        if (name.equals("supportingInfoSequence")) {
1634          this.getSupportingInfoSequence().remove(value);
1635        } else if (name.equals("category")) {
1636          this.category = null;
1637        } else if (name.equals("productOrService")) {
1638          this.productOrService = null;
1639        } else if (name.equals("modifier")) {
1640          this.getModifier().remove(value);
1641        } else if (name.equals("provider")) {
1642          this.provider = null;
1643        } else if (name.equals("quantity")) {
1644          this.quantity = null;
1645        } else if (name.equals("unitPrice")) {
1646          this.unitPrice = null;
1647        } else if (name.equals("facility")) {
1648          this.facility = null;
1649        } else if (name.equals("diagnosis")) {
1650          this.getDiagnosis().remove((DiagnosisComponent) value);
1651        } else if (name.equals("detail")) {
1652          this.getDetail().remove(value);
1653        } else
1654          super.removeChild(name, value);
1655        
1656      }
1657
1658      @Override
1659      public Base makeProperty(int hash, String name) throws FHIRException {
1660        switch (hash) {
1661        case -595860510:  return addSupportingInfoSequenceElement();
1662        case 50511102:  return getCategory();
1663        case 1957227299:  return getProductOrService();
1664        case -615513385:  return addModifier(); 
1665        case -987494927:  return getProvider();
1666        case -1285004149:  return getQuantity();
1667        case -486196699:  return getUnitPrice();
1668        case 501116579:  return getFacility();
1669        case 1196993265:  return addDiagnosis(); 
1670        case -1335224239:  return addDetail(); 
1671        default: return super.makeProperty(hash, name);
1672        }
1673
1674      }
1675
1676      @Override
1677      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1678        switch (hash) {
1679        case -595860510: /*supportingInfoSequence*/ return new String[] {"positiveInt"};
1680        case 50511102: /*category*/ return new String[] {"CodeableConcept"};
1681        case 1957227299: /*productOrService*/ return new String[] {"CodeableConcept"};
1682        case -615513385: /*modifier*/ return new String[] {"CodeableConcept"};
1683        case -987494927: /*provider*/ return new String[] {"Reference"};
1684        case -1285004149: /*quantity*/ return new String[] {"Quantity"};
1685        case -486196699: /*unitPrice*/ return new String[] {"Money"};
1686        case 501116579: /*facility*/ return new String[] {"Reference"};
1687        case 1196993265: /*diagnosis*/ return new String[] {};
1688        case -1335224239: /*detail*/ return new String[] {"Reference"};
1689        default: return super.getTypesForProperty(hash, name);
1690        }
1691
1692      }
1693
1694      @Override
1695      public Base addChild(String name) throws FHIRException {
1696        if (name.equals("supportingInfoSequence")) {
1697          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityRequest.item.supportingInfoSequence");
1698        }
1699        else if (name.equals("category")) {
1700          this.category = new CodeableConcept();
1701          return this.category;
1702        }
1703        else if (name.equals("productOrService")) {
1704          this.productOrService = new CodeableConcept();
1705          return this.productOrService;
1706        }
1707        else if (name.equals("modifier")) {
1708          return addModifier();
1709        }
1710        else if (name.equals("provider")) {
1711          this.provider = new Reference();
1712          return this.provider;
1713        }
1714        else if (name.equals("quantity")) {
1715          this.quantity = new Quantity();
1716          return this.quantity;
1717        }
1718        else if (name.equals("unitPrice")) {
1719          this.unitPrice = new Money();
1720          return this.unitPrice;
1721        }
1722        else if (name.equals("facility")) {
1723          this.facility = new Reference();
1724          return this.facility;
1725        }
1726        else if (name.equals("diagnosis")) {
1727          return addDiagnosis();
1728        }
1729        else if (name.equals("detail")) {
1730          return addDetail();
1731        }
1732        else
1733          return super.addChild(name);
1734      }
1735
1736      public DetailsComponent copy() {
1737        DetailsComponent dst = new DetailsComponent();
1738        copyValues(dst);
1739        return dst;
1740      }
1741
1742      public void copyValues(DetailsComponent dst) {
1743        super.copyValues(dst);
1744        if (supportingInfoSequence != null) {
1745          dst.supportingInfoSequence = new ArrayList<PositiveIntType>();
1746          for (PositiveIntType i : supportingInfoSequence)
1747            dst.supportingInfoSequence.add(i.copy());
1748        };
1749        dst.category = category == null ? null : category.copy();
1750        dst.productOrService = productOrService == null ? null : productOrService.copy();
1751        if (modifier != null) {
1752          dst.modifier = new ArrayList<CodeableConcept>();
1753          for (CodeableConcept i : modifier)
1754            dst.modifier.add(i.copy());
1755        };
1756        dst.provider = provider == null ? null : provider.copy();
1757        dst.quantity = quantity == null ? null : quantity.copy();
1758        dst.unitPrice = unitPrice == null ? null : unitPrice.copy();
1759        dst.facility = facility == null ? null : facility.copy();
1760        if (diagnosis != null) {
1761          dst.diagnosis = new ArrayList<DiagnosisComponent>();
1762          for (DiagnosisComponent i : diagnosis)
1763            dst.diagnosis.add(i.copy());
1764        };
1765        if (detail != null) {
1766          dst.detail = new ArrayList<Reference>();
1767          for (Reference i : detail)
1768            dst.detail.add(i.copy());
1769        };
1770      }
1771
1772      @Override
1773      public boolean equalsDeep(Base other_) {
1774        if (!super.equalsDeep(other_))
1775          return false;
1776        if (!(other_ instanceof DetailsComponent))
1777          return false;
1778        DetailsComponent o = (DetailsComponent) other_;
1779        return compareDeep(supportingInfoSequence, o.supportingInfoSequence, true) && compareDeep(category, o.category, true)
1780           && compareDeep(productOrService, o.productOrService, true) && compareDeep(modifier, o.modifier, true)
1781           && compareDeep(provider, o.provider, true) && compareDeep(quantity, o.quantity, true) && compareDeep(unitPrice, o.unitPrice, true)
1782           && compareDeep(facility, o.facility, true) && compareDeep(diagnosis, o.diagnosis, true) && compareDeep(detail, o.detail, true)
1783          ;
1784      }
1785
1786      @Override
1787      public boolean equalsShallow(Base other_) {
1788        if (!super.equalsShallow(other_))
1789          return false;
1790        if (!(other_ instanceof DetailsComponent))
1791          return false;
1792        DetailsComponent o = (DetailsComponent) other_;
1793        return compareValues(supportingInfoSequence, o.supportingInfoSequence, true);
1794      }
1795
1796      public boolean isEmpty() {
1797        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(supportingInfoSequence, category
1798          , productOrService, modifier, provider, quantity, unitPrice, facility, diagnosis
1799          , detail);
1800      }
1801
1802  public String fhirType() {
1803    return "CoverageEligibilityRequest.item";
1804
1805  }
1806
1807  }
1808
1809    @Block()
1810    public static class DiagnosisComponent extends BackboneElement implements IBaseBackboneElement {
1811        /**
1812         * The nature of illness or problem in a coded form or as a reference to an external defined Condition.
1813         */
1814        @Child(name = "diagnosis", type = {CodeableConcept.class, Condition.class}, order=1, min=0, max=1, modifier=false, summary=false)
1815        @Description(shortDefinition="Nature of illness or problem", formalDefinition="The nature of illness or problem in a coded form or as a reference to an external defined Condition." )
1816        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/icd-10")
1817        protected DataType diagnosis;
1818
1819        private static final long serialVersionUID = 947131409L;
1820
1821    /**
1822     * Constructor
1823     */
1824      public DiagnosisComponent() {
1825        super();
1826      }
1827
1828        /**
1829         * @return {@link #diagnosis} (The nature of illness or problem in a coded form or as a reference to an external defined Condition.)
1830         */
1831        public DataType getDiagnosis() { 
1832          return this.diagnosis;
1833        }
1834
1835        /**
1836         * @return {@link #diagnosis} (The nature of illness or problem in a coded form or as a reference to an external defined Condition.)
1837         */
1838        public CodeableConcept getDiagnosisCodeableConcept() throws FHIRException { 
1839          if (this.diagnosis == null)
1840            this.diagnosis = new CodeableConcept();
1841          if (!(this.diagnosis instanceof CodeableConcept))
1842            throw new FHIRException("Type mismatch: the type CodeableConcept was expected, but "+this.diagnosis.getClass().getName()+" was encountered");
1843          return (CodeableConcept) this.diagnosis;
1844        }
1845
1846        public boolean hasDiagnosisCodeableConcept() { 
1847          return this != null && this.diagnosis instanceof CodeableConcept;
1848        }
1849
1850        /**
1851         * @return {@link #diagnosis} (The nature of illness or problem in a coded form or as a reference to an external defined Condition.)
1852         */
1853        public Reference getDiagnosisReference() throws FHIRException { 
1854          if (this.diagnosis == null)
1855            this.diagnosis = new Reference();
1856          if (!(this.diagnosis instanceof Reference))
1857            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.diagnosis.getClass().getName()+" was encountered");
1858          return (Reference) this.diagnosis;
1859        }
1860
1861        public boolean hasDiagnosisReference() { 
1862          return this != null && this.diagnosis instanceof Reference;
1863        }
1864
1865        public boolean hasDiagnosis() { 
1866          return this.diagnosis != null && !this.diagnosis.isEmpty();
1867        }
1868
1869        /**
1870         * @param value {@link #diagnosis} (The nature of illness or problem in a coded form or as a reference to an external defined Condition.)
1871         */
1872        public DiagnosisComponent setDiagnosis(DataType value) { 
1873          if (value != null && !(value instanceof CodeableConcept || value instanceof Reference))
1874            throw new FHIRException("Not the right type for CoverageEligibilityRequest.item.diagnosis.diagnosis[x]: "+value.fhirType());
1875          this.diagnosis = value;
1876          return this;
1877        }
1878
1879        protected void listChildren(List<Property> children) {
1880          super.listChildren(children);
1881          children.add(new Property("diagnosis[x]", "CodeableConcept|Reference(Condition)", "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 1, diagnosis));
1882        }
1883
1884        @Override
1885        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
1886          switch (_hash) {
1887          case -1487009809: /*diagnosis[x]*/  return new Property("diagnosis[x]", "CodeableConcept|Reference(Condition)", "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 1, diagnosis);
1888          case 1196993265: /*diagnosis*/  return new Property("diagnosis[x]", "CodeableConcept|Reference(Condition)", "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 1, diagnosis);
1889          case 277781616: /*diagnosisCodeableConcept*/  return new Property("diagnosis[x]", "CodeableConcept", "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 1, diagnosis);
1890          case 2050454362: /*diagnosisReference*/  return new Property("diagnosis[x]", "Reference(Condition)", "The nature of illness or problem in a coded form or as a reference to an external defined Condition.", 0, 1, diagnosis);
1891          default: return super.getNamedProperty(_hash, _name, _checkValid);
1892          }
1893
1894        }
1895
1896      @Override
1897      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
1898        switch (hash) {
1899        case 1196993265: /*diagnosis*/ return this.diagnosis == null ? new Base[0] : new Base[] {this.diagnosis}; // DataType
1900        default: return super.getProperty(hash, name, checkValid);
1901        }
1902
1903      }
1904
1905      @Override
1906      public Base setProperty(int hash, String name, Base value) throws FHIRException {
1907        switch (hash) {
1908        case 1196993265: // diagnosis
1909          this.diagnosis = TypeConvertor.castToType(value); // DataType
1910          return value;
1911        default: return super.setProperty(hash, name, value);
1912        }
1913
1914      }
1915
1916      @Override
1917      public Base setProperty(String name, Base value) throws FHIRException {
1918        if (name.equals("diagnosis[x]")) {
1919          this.diagnosis = TypeConvertor.castToType(value); // DataType
1920        } else
1921          return super.setProperty(name, value);
1922        return value;
1923      }
1924
1925  @Override
1926  public void removeChild(String name, Base value) throws FHIRException {
1927        if (name.equals("diagnosis[x]")) {
1928          this.diagnosis = null;
1929        } else
1930          super.removeChild(name, value);
1931        
1932      }
1933
1934      @Override
1935      public Base makeProperty(int hash, String name) throws FHIRException {
1936        switch (hash) {
1937        case -1487009809:  return getDiagnosis();
1938        case 1196993265:  return getDiagnosis();
1939        default: return super.makeProperty(hash, name);
1940        }
1941
1942      }
1943
1944      @Override
1945      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
1946        switch (hash) {
1947        case 1196993265: /*diagnosis*/ return new String[] {"CodeableConcept", "Reference"};
1948        default: return super.getTypesForProperty(hash, name);
1949        }
1950
1951      }
1952
1953      @Override
1954      public Base addChild(String name) throws FHIRException {
1955        if (name.equals("diagnosisCodeableConcept")) {
1956          this.diagnosis = new CodeableConcept();
1957          return this.diagnosis;
1958        }
1959        else if (name.equals("diagnosisReference")) {
1960          this.diagnosis = new Reference();
1961          return this.diagnosis;
1962        }
1963        else
1964          return super.addChild(name);
1965      }
1966
1967      public DiagnosisComponent copy() {
1968        DiagnosisComponent dst = new DiagnosisComponent();
1969        copyValues(dst);
1970        return dst;
1971      }
1972
1973      public void copyValues(DiagnosisComponent dst) {
1974        super.copyValues(dst);
1975        dst.diagnosis = diagnosis == null ? null : diagnosis.copy();
1976      }
1977
1978      @Override
1979      public boolean equalsDeep(Base other_) {
1980        if (!super.equalsDeep(other_))
1981          return false;
1982        if (!(other_ instanceof DiagnosisComponent))
1983          return false;
1984        DiagnosisComponent o = (DiagnosisComponent) other_;
1985        return compareDeep(diagnosis, o.diagnosis, true);
1986      }
1987
1988      @Override
1989      public boolean equalsShallow(Base other_) {
1990        if (!super.equalsShallow(other_))
1991          return false;
1992        if (!(other_ instanceof DiagnosisComponent))
1993          return false;
1994        DiagnosisComponent o = (DiagnosisComponent) other_;
1995        return true;
1996      }
1997
1998      public boolean isEmpty() {
1999        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(diagnosis);
2000      }
2001
2002  public String fhirType() {
2003    return "CoverageEligibilityRequest.item.diagnosis";
2004
2005  }
2006
2007  }
2008
2009    /**
2010     * A unique identifier assigned to this coverage eligiblity request.
2011     */
2012    @Child(name = "identifier", type = {Identifier.class}, order=0, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2013    @Description(shortDefinition="Business Identifier for coverage eligiblity request", formalDefinition="A unique identifier assigned to this coverage eligiblity request." )
2014    protected List<Identifier> identifier;
2015
2016    /**
2017     * The status of the resource instance.
2018     */
2019    @Child(name = "status", type = {CodeType.class}, order=1, min=1, max=1, modifier=true, summary=true)
2020    @Description(shortDefinition="active | cancelled | draft | entered-in-error", formalDefinition="The status of the resource instance." )
2021    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/fm-status")
2022    protected Enumeration<FinancialResourceStatusCodes> status;
2023
2024    /**
2025     * When the requestor expects the processor to complete processing.
2026     */
2027    @Child(name = "priority", type = {CodeableConcept.class}, order=2, min=0, max=1, modifier=false, summary=false)
2028    @Description(shortDefinition="Desired processing priority", formalDefinition="When the requestor expects the processor to complete processing." )
2029    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/process-priority")
2030    protected CodeableConcept priority;
2031
2032    /**
2033     * Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified.
2034     */
2035    @Child(name = "purpose", type = {CodeType.class}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
2036    @Description(shortDefinition="auth-requirements | benefits | discovery | validation", formalDefinition="Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified." )
2037    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/eligibilityrequest-purpose")
2038    protected List<Enumeration<EligibilityRequestPurpose>> purpose;
2039
2040    /**
2041     * The party who is the beneficiary of the supplied coverage and for whom eligibility is sought.
2042     */
2043    @Child(name = "patient", type = {Patient.class}, order=4, min=1, max=1, modifier=false, summary=true)
2044    @Description(shortDefinition="Intended recipient of products and services", formalDefinition="The party who is the beneficiary of the supplied coverage and for whom eligibility is sought." )
2045    protected Reference patient;
2046
2047    /**
2048     * Information code for an event with a corresponding date or period.
2049     */
2050    @Child(name = "event", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2051    @Description(shortDefinition="Event information", formalDefinition="Information code for an event with a corresponding date or period." )
2052    protected List<CoverageEligibilityRequestEventComponent> event;
2053
2054    /**
2055     * The date or dates when the enclosed suite of services were performed or completed.
2056     */
2057    @Child(name = "serviced", type = {DateType.class, Period.class}, order=6, min=0, max=1, modifier=false, summary=false)
2058    @Description(shortDefinition="Estimated date or dates of service", formalDefinition="The date or dates when the enclosed suite of services were performed or completed." )
2059    protected DataType serviced;
2060
2061    /**
2062     * The date when this resource was created.
2063     */
2064    @Child(name = "created", type = {DateTimeType.class}, order=7, min=1, max=1, modifier=false, summary=true)
2065    @Description(shortDefinition="Creation date", formalDefinition="The date when this resource was created." )
2066    protected DateTimeType created;
2067
2068    /**
2069     * Person who created the request.
2070     */
2071    @Child(name = "enterer", type = {Practitioner.class, PractitionerRole.class}, order=8, min=0, max=1, modifier=false, summary=false)
2072    @Description(shortDefinition="Author", formalDefinition="Person who created the request." )
2073    protected Reference enterer;
2074
2075    /**
2076     * The provider which is responsible for the request.
2077     */
2078    @Child(name = "provider", type = {Practitioner.class, PractitionerRole.class, Organization.class}, order=9, min=0, max=1, modifier=false, summary=false)
2079    @Description(shortDefinition="Party responsible for the request", formalDefinition="The provider which is responsible for the request." )
2080    protected Reference provider;
2081
2082    /**
2083     * The Insurer who issued the coverage in question and is the recipient of the request.
2084     */
2085    @Child(name = "insurer", type = {Organization.class}, order=10, min=1, max=1, modifier=false, summary=true)
2086    @Description(shortDefinition="Coverage issuer", formalDefinition="The Insurer who issued the coverage in question and is the recipient of the request." )
2087    protected Reference insurer;
2088
2089    /**
2090     * Facility where the services are intended to be provided.
2091     */
2092    @Child(name = "facility", type = {Location.class}, order=11, min=0, max=1, modifier=false, summary=false)
2093    @Description(shortDefinition="Servicing facility", formalDefinition="Facility where the services are intended to be provided." )
2094    protected Reference facility;
2095
2096    /**
2097     * Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues.
2098     */
2099    @Child(name = "supportingInfo", type = {}, order=12, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2100    @Description(shortDefinition="Supporting information", formalDefinition="Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues." )
2101    protected List<SupportingInformationComponent> supportingInfo;
2102
2103    /**
2104     * Financial instruments for reimbursement for the health care products and services.
2105     */
2106    @Child(name = "insurance", type = {}, order=13, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2107    @Description(shortDefinition="Patient insurance information", formalDefinition="Financial instruments for reimbursement for the health care products and services." )
2108    protected List<InsuranceComponent> insurance;
2109
2110    /**
2111     * Service categories or billable services for which benefit details and/or an authorization prior to service delivery may be required by the payor.
2112     */
2113    @Child(name = "item", type = {}, order=14, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
2114    @Description(shortDefinition="Item to be evaluated for eligibiity", formalDefinition="Service categories or billable services for which benefit details and/or an authorization prior to service delivery may be required by the payor." )
2115    protected List<DetailsComponent> item;
2116
2117    private static final long serialVersionUID = 2008965302L;
2118
2119  /**
2120   * Constructor
2121   */
2122    public CoverageEligibilityRequest() {
2123      super();
2124    }
2125
2126  /**
2127   * Constructor
2128   */
2129    public CoverageEligibilityRequest(FinancialResourceStatusCodes status, EligibilityRequestPurpose purpose, Reference patient, Date created, Reference insurer) {
2130      super();
2131      this.setStatus(status);
2132      this.addPurpose(purpose);
2133      this.setPatient(patient);
2134      this.setCreated(created);
2135      this.setInsurer(insurer);
2136    }
2137
2138    /**
2139     * @return {@link #identifier} (A unique identifier assigned to this coverage eligiblity request.)
2140     */
2141    public List<Identifier> getIdentifier() { 
2142      if (this.identifier == null)
2143        this.identifier = new ArrayList<Identifier>();
2144      return this.identifier;
2145    }
2146
2147    /**
2148     * @return Returns a reference to <code>this</code> for easy method chaining
2149     */
2150    public CoverageEligibilityRequest setIdentifier(List<Identifier> theIdentifier) { 
2151      this.identifier = theIdentifier;
2152      return this;
2153    }
2154
2155    public boolean hasIdentifier() { 
2156      if (this.identifier == null)
2157        return false;
2158      for (Identifier item : this.identifier)
2159        if (!item.isEmpty())
2160          return true;
2161      return false;
2162    }
2163
2164    public Identifier addIdentifier() { //3
2165      Identifier t = new Identifier();
2166      if (this.identifier == null)
2167        this.identifier = new ArrayList<Identifier>();
2168      this.identifier.add(t);
2169      return t;
2170    }
2171
2172    public CoverageEligibilityRequest addIdentifier(Identifier t) { //3
2173      if (t == null)
2174        return this;
2175      if (this.identifier == null)
2176        this.identifier = new ArrayList<Identifier>();
2177      this.identifier.add(t);
2178      return this;
2179    }
2180
2181    /**
2182     * @return The first repetition of repeating field {@link #identifier}, creating it if it does not already exist {3}
2183     */
2184    public Identifier getIdentifierFirstRep() { 
2185      if (getIdentifier().isEmpty()) {
2186        addIdentifier();
2187      }
2188      return getIdentifier().get(0);
2189    }
2190
2191    /**
2192     * @return {@link #status} (The status of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2193     */
2194    public Enumeration<FinancialResourceStatusCodes> getStatusElement() { 
2195      if (this.status == null)
2196        if (Configuration.errorOnAutoCreate())
2197          throw new Error("Attempt to auto-create CoverageEligibilityRequest.status");
2198        else if (Configuration.doAutoCreate())
2199          this.status = new Enumeration<FinancialResourceStatusCodes>(new FinancialResourceStatusCodesEnumFactory()); // bb
2200      return this.status;
2201    }
2202
2203    public boolean hasStatusElement() { 
2204      return this.status != null && !this.status.isEmpty();
2205    }
2206
2207    public boolean hasStatus() { 
2208      return this.status != null && !this.status.isEmpty();
2209    }
2210
2211    /**
2212     * @param value {@link #status} (The status of the resource instance.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
2213     */
2214    public CoverageEligibilityRequest setStatusElement(Enumeration<FinancialResourceStatusCodes> value) { 
2215      this.status = value;
2216      return this;
2217    }
2218
2219    /**
2220     * @return The status of the resource instance.
2221     */
2222    public FinancialResourceStatusCodes getStatus() { 
2223      return this.status == null ? null : this.status.getValue();
2224    }
2225
2226    /**
2227     * @param value The status of the resource instance.
2228     */
2229    public CoverageEligibilityRequest setStatus(FinancialResourceStatusCodes value) { 
2230        if (this.status == null)
2231          this.status = new Enumeration<FinancialResourceStatusCodes>(new FinancialResourceStatusCodesEnumFactory());
2232        this.status.setValue(value);
2233      return this;
2234    }
2235
2236    /**
2237     * @return {@link #priority} (When the requestor expects the processor to complete processing.)
2238     */
2239    public CodeableConcept getPriority() { 
2240      if (this.priority == null)
2241        if (Configuration.errorOnAutoCreate())
2242          throw new Error("Attempt to auto-create CoverageEligibilityRequest.priority");
2243        else if (Configuration.doAutoCreate())
2244          this.priority = new CodeableConcept(); // cc
2245      return this.priority;
2246    }
2247
2248    public boolean hasPriority() { 
2249      return this.priority != null && !this.priority.isEmpty();
2250    }
2251
2252    /**
2253     * @param value {@link #priority} (When the requestor expects the processor to complete processing.)
2254     */
2255    public CoverageEligibilityRequest setPriority(CodeableConcept value) { 
2256      this.priority = value;
2257      return this;
2258    }
2259
2260    /**
2261     * @return {@link #purpose} (Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified.)
2262     */
2263    public List<Enumeration<EligibilityRequestPurpose>> getPurpose() { 
2264      if (this.purpose == null)
2265        this.purpose = new ArrayList<Enumeration<EligibilityRequestPurpose>>();
2266      return this.purpose;
2267    }
2268
2269    /**
2270     * @return Returns a reference to <code>this</code> for easy method chaining
2271     */
2272    public CoverageEligibilityRequest setPurpose(List<Enumeration<EligibilityRequestPurpose>> thePurpose) { 
2273      this.purpose = thePurpose;
2274      return this;
2275    }
2276
2277    public boolean hasPurpose() { 
2278      if (this.purpose == null)
2279        return false;
2280      for (Enumeration<EligibilityRequestPurpose> item : this.purpose)
2281        if (!item.isEmpty())
2282          return true;
2283      return false;
2284    }
2285
2286    /**
2287     * @return {@link #purpose} (Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified.)
2288     */
2289    public Enumeration<EligibilityRequestPurpose> addPurposeElement() {//2 
2290      Enumeration<EligibilityRequestPurpose> t = new Enumeration<EligibilityRequestPurpose>(new EligibilityRequestPurposeEnumFactory());
2291      if (this.purpose == null)
2292        this.purpose = new ArrayList<Enumeration<EligibilityRequestPurpose>>();
2293      this.purpose.add(t);
2294      return t;
2295    }
2296
2297    /**
2298     * @param value {@link #purpose} (Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified.)
2299     */
2300    public CoverageEligibilityRequest addPurpose(EligibilityRequestPurpose value) { //1
2301      Enumeration<EligibilityRequestPurpose> t = new Enumeration<EligibilityRequestPurpose>(new EligibilityRequestPurposeEnumFactory());
2302      t.setValue(value);
2303      if (this.purpose == null)
2304        this.purpose = new ArrayList<Enumeration<EligibilityRequestPurpose>>();
2305      this.purpose.add(t);
2306      return this;
2307    }
2308
2309    /**
2310     * @param value {@link #purpose} (Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified.)
2311     */
2312    public boolean hasPurpose(EligibilityRequestPurpose value) { 
2313      if (this.purpose == null)
2314        return false;
2315      for (Enumeration<EligibilityRequestPurpose> v : this.purpose)
2316        if (v.getValue().equals(value)) // code
2317          return true;
2318      return false;
2319    }
2320
2321    /**
2322     * @return {@link #patient} (The party who is the beneficiary of the supplied coverage and for whom eligibility is sought.)
2323     */
2324    public Reference getPatient() { 
2325      if (this.patient == null)
2326        if (Configuration.errorOnAutoCreate())
2327          throw new Error("Attempt to auto-create CoverageEligibilityRequest.patient");
2328        else if (Configuration.doAutoCreate())
2329          this.patient = new Reference(); // cc
2330      return this.patient;
2331    }
2332
2333    public boolean hasPatient() { 
2334      return this.patient != null && !this.patient.isEmpty();
2335    }
2336
2337    /**
2338     * @param value {@link #patient} (The party who is the beneficiary of the supplied coverage and for whom eligibility is sought.)
2339     */
2340    public CoverageEligibilityRequest setPatient(Reference value) { 
2341      this.patient = value;
2342      return this;
2343    }
2344
2345    /**
2346     * @return {@link #event} (Information code for an event with a corresponding date or period.)
2347     */
2348    public List<CoverageEligibilityRequestEventComponent> getEvent() { 
2349      if (this.event == null)
2350        this.event = new ArrayList<CoverageEligibilityRequestEventComponent>();
2351      return this.event;
2352    }
2353
2354    /**
2355     * @return Returns a reference to <code>this</code> for easy method chaining
2356     */
2357    public CoverageEligibilityRequest setEvent(List<CoverageEligibilityRequestEventComponent> theEvent) { 
2358      this.event = theEvent;
2359      return this;
2360    }
2361
2362    public boolean hasEvent() { 
2363      if (this.event == null)
2364        return false;
2365      for (CoverageEligibilityRequestEventComponent item : this.event)
2366        if (!item.isEmpty())
2367          return true;
2368      return false;
2369    }
2370
2371    public CoverageEligibilityRequestEventComponent addEvent() { //3
2372      CoverageEligibilityRequestEventComponent t = new CoverageEligibilityRequestEventComponent();
2373      if (this.event == null)
2374        this.event = new ArrayList<CoverageEligibilityRequestEventComponent>();
2375      this.event.add(t);
2376      return t;
2377    }
2378
2379    public CoverageEligibilityRequest addEvent(CoverageEligibilityRequestEventComponent t) { //3
2380      if (t == null)
2381        return this;
2382      if (this.event == null)
2383        this.event = new ArrayList<CoverageEligibilityRequestEventComponent>();
2384      this.event.add(t);
2385      return this;
2386    }
2387
2388    /**
2389     * @return The first repetition of repeating field {@link #event}, creating it if it does not already exist {3}
2390     */
2391    public CoverageEligibilityRequestEventComponent getEventFirstRep() { 
2392      if (getEvent().isEmpty()) {
2393        addEvent();
2394      }
2395      return getEvent().get(0);
2396    }
2397
2398    /**
2399     * @return {@link #serviced} (The date or dates when the enclosed suite of services were performed or completed.)
2400     */
2401    public DataType getServiced() { 
2402      return this.serviced;
2403    }
2404
2405    /**
2406     * @return {@link #serviced} (The date or dates when the enclosed suite of services were performed or completed.)
2407     */
2408    public DateType getServicedDateType() throws FHIRException { 
2409      if (this.serviced == null)
2410        this.serviced = new DateType();
2411      if (!(this.serviced instanceof DateType))
2412        throw new FHIRException("Type mismatch: the type DateType was expected, but "+this.serviced.getClass().getName()+" was encountered");
2413      return (DateType) this.serviced;
2414    }
2415
2416    public boolean hasServicedDateType() { 
2417      return this != null && this.serviced instanceof DateType;
2418    }
2419
2420    /**
2421     * @return {@link #serviced} (The date or dates when the enclosed suite of services were performed or completed.)
2422     */
2423    public Period getServicedPeriod() throws FHIRException { 
2424      if (this.serviced == null)
2425        this.serviced = new Period();
2426      if (!(this.serviced instanceof Period))
2427        throw new FHIRException("Type mismatch: the type Period was expected, but "+this.serviced.getClass().getName()+" was encountered");
2428      return (Period) this.serviced;
2429    }
2430
2431    public boolean hasServicedPeriod() { 
2432      return this != null && this.serviced instanceof Period;
2433    }
2434
2435    public boolean hasServiced() { 
2436      return this.serviced != null && !this.serviced.isEmpty();
2437    }
2438
2439    /**
2440     * @param value {@link #serviced} (The date or dates when the enclosed suite of services were performed or completed.)
2441     */
2442    public CoverageEligibilityRequest setServiced(DataType value) { 
2443      if (value != null && !(value instanceof DateType || value instanceof Period))
2444        throw new FHIRException("Not the right type for CoverageEligibilityRequest.serviced[x]: "+value.fhirType());
2445      this.serviced = value;
2446      return this;
2447    }
2448
2449    /**
2450     * @return {@link #created} (The date when this resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
2451     */
2452    public DateTimeType getCreatedElement() { 
2453      if (this.created == null)
2454        if (Configuration.errorOnAutoCreate())
2455          throw new Error("Attempt to auto-create CoverageEligibilityRequest.created");
2456        else if (Configuration.doAutoCreate())
2457          this.created = new DateTimeType(); // bb
2458      return this.created;
2459    }
2460
2461    public boolean hasCreatedElement() { 
2462      return this.created != null && !this.created.isEmpty();
2463    }
2464
2465    public boolean hasCreated() { 
2466      return this.created != null && !this.created.isEmpty();
2467    }
2468
2469    /**
2470     * @param value {@link #created} (The date when this resource was created.). This is the underlying object with id, value and extensions. The accessor "getCreated" gives direct access to the value
2471     */
2472    public CoverageEligibilityRequest setCreatedElement(DateTimeType value) { 
2473      this.created = value;
2474      return this;
2475    }
2476
2477    /**
2478     * @return The date when this resource was created.
2479     */
2480    public Date getCreated() { 
2481      return this.created == null ? null : this.created.getValue();
2482    }
2483
2484    /**
2485     * @param value The date when this resource was created.
2486     */
2487    public CoverageEligibilityRequest setCreated(Date value) { 
2488        if (this.created == null)
2489          this.created = new DateTimeType();
2490        this.created.setValue(value);
2491      return this;
2492    }
2493
2494    /**
2495     * @return {@link #enterer} (Person who created the request.)
2496     */
2497    public Reference getEnterer() { 
2498      if (this.enterer == null)
2499        if (Configuration.errorOnAutoCreate())
2500          throw new Error("Attempt to auto-create CoverageEligibilityRequest.enterer");
2501        else if (Configuration.doAutoCreate())
2502          this.enterer = new Reference(); // cc
2503      return this.enterer;
2504    }
2505
2506    public boolean hasEnterer() { 
2507      return this.enterer != null && !this.enterer.isEmpty();
2508    }
2509
2510    /**
2511     * @param value {@link #enterer} (Person who created the request.)
2512     */
2513    public CoverageEligibilityRequest setEnterer(Reference value) { 
2514      this.enterer = value;
2515      return this;
2516    }
2517
2518    /**
2519     * @return {@link #provider} (The provider which is responsible for the request.)
2520     */
2521    public Reference getProvider() { 
2522      if (this.provider == null)
2523        if (Configuration.errorOnAutoCreate())
2524          throw new Error("Attempt to auto-create CoverageEligibilityRequest.provider");
2525        else if (Configuration.doAutoCreate())
2526          this.provider = new Reference(); // cc
2527      return this.provider;
2528    }
2529
2530    public boolean hasProvider() { 
2531      return this.provider != null && !this.provider.isEmpty();
2532    }
2533
2534    /**
2535     * @param value {@link #provider} (The provider which is responsible for the request.)
2536     */
2537    public CoverageEligibilityRequest setProvider(Reference value) { 
2538      this.provider = value;
2539      return this;
2540    }
2541
2542    /**
2543     * @return {@link #insurer} (The Insurer who issued the coverage in question and is the recipient of the request.)
2544     */
2545    public Reference getInsurer() { 
2546      if (this.insurer == null)
2547        if (Configuration.errorOnAutoCreate())
2548          throw new Error("Attempt to auto-create CoverageEligibilityRequest.insurer");
2549        else if (Configuration.doAutoCreate())
2550          this.insurer = new Reference(); // cc
2551      return this.insurer;
2552    }
2553
2554    public boolean hasInsurer() { 
2555      return this.insurer != null && !this.insurer.isEmpty();
2556    }
2557
2558    /**
2559     * @param value {@link #insurer} (The Insurer who issued the coverage in question and is the recipient of the request.)
2560     */
2561    public CoverageEligibilityRequest setInsurer(Reference value) { 
2562      this.insurer = value;
2563      return this;
2564    }
2565
2566    /**
2567     * @return {@link #facility} (Facility where the services are intended to be provided.)
2568     */
2569    public Reference getFacility() { 
2570      if (this.facility == null)
2571        if (Configuration.errorOnAutoCreate())
2572          throw new Error("Attempt to auto-create CoverageEligibilityRequest.facility");
2573        else if (Configuration.doAutoCreate())
2574          this.facility = new Reference(); // cc
2575      return this.facility;
2576    }
2577
2578    public boolean hasFacility() { 
2579      return this.facility != null && !this.facility.isEmpty();
2580    }
2581
2582    /**
2583     * @param value {@link #facility} (Facility where the services are intended to be provided.)
2584     */
2585    public CoverageEligibilityRequest setFacility(Reference value) { 
2586      this.facility = value;
2587      return this;
2588    }
2589
2590    /**
2591     * @return {@link #supportingInfo} (Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues.)
2592     */
2593    public List<SupportingInformationComponent> getSupportingInfo() { 
2594      if (this.supportingInfo == null)
2595        this.supportingInfo = new ArrayList<SupportingInformationComponent>();
2596      return this.supportingInfo;
2597    }
2598
2599    /**
2600     * @return Returns a reference to <code>this</code> for easy method chaining
2601     */
2602    public CoverageEligibilityRequest setSupportingInfo(List<SupportingInformationComponent> theSupportingInfo) { 
2603      this.supportingInfo = theSupportingInfo;
2604      return this;
2605    }
2606
2607    public boolean hasSupportingInfo() { 
2608      if (this.supportingInfo == null)
2609        return false;
2610      for (SupportingInformationComponent item : this.supportingInfo)
2611        if (!item.isEmpty())
2612          return true;
2613      return false;
2614    }
2615
2616    public SupportingInformationComponent addSupportingInfo() { //3
2617      SupportingInformationComponent t = new SupportingInformationComponent();
2618      if (this.supportingInfo == null)
2619        this.supportingInfo = new ArrayList<SupportingInformationComponent>();
2620      this.supportingInfo.add(t);
2621      return t;
2622    }
2623
2624    public CoverageEligibilityRequest addSupportingInfo(SupportingInformationComponent t) { //3
2625      if (t == null)
2626        return this;
2627      if (this.supportingInfo == null)
2628        this.supportingInfo = new ArrayList<SupportingInformationComponent>();
2629      this.supportingInfo.add(t);
2630      return this;
2631    }
2632
2633    /**
2634     * @return The first repetition of repeating field {@link #supportingInfo}, creating it if it does not already exist {3}
2635     */
2636    public SupportingInformationComponent getSupportingInfoFirstRep() { 
2637      if (getSupportingInfo().isEmpty()) {
2638        addSupportingInfo();
2639      }
2640      return getSupportingInfo().get(0);
2641    }
2642
2643    /**
2644     * @return {@link #insurance} (Financial instruments for reimbursement for the health care products and services.)
2645     */
2646    public List<InsuranceComponent> getInsurance() { 
2647      if (this.insurance == null)
2648        this.insurance = new ArrayList<InsuranceComponent>();
2649      return this.insurance;
2650    }
2651
2652    /**
2653     * @return Returns a reference to <code>this</code> for easy method chaining
2654     */
2655    public CoverageEligibilityRequest setInsurance(List<InsuranceComponent> theInsurance) { 
2656      this.insurance = theInsurance;
2657      return this;
2658    }
2659
2660    public boolean hasInsurance() { 
2661      if (this.insurance == null)
2662        return false;
2663      for (InsuranceComponent item : this.insurance)
2664        if (!item.isEmpty())
2665          return true;
2666      return false;
2667    }
2668
2669    public InsuranceComponent addInsurance() { //3
2670      InsuranceComponent t = new InsuranceComponent();
2671      if (this.insurance == null)
2672        this.insurance = new ArrayList<InsuranceComponent>();
2673      this.insurance.add(t);
2674      return t;
2675    }
2676
2677    public CoverageEligibilityRequest addInsurance(InsuranceComponent t) { //3
2678      if (t == null)
2679        return this;
2680      if (this.insurance == null)
2681        this.insurance = new ArrayList<InsuranceComponent>();
2682      this.insurance.add(t);
2683      return this;
2684    }
2685
2686    /**
2687     * @return The first repetition of repeating field {@link #insurance}, creating it if it does not already exist {3}
2688     */
2689    public InsuranceComponent getInsuranceFirstRep() { 
2690      if (getInsurance().isEmpty()) {
2691        addInsurance();
2692      }
2693      return getInsurance().get(0);
2694    }
2695
2696    /**
2697     * @return {@link #item} (Service categories or billable services for which benefit details and/or an authorization prior to service delivery may be required by the payor.)
2698     */
2699    public List<DetailsComponent> getItem() { 
2700      if (this.item == null)
2701        this.item = new ArrayList<DetailsComponent>();
2702      return this.item;
2703    }
2704
2705    /**
2706     * @return Returns a reference to <code>this</code> for easy method chaining
2707     */
2708    public CoverageEligibilityRequest setItem(List<DetailsComponent> theItem) { 
2709      this.item = theItem;
2710      return this;
2711    }
2712
2713    public boolean hasItem() { 
2714      if (this.item == null)
2715        return false;
2716      for (DetailsComponent item : this.item)
2717        if (!item.isEmpty())
2718          return true;
2719      return false;
2720    }
2721
2722    public DetailsComponent addItem() { //3
2723      DetailsComponent t = new DetailsComponent();
2724      if (this.item == null)
2725        this.item = new ArrayList<DetailsComponent>();
2726      this.item.add(t);
2727      return t;
2728    }
2729
2730    public CoverageEligibilityRequest addItem(DetailsComponent t) { //3
2731      if (t == null)
2732        return this;
2733      if (this.item == null)
2734        this.item = new ArrayList<DetailsComponent>();
2735      this.item.add(t);
2736      return this;
2737    }
2738
2739    /**
2740     * @return The first repetition of repeating field {@link #item}, creating it if it does not already exist {3}
2741     */
2742    public DetailsComponent getItemFirstRep() { 
2743      if (getItem().isEmpty()) {
2744        addItem();
2745      }
2746      return getItem().get(0);
2747    }
2748
2749      protected void listChildren(List<Property> children) {
2750        super.listChildren(children);
2751        children.add(new Property("identifier", "Identifier", "A unique identifier assigned to this coverage eligiblity request.", 0, java.lang.Integer.MAX_VALUE, identifier));
2752        children.add(new Property("status", "code", "The status of the resource instance.", 0, 1, status));
2753        children.add(new Property("priority", "CodeableConcept", "When the requestor expects the processor to complete processing.", 0, 1, priority));
2754        children.add(new Property("purpose", "code", "Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified.", 0, java.lang.Integer.MAX_VALUE, purpose));
2755        children.add(new Property("patient", "Reference(Patient)", "The party who is the beneficiary of the supplied coverage and for whom eligibility is sought.", 0, 1, patient));
2756        children.add(new Property("event", "", "Information code for an event with a corresponding date or period.", 0, java.lang.Integer.MAX_VALUE, event));
2757        children.add(new Property("serviced[x]", "date|Period", "The date or dates when the enclosed suite of services were performed or completed.", 0, 1, serviced));
2758        children.add(new Property("created", "dateTime", "The date when this resource was created.", 0, 1, created));
2759        children.add(new Property("enterer", "Reference(Practitioner|PractitionerRole)", "Person who created the request.", 0, 1, enterer));
2760        children.add(new Property("provider", "Reference(Practitioner|PractitionerRole|Organization)", "The provider which is responsible for the request.", 0, 1, provider));
2761        children.add(new Property("insurer", "Reference(Organization)", "The Insurer who issued the coverage in question and is the recipient of the request.", 0, 1, insurer));
2762        children.add(new Property("facility", "Reference(Location)", "Facility where the services are intended to be provided.", 0, 1, facility));
2763        children.add(new Property("supportingInfo", "", "Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues.", 0, java.lang.Integer.MAX_VALUE, supportingInfo));
2764        children.add(new Property("insurance", "", "Financial instruments for reimbursement for the health care products and services.", 0, java.lang.Integer.MAX_VALUE, insurance));
2765        children.add(new Property("item", "", "Service categories or billable services for which benefit details and/or an authorization prior to service delivery may be required by the payor.", 0, java.lang.Integer.MAX_VALUE, item));
2766      }
2767
2768      @Override
2769      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
2770        switch (_hash) {
2771        case -1618432855: /*identifier*/  return new Property("identifier", "Identifier", "A unique identifier assigned to this coverage eligiblity request.", 0, java.lang.Integer.MAX_VALUE, identifier);
2772        case -892481550: /*status*/  return new Property("status", "code", "The status of the resource instance.", 0, 1, status);
2773        case -1165461084: /*priority*/  return new Property("priority", "CodeableConcept", "When the requestor expects the processor to complete processing.", 0, 1, priority);
2774        case -220463842: /*purpose*/  return new Property("purpose", "code", "Code to specify whether requesting: prior authorization requirements for some service categories or billing codes; benefits for coverages specified or discovered; discovery and return of coverages for the patient; and/or validation that the specified coverage is in-force at the date/period specified or 'now' if not specified.", 0, java.lang.Integer.MAX_VALUE, purpose);
2775        case -791418107: /*patient*/  return new Property("patient", "Reference(Patient)", "The party who is the beneficiary of the supplied coverage and for whom eligibility is sought.", 0, 1, patient);
2776        case 96891546: /*event*/  return new Property("event", "", "Information code for an event with a corresponding date or period.", 0, java.lang.Integer.MAX_VALUE, event);
2777        case -1927922223: /*serviced[x]*/  return new Property("serviced[x]", "date|Period", "The date or dates when the enclosed suite of services were performed or completed.", 0, 1, serviced);
2778        case 1379209295: /*serviced*/  return new Property("serviced[x]", "date|Period", "The date or dates when the enclosed suite of services were performed or completed.", 0, 1, serviced);
2779        case 363246749: /*servicedDate*/  return new Property("serviced[x]", "date", "The date or dates when the enclosed suite of services were performed or completed.", 0, 1, serviced);
2780        case 1534966512: /*servicedPeriod*/  return new Property("serviced[x]", "Period", "The date or dates when the enclosed suite of services were performed or completed.", 0, 1, serviced);
2781        case 1028554472: /*created*/  return new Property("created", "dateTime", "The date when this resource was created.", 0, 1, created);
2782        case -1591951995: /*enterer*/  return new Property("enterer", "Reference(Practitioner|PractitionerRole)", "Person who created the request.", 0, 1, enterer);
2783        case -987494927: /*provider*/  return new Property("provider", "Reference(Practitioner|PractitionerRole|Organization)", "The provider which is responsible for the request.", 0, 1, provider);
2784        case 1957615864: /*insurer*/  return new Property("insurer", "Reference(Organization)", "The Insurer who issued the coverage in question and is the recipient of the request.", 0, 1, insurer);
2785        case 501116579: /*facility*/  return new Property("facility", "Reference(Location)", "Facility where the services are intended to be provided.", 0, 1, facility);
2786        case 1922406657: /*supportingInfo*/  return new Property("supportingInfo", "", "Additional information codes regarding exceptions, special considerations, the condition, situation, prior or concurrent issues.", 0, java.lang.Integer.MAX_VALUE, supportingInfo);
2787        case 73049818: /*insurance*/  return new Property("insurance", "", "Financial instruments for reimbursement for the health care products and services.", 0, java.lang.Integer.MAX_VALUE, insurance);
2788        case 3242771: /*item*/  return new Property("item", "", "Service categories or billable services for which benefit details and/or an authorization prior to service delivery may be required by the payor.", 0, java.lang.Integer.MAX_VALUE, item);
2789        default: return super.getNamedProperty(_hash, _name, _checkValid);
2790        }
2791
2792      }
2793
2794      @Override
2795      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
2796        switch (hash) {
2797        case -1618432855: /*identifier*/ return this.identifier == null ? new Base[0] : this.identifier.toArray(new Base[this.identifier.size()]); // Identifier
2798        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<FinancialResourceStatusCodes>
2799        case -1165461084: /*priority*/ return this.priority == null ? new Base[0] : new Base[] {this.priority}; // CodeableConcept
2800        case -220463842: /*purpose*/ return this.purpose == null ? new Base[0] : this.purpose.toArray(new Base[this.purpose.size()]); // Enumeration<EligibilityRequestPurpose>
2801        case -791418107: /*patient*/ return this.patient == null ? new Base[0] : new Base[] {this.patient}; // Reference
2802        case 96891546: /*event*/ return this.event == null ? new Base[0] : this.event.toArray(new Base[this.event.size()]); // CoverageEligibilityRequestEventComponent
2803        case 1379209295: /*serviced*/ return this.serviced == null ? new Base[0] : new Base[] {this.serviced}; // DataType
2804        case 1028554472: /*created*/ return this.created == null ? new Base[0] : new Base[] {this.created}; // DateTimeType
2805        case -1591951995: /*enterer*/ return this.enterer == null ? new Base[0] : new Base[] {this.enterer}; // Reference
2806        case -987494927: /*provider*/ return this.provider == null ? new Base[0] : new Base[] {this.provider}; // Reference
2807        case 1957615864: /*insurer*/ return this.insurer == null ? new Base[0] : new Base[] {this.insurer}; // Reference
2808        case 501116579: /*facility*/ return this.facility == null ? new Base[0] : new Base[] {this.facility}; // Reference
2809        case 1922406657: /*supportingInfo*/ return this.supportingInfo == null ? new Base[0] : this.supportingInfo.toArray(new Base[this.supportingInfo.size()]); // SupportingInformationComponent
2810        case 73049818: /*insurance*/ return this.insurance == null ? new Base[0] : this.insurance.toArray(new Base[this.insurance.size()]); // InsuranceComponent
2811        case 3242771: /*item*/ return this.item == null ? new Base[0] : this.item.toArray(new Base[this.item.size()]); // DetailsComponent
2812        default: return super.getProperty(hash, name, checkValid);
2813        }
2814
2815      }
2816
2817      @Override
2818      public Base setProperty(int hash, String name, Base value) throws FHIRException {
2819        switch (hash) {
2820        case -1618432855: // identifier
2821          this.getIdentifier().add(TypeConvertor.castToIdentifier(value)); // Identifier
2822          return value;
2823        case -892481550: // status
2824          value = new FinancialResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2825          this.status = (Enumeration) value; // Enumeration<FinancialResourceStatusCodes>
2826          return value;
2827        case -1165461084: // priority
2828          this.priority = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2829          return value;
2830        case -220463842: // purpose
2831          value = new EligibilityRequestPurposeEnumFactory().fromType(TypeConvertor.castToCode(value));
2832          this.getPurpose().add((Enumeration) value); // Enumeration<EligibilityRequestPurpose>
2833          return value;
2834        case -791418107: // patient
2835          this.patient = TypeConvertor.castToReference(value); // Reference
2836          return value;
2837        case 96891546: // event
2838          this.getEvent().add((CoverageEligibilityRequestEventComponent) value); // CoverageEligibilityRequestEventComponent
2839          return value;
2840        case 1379209295: // serviced
2841          this.serviced = TypeConvertor.castToType(value); // DataType
2842          return value;
2843        case 1028554472: // created
2844          this.created = TypeConvertor.castToDateTime(value); // DateTimeType
2845          return value;
2846        case -1591951995: // enterer
2847          this.enterer = TypeConvertor.castToReference(value); // Reference
2848          return value;
2849        case -987494927: // provider
2850          this.provider = TypeConvertor.castToReference(value); // Reference
2851          return value;
2852        case 1957615864: // insurer
2853          this.insurer = TypeConvertor.castToReference(value); // Reference
2854          return value;
2855        case 501116579: // facility
2856          this.facility = TypeConvertor.castToReference(value); // Reference
2857          return value;
2858        case 1922406657: // supportingInfo
2859          this.getSupportingInfo().add((SupportingInformationComponent) value); // SupportingInformationComponent
2860          return value;
2861        case 73049818: // insurance
2862          this.getInsurance().add((InsuranceComponent) value); // InsuranceComponent
2863          return value;
2864        case 3242771: // item
2865          this.getItem().add((DetailsComponent) value); // DetailsComponent
2866          return value;
2867        default: return super.setProperty(hash, name, value);
2868        }
2869
2870      }
2871
2872      @Override
2873      public Base setProperty(String name, Base value) throws FHIRException {
2874        if (name.equals("identifier")) {
2875          this.getIdentifier().add(TypeConvertor.castToIdentifier(value));
2876        } else if (name.equals("status")) {
2877          value = new FinancialResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2878          this.status = (Enumeration) value; // Enumeration<FinancialResourceStatusCodes>
2879        } else if (name.equals("priority")) {
2880          this.priority = TypeConvertor.castToCodeableConcept(value); // CodeableConcept
2881        } else if (name.equals("purpose")) {
2882          value = new EligibilityRequestPurposeEnumFactory().fromType(TypeConvertor.castToCode(value));
2883          this.getPurpose().add((Enumeration) value);
2884        } else if (name.equals("patient")) {
2885          this.patient = TypeConvertor.castToReference(value); // Reference
2886        } else if (name.equals("event")) {
2887          this.getEvent().add((CoverageEligibilityRequestEventComponent) value);
2888        } else if (name.equals("serviced[x]")) {
2889          this.serviced = TypeConvertor.castToType(value); // DataType
2890        } else if (name.equals("created")) {
2891          this.created = TypeConvertor.castToDateTime(value); // DateTimeType
2892        } else if (name.equals("enterer")) {
2893          this.enterer = TypeConvertor.castToReference(value); // Reference
2894        } else if (name.equals("provider")) {
2895          this.provider = TypeConvertor.castToReference(value); // Reference
2896        } else if (name.equals("insurer")) {
2897          this.insurer = TypeConvertor.castToReference(value); // Reference
2898        } else if (name.equals("facility")) {
2899          this.facility = TypeConvertor.castToReference(value); // Reference
2900        } else if (name.equals("supportingInfo")) {
2901          this.getSupportingInfo().add((SupportingInformationComponent) value);
2902        } else if (name.equals("insurance")) {
2903          this.getInsurance().add((InsuranceComponent) value);
2904        } else if (name.equals("item")) {
2905          this.getItem().add((DetailsComponent) value);
2906        } else
2907          return super.setProperty(name, value);
2908        return value;
2909      }
2910
2911  @Override
2912  public void removeChild(String name, Base value) throws FHIRException {
2913        if (name.equals("identifier")) {
2914          this.getIdentifier().remove(value);
2915        } else if (name.equals("status")) {
2916          value = new FinancialResourceStatusCodesEnumFactory().fromType(TypeConvertor.castToCode(value));
2917          this.status = (Enumeration) value; // Enumeration<FinancialResourceStatusCodes>
2918        } else if (name.equals("priority")) {
2919          this.priority = null;
2920        } else if (name.equals("purpose")) {
2921          value = new EligibilityRequestPurposeEnumFactory().fromType(TypeConvertor.castToCode(value));
2922          this.getPurpose().remove((Enumeration) value);
2923        } else if (name.equals("patient")) {
2924          this.patient = null;
2925        } else if (name.equals("event")) {
2926          this.getEvent().remove((CoverageEligibilityRequestEventComponent) value);
2927        } else if (name.equals("serviced[x]")) {
2928          this.serviced = null;
2929        } else if (name.equals("created")) {
2930          this.created = null;
2931        } else if (name.equals("enterer")) {
2932          this.enterer = null;
2933        } else if (name.equals("provider")) {
2934          this.provider = null;
2935        } else if (name.equals("insurer")) {
2936          this.insurer = null;
2937        } else if (name.equals("facility")) {
2938          this.facility = null;
2939        } else if (name.equals("supportingInfo")) {
2940          this.getSupportingInfo().remove((SupportingInformationComponent) value);
2941        } else if (name.equals("insurance")) {
2942          this.getInsurance().remove((InsuranceComponent) value);
2943        } else if (name.equals("item")) {
2944          this.getItem().remove((DetailsComponent) value);
2945        } else
2946          super.removeChild(name, value);
2947        
2948      }
2949
2950      @Override
2951      public Base makeProperty(int hash, String name) throws FHIRException {
2952        switch (hash) {
2953        case -1618432855:  return addIdentifier(); 
2954        case -892481550:  return getStatusElement();
2955        case -1165461084:  return getPriority();
2956        case -220463842:  return addPurposeElement();
2957        case -791418107:  return getPatient();
2958        case 96891546:  return addEvent(); 
2959        case -1927922223:  return getServiced();
2960        case 1379209295:  return getServiced();
2961        case 1028554472:  return getCreatedElement();
2962        case -1591951995:  return getEnterer();
2963        case -987494927:  return getProvider();
2964        case 1957615864:  return getInsurer();
2965        case 501116579:  return getFacility();
2966        case 1922406657:  return addSupportingInfo(); 
2967        case 73049818:  return addInsurance(); 
2968        case 3242771:  return addItem(); 
2969        default: return super.makeProperty(hash, name);
2970        }
2971
2972      }
2973
2974      @Override
2975      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
2976        switch (hash) {
2977        case -1618432855: /*identifier*/ return new String[] {"Identifier"};
2978        case -892481550: /*status*/ return new String[] {"code"};
2979        case -1165461084: /*priority*/ return new String[] {"CodeableConcept"};
2980        case -220463842: /*purpose*/ return new String[] {"code"};
2981        case -791418107: /*patient*/ return new String[] {"Reference"};
2982        case 96891546: /*event*/ return new String[] {};
2983        case 1379209295: /*serviced*/ return new String[] {"date", "Period"};
2984        case 1028554472: /*created*/ return new String[] {"dateTime"};
2985        case -1591951995: /*enterer*/ return new String[] {"Reference"};
2986        case -987494927: /*provider*/ return new String[] {"Reference"};
2987        case 1957615864: /*insurer*/ return new String[] {"Reference"};
2988        case 501116579: /*facility*/ return new String[] {"Reference"};
2989        case 1922406657: /*supportingInfo*/ return new String[] {};
2990        case 73049818: /*insurance*/ return new String[] {};
2991        case 3242771: /*item*/ return new String[] {};
2992        default: return super.getTypesForProperty(hash, name);
2993        }
2994
2995      }
2996
2997      @Override
2998      public Base addChild(String name) throws FHIRException {
2999        if (name.equals("identifier")) {
3000          return addIdentifier();
3001        }
3002        else if (name.equals("status")) {
3003          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityRequest.status");
3004        }
3005        else if (name.equals("priority")) {
3006          this.priority = new CodeableConcept();
3007          return this.priority;
3008        }
3009        else if (name.equals("purpose")) {
3010          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityRequest.purpose");
3011        }
3012        else if (name.equals("patient")) {
3013          this.patient = new Reference();
3014          return this.patient;
3015        }
3016        else if (name.equals("event")) {
3017          return addEvent();
3018        }
3019        else if (name.equals("servicedDate")) {
3020          this.serviced = new DateType();
3021          return this.serviced;
3022        }
3023        else if (name.equals("servicedPeriod")) {
3024          this.serviced = new Period();
3025          return this.serviced;
3026        }
3027        else if (name.equals("created")) {
3028          throw new FHIRException("Cannot call addChild on a singleton property CoverageEligibilityRequest.created");
3029        }
3030        else if (name.equals("enterer")) {
3031          this.enterer = new Reference();
3032          return this.enterer;
3033        }
3034        else if (name.equals("provider")) {
3035          this.provider = new Reference();
3036          return this.provider;
3037        }
3038        else if (name.equals("insurer")) {
3039          this.insurer = new Reference();
3040          return this.insurer;
3041        }
3042        else if (name.equals("facility")) {
3043          this.facility = new Reference();
3044          return this.facility;
3045        }
3046        else if (name.equals("supportingInfo")) {
3047          return addSupportingInfo();
3048        }
3049        else if (name.equals("insurance")) {
3050          return addInsurance();
3051        }
3052        else if (name.equals("item")) {
3053          return addItem();
3054        }
3055        else
3056          return super.addChild(name);
3057      }
3058
3059  public String fhirType() {
3060    return "CoverageEligibilityRequest";
3061
3062  }
3063
3064      public CoverageEligibilityRequest copy() {
3065        CoverageEligibilityRequest dst = new CoverageEligibilityRequest();
3066        copyValues(dst);
3067        return dst;
3068      }
3069
3070      public void copyValues(CoverageEligibilityRequest dst) {
3071        super.copyValues(dst);
3072        if (identifier != null) {
3073          dst.identifier = new ArrayList<Identifier>();
3074          for (Identifier i : identifier)
3075            dst.identifier.add(i.copy());
3076        };
3077        dst.status = status == null ? null : status.copy();
3078        dst.priority = priority == null ? null : priority.copy();
3079        if (purpose != null) {
3080          dst.purpose = new ArrayList<Enumeration<EligibilityRequestPurpose>>();
3081          for (Enumeration<EligibilityRequestPurpose> i : purpose)
3082            dst.purpose.add(i.copy());
3083        };
3084        dst.patient = patient == null ? null : patient.copy();
3085        if (event != null) {
3086          dst.event = new ArrayList<CoverageEligibilityRequestEventComponent>();
3087          for (CoverageEligibilityRequestEventComponent i : event)
3088            dst.event.add(i.copy());
3089        };
3090        dst.serviced = serviced == null ? null : serviced.copy();
3091        dst.created = created == null ? null : created.copy();
3092        dst.enterer = enterer == null ? null : enterer.copy();
3093        dst.provider = provider == null ? null : provider.copy();
3094        dst.insurer = insurer == null ? null : insurer.copy();
3095        dst.facility = facility == null ? null : facility.copy();
3096        if (supportingInfo != null) {
3097          dst.supportingInfo = new ArrayList<SupportingInformationComponent>();
3098          for (SupportingInformationComponent i : supportingInfo)
3099            dst.supportingInfo.add(i.copy());
3100        };
3101        if (insurance != null) {
3102          dst.insurance = new ArrayList<InsuranceComponent>();
3103          for (InsuranceComponent i : insurance)
3104            dst.insurance.add(i.copy());
3105        };
3106        if (item != null) {
3107          dst.item = new ArrayList<DetailsComponent>();
3108          for (DetailsComponent i : item)
3109            dst.item.add(i.copy());
3110        };
3111      }
3112
3113      protected CoverageEligibilityRequest typedCopy() {
3114        return copy();
3115      }
3116
3117      @Override
3118      public boolean equalsDeep(Base other_) {
3119        if (!super.equalsDeep(other_))
3120          return false;
3121        if (!(other_ instanceof CoverageEligibilityRequest))
3122          return false;
3123        CoverageEligibilityRequest o = (CoverageEligibilityRequest) other_;
3124        return compareDeep(identifier, o.identifier, true) && compareDeep(status, o.status, true) && compareDeep(priority, o.priority, true)
3125           && compareDeep(purpose, o.purpose, true) && compareDeep(patient, o.patient, true) && compareDeep(event, o.event, true)
3126           && compareDeep(serviced, o.serviced, true) && compareDeep(created, o.created, true) && compareDeep(enterer, o.enterer, true)
3127           && compareDeep(provider, o.provider, true) && compareDeep(insurer, o.insurer, true) && compareDeep(facility, o.facility, true)
3128           && compareDeep(supportingInfo, o.supportingInfo, true) && compareDeep(insurance, o.insurance, true)
3129           && compareDeep(item, o.item, true);
3130      }
3131
3132      @Override
3133      public boolean equalsShallow(Base other_) {
3134        if (!super.equalsShallow(other_))
3135          return false;
3136        if (!(other_ instanceof CoverageEligibilityRequest))
3137          return false;
3138        CoverageEligibilityRequest o = (CoverageEligibilityRequest) other_;
3139        return compareValues(status, o.status, true) && compareValues(purpose, o.purpose, true) && compareValues(created, o.created, true)
3140          ;
3141      }
3142
3143      public boolean isEmpty() {
3144        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(identifier, status, priority
3145          , purpose, patient, event, serviced, created, enterer, provider, insurer, facility
3146          , supportingInfo, insurance, item);
3147      }
3148
3149  @Override
3150  public ResourceType getResourceType() {
3151    return ResourceType.CoverageEligibilityRequest;
3152   }
3153
3154 /**
3155   * Search parameter: <b>created</b>
3156   * <p>
3157   * Description: <b>The creation date for the EOB</b><br>
3158   * Type: <b>date</b><br>
3159   * Path: <b>CoverageEligibilityRequest.created</b><br>
3160   * </p>
3161   */
3162  @SearchParamDefinition(name="created", path="CoverageEligibilityRequest.created", description="The creation date for the EOB", type="date" )
3163  public static final String SP_CREATED = "created";
3164 /**
3165   * <b>Fluent Client</b> search parameter constant for <b>created</b>
3166   * <p>
3167   * Description: <b>The creation date for the EOB</b><br>
3168   * Type: <b>date</b><br>
3169   * Path: <b>CoverageEligibilityRequest.created</b><br>
3170   * </p>
3171   */
3172  public static final ca.uhn.fhir.rest.gclient.DateClientParam CREATED = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_CREATED);
3173
3174 /**
3175   * Search parameter: <b>enterer</b>
3176   * <p>
3177   * Description: <b>The party who is responsible for the request</b><br>
3178   * Type: <b>reference</b><br>
3179   * Path: <b>CoverageEligibilityRequest.enterer</b><br>
3180   * </p>
3181   */
3182  @SearchParamDefinition(name="enterer", path="CoverageEligibilityRequest.enterer", description="The party who is responsible for the request", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Practitioner.class, PractitionerRole.class } )
3183  public static final String SP_ENTERER = "enterer";
3184 /**
3185   * <b>Fluent Client</b> search parameter constant for <b>enterer</b>
3186   * <p>
3187   * Description: <b>The party who is responsible for the request</b><br>
3188   * Type: <b>reference</b><br>
3189   * Path: <b>CoverageEligibilityRequest.enterer</b><br>
3190   * </p>
3191   */
3192  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam ENTERER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_ENTERER);
3193
3194/**
3195   * Constant for fluent queries to be used to add include statements. Specifies
3196   * the path value of "<b>CoverageEligibilityRequest:enterer</b>".
3197   */
3198  public static final ca.uhn.fhir.model.api.Include INCLUDE_ENTERER = new ca.uhn.fhir.model.api.Include("CoverageEligibilityRequest:enterer").toLocked();
3199
3200 /**
3201   * Search parameter: <b>facility</b>
3202   * <p>
3203   * Description: <b>Facility responsible for the goods and services</b><br>
3204   * Type: <b>reference</b><br>
3205   * Path: <b>CoverageEligibilityRequest.facility</b><br>
3206   * </p>
3207   */
3208  @SearchParamDefinition(name="facility", path="CoverageEligibilityRequest.facility", description="Facility responsible for the goods and services", type="reference", target={Location.class } )
3209  public static final String SP_FACILITY = "facility";
3210 /**
3211   * <b>Fluent Client</b> search parameter constant for <b>facility</b>
3212   * <p>
3213   * Description: <b>Facility responsible for the goods and services</b><br>
3214   * Type: <b>reference</b><br>
3215   * Path: <b>CoverageEligibilityRequest.facility</b><br>
3216   * </p>
3217   */
3218  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam FACILITY = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_FACILITY);
3219
3220/**
3221   * Constant for fluent queries to be used to add include statements. Specifies
3222   * the path value of "<b>CoverageEligibilityRequest:facility</b>".
3223   */
3224  public static final ca.uhn.fhir.model.api.Include INCLUDE_FACILITY = new ca.uhn.fhir.model.api.Include("CoverageEligibilityRequest:facility").toLocked();
3225
3226 /**
3227   * Search parameter: <b>provider</b>
3228   * <p>
3229   * Description: <b>The reference to the provider</b><br>
3230   * Type: <b>reference</b><br>
3231   * Path: <b>CoverageEligibilityRequest.provider</b><br>
3232   * </p>
3233   */
3234  @SearchParamDefinition(name="provider", path="CoverageEligibilityRequest.provider", description="The reference to the provider", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Practitioner") }, target={Organization.class, Practitioner.class, PractitionerRole.class } )
3235  public static final String SP_PROVIDER = "provider";
3236 /**
3237   * <b>Fluent Client</b> search parameter constant for <b>provider</b>
3238   * <p>
3239   * Description: <b>The reference to the provider</b><br>
3240   * Type: <b>reference</b><br>
3241   * Path: <b>CoverageEligibilityRequest.provider</b><br>
3242   * </p>
3243   */
3244  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PROVIDER = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PROVIDER);
3245
3246/**
3247   * Constant for fluent queries to be used to add include statements. Specifies
3248   * the path value of "<b>CoverageEligibilityRequest:provider</b>".
3249   */
3250  public static final ca.uhn.fhir.model.api.Include INCLUDE_PROVIDER = new ca.uhn.fhir.model.api.Include("CoverageEligibilityRequest:provider").toLocked();
3251
3252 /**
3253   * Search parameter: <b>status</b>
3254   * <p>
3255   * Description: <b>The status of the EligibilityRequest</b><br>
3256   * Type: <b>token</b><br>
3257   * Path: <b>CoverageEligibilityRequest.status</b><br>
3258   * </p>
3259   */
3260  @SearchParamDefinition(name="status", path="CoverageEligibilityRequest.status", description="The status of the EligibilityRequest", type="token" )
3261  public static final String SP_STATUS = "status";
3262 /**
3263   * <b>Fluent Client</b> search parameter constant for <b>status</b>
3264   * <p>
3265   * Description: <b>The status of the EligibilityRequest</b><br>
3266   * Type: <b>token</b><br>
3267   * Path: <b>CoverageEligibilityRequest.status</b><br>
3268   * </p>
3269   */
3270  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
3271
3272 /**
3273   * Search parameter: <b>identifier</b>
3274   * <p>
3275   * Description: <b>Multiple Resources: 
3276
3277* [Account](account.html): Account number
3278* [AdverseEvent](adverseevent.html): Business identifier for the event
3279* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3280* [Appointment](appointment.html): An Identifier of the Appointment
3281* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3282* [Basic](basic.html): Business identifier
3283* [BodyStructure](bodystructure.html): Bodystructure identifier
3284* [CarePlan](careplan.html): External Ids for this plan
3285* [CareTeam](careteam.html): External Ids for this team
3286* [ChargeItem](chargeitem.html): Business Identifier for item
3287* [Claim](claim.html): The primary identifier of the financial resource
3288* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3289* [ClinicalImpression](clinicalimpression.html): Business identifier
3290* [Communication](communication.html): Unique identifier
3291* [CommunicationRequest](communicationrequest.html): Unique identifier
3292* [Composition](composition.html): Version-independent identifier for the Composition
3293* [Condition](condition.html): A unique identifier of the condition record
3294* [Consent](consent.html): Identifier for this record (external references)
3295* [Contract](contract.html): The identity of the contract
3296* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3297* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3298* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3299* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3300* [DeviceRequest](devicerequest.html): Business identifier for request/order
3301* [DeviceUsage](deviceusage.html): Search by identifier
3302* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3303* [DocumentReference](documentreference.html): Identifier of the attachment binary
3304* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3305* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3306* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3307* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3308* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3309* [Flag](flag.html): Business identifier
3310* [Goal](goal.html): External Ids for this goal
3311* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3312* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3313* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3314* [Immunization](immunization.html): Business identifier
3315* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3316* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3317* [Invoice](invoice.html): Business Identifier for item
3318* [List](list.html): Business identifier
3319* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3320* [Medication](medication.html): Returns medications with this external identifier
3321* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3322* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3323* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3324* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3325* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3326* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3327* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3328* [Observation](observation.html): The unique id for a particular observation
3329* [Person](person.html): A person Identifier
3330* [Procedure](procedure.html): A unique identifier for a procedure
3331* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3332* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3333* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3334* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3335* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3336* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3337* [Specimen](specimen.html): The unique identifier associated with the specimen
3338* [SupplyDelivery](supplydelivery.html): External identifier
3339* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3340* [Task](task.html): Search for a task instance by its business identifier
3341* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3342</b><br>
3343   * Type: <b>token</b><br>
3344   * 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>
3345   * </p>
3346   */
3347  @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" )
3348  public static final String SP_IDENTIFIER = "identifier";
3349 /**
3350   * <b>Fluent Client</b> search parameter constant for <b>identifier</b>
3351   * <p>
3352   * Description: <b>Multiple Resources: 
3353
3354* [Account](account.html): Account number
3355* [AdverseEvent](adverseevent.html): Business identifier for the event
3356* [AllergyIntolerance](allergyintolerance.html): External ids for this item
3357* [Appointment](appointment.html): An Identifier of the Appointment
3358* [AppointmentResponse](appointmentresponse.html): An Identifier in this appointment response
3359* [Basic](basic.html): Business identifier
3360* [BodyStructure](bodystructure.html): Bodystructure identifier
3361* [CarePlan](careplan.html): External Ids for this plan
3362* [CareTeam](careteam.html): External Ids for this team
3363* [ChargeItem](chargeitem.html): Business Identifier for item
3364* [Claim](claim.html): The primary identifier of the financial resource
3365* [ClaimResponse](claimresponse.html): The identity of the ClaimResponse
3366* [ClinicalImpression](clinicalimpression.html): Business identifier
3367* [Communication](communication.html): Unique identifier
3368* [CommunicationRequest](communicationrequest.html): Unique identifier
3369* [Composition](composition.html): Version-independent identifier for the Composition
3370* [Condition](condition.html): A unique identifier of the condition record
3371* [Consent](consent.html): Identifier for this record (external references)
3372* [Contract](contract.html): The identity of the contract
3373* [Coverage](coverage.html): The primary identifier of the insured and the coverage
3374* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The business identifier of the Eligibility
3375* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The business identifier
3376* [DetectedIssue](detectedissue.html): Unique id for the detected issue
3377* [DeviceRequest](devicerequest.html): Business identifier for request/order
3378* [DeviceUsage](deviceusage.html): Search by identifier
3379* [DiagnosticReport](diagnosticreport.html): An identifier for the report
3380* [DocumentReference](documentreference.html): Identifier of the attachment binary
3381* [Encounter](encounter.html): Identifier(s) by which this encounter is known
3382* [EnrollmentRequest](enrollmentrequest.html): The business identifier of the Enrollment
3383* [EpisodeOfCare](episodeofcare.html): Business Identifier(s) relevant for this EpisodeOfCare
3384* [ExplanationOfBenefit](explanationofbenefit.html): The business identifier of the Explanation of Benefit
3385* [FamilyMemberHistory](familymemberhistory.html): A search by a record identifier
3386* [Flag](flag.html): Business identifier
3387* [Goal](goal.html): External Ids for this goal
3388* [GuidanceResponse](guidanceresponse.html): The identifier of the guidance response
3389* [ImagingSelection](imagingselection.html): Identifiers for the imaging selection
3390* [ImagingStudy](imagingstudy.html): Identifiers for the Study, such as DICOM Study Instance UID
3391* [Immunization](immunization.html): Business identifier
3392* [ImmunizationEvaluation](immunizationevaluation.html): ID of the evaluation
3393* [ImmunizationRecommendation](immunizationrecommendation.html): Business identifier
3394* [Invoice](invoice.html): Business Identifier for item
3395* [List](list.html): Business identifier
3396* [MeasureReport](measurereport.html): External identifier of the measure report to be returned
3397* [Medication](medication.html): Returns medications with this external identifier
3398* [MedicationAdministration](medicationadministration.html): Return administrations with this external identifier
3399* [MedicationDispense](medicationdispense.html): Returns dispenses with this external identifier
3400* [MedicationRequest](medicationrequest.html): Return prescriptions with this external identifier
3401* [MedicationStatement](medicationstatement.html): Return statements with this external identifier
3402* [MolecularSequence](molecularsequence.html): The unique identity for a particular sequence
3403* [NutritionIntake](nutritionintake.html): Return statements with this external identifier
3404* [NutritionOrder](nutritionorder.html): Return nutrition orders with this external identifier
3405* [Observation](observation.html): The unique id for a particular observation
3406* [Person](person.html): A person Identifier
3407* [Procedure](procedure.html): A unique identifier for a procedure
3408* [QuestionnaireResponse](questionnaireresponse.html): The unique identifier for the questionnaire response
3409* [RelatedPerson](relatedperson.html): An Identifier of the RelatedPerson
3410* [RequestOrchestration](requestorchestration.html): External identifiers for the request orchestration
3411* [ResearchSubject](researchsubject.html): Business Identifier for research subject in a study
3412* [RiskAssessment](riskassessment.html): Unique identifier for the assessment
3413* [ServiceRequest](servicerequest.html): Identifiers assigned to this order
3414* [Specimen](specimen.html): The unique identifier associated with the specimen
3415* [SupplyDelivery](supplydelivery.html): External identifier
3416* [SupplyRequest](supplyrequest.html): Business Identifier for SupplyRequest
3417* [Task](task.html): Search for a task instance by its business identifier
3418* [VisionPrescription](visionprescription.html): Return prescriptions with this external identifier
3419</b><br>
3420   * Type: <b>token</b><br>
3421   * 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>
3422   * </p>
3423   */
3424  public static final ca.uhn.fhir.rest.gclient.TokenClientParam IDENTIFIER = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_IDENTIFIER);
3425
3426 /**
3427   * Search parameter: <b>patient</b>
3428   * <p>
3429   * Description: <b>Multiple Resources: 
3430
3431* [Account](account.html): The entity that caused the expenses
3432* [AdverseEvent](adverseevent.html): Subject impacted by event
3433* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3434* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3435* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3436* [AuditEvent](auditevent.html): Where the activity involved patient data
3437* [Basic](basic.html): Identifies the focus of this resource
3438* [BodyStructure](bodystructure.html): Who this is about
3439* [CarePlan](careplan.html): Who the care plan is for
3440* [CareTeam](careteam.html): Who care team is for
3441* [ChargeItem](chargeitem.html): Individual service was done for/to
3442* [Claim](claim.html): Patient receiving the products or services
3443* [ClaimResponse](claimresponse.html): The subject of care
3444* [ClinicalImpression](clinicalimpression.html): Patient assessed
3445* [Communication](communication.html): Focus of message
3446* [CommunicationRequest](communicationrequest.html): Focus of message
3447* [Composition](composition.html): Who and/or what the composition is about
3448* [Condition](condition.html): Who has the condition?
3449* [Consent](consent.html): Who the consent applies to
3450* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3451* [Coverage](coverage.html): Retrieve coverages for a patient
3452* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3453* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3454* [DetectedIssue](detectedissue.html): Associated patient
3455* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3456* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3457* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3458* [DocumentReference](documentreference.html): Who/what is the subject of the document
3459* [Encounter](encounter.html): The patient present at the encounter
3460* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3461* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3462* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3463* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3464* [Flag](flag.html): The identity of a subject to list flags for
3465* [Goal](goal.html): Who this goal is intended for
3466* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3467* [ImagingSelection](imagingselection.html): Who the study is about
3468* [ImagingStudy](imagingstudy.html): Who the study is about
3469* [Immunization](immunization.html): The patient for the vaccination record
3470* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3471* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3472* [Invoice](invoice.html): Recipient(s) of goods and services
3473* [List](list.html): If all resources have the same subject
3474* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3475* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3476* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3477* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3478* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3479* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3480* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3481* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3482* [Observation](observation.html): The subject that the observation is about (if patient)
3483* [Person](person.html): The Person links to this Patient
3484* [Procedure](procedure.html): Search by subject - a patient
3485* [Provenance](provenance.html): Where the activity involved patient data
3486* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3487* [RelatedPerson](relatedperson.html): The patient this related person is related to
3488* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3489* [ResearchSubject](researchsubject.html): Who or what is part of study
3490* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3491* [ServiceRequest](servicerequest.html): Search by subject - a patient
3492* [Specimen](specimen.html): The patient the specimen comes from
3493* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3494* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3495* [Task](task.html): Search by patient
3496* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3497</b><br>
3498   * Type: <b>reference</b><br>
3499   * 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>
3500   * </p>
3501   */
3502  @SearchParamDefinition(name="patient", path="Account.subject.where(resolve() is Patient) | AdverseEvent.subject.where(resolve() is Patient) | AllergyIntolerance.patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) | AppointmentResponse.actor.where(resolve() is Patient) | AuditEvent.patient | Basic.subject.where(resolve() is Patient) | BodyStructure.patient | CarePlan.subject.where(resolve() is Patient) | CareTeam.subject.where(resolve() is Patient) | ChargeItem.subject.where(resolve() is Patient) | Claim.patient | ClaimResponse.patient | ClinicalImpression.subject.where(resolve() is Patient) | Communication.subject.where(resolve() is Patient) | CommunicationRequest.subject.where(resolve() is Patient) | Composition.subject.where(resolve() is Patient) | Condition.subject.where(resolve() is Patient) | Consent.subject.where(resolve() is Patient) | Contract.subject.where(resolve() is Patient) | Coverage.beneficiary | CoverageEligibilityRequest.patient | CoverageEligibilityResponse.patient | DetectedIssue.subject.where(resolve() is Patient) | DeviceRequest.subject.where(resolve() is Patient) | DeviceUsage.patient | DiagnosticReport.subject.where(resolve() is Patient) | DocumentReference.subject.where(resolve() is Patient) | Encounter.subject.where(resolve() is Patient) | EnrollmentRequest.candidate | EpisodeOfCare.patient | ExplanationOfBenefit.patient | FamilyMemberHistory.patient | Flag.subject.where(resolve() is Patient) | Goal.subject.where(resolve() is Patient) | GuidanceResponse.subject.where(resolve() is Patient) | ImagingSelection.subject.where(resolve() is Patient) | ImagingStudy.subject.where(resolve() is Patient) | Immunization.patient | ImmunizationEvaluation.patient | ImmunizationRecommendation.patient | Invoice.subject.where(resolve() is Patient) | List.subject.where(resolve() is Patient) | MeasureReport.subject.where(resolve() is Patient) | MedicationAdministration.subject.where(resolve() is Patient) | MedicationDispense.subject.where(resolve() is Patient) | MedicationRequest.subject.where(resolve() is Patient) | MedicationStatement.subject.where(resolve() is Patient) | MolecularSequence.subject.where(resolve() is Patient) | NutritionIntake.subject.where(resolve() is Patient) | NutritionOrder.subject.where(resolve() is Patient) | Observation.subject.where(resolve() is Patient) | Person.link.target.where(resolve() is Patient) | Procedure.subject.where(resolve() is Patient) | Provenance.patient | QuestionnaireResponse.subject.where(resolve() is Patient) | RelatedPerson.patient | RequestOrchestration.subject.where(resolve() is Patient) | ResearchSubject.subject.where(resolve() is Patient) | RiskAssessment.subject.where(resolve() is Patient) | ServiceRequest.subject.where(resolve() is Patient) | Specimen.subject.where(resolve() is Patient) | SupplyDelivery.patient | SupplyRequest.deliverFor | Task.for.where(resolve() is Patient) | VisionPrescription.patient", description="Multiple Resources: \r\n\r\n* [Account](account.html): The entity that caused the expenses\r\n* [AdverseEvent](adverseevent.html): Subject impacted by event\r\n* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for\r\n* [Appointment](appointment.html): One of the individuals of the appointment is this patient\r\n* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient\r\n* [AuditEvent](auditevent.html): Where the activity involved patient data\r\n* [Basic](basic.html): Identifies the focus of this resource\r\n* [BodyStructure](bodystructure.html): Who this is about\r\n* [CarePlan](careplan.html): Who the care plan is for\r\n* [CareTeam](careteam.html): Who care team is for\r\n* [ChargeItem](chargeitem.html): Individual service was done for/to\r\n* [Claim](claim.html): Patient receiving the products or services\r\n* [ClaimResponse](claimresponse.html): The subject of care\r\n* [ClinicalImpression](clinicalimpression.html): Patient assessed\r\n* [Communication](communication.html): Focus of message\r\n* [CommunicationRequest](communicationrequest.html): Focus of message\r\n* [Composition](composition.html): Who and/or what the composition is about\r\n* [Condition](condition.html): Who has the condition?\r\n* [Consent](consent.html): Who the consent applies to\r\n* [Contract](contract.html): The identity of the subject of the contract (if a patient)\r\n* [Coverage](coverage.html): Retrieve coverages for a patient\r\n* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient\r\n* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient\r\n* [DetectedIssue](detectedissue.html): Associated patient\r\n* [DeviceRequest](devicerequest.html): Individual the service is ordered for\r\n* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device\r\n* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient\r\n* [DocumentReference](documentreference.html): Who/what is the subject of the document\r\n* [Encounter](encounter.html): The patient present at the encounter\r\n* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled\r\n* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care\r\n* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient\r\n* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for\r\n* [Flag](flag.html): The identity of a subject to list flags for\r\n* [Goal](goal.html): Who this goal is intended for\r\n* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results\r\n* [ImagingSelection](imagingselection.html): Who the study is about\r\n* [ImagingStudy](imagingstudy.html): Who the study is about\r\n* [Immunization](immunization.html): The patient for the vaccination record\r\n* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated\r\n* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for\r\n* [Invoice](invoice.html): Recipient(s) of goods and services\r\n* [List](list.html): If all resources have the same subject\r\n* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for\r\n* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for\r\n* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for\r\n* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient\r\n* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.\r\n* [MolecularSequence](molecularsequence.html): The subject that the sequence is about\r\n* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.\r\n* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement\r\n* [Observation](observation.html): The subject that the observation is about (if patient)\r\n* [Person](person.html): The Person links to this Patient\r\n* [Procedure](procedure.html): Search by subject - a patient\r\n* [Provenance](provenance.html): Where the activity involved patient data\r\n* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response\r\n* [RelatedPerson](relatedperson.html): The patient this related person is related to\r\n* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations\r\n* [ResearchSubject](researchsubject.html): Who or what is part of study\r\n* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?\r\n* [ServiceRequest](servicerequest.html): Search by subject - a patient\r\n* [Specimen](specimen.html): The patient the specimen comes from\r\n* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied\r\n* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined\r\n* [Task](task.html): Search by patient\r\n* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for\r\n", type="reference", providesMembershipIn={ @ca.uhn.fhir.model.api.annotation.Compartment(name="Base FHIR compartment definition for Patient") }, target={Patient.class } )
3503  public static final String SP_PATIENT = "patient";
3504 /**
3505   * <b>Fluent Client</b> search parameter constant for <b>patient</b>
3506   * <p>
3507   * Description: <b>Multiple Resources: 
3508
3509* [Account](account.html): The entity that caused the expenses
3510* [AdverseEvent](adverseevent.html): Subject impacted by event
3511* [AllergyIntolerance](allergyintolerance.html): Who the sensitivity is for
3512* [Appointment](appointment.html): One of the individuals of the appointment is this patient
3513* [AppointmentResponse](appointmentresponse.html): This Response is for this Patient
3514* [AuditEvent](auditevent.html): Where the activity involved patient data
3515* [Basic](basic.html): Identifies the focus of this resource
3516* [BodyStructure](bodystructure.html): Who this is about
3517* [CarePlan](careplan.html): Who the care plan is for
3518* [CareTeam](careteam.html): Who care team is for
3519* [ChargeItem](chargeitem.html): Individual service was done for/to
3520* [Claim](claim.html): Patient receiving the products or services
3521* [ClaimResponse](claimresponse.html): The subject of care
3522* [ClinicalImpression](clinicalimpression.html): Patient assessed
3523* [Communication](communication.html): Focus of message
3524* [CommunicationRequest](communicationrequest.html): Focus of message
3525* [Composition](composition.html): Who and/or what the composition is about
3526* [Condition](condition.html): Who has the condition?
3527* [Consent](consent.html): Who the consent applies to
3528* [Contract](contract.html): The identity of the subject of the contract (if a patient)
3529* [Coverage](coverage.html): Retrieve coverages for a patient
3530* [CoverageEligibilityRequest](coverageeligibilityrequest.html): The reference to the patient
3531* [CoverageEligibilityResponse](coverageeligibilityresponse.html): The reference to the patient
3532* [DetectedIssue](detectedissue.html): Associated patient
3533* [DeviceRequest](devicerequest.html): Individual the service is ordered for
3534* [DeviceUsage](deviceusage.html): Search by patient who used / uses the device
3535* [DiagnosticReport](diagnosticreport.html): The subject of the report if a patient
3536* [DocumentReference](documentreference.html): Who/what is the subject of the document
3537* [Encounter](encounter.html): The patient present at the encounter
3538* [EnrollmentRequest](enrollmentrequest.html): The party to be enrolled
3539* [EpisodeOfCare](episodeofcare.html): The patient who is the focus of this episode of care
3540* [ExplanationOfBenefit](explanationofbenefit.html): The reference to the patient
3541* [FamilyMemberHistory](familymemberhistory.html): The identity of a subject to list family member history items for
3542* [Flag](flag.html): The identity of a subject to list flags for
3543* [Goal](goal.html): Who this goal is intended for
3544* [GuidanceResponse](guidanceresponse.html): The identity of a patient to search for guidance response results
3545* [ImagingSelection](imagingselection.html): Who the study is about
3546* [ImagingStudy](imagingstudy.html): Who the study is about
3547* [Immunization](immunization.html): The patient for the vaccination record
3548* [ImmunizationEvaluation](immunizationevaluation.html): The patient being evaluated
3549* [ImmunizationRecommendation](immunizationrecommendation.html): Who this profile is for
3550* [Invoice](invoice.html): Recipient(s) of goods and services
3551* [List](list.html): If all resources have the same subject
3552* [MeasureReport](measurereport.html): The identity of a patient to search for individual measure report results for
3553* [MedicationAdministration](medicationadministration.html): The identity of a patient to list administrations  for
3554* [MedicationDispense](medicationdispense.html): The identity of a patient to list dispenses  for
3555* [MedicationRequest](medicationrequest.html): Returns prescriptions for a specific patient
3556* [MedicationStatement](medicationstatement.html): Returns statements for a specific patient.
3557* [MolecularSequence](molecularsequence.html): The subject that the sequence is about
3558* [NutritionIntake](nutritionintake.html): Returns statements for a specific patient.
3559* [NutritionOrder](nutritionorder.html): The identity of the individual or set of individuals who requires the diet, formula or nutritional supplement
3560* [Observation](observation.html): The subject that the observation is about (if patient)
3561* [Person](person.html): The Person links to this Patient
3562* [Procedure](procedure.html): Search by subject - a patient
3563* [Provenance](provenance.html): Where the activity involved patient data
3564* [QuestionnaireResponse](questionnaireresponse.html): The patient that is the subject of the questionnaire response
3565* [RelatedPerson](relatedperson.html): The patient this related person is related to
3566* [RequestOrchestration](requestorchestration.html): The identity of a patient to search for request orchestrations
3567* [ResearchSubject](researchsubject.html): Who or what is part of study
3568* [RiskAssessment](riskassessment.html): Who/what does assessment apply to?
3569* [ServiceRequest](servicerequest.html): Search by subject - a patient
3570* [Specimen](specimen.html): The patient the specimen comes from
3571* [SupplyDelivery](supplydelivery.html): Patient for whom the item is supplied
3572* [SupplyRequest](supplyrequest.html): The patient or subject for whom the supply is destined
3573* [Task](task.html): Search by patient
3574* [VisionPrescription](visionprescription.html): The identity of a patient to list dispenses for
3575</b><br>
3576   * Type: <b>reference</b><br>
3577   * 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>
3578   * </p>
3579   */
3580  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam PATIENT = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_PATIENT);
3581
3582/**
3583   * Constant for fluent queries to be used to add include statements. Specifies
3584   * the path value of "<b>CoverageEligibilityRequest:patient</b>".
3585   */
3586  public static final ca.uhn.fhir.model.api.Include INCLUDE_PATIENT = new ca.uhn.fhir.model.api.Include("CoverageEligibilityRequest:patient").toLocked();
3587
3588
3589}
3590